{"version":3,"sources":["jsdelivr-header.js","/npm/appwrite@26.2.0/dist/iife/sdk.js"],"names":[],"mappings":"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","file":"/npm/appwrite@26.2.0/dist/iife/sdk.js","sourceRoot":"","sourcesContent":["/**\n * Minified by jsDelivr using Terser v5.48.0.\n * Original file: /npm/appwrite@26.2.0/dist/iife/sdk.js\n *\n * Do NOT use SRI with dynamically generated files! More information: https://www.jsdelivr.com/using-sri-with-dynamic-files\n */\n","(function (exports) {\n    'use strict';\n\n    /******************************************************************************\r\n    Copyright (c) Microsoft Corporation.\r\n\r\n    Permission to use, copy, modify, and/or distribute this software for any\r\n    purpose with or without fee is hereby granted.\r\n\r\n    THE SOFTWARE IS PROVIDED \"AS IS\" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH\r\n    REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY\r\n    AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,\r\n    INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM\r\n    LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR\r\n    OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR\r\n    PERFORMANCE OF THIS SOFTWARE.\r\n    ***************************************************************************** */\r\n    /* global Reflect, Promise, SuppressedError, Symbol, Iterator */\r\n\r\n\r\n    function __awaiter(thisArg, _arguments, P, generator) {\r\n        function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\r\n        return new (P || (P = Promise))(function (resolve, reject) {\r\n            function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\r\n            function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\r\n            function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\r\n            step((generator = generator.apply(thisArg, _arguments || [])).next());\r\n        });\r\n    }\r\n\r\n    function __classPrivateFieldGet(receiver, state, kind, f) {\r\n        if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a getter\");\r\n        if (typeof state === \"function\" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError(\"Cannot read private member from an object whose class did not declare it\");\r\n        return kind === \"m\" ? f : kind === \"a\" ? f.call(receiver) : f ? f.value : state.get(receiver);\r\n    }\r\n\r\n    typeof SuppressedError === \"function\" ? SuppressedError : function (error, suppressed, message) {\r\n        var e = new Error(message);\r\n        return e.name = \"SuppressedError\", e.error = error, e.suppressed = suppressed, e;\r\n    };\n\n    var _a, _ID_hexTimestamp;\n    /**\n     * Helper class to generate ID strings for resources.\n     */\n    class ID {\n        /**\n         * Uses the provided ID as the ID for the resource.\n         *\n         * @param {string} id\n         * @returns {string}\n         */\n        static custom(id) {\n            return id;\n        }\n        /**\n         * Have Appwrite generate a unique ID for you.\n         *\n         * @param {number} padding. Default is 7.\n         * @returns {string}\n         */\n        static unique(padding = 7) {\n            // Generate a unique ID with padding to have a longer ID\n            const baseId = __classPrivateFieldGet(_a, _a, \"m\", _ID_hexTimestamp).call(_a);\n            let randomPadding = '';\n            for (let i = 0; i < padding; i++) {\n                const randomHexDigit = Math.floor(Math.random() * 16).toString(16);\n                randomPadding += randomHexDigit;\n            }\n            return baseId + randomPadding;\n        }\n    }\n    _a = ID, _ID_hexTimestamp = function _ID_hexTimestamp() {\n        const now = new Date();\n        const sec = Math.floor(now.getTime() / 1000);\n        const msec = now.getMilliseconds();\n        // Convert to hexadecimal\n        const hexTimestamp = sec.toString(16) + msec.toString(16).padStart(5, '0');\n        return hexTimestamp;\n    };\n\n    function getDefaultExportFromCjs (x) {\n    \treturn x && x.__esModule && Object.prototype.hasOwnProperty.call(x, 'default') ? x['default'] : x;\n    }\n\n    var jsonBigint = {exports: {}};\n\n    var stringify = {exports: {}};\n\n    var bignumber$1 = {exports: {}};\n\n    var bignumber = bignumber$1.exports;\n\n    var hasRequiredBignumber;\n\n    function requireBignumber () {\n    \tif (hasRequiredBignumber) return bignumber$1.exports;\n    \thasRequiredBignumber = 1;\n    \t(function (module) {\n    (function (globalObject) {\r\n\r\n    \t\t/*\r\n    \t\t *      bignumber.js v9.3.1\r\n    \t\t *      A JavaScript library for arbitrary-precision arithmetic.\r\n    \t\t *      https://github.com/MikeMcl/bignumber.js\r\n    \t\t *      Copyright (c) 2025 Michael Mclaughlin <M8ch88l@gmail.com>\r\n    \t\t *      MIT Licensed.\r\n    \t\t *\r\n    \t\t *      BigNumber.prototype methods     |  BigNumber methods\r\n    \t\t *                                      |\r\n    \t\t *      absoluteValue            abs    |  clone\r\n    \t\t *      comparedTo                      |  config               set\r\n    \t\t *      decimalPlaces            dp     |      DECIMAL_PLACES\r\n    \t\t *      dividedBy                div    |      ROUNDING_MODE\r\n    \t\t *      dividedToIntegerBy       idiv   |      EXPONENTIAL_AT\r\n    \t\t *      exponentiatedBy          pow    |      RANGE\r\n    \t\t *      integerValue                    |      CRYPTO\r\n    \t\t *      isEqualTo                eq     |      MODULO_MODE\r\n    \t\t *      isFinite                        |      POW_PRECISION\r\n    \t\t *      isGreaterThan            gt     |      FORMAT\r\n    \t\t *      isGreaterThanOrEqualTo   gte    |      ALPHABET\r\n    \t\t *      isInteger                       |  isBigNumber\r\n    \t\t *      isLessThan               lt     |  maximum              max\r\n    \t\t *      isLessThanOrEqualTo      lte    |  minimum              min\r\n    \t\t *      isNaN                           |  random\r\n    \t\t *      isNegative                      |  sum\r\n    \t\t *      isPositive                      |\r\n    \t\t *      isZero                          |\r\n    \t\t *      minus                           |\r\n    \t\t *      modulo                   mod    |\r\n    \t\t *      multipliedBy             times  |\r\n    \t\t *      negated                         |\r\n    \t\t *      plus                            |\r\n    \t\t *      precision                sd     |\r\n    \t\t *      shiftedBy                       |\r\n    \t\t *      squareRoot               sqrt   |\r\n    \t\t *      toExponential                   |\r\n    \t\t *      toFixed                         |\r\n    \t\t *      toFormat                        |\r\n    \t\t *      toFraction                      |\r\n    \t\t *      toJSON                          |\r\n    \t\t *      toNumber                        |\r\n    \t\t *      toPrecision                     |\r\n    \t\t *      toString                        |\r\n    \t\t *      valueOf                         |\r\n    \t\t *\r\n    \t\t */\r\n\r\n\r\n    \t\t  var BigNumber,\r\n    \t\t    isNumeric = /^-?(?:\\d+(?:\\.\\d*)?|\\.\\d+)(?:e[+-]?\\d+)?$/i,\r\n    \t\t    mathceil = Math.ceil,\r\n    \t\t    mathfloor = Math.floor,\r\n\r\n    \t\t    bignumberError = '[BigNumber Error] ',\r\n    \t\t    tooManyDigits = bignumberError + 'Number primitive has more than 15 significant digits: ',\r\n\r\n    \t\t    BASE = 1e14,\r\n    \t\t    LOG_BASE = 14,\r\n    \t\t    MAX_SAFE_INTEGER = 0x1fffffffffffff,         // 2^53 - 1\r\n    \t\t    // MAX_INT32 = 0x7fffffff,                   // 2^31 - 1\r\n    \t\t    POWS_TEN = [1, 10, 100, 1e3, 1e4, 1e5, 1e6, 1e7, 1e8, 1e9, 1e10, 1e11, 1e12, 1e13],\r\n    \t\t    SQRT_BASE = 1e7,\r\n\r\n    \t\t    // EDITABLE\r\n    \t\t    // The limit on the value of DECIMAL_PLACES, TO_EXP_NEG, TO_EXP_POS, MIN_EXP, MAX_EXP, and\r\n    \t\t    // the arguments to toExponential, toFixed, toFormat, and toPrecision.\r\n    \t\t    MAX = 1E9;                                   // 0 to MAX_INT32\r\n\r\n\r\n    \t\t  /*\r\n    \t\t   * Create and return a BigNumber constructor.\r\n    \t\t   */\r\n    \t\t  function clone(configObject) {\r\n    \t\t    var div, convertBase, parseNumeric,\r\n    \t\t      P = BigNumber.prototype = { constructor: BigNumber, toString: null, valueOf: null },\r\n    \t\t      ONE = new BigNumber(1),\r\n\r\n\r\n    \t\t      //----------------------------- EDITABLE CONFIG DEFAULTS -------------------------------\r\n\r\n\r\n    \t\t      // The default values below must be integers within the inclusive ranges stated.\r\n    \t\t      // The values can also be changed at run-time using BigNumber.set.\r\n\r\n    \t\t      // The maximum number of decimal places for operations involving division.\r\n    \t\t      DECIMAL_PLACES = 20,                     // 0 to MAX\r\n\r\n    \t\t      // The rounding mode used when rounding to the above decimal places, and when using\r\n    \t\t      // toExponential, toFixed, toFormat and toPrecision, and round (default value).\r\n    \t\t      // UP         0 Away from zero.\r\n    \t\t      // DOWN       1 Towards zero.\r\n    \t\t      // CEIL       2 Towards +Infinity.\r\n    \t\t      // FLOOR      3 Towards -Infinity.\r\n    \t\t      // HALF_UP    4 Towards nearest neighbour. If equidistant, up.\r\n    \t\t      // HALF_DOWN  5 Towards nearest neighbour. If equidistant, down.\r\n    \t\t      // HALF_EVEN  6 Towards nearest neighbour. If equidistant, towards even neighbour.\r\n    \t\t      // HALF_CEIL  7 Towards nearest neighbour. If equidistant, towards +Infinity.\r\n    \t\t      // HALF_FLOOR 8 Towards nearest neighbour. If equidistant, towards -Infinity.\r\n    \t\t      ROUNDING_MODE = 4,                       // 0 to 8\r\n\r\n    \t\t      // EXPONENTIAL_AT : [TO_EXP_NEG , TO_EXP_POS]\r\n\r\n    \t\t      // The exponent value at and beneath which toString returns exponential notation.\r\n    \t\t      // Number type: -7\r\n    \t\t      TO_EXP_NEG = -7,                         // 0 to -MAX\r\n\r\n    \t\t      // The exponent value at and above which toString returns exponential notation.\r\n    \t\t      // Number type: 21\r\n    \t\t      TO_EXP_POS = 21,                         // 0 to MAX\r\n\r\n    \t\t      // RANGE : [MIN_EXP, MAX_EXP]\r\n\r\n    \t\t      // The minimum exponent value, beneath which underflow to zero occurs.\r\n    \t\t      // Number type: -324  (5e-324)\r\n    \t\t      MIN_EXP = -1e7,                          // -1 to -MAX\r\n\r\n    \t\t      // The maximum exponent value, above which overflow to Infinity occurs.\r\n    \t\t      // Number type:  308  (1.7976931348623157e+308)\r\n    \t\t      // For MAX_EXP > 1e7, e.g. new BigNumber('1e100000000').plus(1) may be slow.\r\n    \t\t      MAX_EXP = 1e7,                           // 1 to MAX\r\n\r\n    \t\t      // Whether to use cryptographically-secure random number generation, if available.\r\n    \t\t      CRYPTO = false,                          // true or false\r\n\r\n    \t\t      // The modulo mode used when calculating the modulus: a mod n.\r\n    \t\t      // The quotient (q = a / n) is calculated according to the corresponding rounding mode.\r\n    \t\t      // The remainder (r) is calculated as: r = a - n * q.\r\n    \t\t      //\r\n    \t\t      // UP        0 The remainder is positive if the dividend is negative, else is negative.\r\n    \t\t      // DOWN      1 The remainder has the same sign as the dividend.\r\n    \t\t      //             This modulo mode is commonly known as 'truncated division' and is\r\n    \t\t      //             equivalent to (a % n) in JavaScript.\r\n    \t\t      // FLOOR     3 The remainder has the same sign as the divisor (Python %).\r\n    \t\t      // HALF_EVEN 6 This modulo mode implements the IEEE 754 remainder function.\r\n    \t\t      // EUCLID    9 Euclidian division. q = sign(n) * floor(a / abs(n)).\r\n    \t\t      //             The remainder is always positive.\r\n    \t\t      //\r\n    \t\t      // The truncated division, floored division, Euclidian division and IEEE 754 remainder\r\n    \t\t      // modes are commonly used for the modulus operation.\r\n    \t\t      // Although the other rounding modes can also be used, they may not give useful results.\r\n    \t\t      MODULO_MODE = 1,                         // 0 to 9\r\n\r\n    \t\t      // The maximum number of significant digits of the result of the exponentiatedBy operation.\r\n    \t\t      // If POW_PRECISION is 0, there will be unlimited significant digits.\r\n    \t\t      POW_PRECISION = 0,                       // 0 to MAX\r\n\r\n    \t\t      // The format specification used by the BigNumber.prototype.toFormat method.\r\n    \t\t      FORMAT = {\r\n    \t\t        prefix: '',\r\n    \t\t        groupSize: 3,\r\n    \t\t        secondaryGroupSize: 0,\r\n    \t\t        groupSeparator: ',',\r\n    \t\t        decimalSeparator: '.',\r\n    \t\t        fractionGroupSize: 0,\r\n    \t\t        fractionGroupSeparator: '\\xA0',        // non-breaking space\r\n    \t\t        suffix: ''\r\n    \t\t      },\r\n\r\n    \t\t      // The alphabet used for base conversion. It must be at least 2 characters long, with no '+',\r\n    \t\t      // '-', '.', whitespace, or repeated character.\r\n    \t\t      // '0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ$_'\r\n    \t\t      ALPHABET = '0123456789abcdefghijklmnopqrstuvwxyz',\r\n    \t\t      alphabetHasNormalDecimalDigits = true;\r\n\r\n\r\n    \t\t    //------------------------------------------------------------------------------------------\r\n\r\n\r\n    \t\t    // CONSTRUCTOR\r\n\r\n\r\n    \t\t    /*\r\n    \t\t     * The BigNumber constructor and exported function.\r\n    \t\t     * Create and return a new instance of a BigNumber object.\r\n    \t\t     *\r\n    \t\t     * v {number|string|BigNumber} A numeric value.\r\n    \t\t     * [b] {number} The base of v. Integer, 2 to ALPHABET.length inclusive.\r\n    \t\t     */\r\n    \t\t    function BigNumber(v, b) {\r\n    \t\t      var alphabet, c, caseChanged, e, i, isNum, len, str,\r\n    \t\t        x = this;\r\n\r\n    \t\t      // Enable constructor call without `new`.\r\n    \t\t      if (!(x instanceof BigNumber)) return new BigNumber(v, b);\r\n\r\n    \t\t      if (b == null) {\r\n\r\n    \t\t        if (v && v._isBigNumber === true) {\r\n    \t\t          x.s = v.s;\r\n\r\n    \t\t          if (!v.c || v.e > MAX_EXP) {\r\n    \t\t            x.c = x.e = null;\r\n    \t\t          } else if (v.e < MIN_EXP) {\r\n    \t\t            x.c = [x.e = 0];\r\n    \t\t          } else {\r\n    \t\t            x.e = v.e;\r\n    \t\t            x.c = v.c.slice();\r\n    \t\t          }\r\n\r\n    \t\t          return;\r\n    \t\t        }\r\n\r\n    \t\t        if ((isNum = typeof v == 'number') && v * 0 == 0) {\r\n\r\n    \t\t          // Use `1 / n` to handle minus zero also.\r\n    \t\t          x.s = 1 / v < 0 ? (v = -v, -1) : 1;\r\n\r\n    \t\t          // Fast path for integers, where n < 2147483648 (2**31).\r\n    \t\t          if (v === ~~v) {\r\n    \t\t            for (e = 0, i = v; i >= 10; i /= 10, e++);\r\n\r\n    \t\t            if (e > MAX_EXP) {\r\n    \t\t              x.c = x.e = null;\r\n    \t\t            } else {\r\n    \t\t              x.e = e;\r\n    \t\t              x.c = [v];\r\n    \t\t            }\r\n\r\n    \t\t            return;\r\n    \t\t          }\r\n\r\n    \t\t          str = String(v);\r\n    \t\t        } else {\r\n\r\n    \t\t          if (!isNumeric.test(str = String(v))) return parseNumeric(x, str, isNum);\r\n\r\n    \t\t          x.s = str.charCodeAt(0) == 45 ? (str = str.slice(1), -1) : 1;\r\n    \t\t        }\r\n\r\n    \t\t        // Decimal point?\r\n    \t\t        if ((e = str.indexOf('.')) > -1) str = str.replace('.', '');\r\n\r\n    \t\t        // Exponential form?\r\n    \t\t        if ((i = str.search(/e/i)) > 0) {\r\n\r\n    \t\t          // Determine exponent.\r\n    \t\t          if (e < 0) e = i;\r\n    \t\t          e += +str.slice(i + 1);\r\n    \t\t          str = str.substring(0, i);\r\n    \t\t        } else if (e < 0) {\r\n\r\n    \t\t          // Integer.\r\n    \t\t          e = str.length;\r\n    \t\t        }\r\n\r\n    \t\t      } else {\r\n\r\n    \t\t        // '[BigNumber Error] Base {not a primitive number|not an integer|out of range}: {b}'\r\n    \t\t        intCheck(b, 2, ALPHABET.length, 'Base');\r\n\r\n    \t\t        // Allow exponential notation to be used with base 10 argument, while\r\n    \t\t        // also rounding to DECIMAL_PLACES as with other bases.\r\n    \t\t        if (b == 10 && alphabetHasNormalDecimalDigits) {\r\n    \t\t          x = new BigNumber(v);\r\n    \t\t          return round(x, DECIMAL_PLACES + x.e + 1, ROUNDING_MODE);\r\n    \t\t        }\r\n\r\n    \t\t        str = String(v);\r\n\r\n    \t\t        if (isNum = typeof v == 'number') {\r\n\r\n    \t\t          // Avoid potential interpretation of Infinity and NaN as base 44+ values.\r\n    \t\t          if (v * 0 != 0) return parseNumeric(x, str, isNum, b);\r\n\r\n    \t\t          x.s = 1 / v < 0 ? (str = str.slice(1), -1) : 1;\r\n\r\n    \t\t          // '[BigNumber Error] Number primitive has more than 15 significant digits: {n}'\r\n    \t\t          if (BigNumber.DEBUG && str.replace(/^0\\.0*|\\./, '').length > 15) {\r\n    \t\t            throw Error\r\n    \t\t             (tooManyDigits + v);\r\n    \t\t          }\r\n    \t\t        } else {\r\n    \t\t          x.s = str.charCodeAt(0) === 45 ? (str = str.slice(1), -1) : 1;\r\n    \t\t        }\r\n\r\n    \t\t        alphabet = ALPHABET.slice(0, b);\r\n    \t\t        e = i = 0;\r\n\r\n    \t\t        // Check that str is a valid base b number.\r\n    \t\t        // Don't use RegExp, so alphabet can contain special characters.\r\n    \t\t        for (len = str.length; i < len; i++) {\r\n    \t\t          if (alphabet.indexOf(c = str.charAt(i)) < 0) {\r\n    \t\t            if (c == '.') {\r\n\r\n    \t\t              // If '.' is not the first character and it has not be found before.\r\n    \t\t              if (i > e) {\r\n    \t\t                e = len;\r\n    \t\t                continue;\r\n    \t\t              }\r\n    \t\t            } else if (!caseChanged) {\r\n\r\n    \t\t              // Allow e.g. hexadecimal 'FF' as well as 'ff'.\r\n    \t\t              if (str == str.toUpperCase() && (str = str.toLowerCase()) ||\r\n    \t\t                  str == str.toLowerCase() && (str = str.toUpperCase())) {\r\n    \t\t                caseChanged = true;\r\n    \t\t                i = -1;\r\n    \t\t                e = 0;\r\n    \t\t                continue;\r\n    \t\t              }\r\n    \t\t            }\r\n\r\n    \t\t            return parseNumeric(x, String(v), isNum, b);\r\n    \t\t          }\r\n    \t\t        }\r\n\r\n    \t\t        // Prevent later check for length on converted number.\r\n    \t\t        isNum = false;\r\n    \t\t        str = convertBase(str, b, 10, x.s);\r\n\r\n    \t\t        // Decimal point?\r\n    \t\t        if ((e = str.indexOf('.')) > -1) str = str.replace('.', '');\r\n    \t\t        else e = str.length;\r\n    \t\t      }\r\n\r\n    \t\t      // Determine leading zeros.\r\n    \t\t      for (i = 0; str.charCodeAt(i) === 48; i++);\r\n\r\n    \t\t      // Determine trailing zeros.\r\n    \t\t      for (len = str.length; str.charCodeAt(--len) === 48;);\r\n\r\n    \t\t      if (str = str.slice(i, ++len)) {\r\n    \t\t        len -= i;\r\n\r\n    \t\t        // '[BigNumber Error] Number primitive has more than 15 significant digits: {n}'\r\n    \t\t        if (isNum && BigNumber.DEBUG &&\r\n    \t\t          len > 15 && (v > MAX_SAFE_INTEGER || v !== mathfloor(v))) {\r\n    \t\t            throw Error\r\n    \t\t             (tooManyDigits + (x.s * v));\r\n    \t\t        }\r\n\r\n    \t\t         // Overflow?\r\n    \t\t        if ((e = e - i - 1) > MAX_EXP) {\r\n\r\n    \t\t          // Infinity.\r\n    \t\t          x.c = x.e = null;\r\n\r\n    \t\t        // Underflow?\r\n    \t\t        } else if (e < MIN_EXP) {\r\n\r\n    \t\t          // Zero.\r\n    \t\t          x.c = [x.e = 0];\r\n    \t\t        } else {\r\n    \t\t          x.e = e;\r\n    \t\t          x.c = [];\r\n\r\n    \t\t          // Transform base\r\n\r\n    \t\t          // e is the base 10 exponent.\r\n    \t\t          // i is where to slice str to get the first element of the coefficient array.\r\n    \t\t          i = (e + 1) % LOG_BASE;\r\n    \t\t          if (e < 0) i += LOG_BASE;  // i < 1\r\n\r\n    \t\t          if (i < len) {\r\n    \t\t            if (i) x.c.push(+str.slice(0, i));\r\n\r\n    \t\t            for (len -= LOG_BASE; i < len;) {\r\n    \t\t              x.c.push(+str.slice(i, i += LOG_BASE));\r\n    \t\t            }\r\n\r\n    \t\t            i = LOG_BASE - (str = str.slice(i)).length;\r\n    \t\t          } else {\r\n    \t\t            i -= len;\r\n    \t\t          }\r\n\r\n    \t\t          for (; i--; str += '0');\r\n    \t\t          x.c.push(+str);\r\n    \t\t        }\r\n    \t\t      } else {\r\n\r\n    \t\t        // Zero.\r\n    \t\t        x.c = [x.e = 0];\r\n    \t\t      }\r\n    \t\t    }\r\n\r\n\r\n    \t\t    // CONSTRUCTOR PROPERTIES\r\n\r\n\r\n    \t\t    BigNumber.clone = clone;\r\n\r\n    \t\t    BigNumber.ROUND_UP = 0;\r\n    \t\t    BigNumber.ROUND_DOWN = 1;\r\n    \t\t    BigNumber.ROUND_CEIL = 2;\r\n    \t\t    BigNumber.ROUND_FLOOR = 3;\r\n    \t\t    BigNumber.ROUND_HALF_UP = 4;\r\n    \t\t    BigNumber.ROUND_HALF_DOWN = 5;\r\n    \t\t    BigNumber.ROUND_HALF_EVEN = 6;\r\n    \t\t    BigNumber.ROUND_HALF_CEIL = 7;\r\n    \t\t    BigNumber.ROUND_HALF_FLOOR = 8;\r\n    \t\t    BigNumber.EUCLID = 9;\r\n\r\n\r\n    \t\t    /*\r\n    \t\t     * Configure infrequently-changing library-wide settings.\r\n    \t\t     *\r\n    \t\t     * Accept an object with the following optional properties (if the value of a property is\r\n    \t\t     * a number, it must be an integer within the inclusive range stated):\r\n    \t\t     *\r\n    \t\t     *   DECIMAL_PLACES   {number}           0 to MAX\r\n    \t\t     *   ROUNDING_MODE    {number}           0 to 8\r\n    \t\t     *   EXPONENTIAL_AT   {number|number[]}  -MAX to MAX  or  [-MAX to 0, 0 to MAX]\r\n    \t\t     *   RANGE            {number|number[]}  -MAX to MAX (not zero)  or  [-MAX to -1, 1 to MAX]\r\n    \t\t     *   CRYPTO           {boolean}          true or false\r\n    \t\t     *   MODULO_MODE      {number}           0 to 9\r\n    \t\t     *   POW_PRECISION       {number}           0 to MAX\r\n    \t\t     *   ALPHABET         {string}           A string of two or more unique characters which does\r\n    \t\t     *                                       not contain '.'.\r\n    \t\t     *   FORMAT           {object}           An object with some of the following properties:\r\n    \t\t     *     prefix                 {string}\r\n    \t\t     *     groupSize              {number}\r\n    \t\t     *     secondaryGroupSize     {number}\r\n    \t\t     *     groupSeparator         {string}\r\n    \t\t     *     decimalSeparator       {string}\r\n    \t\t     *     fractionGroupSize      {number}\r\n    \t\t     *     fractionGroupSeparator {string}\r\n    \t\t     *     suffix                 {string}\r\n    \t\t     *\r\n    \t\t     * (The values assigned to the above FORMAT object properties are not checked for validity.)\r\n    \t\t     *\r\n    \t\t     * E.g.\r\n    \t\t     * BigNumber.config({ DECIMAL_PLACES : 20, ROUNDING_MODE : 4 })\r\n    \t\t     *\r\n    \t\t     * Ignore properties/parameters set to null or undefined, except for ALPHABET.\r\n    \t\t     *\r\n    \t\t     * Return an object with the properties current values.\r\n    \t\t     */\r\n    \t\t    BigNumber.config = BigNumber.set = function (obj) {\r\n    \t\t      var p, v;\r\n\r\n    \t\t      if (obj != null) {\r\n\r\n    \t\t        if (typeof obj == 'object') {\r\n\r\n    \t\t          // DECIMAL_PLACES {number} Integer, 0 to MAX inclusive.\r\n    \t\t          // '[BigNumber Error] DECIMAL_PLACES {not a primitive number|not an integer|out of range}: {v}'\r\n    \t\t          if (obj.hasOwnProperty(p = 'DECIMAL_PLACES')) {\r\n    \t\t            v = obj[p];\r\n    \t\t            intCheck(v, 0, MAX, p);\r\n    \t\t            DECIMAL_PLACES = v;\r\n    \t\t          }\r\n\r\n    \t\t          // ROUNDING_MODE {number} Integer, 0 to 8 inclusive.\r\n    \t\t          // '[BigNumber Error] ROUNDING_MODE {not a primitive number|not an integer|out of range}: {v}'\r\n    \t\t          if (obj.hasOwnProperty(p = 'ROUNDING_MODE')) {\r\n    \t\t            v = obj[p];\r\n    \t\t            intCheck(v, 0, 8, p);\r\n    \t\t            ROUNDING_MODE = v;\r\n    \t\t          }\r\n\r\n    \t\t          // EXPONENTIAL_AT {number|number[]}\r\n    \t\t          // Integer, -MAX to MAX inclusive or\r\n    \t\t          // [integer -MAX to 0 inclusive, 0 to MAX inclusive].\r\n    \t\t          // '[BigNumber Error] EXPONENTIAL_AT {not a primitive number|not an integer|out of range}: {v}'\r\n    \t\t          if (obj.hasOwnProperty(p = 'EXPONENTIAL_AT')) {\r\n    \t\t            v = obj[p];\r\n    \t\t            if (v && v.pop) {\r\n    \t\t              intCheck(v[0], -MAX, 0, p);\r\n    \t\t              intCheck(v[1], 0, MAX, p);\r\n    \t\t              TO_EXP_NEG = v[0];\r\n    \t\t              TO_EXP_POS = v[1];\r\n    \t\t            } else {\r\n    \t\t              intCheck(v, -MAX, MAX, p);\r\n    \t\t              TO_EXP_NEG = -(TO_EXP_POS = v < 0 ? -v : v);\r\n    \t\t            }\r\n    \t\t          }\r\n\r\n    \t\t          // RANGE {number|number[]} Non-zero integer, -MAX to MAX inclusive or\r\n    \t\t          // [integer -MAX to -1 inclusive, integer 1 to MAX inclusive].\r\n    \t\t          // '[BigNumber Error] RANGE {not a primitive number|not an integer|out of range|cannot be zero}: {v}'\r\n    \t\t          if (obj.hasOwnProperty(p = 'RANGE')) {\r\n    \t\t            v = obj[p];\r\n    \t\t            if (v && v.pop) {\r\n    \t\t              intCheck(v[0], -MAX, -1, p);\r\n    \t\t              intCheck(v[1], 1, MAX, p);\r\n    \t\t              MIN_EXP = v[0];\r\n    \t\t              MAX_EXP = v[1];\r\n    \t\t            } else {\r\n    \t\t              intCheck(v, -MAX, MAX, p);\r\n    \t\t              if (v) {\r\n    \t\t                MIN_EXP = -(MAX_EXP = v < 0 ? -v : v);\r\n    \t\t              } else {\r\n    \t\t                throw Error\r\n    \t\t                 (bignumberError + p + ' cannot be zero: ' + v);\r\n    \t\t              }\r\n    \t\t            }\r\n    \t\t          }\r\n\r\n    \t\t          // CRYPTO {boolean} true or false.\r\n    \t\t          // '[BigNumber Error] CRYPTO not true or false: {v}'\r\n    \t\t          // '[BigNumber Error] crypto unavailable'\r\n    \t\t          if (obj.hasOwnProperty(p = 'CRYPTO')) {\r\n    \t\t            v = obj[p];\r\n    \t\t            if (v === !!v) {\r\n    \t\t              if (v) {\r\n    \t\t                if (typeof crypto != 'undefined' && crypto &&\r\n    \t\t                 (crypto.getRandomValues || crypto.randomBytes)) {\r\n    \t\t                  CRYPTO = v;\r\n    \t\t                } else {\r\n    \t\t                  CRYPTO = !v;\r\n    \t\t                  throw Error\r\n    \t\t                   (bignumberError + 'crypto unavailable');\r\n    \t\t                }\r\n    \t\t              } else {\r\n    \t\t                CRYPTO = v;\r\n    \t\t              }\r\n    \t\t            } else {\r\n    \t\t              throw Error\r\n    \t\t               (bignumberError + p + ' not true or false: ' + v);\r\n    \t\t            }\r\n    \t\t          }\r\n\r\n    \t\t          // MODULO_MODE {number} Integer, 0 to 9 inclusive.\r\n    \t\t          // '[BigNumber Error] MODULO_MODE {not a primitive number|not an integer|out of range}: {v}'\r\n    \t\t          if (obj.hasOwnProperty(p = 'MODULO_MODE')) {\r\n    \t\t            v = obj[p];\r\n    \t\t            intCheck(v, 0, 9, p);\r\n    \t\t            MODULO_MODE = v;\r\n    \t\t          }\r\n\r\n    \t\t          // POW_PRECISION {number} Integer, 0 to MAX inclusive.\r\n    \t\t          // '[BigNumber Error] POW_PRECISION {not a primitive number|not an integer|out of range}: {v}'\r\n    \t\t          if (obj.hasOwnProperty(p = 'POW_PRECISION')) {\r\n    \t\t            v = obj[p];\r\n    \t\t            intCheck(v, 0, MAX, p);\r\n    \t\t            POW_PRECISION = v;\r\n    \t\t          }\r\n\r\n    \t\t          // FORMAT {object}\r\n    \t\t          // '[BigNumber Error] FORMAT not an object: {v}'\r\n    \t\t          if (obj.hasOwnProperty(p = 'FORMAT')) {\r\n    \t\t            v = obj[p];\r\n    \t\t            if (typeof v == 'object') FORMAT = v;\r\n    \t\t            else throw Error\r\n    \t\t             (bignumberError + p + ' not an object: ' + v);\r\n    \t\t          }\r\n\r\n    \t\t          // ALPHABET {string}\r\n    \t\t          // '[BigNumber Error] ALPHABET invalid: {v}'\r\n    \t\t          if (obj.hasOwnProperty(p = 'ALPHABET')) {\r\n    \t\t            v = obj[p];\r\n\r\n    \t\t            // Disallow if less than two characters,\r\n    \t\t            // or if it contains '+', '-', '.', whitespace, or a repeated character.\r\n    \t\t            if (typeof v == 'string' && !/^.?$|[+\\-.\\s]|(.).*\\1/.test(v)) {\r\n    \t\t              alphabetHasNormalDecimalDigits = v.slice(0, 10) == '0123456789';\r\n    \t\t              ALPHABET = v;\r\n    \t\t            } else {\r\n    \t\t              throw Error\r\n    \t\t               (bignumberError + p + ' invalid: ' + v);\r\n    \t\t            }\r\n    \t\t          }\r\n\r\n    \t\t        } else {\r\n\r\n    \t\t          // '[BigNumber Error] Object expected: {v}'\r\n    \t\t          throw Error\r\n    \t\t           (bignumberError + 'Object expected: ' + obj);\r\n    \t\t        }\r\n    \t\t      }\r\n\r\n    \t\t      return {\r\n    \t\t        DECIMAL_PLACES: DECIMAL_PLACES,\r\n    \t\t        ROUNDING_MODE: ROUNDING_MODE,\r\n    \t\t        EXPONENTIAL_AT: [TO_EXP_NEG, TO_EXP_POS],\r\n    \t\t        RANGE: [MIN_EXP, MAX_EXP],\r\n    \t\t        CRYPTO: CRYPTO,\r\n    \t\t        MODULO_MODE: MODULO_MODE,\r\n    \t\t        POW_PRECISION: POW_PRECISION,\r\n    \t\t        FORMAT: FORMAT,\r\n    \t\t        ALPHABET: ALPHABET\r\n    \t\t      };\r\n    \t\t    };\r\n\r\n\r\n    \t\t    /*\r\n    \t\t     * Return true if v is a BigNumber instance, otherwise return false.\r\n    \t\t     *\r\n    \t\t     * If BigNumber.DEBUG is true, throw if a BigNumber instance is not well-formed.\r\n    \t\t     *\r\n    \t\t     * v {any}\r\n    \t\t     *\r\n    \t\t     * '[BigNumber Error] Invalid BigNumber: {v}'\r\n    \t\t     */\r\n    \t\t    BigNumber.isBigNumber = function (v) {\r\n    \t\t      if (!v || v._isBigNumber !== true) return false;\r\n    \t\t      if (!BigNumber.DEBUG) return true;\r\n\r\n    \t\t      var i, n,\r\n    \t\t        c = v.c,\r\n    \t\t        e = v.e,\r\n    \t\t        s = v.s;\r\n\r\n    \t\t      out: if ({}.toString.call(c) == '[object Array]') {\r\n\r\n    \t\t        if ((s === 1 || s === -1) && e >= -MAX && e <= MAX && e === mathfloor(e)) {\r\n\r\n    \t\t          // If the first element is zero, the BigNumber value must be zero.\r\n    \t\t          if (c[0] === 0) {\r\n    \t\t            if (e === 0 && c.length === 1) return true;\r\n    \t\t            break out;\r\n    \t\t          }\r\n\r\n    \t\t          // Calculate number of digits that c[0] should have, based on the exponent.\r\n    \t\t          i = (e + 1) % LOG_BASE;\r\n    \t\t          if (i < 1) i += LOG_BASE;\r\n\r\n    \t\t          // Calculate number of digits of c[0].\r\n    \t\t          //if (Math.ceil(Math.log(c[0] + 1) / Math.LN10) == i) {\r\n    \t\t          if (String(c[0]).length == i) {\r\n\r\n    \t\t            for (i = 0; i < c.length; i++) {\r\n    \t\t              n = c[i];\r\n    \t\t              if (n < 0 || n >= BASE || n !== mathfloor(n)) break out;\r\n    \t\t            }\r\n\r\n    \t\t            // Last element cannot be zero, unless it is the only element.\r\n    \t\t            if (n !== 0) return true;\r\n    \t\t          }\r\n    \t\t        }\r\n\r\n    \t\t      // Infinity/NaN\r\n    \t\t      } else if (c === null && e === null && (s === null || s === 1 || s === -1)) {\r\n    \t\t        return true;\r\n    \t\t      }\r\n\r\n    \t\t      throw Error\r\n    \t\t        (bignumberError + 'Invalid BigNumber: ' + v);\r\n    \t\t    };\r\n\r\n\r\n    \t\t    /*\r\n    \t\t     * Return a new BigNumber whose value is the maximum of the arguments.\r\n    \t\t     *\r\n    \t\t     * arguments {number|string|BigNumber}\r\n    \t\t     */\r\n    \t\t    BigNumber.maximum = BigNumber.max = function () {\r\n    \t\t      return maxOrMin(arguments, -1);\r\n    \t\t    };\r\n\r\n\r\n    \t\t    /*\r\n    \t\t     * Return a new BigNumber whose value is the minimum of the arguments.\r\n    \t\t     *\r\n    \t\t     * arguments {number|string|BigNumber}\r\n    \t\t     */\r\n    \t\t    BigNumber.minimum = BigNumber.min = function () {\r\n    \t\t      return maxOrMin(arguments, 1);\r\n    \t\t    };\r\n\r\n\r\n    \t\t    /*\r\n    \t\t     * Return a new BigNumber with a random value equal to or greater than 0 and less than 1,\r\n    \t\t     * and with dp, or DECIMAL_PLACES if dp is omitted, decimal places (or less if trailing\r\n    \t\t     * zeros are produced).\r\n    \t\t     *\r\n    \t\t     * [dp] {number} Decimal places. Integer, 0 to MAX inclusive.\r\n    \t\t     *\r\n    \t\t     * '[BigNumber Error] Argument {not a primitive number|not an integer|out of range}: {dp}'\r\n    \t\t     * '[BigNumber Error] crypto unavailable'\r\n    \t\t     */\r\n    \t\t    BigNumber.random = (function () {\r\n    \t\t      var pow2_53 = 0x20000000000000;\r\n\r\n    \t\t      // Return a 53 bit integer n, where 0 <= n < 9007199254740992.\r\n    \t\t      // Check if Math.random() produces more than 32 bits of randomness.\r\n    \t\t      // If it does, assume at least 53 bits are produced, otherwise assume at least 30 bits.\r\n    \t\t      // 0x40000000 is 2^30, 0x800000 is 2^23, 0x1fffff is 2^21 - 1.\r\n    \t\t      var random53bitInt = (Math.random() * pow2_53) & 0x1fffff\r\n    \t\t       ? function () { return mathfloor(Math.random() * pow2_53); }\r\n    \t\t       : function () { return ((Math.random() * 0x40000000 | 0) * 0x800000) +\r\n    \t\t         (Math.random() * 0x800000 | 0); };\r\n\r\n    \t\t      return function (dp) {\r\n    \t\t        var a, b, e, k, v,\r\n    \t\t          i = 0,\r\n    \t\t          c = [],\r\n    \t\t          rand = new BigNumber(ONE);\r\n\r\n    \t\t        if (dp == null) dp = DECIMAL_PLACES;\r\n    \t\t        else intCheck(dp, 0, MAX);\r\n\r\n    \t\t        k = mathceil(dp / LOG_BASE);\r\n\r\n    \t\t        if (CRYPTO) {\r\n\r\n    \t\t          // Browsers supporting crypto.getRandomValues.\r\n    \t\t          if (crypto.getRandomValues) {\r\n\r\n    \t\t            a = crypto.getRandomValues(new Uint32Array(k *= 2));\r\n\r\n    \t\t            for (; i < k;) {\r\n\r\n    \t\t              // 53 bits:\r\n    \t\t              // ((Math.pow(2, 32) - 1) * Math.pow(2, 21)).toString(2)\r\n    \t\t              // 11111 11111111 11111111 11111111 11100000 00000000 00000000\r\n    \t\t              // ((Math.pow(2, 32) - 1) >>> 11).toString(2)\r\n    \t\t              //                                     11111 11111111 11111111\r\n    \t\t              // 0x20000 is 2^21.\r\n    \t\t              v = a[i] * 0x20000 + (a[i + 1] >>> 11);\r\n\r\n    \t\t              // Rejection sampling:\r\n    \t\t              // 0 <= v < 9007199254740992\r\n    \t\t              // Probability that v >= 9e15, is\r\n    \t\t              // 7199254740992 / 9007199254740992 ~= 0.0008, i.e. 1 in 1251\r\n    \t\t              if (v >= 9e15) {\r\n    \t\t                b = crypto.getRandomValues(new Uint32Array(2));\r\n    \t\t                a[i] = b[0];\r\n    \t\t                a[i + 1] = b[1];\r\n    \t\t              } else {\r\n\r\n    \t\t                // 0 <= v <= 8999999999999999\r\n    \t\t                // 0 <= (v % 1e14) <= 99999999999999\r\n    \t\t                c.push(v % 1e14);\r\n    \t\t                i += 2;\r\n    \t\t              }\r\n    \t\t            }\r\n    \t\t            i = k / 2;\r\n\r\n    \t\t          // Node.js supporting crypto.randomBytes.\r\n    \t\t          } else if (crypto.randomBytes) {\r\n\r\n    \t\t            // buffer\r\n    \t\t            a = crypto.randomBytes(k *= 7);\r\n\r\n    \t\t            for (; i < k;) {\r\n\r\n    \t\t              // 0x1000000000000 is 2^48, 0x10000000000 is 2^40\r\n    \t\t              // 0x100000000 is 2^32, 0x1000000 is 2^24\r\n    \t\t              // 11111 11111111 11111111 11111111 11111111 11111111 11111111\r\n    \t\t              // 0 <= v < 9007199254740992\r\n    \t\t              v = ((a[i] & 31) * 0x1000000000000) + (a[i + 1] * 0x10000000000) +\r\n    \t\t                 (a[i + 2] * 0x100000000) + (a[i + 3] * 0x1000000) +\r\n    \t\t                 (a[i + 4] << 16) + (a[i + 5] << 8) + a[i + 6];\r\n\r\n    \t\t              if (v >= 9e15) {\r\n    \t\t                crypto.randomBytes(7).copy(a, i);\r\n    \t\t              } else {\r\n\r\n    \t\t                // 0 <= (v % 1e14) <= 99999999999999\r\n    \t\t                c.push(v % 1e14);\r\n    \t\t                i += 7;\r\n    \t\t              }\r\n    \t\t            }\r\n    \t\t            i = k / 7;\r\n    \t\t          } else {\r\n    \t\t            CRYPTO = false;\r\n    \t\t            throw Error\r\n    \t\t             (bignumberError + 'crypto unavailable');\r\n    \t\t          }\r\n    \t\t        }\r\n\r\n    \t\t        // Use Math.random.\r\n    \t\t        if (!CRYPTO) {\r\n\r\n    \t\t          for (; i < k;) {\r\n    \t\t            v = random53bitInt();\r\n    \t\t            if (v < 9e15) c[i++] = v % 1e14;\r\n    \t\t          }\r\n    \t\t        }\r\n\r\n    \t\t        k = c[--i];\r\n    \t\t        dp %= LOG_BASE;\r\n\r\n    \t\t        // Convert trailing digits to zeros according to dp.\r\n    \t\t        if (k && dp) {\r\n    \t\t          v = POWS_TEN[LOG_BASE - dp];\r\n    \t\t          c[i] = mathfloor(k / v) * v;\r\n    \t\t        }\r\n\r\n    \t\t        // Remove trailing elements which are zero.\r\n    \t\t        for (; c[i] === 0; c.pop(), i--);\r\n\r\n    \t\t        // Zero?\r\n    \t\t        if (i < 0) {\r\n    \t\t          c = [e = 0];\r\n    \t\t        } else {\r\n\r\n    \t\t          // Remove leading elements which are zero and adjust exponent accordingly.\r\n    \t\t          for (e = -1 ; c[0] === 0; c.splice(0, 1), e -= LOG_BASE);\r\n\r\n    \t\t          // Count the digits of the first element of c to determine leading zeros, and...\r\n    \t\t          for (i = 1, v = c[0]; v >= 10; v /= 10, i++);\r\n\r\n    \t\t          // adjust the exponent accordingly.\r\n    \t\t          if (i < LOG_BASE) e -= LOG_BASE - i;\r\n    \t\t        }\r\n\r\n    \t\t        rand.e = e;\r\n    \t\t        rand.c = c;\r\n    \t\t        return rand;\r\n    \t\t      };\r\n    \t\t    })();\r\n\r\n\r\n    \t\t    /*\r\n    \t\t     * Return a BigNumber whose value is the sum of the arguments.\r\n    \t\t     *\r\n    \t\t     * arguments {number|string|BigNumber}\r\n    \t\t     */\r\n    \t\t    BigNumber.sum = function () {\r\n    \t\t      var i = 1,\r\n    \t\t        args = arguments,\r\n    \t\t        sum = new BigNumber(args[0]);\r\n    \t\t      for (; i < args.length;) sum = sum.plus(args[i++]);\r\n    \t\t      return sum;\r\n    \t\t    };\r\n\r\n\r\n    \t\t    // PRIVATE FUNCTIONS\r\n\r\n\r\n    \t\t    // Called by BigNumber and BigNumber.prototype.toString.\r\n    \t\t    convertBase = (function () {\r\n    \t\t      var decimal = '0123456789';\r\n\r\n    \t\t      /*\r\n    \t\t       * Convert string of baseIn to an array of numbers of baseOut.\r\n    \t\t       * Eg. toBaseOut('255', 10, 16) returns [15, 15].\r\n    \t\t       * Eg. toBaseOut('ff', 16, 10) returns [2, 5, 5].\r\n    \t\t       */\r\n    \t\t      function toBaseOut(str, baseIn, baseOut, alphabet) {\r\n    \t\t        var j,\r\n    \t\t          arr = [0],\r\n    \t\t          arrL,\r\n    \t\t          i = 0,\r\n    \t\t          len = str.length;\r\n\r\n    \t\t        for (; i < len;) {\r\n    \t\t          for (arrL = arr.length; arrL--; arr[arrL] *= baseIn);\r\n\r\n    \t\t          arr[0] += alphabet.indexOf(str.charAt(i++));\r\n\r\n    \t\t          for (j = 0; j < arr.length; j++) {\r\n\r\n    \t\t            if (arr[j] > baseOut - 1) {\r\n    \t\t              if (arr[j + 1] == null) arr[j + 1] = 0;\r\n    \t\t              arr[j + 1] += arr[j] / baseOut | 0;\r\n    \t\t              arr[j] %= baseOut;\r\n    \t\t            }\r\n    \t\t          }\r\n    \t\t        }\r\n\r\n    \t\t        return arr.reverse();\r\n    \t\t      }\r\n\r\n    \t\t      // Convert a numeric string of baseIn to a numeric string of baseOut.\r\n    \t\t      // If the caller is toString, we are converting from base 10 to baseOut.\r\n    \t\t      // If the caller is BigNumber, we are converting from baseIn to base 10.\r\n    \t\t      return function (str, baseIn, baseOut, sign, callerIsToString) {\r\n    \t\t        var alphabet, d, e, k, r, x, xc, y,\r\n    \t\t          i = str.indexOf('.'),\r\n    \t\t          dp = DECIMAL_PLACES,\r\n    \t\t          rm = ROUNDING_MODE;\r\n\r\n    \t\t        // Non-integer.\r\n    \t\t        if (i >= 0) {\r\n    \t\t          k = POW_PRECISION;\r\n\r\n    \t\t          // Unlimited precision.\r\n    \t\t          POW_PRECISION = 0;\r\n    \t\t          str = str.replace('.', '');\r\n    \t\t          y = new BigNumber(baseIn);\r\n    \t\t          x = y.pow(str.length - i);\r\n    \t\t          POW_PRECISION = k;\r\n\r\n    \t\t          // Convert str as if an integer, then restore the fraction part by dividing the\r\n    \t\t          // result by its base raised to a power.\r\n\r\n    \t\t          y.c = toBaseOut(toFixedPoint(coeffToString(x.c), x.e, '0'),\r\n    \t\t           10, baseOut, decimal);\r\n    \t\t          y.e = y.c.length;\r\n    \t\t        }\r\n\r\n    \t\t        // Convert the number as integer.\r\n\r\n    \t\t        xc = toBaseOut(str, baseIn, baseOut, callerIsToString\r\n    \t\t         ? (alphabet = ALPHABET, decimal)\r\n    \t\t         : (alphabet = decimal, ALPHABET));\r\n\r\n    \t\t        // xc now represents str as an integer and converted to baseOut. e is the exponent.\r\n    \t\t        e = k = xc.length;\r\n\r\n    \t\t        // Remove trailing zeros.\r\n    \t\t        for (; xc[--k] == 0; xc.pop());\r\n\r\n    \t\t        // Zero?\r\n    \t\t        if (!xc[0]) return alphabet.charAt(0);\r\n\r\n    \t\t        // Does str represent an integer? If so, no need for the division.\r\n    \t\t        if (i < 0) {\r\n    \t\t          --e;\r\n    \t\t        } else {\r\n    \t\t          x.c = xc;\r\n    \t\t          x.e = e;\r\n\r\n    \t\t          // The sign is needed for correct rounding.\r\n    \t\t          x.s = sign;\r\n    \t\t          x = div(x, y, dp, rm, baseOut);\r\n    \t\t          xc = x.c;\r\n    \t\t          r = x.r;\r\n    \t\t          e = x.e;\r\n    \t\t        }\r\n\r\n    \t\t        // xc now represents str converted to baseOut.\r\n\r\n    \t\t        // The index of the rounding digit.\r\n    \t\t        d = e + dp + 1;\r\n\r\n    \t\t        // The rounding digit: the digit to the right of the digit that may be rounded up.\r\n    \t\t        i = xc[d];\r\n\r\n    \t\t        // Look at the rounding digits and mode to determine whether to round up.\r\n\r\n    \t\t        k = baseOut / 2;\r\n    \t\t        r = r || d < 0 || xc[d + 1] != null;\r\n\r\n    \t\t        r = rm < 4 ? (i != null || r) && (rm == 0 || rm == (x.s < 0 ? 3 : 2))\r\n    \t\t              : i > k || i == k &&(rm == 4 || r || rm == 6 && xc[d - 1] & 1 ||\r\n    \t\t               rm == (x.s < 0 ? 8 : 7));\r\n\r\n    \t\t        // If the index of the rounding digit is not greater than zero, or xc represents\r\n    \t\t        // zero, then the result of the base conversion is zero or, if rounding up, a value\r\n    \t\t        // such as 0.00001.\r\n    \t\t        if (d < 1 || !xc[0]) {\r\n\r\n    \t\t          // 1^-dp or 0\r\n    \t\t          str = r ? toFixedPoint(alphabet.charAt(1), -dp, alphabet.charAt(0)) : alphabet.charAt(0);\r\n    \t\t        } else {\r\n\r\n    \t\t          // Truncate xc to the required number of decimal places.\r\n    \t\t          xc.length = d;\r\n\r\n    \t\t          // Round up?\r\n    \t\t          if (r) {\r\n\r\n    \t\t            // Rounding up may mean the previous digit has to be rounded up and so on.\r\n    \t\t            for (--baseOut; ++xc[--d] > baseOut;) {\r\n    \t\t              xc[d] = 0;\r\n\r\n    \t\t              if (!d) {\r\n    \t\t                ++e;\r\n    \t\t                xc = [1].concat(xc);\r\n    \t\t              }\r\n    \t\t            }\r\n    \t\t          }\r\n\r\n    \t\t          // Determine trailing zeros.\r\n    \t\t          for (k = xc.length; !xc[--k];);\r\n\r\n    \t\t          // E.g. [4, 11, 15] becomes 4bf.\r\n    \t\t          for (i = 0, str = ''; i <= k; str += alphabet.charAt(xc[i++]));\r\n\r\n    \t\t          // Add leading zeros, decimal point and trailing zeros as required.\r\n    \t\t          str = toFixedPoint(str, e, alphabet.charAt(0));\r\n    \t\t        }\r\n\r\n    \t\t        // The caller will add the sign.\r\n    \t\t        return str;\r\n    \t\t      };\r\n    \t\t    })();\r\n\r\n\r\n    \t\t    // Perform division in the specified base. Called by div and convertBase.\r\n    \t\t    div = (function () {\r\n\r\n    \t\t      // Assume non-zero x and k.\r\n    \t\t      function multiply(x, k, base) {\r\n    \t\t        var m, temp, xlo, xhi,\r\n    \t\t          carry = 0,\r\n    \t\t          i = x.length,\r\n    \t\t          klo = k % SQRT_BASE,\r\n    \t\t          khi = k / SQRT_BASE | 0;\r\n\r\n    \t\t        for (x = x.slice(); i--;) {\r\n    \t\t          xlo = x[i] % SQRT_BASE;\r\n    \t\t          xhi = x[i] / SQRT_BASE | 0;\r\n    \t\t          m = khi * xlo + xhi * klo;\r\n    \t\t          temp = klo * xlo + ((m % SQRT_BASE) * SQRT_BASE) + carry;\r\n    \t\t          carry = (temp / base | 0) + (m / SQRT_BASE | 0) + khi * xhi;\r\n    \t\t          x[i] = temp % base;\r\n    \t\t        }\r\n\r\n    \t\t        if (carry) x = [carry].concat(x);\r\n\r\n    \t\t        return x;\r\n    \t\t      }\r\n\r\n    \t\t      function compare(a, b, aL, bL) {\r\n    \t\t        var i, cmp;\r\n\r\n    \t\t        if (aL != bL) {\r\n    \t\t          cmp = aL > bL ? 1 : -1;\r\n    \t\t        } else {\r\n\r\n    \t\t          for (i = cmp = 0; i < aL; i++) {\r\n\r\n    \t\t            if (a[i] != b[i]) {\r\n    \t\t              cmp = a[i] > b[i] ? 1 : -1;\r\n    \t\t              break;\r\n    \t\t            }\r\n    \t\t          }\r\n    \t\t        }\r\n\r\n    \t\t        return cmp;\r\n    \t\t      }\r\n\r\n    \t\t      function subtract(a, b, aL, base) {\r\n    \t\t        var i = 0;\r\n\r\n    \t\t        // Subtract b from a.\r\n    \t\t        for (; aL--;) {\r\n    \t\t          a[aL] -= i;\r\n    \t\t          i = a[aL] < b[aL] ? 1 : 0;\r\n    \t\t          a[aL] = i * base + a[aL] - b[aL];\r\n    \t\t        }\r\n\r\n    \t\t        // Remove leading zeros.\r\n    \t\t        for (; !a[0] && a.length > 1; a.splice(0, 1));\r\n    \t\t      }\r\n\r\n    \t\t      // x: dividend, y: divisor.\r\n    \t\t      return function (x, y, dp, rm, base) {\r\n    \t\t        var cmp, e, i, more, n, prod, prodL, q, qc, rem, remL, rem0, xi, xL, yc0,\r\n    \t\t          yL, yz,\r\n    \t\t          s = x.s == y.s ? 1 : -1,\r\n    \t\t          xc = x.c,\r\n    \t\t          yc = y.c;\r\n\r\n    \t\t        // Either NaN, Infinity or 0?\r\n    \t\t        if (!xc || !xc[0] || !yc || !yc[0]) {\r\n\r\n    \t\t          return new BigNumber(\r\n\r\n    \t\t           // Return NaN if either NaN, or both Infinity or 0.\r\n    \t\t           !x.s || !y.s || (xc ? yc && xc[0] == yc[0] : !yc) ? NaN :\r\n\r\n    \t\t            // Return ±0 if x is ±0 or y is ±Infinity, or return ±Infinity as y is ±0.\r\n    \t\t            xc && xc[0] == 0 || !yc ? s * 0 : s / 0\r\n    \t\t         );\r\n    \t\t        }\r\n\r\n    \t\t        q = new BigNumber(s);\r\n    \t\t        qc = q.c = [];\r\n    \t\t        e = x.e - y.e;\r\n    \t\t        s = dp + e + 1;\r\n\r\n    \t\t        if (!base) {\r\n    \t\t          base = BASE;\r\n    \t\t          e = bitFloor(x.e / LOG_BASE) - bitFloor(y.e / LOG_BASE);\r\n    \t\t          s = s / LOG_BASE | 0;\r\n    \t\t        }\r\n\r\n    \t\t        // Result exponent may be one less then the current value of e.\r\n    \t\t        // The coefficients of the BigNumbers from convertBase may have trailing zeros.\r\n    \t\t        for (i = 0; yc[i] == (xc[i] || 0); i++);\r\n\r\n    \t\t        if (yc[i] > (xc[i] || 0)) e--;\r\n\r\n    \t\t        if (s < 0) {\r\n    \t\t          qc.push(1);\r\n    \t\t          more = true;\r\n    \t\t        } else {\r\n    \t\t          xL = xc.length;\r\n    \t\t          yL = yc.length;\r\n    \t\t          i = 0;\r\n    \t\t          s += 2;\r\n\r\n    \t\t          // Normalise xc and yc so highest order digit of yc is >= base / 2.\r\n\r\n    \t\t          n = mathfloor(base / (yc[0] + 1));\r\n\r\n    \t\t          // Not necessary, but to handle odd bases where yc[0] == (base / 2) - 1.\r\n    \t\t          // if (n > 1 || n++ == 1 && yc[0] < base / 2) {\r\n    \t\t          if (n > 1) {\r\n    \t\t            yc = multiply(yc, n, base);\r\n    \t\t            xc = multiply(xc, n, base);\r\n    \t\t            yL = yc.length;\r\n    \t\t            xL = xc.length;\r\n    \t\t          }\r\n\r\n    \t\t          xi = yL;\r\n    \t\t          rem = xc.slice(0, yL);\r\n    \t\t          remL = rem.length;\r\n\r\n    \t\t          // Add zeros to make remainder as long as divisor.\r\n    \t\t          for (; remL < yL; rem[remL++] = 0);\r\n    \t\t          yz = yc.slice();\r\n    \t\t          yz = [0].concat(yz);\r\n    \t\t          yc0 = yc[0];\r\n    \t\t          if (yc[1] >= base / 2) yc0++;\r\n    \t\t          // Not necessary, but to prevent trial digit n > base, when using base 3.\r\n    \t\t          // else if (base == 3 && yc0 == 1) yc0 = 1 + 1e-15;\r\n\r\n    \t\t          do {\r\n    \t\t            n = 0;\r\n\r\n    \t\t            // Compare divisor and remainder.\r\n    \t\t            cmp = compare(yc, rem, yL, remL);\r\n\r\n    \t\t            // If divisor < remainder.\r\n    \t\t            if (cmp < 0) {\r\n\r\n    \t\t              // Calculate trial digit, n.\r\n\r\n    \t\t              rem0 = rem[0];\r\n    \t\t              if (yL != remL) rem0 = rem0 * base + (rem[1] || 0);\r\n\r\n    \t\t              // n is how many times the divisor goes into the current remainder.\r\n    \t\t              n = mathfloor(rem0 / yc0);\r\n\r\n    \t\t              //  Algorithm:\r\n    \t\t              //  product = divisor multiplied by trial digit (n).\r\n    \t\t              //  Compare product and remainder.\r\n    \t\t              //  If product is greater than remainder:\r\n    \t\t              //    Subtract divisor from product, decrement trial digit.\r\n    \t\t              //  Subtract product from remainder.\r\n    \t\t              //  If product was less than remainder at the last compare:\r\n    \t\t              //    Compare new remainder and divisor.\r\n    \t\t              //    If remainder is greater than divisor:\r\n    \t\t              //      Subtract divisor from remainder, increment trial digit.\r\n\r\n    \t\t              if (n > 1) {\r\n\r\n    \t\t                // n may be > base only when base is 3.\r\n    \t\t                if (n >= base) n = base - 1;\r\n\r\n    \t\t                // product = divisor * trial digit.\r\n    \t\t                prod = multiply(yc, n, base);\r\n    \t\t                prodL = prod.length;\r\n    \t\t                remL = rem.length;\r\n\r\n    \t\t                // Compare product and remainder.\r\n    \t\t                // If product > remainder then trial digit n too high.\r\n    \t\t                // n is 1 too high about 5% of the time, and is not known to have\r\n    \t\t                // ever been more than 1 too high.\r\n    \t\t                while (compare(prod, rem, prodL, remL) == 1) {\r\n    \t\t                  n--;\r\n\r\n    \t\t                  // Subtract divisor from product.\r\n    \t\t                  subtract(prod, yL < prodL ? yz : yc, prodL, base);\r\n    \t\t                  prodL = prod.length;\r\n    \t\t                  cmp = 1;\r\n    \t\t                }\r\n    \t\t              } else {\r\n\r\n    \t\t                // n is 0 or 1, cmp is -1.\r\n    \t\t                // If n is 0, there is no need to compare yc and rem again below,\r\n    \t\t                // so change cmp to 1 to avoid it.\r\n    \t\t                // If n is 1, leave cmp as -1, so yc and rem are compared again.\r\n    \t\t                if (n == 0) {\r\n\r\n    \t\t                  // divisor < remainder, so n must be at least 1.\r\n    \t\t                  cmp = n = 1;\r\n    \t\t                }\r\n\r\n    \t\t                // product = divisor\r\n    \t\t                prod = yc.slice();\r\n    \t\t                prodL = prod.length;\r\n    \t\t              }\r\n\r\n    \t\t              if (prodL < remL) prod = [0].concat(prod);\r\n\r\n    \t\t              // Subtract product from remainder.\r\n    \t\t              subtract(rem, prod, remL, base);\r\n    \t\t              remL = rem.length;\r\n\r\n    \t\t               // If product was < remainder.\r\n    \t\t              if (cmp == -1) {\r\n\r\n    \t\t                // Compare divisor and new remainder.\r\n    \t\t                // If divisor < new remainder, subtract divisor from remainder.\r\n    \t\t                // Trial digit n too low.\r\n    \t\t                // n is 1 too low about 5% of the time, and very rarely 2 too low.\r\n    \t\t                while (compare(yc, rem, yL, remL) < 1) {\r\n    \t\t                  n++;\r\n\r\n    \t\t                  // Subtract divisor from remainder.\r\n    \t\t                  subtract(rem, yL < remL ? yz : yc, remL, base);\r\n    \t\t                  remL = rem.length;\r\n    \t\t                }\r\n    \t\t              }\r\n    \t\t            } else if (cmp === 0) {\r\n    \t\t              n++;\r\n    \t\t              rem = [0];\r\n    \t\t            } // else cmp === 1 and n will be 0\r\n\r\n    \t\t            // Add the next digit, n, to the result array.\r\n    \t\t            qc[i++] = n;\r\n\r\n    \t\t            // Update the remainder.\r\n    \t\t            if (rem[0]) {\r\n    \t\t              rem[remL++] = xc[xi] || 0;\r\n    \t\t            } else {\r\n    \t\t              rem = [xc[xi]];\r\n    \t\t              remL = 1;\r\n    \t\t            }\r\n    \t\t          } while ((xi++ < xL || rem[0] != null) && s--);\r\n\r\n    \t\t          more = rem[0] != null;\r\n\r\n    \t\t          // Leading zero?\r\n    \t\t          if (!qc[0]) qc.splice(0, 1);\r\n    \t\t        }\r\n\r\n    \t\t        if (base == BASE) {\r\n\r\n    \t\t          // To calculate q.e, first get the number of digits of qc[0].\r\n    \t\t          for (i = 1, s = qc[0]; s >= 10; s /= 10, i++);\r\n\r\n    \t\t          round(q, dp + (q.e = i + e * LOG_BASE - 1) + 1, rm, more);\r\n\r\n    \t\t        // Caller is convertBase.\r\n    \t\t        } else {\r\n    \t\t          q.e = e;\r\n    \t\t          q.r = +more;\r\n    \t\t        }\r\n\r\n    \t\t        return q;\r\n    \t\t      };\r\n    \t\t    })();\r\n\r\n\r\n    \t\t    /*\r\n    \t\t     * Return a string representing the value of BigNumber n in fixed-point or exponential\r\n    \t\t     * notation rounded to the specified decimal places or significant digits.\r\n    \t\t     *\r\n    \t\t     * n: a BigNumber.\r\n    \t\t     * i: the index of the last digit required (i.e. the digit that may be rounded up).\r\n    \t\t     * rm: the rounding mode.\r\n    \t\t     * id: 1 (toExponential) or 2 (toPrecision).\r\n    \t\t     */\r\n    \t\t    function format(n, i, rm, id) {\r\n    \t\t      var c0, e, ne, len, str;\r\n\r\n    \t\t      if (rm == null) rm = ROUNDING_MODE;\r\n    \t\t      else intCheck(rm, 0, 8);\r\n\r\n    \t\t      if (!n.c) return n.toString();\r\n\r\n    \t\t      c0 = n.c[0];\r\n    \t\t      ne = n.e;\r\n\r\n    \t\t      if (i == null) {\r\n    \t\t        str = coeffToString(n.c);\r\n    \t\t        str = id == 1 || id == 2 && (ne <= TO_EXP_NEG || ne >= TO_EXP_POS)\r\n    \t\t         ? toExponential(str, ne)\r\n    \t\t         : toFixedPoint(str, ne, '0');\r\n    \t\t      } else {\r\n    \t\t        n = round(new BigNumber(n), i, rm);\r\n\r\n    \t\t        // n.e may have changed if the value was rounded up.\r\n    \t\t        e = n.e;\r\n\r\n    \t\t        str = coeffToString(n.c);\r\n    \t\t        len = str.length;\r\n\r\n    \t\t        // toPrecision returns exponential notation if the number of significant digits\r\n    \t\t        // specified is less than the number of digits necessary to represent the integer\r\n    \t\t        // part of the value in fixed-point notation.\r\n\r\n    \t\t        // Exponential notation.\r\n    \t\t        if (id == 1 || id == 2 && (i <= e || e <= TO_EXP_NEG)) {\r\n\r\n    \t\t          // Append zeros?\r\n    \t\t          for (; len < i; str += '0', len++);\r\n    \t\t          str = toExponential(str, e);\r\n\r\n    \t\t        // Fixed-point notation.\r\n    \t\t        } else {\r\n    \t\t          i -= ne + (id === 2 && e > ne);\r\n    \t\t          str = toFixedPoint(str, e, '0');\r\n\r\n    \t\t          // Append zeros?\r\n    \t\t          if (e + 1 > len) {\r\n    \t\t            if (--i > 0) for (str += '.'; i--; str += '0');\r\n    \t\t          } else {\r\n    \t\t            i += e - len;\r\n    \t\t            if (i > 0) {\r\n    \t\t              if (e + 1 == len) str += '.';\r\n    \t\t              for (; i--; str += '0');\r\n    \t\t            }\r\n    \t\t          }\r\n    \t\t        }\r\n    \t\t      }\r\n\r\n    \t\t      return n.s < 0 && c0 ? '-' + str : str;\r\n    \t\t    }\r\n\r\n\r\n    \t\t    // Handle BigNumber.max and BigNumber.min.\r\n    \t\t    // If any number is NaN, return NaN.\r\n    \t\t    function maxOrMin(args, n) {\r\n    \t\t      var k, y,\r\n    \t\t        i = 1,\r\n    \t\t        x = new BigNumber(args[0]);\r\n\r\n    \t\t      for (; i < args.length; i++) {\r\n    \t\t        y = new BigNumber(args[i]);\r\n    \t\t        if (!y.s || (k = compare(x, y)) === n || k === 0 && x.s === n) {\r\n    \t\t          x = y;\r\n    \t\t        }\r\n    \t\t      }\r\n\r\n    \t\t      return x;\r\n    \t\t    }\r\n\r\n\r\n    \t\t    /*\r\n    \t\t     * Strip trailing zeros, calculate base 10 exponent and check against MIN_EXP and MAX_EXP.\r\n    \t\t     * Called by minus, plus and times.\r\n    \t\t     */\r\n    \t\t    function normalise(n, c, e) {\r\n    \t\t      var i = 1,\r\n    \t\t        j = c.length;\r\n\r\n    \t\t       // Remove trailing zeros.\r\n    \t\t      for (; !c[--j]; c.pop());\r\n\r\n    \t\t      // Calculate the base 10 exponent. First get the number of digits of c[0].\r\n    \t\t      for (j = c[0]; j >= 10; j /= 10, i++);\r\n\r\n    \t\t      // Overflow?\r\n    \t\t      if ((e = i + e * LOG_BASE - 1) > MAX_EXP) {\r\n\r\n    \t\t        // Infinity.\r\n    \t\t        n.c = n.e = null;\r\n\r\n    \t\t      // Underflow?\r\n    \t\t      } else if (e < MIN_EXP) {\r\n\r\n    \t\t        // Zero.\r\n    \t\t        n.c = [n.e = 0];\r\n    \t\t      } else {\r\n    \t\t        n.e = e;\r\n    \t\t        n.c = c;\r\n    \t\t      }\r\n\r\n    \t\t      return n;\r\n    \t\t    }\r\n\r\n\r\n    \t\t    // Handle values that fail the validity test in BigNumber.\r\n    \t\t    parseNumeric = (function () {\r\n    \t\t      var basePrefix = /^(-?)0([xbo])(?=\\w[\\w.]*$)/i,\r\n    \t\t        dotAfter = /^([^.]+)\\.$/,\r\n    \t\t        dotBefore = /^\\.([^.]+)$/,\r\n    \t\t        isInfinityOrNaN = /^-?(Infinity|NaN)$/,\r\n    \t\t        whitespaceOrPlus = /^\\s*\\+(?=[\\w.])|^\\s+|\\s+$/g;\r\n\r\n    \t\t      return function (x, str, isNum, b) {\r\n    \t\t        var base,\r\n    \t\t          s = isNum ? str : str.replace(whitespaceOrPlus, '');\r\n\r\n    \t\t        // No exception on ±Infinity or NaN.\r\n    \t\t        if (isInfinityOrNaN.test(s)) {\r\n    \t\t          x.s = isNaN(s) ? null : s < 0 ? -1 : 1;\r\n    \t\t        } else {\r\n    \t\t          if (!isNum) {\r\n\r\n    \t\t            // basePrefix = /^(-?)0([xbo])(?=\\w[\\w.]*$)/i\r\n    \t\t            s = s.replace(basePrefix, function (m, p1, p2) {\r\n    \t\t              base = (p2 = p2.toLowerCase()) == 'x' ? 16 : p2 == 'b' ? 2 : 8;\r\n    \t\t              return !b || b == base ? p1 : m;\r\n    \t\t            });\r\n\r\n    \t\t            if (b) {\r\n    \t\t              base = b;\r\n\r\n    \t\t              // E.g. '1.' to '1', '.1' to '0.1'\r\n    \t\t              s = s.replace(dotAfter, '$1').replace(dotBefore, '0.$1');\r\n    \t\t            }\r\n\r\n    \t\t            if (str != s) return new BigNumber(s, base);\r\n    \t\t          }\r\n\r\n    \t\t          // '[BigNumber Error] Not a number: {n}'\r\n    \t\t          // '[BigNumber Error] Not a base {b} number: {n}'\r\n    \t\t          if (BigNumber.DEBUG) {\r\n    \t\t            throw Error\r\n    \t\t              (bignumberError + 'Not a' + (b ? ' base ' + b : '') + ' number: ' + str);\r\n    \t\t          }\r\n\r\n    \t\t          // NaN\r\n    \t\t          x.s = null;\r\n    \t\t        }\r\n\r\n    \t\t        x.c = x.e = null;\r\n    \t\t      }\r\n    \t\t    })();\r\n\r\n\r\n    \t\t    /*\r\n    \t\t     * Round x to sd significant digits using rounding mode rm. Check for over/under-flow.\r\n    \t\t     * If r is truthy, it is known that there are more digits after the rounding digit.\r\n    \t\t     */\r\n    \t\t    function round(x, sd, rm, r) {\r\n    \t\t      var d, i, j, k, n, ni, rd,\r\n    \t\t        xc = x.c,\r\n    \t\t        pows10 = POWS_TEN;\r\n\r\n    \t\t      // if x is not Infinity or NaN...\r\n    \t\t      if (xc) {\r\n\r\n    \t\t        // rd is the rounding digit, i.e. the digit after the digit that may be rounded up.\r\n    \t\t        // n is a base 1e14 number, the value of the element of array x.c containing rd.\r\n    \t\t        // ni is the index of n within x.c.\r\n    \t\t        // d is the number of digits of n.\r\n    \t\t        // i is the index of rd within n including leading zeros.\r\n    \t\t        // j is the actual index of rd within n (if < 0, rd is a leading zero).\r\n    \t\t        out: {\r\n\r\n    \t\t          // Get the number of digits of the first element of xc.\r\n    \t\t          for (d = 1, k = xc[0]; k >= 10; k /= 10, d++);\r\n    \t\t          i = sd - d;\r\n\r\n    \t\t          // If the rounding digit is in the first element of xc...\r\n    \t\t          if (i < 0) {\r\n    \t\t            i += LOG_BASE;\r\n    \t\t            j = sd;\r\n    \t\t            n = xc[ni = 0];\r\n\r\n    \t\t            // Get the rounding digit at index j of n.\r\n    \t\t            rd = mathfloor(n / pows10[d - j - 1] % 10);\r\n    \t\t          } else {\r\n    \t\t            ni = mathceil((i + 1) / LOG_BASE);\r\n\r\n    \t\t            if (ni >= xc.length) {\r\n\r\n    \t\t              if (r) {\r\n\r\n    \t\t                // Needed by sqrt.\r\n    \t\t                for (; xc.length <= ni; xc.push(0));\r\n    \t\t                n = rd = 0;\r\n    \t\t                d = 1;\r\n    \t\t                i %= LOG_BASE;\r\n    \t\t                j = i - LOG_BASE + 1;\r\n    \t\t              } else {\r\n    \t\t                break out;\r\n    \t\t              }\r\n    \t\t            } else {\r\n    \t\t              n = k = xc[ni];\r\n\r\n    \t\t              // Get the number of digits of n.\r\n    \t\t              for (d = 1; k >= 10; k /= 10, d++);\r\n\r\n    \t\t              // Get the index of rd within n.\r\n    \t\t              i %= LOG_BASE;\r\n\r\n    \t\t              // Get the index of rd within n, adjusted for leading zeros.\r\n    \t\t              // The number of leading zeros of n is given by LOG_BASE - d.\r\n    \t\t              j = i - LOG_BASE + d;\r\n\r\n    \t\t              // Get the rounding digit at index j of n.\r\n    \t\t              rd = j < 0 ? 0 : mathfloor(n / pows10[d - j - 1] % 10);\r\n    \t\t            }\r\n    \t\t          }\r\n\r\n    \t\t          r = r || sd < 0 ||\r\n\r\n    \t\t          // Are there any non-zero digits after the rounding digit?\r\n    \t\t          // The expression  n % pows10[d - j - 1]  returns all digits of n to the right\r\n    \t\t          // of the digit at j, e.g. if n is 908714 and j is 2, the expression gives 714.\r\n    \t\t           xc[ni + 1] != null || (j < 0 ? n : n % pows10[d - j - 1]);\r\n\r\n    \t\t          r = rm < 4\r\n    \t\t           ? (rd || r) && (rm == 0 || rm == (x.s < 0 ? 3 : 2))\r\n    \t\t           : rd > 5 || rd == 5 && (rm == 4 || r || rm == 6 &&\r\n\r\n    \t\t            // Check whether the digit to the left of the rounding digit is odd.\r\n    \t\t            ((i > 0 ? j > 0 ? n / pows10[d - j] : 0 : xc[ni - 1]) % 10) & 1 ||\r\n    \t\t             rm == (x.s < 0 ? 8 : 7));\r\n\r\n    \t\t          if (sd < 1 || !xc[0]) {\r\n    \t\t            xc.length = 0;\r\n\r\n    \t\t            if (r) {\r\n\r\n    \t\t              // Convert sd to decimal places.\r\n    \t\t              sd -= x.e + 1;\r\n\r\n    \t\t              // 1, 0.1, 0.01, 0.001, 0.0001 etc.\r\n    \t\t              xc[0] = pows10[(LOG_BASE - sd % LOG_BASE) % LOG_BASE];\r\n    \t\t              x.e = -sd || 0;\r\n    \t\t            } else {\r\n\r\n    \t\t              // Zero.\r\n    \t\t              xc[0] = x.e = 0;\r\n    \t\t            }\r\n\r\n    \t\t            return x;\r\n    \t\t          }\r\n\r\n    \t\t          // Remove excess digits.\r\n    \t\t          if (i == 0) {\r\n    \t\t            xc.length = ni;\r\n    \t\t            k = 1;\r\n    \t\t            ni--;\r\n    \t\t          } else {\r\n    \t\t            xc.length = ni + 1;\r\n    \t\t            k = pows10[LOG_BASE - i];\r\n\r\n    \t\t            // E.g. 56700 becomes 56000 if 7 is the rounding digit.\r\n    \t\t            // j > 0 means i > number of leading zeros of n.\r\n    \t\t            xc[ni] = j > 0 ? mathfloor(n / pows10[d - j] % pows10[j]) * k : 0;\r\n    \t\t          }\r\n\r\n    \t\t          // Round up?\r\n    \t\t          if (r) {\r\n\r\n    \t\t            for (; ;) {\r\n\r\n    \t\t              // If the digit to be rounded up is in the first element of xc...\r\n    \t\t              if (ni == 0) {\r\n\r\n    \t\t                // i will be the length of xc[0] before k is added.\r\n    \t\t                for (i = 1, j = xc[0]; j >= 10; j /= 10, i++);\r\n    \t\t                j = xc[0] += k;\r\n    \t\t                for (k = 1; j >= 10; j /= 10, k++);\r\n\r\n    \t\t                // if i != k the length has increased.\r\n    \t\t                if (i != k) {\r\n    \t\t                  x.e++;\r\n    \t\t                  if (xc[0] == BASE) xc[0] = 1;\r\n    \t\t                }\r\n\r\n    \t\t                break;\r\n    \t\t              } else {\r\n    \t\t                xc[ni] += k;\r\n    \t\t                if (xc[ni] != BASE) break;\r\n    \t\t                xc[ni--] = 0;\r\n    \t\t                k = 1;\r\n    \t\t              }\r\n    \t\t            }\r\n    \t\t          }\r\n\r\n    \t\t          // Remove trailing zeros.\r\n    \t\t          for (i = xc.length; xc[--i] === 0; xc.pop());\r\n    \t\t        }\r\n\r\n    \t\t        // Overflow? Infinity.\r\n    \t\t        if (x.e > MAX_EXP) {\r\n    \t\t          x.c = x.e = null;\r\n\r\n    \t\t        // Underflow? Zero.\r\n    \t\t        } else if (x.e < MIN_EXP) {\r\n    \t\t          x.c = [x.e = 0];\r\n    \t\t        }\r\n    \t\t      }\r\n\r\n    \t\t      return x;\r\n    \t\t    }\r\n\r\n\r\n    \t\t    function valueOf(n) {\r\n    \t\t      var str,\r\n    \t\t        e = n.e;\r\n\r\n    \t\t      if (e === null) return n.toString();\r\n\r\n    \t\t      str = coeffToString(n.c);\r\n\r\n    \t\t      str = e <= TO_EXP_NEG || e >= TO_EXP_POS\r\n    \t\t        ? toExponential(str, e)\r\n    \t\t        : toFixedPoint(str, e, '0');\r\n\r\n    \t\t      return n.s < 0 ? '-' + str : str;\r\n    \t\t    }\r\n\r\n\r\n    \t\t    // PROTOTYPE/INSTANCE METHODS\r\n\r\n\r\n    \t\t    /*\r\n    \t\t     * Return a new BigNumber whose value is the absolute value of this BigNumber.\r\n    \t\t     */\r\n    \t\t    P.absoluteValue = P.abs = function () {\r\n    \t\t      var x = new BigNumber(this);\r\n    \t\t      if (x.s < 0) x.s = 1;\r\n    \t\t      return x;\r\n    \t\t    };\r\n\r\n\r\n    \t\t    /*\r\n    \t\t     * Return\r\n    \t\t     *   1 if the value of this BigNumber is greater than the value of BigNumber(y, b),\r\n    \t\t     *   -1 if the value of this BigNumber is less than the value of BigNumber(y, b),\r\n    \t\t     *   0 if they have the same value,\r\n    \t\t     *   or null if the value of either is NaN.\r\n    \t\t     */\r\n    \t\t    P.comparedTo = function (y, b) {\r\n    \t\t      return compare(this, new BigNumber(y, b));\r\n    \t\t    };\r\n\r\n\r\n    \t\t    /*\r\n    \t\t     * If dp is undefined or null or true or false, return the number of decimal places of the\r\n    \t\t     * value of this BigNumber, or null if the value of this BigNumber is ±Infinity or NaN.\r\n    \t\t     *\r\n    \t\t     * Otherwise, if dp is a number, return a new BigNumber whose value is the value of this\r\n    \t\t     * BigNumber rounded to a maximum of dp decimal places using rounding mode rm, or\r\n    \t\t     * ROUNDING_MODE if rm is omitted.\r\n    \t\t     *\r\n    \t\t     * [dp] {number} Decimal places: integer, 0 to MAX inclusive.\r\n    \t\t     * [rm] {number} Rounding mode. Integer, 0 to 8 inclusive.\r\n    \t\t     *\r\n    \t\t     * '[BigNumber Error] Argument {not a primitive number|not an integer|out of range}: {dp|rm}'\r\n    \t\t     */\r\n    \t\t    P.decimalPlaces = P.dp = function (dp, rm) {\r\n    \t\t      var c, n, v,\r\n    \t\t        x = this;\r\n\r\n    \t\t      if (dp != null) {\r\n    \t\t        intCheck(dp, 0, MAX);\r\n    \t\t        if (rm == null) rm = ROUNDING_MODE;\r\n    \t\t        else intCheck(rm, 0, 8);\r\n\r\n    \t\t        return round(new BigNumber(x), dp + x.e + 1, rm);\r\n    \t\t      }\r\n\r\n    \t\t      if (!(c = x.c)) return null;\r\n    \t\t      n = ((v = c.length - 1) - bitFloor(this.e / LOG_BASE)) * LOG_BASE;\r\n\r\n    \t\t      // Subtract the number of trailing zeros of the last number.\r\n    \t\t      if (v = c[v]) for (; v % 10 == 0; v /= 10, n--);\r\n    \t\t      if (n < 0) n = 0;\r\n\r\n    \t\t      return n;\r\n    \t\t    };\r\n\r\n\r\n    \t\t    /*\r\n    \t\t     *  n / 0 = I\r\n    \t\t     *  n / N = N\r\n    \t\t     *  n / I = 0\r\n    \t\t     *  0 / n = 0\r\n    \t\t     *  0 / 0 = N\r\n    \t\t     *  0 / N = N\r\n    \t\t     *  0 / I = 0\r\n    \t\t     *  N / n = N\r\n    \t\t     *  N / 0 = N\r\n    \t\t     *  N / N = N\r\n    \t\t     *  N / I = N\r\n    \t\t     *  I / n = I\r\n    \t\t     *  I / 0 = I\r\n    \t\t     *  I / N = N\r\n    \t\t     *  I / I = N\r\n    \t\t     *\r\n    \t\t     * Return a new BigNumber whose value is the value of this BigNumber divided by the value of\r\n    \t\t     * BigNumber(y, b), rounded according to DECIMAL_PLACES and ROUNDING_MODE.\r\n    \t\t     */\r\n    \t\t    P.dividedBy = P.div = function (y, b) {\r\n    \t\t      return div(this, new BigNumber(y, b), DECIMAL_PLACES, ROUNDING_MODE);\r\n    \t\t    };\r\n\r\n\r\n    \t\t    /*\r\n    \t\t     * Return a new BigNumber whose value is the integer part of dividing the value of this\r\n    \t\t     * BigNumber by the value of BigNumber(y, b).\r\n    \t\t     */\r\n    \t\t    P.dividedToIntegerBy = P.idiv = function (y, b) {\r\n    \t\t      return div(this, new BigNumber(y, b), 0, 1);\r\n    \t\t    };\r\n\r\n\r\n    \t\t    /*\r\n    \t\t     * Return a BigNumber whose value is the value of this BigNumber exponentiated by n.\r\n    \t\t     *\r\n    \t\t     * If m is present, return the result modulo m.\r\n    \t\t     * If n is negative round according to DECIMAL_PLACES and ROUNDING_MODE.\r\n    \t\t     * If POW_PRECISION is non-zero and m is not present, round to POW_PRECISION using ROUNDING_MODE.\r\n    \t\t     *\r\n    \t\t     * The modular power operation works efficiently when x, n, and m are integers, otherwise it\r\n    \t\t     * is equivalent to calculating x.exponentiatedBy(n).modulo(m) with a POW_PRECISION of 0.\r\n    \t\t     *\r\n    \t\t     * n {number|string|BigNumber} The exponent. An integer.\r\n    \t\t     * [m] {number|string|BigNumber} The modulus.\r\n    \t\t     *\r\n    \t\t     * '[BigNumber Error] Exponent not an integer: {n}'\r\n    \t\t     */\r\n    \t\t    P.exponentiatedBy = P.pow = function (n, m) {\r\n    \t\t      var half, isModExp, i, k, more, nIsBig, nIsNeg, nIsOdd, y,\r\n    \t\t        x = this;\r\n\r\n    \t\t      n = new BigNumber(n);\r\n\r\n    \t\t      // Allow NaN and ±Infinity, but not other non-integers.\r\n    \t\t      if (n.c && !n.isInteger()) {\r\n    \t\t        throw Error\r\n    \t\t          (bignumberError + 'Exponent not an integer: ' + valueOf(n));\r\n    \t\t      }\r\n\r\n    \t\t      if (m != null) m = new BigNumber(m);\r\n\r\n    \t\t      // Exponent of MAX_SAFE_INTEGER is 15.\r\n    \t\t      nIsBig = n.e > 14;\r\n\r\n    \t\t      // If x is NaN, ±Infinity, ±0 or ±1, or n is ±Infinity, NaN or ±0.\r\n    \t\t      if (!x.c || !x.c[0] || x.c[0] == 1 && !x.e && x.c.length == 1 || !n.c || !n.c[0]) {\r\n\r\n    \t\t        // The sign of the result of pow when x is negative depends on the evenness of n.\r\n    \t\t        // If +n overflows to ±Infinity, the evenness of n would be not be known.\r\n    \t\t        y = new BigNumber(Math.pow(+valueOf(x), nIsBig ? n.s * (2 - isOdd(n)) : +valueOf(n)));\r\n    \t\t        return m ? y.mod(m) : y;\r\n    \t\t      }\r\n\r\n    \t\t      nIsNeg = n.s < 0;\r\n\r\n    \t\t      if (m) {\r\n\r\n    \t\t        // x % m returns NaN if abs(m) is zero, or m is NaN.\r\n    \t\t        if (m.c ? !m.c[0] : !m.s) return new BigNumber(NaN);\r\n\r\n    \t\t        isModExp = !nIsNeg && x.isInteger() && m.isInteger();\r\n\r\n    \t\t        if (isModExp) x = x.mod(m);\r\n\r\n    \t\t      // Overflow to ±Infinity: >=2**1e10 or >=1.0000024**1e15.\r\n    \t\t      // Underflow to ±0: <=0.79**1e10 or <=0.9999975**1e15.\r\n    \t\t      } else if (n.e > 9 && (x.e > 0 || x.e < -1 || (x.e == 0\r\n    \t\t        // [1, 240000000]\r\n    \t\t        ? x.c[0] > 1 || nIsBig && x.c[1] >= 24e7\r\n    \t\t        // [80000000000000]  [99999750000000]\r\n    \t\t        : x.c[0] < 8e13 || nIsBig && x.c[0] <= 9999975e7))) {\r\n\r\n    \t\t        // If x is negative and n is odd, k = -0, else k = 0.\r\n    \t\t        k = x.s < 0 && isOdd(n) ? -0 : 0;\r\n\r\n    \t\t        // If x >= 1, k = ±Infinity.\r\n    \t\t        if (x.e > -1) k = 1 / k;\r\n\r\n    \t\t        // If n is negative return ±0, else return ±Infinity.\r\n    \t\t        return new BigNumber(nIsNeg ? 1 / k : k);\r\n\r\n    \t\t      } else if (POW_PRECISION) {\r\n\r\n    \t\t        // Truncating each coefficient array to a length of k after each multiplication\r\n    \t\t        // equates to truncating significant digits to POW_PRECISION + [28, 41],\r\n    \t\t        // i.e. there will be a minimum of 28 guard digits retained.\r\n    \t\t        k = mathceil(POW_PRECISION / LOG_BASE + 2);\r\n    \t\t      }\r\n\r\n    \t\t      if (nIsBig) {\r\n    \t\t        half = new BigNumber(0.5);\r\n    \t\t        if (nIsNeg) n.s = 1;\r\n    \t\t        nIsOdd = isOdd(n);\r\n    \t\t      } else {\r\n    \t\t        i = Math.abs(+valueOf(n));\r\n    \t\t        nIsOdd = i % 2;\r\n    \t\t      }\r\n\r\n    \t\t      y = new BigNumber(ONE);\r\n\r\n    \t\t      // Performs 54 loop iterations for n of 9007199254740991.\r\n    \t\t      for (; ;) {\r\n\r\n    \t\t        if (nIsOdd) {\r\n    \t\t          y = y.times(x);\r\n    \t\t          if (!y.c) break;\r\n\r\n    \t\t          if (k) {\r\n    \t\t            if (y.c.length > k) y.c.length = k;\r\n    \t\t          } else if (isModExp) {\r\n    \t\t            y = y.mod(m);    //y = y.minus(div(y, m, 0, MODULO_MODE).times(m));\r\n    \t\t          }\r\n    \t\t        }\r\n\r\n    \t\t        if (i) {\r\n    \t\t          i = mathfloor(i / 2);\r\n    \t\t          if (i === 0) break;\r\n    \t\t          nIsOdd = i % 2;\r\n    \t\t        } else {\r\n    \t\t          n = n.times(half);\r\n    \t\t          round(n, n.e + 1, 1);\r\n\r\n    \t\t          if (n.e > 14) {\r\n    \t\t            nIsOdd = isOdd(n);\r\n    \t\t          } else {\r\n    \t\t            i = +valueOf(n);\r\n    \t\t            if (i === 0) break;\r\n    \t\t            nIsOdd = i % 2;\r\n    \t\t          }\r\n    \t\t        }\r\n\r\n    \t\t        x = x.times(x);\r\n\r\n    \t\t        if (k) {\r\n    \t\t          if (x.c && x.c.length > k) x.c.length = k;\r\n    \t\t        } else if (isModExp) {\r\n    \t\t          x = x.mod(m);    //x = x.minus(div(x, m, 0, MODULO_MODE).times(m));\r\n    \t\t        }\r\n    \t\t      }\r\n\r\n    \t\t      if (isModExp) return y;\r\n    \t\t      if (nIsNeg) y = ONE.div(y);\r\n\r\n    \t\t      return m ? y.mod(m) : k ? round(y, POW_PRECISION, ROUNDING_MODE, more) : y;\r\n    \t\t    };\r\n\r\n\r\n    \t\t    /*\r\n    \t\t     * Return a new BigNumber whose value is the value of this BigNumber rounded to an integer\r\n    \t\t     * using rounding mode rm, or ROUNDING_MODE if rm is omitted.\r\n    \t\t     *\r\n    \t\t     * [rm] {number} Rounding mode. Integer, 0 to 8 inclusive.\r\n    \t\t     *\r\n    \t\t     * '[BigNumber Error] Argument {not a primitive number|not an integer|out of range}: {rm}'\r\n    \t\t     */\r\n    \t\t    P.integerValue = function (rm) {\r\n    \t\t      var n = new BigNumber(this);\r\n    \t\t      if (rm == null) rm = ROUNDING_MODE;\r\n    \t\t      else intCheck(rm, 0, 8);\r\n    \t\t      return round(n, n.e + 1, rm);\r\n    \t\t    };\r\n\r\n\r\n    \t\t    /*\r\n    \t\t     * Return true if the value of this BigNumber is equal to the value of BigNumber(y, b),\r\n    \t\t     * otherwise return false.\r\n    \t\t     */\r\n    \t\t    P.isEqualTo = P.eq = function (y, b) {\r\n    \t\t      return compare(this, new BigNumber(y, b)) === 0;\r\n    \t\t    };\r\n\r\n\r\n    \t\t    /*\r\n    \t\t     * Return true if the value of this BigNumber is a finite number, otherwise return false.\r\n    \t\t     */\r\n    \t\t    P.isFinite = function () {\r\n    \t\t      return !!this.c;\r\n    \t\t    };\r\n\r\n\r\n    \t\t    /*\r\n    \t\t     * Return true if the value of this BigNumber is greater than the value of BigNumber(y, b),\r\n    \t\t     * otherwise return false.\r\n    \t\t     */\r\n    \t\t    P.isGreaterThan = P.gt = function (y, b) {\r\n    \t\t      return compare(this, new BigNumber(y, b)) > 0;\r\n    \t\t    };\r\n\r\n\r\n    \t\t    /*\r\n    \t\t     * Return true if the value of this BigNumber is greater than or equal to the value of\r\n    \t\t     * BigNumber(y, b), otherwise return false.\r\n    \t\t     */\r\n    \t\t    P.isGreaterThanOrEqualTo = P.gte = function (y, b) {\r\n    \t\t      return (b = compare(this, new BigNumber(y, b))) === 1 || b === 0;\r\n\r\n    \t\t    };\r\n\r\n\r\n    \t\t    /*\r\n    \t\t     * Return true if the value of this BigNumber is an integer, otherwise return false.\r\n    \t\t     */\r\n    \t\t    P.isInteger = function () {\r\n    \t\t      return !!this.c && bitFloor(this.e / LOG_BASE) > this.c.length - 2;\r\n    \t\t    };\r\n\r\n\r\n    \t\t    /*\r\n    \t\t     * Return true if the value of this BigNumber is less than the value of BigNumber(y, b),\r\n    \t\t     * otherwise return false.\r\n    \t\t     */\r\n    \t\t    P.isLessThan = P.lt = function (y, b) {\r\n    \t\t      return compare(this, new BigNumber(y, b)) < 0;\r\n    \t\t    };\r\n\r\n\r\n    \t\t    /*\r\n    \t\t     * Return true if the value of this BigNumber is less than or equal to the value of\r\n    \t\t     * BigNumber(y, b), otherwise return false.\r\n    \t\t     */\r\n    \t\t    P.isLessThanOrEqualTo = P.lte = function (y, b) {\r\n    \t\t      return (b = compare(this, new BigNumber(y, b))) === -1 || b === 0;\r\n    \t\t    };\r\n\r\n\r\n    \t\t    /*\r\n    \t\t     * Return true if the value of this BigNumber is NaN, otherwise return false.\r\n    \t\t     */\r\n    \t\t    P.isNaN = function () {\r\n    \t\t      return !this.s;\r\n    \t\t    };\r\n\r\n\r\n    \t\t    /*\r\n    \t\t     * Return true if the value of this BigNumber is negative, otherwise return false.\r\n    \t\t     */\r\n    \t\t    P.isNegative = function () {\r\n    \t\t      return this.s < 0;\r\n    \t\t    };\r\n\r\n\r\n    \t\t    /*\r\n    \t\t     * Return true if the value of this BigNumber is positive, otherwise return false.\r\n    \t\t     */\r\n    \t\t    P.isPositive = function () {\r\n    \t\t      return this.s > 0;\r\n    \t\t    };\r\n\r\n\r\n    \t\t    /*\r\n    \t\t     * Return true if the value of this BigNumber is 0 or -0, otherwise return false.\r\n    \t\t     */\r\n    \t\t    P.isZero = function () {\r\n    \t\t      return !!this.c && this.c[0] == 0;\r\n    \t\t    };\r\n\r\n\r\n    \t\t    /*\r\n    \t\t     *  n - 0 = n\r\n    \t\t     *  n - N = N\r\n    \t\t     *  n - I = -I\r\n    \t\t     *  0 - n = -n\r\n    \t\t     *  0 - 0 = 0\r\n    \t\t     *  0 - N = N\r\n    \t\t     *  0 - I = -I\r\n    \t\t     *  N - n = N\r\n    \t\t     *  N - 0 = N\r\n    \t\t     *  N - N = N\r\n    \t\t     *  N - I = N\r\n    \t\t     *  I - n = I\r\n    \t\t     *  I - 0 = I\r\n    \t\t     *  I - N = N\r\n    \t\t     *  I - I = N\r\n    \t\t     *\r\n    \t\t     * Return a new BigNumber whose value is the value of this BigNumber minus the value of\r\n    \t\t     * BigNumber(y, b).\r\n    \t\t     */\r\n    \t\t    P.minus = function (y, b) {\r\n    \t\t      var i, j, t, xLTy,\r\n    \t\t        x = this,\r\n    \t\t        a = x.s;\r\n\r\n    \t\t      y = new BigNumber(y, b);\r\n    \t\t      b = y.s;\r\n\r\n    \t\t      // Either NaN?\r\n    \t\t      if (!a || !b) return new BigNumber(NaN);\r\n\r\n    \t\t      // Signs differ?\r\n    \t\t      if (a != b) {\r\n    \t\t        y.s = -b;\r\n    \t\t        return x.plus(y);\r\n    \t\t      }\r\n\r\n    \t\t      var xe = x.e / LOG_BASE,\r\n    \t\t        ye = y.e / LOG_BASE,\r\n    \t\t        xc = x.c,\r\n    \t\t        yc = y.c;\r\n\r\n    \t\t      if (!xe || !ye) {\r\n\r\n    \t\t        // Either Infinity?\r\n    \t\t        if (!xc || !yc) return xc ? (y.s = -b, y) : new BigNumber(yc ? x : NaN);\r\n\r\n    \t\t        // Either zero?\r\n    \t\t        if (!xc[0] || !yc[0]) {\r\n\r\n    \t\t          // Return y if y is non-zero, x if x is non-zero, or zero if both are zero.\r\n    \t\t          return yc[0] ? (y.s = -b, y) : new BigNumber(xc[0] ? x :\r\n\r\n    \t\t           // IEEE 754 (2008) 6.3: n - n = -0 when rounding to -Infinity\r\n    \t\t           ROUNDING_MODE == 3 ? -0 : 0);\r\n    \t\t        }\r\n    \t\t      }\r\n\r\n    \t\t      xe = bitFloor(xe);\r\n    \t\t      ye = bitFloor(ye);\r\n    \t\t      xc = xc.slice();\r\n\r\n    \t\t      // Determine which is the bigger number.\r\n    \t\t      if (a = xe - ye) {\r\n\r\n    \t\t        if (xLTy = a < 0) {\r\n    \t\t          a = -a;\r\n    \t\t          t = xc;\r\n    \t\t        } else {\r\n    \t\t          ye = xe;\r\n    \t\t          t = yc;\r\n    \t\t        }\r\n\r\n    \t\t        t.reverse();\r\n\r\n    \t\t        // Prepend zeros to equalise exponents.\r\n    \t\t        for (b = a; b--; t.push(0));\r\n    \t\t        t.reverse();\r\n    \t\t      } else {\r\n\r\n    \t\t        // Exponents equal. Check digit by digit.\r\n    \t\t        j = (xLTy = (a = xc.length) < (b = yc.length)) ? a : b;\r\n\r\n    \t\t        for (a = b = 0; b < j; b++) {\r\n\r\n    \t\t          if (xc[b] != yc[b]) {\r\n    \t\t            xLTy = xc[b] < yc[b];\r\n    \t\t            break;\r\n    \t\t          }\r\n    \t\t        }\r\n    \t\t      }\r\n\r\n    \t\t      // x < y? Point xc to the array of the bigger number.\r\n    \t\t      if (xLTy) {\r\n    \t\t        t = xc;\r\n    \t\t        xc = yc;\r\n    \t\t        yc = t;\r\n    \t\t        y.s = -y.s;\r\n    \t\t      }\r\n\r\n    \t\t      b = (j = yc.length) - (i = xc.length);\r\n\r\n    \t\t      // Append zeros to xc if shorter.\r\n    \t\t      // No need to add zeros to yc if shorter as subtract only needs to start at yc.length.\r\n    \t\t      if (b > 0) for (; b--; xc[i++] = 0);\r\n    \t\t      b = BASE - 1;\r\n\r\n    \t\t      // Subtract yc from xc.\r\n    \t\t      for (; j > a;) {\r\n\r\n    \t\t        if (xc[--j] < yc[j]) {\r\n    \t\t          for (i = j; i && !xc[--i]; xc[i] = b);\r\n    \t\t          --xc[i];\r\n    \t\t          xc[j] += BASE;\r\n    \t\t        }\r\n\r\n    \t\t        xc[j] -= yc[j];\r\n    \t\t      }\r\n\r\n    \t\t      // Remove leading zeros and adjust exponent accordingly.\r\n    \t\t      for (; xc[0] == 0; xc.splice(0, 1), --ye);\r\n\r\n    \t\t      // Zero?\r\n    \t\t      if (!xc[0]) {\r\n\r\n    \t\t        // Following IEEE 754 (2008) 6.3,\r\n    \t\t        // n - n = +0  but  n - n = -0  when rounding towards -Infinity.\r\n    \t\t        y.s = ROUNDING_MODE == 3 ? -1 : 1;\r\n    \t\t        y.c = [y.e = 0];\r\n    \t\t        return y;\r\n    \t\t      }\r\n\r\n    \t\t      // No need to check for Infinity as +x - +y != Infinity && -x - -y != Infinity\r\n    \t\t      // for finite x and y.\r\n    \t\t      return normalise(y, xc, ye);\r\n    \t\t    };\r\n\r\n\r\n    \t\t    /*\r\n    \t\t     *   n % 0 =  N\r\n    \t\t     *   n % N =  N\r\n    \t\t     *   n % I =  n\r\n    \t\t     *   0 % n =  0\r\n    \t\t     *  -0 % n = -0\r\n    \t\t     *   0 % 0 =  N\r\n    \t\t     *   0 % N =  N\r\n    \t\t     *   0 % I =  0\r\n    \t\t     *   N % n =  N\r\n    \t\t     *   N % 0 =  N\r\n    \t\t     *   N % N =  N\r\n    \t\t     *   N % I =  N\r\n    \t\t     *   I % n =  N\r\n    \t\t     *   I % 0 =  N\r\n    \t\t     *   I % N =  N\r\n    \t\t     *   I % I =  N\r\n    \t\t     *\r\n    \t\t     * Return a new BigNumber whose value is the value of this BigNumber modulo the value of\r\n    \t\t     * BigNumber(y, b). The result depends on the value of MODULO_MODE.\r\n    \t\t     */\r\n    \t\t    P.modulo = P.mod = function (y, b) {\r\n    \t\t      var q, s,\r\n    \t\t        x = this;\r\n\r\n    \t\t      y = new BigNumber(y, b);\r\n\r\n    \t\t      // Return NaN if x is Infinity or NaN, or y is NaN or zero.\r\n    \t\t      if (!x.c || !y.s || y.c && !y.c[0]) {\r\n    \t\t        return new BigNumber(NaN);\r\n\r\n    \t\t      // Return x if y is Infinity or x is zero.\r\n    \t\t      } else if (!y.c || x.c && !x.c[0]) {\r\n    \t\t        return new BigNumber(x);\r\n    \t\t      }\r\n\r\n    \t\t      if (MODULO_MODE == 9) {\r\n\r\n    \t\t        // Euclidian division: q = sign(y) * floor(x / abs(y))\r\n    \t\t        // r = x - qy    where  0 <= r < abs(y)\r\n    \t\t        s = y.s;\r\n    \t\t        y.s = 1;\r\n    \t\t        q = div(x, y, 0, 3);\r\n    \t\t        y.s = s;\r\n    \t\t        q.s *= s;\r\n    \t\t      } else {\r\n    \t\t        q = div(x, y, 0, MODULO_MODE);\r\n    \t\t      }\r\n\r\n    \t\t      y = x.minus(q.times(y));\r\n\r\n    \t\t      // To match JavaScript %, ensure sign of zero is sign of dividend.\r\n    \t\t      if (!y.c[0] && MODULO_MODE == 1) y.s = x.s;\r\n\r\n    \t\t      return y;\r\n    \t\t    };\r\n\r\n\r\n    \t\t    /*\r\n    \t\t     *  n * 0 = 0\r\n    \t\t     *  n * N = N\r\n    \t\t     *  n * I = I\r\n    \t\t     *  0 * n = 0\r\n    \t\t     *  0 * 0 = 0\r\n    \t\t     *  0 * N = N\r\n    \t\t     *  0 * I = N\r\n    \t\t     *  N * n = N\r\n    \t\t     *  N * 0 = N\r\n    \t\t     *  N * N = N\r\n    \t\t     *  N * I = N\r\n    \t\t     *  I * n = I\r\n    \t\t     *  I * 0 = N\r\n    \t\t     *  I * N = N\r\n    \t\t     *  I * I = I\r\n    \t\t     *\r\n    \t\t     * Return a new BigNumber whose value is the value of this BigNumber multiplied by the value\r\n    \t\t     * of BigNumber(y, b).\r\n    \t\t     */\r\n    \t\t    P.multipliedBy = P.times = function (y, b) {\r\n    \t\t      var c, e, i, j, k, m, xcL, xlo, xhi, ycL, ylo, yhi, zc,\r\n    \t\t        base, sqrtBase,\r\n    \t\t        x = this,\r\n    \t\t        xc = x.c,\r\n    \t\t        yc = (y = new BigNumber(y, b)).c;\r\n\r\n    \t\t      // Either NaN, ±Infinity or ±0?\r\n    \t\t      if (!xc || !yc || !xc[0] || !yc[0]) {\r\n\r\n    \t\t        // Return NaN if either is NaN, or one is 0 and the other is Infinity.\r\n    \t\t        if (!x.s || !y.s || xc && !xc[0] && !yc || yc && !yc[0] && !xc) {\r\n    \t\t          y.c = y.e = y.s = null;\r\n    \t\t        } else {\r\n    \t\t          y.s *= x.s;\r\n\r\n    \t\t          // Return ±Infinity if either is ±Infinity.\r\n    \t\t          if (!xc || !yc) {\r\n    \t\t            y.c = y.e = null;\r\n\r\n    \t\t          // Return ±0 if either is ±0.\r\n    \t\t          } else {\r\n    \t\t            y.c = [0];\r\n    \t\t            y.e = 0;\r\n    \t\t          }\r\n    \t\t        }\r\n\r\n    \t\t        return y;\r\n    \t\t      }\r\n\r\n    \t\t      e = bitFloor(x.e / LOG_BASE) + bitFloor(y.e / LOG_BASE);\r\n    \t\t      y.s *= x.s;\r\n    \t\t      xcL = xc.length;\r\n    \t\t      ycL = yc.length;\r\n\r\n    \t\t      // Ensure xc points to longer array and xcL to its length.\r\n    \t\t      if (xcL < ycL) {\r\n    \t\t        zc = xc;\r\n    \t\t        xc = yc;\r\n    \t\t        yc = zc;\r\n    \t\t        i = xcL;\r\n    \t\t        xcL = ycL;\r\n    \t\t        ycL = i;\r\n    \t\t      }\r\n\r\n    \t\t      // Initialise the result array with zeros.\r\n    \t\t      for (i = xcL + ycL, zc = []; i--; zc.push(0));\r\n\r\n    \t\t      base = BASE;\r\n    \t\t      sqrtBase = SQRT_BASE;\r\n\r\n    \t\t      for (i = ycL; --i >= 0;) {\r\n    \t\t        c = 0;\r\n    \t\t        ylo = yc[i] % sqrtBase;\r\n    \t\t        yhi = yc[i] / sqrtBase | 0;\r\n\r\n    \t\t        for (k = xcL, j = i + k; j > i;) {\r\n    \t\t          xlo = xc[--k] % sqrtBase;\r\n    \t\t          xhi = xc[k] / sqrtBase | 0;\r\n    \t\t          m = yhi * xlo + xhi * ylo;\r\n    \t\t          xlo = ylo * xlo + ((m % sqrtBase) * sqrtBase) + zc[j] + c;\r\n    \t\t          c = (xlo / base | 0) + (m / sqrtBase | 0) + yhi * xhi;\r\n    \t\t          zc[j--] = xlo % base;\r\n    \t\t        }\r\n\r\n    \t\t        zc[j] = c;\r\n    \t\t      }\r\n\r\n    \t\t      if (c) {\r\n    \t\t        ++e;\r\n    \t\t      } else {\r\n    \t\t        zc.splice(0, 1);\r\n    \t\t      }\r\n\r\n    \t\t      return normalise(y, zc, e);\r\n    \t\t    };\r\n\r\n\r\n    \t\t    /*\r\n    \t\t     * Return a new BigNumber whose value is the value of this BigNumber negated,\r\n    \t\t     * i.e. multiplied by -1.\r\n    \t\t     */\r\n    \t\t    P.negated = function () {\r\n    \t\t      var x = new BigNumber(this);\r\n    \t\t      x.s = -x.s || null;\r\n    \t\t      return x;\r\n    \t\t    };\r\n\r\n\r\n    \t\t    /*\r\n    \t\t     *  n + 0 = n\r\n    \t\t     *  n + N = N\r\n    \t\t     *  n + I = I\r\n    \t\t     *  0 + n = n\r\n    \t\t     *  0 + 0 = 0\r\n    \t\t     *  0 + N = N\r\n    \t\t     *  0 + I = I\r\n    \t\t     *  N + n = N\r\n    \t\t     *  N + 0 = N\r\n    \t\t     *  N + N = N\r\n    \t\t     *  N + I = N\r\n    \t\t     *  I + n = I\r\n    \t\t     *  I + 0 = I\r\n    \t\t     *  I + N = N\r\n    \t\t     *  I + I = I\r\n    \t\t     *\r\n    \t\t     * Return a new BigNumber whose value is the value of this BigNumber plus the value of\r\n    \t\t     * BigNumber(y, b).\r\n    \t\t     */\r\n    \t\t    P.plus = function (y, b) {\r\n    \t\t      var t,\r\n    \t\t        x = this,\r\n    \t\t        a = x.s;\r\n\r\n    \t\t      y = new BigNumber(y, b);\r\n    \t\t      b = y.s;\r\n\r\n    \t\t      // Either NaN?\r\n    \t\t      if (!a || !b) return new BigNumber(NaN);\r\n\r\n    \t\t      // Signs differ?\r\n    \t\t       if (a != b) {\r\n    \t\t        y.s = -b;\r\n    \t\t        return x.minus(y);\r\n    \t\t      }\r\n\r\n    \t\t      var xe = x.e / LOG_BASE,\r\n    \t\t        ye = y.e / LOG_BASE,\r\n    \t\t        xc = x.c,\r\n    \t\t        yc = y.c;\r\n\r\n    \t\t      if (!xe || !ye) {\r\n\r\n    \t\t        // Return ±Infinity if either ±Infinity.\r\n    \t\t        if (!xc || !yc) return new BigNumber(a / 0);\r\n\r\n    \t\t        // Either zero?\r\n    \t\t        // Return y if y is non-zero, x if x is non-zero, or zero if both are zero.\r\n    \t\t        if (!xc[0] || !yc[0]) return yc[0] ? y : new BigNumber(xc[0] ? x : a * 0);\r\n    \t\t      }\r\n\r\n    \t\t      xe = bitFloor(xe);\r\n    \t\t      ye = bitFloor(ye);\r\n    \t\t      xc = xc.slice();\r\n\r\n    \t\t      // Prepend zeros to equalise exponents. Faster to use reverse then do unshifts.\r\n    \t\t      if (a = xe - ye) {\r\n    \t\t        if (a > 0) {\r\n    \t\t          ye = xe;\r\n    \t\t          t = yc;\r\n    \t\t        } else {\r\n    \t\t          a = -a;\r\n    \t\t          t = xc;\r\n    \t\t        }\r\n\r\n    \t\t        t.reverse();\r\n    \t\t        for (; a--; t.push(0));\r\n    \t\t        t.reverse();\r\n    \t\t      }\r\n\r\n    \t\t      a = xc.length;\r\n    \t\t      b = yc.length;\r\n\r\n    \t\t      // Point xc to the longer array, and b to the shorter length.\r\n    \t\t      if (a - b < 0) {\r\n    \t\t        t = yc;\r\n    \t\t        yc = xc;\r\n    \t\t        xc = t;\r\n    \t\t        b = a;\r\n    \t\t      }\r\n\r\n    \t\t      // Only start adding at yc.length - 1 as the further digits of xc can be ignored.\r\n    \t\t      for (a = 0; b;) {\r\n    \t\t        a = (xc[--b] = xc[b] + yc[b] + a) / BASE | 0;\r\n    \t\t        xc[b] = BASE === xc[b] ? 0 : xc[b] % BASE;\r\n    \t\t      }\r\n\r\n    \t\t      if (a) {\r\n    \t\t        xc = [a].concat(xc);\r\n    \t\t        ++ye;\r\n    \t\t      }\r\n\r\n    \t\t      // No need to check for zero, as +x + +y != 0 && -x + -y != 0\r\n    \t\t      // ye = MAX_EXP + 1 possible\r\n    \t\t      return normalise(y, xc, ye);\r\n    \t\t    };\r\n\r\n\r\n    \t\t    /*\r\n    \t\t     * If sd is undefined or null or true or false, return the number of significant digits of\r\n    \t\t     * the value of this BigNumber, or null if the value of this BigNumber is ±Infinity or NaN.\r\n    \t\t     * If sd is true include integer-part trailing zeros in the count.\r\n    \t\t     *\r\n    \t\t     * Otherwise, if sd is a number, return a new BigNumber whose value is the value of this\r\n    \t\t     * BigNumber rounded to a maximum of sd significant digits using rounding mode rm, or\r\n    \t\t     * ROUNDING_MODE if rm is omitted.\r\n    \t\t     *\r\n    \t\t     * sd {number|boolean} number: significant digits: integer, 1 to MAX inclusive.\r\n    \t\t     *                     boolean: whether to count integer-part trailing zeros: true or false.\r\n    \t\t     * [rm] {number} Rounding mode. Integer, 0 to 8 inclusive.\r\n    \t\t     *\r\n    \t\t     * '[BigNumber Error] Argument {not a primitive number|not an integer|out of range}: {sd|rm}'\r\n    \t\t     */\r\n    \t\t    P.precision = P.sd = function (sd, rm) {\r\n    \t\t      var c, n, v,\r\n    \t\t        x = this;\r\n\r\n    \t\t      if (sd != null && sd !== !!sd) {\r\n    \t\t        intCheck(sd, 1, MAX);\r\n    \t\t        if (rm == null) rm = ROUNDING_MODE;\r\n    \t\t        else intCheck(rm, 0, 8);\r\n\r\n    \t\t        return round(new BigNumber(x), sd, rm);\r\n    \t\t      }\r\n\r\n    \t\t      if (!(c = x.c)) return null;\r\n    \t\t      v = c.length - 1;\r\n    \t\t      n = v * LOG_BASE + 1;\r\n\r\n    \t\t      if (v = c[v]) {\r\n\r\n    \t\t        // Subtract the number of trailing zeros of the last element.\r\n    \t\t        for (; v % 10 == 0; v /= 10, n--);\r\n\r\n    \t\t        // Add the number of digits of the first element.\r\n    \t\t        for (v = c[0]; v >= 10; v /= 10, n++);\r\n    \t\t      }\r\n\r\n    \t\t      if (sd && x.e + 1 > n) n = x.e + 1;\r\n\r\n    \t\t      return n;\r\n    \t\t    };\r\n\r\n\r\n    \t\t    /*\r\n    \t\t     * Return a new BigNumber whose value is the value of this BigNumber shifted by k places\r\n    \t\t     * (powers of 10). Shift to the right if n > 0, and to the left if n < 0.\r\n    \t\t     *\r\n    \t\t     * k {number} Integer, -MAX_SAFE_INTEGER to MAX_SAFE_INTEGER inclusive.\r\n    \t\t     *\r\n    \t\t     * '[BigNumber Error] Argument {not a primitive number|not an integer|out of range}: {k}'\r\n    \t\t     */\r\n    \t\t    P.shiftedBy = function (k) {\r\n    \t\t      intCheck(k, -MAX_SAFE_INTEGER, MAX_SAFE_INTEGER);\r\n    \t\t      return this.times('1e' + k);\r\n    \t\t    };\r\n\r\n\r\n    \t\t    /*\r\n    \t\t     *  sqrt(-n) =  N\r\n    \t\t     *  sqrt(N) =  N\r\n    \t\t     *  sqrt(-I) =  N\r\n    \t\t     *  sqrt(I) =  I\r\n    \t\t     *  sqrt(0) =  0\r\n    \t\t     *  sqrt(-0) = -0\r\n    \t\t     *\r\n    \t\t     * Return a new BigNumber whose value is the square root of the value of this BigNumber,\r\n    \t\t     * rounded according to DECIMAL_PLACES and ROUNDING_MODE.\r\n    \t\t     */\r\n    \t\t    P.squareRoot = P.sqrt = function () {\r\n    \t\t      var m, n, r, rep, t,\r\n    \t\t        x = this,\r\n    \t\t        c = x.c,\r\n    \t\t        s = x.s,\r\n    \t\t        e = x.e,\r\n    \t\t        dp = DECIMAL_PLACES + 4,\r\n    \t\t        half = new BigNumber('0.5');\r\n\r\n    \t\t      // Negative/NaN/Infinity/zero?\r\n    \t\t      if (s !== 1 || !c || !c[0]) {\r\n    \t\t        return new BigNumber(!s || s < 0 && (!c || c[0]) ? NaN : c ? x : 1 / 0);\r\n    \t\t      }\r\n\r\n    \t\t      // Initial estimate.\r\n    \t\t      s = Math.sqrt(+valueOf(x));\r\n\r\n    \t\t      // Math.sqrt underflow/overflow?\r\n    \t\t      // Pass x to Math.sqrt as integer, then adjust the exponent of the result.\r\n    \t\t      if (s == 0 || s == 1 / 0) {\r\n    \t\t        n = coeffToString(c);\r\n    \t\t        if ((n.length + e) % 2 == 0) n += '0';\r\n    \t\t        s = Math.sqrt(+n);\r\n    \t\t        e = bitFloor((e + 1) / 2) - (e < 0 || e % 2);\r\n\r\n    \t\t        if (s == 1 / 0) {\r\n    \t\t          n = '5e' + e;\r\n    \t\t        } else {\r\n    \t\t          n = s.toExponential();\r\n    \t\t          n = n.slice(0, n.indexOf('e') + 1) + e;\r\n    \t\t        }\r\n\r\n    \t\t        r = new BigNumber(n);\r\n    \t\t      } else {\r\n    \t\t        r = new BigNumber(s + '');\r\n    \t\t      }\r\n\r\n    \t\t      // Check for zero.\r\n    \t\t      // r could be zero if MIN_EXP is changed after the this value was created.\r\n    \t\t      // This would cause a division by zero (x/t) and hence Infinity below, which would cause\r\n    \t\t      // coeffToString to throw.\r\n    \t\t      if (r.c[0]) {\r\n    \t\t        e = r.e;\r\n    \t\t        s = e + dp;\r\n    \t\t        if (s < 3) s = 0;\r\n\r\n    \t\t        // Newton-Raphson iteration.\r\n    \t\t        for (; ;) {\r\n    \t\t          t = r;\r\n    \t\t          r = half.times(t.plus(div(x, t, dp, 1)));\r\n\r\n    \t\t          if (coeffToString(t.c).slice(0, s) === (n = coeffToString(r.c)).slice(0, s)) {\r\n\r\n    \t\t            // The exponent of r may here be one less than the final result exponent,\r\n    \t\t            // e.g 0.0009999 (e-4) --> 0.001 (e-3), so adjust s so the rounding digits\r\n    \t\t            // are indexed correctly.\r\n    \t\t            if (r.e < e) --s;\r\n    \t\t            n = n.slice(s - 3, s + 1);\r\n\r\n    \t\t            // The 4th rounding digit may be in error by -1 so if the 4 rounding digits\r\n    \t\t            // are 9999 or 4999 (i.e. approaching a rounding boundary) continue the\r\n    \t\t            // iteration.\r\n    \t\t            if (n == '9999' || !rep && n == '4999') {\r\n\r\n    \t\t              // On the first iteration only, check to see if rounding up gives the\r\n    \t\t              // exact result as the nines may infinitely repeat.\r\n    \t\t              if (!rep) {\r\n    \t\t                round(t, t.e + DECIMAL_PLACES + 2, 0);\r\n\r\n    \t\t                if (t.times(t).eq(x)) {\r\n    \t\t                  r = t;\r\n    \t\t                  break;\r\n    \t\t                }\r\n    \t\t              }\r\n\r\n    \t\t              dp += 4;\r\n    \t\t              s += 4;\r\n    \t\t              rep = 1;\r\n    \t\t            } else {\r\n\r\n    \t\t              // If rounding digits are null, 0{0,4} or 50{0,3}, check for exact\r\n    \t\t              // result. If not, then there are further digits and m will be truthy.\r\n    \t\t              if (!+n || !+n.slice(1) && n.charAt(0) == '5') {\r\n\r\n    \t\t                // Truncate to the first rounding digit.\r\n    \t\t                round(r, r.e + DECIMAL_PLACES + 2, 1);\r\n    \t\t                m = !r.times(r).eq(x);\r\n    \t\t              }\r\n\r\n    \t\t              break;\r\n    \t\t            }\r\n    \t\t          }\r\n    \t\t        }\r\n    \t\t      }\r\n\r\n    \t\t      return round(r, r.e + DECIMAL_PLACES + 1, ROUNDING_MODE, m);\r\n    \t\t    };\r\n\r\n\r\n    \t\t    /*\r\n    \t\t     * Return a string representing the value of this BigNumber in exponential notation and\r\n    \t\t     * rounded using ROUNDING_MODE to dp fixed decimal places.\r\n    \t\t     *\r\n    \t\t     * [dp] {number} Decimal places. Integer, 0 to MAX inclusive.\r\n    \t\t     * [rm] {number} Rounding mode. Integer, 0 to 8 inclusive.\r\n    \t\t     *\r\n    \t\t     * '[BigNumber Error] Argument {not a primitive number|not an integer|out of range}: {dp|rm}'\r\n    \t\t     */\r\n    \t\t    P.toExponential = function (dp, rm) {\r\n    \t\t      if (dp != null) {\r\n    \t\t        intCheck(dp, 0, MAX);\r\n    \t\t        dp++;\r\n    \t\t      }\r\n    \t\t      return format(this, dp, rm, 1);\r\n    \t\t    };\r\n\r\n\r\n    \t\t    /*\r\n    \t\t     * Return a string representing the value of this BigNumber in fixed-point notation rounding\r\n    \t\t     * to dp fixed decimal places using rounding mode rm, or ROUNDING_MODE if rm is omitted.\r\n    \t\t     *\r\n    \t\t     * Note: as with JavaScript's number type, (-0).toFixed(0) is '0',\r\n    \t\t     * but e.g. (-0.00001).toFixed(0) is '-0'.\r\n    \t\t     *\r\n    \t\t     * [dp] {number} Decimal places. Integer, 0 to MAX inclusive.\r\n    \t\t     * [rm] {number} Rounding mode. Integer, 0 to 8 inclusive.\r\n    \t\t     *\r\n    \t\t     * '[BigNumber Error] Argument {not a primitive number|not an integer|out of range}: {dp|rm}'\r\n    \t\t     */\r\n    \t\t    P.toFixed = function (dp, rm) {\r\n    \t\t      if (dp != null) {\r\n    \t\t        intCheck(dp, 0, MAX);\r\n    \t\t        dp = dp + this.e + 1;\r\n    \t\t      }\r\n    \t\t      return format(this, dp, rm);\r\n    \t\t    };\r\n\r\n\r\n    \t\t    /*\r\n    \t\t     * Return a string representing the value of this BigNumber in fixed-point notation rounded\r\n    \t\t     * using rm or ROUNDING_MODE to dp decimal places, and formatted according to the properties\r\n    \t\t     * of the format or FORMAT object (see BigNumber.set).\r\n    \t\t     *\r\n    \t\t     * The formatting object may contain some or all of the properties shown below.\r\n    \t\t     *\r\n    \t\t     * FORMAT = {\r\n    \t\t     *   prefix: '',\r\n    \t\t     *   groupSize: 3,\r\n    \t\t     *   secondaryGroupSize: 0,\r\n    \t\t     *   groupSeparator: ',',\r\n    \t\t     *   decimalSeparator: '.',\r\n    \t\t     *   fractionGroupSize: 0,\r\n    \t\t     *   fractionGroupSeparator: '\\xA0',      // non-breaking space\r\n    \t\t     *   suffix: ''\r\n    \t\t     * };\r\n    \t\t     *\r\n    \t\t     * [dp] {number} Decimal places. Integer, 0 to MAX inclusive.\r\n    \t\t     * [rm] {number} Rounding mode. Integer, 0 to 8 inclusive.\r\n    \t\t     * [format] {object} Formatting options. See FORMAT pbject above.\r\n    \t\t     *\r\n    \t\t     * '[BigNumber Error] Argument {not a primitive number|not an integer|out of range}: {dp|rm}'\r\n    \t\t     * '[BigNumber Error] Argument not an object: {format}'\r\n    \t\t     */\r\n    \t\t    P.toFormat = function (dp, rm, format) {\r\n    \t\t      var str,\r\n    \t\t        x = this;\r\n\r\n    \t\t      if (format == null) {\r\n    \t\t        if (dp != null && rm && typeof rm == 'object') {\r\n    \t\t          format = rm;\r\n    \t\t          rm = null;\r\n    \t\t        } else if (dp && typeof dp == 'object') {\r\n    \t\t          format = dp;\r\n    \t\t          dp = rm = null;\r\n    \t\t        } else {\r\n    \t\t          format = FORMAT;\r\n    \t\t        }\r\n    \t\t      } else if (typeof format != 'object') {\r\n    \t\t        throw Error\r\n    \t\t          (bignumberError + 'Argument not an object: ' + format);\r\n    \t\t      }\r\n\r\n    \t\t      str = x.toFixed(dp, rm);\r\n\r\n    \t\t      if (x.c) {\r\n    \t\t        var i,\r\n    \t\t          arr = str.split('.'),\r\n    \t\t          g1 = +format.groupSize,\r\n    \t\t          g2 = +format.secondaryGroupSize,\r\n    \t\t          groupSeparator = format.groupSeparator || '',\r\n    \t\t          intPart = arr[0],\r\n    \t\t          fractionPart = arr[1],\r\n    \t\t          isNeg = x.s < 0,\r\n    \t\t          intDigits = isNeg ? intPart.slice(1) : intPart,\r\n    \t\t          len = intDigits.length;\r\n\r\n    \t\t        if (g2) {\r\n    \t\t          i = g1;\r\n    \t\t          g1 = g2;\r\n    \t\t          g2 = i;\r\n    \t\t          len -= i;\r\n    \t\t        }\r\n\r\n    \t\t        if (g1 > 0 && len > 0) {\r\n    \t\t          i = len % g1 || g1;\r\n    \t\t          intPart = intDigits.substr(0, i);\r\n    \t\t          for (; i < len; i += g1) intPart += groupSeparator + intDigits.substr(i, g1);\r\n    \t\t          if (g2 > 0) intPart += groupSeparator + intDigits.slice(i);\r\n    \t\t          if (isNeg) intPart = '-' + intPart;\r\n    \t\t        }\r\n\r\n    \t\t        str = fractionPart\r\n    \t\t         ? intPart + (format.decimalSeparator || '') + ((g2 = +format.fractionGroupSize)\r\n    \t\t          ? fractionPart.replace(new RegExp('\\\\d{' + g2 + '}\\\\B', 'g'),\r\n    \t\t           '$&' + (format.fractionGroupSeparator || ''))\r\n    \t\t          : fractionPart)\r\n    \t\t         : intPart;\r\n    \t\t      }\r\n\r\n    \t\t      return (format.prefix || '') + str + (format.suffix || '');\r\n    \t\t    };\r\n\r\n\r\n    \t\t    /*\r\n    \t\t     * Return an array of two BigNumbers representing the value of this BigNumber as a simple\r\n    \t\t     * fraction with an integer numerator and an integer denominator.\r\n    \t\t     * The denominator will be a positive non-zero value less than or equal to the specified\r\n    \t\t     * maximum denominator. If a maximum denominator is not specified, the denominator will be\r\n    \t\t     * the lowest value necessary to represent the number exactly.\r\n    \t\t     *\r\n    \t\t     * [md] {number|string|BigNumber} Integer >= 1, or Infinity. The maximum denominator.\r\n    \t\t     *\r\n    \t\t     * '[BigNumber Error] Argument {not an integer|out of range} : {md}'\r\n    \t\t     */\r\n    \t\t    P.toFraction = function (md) {\r\n    \t\t      var d, d0, d1, d2, e, exp, n, n0, n1, q, r, s,\r\n    \t\t        x = this,\r\n    \t\t        xc = x.c;\r\n\r\n    \t\t      if (md != null) {\r\n    \t\t        n = new BigNumber(md);\r\n\r\n    \t\t        // Throw if md is less than one or is not an integer, unless it is Infinity.\r\n    \t\t        if (!n.isInteger() && (n.c || n.s !== 1) || n.lt(ONE)) {\r\n    \t\t          throw Error\r\n    \t\t            (bignumberError + 'Argument ' +\r\n    \t\t              (n.isInteger() ? 'out of range: ' : 'not an integer: ') + valueOf(n));\r\n    \t\t        }\r\n    \t\t      }\r\n\r\n    \t\t      if (!xc) return new BigNumber(x);\r\n\r\n    \t\t      d = new BigNumber(ONE);\r\n    \t\t      n1 = d0 = new BigNumber(ONE);\r\n    \t\t      d1 = n0 = new BigNumber(ONE);\r\n    \t\t      s = coeffToString(xc);\r\n\r\n    \t\t      // Determine initial denominator.\r\n    \t\t      // d is a power of 10 and the minimum max denominator that specifies the value exactly.\r\n    \t\t      e = d.e = s.length - x.e - 1;\r\n    \t\t      d.c[0] = POWS_TEN[(exp = e % LOG_BASE) < 0 ? LOG_BASE + exp : exp];\r\n    \t\t      md = !md || n.comparedTo(d) > 0 ? (e > 0 ? d : n1) : n;\r\n\r\n    \t\t      exp = MAX_EXP;\r\n    \t\t      MAX_EXP = 1 / 0;\r\n    \t\t      n = new BigNumber(s);\r\n\r\n    \t\t      // n0 = d1 = 0\r\n    \t\t      n0.c[0] = 0;\r\n\r\n    \t\t      for (; ;)  {\r\n    \t\t        q = div(n, d, 0, 1);\r\n    \t\t        d2 = d0.plus(q.times(d1));\r\n    \t\t        if (d2.comparedTo(md) == 1) break;\r\n    \t\t        d0 = d1;\r\n    \t\t        d1 = d2;\r\n    \t\t        n1 = n0.plus(q.times(d2 = n1));\r\n    \t\t        n0 = d2;\r\n    \t\t        d = n.minus(q.times(d2 = d));\r\n    \t\t        n = d2;\r\n    \t\t      }\r\n\r\n    \t\t      d2 = div(md.minus(d0), d1, 0, 1);\r\n    \t\t      n0 = n0.plus(d2.times(n1));\r\n    \t\t      d0 = d0.plus(d2.times(d1));\r\n    \t\t      n0.s = n1.s = x.s;\r\n    \t\t      e = e * 2;\r\n\r\n    \t\t      // Determine which fraction is closer to x, n0/d0 or n1/d1\r\n    \t\t      r = div(n1, d1, e, ROUNDING_MODE).minus(x).abs().comparedTo(\r\n    \t\t          div(n0, d0, e, ROUNDING_MODE).minus(x).abs()) < 1 ? [n1, d1] : [n0, d0];\r\n\r\n    \t\t      MAX_EXP = exp;\r\n\r\n    \t\t      return r;\r\n    \t\t    };\r\n\r\n\r\n    \t\t    /*\r\n    \t\t     * Return the value of this BigNumber converted to a number primitive.\r\n    \t\t     */\r\n    \t\t    P.toNumber = function () {\r\n    \t\t      return +valueOf(this);\r\n    \t\t    };\r\n\r\n\r\n    \t\t    /*\r\n    \t\t     * Return a string representing the value of this BigNumber rounded to sd significant digits\r\n    \t\t     * using rounding mode rm or ROUNDING_MODE. If sd is less than the number of digits\r\n    \t\t     * necessary to represent the integer part of the value in fixed-point notation, then use\r\n    \t\t     * exponential notation.\r\n    \t\t     *\r\n    \t\t     * [sd] {number} Significant digits. Integer, 1 to MAX inclusive.\r\n    \t\t     * [rm] {number} Rounding mode. Integer, 0 to 8 inclusive.\r\n    \t\t     *\r\n    \t\t     * '[BigNumber Error] Argument {not a primitive number|not an integer|out of range}: {sd|rm}'\r\n    \t\t     */\r\n    \t\t    P.toPrecision = function (sd, rm) {\r\n    \t\t      if (sd != null) intCheck(sd, 1, MAX);\r\n    \t\t      return format(this, sd, rm, 2);\r\n    \t\t    };\r\n\r\n\r\n    \t\t    /*\r\n    \t\t     * Return a string representing the value of this BigNumber in base b, or base 10 if b is\r\n    \t\t     * omitted. If a base is specified, including base 10, round according to DECIMAL_PLACES and\r\n    \t\t     * ROUNDING_MODE. If a base is not specified, and this BigNumber has a positive exponent\r\n    \t\t     * that is equal to or greater than TO_EXP_POS, or a negative exponent equal to or less than\r\n    \t\t     * TO_EXP_NEG, return exponential notation.\r\n    \t\t     *\r\n    \t\t     * [b] {number} Integer, 2 to ALPHABET.length inclusive.\r\n    \t\t     *\r\n    \t\t     * '[BigNumber Error] Base {not a primitive number|not an integer|out of range}: {b}'\r\n    \t\t     */\r\n    \t\t    P.toString = function (b) {\r\n    \t\t      var str,\r\n    \t\t        n = this,\r\n    \t\t        s = n.s,\r\n    \t\t        e = n.e;\r\n\r\n    \t\t      // Infinity or NaN?\r\n    \t\t      if (e === null) {\r\n    \t\t        if (s) {\r\n    \t\t          str = 'Infinity';\r\n    \t\t          if (s < 0) str = '-' + str;\r\n    \t\t        } else {\r\n    \t\t          str = 'NaN';\r\n    \t\t        }\r\n    \t\t      } else {\r\n    \t\t        if (b == null) {\r\n    \t\t          str = e <= TO_EXP_NEG || e >= TO_EXP_POS\r\n    \t\t           ? toExponential(coeffToString(n.c), e)\r\n    \t\t           : toFixedPoint(coeffToString(n.c), e, '0');\r\n    \t\t        } else if (b === 10 && alphabetHasNormalDecimalDigits) {\r\n    \t\t          n = round(new BigNumber(n), DECIMAL_PLACES + e + 1, ROUNDING_MODE);\r\n    \t\t          str = toFixedPoint(coeffToString(n.c), n.e, '0');\r\n    \t\t        } else {\r\n    \t\t          intCheck(b, 2, ALPHABET.length, 'Base');\r\n    \t\t          str = convertBase(toFixedPoint(coeffToString(n.c), e, '0'), 10, b, s, true);\r\n    \t\t        }\r\n\r\n    \t\t        if (s < 0 && n.c[0]) str = '-' + str;\r\n    \t\t      }\r\n\r\n    \t\t      return str;\r\n    \t\t    };\r\n\r\n\r\n    \t\t    /*\r\n    \t\t     * Return as toString, but do not accept a base argument, and include the minus sign for\r\n    \t\t     * negative zero.\r\n    \t\t     */\r\n    \t\t    P.valueOf = P.toJSON = function () {\r\n    \t\t      return valueOf(this);\r\n    \t\t    };\r\n\r\n\r\n    \t\t    P._isBigNumber = true;\r\n\r\n    \t\t    if (configObject != null) BigNumber.set(configObject);\r\n\r\n    \t\t    return BigNumber;\r\n    \t\t  }\r\n\r\n\r\n    \t\t  // PRIVATE HELPER FUNCTIONS\r\n\r\n    \t\t  // These functions don't need access to variables,\r\n    \t\t  // e.g. DECIMAL_PLACES, in the scope of the `clone` function above.\r\n\r\n\r\n    \t\t  function bitFloor(n) {\r\n    \t\t    var i = n | 0;\r\n    \t\t    return n > 0 || n === i ? i : i - 1;\r\n    \t\t  }\r\n\r\n\r\n    \t\t  // Return a coefficient array as a string of base 10 digits.\r\n    \t\t  function coeffToString(a) {\r\n    \t\t    var s, z,\r\n    \t\t      i = 1,\r\n    \t\t      j = a.length,\r\n    \t\t      r = a[0] + '';\r\n\r\n    \t\t    for (; i < j;) {\r\n    \t\t      s = a[i++] + '';\r\n    \t\t      z = LOG_BASE - s.length;\r\n    \t\t      for (; z--; s = '0' + s);\r\n    \t\t      r += s;\r\n    \t\t    }\r\n\r\n    \t\t    // Determine trailing zeros.\r\n    \t\t    for (j = r.length; r.charCodeAt(--j) === 48;);\r\n\r\n    \t\t    return r.slice(0, j + 1 || 1);\r\n    \t\t  }\r\n\r\n\r\n    \t\t  // Compare the value of BigNumbers x and y.\r\n    \t\t  function compare(x, y) {\r\n    \t\t    var a, b,\r\n    \t\t      xc = x.c,\r\n    \t\t      yc = y.c,\r\n    \t\t      i = x.s,\r\n    \t\t      j = y.s,\r\n    \t\t      k = x.e,\r\n    \t\t      l = y.e;\r\n\r\n    \t\t    // Either NaN?\r\n    \t\t    if (!i || !j) return null;\r\n\r\n    \t\t    a = xc && !xc[0];\r\n    \t\t    b = yc && !yc[0];\r\n\r\n    \t\t    // Either zero?\r\n    \t\t    if (a || b) return a ? b ? 0 : -j : i;\r\n\r\n    \t\t    // Signs differ?\r\n    \t\t    if (i != j) return i;\r\n\r\n    \t\t    a = i < 0;\r\n    \t\t    b = k == l;\r\n\r\n    \t\t    // Either Infinity?\r\n    \t\t    if (!xc || !yc) return b ? 0 : !xc ^ a ? 1 : -1;\r\n\r\n    \t\t    // Compare exponents.\r\n    \t\t    if (!b) return k > l ^ a ? 1 : -1;\r\n\r\n    \t\t    j = (k = xc.length) < (l = yc.length) ? k : l;\r\n\r\n    \t\t    // Compare digit by digit.\r\n    \t\t    for (i = 0; i < j; i++) if (xc[i] != yc[i]) return xc[i] > yc[i] ^ a ? 1 : -1;\r\n\r\n    \t\t    // Compare lengths.\r\n    \t\t    return k == l ? 0 : k > l ^ a ? 1 : -1;\r\n    \t\t  }\r\n\r\n\r\n    \t\t  /*\r\n    \t\t   * Check that n is a primitive number, an integer, and in range, otherwise throw.\r\n    \t\t   */\r\n    \t\t  function intCheck(n, min, max, name) {\r\n    \t\t    if (n < min || n > max || n !== mathfloor(n)) {\r\n    \t\t      throw Error\r\n    \t\t       (bignumberError + (name || 'Argument') + (typeof n == 'number'\r\n    \t\t         ? n < min || n > max ? ' out of range: ' : ' not an integer: '\r\n    \t\t         : ' not a primitive number: ') + String(n));\r\n    \t\t    }\r\n    \t\t  }\r\n\r\n\r\n    \t\t  // Assumes finite n.\r\n    \t\t  function isOdd(n) {\r\n    \t\t    var k = n.c.length - 1;\r\n    \t\t    return bitFloor(n.e / LOG_BASE) == k && n.c[k] % 2 != 0;\r\n    \t\t  }\r\n\r\n\r\n    \t\t  function toExponential(str, e) {\r\n    \t\t    return (str.length > 1 ? str.charAt(0) + '.' + str.slice(1) : str) +\r\n    \t\t     (e < 0 ? 'e' : 'e+') + e;\r\n    \t\t  }\r\n\r\n\r\n    \t\t  function toFixedPoint(str, e, z) {\r\n    \t\t    var len, zs;\r\n\r\n    \t\t    // Negative exponent?\r\n    \t\t    if (e < 0) {\r\n\r\n    \t\t      // Prepend zeros.\r\n    \t\t      for (zs = z + '.'; ++e; zs += z);\r\n    \t\t      str = zs + str;\r\n\r\n    \t\t    // Positive exponent\r\n    \t\t    } else {\r\n    \t\t      len = str.length;\r\n\r\n    \t\t      // Append zeros.\r\n    \t\t      if (++e > len) {\r\n    \t\t        for (zs = z, e -= len; --e; zs += z);\r\n    \t\t        str += zs;\r\n    \t\t      } else if (e < len) {\r\n    \t\t        str = str.slice(0, e) + '.' + str.slice(e);\r\n    \t\t      }\r\n    \t\t    }\r\n\r\n    \t\t    return str;\r\n    \t\t  }\r\n\r\n\r\n    \t\t  // EXPORT\r\n\r\n\r\n    \t\t  BigNumber = clone();\r\n    \t\t  BigNumber['default'] = BigNumber.BigNumber = BigNumber;\r\n\r\n    \t\t  // AMD.\r\n    \t\t  if (module.exports) {\r\n    \t\t    module.exports = BigNumber;\r\n\r\n    \t\t  // Browser.\r\n    \t\t  } else {\r\n    \t\t    if (!globalObject) {\r\n    \t\t      globalObject = typeof self != 'undefined' && self ? self : window;\r\n    \t\t    }\r\n\r\n    \t\t    globalObject.BigNumber = BigNumber;\r\n    \t\t  }\r\n    \t\t})(bignumber); \n    \t} (bignumber$1));\n    \treturn bignumber$1.exports;\n    }\n\n    var hasRequiredStringify;\n\n    function requireStringify () {\n    \tif (hasRequiredStringify) return stringify.exports;\n    \thasRequiredStringify = 1;\n    \t(function (module) {\n    \t\tvar BigNumber = requireBignumber();\n\n    \t\t/*\n    \t\t    json2.js\n    \t\t    2013-05-26\n\n    \t\t    Public Domain.\n\n    \t\t    NO WARRANTY EXPRESSED OR IMPLIED. USE AT YOUR OWN RISK.\n\n    \t\t    See http://www.JSON.org/js.html\n\n\n    \t\t    This code should be minified before deployment.\n    \t\t    See http://javascript.crockford.com/jsmin.html\n\n    \t\t    USE YOUR OWN COPY. IT IS EXTREMELY UNWISE TO LOAD CODE FROM SERVERS YOU DO\n    \t\t    NOT CONTROL.\n\n\n    \t\t    This file creates a global JSON object containing two methods: stringify\n    \t\t    and parse.\n\n    \t\t        JSON.stringify(value, replacer, space)\n    \t\t            value       any JavaScript value, usually an object or array.\n\n    \t\t            replacer    an optional parameter that determines how object\n    \t\t                        values are stringified for objects. It can be a\n    \t\t                        function or an array of strings.\n\n    \t\t            space       an optional parameter that specifies the indentation\n    \t\t                        of nested structures. If it is omitted, the text will\n    \t\t                        be packed without extra whitespace. If it is a number,\n    \t\t                        it will specify the number of spaces to indent at each\n    \t\t                        level. If it is a string (such as '\\t' or '&nbsp;'),\n    \t\t                        it contains the characters used to indent at each level.\n\n    \t\t            This method produces a JSON text from a JavaScript value.\n\n    \t\t            When an object value is found, if the object contains a toJSON\n    \t\t            method, its toJSON method will be called and the result will be\n    \t\t            stringified. A toJSON method does not serialize: it returns the\n    \t\t            value represented by the name/value pair that should be serialized,\n    \t\t            or undefined if nothing should be serialized. The toJSON method\n    \t\t            will be passed the key associated with the value, and this will be\n    \t\t            bound to the value\n\n    \t\t            For example, this would serialize Dates as ISO strings.\n\n    \t\t                Date.prototype.toJSON = function (key) {\n    \t\t                    function f(n) {\n    \t\t                        // Format integers to have at least two digits.\n    \t\t                        return n < 10 ? '0' + n : n;\n    \t\t                    }\n\n    \t\t                    return this.getUTCFullYear()   + '-' +\n    \t\t                         f(this.getUTCMonth() + 1) + '-' +\n    \t\t                         f(this.getUTCDate())      + 'T' +\n    \t\t                         f(this.getUTCHours())     + ':' +\n    \t\t                         f(this.getUTCMinutes())   + ':' +\n    \t\t                         f(this.getUTCSeconds())   + 'Z';\n    \t\t                };\n\n    \t\t            You can provide an optional replacer method. It will be passed the\n    \t\t            key and value of each member, with this bound to the containing\n    \t\t            object. The value that is returned from your method will be\n    \t\t            serialized. If your method returns undefined, then the member will\n    \t\t            be excluded from the serialization.\n\n    \t\t            If the replacer parameter is an array of strings, then it will be\n    \t\t            used to select the members to be serialized. It filters the results\n    \t\t            such that only members with keys listed in the replacer array are\n    \t\t            stringified.\n\n    \t\t            Values that do not have JSON representations, such as undefined or\n    \t\t            functions, will not be serialized. Such values in objects will be\n    \t\t            dropped; in arrays they will be replaced with null. You can use\n    \t\t            a replacer function to replace those with JSON values.\n    \t\t            JSON.stringify(undefined) returns undefined.\n\n    \t\t            The optional space parameter produces a stringification of the\n    \t\t            value that is filled with line breaks and indentation to make it\n    \t\t            easier to read.\n\n    \t\t            If the space parameter is a non-empty string, then that string will\n    \t\t            be used for indentation. If the space parameter is a number, then\n    \t\t            the indentation will be that many spaces.\n\n    \t\t            Example:\n\n    \t\t            text = JSON.stringify(['e', {pluribus: 'unum'}]);\n    \t\t            // text is '[\"e\",{\"pluribus\":\"unum\"}]'\n\n\n    \t\t            text = JSON.stringify(['e', {pluribus: 'unum'}], null, '\\t');\n    \t\t            // text is '[\\n\\t\"e\",\\n\\t{\\n\\t\\t\"pluribus\": \"unum\"\\n\\t}\\n]'\n\n    \t\t            text = JSON.stringify([new Date()], function (key, value) {\n    \t\t                return this[key] instanceof Date ?\n    \t\t                    'Date(' + this[key] + ')' : value;\n    \t\t            });\n    \t\t            // text is '[\"Date(---current time---)\"]'\n\n\n    \t\t        JSON.parse(text, reviver)\n    \t\t            This method parses a JSON text to produce an object or array.\n    \t\t            It can throw a SyntaxError exception.\n\n    \t\t            The optional reviver parameter is a function that can filter and\n    \t\t            transform the results. It receives each of the keys and values,\n    \t\t            and its return value is used instead of the original value.\n    \t\t            If it returns what it received, then the structure is not modified.\n    \t\t            If it returns undefined then the member is deleted.\n\n    \t\t            Example:\n\n    \t\t            // Parse the text. Values that look like ISO date strings will\n    \t\t            // be converted to Date objects.\n\n    \t\t            myData = JSON.parse(text, function (key, value) {\n    \t\t                var a;\n    \t\t                if (typeof value === 'string') {\n    \t\t                    a =\n    \t\t/^(\\d{4})-(\\d{2})-(\\d{2})T(\\d{2}):(\\d{2}):(\\d{2}(?:\\.\\d*)?)Z$/.exec(value);\n    \t\t                    if (a) {\n    \t\t                        return new Date(Date.UTC(+a[1], +a[2] - 1, +a[3], +a[4],\n    \t\t                            +a[5], +a[6]));\n    \t\t                    }\n    \t\t                }\n    \t\t                return value;\n    \t\t            });\n\n    \t\t            myData = JSON.parse('[\"Date(09/09/2001)\"]', function (key, value) {\n    \t\t                var d;\n    \t\t                if (typeof value === 'string' &&\n    \t\t                        value.slice(0, 5) === 'Date(' &&\n    \t\t                        value.slice(-1) === ')') {\n    \t\t                    d = new Date(value.slice(5, -1));\n    \t\t                    if (d) {\n    \t\t                        return d;\n    \t\t                    }\n    \t\t                }\n    \t\t                return value;\n    \t\t            });\n\n\n    \t\t    This is a reference implementation. You are free to copy, modify, or\n    \t\t    redistribute.\n    \t\t*/\n\n    \t\t/*jslint evil: true, regexp: true */\n\n    \t\t/*members \"\", \"\\b\", \"\\t\", \"\\n\", \"\\f\", \"\\r\", \"\\\"\", JSON, \"\\\\\", apply,\n    \t\t    call, charCodeAt, getUTCDate, getUTCFullYear, getUTCHours,\n    \t\t    getUTCMinutes, getUTCMonth, getUTCSeconds, hasOwnProperty, join,\n    \t\t    lastIndex, length, parse, prototype, push, replace, slice, stringify,\n    \t\t    test, toJSON, toString, valueOf\n    \t\t*/\n\n\n    \t\t// Create a JSON object only if one does not already exist. We create the\n    \t\t// methods in a closure to avoid creating global variables.\n\n    \t\tvar JSON = module.exports;\n\n    \t\t(function () {\n\n    \t\t    var escapable = /[\\\\\\\"\\x00-\\x1f\\x7f-\\x9f\\u00ad\\u0600-\\u0604\\u070f\\u17b4\\u17b5\\u200c-\\u200f\\u2028-\\u202f\\u2060-\\u206f\\ufeff\\ufff0-\\uffff]/g,\n    \t\t        gap,\n    \t\t        indent,\n    \t\t        meta = {    // table of character substitutions\n    \t\t            '\\b': '\\\\b',\n    \t\t            '\\t': '\\\\t',\n    \t\t            '\\n': '\\\\n',\n    \t\t            '\\f': '\\\\f',\n    \t\t            '\\r': '\\\\r',\n    \t\t            '\"' : '\\\\\"',\n    \t\t            '\\\\': '\\\\\\\\'\n    \t\t        },\n    \t\t        rep;\n\n\n    \t\t    function quote(string) {\n\n    \t\t// If the string contains no control characters, no quote characters, and no\n    \t\t// backslash characters, then we can safely slap some quotes around it.\n    \t\t// Otherwise we must also replace the offending characters with safe escape\n    \t\t// sequences.\n\n    \t\t        escapable.lastIndex = 0;\n    \t\t        return escapable.test(string) ? '\"' + string.replace(escapable, function (a) {\n    \t\t            var c = meta[a];\n    \t\t            return typeof c === 'string'\n    \t\t                ? c\n    \t\t                : '\\\\u' + ('0000' + a.charCodeAt(0).toString(16)).slice(-4);\n    \t\t        }) + '\"' : '\"' + string + '\"';\n    \t\t    }\n\n\n    \t\t    function str(key, holder) {\n\n    \t\t// Produce a string from holder[key].\n\n    \t\t        var i,          // The loop counter.\n    \t\t            k,          // The member key.\n    \t\t            v,          // The member value.\n    \t\t            length,\n    \t\t            mind = gap,\n    \t\t            partial,\n    \t\t            value = holder[key],\n    \t\t            isBigNumber = value != null && (value instanceof BigNumber || BigNumber.isBigNumber(value));\n\n    \t\t// If the value has a toJSON method, call it to obtain a replacement value.\n\n    \t\t        if (value && typeof value === 'object' &&\n    \t\t                typeof value.toJSON === 'function') {\n    \t\t            value = value.toJSON(key);\n    \t\t        }\n\n    \t\t// If we were called with a replacer function, then call the replacer to\n    \t\t// obtain a replacement value.\n\n    \t\t        if (typeof rep === 'function') {\n    \t\t            value = rep.call(holder, key, value);\n    \t\t        }\n\n    \t\t// What happens next depends on the value's type.\n\n    \t\t        switch (typeof value) {\n    \t\t        case 'string':\n    \t\t            if (isBigNumber) {\n    \t\t                return value;\n    \t\t            } else {\n    \t\t                return quote(value);\n    \t\t            }\n\n    \t\t        case 'number':\n\n    \t\t// JSON numbers must be finite. Encode non-finite numbers as null.\n\n    \t\t            return isFinite(value) ? String(value) : 'null';\n\n    \t\t        case 'boolean':\n    \t\t        case 'null':\n    \t\t        case 'bigint':\n\n    \t\t// If the value is a boolean or null, convert it to a string. Note:\n    \t\t// typeof null does not produce 'null'. The case is included here in\n    \t\t// the remote chance that this gets fixed someday.\n\n    \t\t            return String(value);\n\n    \t\t// If the type is 'object', we might be dealing with an object or an array or\n    \t\t// null.\n\n    \t\t        case 'object':\n\n    \t\t// Due to a specification blunder in ECMAScript, typeof null is 'object',\n    \t\t// so watch out for that case.\n\n    \t\t            if (!value) {\n    \t\t                return 'null';\n    \t\t            }\n\n    \t\t// Make an array to hold the partial results of stringifying this object value.\n\n    \t\t            gap += indent;\n    \t\t            partial = [];\n\n    \t\t// Is the value an array?\n\n    \t\t            if (Object.prototype.toString.apply(value) === '[object Array]') {\n\n    \t\t// The value is an array. Stringify every element. Use null as a placeholder\n    \t\t// for non-JSON values.\n\n    \t\t                length = value.length;\n    \t\t                for (i = 0; i < length; i += 1) {\n    \t\t                    partial[i] = str(i, value) || 'null';\n    \t\t                }\n\n    \t\t// Join all of the elements together, separated with commas, and wrap them in\n    \t\t// brackets.\n\n    \t\t                v = partial.length === 0\n    \t\t                    ? '[]'\n    \t\t                    : gap\n    \t\t                    ? '[\\n' + gap + partial.join(',\\n' + gap) + '\\n' + mind + ']'\n    \t\t                    : '[' + partial.join(',') + ']';\n    \t\t                gap = mind;\n    \t\t                return v;\n    \t\t            }\n\n    \t\t// If the replacer is an array, use it to select the members to be stringified.\n\n    \t\t            if (rep && typeof rep === 'object') {\n    \t\t                length = rep.length;\n    \t\t                for (i = 0; i < length; i += 1) {\n    \t\t                    if (typeof rep[i] === 'string') {\n    \t\t                        k = rep[i];\n    \t\t                        v = str(k, value);\n    \t\t                        if (v) {\n    \t\t                            partial.push(quote(k) + (gap ? ': ' : ':') + v);\n    \t\t                        }\n    \t\t                    }\n    \t\t                }\n    \t\t            } else {\n\n    \t\t// Otherwise, iterate through all of the keys in the object.\n\n    \t\t                Object.keys(value).forEach(function(k) {\n    \t\t                    var v = str(k, value);\n    \t\t                    if (v) {\n    \t\t                        partial.push(quote(k) + (gap ? ': ' : ':') + v);\n    \t\t                    }\n    \t\t                });\n    \t\t            }\n\n    \t\t// Join all of the member texts together, separated with commas,\n    \t\t// and wrap them in braces.\n\n    \t\t            v = partial.length === 0\n    \t\t                ? '{}'\n    \t\t                : gap\n    \t\t                ? '{\\n' + gap + partial.join(',\\n' + gap) + '\\n' + mind + '}'\n    \t\t                : '{' + partial.join(',') + '}';\n    \t\t            gap = mind;\n    \t\t            return v;\n    \t\t        }\n    \t\t    }\n\n    \t\t// If the JSON object does not yet have a stringify method, give it one.\n\n    \t\t    if (typeof JSON.stringify !== 'function') {\n    \t\t        JSON.stringify = function (value, replacer, space) {\n\n    \t\t// The stringify method takes a value and an optional replacer, and an optional\n    \t\t// space parameter, and returns a JSON text. The replacer can be a function\n    \t\t// that can replace values, or an array of strings that will select the keys.\n    \t\t// A default replacer method can be provided. Use of the space parameter can\n    \t\t// produce text that is more easily readable.\n\n    \t\t            var i;\n    \t\t            gap = '';\n    \t\t            indent = '';\n\n    \t\t// If the space parameter is a number, make an indent string containing that\n    \t\t// many spaces.\n\n    \t\t            if (typeof space === 'number') {\n    \t\t                for (i = 0; i < space; i += 1) {\n    \t\t                    indent += ' ';\n    \t\t                }\n\n    \t\t// If the space parameter is a string, it will be used as the indent string.\n\n    \t\t            } else if (typeof space === 'string') {\n    \t\t                indent = space;\n    \t\t            }\n\n    \t\t// If there is a replacer, it must be a function or an array.\n    \t\t// Otherwise, throw an error.\n\n    \t\t            rep = replacer;\n    \t\t            if (replacer && typeof replacer !== 'function' &&\n    \t\t                    (typeof replacer !== 'object' ||\n    \t\t                    typeof replacer.length !== 'number')) {\n    \t\t                throw new Error('JSON.stringify');\n    \t\t            }\n\n    \t\t// Make a fake root object containing our value under the key of ''.\n    \t\t// Return the result of stringifying the value.\n\n    \t\t            return str('', {'': value});\n    \t\t        };\n    \t\t    }\n    \t\t}()); \n    \t} (stringify));\n    \treturn stringify.exports;\n    }\n\n    var parse;\n    var hasRequiredParse;\n\n    function requireParse () {\n    \tif (hasRequiredParse) return parse;\n    \thasRequiredParse = 1;\n    \tvar BigNumber = null;\n\n    \t// regexpxs extracted from\n    \t// (c) BSD-3-Clause\n    \t// https://github.com/fastify/secure-json-parse/graphs/contributors and https://github.com/hapijs/bourne/graphs/contributors\n\n    \tconst suspectProtoRx = /(?:_|\\\\u005[Ff])(?:_|\\\\u005[Ff])(?:p|\\\\u0070)(?:r|\\\\u0072)(?:o|\\\\u006[Ff])(?:t|\\\\u0074)(?:o|\\\\u006[Ff])(?:_|\\\\u005[Ff])(?:_|\\\\u005[Ff])/;\n    \tconst suspectConstructorRx = /(?:c|\\\\u0063)(?:o|\\\\u006[Ff])(?:n|\\\\u006[Ee])(?:s|\\\\u0073)(?:t|\\\\u0074)(?:r|\\\\u0072)(?:u|\\\\u0075)(?:c|\\\\u0063)(?:t|\\\\u0074)(?:o|\\\\u006[Ff])(?:r|\\\\u0072)/;\n\n    \t/*\n    \t    json_parse.js\n    \t    2012-06-20\n\n    \t    Public Domain.\n\n    \t    NO WARRANTY EXPRESSED OR IMPLIED. USE AT YOUR OWN RISK.\n\n    \t    This file creates a json_parse function.\n    \t    During create you can (optionally) specify some behavioural switches\n\n    \t        require('json-bigint')(options)\n\n    \t            The optional options parameter holds switches that drive certain\n    \t            aspects of the parsing process:\n    \t            * options.strict = true will warn about duplicate-key usage in the json.\n    \t              The default (strict = false) will silently ignore those and overwrite\n    \t              values for keys that are in duplicate use.\n\n    \t    The resulting function follows this signature:\n    \t        json_parse(text, reviver)\n    \t            This method parses a JSON text to produce an object or array.\n    \t            It can throw a SyntaxError exception.\n\n    \t            The optional reviver parameter is a function that can filter and\n    \t            transform the results. It receives each of the keys and values,\n    \t            and its return value is used instead of the original value.\n    \t            If it returns what it received, then the structure is not modified.\n    \t            If it returns undefined then the member is deleted.\n\n    \t            Example:\n\n    \t            // Parse the text. Values that look like ISO date strings will\n    \t            // be converted to Date objects.\n\n    \t            myData = json_parse(text, function (key, value) {\n    \t                var a;\n    \t                if (typeof value === 'string') {\n    \t                    a =\n    \t/^(\\d{4})-(\\d{2})-(\\d{2})T(\\d{2}):(\\d{2}):(\\d{2}(?:\\.\\d*)?)Z$/.exec(value);\n    \t                    if (a) {\n    \t                        return new Date(Date.UTC(+a[1], +a[2] - 1, +a[3], +a[4],\n    \t                            +a[5], +a[6]));\n    \t                    }\n    \t                }\n    \t                return value;\n    \t            });\n\n    \t    This is a reference implementation. You are free to copy, modify, or\n    \t    redistribute.\n\n    \t    This code should be minified before deployment.\n    \t    See http://javascript.crockford.com/jsmin.html\n\n    \t    USE YOUR OWN COPY. IT IS EXTREMELY UNWISE TO LOAD CODE FROM SERVERS YOU DO\n    \t    NOT CONTROL.\n    \t*/\n\n    \t/*members \"\", \"\\\"\", \"\\/\", \"\\\\\", at, b, call, charAt, f, fromCharCode,\n    \t    hasOwnProperty, message, n, name, prototype, push, r, t, text\n    \t*/\n\n    \tvar json_parse = function (options) {\n\n    \t  // This is a function that can parse a JSON text, producing a JavaScript\n    \t  // data structure. It is a simple, recursive descent parser. It does not use\n    \t  // eval or regular expressions, so it can be used as a model for implementing\n    \t  // a JSON parser in other languages.\n\n    \t  // We are defining the function inside of another function to avoid creating\n    \t  // global variables.\n\n    \t  // Default options one can override by passing options to the parse()\n    \t  var _options = {\n    \t    strict: false, // not being strict means do not generate syntax errors for \"duplicate key\"\n    \t    storeAsString: false, // toggles whether the values should be stored as BigNumber (default) or a string\n    \t    alwaysParseAsBig: false, // toggles whether all numbers should be Big\n    \t    useNativeBigInt: false, // toggles whether to use native BigInt instead of bignumber.js\n    \t    protoAction: 'error',\n    \t    constructorAction: 'error',\n    \t  };\n\n    \t  // If there are options, then use them to override the default _options\n    \t  if (options !== undefined && options !== null) {\n    \t    if (options.strict === true) {\n    \t      _options.strict = true;\n    \t    }\n    \t    if (options.storeAsString === true) {\n    \t      _options.storeAsString = true;\n    \t    }\n    \t    _options.alwaysParseAsBig =\n    \t      options.alwaysParseAsBig === true ? options.alwaysParseAsBig : false;\n    \t    _options.useNativeBigInt =\n    \t      options.useNativeBigInt === true ? options.useNativeBigInt : false;\n\n    \t    if (typeof options.constructorAction !== 'undefined') {\n    \t      if (\n    \t        options.constructorAction === 'error' ||\n    \t        options.constructorAction === 'ignore' ||\n    \t        options.constructorAction === 'preserve'\n    \t      ) {\n    \t        _options.constructorAction = options.constructorAction;\n    \t      } else {\n    \t        throw new Error(\n    \t          `Incorrect value for constructorAction option, must be \"error\", \"ignore\" or undefined but passed ${options.constructorAction}`\n    \t        );\n    \t      }\n    \t    }\n\n    \t    if (typeof options.protoAction !== 'undefined') {\n    \t      if (\n    \t        options.protoAction === 'error' ||\n    \t        options.protoAction === 'ignore' ||\n    \t        options.protoAction === 'preserve'\n    \t      ) {\n    \t        _options.protoAction = options.protoAction;\n    \t      } else {\n    \t        throw new Error(\n    \t          `Incorrect value for protoAction option, must be \"error\", \"ignore\" or undefined but passed ${options.protoAction}`\n    \t        );\n    \t      }\n    \t    }\n    \t  }\n\n    \t  var at, // The index of the current character\n    \t    ch, // The current character\n    \t    escapee = {\n    \t      '\"': '\"',\n    \t      '\\\\': '\\\\',\n    \t      '/': '/',\n    \t      b: '\\b',\n    \t      f: '\\f',\n    \t      n: '\\n',\n    \t      r: '\\r',\n    \t      t: '\\t',\n    \t    },\n    \t    text,\n    \t    error = function (m) {\n    \t      // Call error when something is wrong.\n\n    \t      throw {\n    \t        name: 'SyntaxError',\n    \t        message: m,\n    \t        at: at,\n    \t        text: text,\n    \t      };\n    \t    },\n    \t    next = function (c) {\n    \t      // If a c parameter is provided, verify that it matches the current character.\n\n    \t      if (c && c !== ch) {\n    \t        error(\"Expected '\" + c + \"' instead of '\" + ch + \"'\");\n    \t      }\n\n    \t      // Get the next character. When there are no more characters,\n    \t      // return the empty string.\n\n    \t      ch = text.charAt(at);\n    \t      at += 1;\n    \t      return ch;\n    \t    },\n    \t    number = function () {\n    \t      // Parse a number value.\n\n    \t      var number,\n    \t        string = '';\n\n    \t      if (ch === '-') {\n    \t        string = '-';\n    \t        next('-');\n    \t      }\n    \t      while (ch >= '0' && ch <= '9') {\n    \t        string += ch;\n    \t        next();\n    \t      }\n    \t      if (ch === '.') {\n    \t        string += '.';\n    \t        while (next() && ch >= '0' && ch <= '9') {\n    \t          string += ch;\n    \t        }\n    \t      }\n    \t      if (ch === 'e' || ch === 'E') {\n    \t        string += ch;\n    \t        next();\n    \t        if (ch === '-' || ch === '+') {\n    \t          string += ch;\n    \t          next();\n    \t        }\n    \t        while (ch >= '0' && ch <= '9') {\n    \t          string += ch;\n    \t          next();\n    \t        }\n    \t      }\n    \t      number = +string;\n    \t      if (!isFinite(number)) {\n    \t        error('Bad number');\n    \t      } else {\n    \t        if (BigNumber == null) BigNumber = requireBignumber();\n    \t        //if (number > 9007199254740992 || number < -9007199254740992)\n    \t        // Bignumber has stricter check: everything with length > 15 digits disallowed\n    \t        if (string.length > 15)\n    \t          return _options.storeAsString\n    \t            ? string\n    \t            : _options.useNativeBigInt\n    \t            ? BigInt(string)\n    \t            : new BigNumber(string);\n    \t        else\n    \t          return !_options.alwaysParseAsBig\n    \t            ? number\n    \t            : _options.useNativeBigInt\n    \t            ? BigInt(number)\n    \t            : new BigNumber(number);\n    \t      }\n    \t    },\n    \t    string = function () {\n    \t      // Parse a string value.\n\n    \t      var hex,\n    \t        i,\n    \t        string = '',\n    \t        uffff;\n\n    \t      // When parsing for string values, we must look for \" and \\ characters.\n\n    \t      if (ch === '\"') {\n    \t        var startAt = at;\n    \t        while (next()) {\n    \t          if (ch === '\"') {\n    \t            if (at - 1 > startAt) string += text.substring(startAt, at - 1);\n    \t            next();\n    \t            return string;\n    \t          }\n    \t          if (ch === '\\\\') {\n    \t            if (at - 1 > startAt) string += text.substring(startAt, at - 1);\n    \t            next();\n    \t            if (ch === 'u') {\n    \t              uffff = 0;\n    \t              for (i = 0; i < 4; i += 1) {\n    \t                hex = parseInt(next(), 16);\n    \t                if (!isFinite(hex)) {\n    \t                  break;\n    \t                }\n    \t                uffff = uffff * 16 + hex;\n    \t              }\n    \t              string += String.fromCharCode(uffff);\n    \t            } else if (typeof escapee[ch] === 'string') {\n    \t              string += escapee[ch];\n    \t            } else {\n    \t              break;\n    \t            }\n    \t            startAt = at;\n    \t          }\n    \t        }\n    \t      }\n    \t      error('Bad string');\n    \t    },\n    \t    white = function () {\n    \t      // Skip whitespace.\n\n    \t      while (ch && ch <= ' ') {\n    \t        next();\n    \t      }\n    \t    },\n    \t    word = function () {\n    \t      // true, false, or null.\n\n    \t      switch (ch) {\n    \t        case 't':\n    \t          next('t');\n    \t          next('r');\n    \t          next('u');\n    \t          next('e');\n    \t          return true;\n    \t        case 'f':\n    \t          next('f');\n    \t          next('a');\n    \t          next('l');\n    \t          next('s');\n    \t          next('e');\n    \t          return false;\n    \t        case 'n':\n    \t          next('n');\n    \t          next('u');\n    \t          next('l');\n    \t          next('l');\n    \t          return null;\n    \t      }\n    \t      error(\"Unexpected '\" + ch + \"'\");\n    \t    },\n    \t    value, // Place holder for the value function.\n    \t    array = function () {\n    \t      // Parse an array value.\n\n    \t      var array = [];\n\n    \t      if (ch === '[') {\n    \t        next('[');\n    \t        white();\n    \t        if (ch === ']') {\n    \t          next(']');\n    \t          return array; // empty array\n    \t        }\n    \t        while (ch) {\n    \t          array.push(value());\n    \t          white();\n    \t          if (ch === ']') {\n    \t            next(']');\n    \t            return array;\n    \t          }\n    \t          next(',');\n    \t          white();\n    \t        }\n    \t      }\n    \t      error('Bad array');\n    \t    },\n    \t    object = function () {\n    \t      // Parse an object value.\n\n    \t      var key,\n    \t        object = Object.create(null);\n\n    \t      if (ch === '{') {\n    \t        next('{');\n    \t        white();\n    \t        if (ch === '}') {\n    \t          next('}');\n    \t          return object; // empty object\n    \t        }\n    \t        while (ch) {\n    \t          key = string();\n    \t          white();\n    \t          next(':');\n    \t          if (\n    \t            _options.strict === true &&\n    \t            Object.hasOwnProperty.call(object, key)\n    \t          ) {\n    \t            error('Duplicate key \"' + key + '\"');\n    \t          }\n\n    \t          if (suspectProtoRx.test(key) === true) {\n    \t            if (_options.protoAction === 'error') {\n    \t              error('Object contains forbidden prototype property');\n    \t            } else if (_options.protoAction === 'ignore') {\n    \t              value();\n    \t            } else {\n    \t              object[key] = value();\n    \t            }\n    \t          } else if (suspectConstructorRx.test(key) === true) {\n    \t            if (_options.constructorAction === 'error') {\n    \t              error('Object contains forbidden constructor property');\n    \t            } else if (_options.constructorAction === 'ignore') {\n    \t              value();\n    \t            } else {\n    \t              object[key] = value();\n    \t            }\n    \t          } else {\n    \t            object[key] = value();\n    \t          }\n\n    \t          white();\n    \t          if (ch === '}') {\n    \t            next('}');\n    \t            return object;\n    \t          }\n    \t          next(',');\n    \t          white();\n    \t        }\n    \t      }\n    \t      error('Bad object');\n    \t    };\n\n    \t  value = function () {\n    \t    // Parse a JSON value. It could be an object, an array, a string, a number,\n    \t    // or a word.\n\n    \t    white();\n    \t    switch (ch) {\n    \t      case '{':\n    \t        return object();\n    \t      case '[':\n    \t        return array();\n    \t      case '\"':\n    \t        return string();\n    \t      case '-':\n    \t        return number();\n    \t      default:\n    \t        return ch >= '0' && ch <= '9' ? number() : word();\n    \t    }\n    \t  };\n\n    \t  // Return the json_parse function. It will have access to all of the above\n    \t  // functions and variables.\n\n    \t  return function (source, reviver) {\n    \t    var result;\n\n    \t    text = source + '';\n    \t    at = 0;\n    \t    ch = ' ';\n    \t    result = value();\n    \t    white();\n    \t    if (ch) {\n    \t      error('Syntax error');\n    \t    }\n\n    \t    // If there is a reviver function, we recursively walk the new structure,\n    \t    // passing each name/value pair to the reviver function for possible\n    \t    // transformation, starting with a temporary root object that holds the result\n    \t    // in an empty key. If there is not a reviver function, we simply return the\n    \t    // result.\n\n    \t    return typeof reviver === 'function'\n    \t      ? (function walk(holder, key) {\n    \t          var v,\n    \t            value = holder[key];\n    \t          if (value && typeof value === 'object') {\n    \t            Object.keys(value).forEach(function (k) {\n    \t              v = walk(value, k);\n    \t              if (v !== undefined) {\n    \t                value[k] = v;\n    \t              } else {\n    \t                delete value[k];\n    \t              }\n    \t            });\n    \t          }\n    \t          return reviver.call(holder, key, value);\n    \t        })({ '': result }, '')\n    \t      : result;\n    \t  };\n    \t};\n\n    \tparse = json_parse;\n    \treturn parse;\n    }\n\n    var hasRequiredJsonBigint;\n\n    function requireJsonBigint () {\n    \tif (hasRequiredJsonBigint) return jsonBigint.exports;\n    \thasRequiredJsonBigint = 1;\n    \tvar json_stringify = requireStringify().stringify;\n    \tvar json_parse     = requireParse();\n\n    \tjsonBigint.exports = function(options) {\n    \t    return  {\n    \t        parse: json_parse(options),\n    \t        stringify: json_stringify\n    \t    }\n    \t};\n    \t//create the default method members with no options applied for backwards compatibility\n    \tjsonBigint.exports.parse = json_parse();\n    \tjsonBigint.exports.stringify = json_stringify;\n    \treturn jsonBigint.exports;\n    }\n\n    var jsonBigintExports = requireJsonBigint();\n    var JSONbigModule = /*@__PURE__*/getDefaultExportFromCjs(jsonBigintExports);\n\n    const JSONbig$1 = JSONbigModule({ useNativeBigInt: true });\n    /**\n     * Helper class to generate query strings.\n     */\n    class Query {\n        /**\n         * Constructor for Query class.\n         *\n         * @param {string} method\n         * @param {AttributesTypes} attribute\n         * @param {QueryTypes} values\n         */\n        constructor(method, attribute, values) {\n            this.method = method;\n            this.attribute = attribute;\n            if (values !== undefined) {\n                if (Array.isArray(values)) {\n                    this.values = values;\n                }\n                else {\n                    this.values = [values];\n                }\n            }\n        }\n        /**\n         * Convert the query object to a JSON string.\n         *\n         * @returns {string}\n         */\n        toString() {\n            return JSONbig$1.stringify({\n                method: this.method,\n                attribute: this.attribute,\n                values: this.values,\n            });\n        }\n    }\n    /**\n     * Filter resources where attribute is equal to value.\n     *\n     * @param {string} attribute\n     * @param {QueryTypes} value\n     * @returns {string}\n     */\n    Query.equal = (attribute, value) => new Query(\"equal\", attribute, value).toString();\n    /**\n     * Filter resources where attribute is not equal to value.\n     *\n     * @param {string} attribute\n     * @param {QueryTypes} value\n     * @returns {string}\n     */\n    Query.notEqual = (attribute, value) => new Query(\"notEqual\", attribute, value).toString();\n    /**\n     * Filter resources where attribute matches a regular expression pattern.\n     *\n     * @param {string} attribute The attribute to filter on.\n     * @param {string} pattern The regular expression pattern to match.\n     * @returns {string}\n     */\n    Query.regex = (attribute, pattern) => new Query(\"regex\", attribute, pattern).toString();\n    /**\n     * Filter resources where attribute is less than value.\n     *\n     * @param {string} attribute\n     * @param {QueryTypes} value\n     * @returns {string}\n     */\n    Query.lessThan = (attribute, value) => new Query(\"lessThan\", attribute, value).toString();\n    /**\n     * Filter resources where attribute is less than or equal to value.\n     *\n     * @param {string} attribute\n     * @param {QueryTypes} value\n     * @returns {string}\n     */\n    Query.lessThanEqual = (attribute, value) => new Query(\"lessThanEqual\", attribute, value).toString();\n    /**\n     * Filter resources where attribute is greater than value.\n     *\n     * @param {string} attribute\n     * @param {QueryTypes} value\n     * @returns {string}\n     */\n    Query.greaterThan = (attribute, value) => new Query(\"greaterThan\", attribute, value).toString();\n    /**\n     * Filter resources where attribute is greater than or equal to value.\n     *\n     * @param {string} attribute\n     * @param {QueryTypes} value\n     * @returns {string}\n     */\n    Query.greaterThanEqual = (attribute, value) => new Query(\"greaterThanEqual\", attribute, value).toString();\n    /**\n     * Filter resources where attribute is null.\n     *\n     * @param {string} attribute\n     * @returns {string}\n     */\n    Query.isNull = (attribute) => new Query(\"isNull\", attribute).toString();\n    /**\n     * Filter resources where attribute is not null.\n     *\n     * @param {string} attribute\n     * @returns {string}\n     */\n    Query.isNotNull = (attribute) => new Query(\"isNotNull\", attribute).toString();\n    /**\n     * Filter resources where the specified attributes exist.\n     *\n     * @param {string[]} attributes The list of attributes that must exist.\n     * @returns {string}\n     */\n    Query.exists = (attributes) => new Query(\"exists\", undefined, attributes).toString();\n    /**\n     * Filter resources where the specified attributes do not exist.\n     *\n     * @param {string[]} attributes The list of attributes that must not exist.\n     * @returns {string}\n     */\n    Query.notExists = (attributes) => new Query(\"notExists\", undefined, attributes).toString();\n    /**\n     * Filter resources where attribute is between start and end (inclusive).\n     *\n     * @param {string} attribute\n     * @param {string | number | bigint} start\n     * @param {string | number | bigint} end\n     * @returns {string}\n     */\n    Query.between = (attribute, start, end) => new Query(\"between\", attribute, [start, end]).toString();\n    /**\n     * Filter resources where attribute starts with value.\n     *\n     * @param {string} attribute\n     * @param {string} value\n     * @returns {string}\n     */\n    Query.startsWith = (attribute, value) => new Query(\"startsWith\", attribute, value).toString();\n    /**\n     * Filter resources where attribute ends with value.\n     *\n     * @param {string} attribute\n     * @param {string} value\n     * @returns {string}\n     */\n    Query.endsWith = (attribute, value) => new Query(\"endsWith\", attribute, value).toString();\n    /**\n     * Specify which attributes should be returned by the API call.\n     *\n     * @param {string[]} attributes\n     * @returns {string}\n     */\n    Query.select = (attributes) => new Query(\"select\", undefined, attributes).toString();\n    /**\n     * Filter resources by searching attribute for value.\n     * A fulltext index on attribute is required for this query to work.\n     *\n     * @param {string} attribute\n     * @param {string} value\n     * @returns {string}\n     */\n    Query.search = (attribute, value) => new Query(\"search\", attribute, value).toString();\n    /**\n     * Sort results by attribute descending.\n     *\n     * @param {string} attribute\n     * @returns {string}\n     */\n    Query.orderDesc = (attribute) => new Query(\"orderDesc\", attribute).toString();\n    /**\n     * Sort results by attribute ascending.\n     *\n     * @param {string} attribute\n     * @returns {string}\n     */\n    Query.orderAsc = (attribute) => new Query(\"orderAsc\", attribute).toString();\n    /**\n     * Sort results randomly.\n     *\n     * @returns {string}\n     */\n    Query.orderRandom = () => new Query(\"orderRandom\").toString();\n    /**\n     * Return results after documentId.\n     *\n     * @param {string} documentId\n     * @returns {string}\n     */\n    Query.cursorAfter = (documentId) => new Query(\"cursorAfter\", undefined, documentId).toString();\n    /**\n     * Return results before documentId.\n     *\n     * @param {string} documentId\n     * @returns {string}\n     */\n    Query.cursorBefore = (documentId) => new Query(\"cursorBefore\", undefined, documentId).toString();\n    /**\n     * Return only limit results.\n     *\n     * @param {number} limit\n     * @returns {string}\n     */\n    Query.limit = (limit) => new Query(\"limit\", undefined, limit).toString();\n    /**\n     * Filter resources by skipping the first offset results.\n     *\n     * @param {number} offset\n     * @returns {string}\n     */\n    Query.offset = (offset) => new Query(\"offset\", undefined, offset).toString();\n    /**\n     * Filter resources where attribute contains the specified value.\n     * For string attributes, checks if the string contains the substring.\n     *\n     * Note: For array attributes, use {@link containsAny} or {@link containsAll} instead.\n     * @param {string} attribute\n     * @param {string | string[]} value\n     * @returns {string}\n     */\n    Query.contains = (attribute, value) => new Query(\"contains\", attribute, value).toString();\n    /**\n     * Filter resources where attribute contains ANY of the specified values.\n     * For array and relationship attributes, matches documents where the attribute\n     * contains at least one of the given values.\n     *\n     * @param {string} attribute\n     * @param {any[]} value\n     * @returns {string}\n     */\n    Query.containsAny = (attribute, value) => new Query(\"containsAny\", attribute, value).toString();\n    /**\n     * Filter resources where attribute contains ALL of the specified values.\n     * For array and relationship attributes, matches documents where the attribute\n     * contains every one of the given values.\n     *\n     * @param {string} attribute\n     * @param {any[]} value\n     * @returns {string}\n     */\n    Query.containsAll = (attribute, value) => new Query(\"containsAll\", attribute, value).toString();\n    /**\n     * Filter resources where attribute does not contain the specified value.\n     *\n     * @param {string} attribute\n     * @param {string | any[]} value\n     * @returns {string}\n     */\n    Query.notContains = (attribute, value) => new Query(\"notContains\", attribute, value).toString();\n    /**\n     * Filter resources by searching attribute for value (inverse of search).\n     * A fulltext index on attribute is required for this query to work.\n     *\n     * @param {string} attribute\n     * @param {string} value\n     * @returns {string}\n     */\n    Query.notSearch = (attribute, value) => new Query(\"notSearch\", attribute, value).toString();\n    /**\n     * Filter resources where attribute is not between start and end (exclusive).\n     *\n     * @param {string} attribute\n     * @param {string | number | bigint} start\n     * @param {string | number | bigint} end\n     * @returns {string}\n     */\n    Query.notBetween = (attribute, start, end) => new Query(\"notBetween\", attribute, [start, end]).toString();\n    /**\n     * Filter resources where attribute does not start with value.\n     *\n     * @param {string} attribute\n     * @param {string} value\n     * @returns {string}\n     */\n    Query.notStartsWith = (attribute, value) => new Query(\"notStartsWith\", attribute, value).toString();\n    /**\n     * Filter resources where attribute does not end with value.\n     *\n     * @param {string} attribute\n     * @param {string} value\n     * @returns {string}\n     */\n    Query.notEndsWith = (attribute, value) => new Query(\"notEndsWith\", attribute, value).toString();\n    /**\n     * Filter resources where document was created before date.\n     *\n     * @param {string} value\n     * @returns {string}\n     */\n    Query.createdBefore = (value) => Query.lessThan(\"$createdAt\", value);\n    /**\n     * Filter resources where document was created after date.\n     *\n     * @param {string} value\n     * @returns {string}\n     */\n    Query.createdAfter = (value) => Query.greaterThan(\"$createdAt\", value);\n    /**\n     * Filter resources where document was created between dates.\n     *\n     * @param {string} start\n     * @param {string} end\n     * @returns {string}\n     */\n    Query.createdBetween = (start, end) => Query.between(\"$createdAt\", start, end);\n    /**\n     * Filter resources where document was updated before date.\n     *\n     * @param {string} value\n     * @returns {string}\n     */\n    Query.updatedBefore = (value) => Query.lessThan(\"$updatedAt\", value);\n    /**\n     * Filter resources where document was updated after date.\n     *\n     * @param {string} value\n     * @returns {string}\n     */\n    Query.updatedAfter = (value) => Query.greaterThan(\"$updatedAt\", value);\n    /**\n     * Filter resources where document was updated between dates.\n     *\n     * @param {string} start\n     * @param {string} end\n     * @returns {string}\n     */\n    Query.updatedBetween = (start, end) => Query.between(\"$updatedAt\", start, end);\n    /**\n     * Combine multiple queries using logical OR operator.\n     *\n     * @param {string[]} queries\n     * @returns {string}\n     */\n    Query.or = (queries) => new Query(\"or\", undefined, queries.map((query) => JSONbig$1.parse(query))).toString();\n    /**\n     * Combine multiple queries using logical AND operator.\n     *\n     * @param {string[]} queries\n     * @returns {string}\n     */\n    Query.and = (queries) => new Query(\"and\", undefined, queries.map((query) => JSONbig$1.parse(query))).toString();\n    /**\n     * Filter array elements where at least one element matches all the specified queries.\n     *\n     * @param {string} attribute The attribute containing the array to filter on.\n     * @param {string[]} queries The list of query strings to match against array elements.\n     * @returns {string}\n     */\n    Query.elemMatch = (attribute, queries) => new Query(\"elemMatch\", attribute, queries.map((query) => JSONbig$1.parse(query))).toString();\n    /**\n     * Filter resources where attribute is at a specific distance from the given coordinates.\n     *\n     * @param {string} attribute\n     * @param {any[]} values\n     * @param {number} distance\n     * @param {boolean} meters\n     * @returns {string}\n     */\n    Query.distanceEqual = (attribute, values, distance, meters = true) => new Query(\"distanceEqual\", attribute, [[values, distance, meters]]).toString();\n    /**\n     * Filter resources where attribute is not at a specific distance from the given coordinates.\n     *\n     * @param {string} attribute\n     * @param {any[]} values\n     * @param {number} distance\n     * @param {boolean} meters\n     * @returns {string}\n     */\n    Query.distanceNotEqual = (attribute, values, distance, meters = true) => new Query(\"distanceNotEqual\", attribute, [[values, distance, meters]]).toString();\n    /**\n     * Filter resources where attribute is at a distance greater than the specified value from the given coordinates.\n     *\n     * @param {string} attribute\n     * @param {any[]} values\n     * @param {number} distance\n     * @param {boolean} meters\n     * @returns {string}\n     */\n    Query.distanceGreaterThan = (attribute, values, distance, meters = true) => new Query(\"distanceGreaterThan\", attribute, [[values, distance, meters]]).toString();\n    /**\n     * Filter resources where attribute is at a distance less than the specified value from the given coordinates.\n     *\n     * @param {string} attribute\n     * @param {any[]} values\n     * @param {number} distance\n     * @param {boolean} meters\n     * @returns {string}\n     */\n    Query.distanceLessThan = (attribute, values, distance, meters = true) => new Query(\"distanceLessThan\", attribute, [[values, distance, meters]]).toString();\n    /**\n     * Filter resources using vector dot product similarity.\n     *\n     * @param {string} attribute\n     * @param {number[]} vector\n     * @returns {string}\n     */\n    Query.vectorDot = (attribute, vector) => new Query(\"vectorDot\", attribute, [vector]).toString();\n    /**\n     * Filter resources using vector cosine similarity.\n     *\n     * @param {string} attribute\n     * @param {number[]} vector\n     * @returns {string}\n     */\n    Query.vectorCosine = (attribute, vector) => new Query(\"vectorCosine\", attribute, [vector]).toString();\n    /**\n     * Filter resources using vector Euclidean distance.\n     *\n     * @param {string} attribute\n     * @param {number[]} vector\n     * @returns {string}\n     */\n    Query.vectorEuclidean = (attribute, vector) => new Query(\"vectorEuclidean\", attribute, [vector]).toString();\n    /**\n     * Filter resources where attribute intersects with the given geometry.\n     *\n     * @param {string} attribute\n     * @param {any[]} values\n     * @returns {string}\n     */\n    Query.intersects = (attribute, values) => new Query(\"intersects\", attribute, [values]).toString();\n    /**\n     * Filter resources where attribute does not intersect with the given geometry.\n     *\n     * @param {string} attribute\n     * @param {any[]} values\n     * @returns {string}\n     */\n    Query.notIntersects = (attribute, values) => new Query(\"notIntersects\", attribute, [values]).toString();\n    /**\n     * Filter resources where attribute crosses the given geometry.\n     *\n     * @param {string} attribute\n     * @param {any[]} values\n     * @returns {string}\n     */\n    Query.crosses = (attribute, values) => new Query(\"crosses\", attribute, [values]).toString();\n    /**\n     * Filter resources where attribute does not cross the given geometry.\n     *\n     * @param {string} attribute\n     * @param {any[]} values\n     * @returns {string}\n     */\n    Query.notCrosses = (attribute, values) => new Query(\"notCrosses\", attribute, [values]).toString();\n    /**\n     * Filter resources where attribute overlaps with the given geometry.\n     *\n     * @param {string} attribute\n     * @param {any[]} values\n     * @returns {string}\n     */\n    Query.overlaps = (attribute, values) => new Query(\"overlaps\", attribute, [values]).toString();\n    /**\n     * Filter resources where attribute does not overlap with the given geometry.\n     *\n     * @param {string} attribute\n     * @param {any[]} values\n     * @returns {string}\n     */\n    Query.notOverlaps = (attribute, values) => new Query(\"notOverlaps\", attribute, [values]).toString();\n    /**\n     * Filter resources where attribute touches the given geometry.\n     *\n     * @param {string} attribute\n     * @param {any[]} values\n     * @returns {string}\n     */\n    Query.touches = (attribute, values) => new Query(\"touches\", attribute, [values]).toString();\n    /**\n     * Filter resources where attribute does not touch the given geometry.\n     *\n     * @param {string} attribute\n     * @param {any[]} values\n     * @returns {string}\n     */\n    Query.notTouches = (attribute, values) => new Query(\"notTouches\", attribute, [values]).toString();\n\n    const JSONbigParser = JSONbigModule({ storeAsString: false });\n    const JSONbigSerializer = JSONbigModule({ useNativeBigInt: true });\n    const MAX_SAFE = BigInt(Number.MAX_SAFE_INTEGER);\n    const MIN_SAFE = BigInt(Number.MIN_SAFE_INTEGER);\n    const MAX_INT64 = BigInt('9223372036854775807');\n    const MIN_INT64 = BigInt('-9223372036854775808');\n    function isBigNumber(value) {\n        return value !== null\n            && typeof value === 'object'\n            && value._isBigNumber === true\n            && typeof value.isInteger === 'function'\n            && typeof value.toFixed === 'function'\n            && typeof value.toNumber === 'function';\n    }\n    function reviver(_key, value) {\n        if (isBigNumber(value)) {\n            if (value.isInteger()) {\n                const str = value.toFixed();\n                const bi = BigInt(str);\n                if (bi >= MIN_SAFE && bi <= MAX_SAFE) {\n                    return Number(str);\n                }\n                if (bi >= MIN_INT64 && bi <= MAX_INT64) {\n                    return bi;\n                }\n                return value.toNumber();\n            }\n            return value.toNumber();\n        }\n        return value;\n    }\n    const JSONbig = {\n        parse: (text) => JSONbigParser.parse(text, reviver),\n        stringify: JSONbigSerializer.stringify\n    };\n    /**\n     * Exception thrown by the  package\n     */\n    class AppwriteException extends Error {\n        /**\n         * Initializes a Appwrite Exception.\n         *\n         * @param {string} message - The error message.\n         * @param {number} code - The error code. Default is 0.\n         * @param {string} type - The error type. Default is an empty string.\n         * @param {string} response - The response string. Default is an empty string.\n         */\n        constructor(message, code = 0, type = '', response = '') {\n            super(message);\n            this.name = 'AppwriteException';\n            this.message = message;\n            this.code = code;\n            this.type = type;\n            this.response = response;\n        }\n    }\n    /**\n     * Client that handles requests to Appwrite\n     */\n    class Client {\n        constructor() {\n            /**\n             * Holds configuration such as project.\n             */\n            this.config = {\n                endpoint: 'https://cloud.appwrite.io/v1',\n                endpointRealtime: '',\n                project: '',\n                jwt: '',\n                bearer: '',\n                locale: '',\n                session: '',\n                devkey: '',\n                cookie: '',\n                impersonateuserid: '',\n                impersonateuseremail: '',\n                impersonateuserphone: '',\n            };\n            /**\n             * Custom headers for API requests.\n             */\n            this.headers = {\n                'x-sdk-name': 'Web',\n                'x-sdk-platform': 'client',\n                'x-sdk-language': 'web',\n                'x-sdk-version': '26.2.0',\n                'X-Appwrite-Response-Format': '1.9.5',\n            };\n            this.realtime = {\n                socket: undefined,\n                timeout: undefined,\n                heartbeat: undefined,\n                url: '',\n                channels: new Set(),\n                subscriptions: new Map(),\n                pendingSubscribes: new Map(),\n                reconnect: true,\n                reconnectAttempts: 0,\n                lastMessage: undefined,\n                connect: () => {\n                    clearTimeout(this.realtime.timeout);\n                    this.realtime.timeout = window === null || window === void 0 ? void 0 : window.setTimeout(() => {\n                        this.realtime.createSocket();\n                    }, 50);\n                },\n                getTimeout: () => {\n                    switch (true) {\n                        case this.realtime.reconnectAttempts < 5:\n                            return 1000;\n                        case this.realtime.reconnectAttempts < 15:\n                            return 5000;\n                        case this.realtime.reconnectAttempts < 100:\n                            return 10000;\n                        default:\n                            return 60000;\n                    }\n                },\n                createHeartbeat: () => {\n                    if (this.realtime.heartbeat) {\n                        clearTimeout(this.realtime.heartbeat);\n                    }\n                    this.realtime.heartbeat = window === null || window === void 0 ? void 0 : window.setInterval(() => {\n                        var _a;\n                        (_a = this.realtime.socket) === null || _a === void 0 ? void 0 : _a.send(JSONbig.stringify({\n                            type: 'ping'\n                        }));\n                    }, 20000);\n                },\n                createSocket: () => {\n                    var _a, _b, _c, _d, _e;\n                    if (this.realtime.subscriptions.size < 1) {\n                        this.realtime.reconnect = false;\n                        (_a = this.realtime.socket) === null || _a === void 0 ? void 0 : _a.close();\n                        return;\n                    }\n                    const encodedProject = encodeURIComponent((_b = this.config.project) !== null && _b !== void 0 ? _b : '');\n                    // URL carries only the project; channels/queries are sent via subscribe message.\n                    let queryParams = 'project=' + encodedProject;\n                    if (this.config.jwt) {\n                        queryParams += '&jwt=' + encodeURIComponent(this.config.jwt);\n                    }\n                    const url = this.config.endpointRealtime + '/realtime?' + queryParams;\n                    if (url !== this.realtime.url || // Check if URL is present\n                        !this.realtime.socket || // Check if WebSocket has not been created\n                        ((_c = this.realtime.socket) === null || _c === void 0 ? void 0 : _c.readyState) > WebSocket.OPEN // Check if WebSocket is CLOSING (3) or CLOSED (4)\n                    ) {\n                        if (this.realtime.socket &&\n                            ((_d = this.realtime.socket) === null || _d === void 0 ? void 0 : _d.readyState) < WebSocket.CLOSING // Close WebSocket if it is CONNECTING (0) or OPEN (1)\n                        ) {\n                            this.realtime.reconnect = false;\n                            this.realtime.socket.close();\n                        }\n                        this.realtime.url = url;\n                        this.realtime.socket = new WebSocket(url);\n                        this.realtime.socket.addEventListener('message', this.realtime.onMessage);\n                        this.realtime.socket.addEventListener('open', _event => {\n                            this.realtime.reconnectAttempts = 0;\n                            this.realtime.createHeartbeat();\n                        });\n                        this.realtime.socket.addEventListener('close', event => {\n                            var _a, _b, _c;\n                            if (!this.realtime.reconnect ||\n                                (((_b = (_a = this.realtime) === null || _a === void 0 ? void 0 : _a.lastMessage) === null || _b === void 0 ? void 0 : _b.type) === 'error' && // Check if last message was of type error\n                                    ((_c = this.realtime) === null || _c === void 0 ? void 0 : _c.lastMessage.data).code === 1008 // Check for policy violation 1008\n                                )) {\n                                this.realtime.reconnect = true;\n                                return;\n                            }\n                            const timeout = this.realtime.getTimeout();\n                            console.error(`Realtime got disconnected. Reconnect will be attempted in ${timeout / 1000} seconds.`, event.reason);\n                            setTimeout(() => {\n                                this.realtime.reconnectAttempts++;\n                                this.realtime.createSocket();\n                            }, timeout);\n                        });\n                    }\n                    else if (((_e = this.realtime.socket) === null || _e === void 0 ? void 0 : _e.readyState) === WebSocket.OPEN) {\n                        this.realtime.sendPendingSubscribes();\n                    }\n                },\n                sendPendingSubscribes: () => {\n                    if (!this.realtime.socket || this.realtime.socket.readyState !== WebSocket.OPEN) {\n                        return;\n                    }\n                    if (this.realtime.pendingSubscribes.size < 1) {\n                        return;\n                    }\n                    const rows = Array.from(this.realtime.pendingSubscribes.values());\n                    this.realtime.pendingSubscribes.clear();\n                    this.realtime.socket.send(JSONbig.stringify({\n                        type: 'subscribe',\n                        data: rows\n                    }));\n                },\n                onMessage: (event) => {\n                    var _a, _b;\n                    try {\n                        const message = JSONbig.parse(event.data);\n                        this.realtime.lastMessage = message;\n                        switch (message.type) {\n                            case 'connected': {\n                                const messageData = message.data;\n                                let session = this.config.session;\n                                if (!session) {\n                                    const cookie = JSONbig.parse((_a = window.localStorage.getItem('cookieFallback')) !== null && _a !== void 0 ? _a : '{}');\n                                    session = cookie === null || cookie === void 0 ? void 0 : cookie[`a_session_${this.config.project}`];\n                                }\n                                if (session && !(messageData === null || messageData === void 0 ? void 0 : messageData.user)) {\n                                    (_b = this.realtime.socket) === null || _b === void 0 ? void 0 : _b.send(JSONbig.stringify({\n                                        type: 'authentication',\n                                        data: {\n                                            session\n                                        }\n                                    }));\n                                }\n                                this.realtime.subscriptions.forEach((sub, subscriptionId) => {\n                                    var _a;\n                                    this.realtime.pendingSubscribes.set(subscriptionId, {\n                                        subscriptionId,\n                                        channels: sub.channels,\n                                        queries: (_a = sub.queries) !== null && _a !== void 0 ? _a : []\n                                    });\n                                });\n                                this.realtime.sendPendingSubscribes();\n                                break;\n                            }\n                            case 'response':\n                                // The SDK generates subscriptionIds client-side and sends them on every\n                                // subscribe/unsubscribe, so subscribe/unsubscribe acks carry no state\n                                // the SDK needs to reconcile.\n                                break;\n                            case 'event': {\n                                const data = message.data;\n                                if (!(data === null || data === void 0 ? void 0 : data.channels))\n                                    break;\n                                const eventSubIds = data.subscriptions;\n                                if (eventSubIds && eventSubIds.length > 0) {\n                                    for (const subscriptionId of eventSubIds) {\n                                        const subscription = this.realtime.subscriptions.get(subscriptionId);\n                                        if (subscription) {\n                                            setTimeout(() => subscription.callback(data));\n                                        }\n                                    }\n                                }\n                                else {\n                                    const isSubscribed = data.channels.some(channel => this.realtime.channels.has(channel));\n                                    if (!isSubscribed)\n                                        break;\n                                    this.realtime.subscriptions.forEach(subscription => {\n                                        if (data.channels.some(channel => subscription.channels.includes(channel))) {\n                                            setTimeout(() => subscription.callback(data));\n                                        }\n                                    });\n                                }\n                                break;\n                            }\n                            case 'pong':\n                                break; // Handle pong response if needed\n                            case 'error':\n                                throw message.data;\n                            default:\n                                break;\n                        }\n                    }\n                    catch (e) {\n                        console.error(e);\n                    }\n                }\n            };\n        }\n        /**\n         * Get Headers\n         *\n         * Returns a copy of the current request headers, including any\n         * authentication headers. Handle with care.\n         *\n         * @returns {Headers}\n         */\n        getHeaders() {\n            return Object.assign({}, this.headers);\n        }\n        /**\n         * Set Endpoint\n         *\n         * Your project endpoint\n         *\n         * @param {string} endpoint\n         *\n         * @returns {this}\n         */\n        setEndpoint(endpoint) {\n            if (!endpoint || typeof endpoint !== 'string') {\n                throw new AppwriteException('Endpoint must be a valid string');\n            }\n            if (!endpoint.startsWith('http://') && !endpoint.startsWith('https://')) {\n                throw new AppwriteException('Invalid endpoint URL: ' + endpoint);\n            }\n            this.config.endpoint = endpoint;\n            this.config.endpointRealtime = endpoint.replace('https://', 'wss://').replace('http://', 'ws://');\n            return this;\n        }\n        /**\n         * Set Realtime Endpoint\n         *\n         * @param {string} endpointRealtime\n         *\n         * @returns {this}\n         */\n        setEndpointRealtime(endpointRealtime) {\n            if (!endpointRealtime || typeof endpointRealtime !== 'string') {\n                throw new AppwriteException('Endpoint must be a valid string');\n            }\n            if (!endpointRealtime.startsWith('ws://') && !endpointRealtime.startsWith('wss://')) {\n                throw new AppwriteException('Invalid realtime endpoint URL: ' + endpointRealtime);\n            }\n            this.config.endpointRealtime = endpointRealtime;\n            return this;\n        }\n        /**\n         * Set Project\n         *\n         * Your project ID\n         *\n         * @param value string\n         *\n         * @return {this}\n         */\n        setProject(value) {\n            this.config.project = value;\n            return this;\n        }\n        /**\n         * Set JWT\n         *\n         * Your secret JSON Web Token\n         *\n         * @param value string\n         *\n         * @return {this}\n         */\n        setJWT(value) {\n            this.headers['X-Appwrite-JWT'] = value;\n            this.config.jwt = value;\n            return this;\n        }\n        /**\n         * Set Bearer\n         *\n         * The OAuth access token to authenticate with\n         *\n         * @param value string\n         *\n         * @return {this}\n         */\n        setBearer(value) {\n            this.headers['Authorization'] = `Bearer ${value}`;\n            this.config.bearer = value;\n            return this;\n        }\n        /**\n         * Set Locale\n         *\n         * @param value string\n         *\n         * @return {this}\n         */\n        setLocale(value) {\n            this.headers['X-Appwrite-Locale'] = value;\n            this.config.locale = value;\n            return this;\n        }\n        /**\n         * Set Session\n         *\n         * The user session to authenticate with\n         *\n         * @param value string\n         *\n         * @return {this}\n         */\n        setSession(value) {\n            this.headers['X-Appwrite-Session'] = value;\n            this.config.session = value;\n            return this;\n        }\n        /**\n         * Set DevKey\n         *\n         * Your secret dev API key\n         *\n         * @param value string\n         *\n         * @return {this}\n         */\n        setDevKey(value) {\n            this.headers['X-Appwrite-Dev-Key'] = value;\n            this.config.devkey = value;\n            return this;\n        }\n        /**\n         * Set Cookie\n         *\n         * The user cookie to authenticate with. Used by SDKs that forward an incoming Cookie header in server-side runtimes.\n         *\n         * @param value string\n         *\n         * @return {this}\n         */\n        setCookie(value) {\n            this.headers['Cookie'] = value;\n            this.config.cookie = value;\n            return this;\n        }\n        /**\n         * Set ImpersonateUserId\n         *\n         * Impersonate a user by ID\n         *\n         * @param value string\n         *\n         * @return {this}\n         */\n        setImpersonateUserId(value) {\n            this.headers['X-Appwrite-Impersonate-User-Id'] = value;\n            this.config.impersonateuserid = value;\n            return this;\n        }\n        /**\n         * Set ImpersonateUserEmail\n         *\n         * Impersonate a user by email\n         *\n         * @param value string\n         *\n         * @return {this}\n         */\n        setImpersonateUserEmail(value) {\n            this.headers['X-Appwrite-Impersonate-User-Email'] = value;\n            this.config.impersonateuseremail = value;\n            return this;\n        }\n        /**\n         * Set ImpersonateUserPhone\n         *\n         * Impersonate a user by phone\n         *\n         * @param value string\n         *\n         * @return {this}\n         */\n        setImpersonateUserPhone(value) {\n            this.headers['X-Appwrite-Impersonate-User-Phone'] = value;\n            this.config.impersonateuserphone = value;\n            return this;\n        }\n        /**\n         * Subscribes to Appwrite events and passes you the payload in realtime.\n         *\n         * @deprecated Use the Realtime service instead.\n         * @see Realtime\n         *\n         * @param {string|string[]|Channel<any>|ActionableChannel|ResolvedChannel|(Channel<any>|ActionableChannel|ResolvedChannel)[]} channels\n         * Channel to subscribe - pass a single channel as a string or Channel builder instance, or multiple with an array.\n         *\n         * Possible channels are:\n         * - account\n         * - collections\n         * - collections.[ID]\n         * - collections.[ID].documents\n         * - documents\n         * - documents.[ID]\n         * - files\n         * - files.[ID]\n         * - executions\n         * - executions.[ID]\n         * - functions.[ID]\n         * - teams\n         * - teams.[ID]\n         * - memberships\n         * - memberships.[ID]\n         *\n         * You can also use Channel builders:\n         * - Channel.database('db').collection('col').document('doc').create()\n         * - Channel.bucket('bucket').file('file').update()\n         * - Channel.function('func').execution('exec').delete()\n         * - Channel.team('team').create()\n         * - Channel.membership('membership').update()\n         * @param {(payload: RealtimeMessage) => void} callback Is called on every realtime update.\n         * @returns {() => void} Unsubscribes from events.\n         */\n        subscribe(channels, callback, queries = []) {\n            const channelArray = Array.isArray(channels) ? channels : [channels];\n            // Convert Channel instances to strings\n            const channelStrings = channelArray.map(ch => {\n                if (typeof ch === 'string') {\n                    return ch;\n                }\n                // All Channel instances have toString() method\n                if (ch && typeof ch.toString === 'function') {\n                    return ch.toString();\n                }\n                // Fallback to generic string conversion\n                return String(ch);\n            });\n            channelStrings.forEach(channel => this.realtime.channels.add(channel));\n            const queryStrings = (queries !== null && queries !== void 0 ? queries : []).map(q => typeof q === 'string' ? q : q.toString());\n            let subscriptionId = '';\n            const attempts = this.realtime.subscriptions.size + 1;\n            for (let i = 0; i < attempts; i++) {\n                const candidate = ID.unique();\n                if (!this.realtime.subscriptions.has(candidate)) {\n                    subscriptionId = candidate;\n                    break;\n                }\n            }\n            if (subscriptionId === '') {\n                throw new AppwriteException('Failed to generate unique subscription id');\n            }\n            this.realtime.subscriptions.set(subscriptionId, {\n                channels: channelStrings,\n                queries: queryStrings,\n                callback\n            });\n            this.realtime.pendingSubscribes.set(subscriptionId, {\n                subscriptionId,\n                channels: channelStrings,\n                queries: queryStrings\n            });\n            this.realtime.connect();\n            return () => {\n                this.realtime.subscriptions.delete(subscriptionId);\n                this.realtime.pendingSubscribes.delete(subscriptionId);\n                const stillUsed = new Set();\n                this.realtime.subscriptions.forEach(sub => {\n                    sub.channels.forEach(channel => stillUsed.add(channel));\n                });\n                this.realtime.channels.forEach(channel => {\n                    if (!stillUsed.has(channel)) {\n                        this.realtime.channels.delete(channel);\n                    }\n                });\n                this.realtime.connect();\n            };\n        }\n        prepareRequest(method, url, headers = {}, params = {}) {\n            method = method.toUpperCase();\n            headers = Object.assign({}, this.headers, headers);\n            if (typeof window !== 'undefined' && window.localStorage) {\n                const cookieFallback = window.localStorage.getItem('cookieFallback');\n                if (cookieFallback) {\n                    headers['X-Fallback-Cookies'] = cookieFallback;\n                }\n            }\n            let options = {\n                method,\n                headers,\n            };\n            if (headers['X-Appwrite-Dev-Key'] === undefined) {\n                options.credentials = 'include';\n            }\n            if (method === 'GET') {\n                for (const [key, value] of Object.entries(Client.flatten(params))) {\n                    url.searchParams.append(key, value);\n                }\n            }\n            else {\n                switch (headers['content-type']) {\n                    case 'application/json':\n                        options.body = JSONbig.stringify(params);\n                        break;\n                    case 'multipart/form-data':\n                        const formData = new FormData();\n                        for (const [key, value] of Object.entries(params)) {\n                            if (value instanceof File) {\n                                formData.append(key, value, value.name);\n                            }\n                            else if (Array.isArray(value)) {\n                                for (const nestedValue of value) {\n                                    formData.append(`${key}[]`, nestedValue);\n                                }\n                            }\n                            else {\n                                formData.append(key, value);\n                            }\n                        }\n                        options.body = formData;\n                        delete headers['content-type'];\n                        break;\n                }\n            }\n            return { uri: url.toString(), options };\n        }\n        chunkedUpload(method_1, url_1) {\n            return __awaiter(this, arguments, void 0, function* (method, url, headers = {}, originalPayload = {}, onProgress) {\n                var _a;\n                const [fileParam, file] = (_a = Object.entries(originalPayload).find(([_, value]) => value instanceof File)) !== null && _a !== void 0 ? _a : [];\n                if (!file || !fileParam) {\n                    throw new Error('File not found in payload');\n                }\n                if (file.size <= Client.CHUNK_SIZE) {\n                    return yield this.call(method, url, headers, originalPayload);\n                }\n                const totalChunks = Math.ceil(file.size / Client.CHUNK_SIZE);\n                // Upload first chunk alone to get the upload ID\n                const firstChunkEnd = Math.min(Client.CHUNK_SIZE, file.size);\n                const firstChunkHeaders = Object.assign(Object.assign({}, headers), { 'content-range': `bytes 0-${firstChunkEnd - 1}/${file.size}` });\n                const firstChunk = file.slice(0, firstChunkEnd);\n                const firstPayload = Object.assign({}, originalPayload);\n                firstPayload[fileParam] = new File([firstChunk], file.name);\n                let response = yield this.call(method, url, firstChunkHeaders, firstPayload);\n                const uploadId = response === null || response === void 0 ? void 0 : response.$id;\n                if (onProgress && typeof onProgress === 'function') {\n                    onProgress({\n                        $id: uploadId,\n                        progress: Math.round((firstChunkEnd / file.size) * 100),\n                        sizeUploaded: firstChunkEnd,\n                        chunksTotal: totalChunks,\n                        chunksUploaded: 1\n                    });\n                }\n                if (totalChunks === 1) {\n                    return response;\n                }\n                // Prepare remaining chunks\n                const chunks = [];\n                for (let i = 1; i < totalChunks; i++) {\n                    const start = i * Client.CHUNK_SIZE;\n                    const end = Math.min(start + Client.CHUNK_SIZE, file.size);\n                    chunks.push({ start, end });\n                }\n                // Upload remaining chunks with max concurrency of 8\n                const CONCURRENCY = 8;\n                let completedCount = 1;\n                let uploadedBytes = firstChunkEnd;\n                let lastResponse = response;\n                let finalResponse = null;\n                let rejected = false;\n                const isUploadComplete = (chunkResponse) => {\n                    var _a;\n                    const chunksUploaded = chunkResponse === null || chunkResponse === void 0 ? void 0 : chunkResponse.chunksUploaded;\n                    const chunksTotal = (_a = chunkResponse === null || chunkResponse === void 0 ? void 0 : chunkResponse.chunksTotal) !== null && _a !== void 0 ? _a : totalChunks;\n                    return typeof chunksUploaded === 'number' && typeof chunksTotal === 'number' && chunksUploaded >= chunksTotal;\n                };\n                const uploadChunk = (chunk) => __awaiter(this, void 0, void 0, function* () {\n                    const chunkHeaders = Object.assign({}, headers);\n                    if (uploadId) {\n                        chunkHeaders['x-appwrite-id'] = uploadId;\n                    }\n                    chunkHeaders['content-range'] = `bytes ${chunk.start}-${chunk.end - 1}/${file.size}`;\n                    const chunkBlob = file.slice(chunk.start, chunk.end);\n                    const chunkPayload = Object.assign({}, originalPayload);\n                    chunkPayload[fileParam] = new File([chunkBlob], file.name);\n                    const chunkResponse = yield this.call(method, url, chunkHeaders, chunkPayload);\n                    if (rejected) {\n                        return chunkResponse;\n                    }\n                    completedCount++;\n                    uploadedBytes += (chunk.end - chunk.start);\n                    lastResponse = chunkResponse;\n                    if (isUploadComplete(chunkResponse)) {\n                        finalResponse = chunkResponse;\n                    }\n                    if (onProgress && typeof onProgress === 'function') {\n                        onProgress({\n                            $id: uploadId,\n                            progress: Math.round((uploadedBytes / file.size) * 100),\n                            sizeUploaded: uploadedBytes,\n                            chunksTotal: totalChunks,\n                            chunksUploaded: completedCount\n                        });\n                    }\n                    return chunkResponse;\n                });\n                yield new Promise((resolve, reject) => {\n                    let nextChunk = 0;\n                    let inFlight = 0;\n                    let completed = 0;\n                    const uploadNext = () => {\n                        if (rejected) {\n                            return;\n                        }\n                        if (completed === chunks.length) {\n                            resolve();\n                            return;\n                        }\n                        while (inFlight < CONCURRENCY && nextChunk < chunks.length) {\n                            const chunk = chunks[nextChunk++];\n                            inFlight++;\n                            uploadChunk(chunk)\n                                .then(() => {\n                                inFlight--;\n                                completed++;\n                                uploadNext();\n                            })\n                                .catch((error) => {\n                                rejected = true;\n                                reject(error);\n                            });\n                        }\n                    };\n                    uploadNext();\n                });\n                return finalResponse !== null && finalResponse !== void 0 ? finalResponse : lastResponse;\n            });\n        }\n        ping() {\n            return __awaiter(this, void 0, void 0, function* () {\n                return this.call('GET', new URL(this.config.endpoint + '/ping'), {\n                    'X-Appwrite-Project': this.config.project,\n                    'accept': 'application/json',\n                });\n            });\n        }\n        call(method_1, url_1) {\n            return __awaiter(this, arguments, void 0, function* (method, url, headers = {}, params = {}, responseType = 'json') {\n                var _a, _b, _c;\n                const { uri, options } = this.prepareRequest(method, url, headers, params);\n                let data = null;\n                const response = yield fetch(uri, options);\n                // type opaque: No-CORS, different-origin response (CORS-issue)\n                if (response.type === 'opaque') {\n                    throw new AppwriteException(`Invalid Origin. Register your new client (${window.location.host}) as a new Web platform on your project console dashboard`, 403, \"forbidden\", \"\");\n                }\n                const warnings = response.headers.get('x-appwrite-warning');\n                if (warnings) {\n                    warnings.split(';').forEach((warning) => console.warn('Warning: ' + warning));\n                }\n                if ((_a = response.headers.get('content-type')) === null || _a === void 0 ? void 0 : _a.includes('application/json')) {\n                    data = JSONbig.parse(yield response.text());\n                }\n                else if (responseType === 'arrayBuffer') {\n                    data = yield response.arrayBuffer();\n                }\n                else {\n                    data = {\n                        message: yield response.text()\n                    };\n                }\n                if (400 <= response.status) {\n                    let responseText = '';\n                    if (((_b = response.headers.get('content-type')) === null || _b === void 0 ? void 0 : _b.includes('application/json')) || responseType === 'arrayBuffer') {\n                        responseText = JSONbig.stringify(data);\n                    }\n                    else {\n                        responseText = data === null || data === void 0 ? void 0 : data.message;\n                    }\n                    throw new AppwriteException((_c = data === null || data === void 0 ? void 0 : data.message) !== null && _c !== void 0 ? _c : responseText, response.status, data === null || data === void 0 ? void 0 : data.type, responseText);\n                }\n                const cookieFallback = response.headers.get('X-Fallback-Cookies');\n                if (typeof window !== 'undefined' && window.localStorage && cookieFallback) {\n                    window.console.warn('Appwrite is using localStorage for session management. Increase your security by adding a custom domain as your API endpoint.');\n                    window.localStorage.setItem('cookieFallback', cookieFallback);\n                }\n                if (data && typeof data === 'object') {\n                    Object.defineProperty(data, 'toString', {\n                        value: () => JSONbig.stringify(data),\n                        writable: true,\n                        enumerable: false,\n                        configurable: true,\n                    });\n                }\n                return data;\n            });\n        }\n        static flatten(data, prefix = '') {\n            let output = {};\n            for (const [key, value] of Object.entries(data)) {\n                let finalKey = prefix ? prefix + '[' + key + ']' : key;\n                if (Array.isArray(value)) {\n                    output = Object.assign(Object.assign({}, output), Client.flatten(value, finalKey));\n                }\n                else {\n                    output[finalKey] = value;\n                }\n            }\n            return output;\n        }\n    }\n    Client.CHUNK_SIZE = 1024 * 1024 * 5;\n\n    class Service {\n        constructor(client) {\n            this.client = client;\n        }\n        static flatten(data, prefix = '') {\n            let output = {};\n            for (const [key, value] of Object.entries(data)) {\n                let finalKey = prefix ? prefix + '[' + key + ']' : key;\n                if (Array.isArray(value)) {\n                    output = Object.assign(Object.assign({}, output), Service.flatten(value, finalKey));\n                }\n                else {\n                    output[finalKey] = value;\n                }\n            }\n            return output;\n        }\n    }\n    /**\n     * The size for chunked uploads in bytes.\n     */\n    Service.CHUNK_SIZE = 5 * 1024 * 1024; // 5MB\n\n    class Account {\n        constructor(client) {\n            this.client = client;\n        }\n        /**\n         * Get the currently logged in user.\n         *\n         * @throws {AppwriteException}\n         * @returns {Promise<Models.User<Preferences>>}\n         */\n        get() {\n            const apiPath = '/account';\n            const payload = {};\n            const uri = new URL(this.client.config.endpoint + apiPath);\n            const apiHeaders = {\n                'X-Appwrite-Project': this.client.config.project,\n                'accept': 'application/json',\n            };\n            return this.client.call('get', uri, apiHeaders, payload);\n        }\n        create(paramsOrFirst, ...rest) {\n            let params;\n            if ((paramsOrFirst && typeof paramsOrFirst === 'object' && !Array.isArray(paramsOrFirst))) {\n                params = (paramsOrFirst || {});\n            }\n            else {\n                params = {\n                    userId: paramsOrFirst,\n                    email: rest[0],\n                    password: rest[1],\n                    name: rest[2]\n                };\n            }\n            const userId = params.userId;\n            const email = params.email;\n            const password = params.password;\n            const name = params.name;\n            if (typeof userId === 'undefined') {\n                throw new AppwriteException('Missing required parameter: \"userId\"');\n            }\n            if (typeof email === 'undefined') {\n                throw new AppwriteException('Missing required parameter: \"email\"');\n            }\n            if (typeof password === 'undefined') {\n                throw new AppwriteException('Missing required parameter: \"password\"');\n            }\n            const apiPath = '/account';\n            const payload = {};\n            if (typeof userId !== 'undefined') {\n                payload['userId'] = userId;\n            }\n            if (typeof email !== 'undefined') {\n                payload['email'] = email;\n            }\n            if (typeof password !== 'undefined') {\n                payload['password'] = password;\n            }\n            if (typeof name !== 'undefined') {\n                payload['name'] = name;\n            }\n            const uri = new URL(this.client.config.endpoint + apiPath);\n            const apiHeaders = {\n                'X-Appwrite-Project': this.client.config.project,\n                'content-type': 'application/json',\n                'accept': 'application/json',\n            };\n            return this.client.call('post', uri, apiHeaders, payload);\n        }\n        updateEmail(paramsOrFirst, ...rest) {\n            let params;\n            if ((paramsOrFirst && typeof paramsOrFirst === 'object' && !Array.isArray(paramsOrFirst))) {\n                params = (paramsOrFirst || {});\n            }\n            else {\n                params = {\n                    email: paramsOrFirst,\n                    password: rest[0]\n                };\n            }\n            const email = params.email;\n            const password = params.password;\n            if (typeof email === 'undefined') {\n                throw new AppwriteException('Missing required parameter: \"email\"');\n            }\n            if (typeof password === 'undefined') {\n                throw new AppwriteException('Missing required parameter: \"password\"');\n            }\n            const apiPath = '/account/email';\n            const payload = {};\n            if (typeof email !== 'undefined') {\n                payload['email'] = email;\n            }\n            if (typeof password !== 'undefined') {\n                payload['password'] = password;\n            }\n            const uri = new URL(this.client.config.endpoint + apiPath);\n            const apiHeaders = {\n                'X-Appwrite-Project': this.client.config.project,\n                'content-type': 'application/json',\n                'accept': 'application/json',\n            };\n            return this.client.call('patch', uri, apiHeaders, payload);\n        }\n        listIdentities(paramsOrFirst, ...rest) {\n            let params;\n            if (!paramsOrFirst || (paramsOrFirst && typeof paramsOrFirst === 'object' && !Array.isArray(paramsOrFirst))) {\n                params = (paramsOrFirst || {});\n            }\n            else {\n                params = {\n                    queries: paramsOrFirst,\n                    total: rest[0]\n                };\n            }\n            const queries = params.queries;\n            const total = params.total;\n            const apiPath = '/account/identities';\n            const payload = {};\n            if (typeof queries !== 'undefined') {\n                payload['queries'] = queries;\n            }\n            if (typeof total !== 'undefined') {\n                payload['total'] = total;\n            }\n            const uri = new URL(this.client.config.endpoint + apiPath);\n            const apiHeaders = {\n                'X-Appwrite-Project': this.client.config.project,\n                'accept': 'application/json',\n            };\n            return this.client.call('get', uri, apiHeaders, payload);\n        }\n        deleteIdentity(paramsOrFirst) {\n            let params;\n            if ((paramsOrFirst && typeof paramsOrFirst === 'object' && !Array.isArray(paramsOrFirst))) {\n                params = (paramsOrFirst || {});\n            }\n            else {\n                params = {\n                    identityId: paramsOrFirst\n                };\n            }\n            const identityId = params.identityId;\n            if (typeof identityId === 'undefined') {\n                throw new AppwriteException('Missing required parameter: \"identityId\"');\n            }\n            const apiPath = '/account/identities/{identityId}'.replace('{identityId}', encodeURIComponent(String(identityId)));\n            const payload = {};\n            const uri = new URL(this.client.config.endpoint + apiPath);\n            const apiHeaders = {\n                'X-Appwrite-Project': this.client.config.project,\n                'content-type': 'application/json',\n            };\n            return this.client.call('delete', uri, apiHeaders, payload);\n        }\n        createJWT(paramsOrFirst) {\n            let params;\n            if (!paramsOrFirst || (paramsOrFirst && typeof paramsOrFirst === 'object' && !Array.isArray(paramsOrFirst))) {\n                params = (paramsOrFirst || {});\n            }\n            else {\n                params = {\n                    duration: paramsOrFirst\n                };\n            }\n            const duration = params.duration;\n            const apiPath = '/account/jwts';\n            const payload = {};\n            if (typeof duration !== 'undefined') {\n                payload['duration'] = duration;\n            }\n            const uri = new URL(this.client.config.endpoint + apiPath);\n            const apiHeaders = {\n                'X-Appwrite-Project': this.client.config.project,\n                'content-type': 'application/json',\n                'accept': 'application/json',\n            };\n            return this.client.call('post', uri, apiHeaders, payload);\n        }\n        listLogs(paramsOrFirst, ...rest) {\n            let params;\n            if (!paramsOrFirst || (paramsOrFirst && typeof paramsOrFirst === 'object' && !Array.isArray(paramsOrFirst))) {\n                params = (paramsOrFirst || {});\n            }\n            else {\n                params = {\n                    queries: paramsOrFirst,\n                    total: rest[0]\n                };\n            }\n            const queries = params.queries;\n            const total = params.total;\n            const apiPath = '/account/logs';\n            const payload = {};\n            if (typeof queries !== 'undefined') {\n                payload['queries'] = queries;\n            }\n            if (typeof total !== 'undefined') {\n                payload['total'] = total;\n            }\n            const uri = new URL(this.client.config.endpoint + apiPath);\n            const apiHeaders = {\n                'X-Appwrite-Project': this.client.config.project,\n                'accept': 'application/json',\n            };\n            return this.client.call('get', uri, apiHeaders, payload);\n        }\n        updateMFA(paramsOrFirst) {\n            let params;\n            if ((paramsOrFirst && typeof paramsOrFirst === 'object' && !Array.isArray(paramsOrFirst))) {\n                params = (paramsOrFirst || {});\n            }\n            else {\n                params = {\n                    mfa: paramsOrFirst\n                };\n            }\n            const mfa = params.mfa;\n            if (typeof mfa === 'undefined') {\n                throw new AppwriteException('Missing required parameter: \"mfa\"');\n            }\n            const apiPath = '/account/mfa';\n            const payload = {};\n            if (typeof mfa !== 'undefined') {\n                payload['mfa'] = mfa;\n            }\n            const uri = new URL(this.client.config.endpoint + apiPath);\n            const apiHeaders = {\n                'X-Appwrite-Project': this.client.config.project,\n                'content-type': 'application/json',\n                'accept': 'application/json',\n            };\n            return this.client.call('patch', uri, apiHeaders, payload);\n        }\n        createMfaAuthenticator(paramsOrFirst) {\n            let params;\n            if ((paramsOrFirst && typeof paramsOrFirst === 'object' && !Array.isArray(paramsOrFirst) && ('type' in paramsOrFirst))) {\n                params = (paramsOrFirst || {});\n            }\n            else {\n                params = {\n                    type: paramsOrFirst\n                };\n            }\n            const type = params.type;\n            if (typeof type === 'undefined') {\n                throw new AppwriteException('Missing required parameter: \"type\"');\n            }\n            const apiPath = '/account/mfa/authenticators/{type}'.replace('{type}', encodeURIComponent(String(type)));\n            const payload = {};\n            const uri = new URL(this.client.config.endpoint + apiPath);\n            const apiHeaders = {\n                'X-Appwrite-Project': this.client.config.project,\n                'content-type': 'application/json',\n                'accept': 'application/json',\n            };\n            return this.client.call('post', uri, apiHeaders, payload);\n        }\n        createMFAAuthenticator(paramsOrFirst) {\n            let params;\n            if ((paramsOrFirst && typeof paramsOrFirst === 'object' && !Array.isArray(paramsOrFirst) && ('type' in paramsOrFirst))) {\n                params = (paramsOrFirst || {});\n            }\n            else {\n                params = {\n                    type: paramsOrFirst\n                };\n            }\n            const type = params.type;\n            if (typeof type === 'undefined') {\n                throw new AppwriteException('Missing required parameter: \"type\"');\n            }\n            const apiPath = '/account/mfa/authenticators/{type}'.replace('{type}', encodeURIComponent(String(type)));\n            const payload = {};\n            const uri = new URL(this.client.config.endpoint + apiPath);\n            const apiHeaders = {\n                'X-Appwrite-Project': this.client.config.project,\n                'content-type': 'application/json',\n                'accept': 'application/json',\n            };\n            return this.client.call('post', uri, apiHeaders, payload);\n        }\n        updateMfaAuthenticator(paramsOrFirst, ...rest) {\n            let params;\n            if ((paramsOrFirst && typeof paramsOrFirst === 'object' && !Array.isArray(paramsOrFirst) && ('type' in paramsOrFirst || 'otp' in paramsOrFirst))) {\n                params = (paramsOrFirst || {});\n            }\n            else {\n                params = {\n                    type: paramsOrFirst,\n                    otp: rest[0]\n                };\n            }\n            const type = params.type;\n            const otp = params.otp;\n            if (typeof type === 'undefined') {\n                throw new AppwriteException('Missing required parameter: \"type\"');\n            }\n            if (typeof otp === 'undefined') {\n                throw new AppwriteException('Missing required parameter: \"otp\"');\n            }\n            const apiPath = '/account/mfa/authenticators/{type}'.replace('{type}', encodeURIComponent(String(type)));\n            const payload = {};\n            if (typeof otp !== 'undefined') {\n                payload['otp'] = otp;\n            }\n            const uri = new URL(this.client.config.endpoint + apiPath);\n            const apiHeaders = {\n                'X-Appwrite-Project': this.client.config.project,\n                'content-type': 'application/json',\n                'accept': 'application/json',\n            };\n            return this.client.call('put', uri, apiHeaders, payload);\n        }\n        updateMFAAuthenticator(paramsOrFirst, ...rest) {\n            let params;\n            if ((paramsOrFirst && typeof paramsOrFirst === 'object' && !Array.isArray(paramsOrFirst) && ('type' in paramsOrFirst || 'otp' in paramsOrFirst))) {\n                params = (paramsOrFirst || {});\n            }\n            else {\n                params = {\n                    type: paramsOrFirst,\n                    otp: rest[0]\n                };\n            }\n            const type = params.type;\n            const otp = params.otp;\n            if (typeof type === 'undefined') {\n                throw new AppwriteException('Missing required parameter: \"type\"');\n            }\n            if (typeof otp === 'undefined') {\n                throw new AppwriteException('Missing required parameter: \"otp\"');\n            }\n            const apiPath = '/account/mfa/authenticators/{type}'.replace('{type}', encodeURIComponent(String(type)));\n            const payload = {};\n            if (typeof otp !== 'undefined') {\n                payload['otp'] = otp;\n            }\n            const uri = new URL(this.client.config.endpoint + apiPath);\n            const apiHeaders = {\n                'X-Appwrite-Project': this.client.config.project,\n                'content-type': 'application/json',\n                'accept': 'application/json',\n            };\n            return this.client.call('put', uri, apiHeaders, payload);\n        }\n        deleteMfaAuthenticator(paramsOrFirst) {\n            let params;\n            if ((paramsOrFirst && typeof paramsOrFirst === 'object' && !Array.isArray(paramsOrFirst) && ('type' in paramsOrFirst))) {\n                params = (paramsOrFirst || {});\n            }\n            else {\n                params = {\n                    type: paramsOrFirst\n                };\n            }\n            const type = params.type;\n            if (typeof type === 'undefined') {\n                throw new AppwriteException('Missing required parameter: \"type\"');\n            }\n            const apiPath = '/account/mfa/authenticators/{type}'.replace('{type}', encodeURIComponent(String(type)));\n            const payload = {};\n            const uri = new URL(this.client.config.endpoint + apiPath);\n            const apiHeaders = {\n                'X-Appwrite-Project': this.client.config.project,\n                'content-type': 'application/json',\n            };\n            return this.client.call('delete', uri, apiHeaders, payload);\n        }\n        deleteMFAAuthenticator(paramsOrFirst) {\n            let params;\n            if ((paramsOrFirst && typeof paramsOrFirst === 'object' && !Array.isArray(paramsOrFirst) && ('type' in paramsOrFirst))) {\n                params = (paramsOrFirst || {});\n            }\n            else {\n                params = {\n                    type: paramsOrFirst\n                };\n            }\n            const type = params.type;\n            if (typeof type === 'undefined') {\n                throw new AppwriteException('Missing required parameter: \"type\"');\n            }\n            const apiPath = '/account/mfa/authenticators/{type}'.replace('{type}', encodeURIComponent(String(type)));\n            const payload = {};\n            const uri = new URL(this.client.config.endpoint + apiPath);\n            const apiHeaders = {\n                'X-Appwrite-Project': this.client.config.project,\n                'content-type': 'application/json',\n            };\n            return this.client.call('delete', uri, apiHeaders, payload);\n        }\n        createMfaChallenge(paramsOrFirst) {\n            let params;\n            if ((paramsOrFirst && typeof paramsOrFirst === 'object' && !Array.isArray(paramsOrFirst) && ('factor' in paramsOrFirst))) {\n                params = (paramsOrFirst || {});\n            }\n            else {\n                params = {\n                    factor: paramsOrFirst\n                };\n            }\n            const factor = params.factor;\n            if (typeof factor === 'undefined') {\n                throw new AppwriteException('Missing required parameter: \"factor\"');\n            }\n            const apiPath = '/account/mfa/challenges';\n            const payload = {};\n            if (typeof factor !== 'undefined') {\n                payload['factor'] = factor;\n            }\n            const uri = new URL(this.client.config.endpoint + apiPath);\n            const apiHeaders = {\n                'X-Appwrite-Project': this.client.config.project,\n                'content-type': 'application/json',\n                'accept': 'application/json',\n            };\n            return this.client.call('post', uri, apiHeaders, payload);\n        }\n        createMFAChallenge(paramsOrFirst) {\n            let params;\n            if ((paramsOrFirst && typeof paramsOrFirst === 'object' && !Array.isArray(paramsOrFirst) && ('factor' in paramsOrFirst))) {\n                params = (paramsOrFirst || {});\n            }\n            else {\n                params = {\n                    factor: paramsOrFirst\n                };\n            }\n            const factor = params.factor;\n            if (typeof factor === 'undefined') {\n                throw new AppwriteException('Missing required parameter: \"factor\"');\n            }\n            const apiPath = '/account/mfa/challenges';\n            const payload = {};\n            if (typeof factor !== 'undefined') {\n                payload['factor'] = factor;\n            }\n            const uri = new URL(this.client.config.endpoint + apiPath);\n            const apiHeaders = {\n                'X-Appwrite-Project': this.client.config.project,\n                'content-type': 'application/json',\n                'accept': 'application/json',\n            };\n            return this.client.call('post', uri, apiHeaders, payload);\n        }\n        updateMfaChallenge(paramsOrFirst, ...rest) {\n            let params;\n            if ((paramsOrFirst && typeof paramsOrFirst === 'object' && !Array.isArray(paramsOrFirst))) {\n                params = (paramsOrFirst || {});\n            }\n            else {\n                params = {\n                    challengeId: paramsOrFirst,\n                    otp: rest[0]\n                };\n            }\n            const challengeId = params.challengeId;\n            const otp = params.otp;\n            if (typeof challengeId === 'undefined') {\n                throw new AppwriteException('Missing required parameter: \"challengeId\"');\n            }\n            if (typeof otp === 'undefined') {\n                throw new AppwriteException('Missing required parameter: \"otp\"');\n            }\n            const apiPath = '/account/mfa/challenges';\n            const payload = {};\n            if (typeof challengeId !== 'undefined') {\n                payload['challengeId'] = challengeId;\n            }\n            if (typeof otp !== 'undefined') {\n                payload['otp'] = otp;\n            }\n            const uri = new URL(this.client.config.endpoint + apiPath);\n            const apiHeaders = {\n                'X-Appwrite-Project': this.client.config.project,\n                'content-type': 'application/json',\n                'accept': 'application/json',\n            };\n            return this.client.call('put', uri, apiHeaders, payload);\n        }\n        updateMFAChallenge(paramsOrFirst, ...rest) {\n            let params;\n            if ((paramsOrFirst && typeof paramsOrFirst === 'object' && !Array.isArray(paramsOrFirst))) {\n                params = (paramsOrFirst || {});\n            }\n            else {\n                params = {\n                    challengeId: paramsOrFirst,\n                    otp: rest[0]\n                };\n            }\n            const challengeId = params.challengeId;\n            const otp = params.otp;\n            if (typeof challengeId === 'undefined') {\n                throw new AppwriteException('Missing required parameter: \"challengeId\"');\n            }\n            if (typeof otp === 'undefined') {\n                throw new AppwriteException('Missing required parameter: \"otp\"');\n            }\n            const apiPath = '/account/mfa/challenges';\n            const payload = {};\n            if (typeof challengeId !== 'undefined') {\n                payload['challengeId'] = challengeId;\n            }\n            if (typeof otp !== 'undefined') {\n                payload['otp'] = otp;\n            }\n            const uri = new URL(this.client.config.endpoint + apiPath);\n            const apiHeaders = {\n                'X-Appwrite-Project': this.client.config.project,\n                'content-type': 'application/json',\n                'accept': 'application/json',\n            };\n            return this.client.call('put', uri, apiHeaders, payload);\n        }\n        /**\n         * List the factors available on the account to be used as a MFA challange.\n         *\n         * @throws {AppwriteException}\n         * @returns {Promise<Models.MfaFactors>}\n         * @deprecated This API has been deprecated since 1.8.0. Please use `Account.listMFAFactors` instead.\n         */\n        listMfaFactors() {\n            const apiPath = '/account/mfa/factors';\n            const payload = {};\n            const uri = new URL(this.client.config.endpoint + apiPath);\n            const apiHeaders = {\n                'X-Appwrite-Project': this.client.config.project,\n                'accept': 'application/json',\n            };\n            return this.client.call('get', uri, apiHeaders, payload);\n        }\n        /**\n         * List the factors available on the account to be used as a MFA challange.\n         *\n         * @throws {AppwriteException}\n         * @returns {Promise<Models.MfaFactors>}\n         */\n        listMFAFactors() {\n            const apiPath = '/account/mfa/factors';\n            const payload = {};\n            const uri = new URL(this.client.config.endpoint + apiPath);\n            const apiHeaders = {\n                'X-Appwrite-Project': this.client.config.project,\n                'accept': 'application/json',\n            };\n            return this.client.call('get', uri, apiHeaders, payload);\n        }\n        /**\n         * Get recovery codes that can be used as backup for MFA flow. Before getting codes, they must be generated using [createMfaRecoveryCodes](/docs/references/cloud/client-web/account#createMfaRecoveryCodes) method. An OTP challenge is required to read recovery codes.\n         *\n         * @throws {AppwriteException}\n         * @returns {Promise<Models.MfaRecoveryCodes>}\n         * @deprecated This API has been deprecated since 1.8.0. Please use `Account.getMFARecoveryCodes` instead.\n         */\n        getMfaRecoveryCodes() {\n            const apiPath = '/account/mfa/recovery-codes';\n            const payload = {};\n            const uri = new URL(this.client.config.endpoint + apiPath);\n            const apiHeaders = {\n                'X-Appwrite-Project': this.client.config.project,\n                'accept': 'application/json',\n            };\n            return this.client.call('get', uri, apiHeaders, payload);\n        }\n        /**\n         * Get recovery codes that can be used as backup for MFA flow. Before getting codes, they must be generated using [createMfaRecoveryCodes](/docs/references/cloud/client-web/account#createMfaRecoveryCodes) method. An OTP challenge is required to read recovery codes.\n         *\n         * @throws {AppwriteException}\n         * @returns {Promise<Models.MfaRecoveryCodes>}\n         */\n        getMFARecoveryCodes() {\n            const apiPath = '/account/mfa/recovery-codes';\n            const payload = {};\n            const uri = new URL(this.client.config.endpoint + apiPath);\n            const apiHeaders = {\n                'X-Appwrite-Project': this.client.config.project,\n                'accept': 'application/json',\n            };\n            return this.client.call('get', uri, apiHeaders, payload);\n        }\n        /**\n         * Generate recovery codes as backup for MFA flow. It's recommended to generate and show then immediately after user successfully adds their authehticator. Recovery codes can be used as a MFA verification type in [createMfaChallenge](/docs/references/cloud/client-web/account#createMfaChallenge) method.\n         *\n         * @throws {AppwriteException}\n         * @returns {Promise<Models.MfaRecoveryCodes>}\n         * @deprecated This API has been deprecated since 1.8.0. Please use `Account.createMFARecoveryCodes` instead.\n         */\n        createMfaRecoveryCodes() {\n            const apiPath = '/account/mfa/recovery-codes';\n            const payload = {};\n            const uri = new URL(this.client.config.endpoint + apiPath);\n            const apiHeaders = {\n                'X-Appwrite-Project': this.client.config.project,\n                'content-type': 'application/json',\n                'accept': 'application/json',\n            };\n            return this.client.call('post', uri, apiHeaders, payload);\n        }\n        /**\n         * Generate recovery codes as backup for MFA flow. It's recommended to generate and show then immediately after user successfully adds their authehticator. Recovery codes can be used as a MFA verification type in [createMfaChallenge](/docs/references/cloud/client-web/account#createMfaChallenge) method.\n         *\n         * @throws {AppwriteException}\n         * @returns {Promise<Models.MfaRecoveryCodes>}\n         */\n        createMFARecoveryCodes() {\n            const apiPath = '/account/mfa/recovery-codes';\n            const payload = {};\n            const uri = new URL(this.client.config.endpoint + apiPath);\n            const apiHeaders = {\n                'X-Appwrite-Project': this.client.config.project,\n                'content-type': 'application/json',\n                'accept': 'application/json',\n            };\n            return this.client.call('post', uri, apiHeaders, payload);\n        }\n        /**\n         * Regenerate recovery codes that can be used as backup for MFA flow. Before regenerating codes, they must be first generated using [createMfaRecoveryCodes](/docs/references/cloud/client-web/account#createMfaRecoveryCodes) method. An OTP challenge is required to regenreate recovery codes.\n         *\n         * @throws {AppwriteException}\n         * @returns {Promise<Models.MfaRecoveryCodes>}\n         * @deprecated This API has been deprecated since 1.8.0. Please use `Account.updateMFARecoveryCodes` instead.\n         */\n        updateMfaRecoveryCodes() {\n            const apiPath = '/account/mfa/recovery-codes';\n            const payload = {};\n            const uri = new URL(this.client.config.endpoint + apiPath);\n            const apiHeaders = {\n                'X-Appwrite-Project': this.client.config.project,\n                'content-type': 'application/json',\n                'accept': 'application/json',\n            };\n            return this.client.call('patch', uri, apiHeaders, payload);\n        }\n        /**\n         * Regenerate recovery codes that can be used as backup for MFA flow. Before regenerating codes, they must be first generated using [createMfaRecoveryCodes](/docs/references/cloud/client-web/account#createMfaRecoveryCodes) method. An OTP challenge is required to regenreate recovery codes.\n         *\n         * @throws {AppwriteException}\n         * @returns {Promise<Models.MfaRecoveryCodes>}\n         */\n        updateMFARecoveryCodes() {\n            const apiPath = '/account/mfa/recovery-codes';\n            const payload = {};\n            const uri = new URL(this.client.config.endpoint + apiPath);\n            const apiHeaders = {\n                'X-Appwrite-Project': this.client.config.project,\n                'content-type': 'application/json',\n                'accept': 'application/json',\n            };\n            return this.client.call('patch', uri, apiHeaders, payload);\n        }\n        updateName(paramsOrFirst) {\n            let params;\n            if ((paramsOrFirst && typeof paramsOrFirst === 'object' && !Array.isArray(paramsOrFirst))) {\n                params = (paramsOrFirst || {});\n            }\n            else {\n                params = {\n                    name: paramsOrFirst\n                };\n            }\n            const name = params.name;\n            if (typeof name === 'undefined') {\n                throw new AppwriteException('Missing required parameter: \"name\"');\n            }\n            const apiPath = '/account/name';\n            const payload = {};\n            if (typeof name !== 'undefined') {\n                payload['name'] = name;\n            }\n            const uri = new URL(this.client.config.endpoint + apiPath);\n            const apiHeaders = {\n                'X-Appwrite-Project': this.client.config.project,\n                'content-type': 'application/json',\n                'accept': 'application/json',\n            };\n            return this.client.call('patch', uri, apiHeaders, payload);\n        }\n        updatePassword(paramsOrFirst, ...rest) {\n            let params;\n            if ((paramsOrFirst && typeof paramsOrFirst === 'object' && !Array.isArray(paramsOrFirst))) {\n                params = (paramsOrFirst || {});\n            }\n            else {\n                params = {\n                    password: paramsOrFirst,\n                    oldPassword: rest[0]\n                };\n            }\n            const password = params.password;\n            const oldPassword = params.oldPassword;\n            if (typeof password === 'undefined') {\n                throw new AppwriteException('Missing required parameter: \"password\"');\n            }\n            const apiPath = '/account/password';\n            const payload = {};\n            if (typeof password !== 'undefined') {\n                payload['password'] = password;\n            }\n            if (typeof oldPassword !== 'undefined') {\n                payload['oldPassword'] = oldPassword;\n            }\n            const uri = new URL(this.client.config.endpoint + apiPath);\n            const apiHeaders = {\n                'X-Appwrite-Project': this.client.config.project,\n                'content-type': 'application/json',\n                'accept': 'application/json',\n            };\n            return this.client.call('patch', uri, apiHeaders, payload);\n        }\n        updatePhone(paramsOrFirst, ...rest) {\n            let params;\n            if ((paramsOrFirst && typeof paramsOrFirst === 'object' && !Array.isArray(paramsOrFirst))) {\n                params = (paramsOrFirst || {});\n            }\n            else {\n                params = {\n                    phone: paramsOrFirst,\n                    password: rest[0]\n                };\n            }\n            const phone = params.phone;\n            const password = params.password;\n            if (typeof phone === 'undefined') {\n                throw new AppwriteException('Missing required parameter: \"phone\"');\n            }\n            if (typeof password === 'undefined') {\n                throw new AppwriteException('Missing required parameter: \"password\"');\n            }\n            const apiPath = '/account/phone';\n            const payload = {};\n            if (typeof phone !== 'undefined') {\n                payload['phone'] = phone;\n            }\n            if (typeof password !== 'undefined') {\n                payload['password'] = password;\n            }\n            const uri = new URL(this.client.config.endpoint + apiPath);\n            const apiHeaders = {\n                'X-Appwrite-Project': this.client.config.project,\n                'content-type': 'application/json',\n                'accept': 'application/json',\n            };\n            return this.client.call('patch', uri, apiHeaders, payload);\n        }\n        /**\n         * Get the preferences as a key-value object for the currently logged in user.\n         *\n         * @throws {AppwriteException}\n         * @returns {Promise<Preferences>}\n         */\n        getPrefs() {\n            const apiPath = '/account/prefs';\n            const payload = {};\n            const uri = new URL(this.client.config.endpoint + apiPath);\n            const apiHeaders = {\n                'X-Appwrite-Project': this.client.config.project,\n                'accept': 'application/json',\n            };\n            return this.client.call('get', uri, apiHeaders, payload);\n        }\n        updatePrefs(paramsOrFirst) {\n            let params;\n            if ((paramsOrFirst && typeof paramsOrFirst === 'object' && !Array.isArray(paramsOrFirst) && ('prefs' in paramsOrFirst))) {\n                params = (paramsOrFirst || {});\n            }\n            else {\n                params = {\n                    prefs: paramsOrFirst\n                };\n            }\n            const prefs = params.prefs;\n            if (typeof prefs === 'undefined') {\n                throw new AppwriteException('Missing required parameter: \"prefs\"');\n            }\n            const apiPath = '/account/prefs';\n            const payload = {};\n            if (typeof prefs !== 'undefined') {\n                payload['prefs'] = prefs;\n            }\n            const uri = new URL(this.client.config.endpoint + apiPath);\n            const apiHeaders = {\n                'X-Appwrite-Project': this.client.config.project,\n                'content-type': 'application/json',\n                'accept': 'application/json',\n            };\n            return this.client.call('patch', uri, apiHeaders, payload);\n        }\n        createRecovery(paramsOrFirst, ...rest) {\n            let params;\n            if ((paramsOrFirst && typeof paramsOrFirst === 'object' && !Array.isArray(paramsOrFirst))) {\n                params = (paramsOrFirst || {});\n            }\n            else {\n                params = {\n                    email: paramsOrFirst,\n                    url: rest[0]\n                };\n            }\n            const email = params.email;\n            const url = params.url;\n            if (typeof email === 'undefined') {\n                throw new AppwriteException('Missing required parameter: \"email\"');\n            }\n            if (typeof url === 'undefined') {\n                throw new AppwriteException('Missing required parameter: \"url\"');\n            }\n            const apiPath = '/account/recovery';\n            const payload = {};\n            if (typeof email !== 'undefined') {\n                payload['email'] = email;\n            }\n            if (typeof url !== 'undefined') {\n                payload['url'] = url;\n            }\n            const uri = new URL(this.client.config.endpoint + apiPath);\n            const apiHeaders = {\n                'X-Appwrite-Project': this.client.config.project,\n                'content-type': 'application/json',\n                'accept': 'application/json',\n            };\n            return this.client.call('post', uri, apiHeaders, payload);\n        }\n        updateRecovery(paramsOrFirst, ...rest) {\n            let params;\n            if ((paramsOrFirst && typeof paramsOrFirst === 'object' && !Array.isArray(paramsOrFirst))) {\n                params = (paramsOrFirst || {});\n            }\n            else {\n                params = {\n                    userId: paramsOrFirst,\n                    secret: rest[0],\n                    password: rest[1]\n                };\n            }\n            const userId = params.userId;\n            const secret = params.secret;\n            const password = params.password;\n            if (typeof userId === 'undefined') {\n                throw new AppwriteException('Missing required parameter: \"userId\"');\n            }\n            if (typeof secret === 'undefined') {\n                throw new AppwriteException('Missing required parameter: \"secret\"');\n            }\n            if (typeof password === 'undefined') {\n                throw new AppwriteException('Missing required parameter: \"password\"');\n            }\n            const apiPath = '/account/recovery';\n            const payload = {};\n            if (typeof userId !== 'undefined') {\n                payload['userId'] = userId;\n            }\n            if (typeof secret !== 'undefined') {\n                payload['secret'] = secret;\n            }\n            if (typeof password !== 'undefined') {\n                payload['password'] = password;\n            }\n            const uri = new URL(this.client.config.endpoint + apiPath);\n            const apiHeaders = {\n                'X-Appwrite-Project': this.client.config.project,\n                'content-type': 'application/json',\n                'accept': 'application/json',\n            };\n            return this.client.call('put', uri, apiHeaders, payload);\n        }\n        /**\n         * Get the list of active sessions across different devices for the currently logged in user.\n         *\n         * @throws {AppwriteException}\n         * @returns {Promise<Models.SessionList>}\n         */\n        listSessions() {\n            const apiPath = '/account/sessions';\n            const payload = {};\n            const uri = new URL(this.client.config.endpoint + apiPath);\n            const apiHeaders = {\n                'X-Appwrite-Project': this.client.config.project,\n                'accept': 'application/json',\n            };\n            return this.client.call('get', uri, apiHeaders, payload);\n        }\n        /**\n         * Delete all sessions from the user account and remove any sessions cookies from the end client.\n         *\n         * @throws {AppwriteException}\n         * @returns {Promise<{}>}\n         */\n        deleteSessions() {\n            const apiPath = '/account/sessions';\n            const payload = {};\n            const uri = new URL(this.client.config.endpoint + apiPath);\n            const apiHeaders = {\n                'X-Appwrite-Project': this.client.config.project,\n                'content-type': 'application/json',\n            };\n            return this.client.call('delete', uri, apiHeaders, payload);\n        }\n        /**\n         * Use this endpoint to allow a new user to register an anonymous account in your project. This route will also create a new session for the user. To allow the new user to convert an anonymous account to a normal account, you need to update its [email and password](https://appwrite.io/docs/references/cloud/client-web/account#updateEmail) or create an [OAuth2 session](https://appwrite.io/docs/references/cloud/client-web/account#CreateOAuth2Session).\n         *\n         * @throws {AppwriteException}\n         * @returns {Promise<Models.Session>}\n         */\n        createAnonymousSession() {\n            const apiPath = '/account/sessions/anonymous';\n            const payload = {};\n            const uri = new URL(this.client.config.endpoint + apiPath);\n            const apiHeaders = {\n                'X-Appwrite-Project': this.client.config.project,\n                'content-type': 'application/json',\n                'accept': 'application/json',\n            };\n            return this.client.call('post', uri, apiHeaders, payload);\n        }\n        createEmailPasswordSession(paramsOrFirst, ...rest) {\n            let params;\n            if ((paramsOrFirst && typeof paramsOrFirst === 'object' && !Array.isArray(paramsOrFirst))) {\n                params = (paramsOrFirst || {});\n            }\n            else {\n                params = {\n                    email: paramsOrFirst,\n                    password: rest[0]\n                };\n            }\n            const email = params.email;\n            const password = params.password;\n            if (typeof email === 'undefined') {\n                throw new AppwriteException('Missing required parameter: \"email\"');\n            }\n            if (typeof password === 'undefined') {\n                throw new AppwriteException('Missing required parameter: \"password\"');\n            }\n            const apiPath = '/account/sessions/email';\n            const payload = {};\n            if (typeof email !== 'undefined') {\n                payload['email'] = email;\n            }\n            if (typeof password !== 'undefined') {\n                payload['password'] = password;\n            }\n            const uri = new URL(this.client.config.endpoint + apiPath);\n            const apiHeaders = {\n                'X-Appwrite-Project': this.client.config.project,\n                'content-type': 'application/json',\n                'accept': 'application/json',\n            };\n            return this.client.call('post', uri, apiHeaders, payload);\n        }\n        updateMagicURLSession(paramsOrFirst, ...rest) {\n            let params;\n            if ((paramsOrFirst && typeof paramsOrFirst === 'object' && !Array.isArray(paramsOrFirst))) {\n                params = (paramsOrFirst || {});\n            }\n            else {\n                params = {\n                    userId: paramsOrFirst,\n                    secret: rest[0]\n                };\n            }\n            const userId = params.userId;\n            const secret = params.secret;\n            if (typeof userId === 'undefined') {\n                throw new AppwriteException('Missing required parameter: \"userId\"');\n            }\n            if (typeof secret === 'undefined') {\n                throw new AppwriteException('Missing required parameter: \"secret\"');\n            }\n            const apiPath = '/account/sessions/magic-url';\n            const payload = {};\n            if (typeof userId !== 'undefined') {\n                payload['userId'] = userId;\n            }\n            if (typeof secret !== 'undefined') {\n                payload['secret'] = secret;\n            }\n            const uri = new URL(this.client.config.endpoint + apiPath);\n            const apiHeaders = {\n                'X-Appwrite-Project': this.client.config.project,\n                'content-type': 'application/json',\n                'accept': 'application/json',\n            };\n            return this.client.call('put', uri, apiHeaders, payload);\n        }\n        createOAuth2Session(paramsOrFirst, ...rest) {\n            let params;\n            if ((paramsOrFirst && typeof paramsOrFirst === 'object' && !Array.isArray(paramsOrFirst) && ('provider' in paramsOrFirst || 'success' in paramsOrFirst || 'failure' in paramsOrFirst || 'scopes' in paramsOrFirst))) {\n                params = (paramsOrFirst || {});\n            }\n            else {\n                params = {\n                    provider: paramsOrFirst,\n                    success: rest[0],\n                    failure: rest[1],\n                    scopes: rest[2]\n                };\n            }\n            const provider = params.provider;\n            const success = params.success;\n            const failure = params.failure;\n            const scopes = params.scopes;\n            if (typeof provider === 'undefined') {\n                throw new AppwriteException('Missing required parameter: \"provider\"');\n            }\n            const apiPath = '/account/sessions/oauth2/{provider}'.replace('{provider}', encodeURIComponent(String(provider)));\n            const payload = {};\n            if (typeof success !== 'undefined') {\n                payload['success'] = success;\n            }\n            if (typeof failure !== 'undefined') {\n                payload['failure'] = failure;\n            }\n            if (typeof scopes !== 'undefined') {\n                payload['scopes'] = scopes;\n            }\n            const uri = new URL(this.client.config.endpoint + apiPath);\n            ({\n                'X-Appwrite-Project': this.client.config.project});\n            payload['project'] = this.client.config.project;\n            for (const [key, value] of Object.entries(Service.flatten(payload))) {\n                uri.searchParams.append(key, value);\n            }\n            if (typeof window !== 'undefined' && (window === null || window === void 0 ? void 0 : window.location)) {\n                window.location.href = uri.toString();\n                return;\n            }\n            else {\n                return uri.toString();\n            }\n        }\n        updatePhoneSession(paramsOrFirst, ...rest) {\n            let params;\n            if ((paramsOrFirst && typeof paramsOrFirst === 'object' && !Array.isArray(paramsOrFirst))) {\n                params = (paramsOrFirst || {});\n            }\n            else {\n                params = {\n                    userId: paramsOrFirst,\n                    secret: rest[0]\n                };\n            }\n            const userId = params.userId;\n            const secret = params.secret;\n            if (typeof userId === 'undefined') {\n                throw new AppwriteException('Missing required parameter: \"userId\"');\n            }\n            if (typeof secret === 'undefined') {\n                throw new AppwriteException('Missing required parameter: \"secret\"');\n            }\n            const apiPath = '/account/sessions/phone';\n            const payload = {};\n            if (typeof userId !== 'undefined') {\n                payload['userId'] = userId;\n            }\n            if (typeof secret !== 'undefined') {\n                payload['secret'] = secret;\n            }\n            const uri = new URL(this.client.config.endpoint + apiPath);\n            const apiHeaders = {\n                'X-Appwrite-Project': this.client.config.project,\n                'content-type': 'application/json',\n                'accept': 'application/json',\n            };\n            return this.client.call('put', uri, apiHeaders, payload);\n        }\n        createSession(paramsOrFirst, ...rest) {\n            let params;\n            if ((paramsOrFirst && typeof paramsOrFirst === 'object' && !Array.isArray(paramsOrFirst))) {\n                params = (paramsOrFirst || {});\n            }\n            else {\n                params = {\n                    userId: paramsOrFirst,\n                    secret: rest[0]\n                };\n            }\n            const userId = params.userId;\n            const secret = params.secret;\n            if (typeof userId === 'undefined') {\n                throw new AppwriteException('Missing required parameter: \"userId\"');\n            }\n            if (typeof secret === 'undefined') {\n                throw new AppwriteException('Missing required parameter: \"secret\"');\n            }\n            const apiPath = '/account/sessions/token';\n            const payload = {};\n            if (typeof userId !== 'undefined') {\n                payload['userId'] = userId;\n            }\n            if (typeof secret !== 'undefined') {\n                payload['secret'] = secret;\n            }\n            const uri = new URL(this.client.config.endpoint + apiPath);\n            const apiHeaders = {\n                'X-Appwrite-Project': this.client.config.project,\n                'content-type': 'application/json',\n                'accept': 'application/json',\n            };\n            return this.client.call('post', uri, apiHeaders, payload);\n        }\n        getSession(paramsOrFirst) {\n            let params;\n            if ((paramsOrFirst && typeof paramsOrFirst === 'object' && !Array.isArray(paramsOrFirst))) {\n                params = (paramsOrFirst || {});\n            }\n            else {\n                params = {\n                    sessionId: paramsOrFirst\n                };\n            }\n            const sessionId = params.sessionId;\n            if (typeof sessionId === 'undefined') {\n                throw new AppwriteException('Missing required parameter: \"sessionId\"');\n            }\n            const apiPath = '/account/sessions/{sessionId}'.replace('{sessionId}', encodeURIComponent(String(sessionId)));\n            const payload = {};\n            const uri = new URL(this.client.config.endpoint + apiPath);\n            const apiHeaders = {\n                'X-Appwrite-Project': this.client.config.project,\n                'accept': 'application/json',\n            };\n            return this.client.call('get', uri, apiHeaders, payload);\n        }\n        updateSession(paramsOrFirst) {\n            let params;\n            if ((paramsOrFirst && typeof paramsOrFirst === 'object' && !Array.isArray(paramsOrFirst))) {\n                params = (paramsOrFirst || {});\n            }\n            else {\n                params = {\n                    sessionId: paramsOrFirst\n                };\n            }\n            const sessionId = params.sessionId;\n            if (typeof sessionId === 'undefined') {\n                throw new AppwriteException('Missing required parameter: \"sessionId\"');\n            }\n            const apiPath = '/account/sessions/{sessionId}'.replace('{sessionId}', encodeURIComponent(String(sessionId)));\n            const payload = {};\n            const uri = new URL(this.client.config.endpoint + apiPath);\n            const apiHeaders = {\n                'X-Appwrite-Project': this.client.config.project,\n                'content-type': 'application/json',\n                'accept': 'application/json',\n            };\n            return this.client.call('patch', uri, apiHeaders, payload);\n        }\n        deleteSession(paramsOrFirst) {\n            let params;\n            if ((paramsOrFirst && typeof paramsOrFirst === 'object' && !Array.isArray(paramsOrFirst))) {\n                params = (paramsOrFirst || {});\n            }\n            else {\n                params = {\n                    sessionId: paramsOrFirst\n                };\n            }\n            const sessionId = params.sessionId;\n            if (typeof sessionId === 'undefined') {\n                throw new AppwriteException('Missing required parameter: \"sessionId\"');\n            }\n            const apiPath = '/account/sessions/{sessionId}'.replace('{sessionId}', encodeURIComponent(String(sessionId)));\n            const payload = {};\n            const uri = new URL(this.client.config.endpoint + apiPath);\n            const apiHeaders = {\n                'X-Appwrite-Project': this.client.config.project,\n                'content-type': 'application/json',\n            };\n            return this.client.call('delete', uri, apiHeaders, payload);\n        }\n        /**\n         * Block the currently logged in user account. Behind the scene, the user record is not deleted but permanently blocked from any access. To completely delete a user, use the Users API instead.\n         *\n         * @throws {AppwriteException}\n         * @returns {Promise<Models.User<Preferences>>}\n         */\n        updateStatus() {\n            const apiPath = '/account/status';\n            const payload = {};\n            const uri = new URL(this.client.config.endpoint + apiPath);\n            const apiHeaders = {\n                'X-Appwrite-Project': this.client.config.project,\n                'content-type': 'application/json',\n                'accept': 'application/json',\n            };\n            return this.client.call('patch', uri, apiHeaders, payload);\n        }\n        createPushTarget(paramsOrFirst, ...rest) {\n            let params;\n            if ((paramsOrFirst && typeof paramsOrFirst === 'object' && !Array.isArray(paramsOrFirst))) {\n                params = (paramsOrFirst || {});\n            }\n            else {\n                params = {\n                    targetId: paramsOrFirst,\n                    identifier: rest[0],\n                    providerId: rest[1]\n                };\n            }\n            const targetId = params.targetId;\n            const identifier = params.identifier;\n            const providerId = params.providerId;\n            if (typeof targetId === 'undefined') {\n                throw new AppwriteException('Missing required parameter: \"targetId\"');\n            }\n            if (typeof identifier === 'undefined') {\n                throw new AppwriteException('Missing required parameter: \"identifier\"');\n            }\n            const apiPath = '/account/targets/push';\n            const payload = {};\n            if (typeof targetId !== 'undefined') {\n                payload['targetId'] = targetId;\n            }\n            if (typeof identifier !== 'undefined') {\n                payload['identifier'] = identifier;\n            }\n            if (typeof providerId !== 'undefined') {\n                payload['providerId'] = providerId;\n            }\n            const uri = new URL(this.client.config.endpoint + apiPath);\n            const apiHeaders = {\n                'X-Appwrite-Project': this.client.config.project,\n                'content-type': 'application/json',\n                'accept': 'application/json',\n            };\n            return this.client.call('post', uri, apiHeaders, payload);\n        }\n        updatePushTarget(paramsOrFirst, ...rest) {\n            let params;\n            if ((paramsOrFirst && typeof paramsOrFirst === 'object' && !Array.isArray(paramsOrFirst))) {\n                params = (paramsOrFirst || {});\n            }\n            else {\n                params = {\n                    targetId: paramsOrFirst,\n                    identifier: rest[0]\n                };\n            }\n            const targetId = params.targetId;\n            const identifier = params.identifier;\n            if (typeof targetId === 'undefined') {\n                throw new AppwriteException('Missing required parameter: \"targetId\"');\n            }\n            if (typeof identifier === 'undefined') {\n                throw new AppwriteException('Missing required parameter: \"identifier\"');\n            }\n            const apiPath = '/account/targets/{targetId}/push'.replace('{targetId}', encodeURIComponent(String(targetId)));\n            const payload = {};\n            if (typeof identifier !== 'undefined') {\n                payload['identifier'] = identifier;\n            }\n            const uri = new URL(this.client.config.endpoint + apiPath);\n            const apiHeaders = {\n                'X-Appwrite-Project': this.client.config.project,\n                'content-type': 'application/json',\n                'accept': 'application/json',\n            };\n            return this.client.call('put', uri, apiHeaders, payload);\n        }\n        deletePushTarget(paramsOrFirst) {\n            let params;\n            if ((paramsOrFirst && typeof paramsOrFirst === 'object' && !Array.isArray(paramsOrFirst))) {\n                params = (paramsOrFirst || {});\n            }\n            else {\n                params = {\n                    targetId: paramsOrFirst\n                };\n            }\n            const targetId = params.targetId;\n            if (typeof targetId === 'undefined') {\n                throw new AppwriteException('Missing required parameter: \"targetId\"');\n            }\n            const apiPath = '/account/targets/{targetId}/push'.replace('{targetId}', encodeURIComponent(String(targetId)));\n            const payload = {};\n            const uri = new URL(this.client.config.endpoint + apiPath);\n            const apiHeaders = {\n                'X-Appwrite-Project': this.client.config.project,\n                'content-type': 'application/json',\n            };\n            return this.client.call('delete', uri, apiHeaders, payload);\n        }\n        createEmailToken(paramsOrFirst, ...rest) {\n            let params;\n            if ((paramsOrFirst && typeof paramsOrFirst === 'object' && !Array.isArray(paramsOrFirst))) {\n                params = (paramsOrFirst || {});\n            }\n            else {\n                params = {\n                    userId: paramsOrFirst,\n                    email: rest[0],\n                    phrase: rest[1]\n                };\n            }\n            const userId = params.userId;\n            const email = params.email;\n            const phrase = params.phrase;\n            if (typeof userId === 'undefined') {\n                throw new AppwriteException('Missing required parameter: \"userId\"');\n            }\n            if (typeof email === 'undefined') {\n                throw new AppwriteException('Missing required parameter: \"email\"');\n            }\n            const apiPath = '/account/tokens/email';\n            const payload = {};\n            if (typeof userId !== 'undefined') {\n                payload['userId'] = userId;\n            }\n            if (typeof email !== 'undefined') {\n                payload['email'] = email;\n            }\n            if (typeof phrase !== 'undefined') {\n                payload['phrase'] = phrase;\n            }\n            const uri = new URL(this.client.config.endpoint + apiPath);\n            const apiHeaders = {\n                'X-Appwrite-Project': this.client.config.project,\n                'content-type': 'application/json',\n                'accept': 'application/json',\n            };\n            return this.client.call('post', uri, apiHeaders, payload);\n        }\n        createMagicURLToken(paramsOrFirst, ...rest) {\n            let params;\n            if ((paramsOrFirst && typeof paramsOrFirst === 'object' && !Array.isArray(paramsOrFirst))) {\n                params = (paramsOrFirst || {});\n            }\n            else {\n                params = {\n                    userId: paramsOrFirst,\n                    email: rest[0],\n                    url: rest[1],\n                    phrase: rest[2]\n                };\n            }\n            const userId = params.userId;\n            const email = params.email;\n            const url = params.url;\n            const phrase = params.phrase;\n            if (typeof userId === 'undefined') {\n                throw new AppwriteException('Missing required parameter: \"userId\"');\n            }\n            if (typeof email === 'undefined') {\n                throw new AppwriteException('Missing required parameter: \"email\"');\n            }\n            const apiPath = '/account/tokens/magic-url';\n            const payload = {};\n            if (typeof userId !== 'undefined') {\n                payload['userId'] = userId;\n            }\n            if (typeof email !== 'undefined') {\n                payload['email'] = email;\n            }\n            if (typeof url !== 'undefined') {\n                payload['url'] = url;\n            }\n            if (typeof phrase !== 'undefined') {\n                payload['phrase'] = phrase;\n            }\n            const uri = new URL(this.client.config.endpoint + apiPath);\n            const apiHeaders = {\n                'X-Appwrite-Project': this.client.config.project,\n                'content-type': 'application/json',\n                'accept': 'application/json',\n            };\n            return this.client.call('post', uri, apiHeaders, payload);\n        }\n        createOAuth2Token(paramsOrFirst, ...rest) {\n            let params;\n            if ((paramsOrFirst && typeof paramsOrFirst === 'object' && !Array.isArray(paramsOrFirst) && ('provider' in paramsOrFirst || 'success' in paramsOrFirst || 'failure' in paramsOrFirst || 'scopes' in paramsOrFirst))) {\n                params = (paramsOrFirst || {});\n            }\n            else {\n                params = {\n                    provider: paramsOrFirst,\n                    success: rest[0],\n                    failure: rest[1],\n                    scopes: rest[2]\n                };\n            }\n            const provider = params.provider;\n            const success = params.success;\n            const failure = params.failure;\n            const scopes = params.scopes;\n            if (typeof provider === 'undefined') {\n                throw new AppwriteException('Missing required parameter: \"provider\"');\n            }\n            const apiPath = '/account/tokens/oauth2/{provider}'.replace('{provider}', encodeURIComponent(String(provider)));\n            const payload = {};\n            if (typeof success !== 'undefined') {\n                payload['success'] = success;\n            }\n            if (typeof failure !== 'undefined') {\n                payload['failure'] = failure;\n            }\n            if (typeof scopes !== 'undefined') {\n                payload['scopes'] = scopes;\n            }\n            const uri = new URL(this.client.config.endpoint + apiPath);\n            ({\n                'X-Appwrite-Project': this.client.config.project});\n            payload['project'] = this.client.config.project;\n            for (const [key, value] of Object.entries(Service.flatten(payload))) {\n                uri.searchParams.append(key, value);\n            }\n            if (typeof window !== 'undefined' && (window === null || window === void 0 ? void 0 : window.location)) {\n                window.location.href = uri.toString();\n                return;\n            }\n            else {\n                return uri.toString();\n            }\n        }\n        createPhoneToken(paramsOrFirst, ...rest) {\n            let params;\n            if ((paramsOrFirst && typeof paramsOrFirst === 'object' && !Array.isArray(paramsOrFirst))) {\n                params = (paramsOrFirst || {});\n            }\n            else {\n                params = {\n                    userId: paramsOrFirst,\n                    phone: rest[0]\n                };\n            }\n            const userId = params.userId;\n            const phone = params.phone;\n            if (typeof userId === 'undefined') {\n                throw new AppwriteException('Missing required parameter: \"userId\"');\n            }\n            if (typeof phone === 'undefined') {\n                throw new AppwriteException('Missing required parameter: \"phone\"');\n            }\n            const apiPath = '/account/tokens/phone';\n            const payload = {};\n            if (typeof userId !== 'undefined') {\n                payload['userId'] = userId;\n            }\n            if (typeof phone !== 'undefined') {\n                payload['phone'] = phone;\n            }\n            const uri = new URL(this.client.config.endpoint + apiPath);\n            const apiHeaders = {\n                'X-Appwrite-Project': this.client.config.project,\n                'content-type': 'application/json',\n                'accept': 'application/json',\n            };\n            return this.client.call('post', uri, apiHeaders, payload);\n        }\n        createEmailVerification(paramsOrFirst) {\n            let params;\n            if ((paramsOrFirst && typeof paramsOrFirst === 'object' && !Array.isArray(paramsOrFirst))) {\n                params = (paramsOrFirst || {});\n            }\n            else {\n                params = {\n                    url: paramsOrFirst\n                };\n            }\n            const url = params.url;\n            if (typeof url === 'undefined') {\n                throw new AppwriteException('Missing required parameter: \"url\"');\n            }\n            const apiPath = '/account/verifications/email';\n            const payload = {};\n            if (typeof url !== 'undefined') {\n                payload['url'] = url;\n            }\n            const uri = new URL(this.client.config.endpoint + apiPath);\n            const apiHeaders = {\n                'X-Appwrite-Project': this.client.config.project,\n                'content-type': 'application/json',\n                'accept': 'application/json',\n            };\n            return this.client.call('post', uri, apiHeaders, payload);\n        }\n        createVerification(paramsOrFirst) {\n            let params;\n            if ((paramsOrFirst && typeof paramsOrFirst === 'object' && !Array.isArray(paramsOrFirst))) {\n                params = (paramsOrFirst || {});\n            }\n            else {\n                params = {\n                    url: paramsOrFirst\n                };\n            }\n            const url = params.url;\n            if (typeof url === 'undefined') {\n                throw new AppwriteException('Missing required parameter: \"url\"');\n            }\n            const apiPath = '/account/verifications/email';\n            const payload = {};\n            if (typeof url !== 'undefined') {\n                payload['url'] = url;\n            }\n            const uri = new URL(this.client.config.endpoint + apiPath);\n            const apiHeaders = {\n                'X-Appwrite-Project': this.client.config.project,\n                'content-type': 'application/json',\n                'accept': 'application/json',\n            };\n            return this.client.call('post', uri, apiHeaders, payload);\n        }\n        updateEmailVerification(paramsOrFirst, ...rest) {\n            let params;\n            if ((paramsOrFirst && typeof paramsOrFirst === 'object' && !Array.isArray(paramsOrFirst))) {\n                params = (paramsOrFirst || {});\n            }\n            else {\n                params = {\n                    userId: paramsOrFirst,\n                    secret: rest[0]\n                };\n            }\n            const userId = params.userId;\n            const secret = params.secret;\n            if (typeof userId === 'undefined') {\n                throw new AppwriteException('Missing required parameter: \"userId\"');\n            }\n            if (typeof secret === 'undefined') {\n                throw new AppwriteException('Missing required parameter: \"secret\"');\n            }\n            const apiPath = '/account/verifications/email';\n            const payload = {};\n            if (typeof userId !== 'undefined') {\n                payload['userId'] = userId;\n            }\n            if (typeof secret !== 'undefined') {\n                payload['secret'] = secret;\n            }\n            const uri = new URL(this.client.config.endpoint + apiPath);\n            const apiHeaders = {\n                'X-Appwrite-Project': this.client.config.project,\n                'content-type': 'application/json',\n                'accept': 'application/json',\n            };\n            return this.client.call('put', uri, apiHeaders, payload);\n        }\n        updateVerification(paramsOrFirst, ...rest) {\n            let params;\n            if ((paramsOrFirst && typeof paramsOrFirst === 'object' && !Array.isArray(paramsOrFirst))) {\n                params = (paramsOrFirst || {});\n            }\n            else {\n                params = {\n                    userId: paramsOrFirst,\n                    secret: rest[0]\n                };\n            }\n            const userId = params.userId;\n            const secret = params.secret;\n            if (typeof userId === 'undefined') {\n                throw new AppwriteException('Missing required parameter: \"userId\"');\n            }\n            if (typeof secret === 'undefined') {\n                throw new AppwriteException('Missing required parameter: \"secret\"');\n            }\n            const apiPath = '/account/verifications/email';\n            const payload = {};\n            if (typeof userId !== 'undefined') {\n                payload['userId'] = userId;\n            }\n            if (typeof secret !== 'undefined') {\n                payload['secret'] = secret;\n            }\n            const uri = new URL(this.client.config.endpoint + apiPath);\n            const apiHeaders = {\n                'X-Appwrite-Project': this.client.config.project,\n                'content-type': 'application/json',\n                'accept': 'application/json',\n            };\n            return this.client.call('put', uri, apiHeaders, payload);\n        }\n        /**\n         * Use this endpoint to send a verification SMS to the currently logged in user. This endpoint is meant for use after updating a user's phone number using the [accountUpdatePhone](https://appwrite.io/docs/references/cloud/client-web/account#updatePhone) endpoint. Learn more about how to [complete the verification process](https://appwrite.io/docs/references/cloud/client-web/account#updatePhoneVerification). The verification code sent to the user's phone number is valid for 15 minutes.\n         *\n         * @throws {AppwriteException}\n         * @returns {Promise<Models.Token>}\n         */\n        createPhoneVerification() {\n            const apiPath = '/account/verifications/phone';\n            const payload = {};\n            const uri = new URL(this.client.config.endpoint + apiPath);\n            const apiHeaders = {\n                'X-Appwrite-Project': this.client.config.project,\n                'content-type': 'application/json',\n                'accept': 'application/json',\n            };\n            return this.client.call('post', uri, apiHeaders, payload);\n        }\n        updatePhoneVerification(paramsOrFirst, ...rest) {\n            let params;\n            if ((paramsOrFirst && typeof paramsOrFirst === 'object' && !Array.isArray(paramsOrFirst))) {\n                params = (paramsOrFirst || {});\n            }\n            else {\n                params = {\n                    userId: paramsOrFirst,\n                    secret: rest[0]\n                };\n            }\n            const userId = params.userId;\n            const secret = params.secret;\n            if (typeof userId === 'undefined') {\n                throw new AppwriteException('Missing required parameter: \"userId\"');\n            }\n            if (typeof secret === 'undefined') {\n                throw new AppwriteException('Missing required parameter: \"secret\"');\n            }\n            const apiPath = '/account/verifications/phone';\n            const payload = {};\n            if (typeof userId !== 'undefined') {\n                payload['userId'] = userId;\n            }\n            if (typeof secret !== 'undefined') {\n                payload['secret'] = secret;\n            }\n            const uri = new URL(this.client.config.endpoint + apiPath);\n            const apiHeaders = {\n                'X-Appwrite-Project': this.client.config.project,\n                'content-type': 'application/json',\n                'accept': 'application/json',\n            };\n            return this.client.call('put', uri, apiHeaders, payload);\n        }\n    }\n\n    class Avatars {\n        constructor(client) {\n            this.client = client;\n        }\n        getBrowser(paramsOrFirst, ...rest) {\n            let params;\n            if ((paramsOrFirst && typeof paramsOrFirst === 'object' && !Array.isArray(paramsOrFirst) && ('code' in paramsOrFirst || 'width' in paramsOrFirst || 'height' in paramsOrFirst || 'quality' in paramsOrFirst))) {\n                params = (paramsOrFirst || {});\n            }\n            else {\n                params = {\n                    code: paramsOrFirst,\n                    width: rest[0],\n                    height: rest[1],\n                    quality: rest[2]\n                };\n            }\n            const code = params.code;\n            const width = params.width;\n            const height = params.height;\n            const quality = params.quality;\n            if (typeof code === 'undefined') {\n                throw new AppwriteException('Missing required parameter: \"code\"');\n            }\n            const apiPath = '/avatars/browsers/{code}'.replace('{code}', encodeURIComponent(String(code)));\n            const payload = {};\n            if (typeof width !== 'undefined') {\n                payload['width'] = width;\n            }\n            if (typeof height !== 'undefined') {\n                payload['height'] = height;\n            }\n            if (typeof quality !== 'undefined') {\n                payload['quality'] = quality;\n            }\n            const uri = new URL(this.client.config.endpoint + apiPath);\n            ({\n                'X-Appwrite-Project': this.client.config.project});\n            payload['project'] = this.client.config.project;\n            payload['impersonateuserid'] = this.client.config.impersonateuserid;\n            for (const [key, value] of Object.entries(Service.flatten(payload))) {\n                uri.searchParams.append(key, value);\n            }\n            return uri.toString();\n        }\n        getCreditCard(paramsOrFirst, ...rest) {\n            let params;\n            if ((paramsOrFirst && typeof paramsOrFirst === 'object' && !Array.isArray(paramsOrFirst) && ('code' in paramsOrFirst || 'width' in paramsOrFirst || 'height' in paramsOrFirst || 'quality' in paramsOrFirst))) {\n                params = (paramsOrFirst || {});\n            }\n            else {\n                params = {\n                    code: paramsOrFirst,\n                    width: rest[0],\n                    height: rest[1],\n                    quality: rest[2]\n                };\n            }\n            const code = params.code;\n            const width = params.width;\n            const height = params.height;\n            const quality = params.quality;\n            if (typeof code === 'undefined') {\n                throw new AppwriteException('Missing required parameter: \"code\"');\n            }\n            const apiPath = '/avatars/credit-cards/{code}'.replace('{code}', encodeURIComponent(String(code)));\n            const payload = {};\n            if (typeof width !== 'undefined') {\n                payload['width'] = width;\n            }\n            if (typeof height !== 'undefined') {\n                payload['height'] = height;\n            }\n            if (typeof quality !== 'undefined') {\n                payload['quality'] = quality;\n            }\n            const uri = new URL(this.client.config.endpoint + apiPath);\n            ({\n                'X-Appwrite-Project': this.client.config.project});\n            payload['project'] = this.client.config.project;\n            payload['impersonateuserid'] = this.client.config.impersonateuserid;\n            for (const [key, value] of Object.entries(Service.flatten(payload))) {\n                uri.searchParams.append(key, value);\n            }\n            return uri.toString();\n        }\n        getFavicon(paramsOrFirst) {\n            let params;\n            if ((paramsOrFirst && typeof paramsOrFirst === 'object' && !Array.isArray(paramsOrFirst))) {\n                params = (paramsOrFirst || {});\n            }\n            else {\n                params = {\n                    url: paramsOrFirst\n                };\n            }\n            const url = params.url;\n            if (typeof url === 'undefined') {\n                throw new AppwriteException('Missing required parameter: \"url\"');\n            }\n            const apiPath = '/avatars/favicon';\n            const payload = {};\n            if (typeof url !== 'undefined') {\n                payload['url'] = url;\n            }\n            const uri = new URL(this.client.config.endpoint + apiPath);\n            ({\n                'X-Appwrite-Project': this.client.config.project});\n            payload['project'] = this.client.config.project;\n            payload['impersonateuserid'] = this.client.config.impersonateuserid;\n            for (const [key, value] of Object.entries(Service.flatten(payload))) {\n                uri.searchParams.append(key, value);\n            }\n            return uri.toString();\n        }\n        getFlag(paramsOrFirst, ...rest) {\n            let params;\n            if ((paramsOrFirst && typeof paramsOrFirst === 'object' && !Array.isArray(paramsOrFirst) && ('code' in paramsOrFirst || 'width' in paramsOrFirst || 'height' in paramsOrFirst || 'quality' in paramsOrFirst))) {\n                params = (paramsOrFirst || {});\n            }\n            else {\n                params = {\n                    code: paramsOrFirst,\n                    width: rest[0],\n                    height: rest[1],\n                    quality: rest[2]\n                };\n            }\n            const code = params.code;\n            const width = params.width;\n            const height = params.height;\n            const quality = params.quality;\n            if (typeof code === 'undefined') {\n                throw new AppwriteException('Missing required parameter: \"code\"');\n            }\n            const apiPath = '/avatars/flags/{code}'.replace('{code}', encodeURIComponent(String(code)));\n            const payload = {};\n            if (typeof width !== 'undefined') {\n                payload['width'] = width;\n            }\n            if (typeof height !== 'undefined') {\n                payload['height'] = height;\n            }\n            if (typeof quality !== 'undefined') {\n                payload['quality'] = quality;\n            }\n            const uri = new URL(this.client.config.endpoint + apiPath);\n            ({\n                'X-Appwrite-Project': this.client.config.project});\n            payload['project'] = this.client.config.project;\n            payload['impersonateuserid'] = this.client.config.impersonateuserid;\n            for (const [key, value] of Object.entries(Service.flatten(payload))) {\n                uri.searchParams.append(key, value);\n            }\n            return uri.toString();\n        }\n        getImage(paramsOrFirst, ...rest) {\n            let params;\n            if ((paramsOrFirst && typeof paramsOrFirst === 'object' && !Array.isArray(paramsOrFirst))) {\n                params = (paramsOrFirst || {});\n            }\n            else {\n                params = {\n                    url: paramsOrFirst,\n                    width: rest[0],\n                    height: rest[1]\n                };\n            }\n            const url = params.url;\n            const width = params.width;\n            const height = params.height;\n            if (typeof url === 'undefined') {\n                throw new AppwriteException('Missing required parameter: \"url\"');\n            }\n            const apiPath = '/avatars/image';\n            const payload = {};\n            if (typeof url !== 'undefined') {\n                payload['url'] = url;\n            }\n            if (typeof width !== 'undefined') {\n                payload['width'] = width;\n            }\n            if (typeof height !== 'undefined') {\n                payload['height'] = height;\n            }\n            const uri = new URL(this.client.config.endpoint + apiPath);\n            ({\n                'X-Appwrite-Project': this.client.config.project});\n            payload['project'] = this.client.config.project;\n            payload['impersonateuserid'] = this.client.config.impersonateuserid;\n            for (const [key, value] of Object.entries(Service.flatten(payload))) {\n                uri.searchParams.append(key, value);\n            }\n            return uri.toString();\n        }\n        getInitials(paramsOrFirst, ...rest) {\n            let params;\n            if (!paramsOrFirst || (paramsOrFirst && typeof paramsOrFirst === 'object' && !Array.isArray(paramsOrFirst))) {\n                params = (paramsOrFirst || {});\n            }\n            else {\n                params = {\n                    name: paramsOrFirst,\n                    width: rest[0],\n                    height: rest[1],\n                    background: rest[2]\n                };\n            }\n            const name = params.name;\n            const width = params.width;\n            const height = params.height;\n            const background = params.background;\n            const apiPath = '/avatars/initials';\n            const payload = {};\n            if (typeof name !== 'undefined') {\n                payload['name'] = name;\n            }\n            if (typeof width !== 'undefined') {\n                payload['width'] = width;\n            }\n            if (typeof height !== 'undefined') {\n                payload['height'] = height;\n            }\n            if (typeof background !== 'undefined') {\n                payload['background'] = background;\n            }\n            const uri = new URL(this.client.config.endpoint + apiPath);\n            ({\n                'X-Appwrite-Project': this.client.config.project});\n            payload['project'] = this.client.config.project;\n            payload['impersonateuserid'] = this.client.config.impersonateuserid;\n            for (const [key, value] of Object.entries(Service.flatten(payload))) {\n                uri.searchParams.append(key, value);\n            }\n            return uri.toString();\n        }\n        getQR(paramsOrFirst, ...rest) {\n            let params;\n            if ((paramsOrFirst && typeof paramsOrFirst === 'object' && !Array.isArray(paramsOrFirst))) {\n                params = (paramsOrFirst || {});\n            }\n            else {\n                params = {\n                    text: paramsOrFirst,\n                    size: rest[0],\n                    margin: rest[1],\n                    download: rest[2]\n                };\n            }\n            const text = params.text;\n            const size = params.size;\n            const margin = params.margin;\n            const download = params.download;\n            if (typeof text === 'undefined') {\n                throw new AppwriteException('Missing required parameter: \"text\"');\n            }\n            const apiPath = '/avatars/qr';\n            const payload = {};\n            if (typeof text !== 'undefined') {\n                payload['text'] = text;\n            }\n            if (typeof size !== 'undefined') {\n                payload['size'] = size;\n            }\n            if (typeof margin !== 'undefined') {\n                payload['margin'] = margin;\n            }\n            if (typeof download !== 'undefined') {\n                payload['download'] = download;\n            }\n            const uri = new URL(this.client.config.endpoint + apiPath);\n            ({\n                'X-Appwrite-Project': this.client.config.project});\n            payload['project'] = this.client.config.project;\n            payload['impersonateuserid'] = this.client.config.impersonateuserid;\n            for (const [key, value] of Object.entries(Service.flatten(payload))) {\n                uri.searchParams.append(key, value);\n            }\n            return uri.toString();\n        }\n        getScreenshot(paramsOrFirst, ...rest) {\n            let params;\n            if ((paramsOrFirst && typeof paramsOrFirst === 'object' && !Array.isArray(paramsOrFirst))) {\n                params = (paramsOrFirst || {});\n            }\n            else {\n                params = {\n                    url: paramsOrFirst,\n                    headers: rest[0],\n                    viewportWidth: rest[1],\n                    viewportHeight: rest[2],\n                    scale: rest[3],\n                    theme: rest[4],\n                    userAgent: rest[5],\n                    fullpage: rest[6],\n                    locale: rest[7],\n                    timezone: rest[8],\n                    latitude: rest[9],\n                    longitude: rest[10],\n                    accuracy: rest[11],\n                    touch: rest[12],\n                    permissions: rest[13],\n                    sleep: rest[14],\n                    width: rest[15],\n                    height: rest[16],\n                    quality: rest[17],\n                    output: rest[18]\n                };\n            }\n            const url = params.url;\n            const headers = params.headers;\n            const viewportWidth = params.viewportWidth;\n            const viewportHeight = params.viewportHeight;\n            const scale = params.scale;\n            const theme = params.theme;\n            const userAgent = params.userAgent;\n            const fullpage = params.fullpage;\n            const locale = params.locale;\n            const timezone = params.timezone;\n            const latitude = params.latitude;\n            const longitude = params.longitude;\n            const accuracy = params.accuracy;\n            const touch = params.touch;\n            const permissions = params.permissions;\n            const sleep = params.sleep;\n            const width = params.width;\n            const height = params.height;\n            const quality = params.quality;\n            const output = params.output;\n            if (typeof url === 'undefined') {\n                throw new AppwriteException('Missing required parameter: \"url\"');\n            }\n            const apiPath = '/avatars/screenshots';\n            const payload = {};\n            if (typeof url !== 'undefined') {\n                payload['url'] = url;\n            }\n            if (typeof headers !== 'undefined') {\n                payload['headers'] = headers;\n            }\n            if (typeof viewportWidth !== 'undefined') {\n                payload['viewportWidth'] = viewportWidth;\n            }\n            if (typeof viewportHeight !== 'undefined') {\n                payload['viewportHeight'] = viewportHeight;\n            }\n            if (typeof scale !== 'undefined') {\n                payload['scale'] = scale;\n            }\n            if (typeof theme !== 'undefined') {\n                payload['theme'] = theme;\n            }\n            if (typeof userAgent !== 'undefined') {\n                payload['userAgent'] = userAgent;\n            }\n            if (typeof fullpage !== 'undefined') {\n                payload['fullpage'] = fullpage;\n            }\n            if (typeof locale !== 'undefined') {\n                payload['locale'] = locale;\n            }\n            if (typeof timezone !== 'undefined') {\n                payload['timezone'] = timezone;\n            }\n            if (typeof latitude !== 'undefined') {\n                payload['latitude'] = latitude;\n            }\n            if (typeof longitude !== 'undefined') {\n                payload['longitude'] = longitude;\n            }\n            if (typeof accuracy !== 'undefined') {\n                payload['accuracy'] = accuracy;\n            }\n            if (typeof touch !== 'undefined') {\n                payload['touch'] = touch;\n            }\n            if (typeof permissions !== 'undefined') {\n                payload['permissions'] = permissions;\n            }\n            if (typeof sleep !== 'undefined') {\n                payload['sleep'] = sleep;\n            }\n            if (typeof width !== 'undefined') {\n                payload['width'] = width;\n            }\n            if (typeof height !== 'undefined') {\n                payload['height'] = height;\n            }\n            if (typeof quality !== 'undefined') {\n                payload['quality'] = quality;\n            }\n            if (typeof output !== 'undefined') {\n                payload['output'] = output;\n            }\n            const uri = new URL(this.client.config.endpoint + apiPath);\n            ({\n                'X-Appwrite-Project': this.client.config.project});\n            payload['project'] = this.client.config.project;\n            payload['impersonateuserid'] = this.client.config.impersonateuserid;\n            for (const [key, value] of Object.entries(Service.flatten(payload))) {\n                uri.searchParams.append(key, value);\n            }\n            return uri.toString();\n        }\n    }\n\n    class Databases {\n        constructor(client) {\n            this.client = client;\n        }\n        listTransactions(paramsOrFirst) {\n            let params;\n            if (!paramsOrFirst || (paramsOrFirst && typeof paramsOrFirst === 'object' && !Array.isArray(paramsOrFirst))) {\n                params = (paramsOrFirst || {});\n            }\n            else {\n                params = {\n                    queries: paramsOrFirst\n                };\n            }\n            const queries = params.queries;\n            const apiPath = '/databases/transactions';\n            const payload = {};\n            if (typeof queries !== 'undefined') {\n                payload['queries'] = queries;\n            }\n            const uri = new URL(this.client.config.endpoint + apiPath);\n            const apiHeaders = {\n                'X-Appwrite-Project': this.client.config.project,\n                'accept': 'application/json',\n            };\n            return this.client.call('get', uri, apiHeaders, payload);\n        }\n        createTransaction(paramsOrFirst) {\n            let params;\n            if (!paramsOrFirst || (paramsOrFirst && typeof paramsOrFirst === 'object' && !Array.isArray(paramsOrFirst))) {\n                params = (paramsOrFirst || {});\n            }\n            else {\n                params = {\n                    ttl: paramsOrFirst\n                };\n            }\n            const ttl = params.ttl;\n            const apiPath = '/databases/transactions';\n            const payload = {};\n            if (typeof ttl !== 'undefined') {\n                payload['ttl'] = ttl;\n            }\n            const uri = new URL(this.client.config.endpoint + apiPath);\n            const apiHeaders = {\n                'X-Appwrite-Project': this.client.config.project,\n                'content-type': 'application/json',\n                'accept': 'application/json',\n            };\n            return this.client.call('post', uri, apiHeaders, payload);\n        }\n        getTransaction(paramsOrFirst) {\n            let params;\n            if ((paramsOrFirst && typeof paramsOrFirst === 'object' && !Array.isArray(paramsOrFirst))) {\n                params = (paramsOrFirst || {});\n            }\n            else {\n                params = {\n                    transactionId: paramsOrFirst\n                };\n            }\n            const transactionId = params.transactionId;\n            if (typeof transactionId === 'undefined') {\n                throw new AppwriteException('Missing required parameter: \"transactionId\"');\n            }\n            const apiPath = '/databases/transactions/{transactionId}'.replace('{transactionId}', encodeURIComponent(String(transactionId)));\n            const payload = {};\n            const uri = new URL(this.client.config.endpoint + apiPath);\n            const apiHeaders = {\n                'X-Appwrite-Project': this.client.config.project,\n                'accept': 'application/json',\n            };\n            return this.client.call('get', uri, apiHeaders, payload);\n        }\n        updateTransaction(paramsOrFirst, ...rest) {\n            let params;\n            if ((paramsOrFirst && typeof paramsOrFirst === 'object' && !Array.isArray(paramsOrFirst))) {\n                params = (paramsOrFirst || {});\n            }\n            else {\n                params = {\n                    transactionId: paramsOrFirst,\n                    commit: rest[0],\n                    rollback: rest[1]\n                };\n            }\n            const transactionId = params.transactionId;\n            const commit = params.commit;\n            const rollback = params.rollback;\n            if (typeof transactionId === 'undefined') {\n                throw new AppwriteException('Missing required parameter: \"transactionId\"');\n            }\n            const apiPath = '/databases/transactions/{transactionId}'.replace('{transactionId}', encodeURIComponent(String(transactionId)));\n            const payload = {};\n            if (typeof commit !== 'undefined') {\n                payload['commit'] = commit;\n            }\n            if (typeof rollback !== 'undefined') {\n                payload['rollback'] = rollback;\n            }\n            const uri = new URL(this.client.config.endpoint + apiPath);\n            const apiHeaders = {\n                'X-Appwrite-Project': this.client.config.project,\n                'content-type': 'application/json',\n                'accept': 'application/json',\n            };\n            return this.client.call('patch', uri, apiHeaders, payload);\n        }\n        deleteTransaction(paramsOrFirst) {\n            let params;\n            if ((paramsOrFirst && typeof paramsOrFirst === 'object' && !Array.isArray(paramsOrFirst))) {\n                params = (paramsOrFirst || {});\n            }\n            else {\n                params = {\n                    transactionId: paramsOrFirst\n                };\n            }\n            const transactionId = params.transactionId;\n            if (typeof transactionId === 'undefined') {\n                throw new AppwriteException('Missing required parameter: \"transactionId\"');\n            }\n            const apiPath = '/databases/transactions/{transactionId}'.replace('{transactionId}', encodeURIComponent(String(transactionId)));\n            const payload = {};\n            const uri = new URL(this.client.config.endpoint + apiPath);\n            const apiHeaders = {\n                'X-Appwrite-Project': this.client.config.project,\n                'content-type': 'application/json',\n            };\n            return this.client.call('delete', uri, apiHeaders, payload);\n        }\n        createOperations(paramsOrFirst, ...rest) {\n            let params;\n            if ((paramsOrFirst && typeof paramsOrFirst === 'object' && !Array.isArray(paramsOrFirst))) {\n                params = (paramsOrFirst || {});\n            }\n            else {\n                params = {\n                    transactionId: paramsOrFirst,\n                    operations: rest[0]\n                };\n            }\n            const transactionId = params.transactionId;\n            const operations = params.operations;\n            if (typeof transactionId === 'undefined') {\n                throw new AppwriteException('Missing required parameter: \"transactionId\"');\n            }\n            const apiPath = '/databases/transactions/{transactionId}/operations'.replace('{transactionId}', encodeURIComponent(String(transactionId)));\n            const payload = {};\n            if (typeof operations !== 'undefined') {\n                payload['operations'] = operations;\n            }\n            const uri = new URL(this.client.config.endpoint + apiPath);\n            const apiHeaders = {\n                'X-Appwrite-Project': this.client.config.project,\n                'content-type': 'application/json',\n                'accept': 'application/json',\n            };\n            return this.client.call('post', uri, apiHeaders, payload);\n        }\n        listDocuments(paramsOrFirst, ...rest) {\n            let params;\n            if ((paramsOrFirst && typeof paramsOrFirst === 'object' && !Array.isArray(paramsOrFirst))) {\n                params = (paramsOrFirst || {});\n            }\n            else {\n                params = {\n                    databaseId: paramsOrFirst,\n                    collectionId: rest[0],\n                    queries: rest[1],\n                    transactionId: rest[2],\n                    total: rest[3],\n                    ttl: rest[4]\n                };\n            }\n            const databaseId = params.databaseId;\n            const collectionId = params.collectionId;\n            const queries = params.queries;\n            const transactionId = params.transactionId;\n            const total = params.total;\n            const ttl = params.ttl;\n            if (typeof databaseId === 'undefined') {\n                throw new AppwriteException('Missing required parameter: \"databaseId\"');\n            }\n            if (typeof collectionId === 'undefined') {\n                throw new AppwriteException('Missing required parameter: \"collectionId\"');\n            }\n            const apiPath = '/databases/{databaseId}/collections/{collectionId}/documents'.replace('{databaseId}', encodeURIComponent(String(databaseId))).replace('{collectionId}', encodeURIComponent(String(collectionId)));\n            const payload = {};\n            if (typeof queries !== 'undefined') {\n                payload['queries'] = queries;\n            }\n            if (typeof transactionId !== 'undefined') {\n                payload['transactionId'] = transactionId;\n            }\n            if (typeof total !== 'undefined') {\n                payload['total'] = total;\n            }\n            if (typeof ttl !== 'undefined') {\n                payload['ttl'] = ttl;\n            }\n            const uri = new URL(this.client.config.endpoint + apiPath);\n            const apiHeaders = {\n                'X-Appwrite-Project': this.client.config.project,\n                'accept': 'application/json',\n            };\n            return this.client.call('get', uri, apiHeaders, payload);\n        }\n        createDocument(paramsOrFirst, ...rest) {\n            let params;\n            if ((paramsOrFirst && typeof paramsOrFirst === 'object' && !Array.isArray(paramsOrFirst))) {\n                params = (paramsOrFirst || {});\n            }\n            else {\n                params = {\n                    databaseId: paramsOrFirst,\n                    collectionId: rest[0],\n                    documentId: rest[1],\n                    data: rest[2],\n                    permissions: rest[3],\n                    transactionId: rest[4]\n                };\n            }\n            const databaseId = params.databaseId;\n            const collectionId = params.collectionId;\n            const documentId = params.documentId;\n            const data = params.data;\n            const permissions = params.permissions;\n            const transactionId = params.transactionId;\n            if (typeof databaseId === 'undefined') {\n                throw new AppwriteException('Missing required parameter: \"databaseId\"');\n            }\n            if (typeof collectionId === 'undefined') {\n                throw new AppwriteException('Missing required parameter: \"collectionId\"');\n            }\n            if (typeof documentId === 'undefined') {\n                throw new AppwriteException('Missing required parameter: \"documentId\"');\n            }\n            if (typeof data === 'undefined') {\n                throw new AppwriteException('Missing required parameter: \"data\"');\n            }\n            const apiPath = '/databases/{databaseId}/collections/{collectionId}/documents'.replace('{databaseId}', encodeURIComponent(String(databaseId))).replace('{collectionId}', encodeURIComponent(String(collectionId)));\n            const payload = {};\n            if (typeof documentId !== 'undefined') {\n                payload['documentId'] = documentId;\n            }\n            if (typeof data !== 'undefined') {\n                payload['data'] = data;\n            }\n            if (typeof permissions !== 'undefined') {\n                payload['permissions'] = permissions;\n            }\n            if (typeof transactionId !== 'undefined') {\n                payload['transactionId'] = transactionId;\n            }\n            const uri = new URL(this.client.config.endpoint + apiPath);\n            const apiHeaders = {\n                'X-Appwrite-Project': this.client.config.project,\n                'content-type': 'application/json',\n                'accept': 'application/json',\n            };\n            return this.client.call('post', uri, apiHeaders, payload);\n        }\n        getDocument(paramsOrFirst, ...rest) {\n            let params;\n            if ((paramsOrFirst && typeof paramsOrFirst === 'object' && !Array.isArray(paramsOrFirst))) {\n                params = (paramsOrFirst || {});\n            }\n            else {\n                params = {\n                    databaseId: paramsOrFirst,\n                    collectionId: rest[0],\n                    documentId: rest[1],\n                    queries: rest[2],\n                    transactionId: rest[3]\n                };\n            }\n            const databaseId = params.databaseId;\n            const collectionId = params.collectionId;\n            const documentId = params.documentId;\n            const queries = params.queries;\n            const transactionId = params.transactionId;\n            if (typeof databaseId === 'undefined') {\n                throw new AppwriteException('Missing required parameter: \"databaseId\"');\n            }\n            if (typeof collectionId === 'undefined') {\n                throw new AppwriteException('Missing required parameter: \"collectionId\"');\n            }\n            if (typeof documentId === 'undefined') {\n                throw new AppwriteException('Missing required parameter: \"documentId\"');\n            }\n            const apiPath = '/databases/{databaseId}/collections/{collectionId}/documents/{documentId}'.replace('{databaseId}', encodeURIComponent(String(databaseId))).replace('{collectionId}', encodeURIComponent(String(collectionId))).replace('{documentId}', encodeURIComponent(String(documentId)));\n            const payload = {};\n            if (typeof queries !== 'undefined') {\n                payload['queries'] = queries;\n            }\n            if (typeof transactionId !== 'undefined') {\n                payload['transactionId'] = transactionId;\n            }\n            const uri = new URL(this.client.config.endpoint + apiPath);\n            const apiHeaders = {\n                'X-Appwrite-Project': this.client.config.project,\n                'accept': 'application/json',\n            };\n            return this.client.call('get', uri, apiHeaders, payload);\n        }\n        upsertDocument(paramsOrFirst, ...rest) {\n            let params;\n            if ((paramsOrFirst && typeof paramsOrFirst === 'object' && !Array.isArray(paramsOrFirst))) {\n                params = (paramsOrFirst || {});\n            }\n            else {\n                params = {\n                    databaseId: paramsOrFirst,\n                    collectionId: rest[0],\n                    documentId: rest[1],\n                    data: rest[2],\n                    permissions: rest[3],\n                    transactionId: rest[4]\n                };\n            }\n            const databaseId = params.databaseId;\n            const collectionId = params.collectionId;\n            const documentId = params.documentId;\n            const data = params.data;\n            const permissions = params.permissions;\n            const transactionId = params.transactionId;\n            if (typeof databaseId === 'undefined') {\n                throw new AppwriteException('Missing required parameter: \"databaseId\"');\n            }\n            if (typeof collectionId === 'undefined') {\n                throw new AppwriteException('Missing required parameter: \"collectionId\"');\n            }\n            if (typeof documentId === 'undefined') {\n                throw new AppwriteException('Missing required parameter: \"documentId\"');\n            }\n            const apiPath = '/databases/{databaseId}/collections/{collectionId}/documents/{documentId}'.replace('{databaseId}', encodeURIComponent(String(databaseId))).replace('{collectionId}', encodeURIComponent(String(collectionId))).replace('{documentId}', encodeURIComponent(String(documentId)));\n            const payload = {};\n            if (typeof data !== 'undefined') {\n                payload['data'] = data;\n            }\n            if (typeof permissions !== 'undefined') {\n                payload['permissions'] = permissions;\n            }\n            if (typeof transactionId !== 'undefined') {\n                payload['transactionId'] = transactionId;\n            }\n            const uri = new URL(this.client.config.endpoint + apiPath);\n            const apiHeaders = {\n                'X-Appwrite-Project': this.client.config.project,\n                'content-type': 'application/json',\n                'accept': 'application/json',\n            };\n            return this.client.call('put', uri, apiHeaders, payload);\n        }\n        updateDocument(paramsOrFirst, ...rest) {\n            let params;\n            if ((paramsOrFirst && typeof paramsOrFirst === 'object' && !Array.isArray(paramsOrFirst))) {\n                params = (paramsOrFirst || {});\n            }\n            else {\n                params = {\n                    databaseId: paramsOrFirst,\n                    collectionId: rest[0],\n                    documentId: rest[1],\n                    data: rest[2],\n                    permissions: rest[3],\n                    transactionId: rest[4]\n                };\n            }\n            const databaseId = params.databaseId;\n            const collectionId = params.collectionId;\n            const documentId = params.documentId;\n            const data = params.data;\n            const permissions = params.permissions;\n            const transactionId = params.transactionId;\n            if (typeof databaseId === 'undefined') {\n                throw new AppwriteException('Missing required parameter: \"databaseId\"');\n            }\n            if (typeof collectionId === 'undefined') {\n                throw new AppwriteException('Missing required parameter: \"collectionId\"');\n            }\n            if (typeof documentId === 'undefined') {\n                throw new AppwriteException('Missing required parameter: \"documentId\"');\n            }\n            const apiPath = '/databases/{databaseId}/collections/{collectionId}/documents/{documentId}'.replace('{databaseId}', encodeURIComponent(String(databaseId))).replace('{collectionId}', encodeURIComponent(String(collectionId))).replace('{documentId}', encodeURIComponent(String(documentId)));\n            const payload = {};\n            if (typeof data !== 'undefined') {\n                payload['data'] = data;\n            }\n            if (typeof permissions !== 'undefined') {\n                payload['permissions'] = permissions;\n            }\n            if (typeof transactionId !== 'undefined') {\n                payload['transactionId'] = transactionId;\n            }\n            const uri = new URL(this.client.config.endpoint + apiPath);\n            const apiHeaders = {\n                'X-Appwrite-Project': this.client.config.project,\n                'content-type': 'application/json',\n                'accept': 'application/json',\n            };\n            return this.client.call('patch', uri, apiHeaders, payload);\n        }\n        deleteDocument(paramsOrFirst, ...rest) {\n            let params;\n            if ((paramsOrFirst && typeof paramsOrFirst === 'object' && !Array.isArray(paramsOrFirst))) {\n                params = (paramsOrFirst || {});\n            }\n            else {\n                params = {\n                    databaseId: paramsOrFirst,\n                    collectionId: rest[0],\n                    documentId: rest[1],\n                    transactionId: rest[2]\n                };\n            }\n            const databaseId = params.databaseId;\n            const collectionId = params.collectionId;\n            const documentId = params.documentId;\n            const transactionId = params.transactionId;\n            if (typeof databaseId === 'undefined') {\n                throw new AppwriteException('Missing required parameter: \"databaseId\"');\n            }\n            if (typeof collectionId === 'undefined') {\n                throw new AppwriteException('Missing required parameter: \"collectionId\"');\n            }\n            if (typeof documentId === 'undefined') {\n                throw new AppwriteException('Missing required parameter: \"documentId\"');\n            }\n            const apiPath = '/databases/{databaseId}/collections/{collectionId}/documents/{documentId}'.replace('{databaseId}', encodeURIComponent(String(databaseId))).replace('{collectionId}', encodeURIComponent(String(collectionId))).replace('{documentId}', encodeURIComponent(String(documentId)));\n            const payload = {};\n            if (typeof transactionId !== 'undefined') {\n                payload['transactionId'] = transactionId;\n            }\n            const uri = new URL(this.client.config.endpoint + apiPath);\n            const apiHeaders = {\n                'X-Appwrite-Project': this.client.config.project,\n                'content-type': 'application/json',\n            };\n            return this.client.call('delete', uri, apiHeaders, payload);\n        }\n        decrementDocumentAttribute(paramsOrFirst, ...rest) {\n            let params;\n            if ((paramsOrFirst && typeof paramsOrFirst === 'object' && !Array.isArray(paramsOrFirst))) {\n                params = (paramsOrFirst || {});\n            }\n            else {\n                params = {\n                    databaseId: paramsOrFirst,\n                    collectionId: rest[0],\n                    documentId: rest[1],\n                    attribute: rest[2],\n                    value: rest[3],\n                    min: rest[4],\n                    transactionId: rest[5]\n                };\n            }\n            const databaseId = params.databaseId;\n            const collectionId = params.collectionId;\n            const documentId = params.documentId;\n            const attribute = params.attribute;\n            const value = params.value;\n            const min = params.min;\n            const transactionId = params.transactionId;\n            if (typeof databaseId === 'undefined') {\n                throw new AppwriteException('Missing required parameter: \"databaseId\"');\n            }\n            if (typeof collectionId === 'undefined') {\n                throw new AppwriteException('Missing required parameter: \"collectionId\"');\n            }\n            if (typeof documentId === 'undefined') {\n                throw new AppwriteException('Missing required parameter: \"documentId\"');\n            }\n            if (typeof attribute === 'undefined') {\n                throw new AppwriteException('Missing required parameter: \"attribute\"');\n            }\n            const apiPath = '/databases/{databaseId}/collections/{collectionId}/documents/{documentId}/{attribute}/decrement'.replace('{databaseId}', encodeURIComponent(String(databaseId))).replace('{collectionId}', encodeURIComponent(String(collectionId))).replace('{documentId}', encodeURIComponent(String(documentId))).replace('{attribute}', encodeURIComponent(String(attribute)));\n            const payload = {};\n            if (typeof value !== 'undefined') {\n                payload['value'] = value;\n            }\n            if (typeof min !== 'undefined') {\n                payload['min'] = min;\n            }\n            if (typeof transactionId !== 'undefined') {\n                payload['transactionId'] = transactionId;\n            }\n            const uri = new URL(this.client.config.endpoint + apiPath);\n            const apiHeaders = {\n                'X-Appwrite-Project': this.client.config.project,\n                'content-type': 'application/json',\n                'accept': 'application/json',\n            };\n            return this.client.call('patch', uri, apiHeaders, payload);\n        }\n        incrementDocumentAttribute(paramsOrFirst, ...rest) {\n            let params;\n            if ((paramsOrFirst && typeof paramsOrFirst === 'object' && !Array.isArray(paramsOrFirst))) {\n                params = (paramsOrFirst || {});\n            }\n            else {\n                params = {\n                    databaseId: paramsOrFirst,\n                    collectionId: rest[0],\n                    documentId: rest[1],\n                    attribute: rest[2],\n                    value: rest[3],\n                    max: rest[4],\n                    transactionId: rest[5]\n                };\n            }\n            const databaseId = params.databaseId;\n            const collectionId = params.collectionId;\n            const documentId = params.documentId;\n            const attribute = params.attribute;\n            const value = params.value;\n            const max = params.max;\n            const transactionId = params.transactionId;\n            if (typeof databaseId === 'undefined') {\n                throw new AppwriteException('Missing required parameter: \"databaseId\"');\n            }\n            if (typeof collectionId === 'undefined') {\n                throw new AppwriteException('Missing required parameter: \"collectionId\"');\n            }\n            if (typeof documentId === 'undefined') {\n                throw new AppwriteException('Missing required parameter: \"documentId\"');\n            }\n            if (typeof attribute === 'undefined') {\n                throw new AppwriteException('Missing required parameter: \"attribute\"');\n            }\n            const apiPath = '/databases/{databaseId}/collections/{collectionId}/documents/{documentId}/{attribute}/increment'.replace('{databaseId}', encodeURIComponent(String(databaseId))).replace('{collectionId}', encodeURIComponent(String(collectionId))).replace('{documentId}', encodeURIComponent(String(documentId))).replace('{attribute}', encodeURIComponent(String(attribute)));\n            const payload = {};\n            if (typeof value !== 'undefined') {\n                payload['value'] = value;\n            }\n            if (typeof max !== 'undefined') {\n                payload['max'] = max;\n            }\n            if (typeof transactionId !== 'undefined') {\n                payload['transactionId'] = transactionId;\n            }\n            const uri = new URL(this.client.config.endpoint + apiPath);\n            const apiHeaders = {\n                'X-Appwrite-Project': this.client.config.project,\n                'content-type': 'application/json',\n                'accept': 'application/json',\n            };\n            return this.client.call('patch', uri, apiHeaders, payload);\n        }\n    }\n\n    class Functions {\n        constructor(client) {\n            this.client = client;\n        }\n        listExecutions(paramsOrFirst, ...rest) {\n            let params;\n            if ((paramsOrFirst && typeof paramsOrFirst === 'object' && !Array.isArray(paramsOrFirst))) {\n                params = (paramsOrFirst || {});\n            }\n            else {\n                params = {\n                    functionId: paramsOrFirst,\n                    queries: rest[0],\n                    total: rest[1]\n                };\n            }\n            const functionId = params.functionId;\n            const queries = params.queries;\n            const total = params.total;\n            if (typeof functionId === 'undefined') {\n                throw new AppwriteException('Missing required parameter: \"functionId\"');\n            }\n            const apiPath = '/functions/{functionId}/executions'.replace('{functionId}', encodeURIComponent(String(functionId)));\n            const payload = {};\n            if (typeof queries !== 'undefined') {\n                payload['queries'] = queries;\n            }\n            if (typeof total !== 'undefined') {\n                payload['total'] = total;\n            }\n            const uri = new URL(this.client.config.endpoint + apiPath);\n            const apiHeaders = {\n                'X-Appwrite-Project': this.client.config.project,\n                'accept': 'application/json',\n            };\n            return this.client.call('get', uri, apiHeaders, payload);\n        }\n        createExecution(paramsOrFirst, ...rest) {\n            let params;\n            if ((paramsOrFirst && typeof paramsOrFirst === 'object' && !Array.isArray(paramsOrFirst))) {\n                params = (paramsOrFirst || {});\n            }\n            else {\n                params = {\n                    functionId: paramsOrFirst,\n                    body: rest[0],\n                    async: rest[1],\n                    xpath: rest[2],\n                    method: rest[3],\n                    headers: rest[4],\n                    scheduledAt: rest[5]\n                };\n            }\n            const functionId = params.functionId;\n            const body = params.body;\n            const async = params.async;\n            const xpath = params.xpath;\n            const method = params.method;\n            const headers = params.headers;\n            const scheduledAt = params.scheduledAt;\n            if (typeof functionId === 'undefined') {\n                throw new AppwriteException('Missing required parameter: \"functionId\"');\n            }\n            const apiPath = '/functions/{functionId}/executions'.replace('{functionId}', encodeURIComponent(String(functionId)));\n            const payload = {};\n            if (typeof body !== 'undefined') {\n                payload['body'] = body;\n            }\n            if (typeof async !== 'undefined') {\n                payload['async'] = async;\n            }\n            if (typeof xpath !== 'undefined') {\n                payload['path'] = xpath;\n            }\n            if (typeof method !== 'undefined') {\n                payload['method'] = method;\n            }\n            if (typeof headers !== 'undefined') {\n                payload['headers'] = headers;\n            }\n            if (typeof scheduledAt !== 'undefined') {\n                payload['scheduledAt'] = scheduledAt;\n            }\n            const uri = new URL(this.client.config.endpoint + apiPath);\n            const apiHeaders = {\n                'X-Appwrite-Project': this.client.config.project,\n                'content-type': 'application/json',\n                'accept': 'application/json',\n            };\n            return this.client.call('post', uri, apiHeaders, payload);\n        }\n        getExecution(paramsOrFirst, ...rest) {\n            let params;\n            if ((paramsOrFirst && typeof paramsOrFirst === 'object' && !Array.isArray(paramsOrFirst))) {\n                params = (paramsOrFirst || {});\n            }\n            else {\n                params = {\n                    functionId: paramsOrFirst,\n                    executionId: rest[0]\n                };\n            }\n            const functionId = params.functionId;\n            const executionId = params.executionId;\n            if (typeof functionId === 'undefined') {\n                throw new AppwriteException('Missing required parameter: \"functionId\"');\n            }\n            if (typeof executionId === 'undefined') {\n                throw new AppwriteException('Missing required parameter: \"executionId\"');\n            }\n            const apiPath = '/functions/{functionId}/executions/{executionId}'.replace('{functionId}', encodeURIComponent(String(functionId))).replace('{executionId}', encodeURIComponent(String(executionId)));\n            const payload = {};\n            const uri = new URL(this.client.config.endpoint + apiPath);\n            const apiHeaders = {\n                'X-Appwrite-Project': this.client.config.project,\n                'accept': 'application/json',\n            };\n            return this.client.call('get', uri, apiHeaders, payload);\n        }\n    }\n\n    class Graphql {\n        constructor(client) {\n            this.client = client;\n        }\n        query(paramsOrFirst) {\n            let params;\n            if ((paramsOrFirst && typeof paramsOrFirst === 'object' && !Array.isArray(paramsOrFirst) && ('query' in paramsOrFirst))) {\n                params = (paramsOrFirst || {});\n            }\n            else {\n                params = {\n                    query: paramsOrFirst\n                };\n            }\n            const query = params.query;\n            if (typeof query === 'undefined') {\n                throw new AppwriteException('Missing required parameter: \"query\"');\n            }\n            const apiPath = '/graphql';\n            const payload = {};\n            if (typeof query !== 'undefined') {\n                payload['query'] = query;\n            }\n            const uri = new URL(this.client.config.endpoint + apiPath);\n            const apiHeaders = {\n                'X-Appwrite-Project': this.client.config.project,\n                'x-sdk-graphql': 'true',\n                'content-type': 'application/json',\n                'accept': 'application/json',\n            };\n            return this.client.call('post', uri, apiHeaders, payload);\n        }\n        mutation(paramsOrFirst) {\n            let params;\n            if ((paramsOrFirst && typeof paramsOrFirst === 'object' && !Array.isArray(paramsOrFirst) && ('query' in paramsOrFirst))) {\n                params = (paramsOrFirst || {});\n            }\n            else {\n                params = {\n                    query: paramsOrFirst\n                };\n            }\n            const query = params.query;\n            if (typeof query === 'undefined') {\n                throw new AppwriteException('Missing required parameter: \"query\"');\n            }\n            const apiPath = '/graphql/mutation';\n            const payload = {};\n            if (typeof query !== 'undefined') {\n                payload['query'] = query;\n            }\n            const uri = new URL(this.client.config.endpoint + apiPath);\n            const apiHeaders = {\n                'X-Appwrite-Project': this.client.config.project,\n                'x-sdk-graphql': 'true',\n                'content-type': 'application/json',\n                'accept': 'application/json',\n            };\n            return this.client.call('post', uri, apiHeaders, payload);\n        }\n    }\n\n    class Locale {\n        constructor(client) {\n            this.client = client;\n        }\n        /**\n         * Get the current user location based on IP. Returns an object with user country code, country name, continent name, continent code, ip address and suggested currency. You can use the locale header to get the data in a supported language.\n         *\n         * ([IP Geolocation by DB-IP](https://db-ip.com))\n         *\n         * @throws {AppwriteException}\n         * @returns {Promise<Models.Locale>}\n         */\n        get() {\n            const apiPath = '/locale';\n            const payload = {};\n            const uri = new URL(this.client.config.endpoint + apiPath);\n            const apiHeaders = {\n                'X-Appwrite-Project': this.client.config.project,\n                'accept': 'application/json',\n            };\n            return this.client.call('get', uri, apiHeaders, payload);\n        }\n        /**\n         * List of all locale codes in [ISO 639-1](https://en.wikipedia.org/wiki/List_of_ISO_639-1_codes).\n         *\n         * @throws {AppwriteException}\n         * @returns {Promise<Models.LocaleCodeList>}\n         */\n        listCodes() {\n            const apiPath = '/locale/codes';\n            const payload = {};\n            const uri = new URL(this.client.config.endpoint + apiPath);\n            const apiHeaders = {\n                'X-Appwrite-Project': this.client.config.project,\n                'accept': 'application/json',\n            };\n            return this.client.call('get', uri, apiHeaders, payload);\n        }\n        /**\n         * List of all continents. You can use the locale header to get the data in a supported language.\n         *\n         * @throws {AppwriteException}\n         * @returns {Promise<Models.ContinentList>}\n         */\n        listContinents() {\n            const apiPath = '/locale/continents';\n            const payload = {};\n            const uri = new URL(this.client.config.endpoint + apiPath);\n            const apiHeaders = {\n                'X-Appwrite-Project': this.client.config.project,\n                'accept': 'application/json',\n            };\n            return this.client.call('get', uri, apiHeaders, payload);\n        }\n        /**\n         * List of all countries. You can use the locale header to get the data in a supported language.\n         *\n         * @throws {AppwriteException}\n         * @returns {Promise<Models.CountryList>}\n         */\n        listCountries() {\n            const apiPath = '/locale/countries';\n            const payload = {};\n            const uri = new URL(this.client.config.endpoint + apiPath);\n            const apiHeaders = {\n                'X-Appwrite-Project': this.client.config.project,\n                'accept': 'application/json',\n            };\n            return this.client.call('get', uri, apiHeaders, payload);\n        }\n        /**\n         * List of all countries that are currently members of the EU. You can use the locale header to get the data in a supported language.\n         *\n         * @throws {AppwriteException}\n         * @returns {Promise<Models.CountryList>}\n         */\n        listCountriesEU() {\n            const apiPath = '/locale/countries/eu';\n            const payload = {};\n            const uri = new URL(this.client.config.endpoint + apiPath);\n            const apiHeaders = {\n                'X-Appwrite-Project': this.client.config.project,\n                'accept': 'application/json',\n            };\n            return this.client.call('get', uri, apiHeaders, payload);\n        }\n        /**\n         * List of all countries phone codes. You can use the locale header to get the data in a supported language.\n         *\n         * @throws {AppwriteException}\n         * @returns {Promise<Models.PhoneList>}\n         */\n        listCountriesPhones() {\n            const apiPath = '/locale/countries/phones';\n            const payload = {};\n            const uri = new URL(this.client.config.endpoint + apiPath);\n            const apiHeaders = {\n                'X-Appwrite-Project': this.client.config.project,\n                'accept': 'application/json',\n            };\n            return this.client.call('get', uri, apiHeaders, payload);\n        }\n        /**\n         * List of all currencies, including currency symbol, name, plural, and decimal digits for all major and minor currencies. You can use the locale header to get the data in a supported language.\n         *\n         * @throws {AppwriteException}\n         * @returns {Promise<Models.CurrencyList>}\n         */\n        listCurrencies() {\n            const apiPath = '/locale/currencies';\n            const payload = {};\n            const uri = new URL(this.client.config.endpoint + apiPath);\n            const apiHeaders = {\n                'X-Appwrite-Project': this.client.config.project,\n                'accept': 'application/json',\n            };\n            return this.client.call('get', uri, apiHeaders, payload);\n        }\n        /**\n         * List of all languages classified by ISO 639-1 including 2-letter code, name in English, and name in the respective language.\n         *\n         * @throws {AppwriteException}\n         * @returns {Promise<Models.LanguageList>}\n         */\n        listLanguages() {\n            const apiPath = '/locale/languages';\n            const payload = {};\n            const uri = new URL(this.client.config.endpoint + apiPath);\n            const apiHeaders = {\n                'X-Appwrite-Project': this.client.config.project,\n                'accept': 'application/json',\n            };\n            return this.client.call('get', uri, apiHeaders, payload);\n        }\n    }\n\n    class Messaging {\n        constructor(client) {\n            this.client = client;\n        }\n        createSubscriber(paramsOrFirst, ...rest) {\n            let params;\n            if ((paramsOrFirst && typeof paramsOrFirst === 'object' && !Array.isArray(paramsOrFirst))) {\n                params = (paramsOrFirst || {});\n            }\n            else {\n                params = {\n                    topicId: paramsOrFirst,\n                    subscriberId: rest[0],\n                    targetId: rest[1]\n                };\n            }\n            const topicId = params.topicId;\n            const subscriberId = params.subscriberId;\n            const targetId = params.targetId;\n            if (typeof topicId === 'undefined') {\n                throw new AppwriteException('Missing required parameter: \"topicId\"');\n            }\n            if (typeof subscriberId === 'undefined') {\n                throw new AppwriteException('Missing required parameter: \"subscriberId\"');\n            }\n            if (typeof targetId === 'undefined') {\n                throw new AppwriteException('Missing required parameter: \"targetId\"');\n            }\n            const apiPath = '/messaging/topics/{topicId}/subscribers'.replace('{topicId}', encodeURIComponent(String(topicId)));\n            const payload = {};\n            if (typeof subscriberId !== 'undefined') {\n                payload['subscriberId'] = subscriberId;\n            }\n            if (typeof targetId !== 'undefined') {\n                payload['targetId'] = targetId;\n            }\n            const uri = new URL(this.client.config.endpoint + apiPath);\n            const apiHeaders = {\n                'X-Appwrite-Project': this.client.config.project,\n                'content-type': 'application/json',\n                'accept': 'application/json',\n            };\n            return this.client.call('post', uri, apiHeaders, payload);\n        }\n        deleteSubscriber(paramsOrFirst, ...rest) {\n            let params;\n            if ((paramsOrFirst && typeof paramsOrFirst === 'object' && !Array.isArray(paramsOrFirst))) {\n                params = (paramsOrFirst || {});\n            }\n            else {\n                params = {\n                    topicId: paramsOrFirst,\n                    subscriberId: rest[0]\n                };\n            }\n            const topicId = params.topicId;\n            const subscriberId = params.subscriberId;\n            if (typeof topicId === 'undefined') {\n                throw new AppwriteException('Missing required parameter: \"topicId\"');\n            }\n            if (typeof subscriberId === 'undefined') {\n                throw new AppwriteException('Missing required parameter: \"subscriberId\"');\n            }\n            const apiPath = '/messaging/topics/{topicId}/subscribers/{subscriberId}'.replace('{topicId}', encodeURIComponent(String(topicId))).replace('{subscriberId}', encodeURIComponent(String(subscriberId)));\n            const payload = {};\n            const uri = new URL(this.client.config.endpoint + apiPath);\n            const apiHeaders = {\n                'X-Appwrite-Project': this.client.config.project,\n                'content-type': 'application/json',\n            };\n            return this.client.call('delete', uri, apiHeaders, payload);\n        }\n    }\n\n    class Presences {\n        constructor(client) {\n            this.client = client;\n        }\n        list(paramsOrFirst, ...rest) {\n            let params;\n            if (!paramsOrFirst || (paramsOrFirst && typeof paramsOrFirst === 'object' && !Array.isArray(paramsOrFirst))) {\n                params = (paramsOrFirst || {});\n            }\n            else {\n                params = {\n                    queries: paramsOrFirst,\n                    total: rest[0],\n                    ttl: rest[1]\n                };\n            }\n            const queries = params.queries;\n            const total = params.total;\n            const ttl = params.ttl;\n            const apiPath = '/presences';\n            const payload = {};\n            if (typeof queries !== 'undefined') {\n                payload['queries'] = queries;\n            }\n            if (typeof total !== 'undefined') {\n                payload['total'] = total;\n            }\n            if (typeof ttl !== 'undefined') {\n                payload['ttl'] = ttl;\n            }\n            const uri = new URL(this.client.config.endpoint + apiPath);\n            const apiHeaders = {\n                'X-Appwrite-Project': this.client.config.project,\n                'accept': 'application/json',\n            };\n            return this.client.call('get', uri, apiHeaders, payload);\n        }\n        get(paramsOrFirst) {\n            let params;\n            if ((paramsOrFirst && typeof paramsOrFirst === 'object' && !Array.isArray(paramsOrFirst))) {\n                params = (paramsOrFirst || {});\n            }\n            else {\n                params = {\n                    presenceId: paramsOrFirst\n                };\n            }\n            const presenceId = params.presenceId;\n            if (typeof presenceId === 'undefined') {\n                throw new AppwriteException('Missing required parameter: \"presenceId\"');\n            }\n            const apiPath = '/presences/{presenceId}'.replace('{presenceId}', encodeURIComponent(String(presenceId)));\n            const payload = {};\n            const uri = new URL(this.client.config.endpoint + apiPath);\n            const apiHeaders = {\n                'X-Appwrite-Project': this.client.config.project,\n                'accept': 'application/json',\n            };\n            return this.client.call('get', uri, apiHeaders, payload);\n        }\n        upsert(paramsOrFirst, ...rest) {\n            let params;\n            if ((paramsOrFirst && typeof paramsOrFirst === 'object' && !Array.isArray(paramsOrFirst))) {\n                params = (paramsOrFirst || {});\n            }\n            else {\n                params = {\n                    presenceId: paramsOrFirst,\n                    status: rest[0],\n                    permissions: rest[1],\n                    expiresAt: rest[2],\n                    metadata: rest[3]\n                };\n            }\n            const presenceId = params.presenceId;\n            const status = params.status;\n            const permissions = params.permissions;\n            const expiresAt = params.expiresAt;\n            const metadata = params.metadata;\n            if (typeof presenceId === 'undefined') {\n                throw new AppwriteException('Missing required parameter: \"presenceId\"');\n            }\n            if (typeof status === 'undefined') {\n                throw new AppwriteException('Missing required parameter: \"status\"');\n            }\n            const apiPath = '/presences/{presenceId}'.replace('{presenceId}', encodeURIComponent(String(presenceId)));\n            const payload = {};\n            if (typeof status !== 'undefined') {\n                payload['status'] = status;\n            }\n            if (typeof permissions !== 'undefined') {\n                payload['permissions'] = permissions;\n            }\n            if (typeof expiresAt !== 'undefined') {\n                payload['expiresAt'] = expiresAt;\n            }\n            if (typeof metadata !== 'undefined') {\n                payload['metadata'] = metadata;\n            }\n            const uri = new URL(this.client.config.endpoint + apiPath);\n            const apiHeaders = {\n                'X-Appwrite-Project': this.client.config.project,\n                'content-type': 'application/json',\n                'accept': 'application/json',\n            };\n            return this.client.call('put', uri, apiHeaders, payload);\n        }\n        update(paramsOrFirst, ...rest) {\n            let params;\n            if ((paramsOrFirst && typeof paramsOrFirst === 'object' && !Array.isArray(paramsOrFirst))) {\n                params = (paramsOrFirst || {});\n            }\n            else {\n                params = {\n                    presenceId: paramsOrFirst,\n                    status: rest[0],\n                    expiresAt: rest[1],\n                    metadata: rest[2],\n                    permissions: rest[3],\n                    purge: rest[4]\n                };\n            }\n            const presenceId = params.presenceId;\n            const status = params.status;\n            const expiresAt = params.expiresAt;\n            const metadata = params.metadata;\n            const permissions = params.permissions;\n            const purge = params.purge;\n            if (typeof presenceId === 'undefined') {\n                throw new AppwriteException('Missing required parameter: \"presenceId\"');\n            }\n            const apiPath = '/presences/{presenceId}'.replace('{presenceId}', encodeURIComponent(String(presenceId)));\n            const payload = {};\n            if (typeof status !== 'undefined') {\n                payload['status'] = status;\n            }\n            if (typeof expiresAt !== 'undefined') {\n                payload['expiresAt'] = expiresAt;\n            }\n            if (typeof metadata !== 'undefined') {\n                payload['metadata'] = metadata;\n            }\n            if (typeof permissions !== 'undefined') {\n                payload['permissions'] = permissions;\n            }\n            if (typeof purge !== 'undefined') {\n                payload['purge'] = purge;\n            }\n            const uri = new URL(this.client.config.endpoint + apiPath);\n            const apiHeaders = {\n                'X-Appwrite-Project': this.client.config.project,\n                'content-type': 'application/json',\n                'accept': 'application/json',\n            };\n            return this.client.call('patch', uri, apiHeaders, payload);\n        }\n        delete(paramsOrFirst) {\n            let params;\n            if ((paramsOrFirst && typeof paramsOrFirst === 'object' && !Array.isArray(paramsOrFirst))) {\n                params = (paramsOrFirst || {});\n            }\n            else {\n                params = {\n                    presenceId: paramsOrFirst\n                };\n            }\n            const presenceId = params.presenceId;\n            if (typeof presenceId === 'undefined') {\n                throw new AppwriteException('Missing required parameter: \"presenceId\"');\n            }\n            const apiPath = '/presences/{presenceId}'.replace('{presenceId}', encodeURIComponent(String(presenceId)));\n            const payload = {};\n            const uri = new URL(this.client.config.endpoint + apiPath);\n            const apiHeaders = {\n                'X-Appwrite-Project': this.client.config.project,\n                'content-type': 'application/json',\n            };\n            return this.client.call('delete', uri, apiHeaders, payload);\n        }\n    }\n\n    class Storage {\n        constructor(client) {\n            this.client = client;\n        }\n        listFiles(paramsOrFirst, ...rest) {\n            let params;\n            if ((paramsOrFirst && typeof paramsOrFirst === 'object' && !Array.isArray(paramsOrFirst))) {\n                params = (paramsOrFirst || {});\n            }\n            else {\n                params = {\n                    bucketId: paramsOrFirst,\n                    queries: rest[0],\n                    search: rest[1],\n                    total: rest[2]\n                };\n            }\n            const bucketId = params.bucketId;\n            const queries = params.queries;\n            const search = params.search;\n            const total = params.total;\n            if (typeof bucketId === 'undefined') {\n                throw new AppwriteException('Missing required parameter: \"bucketId\"');\n            }\n            const apiPath = '/storage/buckets/{bucketId}/files'.replace('{bucketId}', encodeURIComponent(String(bucketId)));\n            const payload = {};\n            if (typeof queries !== 'undefined') {\n                payload['queries'] = queries;\n            }\n            if (typeof search !== 'undefined') {\n                payload['search'] = search;\n            }\n            if (typeof total !== 'undefined') {\n                payload['total'] = total;\n            }\n            const uri = new URL(this.client.config.endpoint + apiPath);\n            const apiHeaders = {\n                'X-Appwrite-Project': this.client.config.project,\n                'accept': 'application/json',\n            };\n            return this.client.call('get', uri, apiHeaders, payload);\n        }\n        createFile(paramsOrFirst, ...rest) {\n            let params;\n            let onProgress;\n            if ((paramsOrFirst && typeof paramsOrFirst === 'object' && !Array.isArray(paramsOrFirst))) {\n                params = (paramsOrFirst || {});\n                onProgress = paramsOrFirst === null || paramsOrFirst === void 0 ? void 0 : paramsOrFirst.onProgress;\n            }\n            else {\n                params = {\n                    bucketId: paramsOrFirst,\n                    fileId: rest[0],\n                    file: rest[1],\n                    permissions: rest[2]\n                };\n                onProgress = rest[3];\n            }\n            const bucketId = params.bucketId;\n            const fileId = params.fileId;\n            const file = params.file;\n            const permissions = params.permissions;\n            if (typeof bucketId === 'undefined') {\n                throw new AppwriteException('Missing required parameter: \"bucketId\"');\n            }\n            if (typeof fileId === 'undefined') {\n                throw new AppwriteException('Missing required parameter: \"fileId\"');\n            }\n            if (typeof file === 'undefined') {\n                throw new AppwriteException('Missing required parameter: \"file\"');\n            }\n            const apiPath = '/storage/buckets/{bucketId}/files'.replace('{bucketId}', encodeURIComponent(String(bucketId)));\n            const payload = {};\n            if (typeof fileId !== 'undefined') {\n                payload['fileId'] = fileId;\n            }\n            if (typeof file !== 'undefined') {\n                payload['file'] = file;\n            }\n            if (typeof permissions !== 'undefined') {\n                payload['permissions'] = permissions;\n            }\n            const uri = new URL(this.client.config.endpoint + apiPath);\n            const apiHeaders = {\n                'X-Appwrite-Project': this.client.config.project,\n                'content-type': 'multipart/form-data',\n                'accept': 'application/json',\n            };\n            return this.client.chunkedUpload('post', uri, apiHeaders, payload, onProgress);\n        }\n        getFile(paramsOrFirst, ...rest) {\n            let params;\n            if ((paramsOrFirst && typeof paramsOrFirst === 'object' && !Array.isArray(paramsOrFirst))) {\n                params = (paramsOrFirst || {});\n            }\n            else {\n                params = {\n                    bucketId: paramsOrFirst,\n                    fileId: rest[0]\n                };\n            }\n            const bucketId = params.bucketId;\n            const fileId = params.fileId;\n            if (typeof bucketId === 'undefined') {\n                throw new AppwriteException('Missing required parameter: \"bucketId\"');\n            }\n            if (typeof fileId === 'undefined') {\n                throw new AppwriteException('Missing required parameter: \"fileId\"');\n            }\n            const apiPath = '/storage/buckets/{bucketId}/files/{fileId}'.replace('{bucketId}', encodeURIComponent(String(bucketId))).replace('{fileId}', encodeURIComponent(String(fileId)));\n            const payload = {};\n            const uri = new URL(this.client.config.endpoint + apiPath);\n            const apiHeaders = {\n                'X-Appwrite-Project': this.client.config.project,\n                'accept': 'application/json',\n            };\n            return this.client.call('get', uri, apiHeaders, payload);\n        }\n        updateFile(paramsOrFirst, ...rest) {\n            let params;\n            if ((paramsOrFirst && typeof paramsOrFirst === 'object' && !Array.isArray(paramsOrFirst))) {\n                params = (paramsOrFirst || {});\n            }\n            else {\n                params = {\n                    bucketId: paramsOrFirst,\n                    fileId: rest[0],\n                    name: rest[1],\n                    permissions: rest[2]\n                };\n            }\n            const bucketId = params.bucketId;\n            const fileId = params.fileId;\n            const name = params.name;\n            const permissions = params.permissions;\n            if (typeof bucketId === 'undefined') {\n                throw new AppwriteException('Missing required parameter: \"bucketId\"');\n            }\n            if (typeof fileId === 'undefined') {\n                throw new AppwriteException('Missing required parameter: \"fileId\"');\n            }\n            const apiPath = '/storage/buckets/{bucketId}/files/{fileId}'.replace('{bucketId}', encodeURIComponent(String(bucketId))).replace('{fileId}', encodeURIComponent(String(fileId)));\n            const payload = {};\n            if (typeof name !== 'undefined') {\n                payload['name'] = name;\n            }\n            if (typeof permissions !== 'undefined') {\n                payload['permissions'] = permissions;\n            }\n            const uri = new URL(this.client.config.endpoint + apiPath);\n            const apiHeaders = {\n                'X-Appwrite-Project': this.client.config.project,\n                'content-type': 'application/json',\n                'accept': 'application/json',\n            };\n            return this.client.call('put', uri, apiHeaders, payload);\n        }\n        deleteFile(paramsOrFirst, ...rest) {\n            let params;\n            if ((paramsOrFirst && typeof paramsOrFirst === 'object' && !Array.isArray(paramsOrFirst))) {\n                params = (paramsOrFirst || {});\n            }\n            else {\n                params = {\n                    bucketId: paramsOrFirst,\n                    fileId: rest[0]\n                };\n            }\n            const bucketId = params.bucketId;\n            const fileId = params.fileId;\n            if (typeof bucketId === 'undefined') {\n                throw new AppwriteException('Missing required parameter: \"bucketId\"');\n            }\n            if (typeof fileId === 'undefined') {\n                throw new AppwriteException('Missing required parameter: \"fileId\"');\n            }\n            const apiPath = '/storage/buckets/{bucketId}/files/{fileId}'.replace('{bucketId}', encodeURIComponent(String(bucketId))).replace('{fileId}', encodeURIComponent(String(fileId)));\n            const payload = {};\n            const uri = new URL(this.client.config.endpoint + apiPath);\n            const apiHeaders = {\n                'X-Appwrite-Project': this.client.config.project,\n                'content-type': 'application/json',\n            };\n            return this.client.call('delete', uri, apiHeaders, payload);\n        }\n        getFileDownload(paramsOrFirst, ...rest) {\n            let params;\n            if ((paramsOrFirst && typeof paramsOrFirst === 'object' && !Array.isArray(paramsOrFirst))) {\n                params = (paramsOrFirst || {});\n            }\n            else {\n                params = {\n                    bucketId: paramsOrFirst,\n                    fileId: rest[0],\n                    token: rest[1]\n                };\n            }\n            const bucketId = params.bucketId;\n            const fileId = params.fileId;\n            const token = params.token;\n            if (typeof bucketId === 'undefined') {\n                throw new AppwriteException('Missing required parameter: \"bucketId\"');\n            }\n            if (typeof fileId === 'undefined') {\n                throw new AppwriteException('Missing required parameter: \"fileId\"');\n            }\n            const apiPath = '/storage/buckets/{bucketId}/files/{fileId}/download'.replace('{bucketId}', encodeURIComponent(String(bucketId))).replace('{fileId}', encodeURIComponent(String(fileId)));\n            const payload = {};\n            if (typeof token !== 'undefined') {\n                payload['token'] = token;\n            }\n            const uri = new URL(this.client.config.endpoint + apiPath);\n            ({\n                'X-Appwrite-Project': this.client.config.project});\n            payload['project'] = this.client.config.project;\n            payload['impersonateuserid'] = this.client.config.impersonateuserid;\n            for (const [key, value] of Object.entries(Service.flatten(payload))) {\n                uri.searchParams.append(key, value);\n            }\n            return uri.toString();\n        }\n        getFilePreview(paramsOrFirst, ...rest) {\n            let params;\n            if ((paramsOrFirst && typeof paramsOrFirst === 'object' && !Array.isArray(paramsOrFirst))) {\n                params = (paramsOrFirst || {});\n            }\n            else {\n                params = {\n                    bucketId: paramsOrFirst,\n                    fileId: rest[0],\n                    width: rest[1],\n                    height: rest[2],\n                    gravity: rest[3],\n                    quality: rest[4],\n                    borderWidth: rest[5],\n                    borderColor: rest[6],\n                    borderRadius: rest[7],\n                    opacity: rest[8],\n                    rotation: rest[9],\n                    background: rest[10],\n                    output: rest[11],\n                    token: rest[12]\n                };\n            }\n            const bucketId = params.bucketId;\n            const fileId = params.fileId;\n            const width = params.width;\n            const height = params.height;\n            const gravity = params.gravity;\n            const quality = params.quality;\n            const borderWidth = params.borderWidth;\n            const borderColor = params.borderColor;\n            const borderRadius = params.borderRadius;\n            const opacity = params.opacity;\n            const rotation = params.rotation;\n            const background = params.background;\n            const output = params.output;\n            const token = params.token;\n            if (typeof bucketId === 'undefined') {\n                throw new AppwriteException('Missing required parameter: \"bucketId\"');\n            }\n            if (typeof fileId === 'undefined') {\n                throw new AppwriteException('Missing required parameter: \"fileId\"');\n            }\n            const apiPath = '/storage/buckets/{bucketId}/files/{fileId}/preview'.replace('{bucketId}', encodeURIComponent(String(bucketId))).replace('{fileId}', encodeURIComponent(String(fileId)));\n            const payload = {};\n            if (typeof width !== 'undefined') {\n                payload['width'] = width;\n            }\n            if (typeof height !== 'undefined') {\n                payload['height'] = height;\n            }\n            if (typeof gravity !== 'undefined') {\n                payload['gravity'] = gravity;\n            }\n            if (typeof quality !== 'undefined') {\n                payload['quality'] = quality;\n            }\n            if (typeof borderWidth !== 'undefined') {\n                payload['borderWidth'] = borderWidth;\n            }\n            if (typeof borderColor !== 'undefined') {\n                payload['borderColor'] = borderColor;\n            }\n            if (typeof borderRadius !== 'undefined') {\n                payload['borderRadius'] = borderRadius;\n            }\n            if (typeof opacity !== 'undefined') {\n                payload['opacity'] = opacity;\n            }\n            if (typeof rotation !== 'undefined') {\n                payload['rotation'] = rotation;\n            }\n            if (typeof background !== 'undefined') {\n                payload['background'] = background;\n            }\n            if (typeof output !== 'undefined') {\n                payload['output'] = output;\n            }\n            if (typeof token !== 'undefined') {\n                payload['token'] = token;\n            }\n            const uri = new URL(this.client.config.endpoint + apiPath);\n            ({\n                'X-Appwrite-Project': this.client.config.project});\n            payload['project'] = this.client.config.project;\n            payload['impersonateuserid'] = this.client.config.impersonateuserid;\n            for (const [key, value] of Object.entries(Service.flatten(payload))) {\n                uri.searchParams.append(key, value);\n            }\n            return uri.toString();\n        }\n        getFileView(paramsOrFirst, ...rest) {\n            let params;\n            if ((paramsOrFirst && typeof paramsOrFirst === 'object' && !Array.isArray(paramsOrFirst))) {\n                params = (paramsOrFirst || {});\n            }\n            else {\n                params = {\n                    bucketId: paramsOrFirst,\n                    fileId: rest[0],\n                    token: rest[1]\n                };\n            }\n            const bucketId = params.bucketId;\n            const fileId = params.fileId;\n            const token = params.token;\n            if (typeof bucketId === 'undefined') {\n                throw new AppwriteException('Missing required parameter: \"bucketId\"');\n            }\n            if (typeof fileId === 'undefined') {\n                throw new AppwriteException('Missing required parameter: \"fileId\"');\n            }\n            const apiPath = '/storage/buckets/{bucketId}/files/{fileId}/view'.replace('{bucketId}', encodeURIComponent(String(bucketId))).replace('{fileId}', encodeURIComponent(String(fileId)));\n            const payload = {};\n            if (typeof token !== 'undefined') {\n                payload['token'] = token;\n            }\n            const uri = new URL(this.client.config.endpoint + apiPath);\n            ({\n                'X-Appwrite-Project': this.client.config.project});\n            payload['project'] = this.client.config.project;\n            payload['impersonateuserid'] = this.client.config.impersonateuserid;\n            for (const [key, value] of Object.entries(Service.flatten(payload))) {\n                uri.searchParams.append(key, value);\n            }\n            return uri.toString();\n        }\n    }\n\n    class TablesDB {\n        constructor(client) {\n            this.client = client;\n        }\n        listTransactions(paramsOrFirst) {\n            let params;\n            if (!paramsOrFirst || (paramsOrFirst && typeof paramsOrFirst === 'object' && !Array.isArray(paramsOrFirst))) {\n                params = (paramsOrFirst || {});\n            }\n            else {\n                params = {\n                    queries: paramsOrFirst\n                };\n            }\n            const queries = params.queries;\n            const apiPath = '/tablesdb/transactions';\n            const payload = {};\n            if (typeof queries !== 'undefined') {\n                payload['queries'] = queries;\n            }\n            const uri = new URL(this.client.config.endpoint + apiPath);\n            const apiHeaders = {\n                'X-Appwrite-Project': this.client.config.project,\n                'accept': 'application/json',\n            };\n            return this.client.call('get', uri, apiHeaders, payload);\n        }\n        createTransaction(paramsOrFirst) {\n            let params;\n            if (!paramsOrFirst || (paramsOrFirst && typeof paramsOrFirst === 'object' && !Array.isArray(paramsOrFirst))) {\n                params = (paramsOrFirst || {});\n            }\n            else {\n                params = {\n                    ttl: paramsOrFirst\n                };\n            }\n            const ttl = params.ttl;\n            const apiPath = '/tablesdb/transactions';\n            const payload = {};\n            if (typeof ttl !== 'undefined') {\n                payload['ttl'] = ttl;\n            }\n            const uri = new URL(this.client.config.endpoint + apiPath);\n            const apiHeaders = {\n                'X-Appwrite-Project': this.client.config.project,\n                'content-type': 'application/json',\n                'accept': 'application/json',\n            };\n            return this.client.call('post', uri, apiHeaders, payload);\n        }\n        getTransaction(paramsOrFirst) {\n            let params;\n            if ((paramsOrFirst && typeof paramsOrFirst === 'object' && !Array.isArray(paramsOrFirst))) {\n                params = (paramsOrFirst || {});\n            }\n            else {\n                params = {\n                    transactionId: paramsOrFirst\n                };\n            }\n            const transactionId = params.transactionId;\n            if (typeof transactionId === 'undefined') {\n                throw new AppwriteException('Missing required parameter: \"transactionId\"');\n            }\n            const apiPath = '/tablesdb/transactions/{transactionId}'.replace('{transactionId}', encodeURIComponent(String(transactionId)));\n            const payload = {};\n            const uri = new URL(this.client.config.endpoint + apiPath);\n            const apiHeaders = {\n                'X-Appwrite-Project': this.client.config.project,\n                'accept': 'application/json',\n            };\n            return this.client.call('get', uri, apiHeaders, payload);\n        }\n        updateTransaction(paramsOrFirst, ...rest) {\n            let params;\n            if ((paramsOrFirst && typeof paramsOrFirst === 'object' && !Array.isArray(paramsOrFirst))) {\n                params = (paramsOrFirst || {});\n            }\n            else {\n                params = {\n                    transactionId: paramsOrFirst,\n                    commit: rest[0],\n                    rollback: rest[1]\n                };\n            }\n            const transactionId = params.transactionId;\n            const commit = params.commit;\n            const rollback = params.rollback;\n            if (typeof transactionId === 'undefined') {\n                throw new AppwriteException('Missing required parameter: \"transactionId\"');\n            }\n            const apiPath = '/tablesdb/transactions/{transactionId}'.replace('{transactionId}', encodeURIComponent(String(transactionId)));\n            const payload = {};\n            if (typeof commit !== 'undefined') {\n                payload['commit'] = commit;\n            }\n            if (typeof rollback !== 'undefined') {\n                payload['rollback'] = rollback;\n            }\n            const uri = new URL(this.client.config.endpoint + apiPath);\n            const apiHeaders = {\n                'X-Appwrite-Project': this.client.config.project,\n                'content-type': 'application/json',\n                'accept': 'application/json',\n            };\n            return this.client.call('patch', uri, apiHeaders, payload);\n        }\n        deleteTransaction(paramsOrFirst) {\n            let params;\n            if ((paramsOrFirst && typeof paramsOrFirst === 'object' && !Array.isArray(paramsOrFirst))) {\n                params = (paramsOrFirst || {});\n            }\n            else {\n                params = {\n                    transactionId: paramsOrFirst\n                };\n            }\n            const transactionId = params.transactionId;\n            if (typeof transactionId === 'undefined') {\n                throw new AppwriteException('Missing required parameter: \"transactionId\"');\n            }\n            const apiPath = '/tablesdb/transactions/{transactionId}'.replace('{transactionId}', encodeURIComponent(String(transactionId)));\n            const payload = {};\n            const uri = new URL(this.client.config.endpoint + apiPath);\n            const apiHeaders = {\n                'X-Appwrite-Project': this.client.config.project,\n                'content-type': 'application/json',\n            };\n            return this.client.call('delete', uri, apiHeaders, payload);\n        }\n        createOperations(paramsOrFirst, ...rest) {\n            let params;\n            if ((paramsOrFirst && typeof paramsOrFirst === 'object' && !Array.isArray(paramsOrFirst))) {\n                params = (paramsOrFirst || {});\n            }\n            else {\n                params = {\n                    transactionId: paramsOrFirst,\n                    operations: rest[0]\n                };\n            }\n            const transactionId = params.transactionId;\n            const operations = params.operations;\n            if (typeof transactionId === 'undefined') {\n                throw new AppwriteException('Missing required parameter: \"transactionId\"');\n            }\n            const apiPath = '/tablesdb/transactions/{transactionId}/operations'.replace('{transactionId}', encodeURIComponent(String(transactionId)));\n            const payload = {};\n            if (typeof operations !== 'undefined') {\n                payload['operations'] = operations;\n            }\n            const uri = new URL(this.client.config.endpoint + apiPath);\n            const apiHeaders = {\n                'X-Appwrite-Project': this.client.config.project,\n                'content-type': 'application/json',\n                'accept': 'application/json',\n            };\n            return this.client.call('post', uri, apiHeaders, payload);\n        }\n        listRows(paramsOrFirst, ...rest) {\n            let params;\n            if ((paramsOrFirst && typeof paramsOrFirst === 'object' && !Array.isArray(paramsOrFirst))) {\n                params = (paramsOrFirst || {});\n            }\n            else {\n                params = {\n                    databaseId: paramsOrFirst,\n                    tableId: rest[0],\n                    queries: rest[1],\n                    transactionId: rest[2],\n                    total: rest[3],\n                    ttl: rest[4]\n                };\n            }\n            const databaseId = params.databaseId;\n            const tableId = params.tableId;\n            const queries = params.queries;\n            const transactionId = params.transactionId;\n            const total = params.total;\n            const ttl = params.ttl;\n            if (typeof databaseId === 'undefined') {\n                throw new AppwriteException('Missing required parameter: \"databaseId\"');\n            }\n            if (typeof tableId === 'undefined') {\n                throw new AppwriteException('Missing required parameter: \"tableId\"');\n            }\n            const apiPath = '/tablesdb/{databaseId}/tables/{tableId}/rows'.replace('{databaseId}', encodeURIComponent(String(databaseId))).replace('{tableId}', encodeURIComponent(String(tableId)));\n            const payload = {};\n            if (typeof queries !== 'undefined') {\n                payload['queries'] = queries;\n            }\n            if (typeof transactionId !== 'undefined') {\n                payload['transactionId'] = transactionId;\n            }\n            if (typeof total !== 'undefined') {\n                payload['total'] = total;\n            }\n            if (typeof ttl !== 'undefined') {\n                payload['ttl'] = ttl;\n            }\n            const uri = new URL(this.client.config.endpoint + apiPath);\n            const apiHeaders = {\n                'X-Appwrite-Project': this.client.config.project,\n                'accept': 'application/json',\n            };\n            return this.client.call('get', uri, apiHeaders, payload);\n        }\n        createRow(paramsOrFirst, ...rest) {\n            let params;\n            if ((paramsOrFirst && typeof paramsOrFirst === 'object' && !Array.isArray(paramsOrFirst))) {\n                params = (paramsOrFirst || {});\n            }\n            else {\n                params = {\n                    databaseId: paramsOrFirst,\n                    tableId: rest[0],\n                    rowId: rest[1],\n                    data: rest[2],\n                    permissions: rest[3],\n                    transactionId: rest[4]\n                };\n            }\n            const databaseId = params.databaseId;\n            const tableId = params.tableId;\n            const rowId = params.rowId;\n            const data = params.data;\n            const permissions = params.permissions;\n            const transactionId = params.transactionId;\n            if (typeof databaseId === 'undefined') {\n                throw new AppwriteException('Missing required parameter: \"databaseId\"');\n            }\n            if (typeof tableId === 'undefined') {\n                throw new AppwriteException('Missing required parameter: \"tableId\"');\n            }\n            if (typeof rowId === 'undefined') {\n                throw new AppwriteException('Missing required parameter: \"rowId\"');\n            }\n            if (typeof data === 'undefined') {\n                throw new AppwriteException('Missing required parameter: \"data\"');\n            }\n            const apiPath = '/tablesdb/{databaseId}/tables/{tableId}/rows'.replace('{databaseId}', encodeURIComponent(String(databaseId))).replace('{tableId}', encodeURIComponent(String(tableId)));\n            const payload = {};\n            if (typeof rowId !== 'undefined') {\n                payload['rowId'] = rowId;\n            }\n            if (typeof data !== 'undefined') {\n                payload['data'] = data;\n            }\n            if (typeof permissions !== 'undefined') {\n                payload['permissions'] = permissions;\n            }\n            if (typeof transactionId !== 'undefined') {\n                payload['transactionId'] = transactionId;\n            }\n            const uri = new URL(this.client.config.endpoint + apiPath);\n            const apiHeaders = {\n                'X-Appwrite-Project': this.client.config.project,\n                'content-type': 'application/json',\n                'accept': 'application/json',\n            };\n            return this.client.call('post', uri, apiHeaders, payload);\n        }\n        getRow(paramsOrFirst, ...rest) {\n            let params;\n            if ((paramsOrFirst && typeof paramsOrFirst === 'object' && !Array.isArray(paramsOrFirst))) {\n                params = (paramsOrFirst || {});\n            }\n            else {\n                params = {\n                    databaseId: paramsOrFirst,\n                    tableId: rest[0],\n                    rowId: rest[1],\n                    queries: rest[2],\n                    transactionId: rest[3]\n                };\n            }\n            const databaseId = params.databaseId;\n            const tableId = params.tableId;\n            const rowId = params.rowId;\n            const queries = params.queries;\n            const transactionId = params.transactionId;\n            if (typeof databaseId === 'undefined') {\n                throw new AppwriteException('Missing required parameter: \"databaseId\"');\n            }\n            if (typeof tableId === 'undefined') {\n                throw new AppwriteException('Missing required parameter: \"tableId\"');\n            }\n            if (typeof rowId === 'undefined') {\n                throw new AppwriteException('Missing required parameter: \"rowId\"');\n            }\n            const apiPath = '/tablesdb/{databaseId}/tables/{tableId}/rows/{rowId}'.replace('{databaseId}', encodeURIComponent(String(databaseId))).replace('{tableId}', encodeURIComponent(String(tableId))).replace('{rowId}', encodeURIComponent(String(rowId)));\n            const payload = {};\n            if (typeof queries !== 'undefined') {\n                payload['queries'] = queries;\n            }\n            if (typeof transactionId !== 'undefined') {\n                payload['transactionId'] = transactionId;\n            }\n            const uri = new URL(this.client.config.endpoint + apiPath);\n            const apiHeaders = {\n                'X-Appwrite-Project': this.client.config.project,\n                'accept': 'application/json',\n            };\n            return this.client.call('get', uri, apiHeaders, payload);\n        }\n        upsertRow(paramsOrFirst, ...rest) {\n            let params;\n            if ((paramsOrFirst && typeof paramsOrFirst === 'object' && !Array.isArray(paramsOrFirst))) {\n                params = (paramsOrFirst || {});\n            }\n            else {\n                params = {\n                    databaseId: paramsOrFirst,\n                    tableId: rest[0],\n                    rowId: rest[1],\n                    data: rest[2],\n                    permissions: rest[3],\n                    transactionId: rest[4]\n                };\n            }\n            const databaseId = params.databaseId;\n            const tableId = params.tableId;\n            const rowId = params.rowId;\n            const data = params.data;\n            const permissions = params.permissions;\n            const transactionId = params.transactionId;\n            if (typeof databaseId === 'undefined') {\n                throw new AppwriteException('Missing required parameter: \"databaseId\"');\n            }\n            if (typeof tableId === 'undefined') {\n                throw new AppwriteException('Missing required parameter: \"tableId\"');\n            }\n            if (typeof rowId === 'undefined') {\n                throw new AppwriteException('Missing required parameter: \"rowId\"');\n            }\n            const apiPath = '/tablesdb/{databaseId}/tables/{tableId}/rows/{rowId}'.replace('{databaseId}', encodeURIComponent(String(databaseId))).replace('{tableId}', encodeURIComponent(String(tableId))).replace('{rowId}', encodeURIComponent(String(rowId)));\n            const payload = {};\n            if (typeof data !== 'undefined') {\n                payload['data'] = data;\n            }\n            if (typeof permissions !== 'undefined') {\n                payload['permissions'] = permissions;\n            }\n            if (typeof transactionId !== 'undefined') {\n                payload['transactionId'] = transactionId;\n            }\n            const uri = new URL(this.client.config.endpoint + apiPath);\n            const apiHeaders = {\n                'X-Appwrite-Project': this.client.config.project,\n                'content-type': 'application/json',\n                'accept': 'application/json',\n            };\n            return this.client.call('put', uri, apiHeaders, payload);\n        }\n        updateRow(paramsOrFirst, ...rest) {\n            let params;\n            if ((paramsOrFirst && typeof paramsOrFirst === 'object' && !Array.isArray(paramsOrFirst))) {\n                params = (paramsOrFirst || {});\n            }\n            else {\n                params = {\n                    databaseId: paramsOrFirst,\n                    tableId: rest[0],\n                    rowId: rest[1],\n                    data: rest[2],\n                    permissions: rest[3],\n                    transactionId: rest[4]\n                };\n            }\n            const databaseId = params.databaseId;\n            const tableId = params.tableId;\n            const rowId = params.rowId;\n            const data = params.data;\n            const permissions = params.permissions;\n            const transactionId = params.transactionId;\n            if (typeof databaseId === 'undefined') {\n                throw new AppwriteException('Missing required parameter: \"databaseId\"');\n            }\n            if (typeof tableId === 'undefined') {\n                throw new AppwriteException('Missing required parameter: \"tableId\"');\n            }\n            if (typeof rowId === 'undefined') {\n                throw new AppwriteException('Missing required parameter: \"rowId\"');\n            }\n            const apiPath = '/tablesdb/{databaseId}/tables/{tableId}/rows/{rowId}'.replace('{databaseId}', encodeURIComponent(String(databaseId))).replace('{tableId}', encodeURIComponent(String(tableId))).replace('{rowId}', encodeURIComponent(String(rowId)));\n            const payload = {};\n            if (typeof data !== 'undefined') {\n                payload['data'] = data;\n            }\n            if (typeof permissions !== 'undefined') {\n                payload['permissions'] = permissions;\n            }\n            if (typeof transactionId !== 'undefined') {\n                payload['transactionId'] = transactionId;\n            }\n            const uri = new URL(this.client.config.endpoint + apiPath);\n            const apiHeaders = {\n                'X-Appwrite-Project': this.client.config.project,\n                'content-type': 'application/json',\n                'accept': 'application/json',\n            };\n            return this.client.call('patch', uri, apiHeaders, payload);\n        }\n        deleteRow(paramsOrFirst, ...rest) {\n            let params;\n            if ((paramsOrFirst && typeof paramsOrFirst === 'object' && !Array.isArray(paramsOrFirst))) {\n                params = (paramsOrFirst || {});\n            }\n            else {\n                params = {\n                    databaseId: paramsOrFirst,\n                    tableId: rest[0],\n                    rowId: rest[1],\n                    transactionId: rest[2]\n                };\n            }\n            const databaseId = params.databaseId;\n            const tableId = params.tableId;\n            const rowId = params.rowId;\n            const transactionId = params.transactionId;\n            if (typeof databaseId === 'undefined') {\n                throw new AppwriteException('Missing required parameter: \"databaseId\"');\n            }\n            if (typeof tableId === 'undefined') {\n                throw new AppwriteException('Missing required parameter: \"tableId\"');\n            }\n            if (typeof rowId === 'undefined') {\n                throw new AppwriteException('Missing required parameter: \"rowId\"');\n            }\n            const apiPath = '/tablesdb/{databaseId}/tables/{tableId}/rows/{rowId}'.replace('{databaseId}', encodeURIComponent(String(databaseId))).replace('{tableId}', encodeURIComponent(String(tableId))).replace('{rowId}', encodeURIComponent(String(rowId)));\n            const payload = {};\n            if (typeof transactionId !== 'undefined') {\n                payload['transactionId'] = transactionId;\n            }\n            const uri = new URL(this.client.config.endpoint + apiPath);\n            const apiHeaders = {\n                'X-Appwrite-Project': this.client.config.project,\n                'content-type': 'application/json',\n            };\n            return this.client.call('delete', uri, apiHeaders, payload);\n        }\n        decrementRowColumn(paramsOrFirst, ...rest) {\n            let params;\n            if ((paramsOrFirst && typeof paramsOrFirst === 'object' && !Array.isArray(paramsOrFirst))) {\n                params = (paramsOrFirst || {});\n            }\n            else {\n                params = {\n                    databaseId: paramsOrFirst,\n                    tableId: rest[0],\n                    rowId: rest[1],\n                    column: rest[2],\n                    value: rest[3],\n                    min: rest[4],\n                    transactionId: rest[5]\n                };\n            }\n            const databaseId = params.databaseId;\n            const tableId = params.tableId;\n            const rowId = params.rowId;\n            const column = params.column;\n            const value = params.value;\n            const min = params.min;\n            const transactionId = params.transactionId;\n            if (typeof databaseId === 'undefined') {\n                throw new AppwriteException('Missing required parameter: \"databaseId\"');\n            }\n            if (typeof tableId === 'undefined') {\n                throw new AppwriteException('Missing required parameter: \"tableId\"');\n            }\n            if (typeof rowId === 'undefined') {\n                throw new AppwriteException('Missing required parameter: \"rowId\"');\n            }\n            if (typeof column === 'undefined') {\n                throw new AppwriteException('Missing required parameter: \"column\"');\n            }\n            const apiPath = '/tablesdb/{databaseId}/tables/{tableId}/rows/{rowId}/{column}/decrement'.replace('{databaseId}', encodeURIComponent(String(databaseId))).replace('{tableId}', encodeURIComponent(String(tableId))).replace('{rowId}', encodeURIComponent(String(rowId))).replace('{column}', encodeURIComponent(String(column)));\n            const payload = {};\n            if (typeof value !== 'undefined') {\n                payload['value'] = value;\n            }\n            if (typeof min !== 'undefined') {\n                payload['min'] = min;\n            }\n            if (typeof transactionId !== 'undefined') {\n                payload['transactionId'] = transactionId;\n            }\n            const uri = new URL(this.client.config.endpoint + apiPath);\n            const apiHeaders = {\n                'X-Appwrite-Project': this.client.config.project,\n                'content-type': 'application/json',\n                'accept': 'application/json',\n            };\n            return this.client.call('patch', uri, apiHeaders, payload);\n        }\n        incrementRowColumn(paramsOrFirst, ...rest) {\n            let params;\n            if ((paramsOrFirst && typeof paramsOrFirst === 'object' && !Array.isArray(paramsOrFirst))) {\n                params = (paramsOrFirst || {});\n            }\n            else {\n                params = {\n                    databaseId: paramsOrFirst,\n                    tableId: rest[0],\n                    rowId: rest[1],\n                    column: rest[2],\n                    value: rest[3],\n                    max: rest[4],\n                    transactionId: rest[5]\n                };\n            }\n            const databaseId = params.databaseId;\n            const tableId = params.tableId;\n            const rowId = params.rowId;\n            const column = params.column;\n            const value = params.value;\n            const max = params.max;\n            const transactionId = params.transactionId;\n            if (typeof databaseId === 'undefined') {\n                throw new AppwriteException('Missing required parameter: \"databaseId\"');\n            }\n            if (typeof tableId === 'undefined') {\n                throw new AppwriteException('Missing required parameter: \"tableId\"');\n            }\n            if (typeof rowId === 'undefined') {\n                throw new AppwriteException('Missing required parameter: \"rowId\"');\n            }\n            if (typeof column === 'undefined') {\n                throw new AppwriteException('Missing required parameter: \"column\"');\n            }\n            const apiPath = '/tablesdb/{databaseId}/tables/{tableId}/rows/{rowId}/{column}/increment'.replace('{databaseId}', encodeURIComponent(String(databaseId))).replace('{tableId}', encodeURIComponent(String(tableId))).replace('{rowId}', encodeURIComponent(String(rowId))).replace('{column}', encodeURIComponent(String(column)));\n            const payload = {};\n            if (typeof value !== 'undefined') {\n                payload['value'] = value;\n            }\n            if (typeof max !== 'undefined') {\n                payload['max'] = max;\n            }\n            if (typeof transactionId !== 'undefined') {\n                payload['transactionId'] = transactionId;\n            }\n            const uri = new URL(this.client.config.endpoint + apiPath);\n            const apiHeaders = {\n                'X-Appwrite-Project': this.client.config.project,\n                'content-type': 'application/json',\n                'accept': 'application/json',\n            };\n            return this.client.call('patch', uri, apiHeaders, payload);\n        }\n    }\n\n    class Teams {\n        constructor(client) {\n            this.client = client;\n        }\n        list(paramsOrFirst, ...rest) {\n            let params;\n            if (!paramsOrFirst || (paramsOrFirst && typeof paramsOrFirst === 'object' && !Array.isArray(paramsOrFirst))) {\n                params = (paramsOrFirst || {});\n            }\n            else {\n                params = {\n                    queries: paramsOrFirst,\n                    search: rest[0],\n                    total: rest[1]\n                };\n            }\n            const queries = params.queries;\n            const search = params.search;\n            const total = params.total;\n            const apiPath = '/teams';\n            const payload = {};\n            if (typeof queries !== 'undefined') {\n                payload['queries'] = queries;\n            }\n            if (typeof search !== 'undefined') {\n                payload['search'] = search;\n            }\n            if (typeof total !== 'undefined') {\n                payload['total'] = total;\n            }\n            const uri = new URL(this.client.config.endpoint + apiPath);\n            const apiHeaders = {\n                'X-Appwrite-Project': this.client.config.project,\n                'accept': 'application/json',\n            };\n            return this.client.call('get', uri, apiHeaders, payload);\n        }\n        create(paramsOrFirst, ...rest) {\n            let params;\n            if ((paramsOrFirst && typeof paramsOrFirst === 'object' && !Array.isArray(paramsOrFirst))) {\n                params = (paramsOrFirst || {});\n            }\n            else {\n                params = {\n                    teamId: paramsOrFirst,\n                    name: rest[0],\n                    roles: rest[1]\n                };\n            }\n            const teamId = params.teamId;\n            const name = params.name;\n            const roles = params.roles;\n            if (typeof teamId === 'undefined') {\n                throw new AppwriteException('Missing required parameter: \"teamId\"');\n            }\n            if (typeof name === 'undefined') {\n                throw new AppwriteException('Missing required parameter: \"name\"');\n            }\n            const apiPath = '/teams';\n            const payload = {};\n            if (typeof teamId !== 'undefined') {\n                payload['teamId'] = teamId;\n            }\n            if (typeof name !== 'undefined') {\n                payload['name'] = name;\n            }\n            if (typeof roles !== 'undefined') {\n                payload['roles'] = roles;\n            }\n            const uri = new URL(this.client.config.endpoint + apiPath);\n            const apiHeaders = {\n                'X-Appwrite-Project': this.client.config.project,\n                'content-type': 'application/json',\n                'accept': 'application/json',\n            };\n            return this.client.call('post', uri, apiHeaders, payload);\n        }\n        get(paramsOrFirst) {\n            let params;\n            if ((paramsOrFirst && typeof paramsOrFirst === 'object' && !Array.isArray(paramsOrFirst))) {\n                params = (paramsOrFirst || {});\n            }\n            else {\n                params = {\n                    teamId: paramsOrFirst\n                };\n            }\n            const teamId = params.teamId;\n            if (typeof teamId === 'undefined') {\n                throw new AppwriteException('Missing required parameter: \"teamId\"');\n            }\n            const apiPath = '/teams/{teamId}'.replace('{teamId}', encodeURIComponent(String(teamId)));\n            const payload = {};\n            const uri = new URL(this.client.config.endpoint + apiPath);\n            const apiHeaders = {\n                'X-Appwrite-Project': this.client.config.project,\n                'accept': 'application/json',\n            };\n            return this.client.call('get', uri, apiHeaders, payload);\n        }\n        updateName(paramsOrFirst, ...rest) {\n            let params;\n            if ((paramsOrFirst && typeof paramsOrFirst === 'object' && !Array.isArray(paramsOrFirst))) {\n                params = (paramsOrFirst || {});\n            }\n            else {\n                params = {\n                    teamId: paramsOrFirst,\n                    name: rest[0]\n                };\n            }\n            const teamId = params.teamId;\n            const name = params.name;\n            if (typeof teamId === 'undefined') {\n                throw new AppwriteException('Missing required parameter: \"teamId\"');\n            }\n            if (typeof name === 'undefined') {\n                throw new AppwriteException('Missing required parameter: \"name\"');\n            }\n            const apiPath = '/teams/{teamId}'.replace('{teamId}', encodeURIComponent(String(teamId)));\n            const payload = {};\n            if (typeof name !== 'undefined') {\n                payload['name'] = name;\n            }\n            const uri = new URL(this.client.config.endpoint + apiPath);\n            const apiHeaders = {\n                'X-Appwrite-Project': this.client.config.project,\n                'content-type': 'application/json',\n                'accept': 'application/json',\n            };\n            return this.client.call('put', uri, apiHeaders, payload);\n        }\n        delete(paramsOrFirst) {\n            let params;\n            if ((paramsOrFirst && typeof paramsOrFirst === 'object' && !Array.isArray(paramsOrFirst))) {\n                params = (paramsOrFirst || {});\n            }\n            else {\n                params = {\n                    teamId: paramsOrFirst\n                };\n            }\n            const teamId = params.teamId;\n            if (typeof teamId === 'undefined') {\n                throw new AppwriteException('Missing required parameter: \"teamId\"');\n            }\n            const apiPath = '/teams/{teamId}'.replace('{teamId}', encodeURIComponent(String(teamId)));\n            const payload = {};\n            const uri = new URL(this.client.config.endpoint + apiPath);\n            const apiHeaders = {\n                'X-Appwrite-Project': this.client.config.project,\n                'content-type': 'application/json',\n            };\n            return this.client.call('delete', uri, apiHeaders, payload);\n        }\n        listMemberships(paramsOrFirst, ...rest) {\n            let params;\n            if ((paramsOrFirst && typeof paramsOrFirst === 'object' && !Array.isArray(paramsOrFirst))) {\n                params = (paramsOrFirst || {});\n            }\n            else {\n                params = {\n                    teamId: paramsOrFirst,\n                    queries: rest[0],\n                    search: rest[1],\n                    total: rest[2]\n                };\n            }\n            const teamId = params.teamId;\n            const queries = params.queries;\n            const search = params.search;\n            const total = params.total;\n            if (typeof teamId === 'undefined') {\n                throw new AppwriteException('Missing required parameter: \"teamId\"');\n            }\n            const apiPath = '/teams/{teamId}/memberships'.replace('{teamId}', encodeURIComponent(String(teamId)));\n            const payload = {};\n            if (typeof queries !== 'undefined') {\n                payload['queries'] = queries;\n            }\n            if (typeof search !== 'undefined') {\n                payload['search'] = search;\n            }\n            if (typeof total !== 'undefined') {\n                payload['total'] = total;\n            }\n            const uri = new URL(this.client.config.endpoint + apiPath);\n            const apiHeaders = {\n                'X-Appwrite-Project': this.client.config.project,\n                'accept': 'application/json',\n            };\n            return this.client.call('get', uri, apiHeaders, payload);\n        }\n        createMembership(paramsOrFirst, ...rest) {\n            let params;\n            if ((paramsOrFirst && typeof paramsOrFirst === 'object' && !Array.isArray(paramsOrFirst))) {\n                params = (paramsOrFirst || {});\n            }\n            else {\n                params = {\n                    teamId: paramsOrFirst,\n                    roles: rest[0],\n                    email: rest[1],\n                    userId: rest[2],\n                    phone: rest[3],\n                    url: rest[4],\n                    name: rest[5]\n                };\n            }\n            const teamId = params.teamId;\n            const roles = params.roles;\n            const email = params.email;\n            const userId = params.userId;\n            const phone = params.phone;\n            const url = params.url;\n            const name = params.name;\n            if (typeof teamId === 'undefined') {\n                throw new AppwriteException('Missing required parameter: \"teamId\"');\n            }\n            if (typeof roles === 'undefined') {\n                throw new AppwriteException('Missing required parameter: \"roles\"');\n            }\n            const apiPath = '/teams/{teamId}/memberships'.replace('{teamId}', encodeURIComponent(String(teamId)));\n            const payload = {};\n            if (typeof email !== 'undefined') {\n                payload['email'] = email;\n            }\n            if (typeof userId !== 'undefined') {\n                payload['userId'] = userId;\n            }\n            if (typeof phone !== 'undefined') {\n                payload['phone'] = phone;\n            }\n            if (typeof roles !== 'undefined') {\n                payload['roles'] = roles;\n            }\n            if (typeof url !== 'undefined') {\n                payload['url'] = url;\n            }\n            if (typeof name !== 'undefined') {\n                payload['name'] = name;\n            }\n            const uri = new URL(this.client.config.endpoint + apiPath);\n            const apiHeaders = {\n                'X-Appwrite-Project': this.client.config.project,\n                'content-type': 'application/json',\n                'accept': 'application/json',\n            };\n            return this.client.call('post', uri, apiHeaders, payload);\n        }\n        getMembership(paramsOrFirst, ...rest) {\n            let params;\n            if ((paramsOrFirst && typeof paramsOrFirst === 'object' && !Array.isArray(paramsOrFirst))) {\n                params = (paramsOrFirst || {});\n            }\n            else {\n                params = {\n                    teamId: paramsOrFirst,\n                    membershipId: rest[0]\n                };\n            }\n            const teamId = params.teamId;\n            const membershipId = params.membershipId;\n            if (typeof teamId === 'undefined') {\n                throw new AppwriteException('Missing required parameter: \"teamId\"');\n            }\n            if (typeof membershipId === 'undefined') {\n                throw new AppwriteException('Missing required parameter: \"membershipId\"');\n            }\n            const apiPath = '/teams/{teamId}/memberships/{membershipId}'.replace('{teamId}', encodeURIComponent(String(teamId))).replace('{membershipId}', encodeURIComponent(String(membershipId)));\n            const payload = {};\n            const uri = new URL(this.client.config.endpoint + apiPath);\n            const apiHeaders = {\n                'X-Appwrite-Project': this.client.config.project,\n                'accept': 'application/json',\n            };\n            return this.client.call('get', uri, apiHeaders, payload);\n        }\n        updateMembership(paramsOrFirst, ...rest) {\n            let params;\n            if ((paramsOrFirst && typeof paramsOrFirst === 'object' && !Array.isArray(paramsOrFirst))) {\n                params = (paramsOrFirst || {});\n            }\n            else {\n                params = {\n                    teamId: paramsOrFirst,\n                    membershipId: rest[0],\n                    roles: rest[1]\n                };\n            }\n            const teamId = params.teamId;\n            const membershipId = params.membershipId;\n            const roles = params.roles;\n            if (typeof teamId === 'undefined') {\n                throw new AppwriteException('Missing required parameter: \"teamId\"');\n            }\n            if (typeof membershipId === 'undefined') {\n                throw new AppwriteException('Missing required parameter: \"membershipId\"');\n            }\n            if (typeof roles === 'undefined') {\n                throw new AppwriteException('Missing required parameter: \"roles\"');\n            }\n            const apiPath = '/teams/{teamId}/memberships/{membershipId}'.replace('{teamId}', encodeURIComponent(String(teamId))).replace('{membershipId}', encodeURIComponent(String(membershipId)));\n            const payload = {};\n            if (typeof roles !== 'undefined') {\n                payload['roles'] = roles;\n            }\n            const uri = new URL(this.client.config.endpoint + apiPath);\n            const apiHeaders = {\n                'X-Appwrite-Project': this.client.config.project,\n                'content-type': 'application/json',\n                'accept': 'application/json',\n            };\n            return this.client.call('patch', uri, apiHeaders, payload);\n        }\n        deleteMembership(paramsOrFirst, ...rest) {\n            let params;\n            if ((paramsOrFirst && typeof paramsOrFirst === 'object' && !Array.isArray(paramsOrFirst))) {\n                params = (paramsOrFirst || {});\n            }\n            else {\n                params = {\n                    teamId: paramsOrFirst,\n                    membershipId: rest[0]\n                };\n            }\n            const teamId = params.teamId;\n            const membershipId = params.membershipId;\n            if (typeof teamId === 'undefined') {\n                throw new AppwriteException('Missing required parameter: \"teamId\"');\n            }\n            if (typeof membershipId === 'undefined') {\n                throw new AppwriteException('Missing required parameter: \"membershipId\"');\n            }\n            const apiPath = '/teams/{teamId}/memberships/{membershipId}'.replace('{teamId}', encodeURIComponent(String(teamId))).replace('{membershipId}', encodeURIComponent(String(membershipId)));\n            const payload = {};\n            const uri = new URL(this.client.config.endpoint + apiPath);\n            const apiHeaders = {\n                'X-Appwrite-Project': this.client.config.project,\n                'content-type': 'application/json',\n            };\n            return this.client.call('delete', uri, apiHeaders, payload);\n        }\n        updateMembershipStatus(paramsOrFirst, ...rest) {\n            let params;\n            if ((paramsOrFirst && typeof paramsOrFirst === 'object' && !Array.isArray(paramsOrFirst))) {\n                params = (paramsOrFirst || {});\n            }\n            else {\n                params = {\n                    teamId: paramsOrFirst,\n                    membershipId: rest[0],\n                    userId: rest[1],\n                    secret: rest[2]\n                };\n            }\n            const teamId = params.teamId;\n            const membershipId = params.membershipId;\n            const userId = params.userId;\n            const secret = params.secret;\n            if (typeof teamId === 'undefined') {\n                throw new AppwriteException('Missing required parameter: \"teamId\"');\n            }\n            if (typeof membershipId === 'undefined') {\n                throw new AppwriteException('Missing required parameter: \"membershipId\"');\n            }\n            if (typeof userId === 'undefined') {\n                throw new AppwriteException('Missing required parameter: \"userId\"');\n            }\n            if (typeof secret === 'undefined') {\n                throw new AppwriteException('Missing required parameter: \"secret\"');\n            }\n            const apiPath = '/teams/{teamId}/memberships/{membershipId}/status'.replace('{teamId}', encodeURIComponent(String(teamId))).replace('{membershipId}', encodeURIComponent(String(membershipId)));\n            const payload = {};\n            if (typeof userId !== 'undefined') {\n                payload['userId'] = userId;\n            }\n            if (typeof secret !== 'undefined') {\n                payload['secret'] = secret;\n            }\n            const uri = new URL(this.client.config.endpoint + apiPath);\n            const apiHeaders = {\n                'X-Appwrite-Project': this.client.config.project,\n                'content-type': 'application/json',\n                'accept': 'application/json',\n            };\n            return this.client.call('patch', uri, apiHeaders, payload);\n        }\n        getPrefs(paramsOrFirst) {\n            let params;\n            if ((paramsOrFirst && typeof paramsOrFirst === 'object' && !Array.isArray(paramsOrFirst))) {\n                params = (paramsOrFirst || {});\n            }\n            else {\n                params = {\n                    teamId: paramsOrFirst\n                };\n            }\n            const teamId = params.teamId;\n            if (typeof teamId === 'undefined') {\n                throw new AppwriteException('Missing required parameter: \"teamId\"');\n            }\n            const apiPath = '/teams/{teamId}/prefs'.replace('{teamId}', encodeURIComponent(String(teamId)));\n            const payload = {};\n            const uri = new URL(this.client.config.endpoint + apiPath);\n            const apiHeaders = {\n                'X-Appwrite-Project': this.client.config.project,\n                'accept': 'application/json',\n            };\n            return this.client.call('get', uri, apiHeaders, payload);\n        }\n        updatePrefs(paramsOrFirst, ...rest) {\n            let params;\n            if ((paramsOrFirst && typeof paramsOrFirst === 'object' && !Array.isArray(paramsOrFirst))) {\n                params = (paramsOrFirst || {});\n            }\n            else {\n                params = {\n                    teamId: paramsOrFirst,\n                    prefs: rest[0]\n                };\n            }\n            const teamId = params.teamId;\n            const prefs = params.prefs;\n            if (typeof teamId === 'undefined') {\n                throw new AppwriteException('Missing required parameter: \"teamId\"');\n            }\n            if (typeof prefs === 'undefined') {\n                throw new AppwriteException('Missing required parameter: \"prefs\"');\n            }\n            const apiPath = '/teams/{teamId}/prefs'.replace('{teamId}', encodeURIComponent(String(teamId)));\n            const payload = {};\n            if (typeof prefs !== 'undefined') {\n                payload['prefs'] = prefs;\n            }\n            const uri = new URL(this.client.config.endpoint + apiPath);\n            const apiHeaders = {\n                'X-Appwrite-Project': this.client.config.project,\n                'content-type': 'application/json',\n                'accept': 'application/json',\n            };\n            return this.client.call('put', uri, apiHeaders, payload);\n        }\n    }\n\n    var RealtimeCode;\n    (function (RealtimeCode) {\n        RealtimeCode[RealtimeCode[\"NORMAL_CLOSURE\"] = 1000] = \"NORMAL_CLOSURE\";\n        RealtimeCode[RealtimeCode[\"POLICY_VIOLATION\"] = 1008] = \"POLICY_VIOLATION\";\n        RealtimeCode[RealtimeCode[\"UNKNOWN_ERROR\"] = -1] = \"UNKNOWN_ERROR\";\n    })(RealtimeCode || (RealtimeCode = {}));\n    class Realtime {\n        constructor(client) {\n            this.TYPE_ERROR = 'error';\n            this.TYPE_EVENT = 'event';\n            this.TYPE_PONG = 'pong';\n            this.TYPE_CONNECTED = 'connected';\n            this.DEBOUNCE_MS = 1;\n            this.HEARTBEAT_INTERVAL = 20000; // 20 seconds in milliseconds\n            this.activeSubscriptions = new Map();\n            this.pendingSubscribes = new Map();\n            this.appConnected = false;\n            this.subCallDepth = 0;\n            this.reconnectAttempts = 0;\n            this.connectionId = 0;\n            this.reconnect = true;\n            this.onErrorCallbacks = [];\n            this.onCloseCallbacks = [];\n            this.onOpenCallbacks = [];\n            this.client = client;\n        }\n        /**\n         * Register a callback function to be called when an error occurs\n         *\n         * @param {Function} callback - Callback function to handle errors\n         * @returns {void}\n         */\n        onError(callback) {\n            this.onErrorCallbacks.push(callback);\n        }\n        /**\n         * Register a callback function to be called when the connection closes\n         *\n         * @param {Function} callback - Callback function to handle connection close\n         * @returns {void}\n         */\n        onClose(callback) {\n            this.onCloseCallbacks.push(callback);\n        }\n        /**\n         * Register a callback function to be called when the connection opens\n         *\n         * @param {Function} callback - Callback function to handle connection open\n         * @returns {void}\n         */\n        onOpen(callback) {\n            this.onOpenCallbacks.push(callback);\n        }\n        startHeartbeat() {\n            this.stopHeartbeat();\n            this.heartbeatTimer = window === null || window === void 0 ? void 0 : window.setInterval(() => {\n                if (this.socket && this.socket.readyState === WebSocket.OPEN) {\n                    this.socket.send(JSONbig.stringify({ type: 'ping' }));\n                }\n            }, this.HEARTBEAT_INTERVAL);\n        }\n        stopHeartbeat() {\n            if (this.heartbeatTimer) {\n                window === null || window === void 0 ? void 0 : window.clearInterval(this.heartbeatTimer);\n                this.heartbeatTimer = undefined;\n            }\n        }\n        /**\n         * Idempotent socket opener. Both `subscribe()` and `upsertPresence()` can\n         * call this; the single-flight lock (`socketCreationPromise`) guarantees\n         * only one `new WebSocket(...)` is ever in flight, so concurrent callers\n         * join the same connection attempt instead of opening duplicates.\n         *\n         * Returns early when a healthy socket is already present.\n         */\n        createSocket() {\n            return __awaiter(this, void 0, void 0, function* () {\n                // Fast path: a usable socket is already there. No need to open another.\n                if (this.socket && this.socket.readyState < WebSocket.CLOSING) {\n                    return;\n                }\n                // Another caller is already opening one — join it.\n                if (this.socketCreationPromise) {\n                    return this.socketCreationPromise;\n                }\n                this.socketCreationPromise = this.createSocketLocked().finally(() => {\n                    this.socketCreationPromise = undefined;\n                });\n                return this.socketCreationPromise;\n            });\n        }\n        createSocketLocked() {\n            return __awaiter(this, void 0, void 0, function* () {\n                // Nothing to do if there's neither a subscription nor a queued presence\n                // that needs the wire. (Reconnect cleanup path also flows through here.)\n                if (this.activeSubscriptions.size === 0 && !this.pendingPresence) {\n                    this.reconnect = false;\n                    yield this.closeSocket();\n                    return;\n                }\n                const projectId = this.client.config.project;\n                if (!projectId) {\n                    throw new AppwriteException('Missing project ID');\n                }\n                // URL carries only the project; channels/queries are sent via the subscribe message.\n                let queryParams = `project=${projectId}`;\n                const jwt = this.client.config.jwt;\n                if (jwt) {\n                    queryParams += `&jwt=${encodeURIComponent(jwt)}`;\n                }\n                const endpoint = this.client.config.endpointRealtime !== ''\n                    ? this.client.config.endpointRealtime\n                    : this.client.config.endpoint || '';\n                const realtimeEndpoint = endpoint\n                    .replace('https://', 'wss://')\n                    .replace('http://', 'ws://');\n                const url = `${realtimeEndpoint}/realtime?${queryParams}`;\n                if (this.socket) {\n                    this.reconnect = false;\n                    if (this.socket.readyState < WebSocket.CLOSING) {\n                        yield this.closeSocket();\n                    }\n                    // Ensure reconnect isn't stuck false if close event was missed.\n                    this.reconnect = true;\n                }\n                return new Promise((resolve, reject) => {\n                    // Re-check the entry guard synchronously. `disconnect()` may have\n                    // run during the `await this.closeSocket()` above (or any other\n                    // await between the original guard and here), clearing every\n                    // subscription and the pending presence. In that case opening a\n                    // fresh socket would leak a connection with nothing attached.\n                    if (this.activeSubscriptions.size === 0 && !this.pendingPresence) {\n                        resolve();\n                        return;\n                    }\n                    try {\n                        const connectionId = ++this.connectionId;\n                        const socket = (this.socket = new WebSocket(url));\n                        socket.addEventListener('open', () => {\n                            if (connectionId !== this.connectionId) {\n                                return;\n                            }\n                            this.reconnectAttempts = 0;\n                            this.onOpenCallbacks.forEach(callback => callback());\n                            this.startHeartbeat();\n                            resolve();\n                        });\n                        socket.addEventListener('message', (event) => {\n                            if (connectionId !== this.connectionId) {\n                                return;\n                            }\n                            try {\n                                const message = JSONbig.parse(event.data);\n                                this.handleMessage(message);\n                            }\n                            catch (error) {\n                                console.error('Failed to parse message:', error);\n                            }\n                        });\n                        socket.addEventListener('close', (event) => __awaiter(this, void 0, void 0, function* () {\n                            if (connectionId !== this.connectionId || socket !== this.socket) {\n                                return;\n                            }\n                            this.appConnected = false;\n                            this.stopHeartbeat();\n                            this.onCloseCallbacks.forEach(callback => callback());\n                            if (!this.reconnect || event.code === RealtimeCode.POLICY_VIOLATION) {\n                                this.reconnect = true;\n                                return;\n                            }\n                            const timeout = this.getTimeout();\n                            console.log(`Realtime disconnected. Re-connecting in ${timeout / 1000} seconds.`);\n                            yield this.sleep(timeout);\n                            this.reconnectAttempts++;\n                            try {\n                                yield this.createSocket();\n                            }\n                            catch (error) {\n                                console.error('Failed to reconnect:', error);\n                            }\n                        }));\n                        socket.addEventListener('error', (event) => {\n                            if (connectionId !== this.connectionId || socket !== this.socket) {\n                                return;\n                            }\n                            this.stopHeartbeat();\n                            const error = new Error('WebSocket error');\n                            console.error('WebSocket error:', error.message);\n                            this.onErrorCallbacks.forEach(callback => callback(error));\n                            reject(error);\n                        });\n                    }\n                    catch (error) {\n                        reject(error);\n                    }\n                });\n            });\n        }\n        closeSocket() {\n            return __awaiter(this, void 0, void 0, function* () {\n                this.stopHeartbeat();\n                if (this.socket) {\n                    return new Promise((resolve) => {\n                        if (!this.socket) {\n                            resolve();\n                            return;\n                        }\n                        if (this.socket.readyState === WebSocket.OPEN ||\n                            this.socket.readyState === WebSocket.CONNECTING) {\n                            this.socket.addEventListener('close', () => {\n                                resolve();\n                            }, { once: true });\n                            this.socket.close(RealtimeCode.NORMAL_CLOSURE);\n                        }\n                        else {\n                            resolve();\n                        }\n                    });\n                }\n            });\n        }\n        getTimeout() {\n            if (this.reconnectAttempts < 5) {\n                return 1000;\n            }\n            else if (this.reconnectAttempts < 15) {\n                return 5000;\n            }\n            else if (this.reconnectAttempts < 100) {\n                return 10000;\n            }\n            else {\n                return 60000;\n            }\n        }\n        sleep(ms) {\n            return new Promise(resolve => setTimeout(resolve, ms));\n        }\n        sendUnsubscribeMessage(subscriptionIds) {\n            const ids = subscriptionIds.filter(id => typeof id === 'string' && id.length > 0);\n            if (ids.length === 0) {\n                return;\n            }\n            if (!this.socket || this.socket.readyState !== WebSocket.OPEN) {\n                return;\n            }\n            this.socket.send(JSONbig.stringify({\n                type: 'unsubscribe',\n                data: ids.map(subscriptionId => ({ subscriptionId }))\n            }));\n        }\n        generateUniqueSubscriptionId() {\n            const attempts = this.activeSubscriptions.size + 1;\n            for (let i = 0; i < attempts; i++) {\n                const id = ID.unique();\n                if (!this.activeSubscriptions.has(id)) {\n                    return id;\n                }\n            }\n            throw new AppwriteException('Failed to generate unique subscription id');\n        }\n        enqueuePendingSubscribe(subscriptionId) {\n            var _a;\n            const subscription = this.activeSubscriptions.get(subscriptionId);\n            if (!subscription) {\n                return;\n            }\n            this.pendingSubscribes.set(subscriptionId, {\n                subscriptionId,\n                channels: Array.from(subscription.channels),\n                queries: (_a = subscription.queries) !== null && _a !== void 0 ? _a : []\n            });\n        }\n        /**\n         * Close the WebSocket connection and drop all active subscriptions client-side.\n         * Use this instead of calling `unsubscribe()` on every subscription when you want to tear everything down.\n         */\n        disconnect() {\n            return __awaiter(this, void 0, void 0, function* () {\n                this.activeSubscriptions.clear();\n                this.pendingSubscribes.clear();\n                this.pendingPresence = undefined;\n                this.appConnected = false;\n                this.reconnect = false;\n                // Drop the in-flight single-flight slot. Promises can't be cancelled,\n                // so the underlying createSocketLocked() promise may stay pending\n                // forever — e.g. when closeSocket() below tears down a CONNECTING\n                // socket, the `close` event fires but `open`/`error` never do, and\n                // the inner `new Promise(...)` only resolves on those. Without this\n                // line, the next subscribe()/upsertPresence() would join the orphan\n                // promise via the single-flight gate and hang, leaving its pending\n                // subscription queued with no socket ever opened. Mirrors the Swift\n                // template's socketCreationTask cancel in disconnect().\n                this.socketCreationPromise = undefined;\n                yield this.closeSocket();\n            });\n        }\n        sendPendingSubscribes() {\n            if (!this.socket || this.socket.readyState !== WebSocket.OPEN) {\n                return;\n            }\n            // The WebSocket 'open' event fires when the TCP/upgrade handshake\n            // completes — but the server only accepts `subscribe` frames after\n            // it has emitted its own application-level `connected` event (which\n            // flips `appConnected` to true in handleResponseConnected). Sending\n            // before then triggers a policy-violation close on real Appwrite,\n            // which reconnects, which sends early again — i.e. a duplicate-\n            // socket loop. handleResponseConnected re-enqueues every active\n            // subscription and calls this method again once it's safe, so the\n            // queued rows are guaranteed to be sent.\n            if (!this.appConnected) {\n                return;\n            }\n            if (this.pendingSubscribes.size < 1) {\n                return;\n            }\n            const rows = Array.from(this.pendingSubscribes.values());\n            this.pendingSubscribes.clear();\n            this.socket.send(JSONbig.stringify({\n                type: 'subscribe',\n                data: rows\n            }));\n        }\n        /**\n         * Convert a channel value to a string\n         *\n         * @private\n         * @param {string | Channel<any> | ActionableChannel | ResolvedChannel} channel - Channel value (string or Channel builder instance)\n         * @returns {string} Channel string representation\n         */\n        channelToString(channel) {\n            if (typeof channel === 'string') {\n                return channel;\n            }\n            // All Channel instances have toString() method\n            if (channel && typeof channel.toString === 'function') {\n                return channel.toString();\n            }\n            return String(channel);\n        }\n        subscribe(channelsOrChannel_1, callback_1) {\n            return __awaiter(this, arguments, void 0, function* (channelsOrChannel, callback, queries = []) {\n                const channelArray = Array.isArray(channelsOrChannel)\n                    ? channelsOrChannel\n                    : [channelsOrChannel];\n                // Convert all channels to strings\n                const channelStrings = channelArray.map(ch => this.channelToString(ch));\n                const channels = new Set(channelStrings);\n                // Convert queries to array of strings\n                // Ensure each query is a separate string in the array\n                const queryStrings = [];\n                for (const q of (queries !== null && queries !== void 0 ? queries : [])) {\n                    if (Array.isArray(q)) {\n                        // Handle nested arrays: [[q1, q2]] -> [q1, q2]\n                        for (const inner of q) {\n                            queryStrings.push(typeof inner === 'string' ? inner : inner.toString());\n                        }\n                    }\n                    else {\n                        queryStrings.push(typeof q === 'string' ? q : q.toString());\n                    }\n                }\n                const subscriptionId = this.generateUniqueSubscriptionId();\n                this.activeSubscriptions.set(subscriptionId, {\n                    channels,\n                    queries: queryStrings,\n                    callback\n                });\n                this.enqueuePendingSubscribe(subscriptionId);\n                this.subCallDepth++;\n                try {\n                    yield this.sleep(this.DEBOUNCE_MS);\n                    if (this.subCallDepth === 1) {\n                        if (!this.socket || this.socket.readyState > WebSocket.OPEN) {\n                            yield this.createSocket();\n                        }\n                        else if (this.socket.readyState === WebSocket.OPEN) {\n                            this.sendPendingSubscribes();\n                        }\n                    }\n                }\n                finally {\n                    this.subCallDepth--;\n                }\n                const unsubscribe = () => __awaiter(this, void 0, void 0, function* () {\n                    if (!this.activeSubscriptions.has(subscriptionId)) {\n                        return;\n                    }\n                    this.activeSubscriptions.delete(subscriptionId);\n                    this.pendingSubscribes.delete(subscriptionId);\n                    this.sendUnsubscribeMessage([subscriptionId]);\n                });\n                const update = (changes) => __awaiter(this, void 0, void 0, function* () {\n                    const subscription = this.activeSubscriptions.get(subscriptionId);\n                    if (!subscription) {\n                        return;\n                    }\n                    if (changes.channels !== undefined) {\n                        const nextChannelStrings = changes.channels.map(ch => this.channelToString(ch));\n                        subscription.channels = new Set(nextChannelStrings);\n                    }\n                    if (changes.queries !== undefined) {\n                        const nextQueries = [];\n                        for (const q of changes.queries) {\n                            if (Array.isArray(q)) {\n                                for (const inner of q) {\n                                    nextQueries.push(typeof inner === 'string' ? inner : inner.toString());\n                                }\n                            }\n                            else {\n                                nextQueries.push(typeof q === 'string' ? q : q.toString());\n                            }\n                        }\n                        subscription.queries = nextQueries;\n                    }\n                    this.enqueuePendingSubscribe(subscriptionId);\n                    this.subCallDepth++;\n                    try {\n                        yield this.sleep(this.DEBOUNCE_MS);\n                        if (this.subCallDepth === 1) {\n                            if (!this.socket || this.socket.readyState > WebSocket.OPEN) {\n                                yield this.createSocket();\n                            }\n                            else if (this.socket.readyState === WebSocket.OPEN) {\n                                this.sendPendingSubscribes();\n                            }\n                        }\n                    }\n                    finally {\n                        this.subCallDepth--;\n                    }\n                });\n                const close = () => __awaiter(this, void 0, void 0, function* () {\n                    yield unsubscribe();\n                    if (this.activeSubscriptions.size === 0) {\n                        this.reconnect = false;\n                        yield this.closeSocket();\n                    }\n                });\n                return { unsubscribe, update, close };\n            });\n        }\n        /**\n         * Fire-and-forget presence upsert. Records the latest payload in state so\n         * that — if the WebSocket isn't open yet, or later reconnects — only the\n         * most recent presence is automatically (re)sent on the next `connected`\n         * event. Repeated calls while the socket is closed collapse to the latest\n         * payload (older ones are discarded).\n         *\n         * Returns a `Promise<void>` for API consistency; the promise resolves as\n         * soon as the payload has been stored and the opportunistic send attempted.\n         *\n         * @param {RealtimePresenceCreate} params - Presence payload (status and presenceId required, permissions/metadata optional)\n         */\n        upsertPresence(params) {\n            return __awaiter(this, void 0, void 0, function* () {\n                const data = {\n                    status: params.status,\n                    presenceId: params.presenceId,\n                };\n                if (params.permissions !== undefined) {\n                    data.permissions = params.permissions;\n                }\n                if (params.metadata !== undefined) {\n                    data.metadata = params.metadata;\n                }\n                this.pendingPresence = data;\n                // Both subscribe() and upsertPresence() may need to open the socket.\n                // createSocket() is single-flight (see `socketCreationPromise`), so\n                // calling it here is a no-op when a connection is already in flight or\n                // healthy. Fire-and-forget keeps the documented fire-and-forget shape\n                // of upsertPresence: the returned Promise resolves as soon as the\n                // payload is stored.\n                if (!this.socket || this.socket.readyState >= WebSocket.CLOSING) {\n                    this.createSocket().catch((error) => {\n                        console.error('Failed to open realtime socket for presence:', error);\n                    });\n                }\n                // Opportunistic send for the case where the socket is already past the\n                // `connected` handshake. The gate inside flushPendingPresence keeps\n                // this a no-op until appConnected flips to true.\n                this.flushPendingPresence();\n            });\n        }\n        flushPendingPresence() {\n            if (!this.pendingPresence) {\n                return;\n            }\n            if (!this.socket || this.socket.readyState !== WebSocket.OPEN) {\n                return;\n            }\n            if (!this.appConnected) {\n                return;\n            }\n            this.socket.send(JSONbig.stringify({\n                type: 'presence',\n                data: this.pendingPresence\n            }));\n        }\n        handleMessage(message) {\n            if (!message.type) {\n                return;\n            }\n            switch (message.type) {\n                case this.TYPE_CONNECTED:\n                    this.handleResponseConnected(message);\n                    break;\n                case this.TYPE_ERROR:\n                    this.handleResponseError(message);\n                    break;\n                case this.TYPE_EVENT:\n                    this.handleResponseEvent(message);\n                    break;\n                case this.TYPE_PONG:\n                    // Handle pong response if needed\n                    break;\n            }\n        }\n        handleResponseConnected(message) {\n            var _a, _b;\n            if (!message.data) {\n                return;\n            }\n            const messageData = message.data;\n            let session = this.client.config.session;\n            if (!session) {\n                try {\n                    const cookie = JSONbig.parse((_a = window.localStorage.getItem('cookieFallback')) !== null && _a !== void 0 ? _a : '{}');\n                    session = cookie === null || cookie === void 0 ? void 0 : cookie[`a_session_${this.client.config.project}`];\n                }\n                catch (error) {\n                    console.error('Failed to parse cookie fallback:', error);\n                }\n            }\n            if (session && !messageData.user) {\n                (_b = this.socket) === null || _b === void 0 ? void 0 : _b.send(JSONbig.stringify({\n                    type: 'authentication',\n                    data: {\n                        session\n                    }\n                }));\n            }\n            for (const subscriptionId of this.activeSubscriptions.keys()) {\n                this.enqueuePendingSubscribe(subscriptionId);\n            }\n            this.appConnected = true;\n            this.sendPendingSubscribes();\n            this.flushPendingPresence();\n        }\n        handleResponseError(message) {\n            var _a, _b;\n            const error = new AppwriteException(((_a = message.data) === null || _a === void 0 ? void 0 : _a.message) || 'Unknown error');\n            const statusCode = (_b = message.data) === null || _b === void 0 ? void 0 : _b.code;\n            this.onErrorCallbacks.forEach(callback => callback(error, statusCode));\n        }\n        handleResponseEvent(message) {\n            const data = message.data;\n            if (!data) {\n                return;\n            }\n            const channels = data.channels;\n            const events = data.events;\n            const payload = data.payload;\n            const timestamp = data.timestamp;\n            const subscriptions = data.subscriptions;\n            if (!channels || !events || !payload || !subscriptions || subscriptions.length === 0) {\n                return;\n            }\n            for (const subscriptionId of subscriptions) {\n                const subscription = this.activeSubscriptions.get(subscriptionId);\n                if (!subscription) {\n                    continue;\n                }\n                subscription.callback({\n                    events,\n                    channels,\n                    timestamp,\n                    payload,\n                    subscriptions\n                });\n            }\n        }\n    }\n\n    /**\n     * Helper class to generate permission strings for resources.\n     */\n    class Permission {\n    }\n    /**\n     * Generate read permission string for the provided role.\n     *\n     * @param {string} role\n     * @returns {string}\n     */\n    Permission.read = (role) => {\n        return `read(\"${role}\")`;\n    };\n    /**\n     * Generate write permission string for the provided role.\n     *\n     * This is an alias of update, delete, and possibly create.\n     * Don't use write in combination with update, delete, or create.\n     *\n     * @param {string} role\n     * @returns {string}\n     */\n    Permission.write = (role) => {\n        return `write(\"${role}\")`;\n    };\n    /**\n     * Generate create permission string for the provided role.\n     *\n     * @param {string} role\n     * @returns {string}\n     */\n    Permission.create = (role) => {\n        return `create(\"${role}\")`;\n    };\n    /**\n     * Generate update permission string for the provided role.\n     *\n     * @param {string} role\n     * @returns {string}\n     */\n    Permission.update = (role) => {\n        return `update(\"${role}\")`;\n    };\n    /**\n     * Generate delete permission string for the provided role.\n     *\n     * @param {string} role\n     * @returns {string}\n     */\n    Permission.delete = (role) => {\n        return `delete(\"${role}\")`;\n    };\n\n    /**\n     * Helper class to generate role strings for `Permission`.\n     */\n    class Role {\n        /**\n         * Grants access to anyone.\n         *\n         * This includes authenticated and unauthenticated users.\n         *\n         * @returns {string}\n         */\n        static any() {\n            return 'any';\n        }\n        /**\n         * Grants access to a specific user by user ID.\n         *\n         * You can optionally pass verified or unverified for\n         * `status` to target specific types of users.\n         *\n         * @param {string} id\n         * @param {string} status\n         * @returns {string}\n         */\n        static user(id, status = '') {\n            if (status === '') {\n                return `user:${id}`;\n            }\n            return `user:${id}/${status}`;\n        }\n        /**\n         * Grants access to any authenticated or anonymous user.\n         *\n         * You can optionally pass verified or unverified for\n         * `status` to target specific types of users.\n         *\n         * @param {string} status\n         * @returns {string}\n         */\n        static users(status = '') {\n            if (status === '') {\n                return 'users';\n            }\n            return `users/${status}`;\n        }\n        /**\n         * Grants access to any guest user without a session.\n         *\n         * Authenticated users don't have access to this role.\n         *\n         * @returns {string}\n         */\n        static guests() {\n            return 'guests';\n        }\n        /**\n         * Grants access to a team by team ID.\n         *\n         * You can optionally pass a role for `role` to target\n         * team members with the specified role.\n         *\n         * @param {string} id\n         * @param {string} role\n         * @returns {string}\n         */\n        static team(id, role = '') {\n            if (role === '') {\n                return `team:${id}`;\n            }\n            return `team:${id}/${role}`;\n        }\n        /**\n         * Grants access to a specific member of a team.\n         *\n         * When the member is removed from the team, they will\n         * no longer have access.\n         *\n         * @param {string} id\n         * @returns {string}\n         */\n        static member(id) {\n            return `member:${id}`;\n        }\n        /**\n         * Grants access to a user with the specified label.\n         *\n         * @param {string} name\n         * @returns  {string}\n         */\n        static label(name) {\n            return `label:${name}`;\n        }\n    }\n\n    function normalize(id) {\n        if (id === undefined || id === null) {\n            throw new Error(\"Channel ID is required\");\n        }\n        const trimmed = String(id).trim();\n        if (trimmed === \"\") {\n            throw new Error(\"Channel ID is required\");\n        }\n        return trimmed;\n    }\n    class Channel {\n        constructor(segments) {\n            this.segments = segments;\n        }\n        next(segment, id) {\n            const segments = id === undefined\n                ? [...this.segments, segment]\n                : [...this.segments, segment, normalize(id)];\n            return new Channel(segments);\n        }\n        resolve(action) {\n            return new Channel([...this.segments, action]);\n        }\n        toString() {\n            return this.segments.join(\".\");\n        }\n        // --- DATABASE ROUTE ---\n        // Only available on Channel<Database>\n        collection(id) {\n            return this.next(\"collections\", id);\n        }\n        // Only available on Channel<Collection>\n        document(id) {\n            // Default: no document ID segment\n            return this.next(\"documents\", id);\n        }\n        // --- TABLESDB ROUTE ---\n        table(id) {\n            return this.next(\"tables\", id);\n        }\n        row(id) {\n            // Default: no row ID segment\n            return this.next(\"rows\", id);\n        }\n        // --- BUCKET ROUTE ---\n        file(id) {\n            // Default: no file ID segment\n            return this.next(\"files\", id);\n        }\n        // --- TERMINAL ACTIONS ---\n        // Restricted to the Actionable union\n        create() {\n            return this.resolve(\"create\");\n        }\n        upsert() {\n            return this.resolve(\"upsert\");\n        }\n        update() {\n            return this.resolve(\"update\");\n        }\n        delete() {\n            return this.resolve(\"delete\");\n        }\n        // --- ROOT FACTORIES ---\n        static database(id) {\n            return new Channel([\"databases\", normalize(id)]);\n        }\n        static execution(id) {\n            return new Channel([\"executions\", normalize(id)]);\n        }\n        static tablesdb(id) {\n            return new Channel([\"tablesdb\", normalize(id)]);\n        }\n        static bucket(id) {\n            return new Channel([\"buckets\", normalize(id)]);\n        }\n        static function(id) {\n            return new Channel([\"functions\", normalize(id)]);\n        }\n        static team(id) {\n            return new Channel([\"teams\", normalize(id)]);\n        }\n        static membership(id) {\n            return new Channel([\"memberships\", normalize(id)]);\n        }\n        static presence(id) {\n            return new Channel([\"presences\", normalize(id)]);\n        }\n        static account() {\n            return \"account\";\n        }\n        // Global events\n        static documents() {\n            return \"documents\";\n        }\n        static rows() {\n            return \"rows\";\n        }\n        static files() {\n            return \"files\";\n        }\n        static executions() {\n            return \"executions\";\n        }\n        static teams() {\n            return \"teams\";\n        }\n        static memberships() {\n            return \"memberships\";\n        }\n        static presences() {\n            return \"presences\";\n        }\n    }\n\n    exports.Condition = void 0;\n    (function (Condition) {\n        Condition[\"Equal\"] = \"equal\";\n        Condition[\"NotEqual\"] = \"notEqual\";\n        Condition[\"GreaterThan\"] = \"greaterThan\";\n        Condition[\"GreaterThanEqual\"] = \"greaterThanEqual\";\n        Condition[\"LessThan\"] = \"lessThan\";\n        Condition[\"LessThanEqual\"] = \"lessThanEqual\";\n        Condition[\"Contains\"] = \"contains\";\n        Condition[\"IsNull\"] = \"isNull\";\n        Condition[\"IsNotNull\"] = \"isNotNull\";\n    })(exports.Condition || (exports.Condition = {}));\n    /**\n     * Helper class to generate operator strings for atomic operations.\n     */\n    class Operator {\n        /**\n         * Constructor for Operator class.\n         *\n         * @param {string} method\n         * @param {OperatorValues} values\n         */\n        constructor(method, values) {\n            this.method = method;\n            if (values !== undefined) {\n                if (Array.isArray(values)) {\n                    this.values = values;\n                }\n                else {\n                    this.values = [values];\n                }\n            }\n        }\n        /**\n         * Convert the operator object to a JSON string.\n         *\n         * @returns {string}\n         */\n        toString() {\n            return JSON.stringify({\n                method: this.method,\n                values: this.values,\n            });\n        }\n    }\n    /**\n     * Increment a numeric attribute by a specified value.\n     *\n     * @param {number} value\n     * @param {number} max\n     * @returns {string}\n     */\n    Operator.increment = (value = 1, max) => {\n        if (isNaN(value) || !isFinite(value)) {\n            throw new Error(\"Value cannot be NaN or Infinity\");\n        }\n        if (max !== undefined && (isNaN(max) || !isFinite(max))) {\n            throw new Error(\"Max cannot be NaN or Infinity\");\n        }\n        const values = [value];\n        if (max !== undefined) {\n            values.push(max);\n        }\n        return new Operator(\"increment\", values).toString();\n    };\n    /**\n     * Decrement a numeric attribute by a specified value.\n     *\n     * @param {number} value\n     * @param {number} min\n     * @returns {string}\n     */\n    Operator.decrement = (value = 1, min) => {\n        if (isNaN(value) || !isFinite(value)) {\n            throw new Error(\"Value cannot be NaN or Infinity\");\n        }\n        if (min !== undefined && (isNaN(min) || !isFinite(min))) {\n            throw new Error(\"Min cannot be NaN or Infinity\");\n        }\n        const values = [value];\n        if (min !== undefined) {\n            values.push(min);\n        }\n        return new Operator(\"decrement\", values).toString();\n    };\n    /**\n     * Multiply a numeric attribute by a specified factor.\n     *\n     * @param {number} factor\n     * @param {number} max\n     * @returns {string}\n     */\n    Operator.multiply = (factor, max) => {\n        if (isNaN(factor) || !isFinite(factor)) {\n            throw new Error(\"Factor cannot be NaN or Infinity\");\n        }\n        if (max !== undefined && (isNaN(max) || !isFinite(max))) {\n            throw new Error(\"Max cannot be NaN or Infinity\");\n        }\n        const values = [factor];\n        if (max !== undefined) {\n            values.push(max);\n        }\n        return new Operator(\"multiply\", values).toString();\n    };\n    /**\n     * Divide a numeric attribute by a specified divisor.\n     *\n     * @param {number} divisor\n     * @param {number} min\n     * @returns {string}\n     */\n    Operator.divide = (divisor, min) => {\n        if (isNaN(divisor) || !isFinite(divisor)) {\n            throw new Error(\"Divisor cannot be NaN or Infinity\");\n        }\n        if (min !== undefined && (isNaN(min) || !isFinite(min))) {\n            throw new Error(\"Min cannot be NaN or Infinity\");\n        }\n        if (divisor === 0) {\n            throw new Error(\"Divisor cannot be zero\");\n        }\n        const values = [divisor];\n        if (min !== undefined) {\n            values.push(min);\n        }\n        return new Operator(\"divide\", values).toString();\n    };\n    /**\n     * Apply modulo operation on a numeric attribute.\n     *\n     * @param {number} divisor\n     * @returns {string}\n     */\n    Operator.modulo = (divisor) => {\n        if (isNaN(divisor) || !isFinite(divisor)) {\n            throw new Error(\"Divisor cannot be NaN or Infinity\");\n        }\n        if (divisor === 0) {\n            throw new Error(\"Divisor cannot be zero\");\n        }\n        return new Operator(\"modulo\", [divisor]).toString();\n    };\n    /**\n     * Raise a numeric attribute to a specified power.\n     *\n     * @param {number} exponent\n     * @param {number} max\n     * @returns {string}\n     */\n    Operator.power = (exponent, max) => {\n        if (isNaN(exponent) || !isFinite(exponent)) {\n            throw new Error(\"Exponent cannot be NaN or Infinity\");\n        }\n        if (max !== undefined && (isNaN(max) || !isFinite(max))) {\n            throw new Error(\"Max cannot be NaN or Infinity\");\n        }\n        const values = [exponent];\n        if (max !== undefined) {\n            values.push(max);\n        }\n        return new Operator(\"power\", values).toString();\n    };\n    /**\n     * Append values to an array attribute.\n     *\n     * @param {any[]} values\n     * @returns {string}\n     */\n    Operator.arrayAppend = (values) => new Operator(\"arrayAppend\", values).toString();\n    /**\n     * Prepend values to an array attribute.\n     *\n     * @param {any[]} values\n     * @returns {string}\n     */\n    Operator.arrayPrepend = (values) => new Operator(\"arrayPrepend\", values).toString();\n    /**\n     * Insert a value at a specific index in an array attribute.\n     *\n     * @param {number} index\n     * @param {any} value\n     * @returns {string}\n     */\n    Operator.arrayInsert = (index, value) => new Operator(\"arrayInsert\", [index, value]).toString();\n    /**\n     * Remove a value from an array attribute.\n     *\n     * @param {any} value\n     * @returns {string}\n     */\n    Operator.arrayRemove = (value) => new Operator(\"arrayRemove\", [value]).toString();\n    /**\n     * Remove duplicate values from an array attribute.\n     *\n     * @returns {string}\n     */\n    Operator.arrayUnique = () => new Operator(\"arrayUnique\", []).toString();\n    /**\n     * Keep only values that exist in both the current array and the provided array.\n     *\n     * @param {any[]} values\n     * @returns {string}\n     */\n    Operator.arrayIntersect = (values) => new Operator(\"arrayIntersect\", values).toString();\n    /**\n     * Remove values from the array that exist in the provided array.\n     *\n     * @param {any[]} values\n     * @returns {string}\n     */\n    Operator.arrayDiff = (values) => new Operator(\"arrayDiff\", values).toString();\n    /**\n     * Filter array values based on a condition.\n     *\n     * @param {Condition} condition\n     * @param {any} value\n     * @returns {string}\n     */\n    Operator.arrayFilter = (condition, value) => {\n        const values = [condition, value === undefined ? null : value];\n        return new Operator(\"arrayFilter\", values).toString();\n    };\n    /**\n     * Concatenate a value to a string or array attribute.\n     *\n     * @param {any} value\n     * @returns {string}\n     */\n    Operator.stringConcat = (value) => new Operator(\"stringConcat\", [value]).toString();\n    /**\n     * Replace occurrences of a search string with a replacement string.\n     *\n     * @param {string} search\n     * @param {string} replace\n     * @returns {string}\n     */\n    Operator.stringReplace = (search, replace) => new Operator(\"stringReplace\", [search, replace]).toString();\n    /**\n     * Toggle a boolean attribute.\n     *\n     * @returns {string}\n     */\n    Operator.toggle = () => new Operator(\"toggle\", []).toString();\n    /**\n     * Add days to a date attribute.\n     *\n     * @param {number} days\n     * @returns {string}\n     */\n    Operator.dateAddDays = (days) => new Operator(\"dateAddDays\", [days]).toString();\n    /**\n     * Subtract days from a date attribute.\n     *\n     * @param {number} days\n     * @returns {string}\n     */\n    Operator.dateSubDays = (days) => new Operator(\"dateSubDays\", [days]).toString();\n    /**\n     * Set a date attribute to the current date and time.\n     *\n     * @returns {string}\n     */\n    Operator.dateSetNow = () => new Operator(\"dateSetNow\", []).toString();\n\n    exports.AuthenticatorType = void 0;\n    (function (AuthenticatorType) {\n        AuthenticatorType[\"Totp\"] = \"totp\";\n    })(exports.AuthenticatorType || (exports.AuthenticatorType = {}));\n\n    exports.AuthenticationFactor = void 0;\n    (function (AuthenticationFactor) {\n        AuthenticationFactor[\"Email\"] = \"email\";\n        AuthenticationFactor[\"Phone\"] = \"phone\";\n        AuthenticationFactor[\"Totp\"] = \"totp\";\n        AuthenticationFactor[\"Recoverycode\"] = \"recoverycode\";\n    })(exports.AuthenticationFactor || (exports.AuthenticationFactor = {}));\n\n    exports.OAuthProvider = void 0;\n    (function (OAuthProvider) {\n        OAuthProvider[\"Amazon\"] = \"amazon\";\n        OAuthProvider[\"Apple\"] = \"apple\";\n        OAuthProvider[\"Appwrite\"] = \"appwrite\";\n        OAuthProvider[\"Auth0\"] = \"auth0\";\n        OAuthProvider[\"Authentik\"] = \"authentik\";\n        OAuthProvider[\"Autodesk\"] = \"autodesk\";\n        OAuthProvider[\"Bitbucket\"] = \"bitbucket\";\n        OAuthProvider[\"Bitly\"] = \"bitly\";\n        OAuthProvider[\"Box\"] = \"box\";\n        OAuthProvider[\"Dailymotion\"] = \"dailymotion\";\n        OAuthProvider[\"Discord\"] = \"discord\";\n        OAuthProvider[\"Disqus\"] = \"disqus\";\n        OAuthProvider[\"Dropbox\"] = \"dropbox\";\n        OAuthProvider[\"Etsy\"] = \"etsy\";\n        OAuthProvider[\"Facebook\"] = \"facebook\";\n        OAuthProvider[\"Figma\"] = \"figma\";\n        OAuthProvider[\"Fusionauth\"] = \"fusionauth\";\n        OAuthProvider[\"Github\"] = \"github\";\n        OAuthProvider[\"Gitlab\"] = \"gitlab\";\n        OAuthProvider[\"Google\"] = \"google\";\n        OAuthProvider[\"Keycloak\"] = \"keycloak\";\n        OAuthProvider[\"Kick\"] = \"kick\";\n        OAuthProvider[\"Linkedin\"] = \"linkedin\";\n        OAuthProvider[\"Microsoft\"] = \"microsoft\";\n        OAuthProvider[\"Notion\"] = \"notion\";\n        OAuthProvider[\"Oidc\"] = \"oidc\";\n        OAuthProvider[\"Okta\"] = \"okta\";\n        OAuthProvider[\"Paypal\"] = \"paypal\";\n        OAuthProvider[\"PaypalSandbox\"] = \"paypalSandbox\";\n        OAuthProvider[\"Podio\"] = \"podio\";\n        OAuthProvider[\"Salesforce\"] = \"salesforce\";\n        OAuthProvider[\"Slack\"] = \"slack\";\n        OAuthProvider[\"Spotify\"] = \"spotify\";\n        OAuthProvider[\"Stripe\"] = \"stripe\";\n        OAuthProvider[\"Tradeshift\"] = \"tradeshift\";\n        OAuthProvider[\"TradeshiftBox\"] = \"tradeshiftBox\";\n        OAuthProvider[\"Twitch\"] = \"twitch\";\n        OAuthProvider[\"Wordpress\"] = \"wordpress\";\n        OAuthProvider[\"X\"] = \"x\";\n        OAuthProvider[\"Yahoo\"] = \"yahoo\";\n        OAuthProvider[\"Yammer\"] = \"yammer\";\n        OAuthProvider[\"Yandex\"] = \"yandex\";\n        OAuthProvider[\"Zoho\"] = \"zoho\";\n        OAuthProvider[\"Zoom\"] = \"zoom\";\n    })(exports.OAuthProvider || (exports.OAuthProvider = {}));\n\n    exports.Browser = void 0;\n    (function (Browser) {\n        Browser[\"AvantBrowser\"] = \"aa\";\n        Browser[\"AndroidWebViewBeta\"] = \"an\";\n        Browser[\"GoogleChrome\"] = \"ch\";\n        Browser[\"GoogleChromeIOS\"] = \"ci\";\n        Browser[\"GoogleChromeMobile\"] = \"cm\";\n        Browser[\"Chromium\"] = \"cr\";\n        Browser[\"MozillaFirefox\"] = \"ff\";\n        Browser[\"Safari\"] = \"sf\";\n        Browser[\"MobileSafari\"] = \"mf\";\n        Browser[\"MicrosoftEdge\"] = \"ps\";\n        Browser[\"MicrosoftEdgeIOS\"] = \"oi\";\n        Browser[\"OperaMini\"] = \"om\";\n        Browser[\"Opera\"] = \"op\";\n        Browser[\"OperaNext\"] = \"on\";\n    })(exports.Browser || (exports.Browser = {}));\n\n    exports.CreditCard = void 0;\n    (function (CreditCard) {\n        CreditCard[\"AmericanExpress\"] = \"amex\";\n        CreditCard[\"Argencard\"] = \"argencard\";\n        CreditCard[\"Cabal\"] = \"cabal\";\n        CreditCard[\"Cencosud\"] = \"cencosud\";\n        CreditCard[\"DinersClub\"] = \"diners\";\n        CreditCard[\"Discover\"] = \"discover\";\n        CreditCard[\"Elo\"] = \"elo\";\n        CreditCard[\"Hipercard\"] = \"hipercard\";\n        CreditCard[\"JCB\"] = \"jcb\";\n        CreditCard[\"Mastercard\"] = \"mastercard\";\n        CreditCard[\"Naranja\"] = \"naranja\";\n        CreditCard[\"TarjetaShopping\"] = \"targeta-shopping\";\n        CreditCard[\"UnionPay\"] = \"unionpay\";\n        CreditCard[\"Visa\"] = \"visa\";\n        CreditCard[\"MIR\"] = \"mir\";\n        CreditCard[\"Maestro\"] = \"maestro\";\n        CreditCard[\"Rupay\"] = \"rupay\";\n    })(exports.CreditCard || (exports.CreditCard = {}));\n\n    exports.Flag = void 0;\n    (function (Flag) {\n        Flag[\"Afghanistan\"] = \"af\";\n        Flag[\"Angola\"] = \"ao\";\n        Flag[\"Albania\"] = \"al\";\n        Flag[\"Andorra\"] = \"ad\";\n        Flag[\"UnitedArabEmirates\"] = \"ae\";\n        Flag[\"Argentina\"] = \"ar\";\n        Flag[\"Armenia\"] = \"am\";\n        Flag[\"AntiguaAndBarbuda\"] = \"ag\";\n        Flag[\"Australia\"] = \"au\";\n        Flag[\"Austria\"] = \"at\";\n        Flag[\"Azerbaijan\"] = \"az\";\n        Flag[\"Burundi\"] = \"bi\";\n        Flag[\"Belgium\"] = \"be\";\n        Flag[\"Benin\"] = \"bj\";\n        Flag[\"BurkinaFaso\"] = \"bf\";\n        Flag[\"Bangladesh\"] = \"bd\";\n        Flag[\"Bulgaria\"] = \"bg\";\n        Flag[\"Bahrain\"] = \"bh\";\n        Flag[\"Bahamas\"] = \"bs\";\n        Flag[\"BosniaAndHerzegovina\"] = \"ba\";\n        Flag[\"Belarus\"] = \"by\";\n        Flag[\"Belize\"] = \"bz\";\n        Flag[\"Bolivia\"] = \"bo\";\n        Flag[\"Brazil\"] = \"br\";\n        Flag[\"Barbados\"] = \"bb\";\n        Flag[\"BruneiDarussalam\"] = \"bn\";\n        Flag[\"Bhutan\"] = \"bt\";\n        Flag[\"Botswana\"] = \"bw\";\n        Flag[\"CentralAfricanRepublic\"] = \"cf\";\n        Flag[\"Canada\"] = \"ca\";\n        Flag[\"Switzerland\"] = \"ch\";\n        Flag[\"Chile\"] = \"cl\";\n        Flag[\"China\"] = \"cn\";\n        Flag[\"CoteDIvoire\"] = \"ci\";\n        Flag[\"Cameroon\"] = \"cm\";\n        Flag[\"DemocraticRepublicOfTheCongo\"] = \"cd\";\n        Flag[\"RepublicOfTheCongo\"] = \"cg\";\n        Flag[\"Colombia\"] = \"co\";\n        Flag[\"Comoros\"] = \"km\";\n        Flag[\"CapeVerde\"] = \"cv\";\n        Flag[\"CostaRica\"] = \"cr\";\n        Flag[\"Cuba\"] = \"cu\";\n        Flag[\"Cyprus\"] = \"cy\";\n        Flag[\"CzechRepublic\"] = \"cz\";\n        Flag[\"Germany\"] = \"de\";\n        Flag[\"Djibouti\"] = \"dj\";\n        Flag[\"Dominica\"] = \"dm\";\n        Flag[\"Denmark\"] = \"dk\";\n        Flag[\"DominicanRepublic\"] = \"do\";\n        Flag[\"Algeria\"] = \"dz\";\n        Flag[\"Ecuador\"] = \"ec\";\n        Flag[\"Egypt\"] = \"eg\";\n        Flag[\"Eritrea\"] = \"er\";\n        Flag[\"Spain\"] = \"es\";\n        Flag[\"Estonia\"] = \"ee\";\n        Flag[\"Ethiopia\"] = \"et\";\n        Flag[\"Finland\"] = \"fi\";\n        Flag[\"Fiji\"] = \"fj\";\n        Flag[\"France\"] = \"fr\";\n        Flag[\"MicronesiaFederatedStatesOf\"] = \"fm\";\n        Flag[\"Gabon\"] = \"ga\";\n        Flag[\"UnitedKingdom\"] = \"gb\";\n        Flag[\"Georgia\"] = \"ge\";\n        Flag[\"Ghana\"] = \"gh\";\n        Flag[\"Guinea\"] = \"gn\";\n        Flag[\"Gambia\"] = \"gm\";\n        Flag[\"GuineaBissau\"] = \"gw\";\n        Flag[\"EquatorialGuinea\"] = \"gq\";\n        Flag[\"Greece\"] = \"gr\";\n        Flag[\"Grenada\"] = \"gd\";\n        Flag[\"Guatemala\"] = \"gt\";\n        Flag[\"Guyana\"] = \"gy\";\n        Flag[\"Honduras\"] = \"hn\";\n        Flag[\"Croatia\"] = \"hr\";\n        Flag[\"Haiti\"] = \"ht\";\n        Flag[\"Hungary\"] = \"hu\";\n        Flag[\"Indonesia\"] = \"id\";\n        Flag[\"India\"] = \"in\";\n        Flag[\"Ireland\"] = \"ie\";\n        Flag[\"IranIslamicRepublicOf\"] = \"ir\";\n        Flag[\"Iraq\"] = \"iq\";\n        Flag[\"Iceland\"] = \"is\";\n        Flag[\"Israel\"] = \"il\";\n        Flag[\"Italy\"] = \"it\";\n        Flag[\"Jamaica\"] = \"jm\";\n        Flag[\"Jordan\"] = \"jo\";\n        Flag[\"Japan\"] = \"jp\";\n        Flag[\"Kazakhstan\"] = \"kz\";\n        Flag[\"Kenya\"] = \"ke\";\n        Flag[\"Kyrgyzstan\"] = \"kg\";\n        Flag[\"Cambodia\"] = \"kh\";\n        Flag[\"Kiribati\"] = \"ki\";\n        Flag[\"SaintKittsAndNevis\"] = \"kn\";\n        Flag[\"SouthKorea\"] = \"kr\";\n        Flag[\"Kuwait\"] = \"kw\";\n        Flag[\"LaoPeopleSDemocraticRepublic\"] = \"la\";\n        Flag[\"Lebanon\"] = \"lb\";\n        Flag[\"Liberia\"] = \"lr\";\n        Flag[\"Libya\"] = \"ly\";\n        Flag[\"SaintLucia\"] = \"lc\";\n        Flag[\"Liechtenstein\"] = \"li\";\n        Flag[\"SriLanka\"] = \"lk\";\n        Flag[\"Lesotho\"] = \"ls\";\n        Flag[\"Lithuania\"] = \"lt\";\n        Flag[\"Luxembourg\"] = \"lu\";\n        Flag[\"Latvia\"] = \"lv\";\n        Flag[\"Morocco\"] = \"ma\";\n        Flag[\"Monaco\"] = \"mc\";\n        Flag[\"Moldova\"] = \"md\";\n        Flag[\"Madagascar\"] = \"mg\";\n        Flag[\"Maldives\"] = \"mv\";\n        Flag[\"Mexico\"] = \"mx\";\n        Flag[\"MarshallIslands\"] = \"mh\";\n        Flag[\"NorthMacedonia\"] = \"mk\";\n        Flag[\"Mali\"] = \"ml\";\n        Flag[\"Malta\"] = \"mt\";\n        Flag[\"Myanmar\"] = \"mm\";\n        Flag[\"Montenegro\"] = \"me\";\n        Flag[\"Mongolia\"] = \"mn\";\n        Flag[\"Mozambique\"] = \"mz\";\n        Flag[\"Mauritania\"] = \"mr\";\n        Flag[\"Mauritius\"] = \"mu\";\n        Flag[\"Malawi\"] = \"mw\";\n        Flag[\"Malaysia\"] = \"my\";\n        Flag[\"Namibia\"] = \"na\";\n        Flag[\"Niger\"] = \"ne\";\n        Flag[\"Nigeria\"] = \"ng\";\n        Flag[\"Nicaragua\"] = \"ni\";\n        Flag[\"Netherlands\"] = \"nl\";\n        Flag[\"Norway\"] = \"no\";\n        Flag[\"Nepal\"] = \"np\";\n        Flag[\"Nauru\"] = \"nr\";\n        Flag[\"NewZealand\"] = \"nz\";\n        Flag[\"Oman\"] = \"om\";\n        Flag[\"Pakistan\"] = \"pk\";\n        Flag[\"Panama\"] = \"pa\";\n        Flag[\"Peru\"] = \"pe\";\n        Flag[\"Philippines\"] = \"ph\";\n        Flag[\"Palau\"] = \"pw\";\n        Flag[\"PapuaNewGuinea\"] = \"pg\";\n        Flag[\"Poland\"] = \"pl\";\n        Flag[\"FrenchPolynesia\"] = \"pf\";\n        Flag[\"NorthKorea\"] = \"kp\";\n        Flag[\"Portugal\"] = \"pt\";\n        Flag[\"Paraguay\"] = \"py\";\n        Flag[\"Qatar\"] = \"qa\";\n        Flag[\"Romania\"] = \"ro\";\n        Flag[\"Russia\"] = \"ru\";\n        Flag[\"Rwanda\"] = \"rw\";\n        Flag[\"SaudiArabia\"] = \"sa\";\n        Flag[\"Sudan\"] = \"sd\";\n        Flag[\"Senegal\"] = \"sn\";\n        Flag[\"Singapore\"] = \"sg\";\n        Flag[\"SolomonIslands\"] = \"sb\";\n        Flag[\"SierraLeone\"] = \"sl\";\n        Flag[\"ElSalvador\"] = \"sv\";\n        Flag[\"SanMarino\"] = \"sm\";\n        Flag[\"Somalia\"] = \"so\";\n        Flag[\"Serbia\"] = \"rs\";\n        Flag[\"SouthSudan\"] = \"ss\";\n        Flag[\"SaoTomeAndPrincipe\"] = \"st\";\n        Flag[\"Suriname\"] = \"sr\";\n        Flag[\"Slovakia\"] = \"sk\";\n        Flag[\"Slovenia\"] = \"si\";\n        Flag[\"Sweden\"] = \"se\";\n        Flag[\"Eswatini\"] = \"sz\";\n        Flag[\"Seychelles\"] = \"sc\";\n        Flag[\"Syria\"] = \"sy\";\n        Flag[\"Chad\"] = \"td\";\n        Flag[\"Togo\"] = \"tg\";\n        Flag[\"Thailand\"] = \"th\";\n        Flag[\"Tajikistan\"] = \"tj\";\n        Flag[\"Turkmenistan\"] = \"tm\";\n        Flag[\"TimorLeste\"] = \"tl\";\n        Flag[\"Tonga\"] = \"to\";\n        Flag[\"TrinidadAndTobago\"] = \"tt\";\n        Flag[\"Tunisia\"] = \"tn\";\n        Flag[\"Turkey\"] = \"tr\";\n        Flag[\"Tuvalu\"] = \"tv\";\n        Flag[\"Tanzania\"] = \"tz\";\n        Flag[\"Uganda\"] = \"ug\";\n        Flag[\"Ukraine\"] = \"ua\";\n        Flag[\"Uruguay\"] = \"uy\";\n        Flag[\"UnitedStates\"] = \"us\";\n        Flag[\"Uzbekistan\"] = \"uz\";\n        Flag[\"VaticanCity\"] = \"va\";\n        Flag[\"SaintVincentAndTheGrenadines\"] = \"vc\";\n        Flag[\"Venezuela\"] = \"ve\";\n        Flag[\"Vietnam\"] = \"vn\";\n        Flag[\"Vanuatu\"] = \"vu\";\n        Flag[\"Samoa\"] = \"ws\";\n        Flag[\"Yemen\"] = \"ye\";\n        Flag[\"SouthAfrica\"] = \"za\";\n        Flag[\"Zambia\"] = \"zm\";\n        Flag[\"Zimbabwe\"] = \"zw\";\n    })(exports.Flag || (exports.Flag = {}));\n\n    exports.BrowserTheme = void 0;\n    (function (BrowserTheme) {\n        BrowserTheme[\"Light\"] = \"light\";\n        BrowserTheme[\"Dark\"] = \"dark\";\n    })(exports.BrowserTheme || (exports.BrowserTheme = {}));\n\n    exports.Timezone = void 0;\n    (function (Timezone) {\n        Timezone[\"AfricaAbidjan\"] = \"africa/abidjan\";\n        Timezone[\"AfricaAccra\"] = \"africa/accra\";\n        Timezone[\"AfricaAddisAbaba\"] = \"africa/addis_ababa\";\n        Timezone[\"AfricaAlgiers\"] = \"africa/algiers\";\n        Timezone[\"AfricaAsmara\"] = \"africa/asmara\";\n        Timezone[\"AfricaBamako\"] = \"africa/bamako\";\n        Timezone[\"AfricaBangui\"] = \"africa/bangui\";\n        Timezone[\"AfricaBanjul\"] = \"africa/banjul\";\n        Timezone[\"AfricaBissau\"] = \"africa/bissau\";\n        Timezone[\"AfricaBlantyre\"] = \"africa/blantyre\";\n        Timezone[\"AfricaBrazzaville\"] = \"africa/brazzaville\";\n        Timezone[\"AfricaBujumbura\"] = \"africa/bujumbura\";\n        Timezone[\"AfricaCairo\"] = \"africa/cairo\";\n        Timezone[\"AfricaCasablanca\"] = \"africa/casablanca\";\n        Timezone[\"AfricaCeuta\"] = \"africa/ceuta\";\n        Timezone[\"AfricaConakry\"] = \"africa/conakry\";\n        Timezone[\"AfricaDakar\"] = \"africa/dakar\";\n        Timezone[\"AfricaDarEsSalaam\"] = \"africa/dar_es_salaam\";\n        Timezone[\"AfricaDjibouti\"] = \"africa/djibouti\";\n        Timezone[\"AfricaDouala\"] = \"africa/douala\";\n        Timezone[\"AfricaElAaiun\"] = \"africa/el_aaiun\";\n        Timezone[\"AfricaFreetown\"] = \"africa/freetown\";\n        Timezone[\"AfricaGaborone\"] = \"africa/gaborone\";\n        Timezone[\"AfricaHarare\"] = \"africa/harare\";\n        Timezone[\"AfricaJohannesburg\"] = \"africa/johannesburg\";\n        Timezone[\"AfricaJuba\"] = \"africa/juba\";\n        Timezone[\"AfricaKampala\"] = \"africa/kampala\";\n        Timezone[\"AfricaKhartoum\"] = \"africa/khartoum\";\n        Timezone[\"AfricaKigali\"] = \"africa/kigali\";\n        Timezone[\"AfricaKinshasa\"] = \"africa/kinshasa\";\n        Timezone[\"AfricaLagos\"] = \"africa/lagos\";\n        Timezone[\"AfricaLibreville\"] = \"africa/libreville\";\n        Timezone[\"AfricaLome\"] = \"africa/lome\";\n        Timezone[\"AfricaLuanda\"] = \"africa/luanda\";\n        Timezone[\"AfricaLubumbashi\"] = \"africa/lubumbashi\";\n        Timezone[\"AfricaLusaka\"] = \"africa/lusaka\";\n        Timezone[\"AfricaMalabo\"] = \"africa/malabo\";\n        Timezone[\"AfricaMaputo\"] = \"africa/maputo\";\n        Timezone[\"AfricaMaseru\"] = \"africa/maseru\";\n        Timezone[\"AfricaMbabane\"] = \"africa/mbabane\";\n        Timezone[\"AfricaMogadishu\"] = \"africa/mogadishu\";\n        Timezone[\"AfricaMonrovia\"] = \"africa/monrovia\";\n        Timezone[\"AfricaNairobi\"] = \"africa/nairobi\";\n        Timezone[\"AfricaNdjamena\"] = \"africa/ndjamena\";\n        Timezone[\"AfricaNiamey\"] = \"africa/niamey\";\n        Timezone[\"AfricaNouakchott\"] = \"africa/nouakchott\";\n        Timezone[\"AfricaOuagadougou\"] = \"africa/ouagadougou\";\n        Timezone[\"AfricaPortonovo\"] = \"africa/porto-novo\";\n        Timezone[\"AfricaSaoTome\"] = \"africa/sao_tome\";\n        Timezone[\"AfricaTripoli\"] = \"africa/tripoli\";\n        Timezone[\"AfricaTunis\"] = \"africa/tunis\";\n        Timezone[\"AfricaWindhoek\"] = \"africa/windhoek\";\n        Timezone[\"AmericaAdak\"] = \"america/adak\";\n        Timezone[\"AmericaAnchorage\"] = \"america/anchorage\";\n        Timezone[\"AmericaAnguilla\"] = \"america/anguilla\";\n        Timezone[\"AmericaAntigua\"] = \"america/antigua\";\n        Timezone[\"AmericaAraguaina\"] = \"america/araguaina\";\n        Timezone[\"AmericaArgentinaBuenosAires\"] = \"america/argentina/buenos_aires\";\n        Timezone[\"AmericaArgentinaCatamarca\"] = \"america/argentina/catamarca\";\n        Timezone[\"AmericaArgentinaCordoba\"] = \"america/argentina/cordoba\";\n        Timezone[\"AmericaArgentinaJujuy\"] = \"america/argentina/jujuy\";\n        Timezone[\"AmericaArgentinaLaRioja\"] = \"america/argentina/la_rioja\";\n        Timezone[\"AmericaArgentinaMendoza\"] = \"america/argentina/mendoza\";\n        Timezone[\"AmericaArgentinaRioGallegos\"] = \"america/argentina/rio_gallegos\";\n        Timezone[\"AmericaArgentinaSalta\"] = \"america/argentina/salta\";\n        Timezone[\"AmericaArgentinaSanJuan\"] = \"america/argentina/san_juan\";\n        Timezone[\"AmericaArgentinaSanLuis\"] = \"america/argentina/san_luis\";\n        Timezone[\"AmericaArgentinaTucuman\"] = \"america/argentina/tucuman\";\n        Timezone[\"AmericaArgentinaUshuaia\"] = \"america/argentina/ushuaia\";\n        Timezone[\"AmericaAruba\"] = \"america/aruba\";\n        Timezone[\"AmericaAsuncion\"] = \"america/asuncion\";\n        Timezone[\"AmericaAtikokan\"] = \"america/atikokan\";\n        Timezone[\"AmericaBahia\"] = \"america/bahia\";\n        Timezone[\"AmericaBahiaBanderas\"] = \"america/bahia_banderas\";\n        Timezone[\"AmericaBarbados\"] = \"america/barbados\";\n        Timezone[\"AmericaBelem\"] = \"america/belem\";\n        Timezone[\"AmericaBelize\"] = \"america/belize\";\n        Timezone[\"AmericaBlancsablon\"] = \"america/blanc-sablon\";\n        Timezone[\"AmericaBoaVista\"] = \"america/boa_vista\";\n        Timezone[\"AmericaBogota\"] = \"america/bogota\";\n        Timezone[\"AmericaBoise\"] = \"america/boise\";\n        Timezone[\"AmericaCambridgeBay\"] = \"america/cambridge_bay\";\n        Timezone[\"AmericaCampoGrande\"] = \"america/campo_grande\";\n        Timezone[\"AmericaCancun\"] = \"america/cancun\";\n        Timezone[\"AmericaCaracas\"] = \"america/caracas\";\n        Timezone[\"AmericaCayenne\"] = \"america/cayenne\";\n        Timezone[\"AmericaCayman\"] = \"america/cayman\";\n        Timezone[\"AmericaChicago\"] = \"america/chicago\";\n        Timezone[\"AmericaChihuahua\"] = \"america/chihuahua\";\n        Timezone[\"AmericaCiudadJuarez\"] = \"america/ciudad_juarez\";\n        Timezone[\"AmericaCostaRica\"] = \"america/costa_rica\";\n        Timezone[\"AmericaCoyhaique\"] = \"america/coyhaique\";\n        Timezone[\"AmericaCreston\"] = \"america/creston\";\n        Timezone[\"AmericaCuiaba\"] = \"america/cuiaba\";\n        Timezone[\"AmericaCuracao\"] = \"america/curacao\";\n        Timezone[\"AmericaDanmarkshavn\"] = \"america/danmarkshavn\";\n        Timezone[\"AmericaDawson\"] = \"america/dawson\";\n        Timezone[\"AmericaDawsonCreek\"] = \"america/dawson_creek\";\n        Timezone[\"AmericaDenver\"] = \"america/denver\";\n        Timezone[\"AmericaDetroit\"] = \"america/detroit\";\n        Timezone[\"AmericaDominica\"] = \"america/dominica\";\n        Timezone[\"AmericaEdmonton\"] = \"america/edmonton\";\n        Timezone[\"AmericaEirunepe\"] = \"america/eirunepe\";\n        Timezone[\"AmericaElSalvador\"] = \"america/el_salvador\";\n        Timezone[\"AmericaFortNelson\"] = \"america/fort_nelson\";\n        Timezone[\"AmericaFortaleza\"] = \"america/fortaleza\";\n        Timezone[\"AmericaGlaceBay\"] = \"america/glace_bay\";\n        Timezone[\"AmericaGooseBay\"] = \"america/goose_bay\";\n        Timezone[\"AmericaGrandTurk\"] = \"america/grand_turk\";\n        Timezone[\"AmericaGrenada\"] = \"america/grenada\";\n        Timezone[\"AmericaGuadeloupe\"] = \"america/guadeloupe\";\n        Timezone[\"AmericaGuatemala\"] = \"america/guatemala\";\n        Timezone[\"AmericaGuayaquil\"] = \"america/guayaquil\";\n        Timezone[\"AmericaGuyana\"] = \"america/guyana\";\n        Timezone[\"AmericaHalifax\"] = \"america/halifax\";\n        Timezone[\"AmericaHavana\"] = \"america/havana\";\n        Timezone[\"AmericaHermosillo\"] = \"america/hermosillo\";\n        Timezone[\"AmericaIndianaIndianapolis\"] = \"america/indiana/indianapolis\";\n        Timezone[\"AmericaIndianaKnox\"] = \"america/indiana/knox\";\n        Timezone[\"AmericaIndianaMarengo\"] = \"america/indiana/marengo\";\n        Timezone[\"AmericaIndianaPetersburg\"] = \"america/indiana/petersburg\";\n        Timezone[\"AmericaIndianaTellCity\"] = \"america/indiana/tell_city\";\n        Timezone[\"AmericaIndianaVevay\"] = \"america/indiana/vevay\";\n        Timezone[\"AmericaIndianaVincennes\"] = \"america/indiana/vincennes\";\n        Timezone[\"AmericaIndianaWinamac\"] = \"america/indiana/winamac\";\n        Timezone[\"AmericaInuvik\"] = \"america/inuvik\";\n        Timezone[\"AmericaIqaluit\"] = \"america/iqaluit\";\n        Timezone[\"AmericaJamaica\"] = \"america/jamaica\";\n        Timezone[\"AmericaJuneau\"] = \"america/juneau\";\n        Timezone[\"AmericaKentuckyLouisville\"] = \"america/kentucky/louisville\";\n        Timezone[\"AmericaKentuckyMonticello\"] = \"america/kentucky/monticello\";\n        Timezone[\"AmericaKralendijk\"] = \"america/kralendijk\";\n        Timezone[\"AmericaLaPaz\"] = \"america/la_paz\";\n        Timezone[\"AmericaLima\"] = \"america/lima\";\n        Timezone[\"AmericaLosAngeles\"] = \"america/los_angeles\";\n        Timezone[\"AmericaLowerPrinces\"] = \"america/lower_princes\";\n        Timezone[\"AmericaMaceio\"] = \"america/maceio\";\n        Timezone[\"AmericaManagua\"] = \"america/managua\";\n        Timezone[\"AmericaManaus\"] = \"america/manaus\";\n        Timezone[\"AmericaMarigot\"] = \"america/marigot\";\n        Timezone[\"AmericaMartinique\"] = \"america/martinique\";\n        Timezone[\"AmericaMatamoros\"] = \"america/matamoros\";\n        Timezone[\"AmericaMazatlan\"] = \"america/mazatlan\";\n        Timezone[\"AmericaMenominee\"] = \"america/menominee\";\n        Timezone[\"AmericaMerida\"] = \"america/merida\";\n        Timezone[\"AmericaMetlakatla\"] = \"america/metlakatla\";\n        Timezone[\"AmericaMexicoCity\"] = \"america/mexico_city\";\n        Timezone[\"AmericaMiquelon\"] = \"america/miquelon\";\n        Timezone[\"AmericaMoncton\"] = \"america/moncton\";\n        Timezone[\"AmericaMonterrey\"] = \"america/monterrey\";\n        Timezone[\"AmericaMontevideo\"] = \"america/montevideo\";\n        Timezone[\"AmericaMontserrat\"] = \"america/montserrat\";\n        Timezone[\"AmericaNassau\"] = \"america/nassau\";\n        Timezone[\"AmericaNewYork\"] = \"america/new_york\";\n        Timezone[\"AmericaNome\"] = \"america/nome\";\n        Timezone[\"AmericaNoronha\"] = \"america/noronha\";\n        Timezone[\"AmericaNorthDakotaBeulah\"] = \"america/north_dakota/beulah\";\n        Timezone[\"AmericaNorthDakotaCenter\"] = \"america/north_dakota/center\";\n        Timezone[\"AmericaNorthDakotaNewSalem\"] = \"america/north_dakota/new_salem\";\n        Timezone[\"AmericaNuuk\"] = \"america/nuuk\";\n        Timezone[\"AmericaOjinaga\"] = \"america/ojinaga\";\n        Timezone[\"AmericaPanama\"] = \"america/panama\";\n        Timezone[\"AmericaParamaribo\"] = \"america/paramaribo\";\n        Timezone[\"AmericaPhoenix\"] = \"america/phoenix\";\n        Timezone[\"AmericaPortauprince\"] = \"america/port-au-prince\";\n        Timezone[\"AmericaPortOfSpain\"] = \"america/port_of_spain\";\n        Timezone[\"AmericaPortoVelho\"] = \"america/porto_velho\";\n        Timezone[\"AmericaPuertoRico\"] = \"america/puerto_rico\";\n        Timezone[\"AmericaPuntaArenas\"] = \"america/punta_arenas\";\n        Timezone[\"AmericaRankinInlet\"] = \"america/rankin_inlet\";\n        Timezone[\"AmericaRecife\"] = \"america/recife\";\n        Timezone[\"AmericaRegina\"] = \"america/regina\";\n        Timezone[\"AmericaResolute\"] = \"america/resolute\";\n        Timezone[\"AmericaRioBranco\"] = \"america/rio_branco\";\n        Timezone[\"AmericaSantarem\"] = \"america/santarem\";\n        Timezone[\"AmericaSantiago\"] = \"america/santiago\";\n        Timezone[\"AmericaSantoDomingo\"] = \"america/santo_domingo\";\n        Timezone[\"AmericaSaoPaulo\"] = \"america/sao_paulo\";\n        Timezone[\"AmericaScoresbysund\"] = \"america/scoresbysund\";\n        Timezone[\"AmericaSitka\"] = \"america/sitka\";\n        Timezone[\"AmericaStBarthelemy\"] = \"america/st_barthelemy\";\n        Timezone[\"AmericaStJohns\"] = \"america/st_johns\";\n        Timezone[\"AmericaStKitts\"] = \"america/st_kitts\";\n        Timezone[\"AmericaStLucia\"] = \"america/st_lucia\";\n        Timezone[\"AmericaStThomas\"] = \"america/st_thomas\";\n        Timezone[\"AmericaStVincent\"] = \"america/st_vincent\";\n        Timezone[\"AmericaSwiftCurrent\"] = \"america/swift_current\";\n        Timezone[\"AmericaTegucigalpa\"] = \"america/tegucigalpa\";\n        Timezone[\"AmericaThule\"] = \"america/thule\";\n        Timezone[\"AmericaTijuana\"] = \"america/tijuana\";\n        Timezone[\"AmericaToronto\"] = \"america/toronto\";\n        Timezone[\"AmericaTortola\"] = \"america/tortola\";\n        Timezone[\"AmericaVancouver\"] = \"america/vancouver\";\n        Timezone[\"AmericaWhitehorse\"] = \"america/whitehorse\";\n        Timezone[\"AmericaWinnipeg\"] = \"america/winnipeg\";\n        Timezone[\"AmericaYakutat\"] = \"america/yakutat\";\n        Timezone[\"AntarcticaCasey\"] = \"antarctica/casey\";\n        Timezone[\"AntarcticaDavis\"] = \"antarctica/davis\";\n        Timezone[\"AntarcticaDumontdurville\"] = \"antarctica/dumontdurville\";\n        Timezone[\"AntarcticaMacquarie\"] = \"antarctica/macquarie\";\n        Timezone[\"AntarcticaMawson\"] = \"antarctica/mawson\";\n        Timezone[\"AntarcticaMcmurdo\"] = \"antarctica/mcmurdo\";\n        Timezone[\"AntarcticaPalmer\"] = \"antarctica/palmer\";\n        Timezone[\"AntarcticaRothera\"] = \"antarctica/rothera\";\n        Timezone[\"AntarcticaSyowa\"] = \"antarctica/syowa\";\n        Timezone[\"AntarcticaTroll\"] = \"antarctica/troll\";\n        Timezone[\"AntarcticaVostok\"] = \"antarctica/vostok\";\n        Timezone[\"ArcticLongyearbyen\"] = \"arctic/longyearbyen\";\n        Timezone[\"AsiaAden\"] = \"asia/aden\";\n        Timezone[\"AsiaAlmaty\"] = \"asia/almaty\";\n        Timezone[\"AsiaAmman\"] = \"asia/amman\";\n        Timezone[\"AsiaAnadyr\"] = \"asia/anadyr\";\n        Timezone[\"AsiaAqtau\"] = \"asia/aqtau\";\n        Timezone[\"AsiaAqtobe\"] = \"asia/aqtobe\";\n        Timezone[\"AsiaAshgabat\"] = \"asia/ashgabat\";\n        Timezone[\"AsiaAtyrau\"] = \"asia/atyrau\";\n        Timezone[\"AsiaBaghdad\"] = \"asia/baghdad\";\n        Timezone[\"AsiaBahrain\"] = \"asia/bahrain\";\n        Timezone[\"AsiaBaku\"] = \"asia/baku\";\n        Timezone[\"AsiaBangkok\"] = \"asia/bangkok\";\n        Timezone[\"AsiaBarnaul\"] = \"asia/barnaul\";\n        Timezone[\"AsiaBeirut\"] = \"asia/beirut\";\n        Timezone[\"AsiaBishkek\"] = \"asia/bishkek\";\n        Timezone[\"AsiaBrunei\"] = \"asia/brunei\";\n        Timezone[\"AsiaChita\"] = \"asia/chita\";\n        Timezone[\"AsiaColombo\"] = \"asia/colombo\";\n        Timezone[\"AsiaDamascus\"] = \"asia/damascus\";\n        Timezone[\"AsiaDhaka\"] = \"asia/dhaka\";\n        Timezone[\"AsiaDili\"] = \"asia/dili\";\n        Timezone[\"AsiaDubai\"] = \"asia/dubai\";\n        Timezone[\"AsiaDushanbe\"] = \"asia/dushanbe\";\n        Timezone[\"AsiaFamagusta\"] = \"asia/famagusta\";\n        Timezone[\"AsiaGaza\"] = \"asia/gaza\";\n        Timezone[\"AsiaHebron\"] = \"asia/hebron\";\n        Timezone[\"AsiaHoChiMinh\"] = \"asia/ho_chi_minh\";\n        Timezone[\"AsiaHongKong\"] = \"asia/hong_kong\";\n        Timezone[\"AsiaHovd\"] = \"asia/hovd\";\n        Timezone[\"AsiaIrkutsk\"] = \"asia/irkutsk\";\n        Timezone[\"AsiaJakarta\"] = \"asia/jakarta\";\n        Timezone[\"AsiaJayapura\"] = \"asia/jayapura\";\n        Timezone[\"AsiaJerusalem\"] = \"asia/jerusalem\";\n        Timezone[\"AsiaKabul\"] = \"asia/kabul\";\n        Timezone[\"AsiaKamchatka\"] = \"asia/kamchatka\";\n        Timezone[\"AsiaKarachi\"] = \"asia/karachi\";\n        Timezone[\"AsiaKathmandu\"] = \"asia/kathmandu\";\n        Timezone[\"AsiaKhandyga\"] = \"asia/khandyga\";\n        Timezone[\"AsiaKolkata\"] = \"asia/kolkata\";\n        Timezone[\"AsiaKrasnoyarsk\"] = \"asia/krasnoyarsk\";\n        Timezone[\"AsiaKualaLumpur\"] = \"asia/kuala_lumpur\";\n        Timezone[\"AsiaKuching\"] = \"asia/kuching\";\n        Timezone[\"AsiaKuwait\"] = \"asia/kuwait\";\n        Timezone[\"AsiaMacau\"] = \"asia/macau\";\n        Timezone[\"AsiaMagadan\"] = \"asia/magadan\";\n        Timezone[\"AsiaMakassar\"] = \"asia/makassar\";\n        Timezone[\"AsiaManila\"] = \"asia/manila\";\n        Timezone[\"AsiaMuscat\"] = \"asia/muscat\";\n        Timezone[\"AsiaNicosia\"] = \"asia/nicosia\";\n        Timezone[\"AsiaNovokuznetsk\"] = \"asia/novokuznetsk\";\n        Timezone[\"AsiaNovosibirsk\"] = \"asia/novosibirsk\";\n        Timezone[\"AsiaOmsk\"] = \"asia/omsk\";\n        Timezone[\"AsiaOral\"] = \"asia/oral\";\n        Timezone[\"AsiaPhnomPenh\"] = \"asia/phnom_penh\";\n        Timezone[\"AsiaPontianak\"] = \"asia/pontianak\";\n        Timezone[\"AsiaPyongyang\"] = \"asia/pyongyang\";\n        Timezone[\"AsiaQatar\"] = \"asia/qatar\";\n        Timezone[\"AsiaQostanay\"] = \"asia/qostanay\";\n        Timezone[\"AsiaQyzylorda\"] = \"asia/qyzylorda\";\n        Timezone[\"AsiaRiyadh\"] = \"asia/riyadh\";\n        Timezone[\"AsiaSakhalin\"] = \"asia/sakhalin\";\n        Timezone[\"AsiaSamarkand\"] = \"asia/samarkand\";\n        Timezone[\"AsiaSeoul\"] = \"asia/seoul\";\n        Timezone[\"AsiaShanghai\"] = \"asia/shanghai\";\n        Timezone[\"AsiaSingapore\"] = \"asia/singapore\";\n        Timezone[\"AsiaSrednekolymsk\"] = \"asia/srednekolymsk\";\n        Timezone[\"AsiaTaipei\"] = \"asia/taipei\";\n        Timezone[\"AsiaTashkent\"] = \"asia/tashkent\";\n        Timezone[\"AsiaTbilisi\"] = \"asia/tbilisi\";\n        Timezone[\"AsiaTehran\"] = \"asia/tehran\";\n        Timezone[\"AsiaThimphu\"] = \"asia/thimphu\";\n        Timezone[\"AsiaTokyo\"] = \"asia/tokyo\";\n        Timezone[\"AsiaTomsk\"] = \"asia/tomsk\";\n        Timezone[\"AsiaUlaanbaatar\"] = \"asia/ulaanbaatar\";\n        Timezone[\"AsiaUrumqi\"] = \"asia/urumqi\";\n        Timezone[\"AsiaUstnera\"] = \"asia/ust-nera\";\n        Timezone[\"AsiaVientiane\"] = \"asia/vientiane\";\n        Timezone[\"AsiaVladivostok\"] = \"asia/vladivostok\";\n        Timezone[\"AsiaYakutsk\"] = \"asia/yakutsk\";\n        Timezone[\"AsiaYangon\"] = \"asia/yangon\";\n        Timezone[\"AsiaYekaterinburg\"] = \"asia/yekaterinburg\";\n        Timezone[\"AsiaYerevan\"] = \"asia/yerevan\";\n        Timezone[\"AtlanticAzores\"] = \"atlantic/azores\";\n        Timezone[\"AtlanticBermuda\"] = \"atlantic/bermuda\";\n        Timezone[\"AtlanticCanary\"] = \"atlantic/canary\";\n        Timezone[\"AtlanticCapeVerde\"] = \"atlantic/cape_verde\";\n        Timezone[\"AtlanticFaroe\"] = \"atlantic/faroe\";\n        Timezone[\"AtlanticMadeira\"] = \"atlantic/madeira\";\n        Timezone[\"AtlanticReykjavik\"] = \"atlantic/reykjavik\";\n        Timezone[\"AtlanticSouthGeorgia\"] = \"atlantic/south_georgia\";\n        Timezone[\"AtlanticStHelena\"] = \"atlantic/st_helena\";\n        Timezone[\"AtlanticStanley\"] = \"atlantic/stanley\";\n        Timezone[\"AustraliaAdelaide\"] = \"australia/adelaide\";\n        Timezone[\"AustraliaBrisbane\"] = \"australia/brisbane\";\n        Timezone[\"AustraliaBrokenHill\"] = \"australia/broken_hill\";\n        Timezone[\"AustraliaDarwin\"] = \"australia/darwin\";\n        Timezone[\"AustraliaEucla\"] = \"australia/eucla\";\n        Timezone[\"AustraliaHobart\"] = \"australia/hobart\";\n        Timezone[\"AustraliaLindeman\"] = \"australia/lindeman\";\n        Timezone[\"AustraliaLordHowe\"] = \"australia/lord_howe\";\n        Timezone[\"AustraliaMelbourne\"] = \"australia/melbourne\";\n        Timezone[\"AustraliaPerth\"] = \"australia/perth\";\n        Timezone[\"AustraliaSydney\"] = \"australia/sydney\";\n        Timezone[\"EuropeAmsterdam\"] = \"europe/amsterdam\";\n        Timezone[\"EuropeAndorra\"] = \"europe/andorra\";\n        Timezone[\"EuropeAstrakhan\"] = \"europe/astrakhan\";\n        Timezone[\"EuropeAthens\"] = \"europe/athens\";\n        Timezone[\"EuropeBelgrade\"] = \"europe/belgrade\";\n        Timezone[\"EuropeBerlin\"] = \"europe/berlin\";\n        Timezone[\"EuropeBratislava\"] = \"europe/bratislava\";\n        Timezone[\"EuropeBrussels\"] = \"europe/brussels\";\n        Timezone[\"EuropeBucharest\"] = \"europe/bucharest\";\n        Timezone[\"EuropeBudapest\"] = \"europe/budapest\";\n        Timezone[\"EuropeBusingen\"] = \"europe/busingen\";\n        Timezone[\"EuropeChisinau\"] = \"europe/chisinau\";\n        Timezone[\"EuropeCopenhagen\"] = \"europe/copenhagen\";\n        Timezone[\"EuropeDublin\"] = \"europe/dublin\";\n        Timezone[\"EuropeGibraltar\"] = \"europe/gibraltar\";\n        Timezone[\"EuropeGuernsey\"] = \"europe/guernsey\";\n        Timezone[\"EuropeHelsinki\"] = \"europe/helsinki\";\n        Timezone[\"EuropeIsleOfMan\"] = \"europe/isle_of_man\";\n        Timezone[\"EuropeIstanbul\"] = \"europe/istanbul\";\n        Timezone[\"EuropeJersey\"] = \"europe/jersey\";\n        Timezone[\"EuropeKaliningrad\"] = \"europe/kaliningrad\";\n        Timezone[\"EuropeKirov\"] = \"europe/kirov\";\n        Timezone[\"EuropeKyiv\"] = \"europe/kyiv\";\n        Timezone[\"EuropeLisbon\"] = \"europe/lisbon\";\n        Timezone[\"EuropeLjubljana\"] = \"europe/ljubljana\";\n        Timezone[\"EuropeLondon\"] = \"europe/london\";\n        Timezone[\"EuropeLuxembourg\"] = \"europe/luxembourg\";\n        Timezone[\"EuropeMadrid\"] = \"europe/madrid\";\n        Timezone[\"EuropeMalta\"] = \"europe/malta\";\n        Timezone[\"EuropeMariehamn\"] = \"europe/mariehamn\";\n        Timezone[\"EuropeMinsk\"] = \"europe/minsk\";\n        Timezone[\"EuropeMonaco\"] = \"europe/monaco\";\n        Timezone[\"EuropeMoscow\"] = \"europe/moscow\";\n        Timezone[\"EuropeOslo\"] = \"europe/oslo\";\n        Timezone[\"EuropeParis\"] = \"europe/paris\";\n        Timezone[\"EuropePodgorica\"] = \"europe/podgorica\";\n        Timezone[\"EuropePrague\"] = \"europe/prague\";\n        Timezone[\"EuropeRiga\"] = \"europe/riga\";\n        Timezone[\"EuropeRome\"] = \"europe/rome\";\n        Timezone[\"EuropeSamara\"] = \"europe/samara\";\n        Timezone[\"EuropeSanMarino\"] = \"europe/san_marino\";\n        Timezone[\"EuropeSarajevo\"] = \"europe/sarajevo\";\n        Timezone[\"EuropeSaratov\"] = \"europe/saratov\";\n        Timezone[\"EuropeSimferopol\"] = \"europe/simferopol\";\n        Timezone[\"EuropeSkopje\"] = \"europe/skopje\";\n        Timezone[\"EuropeSofia\"] = \"europe/sofia\";\n        Timezone[\"EuropeStockholm\"] = \"europe/stockholm\";\n        Timezone[\"EuropeTallinn\"] = \"europe/tallinn\";\n        Timezone[\"EuropeTirane\"] = \"europe/tirane\";\n        Timezone[\"EuropeUlyanovsk\"] = \"europe/ulyanovsk\";\n        Timezone[\"EuropeVaduz\"] = \"europe/vaduz\";\n        Timezone[\"EuropeVatican\"] = \"europe/vatican\";\n        Timezone[\"EuropeVienna\"] = \"europe/vienna\";\n        Timezone[\"EuropeVilnius\"] = \"europe/vilnius\";\n        Timezone[\"EuropeVolgograd\"] = \"europe/volgograd\";\n        Timezone[\"EuropeWarsaw\"] = \"europe/warsaw\";\n        Timezone[\"EuropeZagreb\"] = \"europe/zagreb\";\n        Timezone[\"EuropeZurich\"] = \"europe/zurich\";\n        Timezone[\"IndianAntananarivo\"] = \"indian/antananarivo\";\n        Timezone[\"IndianChagos\"] = \"indian/chagos\";\n        Timezone[\"IndianChristmas\"] = \"indian/christmas\";\n        Timezone[\"IndianCocos\"] = \"indian/cocos\";\n        Timezone[\"IndianComoro\"] = \"indian/comoro\";\n        Timezone[\"IndianKerguelen\"] = \"indian/kerguelen\";\n        Timezone[\"IndianMahe\"] = \"indian/mahe\";\n        Timezone[\"IndianMaldives\"] = \"indian/maldives\";\n        Timezone[\"IndianMauritius\"] = \"indian/mauritius\";\n        Timezone[\"IndianMayotte\"] = \"indian/mayotte\";\n        Timezone[\"IndianReunion\"] = \"indian/reunion\";\n        Timezone[\"PacificApia\"] = \"pacific/apia\";\n        Timezone[\"PacificAuckland\"] = \"pacific/auckland\";\n        Timezone[\"PacificBougainville\"] = \"pacific/bougainville\";\n        Timezone[\"PacificChatham\"] = \"pacific/chatham\";\n        Timezone[\"PacificChuuk\"] = \"pacific/chuuk\";\n        Timezone[\"PacificEaster\"] = \"pacific/easter\";\n        Timezone[\"PacificEfate\"] = \"pacific/efate\";\n        Timezone[\"PacificFakaofo\"] = \"pacific/fakaofo\";\n        Timezone[\"PacificFiji\"] = \"pacific/fiji\";\n        Timezone[\"PacificFunafuti\"] = \"pacific/funafuti\";\n        Timezone[\"PacificGalapagos\"] = \"pacific/galapagos\";\n        Timezone[\"PacificGambier\"] = \"pacific/gambier\";\n        Timezone[\"PacificGuadalcanal\"] = \"pacific/guadalcanal\";\n        Timezone[\"PacificGuam\"] = \"pacific/guam\";\n        Timezone[\"PacificHonolulu\"] = \"pacific/honolulu\";\n        Timezone[\"PacificKanton\"] = \"pacific/kanton\";\n        Timezone[\"PacificKiritimati\"] = \"pacific/kiritimati\";\n        Timezone[\"PacificKosrae\"] = \"pacific/kosrae\";\n        Timezone[\"PacificKwajalein\"] = \"pacific/kwajalein\";\n        Timezone[\"PacificMajuro\"] = \"pacific/majuro\";\n        Timezone[\"PacificMarquesas\"] = \"pacific/marquesas\";\n        Timezone[\"PacificMidway\"] = \"pacific/midway\";\n        Timezone[\"PacificNauru\"] = \"pacific/nauru\";\n        Timezone[\"PacificNiue\"] = \"pacific/niue\";\n        Timezone[\"PacificNorfolk\"] = \"pacific/norfolk\";\n        Timezone[\"PacificNoumea\"] = \"pacific/noumea\";\n        Timezone[\"PacificPagoPago\"] = \"pacific/pago_pago\";\n        Timezone[\"PacificPalau\"] = \"pacific/palau\";\n        Timezone[\"PacificPitcairn\"] = \"pacific/pitcairn\";\n        Timezone[\"PacificPohnpei\"] = \"pacific/pohnpei\";\n        Timezone[\"PacificPortMoresby\"] = \"pacific/port_moresby\";\n        Timezone[\"PacificRarotonga\"] = \"pacific/rarotonga\";\n        Timezone[\"PacificSaipan\"] = \"pacific/saipan\";\n        Timezone[\"PacificTahiti\"] = \"pacific/tahiti\";\n        Timezone[\"PacificTarawa\"] = \"pacific/tarawa\";\n        Timezone[\"PacificTongatapu\"] = \"pacific/tongatapu\";\n        Timezone[\"PacificWake\"] = \"pacific/wake\";\n        Timezone[\"PacificWallis\"] = \"pacific/wallis\";\n        Timezone[\"Utc\"] = \"utc\";\n    })(exports.Timezone || (exports.Timezone = {}));\n\n    exports.BrowserPermission = void 0;\n    (function (BrowserPermission) {\n        BrowserPermission[\"Geolocation\"] = \"geolocation\";\n        BrowserPermission[\"Camera\"] = \"camera\";\n        BrowserPermission[\"Microphone\"] = \"microphone\";\n        BrowserPermission[\"Notifications\"] = \"notifications\";\n        BrowserPermission[\"Midi\"] = \"midi\";\n        BrowserPermission[\"Push\"] = \"push\";\n        BrowserPermission[\"Clipboardread\"] = \"clipboard-read\";\n        BrowserPermission[\"Clipboardwrite\"] = \"clipboard-write\";\n        BrowserPermission[\"Paymenthandler\"] = \"payment-handler\";\n        BrowserPermission[\"Usb\"] = \"usb\";\n        BrowserPermission[\"Bluetooth\"] = \"bluetooth\";\n        BrowserPermission[\"Accelerometer\"] = \"accelerometer\";\n        BrowserPermission[\"Gyroscope\"] = \"gyroscope\";\n        BrowserPermission[\"Magnetometer\"] = \"magnetometer\";\n        BrowserPermission[\"Ambientlightsensor\"] = \"ambient-light-sensor\";\n        BrowserPermission[\"Backgroundsync\"] = \"background-sync\";\n        BrowserPermission[\"Persistentstorage\"] = \"persistent-storage\";\n        BrowserPermission[\"Screenwakelock\"] = \"screen-wake-lock\";\n        BrowserPermission[\"Webshare\"] = \"web-share\";\n        BrowserPermission[\"Xrspatialtracking\"] = \"xr-spatial-tracking\";\n    })(exports.BrowserPermission || (exports.BrowserPermission = {}));\n\n    exports.ImageFormat = void 0;\n    (function (ImageFormat) {\n        ImageFormat[\"Jpg\"] = \"jpg\";\n        ImageFormat[\"Jpeg\"] = \"jpeg\";\n        ImageFormat[\"Png\"] = \"png\";\n        ImageFormat[\"Webp\"] = \"webp\";\n        ImageFormat[\"Heic\"] = \"heic\";\n        ImageFormat[\"Avif\"] = \"avif\";\n        ImageFormat[\"Gif\"] = \"gif\";\n    })(exports.ImageFormat || (exports.ImageFormat = {}));\n\n    exports.ExecutionMethod = void 0;\n    (function (ExecutionMethod) {\n        ExecutionMethod[\"GET\"] = \"GET\";\n        ExecutionMethod[\"POST\"] = \"POST\";\n        ExecutionMethod[\"PUT\"] = \"PUT\";\n        ExecutionMethod[\"PATCH\"] = \"PATCH\";\n        ExecutionMethod[\"DELETE\"] = \"DELETE\";\n        ExecutionMethod[\"OPTIONS\"] = \"OPTIONS\";\n        ExecutionMethod[\"HEAD\"] = \"HEAD\";\n    })(exports.ExecutionMethod || (exports.ExecutionMethod = {}));\n\n    exports.ImageGravity = void 0;\n    (function (ImageGravity) {\n        ImageGravity[\"Center\"] = \"center\";\n        ImageGravity[\"Topleft\"] = \"top-left\";\n        ImageGravity[\"Top\"] = \"top\";\n        ImageGravity[\"Topright\"] = \"top-right\";\n        ImageGravity[\"Left\"] = \"left\";\n        ImageGravity[\"Right\"] = \"right\";\n        ImageGravity[\"Bottomleft\"] = \"bottom-left\";\n        ImageGravity[\"Bottom\"] = \"bottom\";\n        ImageGravity[\"Bottomright\"] = \"bottom-right\";\n    })(exports.ImageGravity || (exports.ImageGravity = {}));\n\n    exports.ExecutionTrigger = void 0;\n    (function (ExecutionTrigger) {\n        ExecutionTrigger[\"Http\"] = \"http\";\n        ExecutionTrigger[\"Schedule\"] = \"schedule\";\n        ExecutionTrigger[\"Event\"] = \"event\";\n    })(exports.ExecutionTrigger || (exports.ExecutionTrigger = {}));\n\n    exports.ExecutionStatus = void 0;\n    (function (ExecutionStatus) {\n        ExecutionStatus[\"Waiting\"] = \"waiting\";\n        ExecutionStatus[\"Processing\"] = \"processing\";\n        ExecutionStatus[\"Completed\"] = \"completed\";\n        ExecutionStatus[\"Failed\"] = \"failed\";\n        ExecutionStatus[\"Scheduled\"] = \"scheduled\";\n    })(exports.ExecutionStatus || (exports.ExecutionStatus = {}));\n\n    exports.Account = Account;\n    exports.AppwriteException = AppwriteException;\n    exports.Avatars = Avatars;\n    exports.Channel = Channel;\n    exports.Client = Client;\n    exports.Databases = Databases;\n    exports.Functions = Functions;\n    exports.Graphql = Graphql;\n    exports.ID = ID;\n    exports.Locale = Locale;\n    exports.Messaging = Messaging;\n    exports.Operator = Operator;\n    exports.Permission = Permission;\n    exports.Presences = Presences;\n    exports.Query = Query;\n    exports.Realtime = Realtime;\n    exports.Role = Role;\n    exports.Storage = Storage;\n    exports.TablesDB = TablesDB;\n    exports.Teams = Teams;\n\n})(this.Appwrite = this.Appwrite || {});\n"]}