@canton-network/core-token-standard 0.12.1 → 0.14.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/index.browser.js +8375 -0
- package/dist/index.browser.js.map +1 -0
- package/dist/index.cjs +6 -0
- package/dist/index.cjs.map +1 -1
- package/dist/index.d.ts +4 -1
- package/dist/index.js +4 -1
- package/dist/index.js.map +1 -1
- package/dist/interface-ids.const.d.ts +3 -0
- package/dist/interface-ids.const.d.ts.map +1 -1
- package/package.json +3 -2
package/dist/index.cjs.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.cjs","sources":["../src/token-standard-client.ts","../src/interface-ids.const.ts","../../../../../../.yarn/berry/cache/lodash.isequal-npm-4.5.0-f8b0f64d63-10c0.zip/node_modules/lodash.isequal/index.js","../../../../../../.yarn/berry/cache/@mojotech-json-type-validation-npm-3.1.0-b983ac6694-10c0.zip/node_modules/@mojotech/json-type-validation/dist/index.es5.js","../../../../../../.yarn/berry/cache/@daml-types-npm-3.3.0-snapshot.20250528.13806.0.v3cd439fb-8d2fd59416-10c0.zip/node_modules/@daml/types/index.js","../../../../../../.yarn/berry/cache/webidl-conversions-npm-3.0.1-60310f6a2b-10c0.zip/node_modules/webidl-conversions/lib/index.js","../../../../../../.yarn/berry/cache/whatwg-url-npm-5.0.0-374fb45e60-10c0.zip/node_modules/whatwg-url/lib/utils.js","../../../../../../.yarn/berry/cache/tr46-npm-0.0.3-de53018915-10c0.zip/node_modules/tr46/index.js","../../../../../../.yarn/berry/cache/whatwg-url-npm-5.0.0-374fb45e60-10c0.zip/node_modules/whatwg-url/lib/url-state-machine.js","../../../../../../.yarn/berry/cache/whatwg-url-npm-5.0.0-374fb45e60-10c0.zip/node_modules/whatwg-url/lib/URL-impl.js","../../../../../../.yarn/berry/cache/whatwg-url-npm-5.0.0-374fb45e60-10c0.zip/node_modules/whatwg-url/lib/URL.js","../../../../../../.yarn/berry/cache/whatwg-url-npm-5.0.0-374fb45e60-10c0.zip/node_modules/whatwg-url/lib/public-api.js","../../../.yarn/__virtual__/node-fetch-virtual-addf273e03/4/.yarn/berry/cache/node-fetch-npm-2.7.0-587d57004e-10c0.zip/node_modules/node-fetch/lib/index.mjs","../../../../../../.yarn/berry/cache/cross-fetch-npm-3.2.0-267029ff2f-10c0.zip/node_modules/cross-fetch/dist/node-ponyfill.js","../../../.yarn/__virtual__/ws-virtual-79e908d9df/4/.yarn/berry/cache/ws-npm-7.5.10-878ccb886b-10c0.zip/node_modules/ws/lib/constants.js","../../../.yarn/__virtual__/ws-virtual-79e908d9df/4/.yarn/berry/cache/ws-npm-7.5.10-878ccb886b-10c0.zip/node_modules/ws/lib/buffer-util.js","../../../.yarn/__virtual__/ws-virtual-79e908d9df/4/.yarn/berry/cache/ws-npm-7.5.10-878ccb886b-10c0.zip/node_modules/ws/lib/limiter.js","../../../.yarn/__virtual__/ws-virtual-79e908d9df/4/.yarn/berry/cache/ws-npm-7.5.10-878ccb886b-10c0.zip/node_modules/ws/lib/permessage-deflate.js","../../../.yarn/__virtual__/ws-virtual-79e908d9df/4/.yarn/berry/cache/ws-npm-7.5.10-878ccb886b-10c0.zip/node_modules/ws/lib/validation.js","../../../.yarn/__virtual__/ws-virtual-79e908d9df/4/.yarn/berry/cache/ws-npm-7.5.10-878ccb886b-10c0.zip/node_modules/ws/lib/receiver.js","../../../.yarn/__virtual__/ws-virtual-79e908d9df/4/.yarn/berry/cache/ws-npm-7.5.10-878ccb886b-10c0.zip/node_modules/ws/lib/sender.js","../../../.yarn/__virtual__/ws-virtual-79e908d9df/4/.yarn/berry/cache/ws-npm-7.5.10-878ccb886b-10c0.zip/node_modules/ws/lib/event-target.js","../../../.yarn/__virtual__/ws-virtual-79e908d9df/4/.yarn/berry/cache/ws-npm-7.5.10-878ccb886b-10c0.zip/node_modules/ws/lib/extension.js","../../../.yarn/__virtual__/ws-virtual-79e908d9df/4/.yarn/berry/cache/ws-npm-7.5.10-878ccb886b-10c0.zip/node_modules/ws/lib/websocket.js","../../../.yarn/__virtual__/ws-virtual-79e908d9df/4/.yarn/berry/cache/ws-npm-7.5.10-878ccb886b-10c0.zip/node_modules/ws/lib/stream.js","../../../.yarn/__virtual__/ws-virtual-79e908d9df/4/.yarn/berry/cache/ws-npm-7.5.10-878ccb886b-10c0.zip/node_modules/ws/lib/websocket-server.js","../../../.yarn/__virtual__/ws-virtual-79e908d9df/4/.yarn/berry/cache/ws-npm-7.5.10-878ccb886b-10c0.zip/node_modules/ws/index.js","../../../.yarn/__virtual__/isomorphic-ws-virtual-27bbf212f5/4/.yarn/berry/cache/isomorphic-ws-npm-4.0.1-aa39192848-10c0.zip/node_modules/isomorphic-ws/node.js","../../../../../../.yarn/berry/cache/@daml-ledger-npm-3.3.0-snapshot.20250528.13806.0.v3cd439fb-bdb3d061db-10c0.zip/node_modules/@daml/ledger/index.js","../../../../../../.yarn/berry/cache/@daml.js-ghc-stdlib-DA-Internal-Template-1.0.0-file-c6b3e1def0-10c0.zip/node_modules/@daml.js/ghc-stdlib-DA-Internal-Template-1.0.0/lib/DA/Internal/Template/module.js","../../../../../../.yarn/berry/cache/@daml.js-ghc-stdlib-DA-Internal-Template-1.0.0-file-c6b3e1def0-10c0.zip/node_modules/@daml.js/ghc-stdlib-DA-Internal-Template-1.0.0/lib/DA/Internal/Template/index.js","../../../../../../.yarn/berry/cache/@daml.js-ghc-stdlib-DA-Internal-Template-1.0.0-file-c6b3e1def0-10c0.zip/node_modules/@daml.js/ghc-stdlib-DA-Internal-Template-1.0.0/lib/DA/Internal/index.js","../../../../../../.yarn/berry/cache/@daml.js-ghc-stdlib-DA-Internal-Template-1.0.0-file-c6b3e1def0-10c0.zip/node_modules/@daml.js/ghc-stdlib-DA-Internal-Template-1.0.0/lib/DA/index.js","../../../../../../.yarn/berry/cache/@daml.js-ghc-stdlib-DA-Internal-Template-1.0.0-file-c6b3e1def0-10c0.zip/node_modules/@daml.js/ghc-stdlib-DA-Internal-Template-1.0.0/lib/index.js","../../../../../../.yarn/berry/cache/@daml.js-daml-stdlib-DA-Time-Types-1.0.0-file-321c951204-10c0.zip/node_modules/@daml.js/daml-stdlib-DA-Time-Types-1.0.0/lib/DA/Time/Types/module.js","../../../../../../.yarn/berry/cache/@daml.js-daml-stdlib-DA-Time-Types-1.0.0-file-321c951204-10c0.zip/node_modules/@daml.js/daml-stdlib-DA-Time-Types-1.0.0/lib/DA/Time/Types/index.js","../../../../../../.yarn/berry/cache/@daml.js-daml-stdlib-DA-Time-Types-1.0.0-file-321c951204-10c0.zip/node_modules/@daml.js/daml-stdlib-DA-Time-Types-1.0.0/lib/DA/Time/index.js","../../../../../../.yarn/berry/cache/@daml.js-daml-stdlib-DA-Time-Types-1.0.0-file-321c951204-10c0.zip/node_modules/@daml.js/daml-stdlib-DA-Time-Types-1.0.0/lib/DA/index.js","../../../../../../.yarn/berry/cache/@daml.js-daml-stdlib-DA-Time-Types-1.0.0-file-321c951204-10c0.zip/node_modules/@daml.js/daml-stdlib-DA-Time-Types-1.0.0/lib/index.js","../../../damljs/token-standard-models/token-standard-models-1.0.0/lib/Splice/Api/Token/MetadataV1/module.js","../../../damljs/token-standard-models/token-standard-models-1.0.0/lib/Splice/Api/Token/HoldingV1/module.js","../../../damljs/token-standard-models/token-standard-models-1.0.0/lib/Splice/Api/Token/AllocationV1/module.js","../../../damljs/token-standard-models/token-standard-models-1.0.0/lib/Splice/Api/Token/AllocationInstructionV1/module.js","../../../damljs/token-standard-models/token-standard-models-1.0.0/lib/Splice/Api/Token/AllocationInstructionV1/index.js","../../../damljs/token-standard-models/token-standard-models-1.0.0/lib/Splice/Api/Token/AllocationRequestV1/module.js","../../../damljs/token-standard-models/token-standard-models-1.0.0/lib/Splice/Api/Token/AllocationRequestV1/index.js","../../../damljs/token-standard-models/token-standard-models-1.0.0/lib/Splice/Api/Token/AllocationV1/index.js","../../../damljs/token-standard-models/token-standard-models-1.0.0/lib/Splice/Api/Token/HoldingV1/index.js","../../../damljs/token-standard-models/token-standard-models-1.0.0/lib/Splice/Api/Token/MetadataV1/index.js","../../../damljs/token-standard-models/token-standard-models-1.0.0/lib/Splice/Api/Token/TransferInstructionV1/module.js","../../../damljs/token-standard-models/token-standard-models-1.0.0/lib/Splice/Api/Token/TransferInstructionV1/index.js","../../../damljs/token-standard-models/token-standard-models-1.0.0/lib/Splice/Api/Token/index.js","../../../damljs/token-standard-models/token-standard-models-1.0.0/lib/Splice/Api/index.js","../../../damljs/token-standard-models/token-standard-models-1.0.0/lib/Splice/index.js","../../../damljs/token-standard-models/token-standard-models-1.0.0/lib/index.js","../src/types.ts"],"sourcesContent":["// Copyright (c) 2025 Digital Asset (Switzerland) GmbH and/or its affiliates. All rights reserved.\n// SPDX-License-Identifier: Apache-2.0\n\nimport createClient, { Client } from 'openapi-fetch'\nimport { AccessTokenProvider, Logger } from '@canton-network/core-types'\n\nimport { paths as allocationPaths } from './generated-clients/splice-api-token-allocation-v1/allocation-v1.js'\nimport { paths as allocationInstructionPaths } from './generated-clients/splice-api-token-allocation-instruction-v1/allocation-instruction-v1.js'\nimport { paths as metadataPaths } from './generated-clients/splice-api-token-metadata-v1/token-metadata-v1.js'\nimport { paths as transferInstructionPaths } from './generated-clients/splice-api-token-transfer-instruction-v1/transfer-instruction-v1.js'\n\nexport { components as allocationRegistryTypes } from './generated-clients/splice-api-token-allocation-v1/allocation-v1.js'\nexport { components as metadataRegistryTypes } from './generated-clients/splice-api-token-metadata-v1/token-metadata-v1.js'\nexport { components as transferInstructionRegistryTypes } from './generated-clients/splice-api-token-transfer-instruction-v1/transfer-instruction-v1.js'\nexport { components as allocationInstructionRegistryTypes } from './generated-clients/splice-api-token-allocation-instruction-v1/allocation-instruction-v1.js'\n\ntype paths = allocationPaths &\n metadataPaths &\n transferInstructionPaths &\n allocationInstructionPaths\n\n// A conditional type that filters the set of OpenAPI path names to those that actually have a defined POST operation.\n// Any path without a POST is excluded via the `never` branch of the conditional\ntype PostEndpoint = {\n [Pathname in keyof paths]: paths[Pathname] extends {\n post: unknown\n }\n ? Pathname\n : never\n}[keyof paths]\n\n// Given a pathname (string) that has a POST, this helper type extracts the request body type from the OpenAPI definition.\nexport type PostRequest<Path extends PostEndpoint> = paths[Path] extends {\n post: { requestBody: { content: { 'application/json': infer Req } } }\n}\n ? Req\n : never\n\n// Given a pathname (string) that has a POST, this helper type extracts the 200 response type from the OpenAPI definition.\nexport type PostResponse<Path extends PostEndpoint> = paths[Path] extends {\n post: { responses: { 200: { content: { 'application/json': infer Res } } } }\n}\n ? Res\n : never\n\n// Similar as above, for GETs\ntype GetEndpoint = {\n [Pathname in keyof paths]: paths[Pathname] extends {\n get: unknown\n }\n ? Pathname\n : never\n}[keyof paths]\n\n// Similar as above, for GETs\nexport type GetResponse<Path extends GetEndpoint> = paths[Path] extends {\n get: { responses: { 200: { content: { 'application/json': infer Res } } } }\n}\n ? Res\n : never\n\nexport class TokenStandardClient {\n private readonly client: Client<paths>\n private readonly logger: Logger\n private accessTokenProvider: AccessTokenProvider | undefined\n\n constructor(\n baseUrl: string,\n logger: Logger,\n isAdmin: boolean,\n accessToken?: string,\n accessTokenProvider?: AccessTokenProvider\n ) {\n this.accessTokenProvider = accessTokenProvider\n this.logger = logger\n this.logger.debug({ baseUrl }, 'TokenStandardClient initialized')\n this.client = createClient<paths>({\n baseUrl,\n fetch: async (url: RequestInfo, options: RequestInit = {}) => {\n if (this.accessTokenProvider) {\n accessToken = isAdmin\n ? await this.accessTokenProvider.getAdminAccessToken()\n : await this.accessTokenProvider.getUserAccessToken()\n }\n return fetch(url, {\n ...options,\n headers: {\n ...(options.headers || {}),\n ...(accessToken\n ? { Authorization: `Bearer ${accessToken}` }\n : {}),\n 'Content-Type': 'application/json',\n },\n })\n },\n })\n }\n\n public async post<Path extends PostEndpoint>(\n path: Path,\n body: PostRequest<Path>,\n params?: {\n path?: Record<string, string>\n query?: Record<string, string | number>\n }\n ): Promise<PostResponse<Path>> {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any -- (cant align this with openapi-fetch generics :shrug:)\n const options = { body, params } as any\n this.logger.debug({ requestBody: body }, `POST ${path}`)\n const resp = await this.client.POST(path, options)\n this.logger.debug({ requestBody: body, response: resp }, `POST ${path}`)\n return this.valueOrError(resp)\n }\n\n public async get<Path extends GetEndpoint>(\n path: Path,\n params?: {\n path?: Record<string, string>\n query?: Record<string, string | number>\n }\n ): Promise<GetResponse<Path>> {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any -- (cant align this with openapi-fetch generics :shrug:)\n const options = { params } as any\n\n const resp = await this.client.GET(path, options)\n this.logger.debug(\n { path: path, params: params, response: resp },\n `GET ${path}`\n )\n return this.valueOrError(resp)\n }\n\n private async valueOrError<T>(response: {\n data?: T\n error?: unknown\n }): Promise<T> {\n if (response.data === undefined) {\n return Promise.reject(response.error)\n } else {\n return Promise.resolve(response.data)\n }\n }\n}\n","// Copyright (c) 2025 Digital Asset (Switzerland) GmbH and/or its affiliates. All rights reserved.\n// SPDX-License-Identifier: Apache-2.0\n\nexport const ALLOCATION_FACTORY_INTERFACE_ID =\n '#splice-api-token-allocation-instruction-v1:Splice.Api.Token.AllocationInstructionV1:AllocationFactory'\nexport const ALLOCATION_INSTRUCTION_INTERFACE_ID =\n '#splice-api-token-allocation-instruction-v1:Splice.Api.Token.AllocationInstructionV1:AllocationInstruction'\nexport const ALLOCATION_REQUEST_INTERFACE_ID =\n '#splice-api-token-allocation-request-v1:Splice.Api.Token.AllocationRequestV1:AllocationRequest'\nexport const ALLOCATION_INTERFACE_ID =\n '#splice-api-token-allocation-v1:Splice.Api.Token.AllocationV1:Allocation'\nexport const HOLDING_INTERFACE_ID =\n '#splice-api-token-holding-v1:Splice.Api.Token.HoldingV1:Holding'\nexport const METADATA_INTERFACE_ID =\n '#splice-api-token-metadata-v1:Splice.Api.Token.MetadataV1:AnyContract'\nexport const TRANSFER_FACTORY_INTERFACE_ID =\n '#splice-api-token-transfer-instruction-v1:Splice.Api.Token.TransferInstructionV1:TransferFactory'\nexport const TRANSFER_INSTRUCTION_INTERFACE_ID =\n '#splice-api-token-transfer-instruction-v1:Splice.Api.Token.TransferInstructionV1:TransferInstruction'\nexport const FEATURED_APP_DELEGATE_PROXY_INTERFACE_ID =\n '#splice-util-featured-app-proxies:Splice.Util.FeaturedApp.DelegateProxy:DelegateProxy'\n","/**\n * Lodash (Custom Build) <https://lodash.com/>\n * Build: `lodash modularize exports=\"npm\" -o ./`\n * Copyright JS Foundation and other contributors <https://js.foundation/>\n * Released under MIT license <https://lodash.com/license>\n * Based on Underscore.js 1.8.3 <http://underscorejs.org/LICENSE>\n * Copyright Jeremy Ashkenas, DocumentCloud and Investigative Reporters & Editors\n */\n\n/** Used as the size to enable large array optimizations. */\nvar LARGE_ARRAY_SIZE = 200;\n\n/** Used to stand-in for `undefined` hash values. */\nvar HASH_UNDEFINED = '__lodash_hash_undefined__';\n\n/** Used to compose bitmasks for value comparisons. */\nvar COMPARE_PARTIAL_FLAG = 1,\n COMPARE_UNORDERED_FLAG = 2;\n\n/** Used as references for various `Number` constants. */\nvar MAX_SAFE_INTEGER = 9007199254740991;\n\n/** `Object#toString` result references. */\nvar argsTag = '[object Arguments]',\n arrayTag = '[object Array]',\n asyncTag = '[object AsyncFunction]',\n boolTag = '[object Boolean]',\n dateTag = '[object Date]',\n errorTag = '[object Error]',\n funcTag = '[object Function]',\n genTag = '[object GeneratorFunction]',\n mapTag = '[object Map]',\n numberTag = '[object Number]',\n nullTag = '[object Null]',\n objectTag = '[object Object]',\n promiseTag = '[object Promise]',\n proxyTag = '[object Proxy]',\n regexpTag = '[object RegExp]',\n setTag = '[object Set]',\n stringTag = '[object String]',\n symbolTag = '[object Symbol]',\n undefinedTag = '[object Undefined]',\n weakMapTag = '[object WeakMap]';\n\nvar arrayBufferTag = '[object ArrayBuffer]',\n dataViewTag = '[object DataView]',\n float32Tag = '[object Float32Array]',\n float64Tag = '[object Float64Array]',\n int8Tag = '[object Int8Array]',\n int16Tag = '[object Int16Array]',\n int32Tag = '[object Int32Array]',\n uint8Tag = '[object Uint8Array]',\n uint8ClampedTag = '[object Uint8ClampedArray]',\n uint16Tag = '[object Uint16Array]',\n uint32Tag = '[object Uint32Array]';\n\n/**\n * Used to match `RegExp`\n * [syntax characters](http://ecma-international.org/ecma-262/7.0/#sec-patterns).\n */\nvar reRegExpChar = /[\\\\^$.*+?()[\\]{}|]/g;\n\n/** Used to detect host constructors (Safari). */\nvar reIsHostCtor = /^\\[object .+?Constructor\\]$/;\n\n/** Used to detect unsigned integer values. */\nvar reIsUint = /^(?:0|[1-9]\\d*)$/;\n\n/** Used to identify `toStringTag` values of typed arrays. */\nvar typedArrayTags = {};\ntypedArrayTags[float32Tag] = typedArrayTags[float64Tag] =\ntypedArrayTags[int8Tag] = typedArrayTags[int16Tag] =\ntypedArrayTags[int32Tag] = typedArrayTags[uint8Tag] =\ntypedArrayTags[uint8ClampedTag] = typedArrayTags[uint16Tag] =\ntypedArrayTags[uint32Tag] = true;\ntypedArrayTags[argsTag] = typedArrayTags[arrayTag] =\ntypedArrayTags[arrayBufferTag] = typedArrayTags[boolTag] =\ntypedArrayTags[dataViewTag] = typedArrayTags[dateTag] =\ntypedArrayTags[errorTag] = typedArrayTags[funcTag] =\ntypedArrayTags[mapTag] = typedArrayTags[numberTag] =\ntypedArrayTags[objectTag] = typedArrayTags[regexpTag] =\ntypedArrayTags[setTag] = typedArrayTags[stringTag] =\ntypedArrayTags[weakMapTag] = false;\n\n/** Detect free variable `global` from Node.js. */\nvar freeGlobal = typeof global == 'object' && global && global.Object === Object && global;\n\n/** Detect free variable `self`. */\nvar freeSelf = typeof self == 'object' && self && self.Object === Object && self;\n\n/** Used as a reference to the global object. */\nvar root = freeGlobal || freeSelf || Function('return this')();\n\n/** Detect free variable `exports`. */\nvar freeExports = typeof exports == 'object' && exports && !exports.nodeType && exports;\n\n/** Detect free variable `module`. */\nvar freeModule = freeExports && typeof module == 'object' && module && !module.nodeType && module;\n\n/** Detect the popular CommonJS extension `module.exports`. */\nvar moduleExports = freeModule && freeModule.exports === freeExports;\n\n/** Detect free variable `process` from Node.js. */\nvar freeProcess = moduleExports && freeGlobal.process;\n\n/** Used to access faster Node.js helpers. */\nvar nodeUtil = (function() {\n try {\n return freeProcess && freeProcess.binding && freeProcess.binding('util');\n } catch (e) {}\n}());\n\n/* Node.js helper references. */\nvar nodeIsTypedArray = nodeUtil && nodeUtil.isTypedArray;\n\n/**\n * A specialized version of `_.filter` for arrays without support for\n * iteratee shorthands.\n *\n * @private\n * @param {Array} [array] The array to iterate over.\n * @param {Function} predicate The function invoked per iteration.\n * @returns {Array} Returns the new filtered array.\n */\nfunction arrayFilter(array, predicate) {\n var index = -1,\n length = array == null ? 0 : array.length,\n resIndex = 0,\n result = [];\n\n while (++index < length) {\n var value = array[index];\n if (predicate(value, index, array)) {\n result[resIndex++] = value;\n }\n }\n return result;\n}\n\n/**\n * Appends the elements of `values` to `array`.\n *\n * @private\n * @param {Array} array The array to modify.\n * @param {Array} values The values to append.\n * @returns {Array} Returns `array`.\n */\nfunction arrayPush(array, values) {\n var index = -1,\n length = values.length,\n offset = array.length;\n\n while (++index < length) {\n array[offset + index] = values[index];\n }\n return array;\n}\n\n/**\n * A specialized version of `_.some` for arrays without support for iteratee\n * shorthands.\n *\n * @private\n * @param {Array} [array] The array to iterate over.\n * @param {Function} predicate The function invoked per iteration.\n * @returns {boolean} Returns `true` if any element passes the predicate check,\n * else `false`.\n */\nfunction arraySome(array, predicate) {\n var index = -1,\n length = array == null ? 0 : array.length;\n\n while (++index < length) {\n if (predicate(array[index], index, array)) {\n return true;\n }\n }\n return false;\n}\n\n/**\n * The base implementation of `_.times` without support for iteratee shorthands\n * or max array length checks.\n *\n * @private\n * @param {number} n The number of times to invoke `iteratee`.\n * @param {Function} iteratee The function invoked per iteration.\n * @returns {Array} Returns the array of results.\n */\nfunction baseTimes(n, iteratee) {\n var index = -1,\n result = Array(n);\n\n while (++index < n) {\n result[index] = iteratee(index);\n }\n return result;\n}\n\n/**\n * The base implementation of `_.unary` without support for storing metadata.\n *\n * @private\n * @param {Function} func The function to cap arguments for.\n * @returns {Function} Returns the new capped function.\n */\nfunction baseUnary(func) {\n return function(value) {\n return func(value);\n };\n}\n\n/**\n * Checks if a `cache` value for `key` exists.\n *\n * @private\n * @param {Object} cache The cache to query.\n * @param {string} key The key of the entry to check.\n * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.\n */\nfunction cacheHas(cache, key) {\n return cache.has(key);\n}\n\n/**\n * Gets the value at `key` of `object`.\n *\n * @private\n * @param {Object} [object] The object to query.\n * @param {string} key The key of the property to get.\n * @returns {*} Returns the property value.\n */\nfunction getValue(object, key) {\n return object == null ? undefined : object[key];\n}\n\n/**\n * Converts `map` to its key-value pairs.\n *\n * @private\n * @param {Object} map The map to convert.\n * @returns {Array} Returns the key-value pairs.\n */\nfunction mapToArray(map) {\n var index = -1,\n result = Array(map.size);\n\n map.forEach(function(value, key) {\n result[++index] = [key, value];\n });\n return result;\n}\n\n/**\n * Creates a unary function that invokes `func` with its argument transformed.\n *\n * @private\n * @param {Function} func The function to wrap.\n * @param {Function} transform The argument transform.\n * @returns {Function} Returns the new function.\n */\nfunction overArg(func, transform) {\n return function(arg) {\n return func(transform(arg));\n };\n}\n\n/**\n * Converts `set` to an array of its values.\n *\n * @private\n * @param {Object} set The set to convert.\n * @returns {Array} Returns the values.\n */\nfunction setToArray(set) {\n var index = -1,\n result = Array(set.size);\n\n set.forEach(function(value) {\n result[++index] = value;\n });\n return result;\n}\n\n/** Used for built-in method references. */\nvar arrayProto = Array.prototype,\n funcProto = Function.prototype,\n objectProto = Object.prototype;\n\n/** Used to detect overreaching core-js shims. */\nvar coreJsData = root['__core-js_shared__'];\n\n/** Used to resolve the decompiled source of functions. */\nvar funcToString = funcProto.toString;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/** Used to detect methods masquerading as native. */\nvar maskSrcKey = (function() {\n var uid = /[^.]+$/.exec(coreJsData && coreJsData.keys && coreJsData.keys.IE_PROTO || '');\n return uid ? ('Symbol(src)_1.' + uid) : '';\n}());\n\n/**\n * Used to resolve the\n * [`toStringTag`](http://ecma-international.org/ecma-262/7.0/#sec-object.prototype.tostring)\n * of values.\n */\nvar nativeObjectToString = objectProto.toString;\n\n/** Used to detect if a method is native. */\nvar reIsNative = RegExp('^' +\n funcToString.call(hasOwnProperty).replace(reRegExpChar, '\\\\$&')\n .replace(/hasOwnProperty|(function).*?(?=\\\\\\()| for .+?(?=\\\\\\])/g, '$1.*?') + '$'\n);\n\n/** Built-in value references. */\nvar Buffer = moduleExports ? root.Buffer : undefined,\n Symbol = root.Symbol,\n Uint8Array = root.Uint8Array,\n propertyIsEnumerable = objectProto.propertyIsEnumerable,\n splice = arrayProto.splice,\n symToStringTag = Symbol ? Symbol.toStringTag : undefined;\n\n/* Built-in method references for those with the same name as other `lodash` methods. */\nvar nativeGetSymbols = Object.getOwnPropertySymbols,\n nativeIsBuffer = Buffer ? Buffer.isBuffer : undefined,\n nativeKeys = overArg(Object.keys, Object);\n\n/* Built-in method references that are verified to be native. */\nvar DataView = getNative(root, 'DataView'),\n Map = getNative(root, 'Map'),\n Promise = getNative(root, 'Promise'),\n Set = getNative(root, 'Set'),\n WeakMap = getNative(root, 'WeakMap'),\n nativeCreate = getNative(Object, 'create');\n\n/** Used to detect maps, sets, and weakmaps. */\nvar dataViewCtorString = toSource(DataView),\n mapCtorString = toSource(Map),\n promiseCtorString = toSource(Promise),\n setCtorString = toSource(Set),\n weakMapCtorString = toSource(WeakMap);\n\n/** Used to convert symbols to primitives and strings. */\nvar symbolProto = Symbol ? Symbol.prototype : undefined,\n symbolValueOf = symbolProto ? symbolProto.valueOf : undefined;\n\n/**\n * Creates a hash object.\n *\n * @private\n * @constructor\n * @param {Array} [entries] The key-value pairs to cache.\n */\nfunction Hash(entries) {\n var index = -1,\n length = entries == null ? 0 : entries.length;\n\n this.clear();\n while (++index < length) {\n var entry = entries[index];\n this.set(entry[0], entry[1]);\n }\n}\n\n/**\n * Removes all key-value entries from the hash.\n *\n * @private\n * @name clear\n * @memberOf Hash\n */\nfunction hashClear() {\n this.__data__ = nativeCreate ? nativeCreate(null) : {};\n this.size = 0;\n}\n\n/**\n * Removes `key` and its value from the hash.\n *\n * @private\n * @name delete\n * @memberOf Hash\n * @param {Object} hash The hash to modify.\n * @param {string} key The key of the value to remove.\n * @returns {boolean} Returns `true` if the entry was removed, else `false`.\n */\nfunction hashDelete(key) {\n var result = this.has(key) && delete this.__data__[key];\n this.size -= result ? 1 : 0;\n return result;\n}\n\n/**\n * Gets the hash value for `key`.\n *\n * @private\n * @name get\n * @memberOf Hash\n * @param {string} key The key of the value to get.\n * @returns {*} Returns the entry value.\n */\nfunction hashGet(key) {\n var data = this.__data__;\n if (nativeCreate) {\n var result = data[key];\n return result === HASH_UNDEFINED ? undefined : result;\n }\n return hasOwnProperty.call(data, key) ? data[key] : undefined;\n}\n\n/**\n * Checks if a hash value for `key` exists.\n *\n * @private\n * @name has\n * @memberOf Hash\n * @param {string} key The key of the entry to check.\n * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.\n */\nfunction hashHas(key) {\n var data = this.__data__;\n return nativeCreate ? (data[key] !== undefined) : hasOwnProperty.call(data, key);\n}\n\n/**\n * Sets the hash `key` to `value`.\n *\n * @private\n * @name set\n * @memberOf Hash\n * @param {string} key The key of the value to set.\n * @param {*} value The value to set.\n * @returns {Object} Returns the hash instance.\n */\nfunction hashSet(key, value) {\n var data = this.__data__;\n this.size += this.has(key) ? 0 : 1;\n data[key] = (nativeCreate && value === undefined) ? HASH_UNDEFINED : value;\n return this;\n}\n\n// Add methods to `Hash`.\nHash.prototype.clear = hashClear;\nHash.prototype['delete'] = hashDelete;\nHash.prototype.get = hashGet;\nHash.prototype.has = hashHas;\nHash.prototype.set = hashSet;\n\n/**\n * Creates an list cache object.\n *\n * @private\n * @constructor\n * @param {Array} [entries] The key-value pairs to cache.\n */\nfunction ListCache(entries) {\n var index = -1,\n length = entries == null ? 0 : entries.length;\n\n this.clear();\n while (++index < length) {\n var entry = entries[index];\n this.set(entry[0], entry[1]);\n }\n}\n\n/**\n * Removes all key-value entries from the list cache.\n *\n * @private\n * @name clear\n * @memberOf ListCache\n */\nfunction listCacheClear() {\n this.__data__ = [];\n this.size = 0;\n}\n\n/**\n * Removes `key` and its value from the list cache.\n *\n * @private\n * @name delete\n * @memberOf ListCache\n * @param {string} key The key of the value to remove.\n * @returns {boolean} Returns `true` if the entry was removed, else `false`.\n */\nfunction listCacheDelete(key) {\n var data = this.__data__,\n index = assocIndexOf(data, key);\n\n if (index < 0) {\n return false;\n }\n var lastIndex = data.length - 1;\n if (index == lastIndex) {\n data.pop();\n } else {\n splice.call(data, index, 1);\n }\n --this.size;\n return true;\n}\n\n/**\n * Gets the list cache value for `key`.\n *\n * @private\n * @name get\n * @memberOf ListCache\n * @param {string} key The key of the value to get.\n * @returns {*} Returns the entry value.\n */\nfunction listCacheGet(key) {\n var data = this.__data__,\n index = assocIndexOf(data, key);\n\n return index < 0 ? undefined : data[index][1];\n}\n\n/**\n * Checks if a list cache value for `key` exists.\n *\n * @private\n * @name has\n * @memberOf ListCache\n * @param {string} key The key of the entry to check.\n * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.\n */\nfunction listCacheHas(key) {\n return assocIndexOf(this.__data__, key) > -1;\n}\n\n/**\n * Sets the list cache `key` to `value`.\n *\n * @private\n * @name set\n * @memberOf ListCache\n * @param {string} key The key of the value to set.\n * @param {*} value The value to set.\n * @returns {Object} Returns the list cache instance.\n */\nfunction listCacheSet(key, value) {\n var data = this.__data__,\n index = assocIndexOf(data, key);\n\n if (index < 0) {\n ++this.size;\n data.push([key, value]);\n } else {\n data[index][1] = value;\n }\n return this;\n}\n\n// Add methods to `ListCache`.\nListCache.prototype.clear = listCacheClear;\nListCache.prototype['delete'] = listCacheDelete;\nListCache.prototype.get = listCacheGet;\nListCache.prototype.has = listCacheHas;\nListCache.prototype.set = listCacheSet;\n\n/**\n * Creates a map cache object to store key-value pairs.\n *\n * @private\n * @constructor\n * @param {Array} [entries] The key-value pairs to cache.\n */\nfunction MapCache(entries) {\n var index = -1,\n length = entries == null ? 0 : entries.length;\n\n this.clear();\n while (++index < length) {\n var entry = entries[index];\n this.set(entry[0], entry[1]);\n }\n}\n\n/**\n * Removes all key-value entries from the map.\n *\n * @private\n * @name clear\n * @memberOf MapCache\n */\nfunction mapCacheClear() {\n this.size = 0;\n this.__data__ = {\n 'hash': new Hash,\n 'map': new (Map || ListCache),\n 'string': new Hash\n };\n}\n\n/**\n * Removes `key` and its value from the map.\n *\n * @private\n * @name delete\n * @memberOf MapCache\n * @param {string} key The key of the value to remove.\n * @returns {boolean} Returns `true` if the entry was removed, else `false`.\n */\nfunction mapCacheDelete(key) {\n var result = getMapData(this, key)['delete'](key);\n this.size -= result ? 1 : 0;\n return result;\n}\n\n/**\n * Gets the map value for `key`.\n *\n * @private\n * @name get\n * @memberOf MapCache\n * @param {string} key The key of the value to get.\n * @returns {*} Returns the entry value.\n */\nfunction mapCacheGet(key) {\n return getMapData(this, key).get(key);\n}\n\n/**\n * Checks if a map value for `key` exists.\n *\n * @private\n * @name has\n * @memberOf MapCache\n * @param {string} key The key of the entry to check.\n * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.\n */\nfunction mapCacheHas(key) {\n return getMapData(this, key).has(key);\n}\n\n/**\n * Sets the map `key` to `value`.\n *\n * @private\n * @name set\n * @memberOf MapCache\n * @param {string} key The key of the value to set.\n * @param {*} value The value to set.\n * @returns {Object} Returns the map cache instance.\n */\nfunction mapCacheSet(key, value) {\n var data = getMapData(this, key),\n size = data.size;\n\n data.set(key, value);\n this.size += data.size == size ? 0 : 1;\n return this;\n}\n\n// Add methods to `MapCache`.\nMapCache.prototype.clear = mapCacheClear;\nMapCache.prototype['delete'] = mapCacheDelete;\nMapCache.prototype.get = mapCacheGet;\nMapCache.prototype.has = mapCacheHas;\nMapCache.prototype.set = mapCacheSet;\n\n/**\n *\n * Creates an array cache object to store unique values.\n *\n * @private\n * @constructor\n * @param {Array} [values] The values to cache.\n */\nfunction SetCache(values) {\n var index = -1,\n length = values == null ? 0 : values.length;\n\n this.__data__ = new MapCache;\n while (++index < length) {\n this.add(values[index]);\n }\n}\n\n/**\n * Adds `value` to the array cache.\n *\n * @private\n * @name add\n * @memberOf SetCache\n * @alias push\n * @param {*} value The value to cache.\n * @returns {Object} Returns the cache instance.\n */\nfunction setCacheAdd(value) {\n this.__data__.set(value, HASH_UNDEFINED);\n return this;\n}\n\n/**\n * Checks if `value` is in the array cache.\n *\n * @private\n * @name has\n * @memberOf SetCache\n * @param {*} value The value to search for.\n * @returns {number} Returns `true` if `value` is found, else `false`.\n */\nfunction setCacheHas(value) {\n return this.__data__.has(value);\n}\n\n// Add methods to `SetCache`.\nSetCache.prototype.add = SetCache.prototype.push = setCacheAdd;\nSetCache.prototype.has = setCacheHas;\n\n/**\n * Creates a stack cache object to store key-value pairs.\n *\n * @private\n * @constructor\n * @param {Array} [entries] The key-value pairs to cache.\n */\nfunction Stack(entries) {\n var data = this.__data__ = new ListCache(entries);\n this.size = data.size;\n}\n\n/**\n * Removes all key-value entries from the stack.\n *\n * @private\n * @name clear\n * @memberOf Stack\n */\nfunction stackClear() {\n this.__data__ = new ListCache;\n this.size = 0;\n}\n\n/**\n * Removes `key` and its value from the stack.\n *\n * @private\n * @name delete\n * @memberOf Stack\n * @param {string} key The key of the value to remove.\n * @returns {boolean} Returns `true` if the entry was removed, else `false`.\n */\nfunction stackDelete(key) {\n var data = this.__data__,\n result = data['delete'](key);\n\n this.size = data.size;\n return result;\n}\n\n/**\n * Gets the stack value for `key`.\n *\n * @private\n * @name get\n * @memberOf Stack\n * @param {string} key The key of the value to get.\n * @returns {*} Returns the entry value.\n */\nfunction stackGet(key) {\n return this.__data__.get(key);\n}\n\n/**\n * Checks if a stack value for `key` exists.\n *\n * @private\n * @name has\n * @memberOf Stack\n * @param {string} key The key of the entry to check.\n * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.\n */\nfunction stackHas(key) {\n return this.__data__.has(key);\n}\n\n/**\n * Sets the stack `key` to `value`.\n *\n * @private\n * @name set\n * @memberOf Stack\n * @param {string} key The key of the value to set.\n * @param {*} value The value to set.\n * @returns {Object} Returns the stack cache instance.\n */\nfunction stackSet(key, value) {\n var data = this.__data__;\n if (data instanceof ListCache) {\n var pairs = data.__data__;\n if (!Map || (pairs.length < LARGE_ARRAY_SIZE - 1)) {\n pairs.push([key, value]);\n this.size = ++data.size;\n return this;\n }\n data = this.__data__ = new MapCache(pairs);\n }\n data.set(key, value);\n this.size = data.size;\n return this;\n}\n\n// Add methods to `Stack`.\nStack.prototype.clear = stackClear;\nStack.prototype['delete'] = stackDelete;\nStack.prototype.get = stackGet;\nStack.prototype.has = stackHas;\nStack.prototype.set = stackSet;\n\n/**\n * Creates an array of the enumerable property names of the array-like `value`.\n *\n * @private\n * @param {*} value The value to query.\n * @param {boolean} inherited Specify returning inherited property names.\n * @returns {Array} Returns the array of property names.\n */\nfunction arrayLikeKeys(value, inherited) {\n var isArr = isArray(value),\n isArg = !isArr && isArguments(value),\n isBuff = !isArr && !isArg && isBuffer(value),\n isType = !isArr && !isArg && !isBuff && isTypedArray(value),\n skipIndexes = isArr || isArg || isBuff || isType,\n result = skipIndexes ? baseTimes(value.length, String) : [],\n length = result.length;\n\n for (var key in value) {\n if ((inherited || hasOwnProperty.call(value, key)) &&\n !(skipIndexes && (\n // Safari 9 has enumerable `arguments.length` in strict mode.\n key == 'length' ||\n // Node.js 0.10 has enumerable non-index properties on buffers.\n (isBuff && (key == 'offset' || key == 'parent')) ||\n // PhantomJS 2 has enumerable non-index properties on typed arrays.\n (isType && (key == 'buffer' || key == 'byteLength' || key == 'byteOffset')) ||\n // Skip index properties.\n isIndex(key, length)\n ))) {\n result.push(key);\n }\n }\n return result;\n}\n\n/**\n * Gets the index at which the `key` is found in `array` of key-value pairs.\n *\n * @private\n * @param {Array} array The array to inspect.\n * @param {*} key The key to search for.\n * @returns {number} Returns the index of the matched value, else `-1`.\n */\nfunction assocIndexOf(array, key) {\n var length = array.length;\n while (length--) {\n if (eq(array[length][0], key)) {\n return length;\n }\n }\n return -1;\n}\n\n/**\n * The base implementation of `getAllKeys` and `getAllKeysIn` which uses\n * `keysFunc` and `symbolsFunc` to get the enumerable property names and\n * symbols of `object`.\n *\n * @private\n * @param {Object} object The object to query.\n * @param {Function} keysFunc The function to get the keys of `object`.\n * @param {Function} symbolsFunc The function to get the symbols of `object`.\n * @returns {Array} Returns the array of property names and symbols.\n */\nfunction baseGetAllKeys(object, keysFunc, symbolsFunc) {\n var result = keysFunc(object);\n return isArray(object) ? result : arrayPush(result, symbolsFunc(object));\n}\n\n/**\n * The base implementation of `getTag` without fallbacks for buggy environments.\n *\n * @private\n * @param {*} value The value to query.\n * @returns {string} Returns the `toStringTag`.\n */\nfunction baseGetTag(value) {\n if (value == null) {\n return value === undefined ? undefinedTag : nullTag;\n }\n return (symToStringTag && symToStringTag in Object(value))\n ? getRawTag(value)\n : objectToString(value);\n}\n\n/**\n * The base implementation of `_.isArguments`.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an `arguments` object,\n */\nfunction baseIsArguments(value) {\n return isObjectLike(value) && baseGetTag(value) == argsTag;\n}\n\n/**\n * The base implementation of `_.isEqual` which supports partial comparisons\n * and tracks traversed objects.\n *\n * @private\n * @param {*} value The value to compare.\n * @param {*} other The other value to compare.\n * @param {boolean} bitmask The bitmask flags.\n * 1 - Unordered comparison\n * 2 - Partial comparison\n * @param {Function} [customizer] The function to customize comparisons.\n * @param {Object} [stack] Tracks traversed `value` and `other` objects.\n * @returns {boolean} Returns `true` if the values are equivalent, else `false`.\n */\nfunction baseIsEqual(value, other, bitmask, customizer, stack) {\n if (value === other) {\n return true;\n }\n if (value == null || other == null || (!isObjectLike(value) && !isObjectLike(other))) {\n return value !== value && other !== other;\n }\n return baseIsEqualDeep(value, other, bitmask, customizer, baseIsEqual, stack);\n}\n\n/**\n * A specialized version of `baseIsEqual` for arrays and objects which performs\n * deep comparisons and tracks traversed objects enabling objects with circular\n * references to be compared.\n *\n * @private\n * @param {Object} object The object to compare.\n * @param {Object} other The other object to compare.\n * @param {number} bitmask The bitmask flags. See `baseIsEqual` for more details.\n * @param {Function} customizer The function to customize comparisons.\n * @param {Function} equalFunc The function to determine equivalents of values.\n * @param {Object} [stack] Tracks traversed `object` and `other` objects.\n * @returns {boolean} Returns `true` if the objects are equivalent, else `false`.\n */\nfunction baseIsEqualDeep(object, other, bitmask, customizer, equalFunc, stack) {\n var objIsArr = isArray(object),\n othIsArr = isArray(other),\n objTag = objIsArr ? arrayTag : getTag(object),\n othTag = othIsArr ? arrayTag : getTag(other);\n\n objTag = objTag == argsTag ? objectTag : objTag;\n othTag = othTag == argsTag ? objectTag : othTag;\n\n var objIsObj = objTag == objectTag,\n othIsObj = othTag == objectTag,\n isSameTag = objTag == othTag;\n\n if (isSameTag && isBuffer(object)) {\n if (!isBuffer(other)) {\n return false;\n }\n objIsArr = true;\n objIsObj = false;\n }\n if (isSameTag && !objIsObj) {\n stack || (stack = new Stack);\n return (objIsArr || isTypedArray(object))\n ? equalArrays(object, other, bitmask, customizer, equalFunc, stack)\n : equalByTag(object, other, objTag, bitmask, customizer, equalFunc, stack);\n }\n if (!(bitmask & COMPARE_PARTIAL_FLAG)) {\n var objIsWrapped = objIsObj && hasOwnProperty.call(object, '__wrapped__'),\n othIsWrapped = othIsObj && hasOwnProperty.call(other, '__wrapped__');\n\n if (objIsWrapped || othIsWrapped) {\n var objUnwrapped = objIsWrapped ? object.value() : object,\n othUnwrapped = othIsWrapped ? other.value() : other;\n\n stack || (stack = new Stack);\n return equalFunc(objUnwrapped, othUnwrapped, bitmask, customizer, stack);\n }\n }\n if (!isSameTag) {\n return false;\n }\n stack || (stack = new Stack);\n return equalObjects(object, other, bitmask, customizer, equalFunc, stack);\n}\n\n/**\n * The base implementation of `_.isNative` without bad shim checks.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a native function,\n * else `false`.\n */\nfunction baseIsNative(value) {\n if (!isObject(value) || isMasked(value)) {\n return false;\n }\n var pattern = isFunction(value) ? reIsNative : reIsHostCtor;\n return pattern.test(toSource(value));\n}\n\n/**\n * The base implementation of `_.isTypedArray` without Node.js optimizations.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a typed array, else `false`.\n */\nfunction baseIsTypedArray(value) {\n return isObjectLike(value) &&\n isLength(value.length) && !!typedArrayTags[baseGetTag(value)];\n}\n\n/**\n * The base implementation of `_.keys` which doesn't treat sparse arrays as dense.\n *\n * @private\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of property names.\n */\nfunction baseKeys(object) {\n if (!isPrototype(object)) {\n return nativeKeys(object);\n }\n var result = [];\n for (var key in Object(object)) {\n if (hasOwnProperty.call(object, key) && key != 'constructor') {\n result.push(key);\n }\n }\n return result;\n}\n\n/**\n * A specialized version of `baseIsEqualDeep` for arrays with support for\n * partial deep comparisons.\n *\n * @private\n * @param {Array} array The array to compare.\n * @param {Array} other The other array to compare.\n * @param {number} bitmask The bitmask flags. See `baseIsEqual` for more details.\n * @param {Function} customizer The function to customize comparisons.\n * @param {Function} equalFunc The function to determine equivalents of values.\n * @param {Object} stack Tracks traversed `array` and `other` objects.\n * @returns {boolean} Returns `true` if the arrays are equivalent, else `false`.\n */\nfunction equalArrays(array, other, bitmask, customizer, equalFunc, stack) {\n var isPartial = bitmask & COMPARE_PARTIAL_FLAG,\n arrLength = array.length,\n othLength = other.length;\n\n if (arrLength != othLength && !(isPartial && othLength > arrLength)) {\n return false;\n }\n // Assume cyclic values are equal.\n var stacked = stack.get(array);\n if (stacked && stack.get(other)) {\n return stacked == other;\n }\n var index = -1,\n result = true,\n seen = (bitmask & COMPARE_UNORDERED_FLAG) ? new SetCache : undefined;\n\n stack.set(array, other);\n stack.set(other, array);\n\n // Ignore non-index properties.\n while (++index < arrLength) {\n var arrValue = array[index],\n othValue = other[index];\n\n if (customizer) {\n var compared = isPartial\n ? customizer(othValue, arrValue, index, other, array, stack)\n : customizer(arrValue, othValue, index, array, other, stack);\n }\n if (compared !== undefined) {\n if (compared) {\n continue;\n }\n result = false;\n break;\n }\n // Recursively compare arrays (susceptible to call stack limits).\n if (seen) {\n if (!arraySome(other, function(othValue, othIndex) {\n if (!cacheHas(seen, othIndex) &&\n (arrValue === othValue || equalFunc(arrValue, othValue, bitmask, customizer, stack))) {\n return seen.push(othIndex);\n }\n })) {\n result = false;\n break;\n }\n } else if (!(\n arrValue === othValue ||\n equalFunc(arrValue, othValue, bitmask, customizer, stack)\n )) {\n result = false;\n break;\n }\n }\n stack['delete'](array);\n stack['delete'](other);\n return result;\n}\n\n/**\n * A specialized version of `baseIsEqualDeep` for comparing objects of\n * the same `toStringTag`.\n *\n * **Note:** This function only supports comparing values with tags of\n * `Boolean`, `Date`, `Error`, `Number`, `RegExp`, or `String`.\n *\n * @private\n * @param {Object} object The object to compare.\n * @param {Object} other The other object to compare.\n * @param {string} tag The `toStringTag` of the objects to compare.\n * @param {number} bitmask The bitmask flags. See `baseIsEqual` for more details.\n * @param {Function} customizer The function to customize comparisons.\n * @param {Function} equalFunc The function to determine equivalents of values.\n * @param {Object} stack Tracks traversed `object` and `other` objects.\n * @returns {boolean} Returns `true` if the objects are equivalent, else `false`.\n */\nfunction equalByTag(object, other, tag, bitmask, customizer, equalFunc, stack) {\n switch (tag) {\n case dataViewTag:\n if ((object.byteLength != other.byteLength) ||\n (object.byteOffset != other.byteOffset)) {\n return false;\n }\n object = object.buffer;\n other = other.buffer;\n\n case arrayBufferTag:\n if ((object.byteLength != other.byteLength) ||\n !equalFunc(new Uint8Array(object), new Uint8Array(other))) {\n return false;\n }\n return true;\n\n case boolTag:\n case dateTag:\n case numberTag:\n // Coerce booleans to `1` or `0` and dates to milliseconds.\n // Invalid dates are coerced to `NaN`.\n return eq(+object, +other);\n\n case errorTag:\n return object.name == other.name && object.message == other.message;\n\n case regexpTag:\n case stringTag:\n // Coerce regexes to strings and treat strings, primitives and objects,\n // as equal. See http://www.ecma-international.org/ecma-262/7.0/#sec-regexp.prototype.tostring\n // for more details.\n return object == (other + '');\n\n case mapTag:\n var convert = mapToArray;\n\n case setTag:\n var isPartial = bitmask & COMPARE_PARTIAL_FLAG;\n convert || (convert = setToArray);\n\n if (object.size != other.size && !isPartial) {\n return false;\n }\n // Assume cyclic values are equal.\n var stacked = stack.get(object);\n if (stacked) {\n return stacked == other;\n }\n bitmask |= COMPARE_UNORDERED_FLAG;\n\n // Recursively compare objects (susceptible to call stack limits).\n stack.set(object, other);\n var result = equalArrays(convert(object), convert(other), bitmask, customizer, equalFunc, stack);\n stack['delete'](object);\n return result;\n\n case symbolTag:\n if (symbolValueOf) {\n return symbolValueOf.call(object) == symbolValueOf.call(other);\n }\n }\n return false;\n}\n\n/**\n * A specialized version of `baseIsEqualDeep` for objects with support for\n * partial deep comparisons.\n *\n * @private\n * @param {Object} object The object to compare.\n * @param {Object} other The other object to compare.\n * @param {number} bitmask The bitmask flags. See `baseIsEqual` for more details.\n * @param {Function} customizer The function to customize comparisons.\n * @param {Function} equalFunc The function to determine equivalents of values.\n * @param {Object} stack Tracks traversed `object` and `other` objects.\n * @returns {boolean} Returns `true` if the objects are equivalent, else `false`.\n */\nfunction equalObjects(object, other, bitmask, customizer, equalFunc, stack) {\n var isPartial = bitmask & COMPARE_PARTIAL_FLAG,\n objProps = getAllKeys(object),\n objLength = objProps.length,\n othProps = getAllKeys(other),\n othLength = othProps.length;\n\n if (objLength != othLength && !isPartial) {\n return false;\n }\n var index = objLength;\n while (index--) {\n var key = objProps[index];\n if (!(isPartial ? key in other : hasOwnProperty.call(other, key))) {\n return false;\n }\n }\n // Assume cyclic values are equal.\n var stacked = stack.get(object);\n if (stacked && stack.get(other)) {\n return stacked == other;\n }\n var result = true;\n stack.set(object, other);\n stack.set(other, object);\n\n var skipCtor = isPartial;\n while (++index < objLength) {\n key = objProps[index];\n var objValue = object[key],\n othValue = other[key];\n\n if (customizer) {\n var compared = isPartial\n ? customizer(othValue, objValue, key, other, object, stack)\n : customizer(objValue, othValue, key, object, other, stack);\n }\n // Recursively compare objects (susceptible to call stack limits).\n if (!(compared === undefined\n ? (objValue === othValue || equalFunc(objValue, othValue, bitmask, customizer, stack))\n : compared\n )) {\n result = false;\n break;\n }\n skipCtor || (skipCtor = key == 'constructor');\n }\n if (result && !skipCtor) {\n var objCtor = object.constructor,\n othCtor = other.constructor;\n\n // Non `Object` object instances with different constructors are not equal.\n if (objCtor != othCtor &&\n ('constructor' in object && 'constructor' in other) &&\n !(typeof objCtor == 'function' && objCtor instanceof objCtor &&\n typeof othCtor == 'function' && othCtor instanceof othCtor)) {\n result = false;\n }\n }\n stack['delete'](object);\n stack['delete'](other);\n return result;\n}\n\n/**\n * Creates an array of own enumerable property names and symbols of `object`.\n *\n * @private\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of property names and symbols.\n */\nfunction getAllKeys(object) {\n return baseGetAllKeys(object, keys, getSymbols);\n}\n\n/**\n * Gets the data for `map`.\n *\n * @private\n * @param {Object} map The map to query.\n * @param {string} key The reference key.\n * @returns {*} Returns the map data.\n */\nfunction getMapData(map, key) {\n var data = map.__data__;\n return isKeyable(key)\n ? data[typeof key == 'string' ? 'string' : 'hash']\n : data.map;\n}\n\n/**\n * Gets the native function at `key` of `object`.\n *\n * @private\n * @param {Object} object The object to query.\n * @param {string} key The key of the method to get.\n * @returns {*} Returns the function if it's native, else `undefined`.\n */\nfunction getNative(object, key) {\n var value = getValue(object, key);\n return baseIsNative(value) ? value : undefined;\n}\n\n/**\n * A specialized version of `baseGetTag` which ignores `Symbol.toStringTag` values.\n *\n * @private\n * @param {*} value The value to query.\n * @returns {string} Returns the raw `toStringTag`.\n */\nfunction getRawTag(value) {\n var isOwn = hasOwnProperty.call(value, symToStringTag),\n tag = value[symToStringTag];\n\n try {\n value[symToStringTag] = undefined;\n var unmasked = true;\n } catch (e) {}\n\n var result = nativeObjectToString.call(value);\n if (unmasked) {\n if (isOwn) {\n value[symToStringTag] = tag;\n } else {\n delete value[symToStringTag];\n }\n }\n return result;\n}\n\n/**\n * Creates an array of the own enumerable symbols of `object`.\n *\n * @private\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of symbols.\n */\nvar getSymbols = !nativeGetSymbols ? stubArray : function(object) {\n if (object == null) {\n return [];\n }\n object = Object(object);\n return arrayFilter(nativeGetSymbols(object), function(symbol) {\n return propertyIsEnumerable.call(object, symbol);\n });\n};\n\n/**\n * Gets the `toStringTag` of `value`.\n *\n * @private\n * @param {*} value The value to query.\n * @returns {string} Returns the `toStringTag`.\n */\nvar getTag = baseGetTag;\n\n// Fallback for data views, maps, sets, and weak maps in IE 11 and promises in Node.js < 6.\nif ((DataView && getTag(new DataView(new ArrayBuffer(1))) != dataViewTag) ||\n (Map && getTag(new Map) != mapTag) ||\n (Promise && getTag(Promise.resolve()) != promiseTag) ||\n (Set && getTag(new Set) != setTag) ||\n (WeakMap && getTag(new WeakMap) != weakMapTag)) {\n getTag = function(value) {\n var result = baseGetTag(value),\n Ctor = result == objectTag ? value.constructor : undefined,\n ctorString = Ctor ? toSource(Ctor) : '';\n\n if (ctorString) {\n switch (ctorString) {\n case dataViewCtorString: return dataViewTag;\n case mapCtorString: return mapTag;\n case promiseCtorString: return promiseTag;\n case setCtorString: return setTag;\n case weakMapCtorString: return weakMapTag;\n }\n }\n return result;\n };\n}\n\n/**\n * Checks if `value` is a valid array-like index.\n *\n * @private\n * @param {*} value The value to check.\n * @param {number} [length=MAX_SAFE_INTEGER] The upper bounds of a valid index.\n * @returns {boolean} Returns `true` if `value` is a valid index, else `false`.\n */\nfunction isIndex(value, length) {\n length = length == null ? MAX_SAFE_INTEGER : length;\n return !!length &&\n (typeof value == 'number' || reIsUint.test(value)) &&\n (value > -1 && value % 1 == 0 && value < length);\n}\n\n/**\n * Checks if `value` is suitable for use as unique object key.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is suitable, else `false`.\n */\nfunction isKeyable(value) {\n var type = typeof value;\n return (type == 'string' || type == 'number' || type == 'symbol' || type == 'boolean')\n ? (value !== '__proto__')\n : (value === null);\n}\n\n/**\n * Checks if `func` has its source masked.\n *\n * @private\n * @param {Function} func The function to check.\n * @returns {boolean} Returns `true` if `func` is masked, else `false`.\n */\nfunction isMasked(func) {\n return !!maskSrcKey && (maskSrcKey in func);\n}\n\n/**\n * Checks if `value` is likely a prototype object.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a prototype, else `false`.\n */\nfunction isPrototype(value) {\n var Ctor = value && value.constructor,\n proto = (typeof Ctor == 'function' && Ctor.prototype) || objectProto;\n\n return value === proto;\n}\n\n/**\n * Converts `value` to a string using `Object.prototype.toString`.\n *\n * @private\n * @param {*} value The value to convert.\n * @returns {string} Returns the converted string.\n */\nfunction objectToString(value) {\n return nativeObjectToString.call(value);\n}\n\n/**\n * Converts `func` to its source code.\n *\n * @private\n * @param {Function} func The function to convert.\n * @returns {string} Returns the source code.\n */\nfunction toSource(func) {\n if (func != null) {\n try {\n return funcToString.call(func);\n } catch (e) {}\n try {\n return (func + '');\n } catch (e) {}\n }\n return '';\n}\n\n/**\n * Performs a\n * [`SameValueZero`](http://ecma-international.org/ecma-262/7.0/#sec-samevaluezero)\n * comparison between two values to determine if they are equivalent.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to compare.\n * @param {*} other The other value to compare.\n * @returns {boolean} Returns `true` if the values are equivalent, else `false`.\n * @example\n *\n * var object = { 'a': 1 };\n * var other = { 'a': 1 };\n *\n * _.eq(object, object);\n * // => true\n *\n * _.eq(object, other);\n * // => false\n *\n * _.eq('a', 'a');\n * // => true\n *\n * _.eq('a', Object('a'));\n * // => false\n *\n * _.eq(NaN, NaN);\n * // => true\n */\nfunction eq(value, other) {\n return value === other || (value !== value && other !== other);\n}\n\n/**\n * Checks if `value` is likely an `arguments` object.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an `arguments` object,\n * else `false`.\n * @example\n *\n * _.isArguments(function() { return arguments; }());\n * // => true\n *\n * _.isArguments([1, 2, 3]);\n * // => false\n */\nvar isArguments = baseIsArguments(function() { return arguments; }()) ? baseIsArguments : function(value) {\n return isObjectLike(value) && hasOwnProperty.call(value, 'callee') &&\n !propertyIsEnumerable.call(value, 'callee');\n};\n\n/**\n * Checks if `value` is classified as an `Array` object.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an array, else `false`.\n * @example\n *\n * _.isArray([1, 2, 3]);\n * // => true\n *\n * _.isArray(document.body.children);\n * // => false\n *\n * _.isArray('abc');\n * // => false\n *\n * _.isArray(_.noop);\n * // => false\n */\nvar isArray = Array.isArray;\n\n/**\n * Checks if `value` is array-like. A value is considered array-like if it's\n * not a function and has a `value.length` that's an integer greater than or\n * equal to `0` and less than or equal to `Number.MAX_SAFE_INTEGER`.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is array-like, else `false`.\n * @example\n *\n * _.isArrayLike([1, 2, 3]);\n * // => true\n *\n * _.isArrayLike(document.body.children);\n * // => true\n *\n * _.isArrayLike('abc');\n * // => true\n *\n * _.isArrayLike(_.noop);\n * // => false\n */\nfunction isArrayLike(value) {\n return value != null && isLength(value.length) && !isFunction(value);\n}\n\n/**\n * Checks if `value` is a buffer.\n *\n * @static\n * @memberOf _\n * @since 4.3.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a buffer, else `false`.\n * @example\n *\n * _.isBuffer(new Buffer(2));\n * // => true\n *\n * _.isBuffer(new Uint8Array(2));\n * // => false\n */\nvar isBuffer = nativeIsBuffer || stubFalse;\n\n/**\n * Performs a deep comparison between two values to determine if they are\n * equivalent.\n *\n * **Note:** This method supports comparing arrays, array buffers, booleans,\n * date objects, error objects, maps, numbers, `Object` objects, regexes,\n * sets, strings, symbols, and typed arrays. `Object` objects are compared\n * by their own, not inherited, enumerable properties. Functions and DOM\n * nodes are compared by strict equality, i.e. `===`.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to compare.\n * @param {*} other The other value to compare.\n * @returns {boolean} Returns `true` if the values are equivalent, else `false`.\n * @example\n *\n * var object = { 'a': 1 };\n * var other = { 'a': 1 };\n *\n * _.isEqual(object, other);\n * // => true\n *\n * object === other;\n * // => false\n */\nfunction isEqual(value, other) {\n return baseIsEqual(value, other);\n}\n\n/**\n * Checks if `value` is classified as a `Function` object.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a function, else `false`.\n * @example\n *\n * _.isFunction(_);\n * // => true\n *\n * _.isFunction(/abc/);\n * // => false\n */\nfunction isFunction(value) {\n if (!isObject(value)) {\n return false;\n }\n // The use of `Object#toString` avoids issues with the `typeof` operator\n // in Safari 9 which returns 'object' for typed arrays and other constructors.\n var tag = baseGetTag(value);\n return tag == funcTag || tag == genTag || tag == asyncTag || tag == proxyTag;\n}\n\n/**\n * Checks if `value` is a valid array-like length.\n *\n * **Note:** This method is loosely based on\n * [`ToLength`](http://ecma-international.org/ecma-262/7.0/#sec-tolength).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a valid length, else `false`.\n * @example\n *\n * _.isLength(3);\n * // => true\n *\n * _.isLength(Number.MIN_VALUE);\n * // => false\n *\n * _.isLength(Infinity);\n * // => false\n *\n * _.isLength('3');\n * // => false\n */\nfunction isLength(value) {\n return typeof value == 'number' &&\n value > -1 && value % 1 == 0 && value <= MAX_SAFE_INTEGER;\n}\n\n/**\n * Checks if `value` is the\n * [language type](http://www.ecma-international.org/ecma-262/7.0/#sec-ecmascript-language-types)\n * of `Object`. (e.g. arrays, functions, objects, regexes, `new Number(0)`, and `new String('')`)\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an object, else `false`.\n * @example\n *\n * _.isObject({});\n * // => true\n *\n * _.isObject([1, 2, 3]);\n * // => true\n *\n * _.isObject(_.noop);\n * // => true\n *\n * _.isObject(null);\n * // => false\n */\nfunction isObject(value) {\n var type = typeof value;\n return value != null && (type == 'object' || type == 'function');\n}\n\n/**\n * Checks if `value` is object-like. A value is object-like if it's not `null`\n * and has a `typeof` result of \"object\".\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is object-like, else `false`.\n * @example\n *\n * _.isObjectLike({});\n * // => true\n *\n * _.isObjectLike([1, 2, 3]);\n * // => true\n *\n * _.isObjectLike(_.noop);\n * // => false\n *\n * _.isObjectLike(null);\n * // => false\n */\nfunction isObjectLike(value) {\n return value != null && typeof value == 'object';\n}\n\n/**\n * Checks if `value` is classified as a typed array.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a typed array, else `false`.\n * @example\n *\n * _.isTypedArray(new Uint8Array);\n * // => true\n *\n * _.isTypedArray([]);\n * // => false\n */\nvar isTypedArray = nodeIsTypedArray ? baseUnary(nodeIsTypedArray) : baseIsTypedArray;\n\n/**\n * Creates an array of the own enumerable property names of `object`.\n *\n * **Note:** Non-object values are coerced to objects. See the\n * [ES spec](http://ecma-international.org/ecma-262/7.0/#sec-object.keys)\n * for more details.\n *\n * @static\n * @since 0.1.0\n * @memberOf _\n * @category Object\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of property names.\n * @example\n *\n * function Foo() {\n * this.a = 1;\n * this.b = 2;\n * }\n *\n * Foo.prototype.c = 3;\n *\n * _.keys(new Foo);\n * // => ['a', 'b'] (iteration order is not guaranteed)\n *\n * _.keys('hi');\n * // => ['0', '1']\n */\nfunction keys(object) {\n return isArrayLike(object) ? arrayLikeKeys(object) : baseKeys(object);\n}\n\n/**\n * This method returns a new empty array.\n *\n * @static\n * @memberOf _\n * @since 4.13.0\n * @category Util\n * @returns {Array} Returns the new empty array.\n * @example\n *\n * var arrays = _.times(2, _.stubArray);\n *\n * console.log(arrays);\n * // => [[], []]\n *\n * console.log(arrays[0] === arrays[1]);\n * // => false\n */\nfunction stubArray() {\n return [];\n}\n\n/**\n * This method returns `false`.\n *\n * @static\n * @memberOf _\n * @since 4.13.0\n * @category Util\n * @returns {boolean} Returns `false`.\n * @example\n *\n * _.times(2, _.stubFalse);\n * // => [false, false]\n */\nfunction stubFalse() {\n return false;\n}\n\nmodule.exports = isEqual;\n","/**\r\n * Wraps values in an `Ok` type.\r\n *\r\n * Example: `ok(5) // => {ok: true, result: 5}`\r\n */\r\nvar ok = function (result) { return ({ ok: true, result: result }); };\r\n/**\r\n * Typeguard for `Ok`.\r\n */\r\nvar isOk = function (r) { return r.ok === true; };\r\n/**\r\n * Wraps errors in an `Err` type.\r\n *\r\n * Example: `err('on fire') // => {ok: false, error: 'on fire'}`\r\n */\r\nvar err = function (error) { return ({ ok: false, error: error }); };\r\n/**\r\n * Typeguard for `Err`.\r\n */\r\nvar isErr = function (r) { return r.ok === false; };\r\n/**\r\n * Create a `Promise` that either resolves with the result of `Ok` or rejects\r\n * with the error of `Err`.\r\n */\r\nvar asPromise = function (r) {\r\n return r.ok === true ? Promise.resolve(r.result) : Promise.reject(r.error);\r\n};\r\n/**\r\n * Unwraps a `Result` and returns either the result of an `Ok`, or\r\n * `defaultValue`.\r\n *\r\n * Example:\r\n * ```\r\n * Result.withDefault(5, number().run(json))\r\n * ```\r\n *\r\n * It would be nice if `Decoder` had an instance method that mirrored this\r\n * function. Such a method would look something like this:\r\n * ```\r\n * class Decoder<A> {\r\n * runWithDefault = (defaultValue: A, json: any): A =>\r\n * Result.withDefault(defaultValue, this.run(json));\r\n * }\r\n *\r\n * number().runWithDefault(5, json)\r\n * ```\r\n * Unfortunately, the type of `defaultValue: A` on the method causes issues\r\n * with type inference on the `object` decoder in some situations. While these\r\n * inference issues can be solved by providing the optional type argument for\r\n * `object`s, the extra trouble and confusion doesn't seem worth it.\r\n */\r\nvar withDefault = function (defaultValue, r) {\r\n return r.ok === true ? r.result : defaultValue;\r\n};\r\n/**\r\n * Return the successful result, or throw an error.\r\n */\r\nvar withException = function (r) {\r\n if (r.ok === true) {\r\n return r.result;\r\n }\r\n else {\r\n throw r.error;\r\n }\r\n};\r\n/**\r\n * Given an array of `Result`s, return the successful values.\r\n */\r\nvar successes = function (results) {\r\n return results.reduce(function (acc, r) { return (r.ok === true ? acc.concat(r.result) : acc); }, []);\r\n};\r\n/**\r\n * Apply `f` to the result of an `Ok`, or pass the error through.\r\n */\r\nvar map = function (f, r) {\r\n return r.ok === true ? ok(f(r.result)) : r;\r\n};\r\n/**\r\n * Apply `f` to the result of two `Ok`s, or pass an error through. If both\r\n * `Result`s are errors then the first one is returned.\r\n */\r\nvar map2 = function (f, ar, br) {\r\n return ar.ok === false ? ar :\r\n br.ok === false ? br :\r\n ok(f(ar.result, br.result));\r\n};\r\n/**\r\n * Apply `f` to the error of an `Err`, or pass the success through.\r\n */\r\nvar mapError = function (f, r) {\r\n return r.ok === true ? r : err(f(r.error));\r\n};\r\n/**\r\n * Chain together a sequence of computations that may fail, similar to a\r\n * `Promise`. If the first computation fails then the error will propagate\r\n * through. If it succeeds, then `f` will be applied to the value, returning a\r\n * new `Result`.\r\n */\r\nvar andThen = function (f, r) {\r\n return r.ok === true ? f(r.result) : r;\r\n};\r\n\n\nvar result = Object.freeze({\n\tok: ok,\n\tisOk: isOk,\n\terr: err,\n\tisErr: isErr,\n\tasPromise: asPromise,\n\twithDefault: withDefault,\n\twithException: withException,\n\tsuccesses: successes,\n\tmap: map,\n\tmap2: map2,\n\tmapError: mapError,\n\tandThen: andThen\n});\n\n/*! *****************************************************************************\r\nCopyright (c) Microsoft Corporation. All rights reserved.\r\nLicensed under the Apache License, Version 2.0 (the \"License\"); you may not use\r\nthis file except in compliance with the License. You may obtain a copy of the\r\nLicense at http://www.apache.org/licenses/LICENSE-2.0\r\n\r\nTHIS CODE IS PROVIDED ON AN *AS IS* BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\r\nKIND, EITHER EXPRESS OR IMPLIED, INCLUDING WITHOUT LIMITATION ANY IMPLIED\r\nWARRANTIES OR CONDITIONS OF TITLE, FITNESS FOR A PARTICULAR PURPOSE,\r\nMERCHANTABLITY OR NON-INFRINGEMENT.\r\n\r\nSee the Apache Version 2.0 License for specific language governing permissions\r\nand limitations under the License.\r\n***************************************************************************** */\r\n/* global Reflect, Promise */\r\n\r\n\r\n\r\nvar __assign = function() {\r\n __assign = Object.assign || function __assign(t) {\r\n for (var s, i = 1, n = arguments.length; i < n; i++) {\r\n s = arguments[i];\r\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p];\r\n }\r\n return t;\r\n };\r\n return __assign.apply(this, arguments);\r\n};\r\n\r\nfunction __rest(s, e) {\r\n var t = {};\r\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)\r\n t[p] = s[p];\r\n if (s != null && typeof Object.getOwnPropertySymbols === \"function\")\r\n for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) if (e.indexOf(p[i]) < 0)\r\n t[p[i]] = s[p[i]];\r\n return t;\r\n}\n\nvar isEqual = require('lodash.isequal'); // this syntax avoids TS1192\r\n/**\r\n * Type guard for `DecoderError`. One use case of the type guard is in the\r\n * `catch` of a promise. Typescript types the error argument of `catch` as\r\n * `any`, so when dealing with a decoder as a promise you may need to\r\n * distinguish between a `DecoderError` and an error string.\r\n */\r\nvar isDecoderError = function (a) {\r\n return a.kind === 'DecoderError' && typeof a.at === 'string' && typeof a.message === 'string';\r\n};\r\n/*\r\n * Helpers\r\n */\r\nvar isJsonArray = function (json) { return Array.isArray(json); };\r\nvar isJsonObject = function (json) {\r\n return typeof json === 'object' && json !== null && !isJsonArray(json);\r\n};\r\nvar typeString = function (json) {\r\n switch (typeof json) {\r\n case 'string':\r\n return 'a string';\r\n case 'number':\r\n return 'a number';\r\n case 'boolean':\r\n return 'a boolean';\r\n case 'undefined':\r\n return 'undefined';\r\n case 'object':\r\n if (json instanceof Array) {\r\n return 'an array';\r\n }\r\n else if (json === null) {\r\n return 'null';\r\n }\r\n else {\r\n return 'an object';\r\n }\r\n default:\r\n return JSON.stringify(json);\r\n }\r\n};\r\nvar expectedGot = function (expected, got) {\r\n return \"expected \" + expected + \", got \" + typeString(got);\r\n};\r\nvar printPath = function (paths) {\r\n return paths.map(function (path) { return (typeof path === 'string' ? \".\" + path : \"[\" + path + \"]\"); }).join('');\r\n};\r\nvar prependAt = function (newAt, _a) {\r\n var at = _a.at, rest = __rest(_a, [\"at\"]);\r\n return (__assign({ at: newAt + (at || '') }, rest));\r\n};\r\n/**\r\n * Decoders transform json objects with unknown structure into known and\r\n * verified forms. You can create objects of type `Decoder<A>` with either the\r\n * primitive decoder functions, such as `boolean()` and `string()`, or by\r\n * applying higher-order decoders to the primitives, such as `array(boolean())`\r\n * or `dict(string())`.\r\n *\r\n * Each of the decoder functions are available both as a static method on\r\n * `Decoder` and as a function alias -- for example the string decoder is\r\n * defined at `Decoder.string()`, but is also aliased to `string()`. Using the\r\n * function aliases exported with the library is recommended.\r\n *\r\n * `Decoder` exposes a number of 'run' methods, which all decode json in the\r\n * same way, but communicate success and failure in different ways. The `map`\r\n * and `andThen` methods modify decoders without having to call a 'run' method.\r\n *\r\n * Alternatively, the main decoder `run()` method returns an object of type\r\n * `Result<A, DecoderError>`. This library provides a number of helper\r\n * functions for dealing with the `Result` type, so you can do all the same\r\n * things with a `Result` as with the decoder methods.\r\n */\r\nvar Decoder = /** @class */ (function () {\r\n /**\r\n * The Decoder class constructor is kept private to separate the internal\r\n * `decode` function from the external `run` function. The distinction\r\n * between the two functions is that `decode` returns a\r\n * `Partial<DecoderError>` on failure, which contains an unfinished error\r\n * report. When `run` is called on a decoder, the relevant series of `decode`\r\n * calls is made, and then on failure the resulting `Partial<DecoderError>`\r\n * is turned into a `DecoderError` by filling in the missing information.\r\n *\r\n * While hiding the constructor may seem restrictive, leveraging the\r\n * provided decoder combinators and helper functions such as\r\n * `andThen` and `map` should be enough to build specialized decoders as\r\n * needed.\r\n */\r\n function Decoder(decode) {\r\n var _this = this;\r\n this.decode = decode;\r\n /**\r\n * Run the decoder and return a `Result` with either the decoded value or a\r\n * `DecoderError` containing the json input, the location of the error, and\r\n * the error message.\r\n *\r\n * Examples:\r\n * ```\r\n * number().run(12)\r\n * // => {ok: true, result: 12}\r\n *\r\n * string().run(9001)\r\n * // =>\r\n * // {\r\n * // ok: false,\r\n * // error: {\r\n * // kind: 'DecoderError',\r\n * // input: 9001,\r\n * // at: 'input',\r\n * // message: 'expected a string, got 9001'\r\n * // }\r\n * // }\r\n * ```\r\n */\r\n this.run = function (json) {\r\n return mapError(function (error) { return ({\r\n kind: 'DecoderError',\r\n input: json,\r\n at: 'input' + (error.at || ''),\r\n message: error.message || ''\r\n }); }, _this.decode(json));\r\n };\r\n /**\r\n * Run the decoder as a `Promise`.\r\n */\r\n this.runPromise = function (json) { return asPromise(_this.run(json)); };\r\n /**\r\n * Run the decoder and return the value on success, or throw an exception\r\n * with a formatted error string.\r\n */\r\n this.runWithException = function (json) { return withException(_this.run(json)); };\r\n /**\r\n * Construct a new decoder that applies a transformation to the decoded\r\n * result. If the decoder succeeds then `f` will be applied to the value. If\r\n * it fails the error will propagated through.\r\n *\r\n * Example:\r\n * ```\r\n * number().map(x => x * 5).run(10)\r\n * // => {ok: true, result: 50}\r\n * ```\r\n */\r\n this.map = function (f) {\r\n return new Decoder(function (json) { return map(f, _this.decode(json)); });\r\n };\r\n /**\r\n * Chain together a sequence of decoders. The first decoder will run, and\r\n * then the function will determine what decoder to run second. If the result\r\n * of the first decoder succeeds then `f` will be applied to the decoded\r\n * value. If it fails the error will propagate through.\r\n *\r\n * This is a very powerful method -- it can act as both the `map` and `where`\r\n * methods, can improve error messages for edge cases, and can be used to\r\n * make a decoder for custom types.\r\n *\r\n * Example of adding an error message:\r\n * ```\r\n * const versionDecoder = valueAt(['version'], number());\r\n * const infoDecoder3 = object({a: boolean()});\r\n *\r\n * const decoder = versionDecoder.andThen(version => {\r\n * switch (version) {\r\n * case 3:\r\n * return infoDecoder3;\r\n * default:\r\n * return fail(`Unable to decode info, version ${version} is not supported.`);\r\n * }\r\n * });\r\n *\r\n * decoder.run({version: 3, a: true})\r\n * // => {ok: true, result: {a: true}}\r\n *\r\n * decoder.run({version: 5, x: 'abc'})\r\n * // =>\r\n * // {\r\n * // ok: false,\r\n * // error: {... message: 'Unable to decode info, version 5 is not supported.'}\r\n * // }\r\n * ```\r\n *\r\n * Example of decoding a custom type:\r\n * ```\r\n * // nominal type for arrays with a length of at least one\r\n * type NonEmptyArray<T> = T[] & { __nonEmptyArrayBrand__: void };\r\n *\r\n * const nonEmptyArrayDecoder = <T>(values: Decoder<T>): Decoder<NonEmptyArray<T>> =>\r\n * array(values).andThen(arr =>\r\n * arr.length > 0\r\n * ? succeed(createNonEmptyArray(arr))\r\n * : fail(`expected a non-empty array, got an empty array`)\r\n * );\r\n * ```\r\n */\r\n this.andThen = function (f) {\r\n return new Decoder(function (json) {\r\n return andThen(function (value) { return f(value).decode(json); }, _this.decode(json));\r\n });\r\n };\r\n /**\r\n * Add constraints to a decoder _without_ changing the resulting type. The\r\n * `test` argument is a predicate function which returns true for valid\r\n * inputs. When `test` fails on an input, the decoder fails with the given\r\n * `errorMessage`.\r\n *\r\n * ```\r\n * const chars = (length: number): Decoder<string> =>\r\n * string().where(\r\n * (s: string) => s.length === length,\r\n * `expected a string of length ${length}`\r\n * );\r\n *\r\n * chars(5).run('12345')\r\n * // => {ok: true, result: '12345'}\r\n *\r\n * chars(2).run('HELLO')\r\n * // => {ok: false, error: {... message: 'expected a string of length 2'}}\r\n *\r\n * chars(12).run(true)\r\n * // => {ok: false, error: {... message: 'expected a string, got a boolean'}}\r\n * ```\r\n */\r\n this.where = function (test, errorMessage) {\r\n return _this.andThen(function (value) { return (test(value) ? Decoder.succeed(value) : Decoder.fail(errorMessage)); });\r\n };\r\n }\r\n /**\r\n * Decoder primitive that validates strings, and fails on all other input.\r\n */\r\n Decoder.string = function () {\r\n return new Decoder(function (json) {\r\n return typeof json === 'string'\r\n ? ok(json)\r\n : err({ message: expectedGot('a string', json) });\r\n });\r\n };\r\n /**\r\n * Decoder primitive that validates numbers, and fails on all other input.\r\n */\r\n Decoder.number = function () {\r\n return new Decoder(function (json) {\r\n return typeof json === 'number'\r\n ? ok(json)\r\n : err({ message: expectedGot('a number', json) });\r\n });\r\n };\r\n /**\r\n * Decoder primitive that validates booleans, and fails on all other input.\r\n */\r\n Decoder.boolean = function () {\r\n return new Decoder(function (json) {\r\n return typeof json === 'boolean'\r\n ? ok(json)\r\n : err({ message: expectedGot('a boolean', json) });\r\n });\r\n };\r\n Decoder.constant = function (value) {\r\n return new Decoder(function (json) {\r\n return isEqual(json, value)\r\n ? ok(value)\r\n : err({ message: \"expected \" + JSON.stringify(value) + \", got \" + JSON.stringify(json) });\r\n });\r\n };\r\n Decoder.object = function (decoders) {\r\n return new Decoder(function (json) {\r\n if (isJsonObject(json) && decoders) {\r\n var obj = {};\r\n for (var key in decoders) {\r\n if (decoders.hasOwnProperty(key)) {\r\n var r = decoders[key].decode(json[key]);\r\n if (r.ok === true) {\r\n // tslint:disable-next-line:strict-type-predicates\r\n if (r.result !== undefined) {\r\n obj[key] = r.result;\r\n }\r\n }\r\n else if (json[key] === undefined) {\r\n return err({ message: \"the key '\" + key + \"' is required but was not present\" });\r\n }\r\n else {\r\n return err(prependAt(\".\" + key, r.error));\r\n }\r\n }\r\n }\r\n return ok(obj);\r\n }\r\n else if (isJsonObject(json)) {\r\n return ok(json);\r\n }\r\n else {\r\n return err({ message: expectedGot('an object', json) });\r\n }\r\n });\r\n };\r\n Decoder.array = function (decoder) {\r\n return new Decoder(function (json) {\r\n if (isJsonArray(json) && decoder) {\r\n var decodeValue_1 = function (v, i) {\r\n return mapError(function (err$$1) { return prependAt(\"[\" + i + \"]\", err$$1); }, decoder.decode(v));\r\n };\r\n return json.reduce(function (acc, v, i) {\r\n return map2(function (arr, result) { return arr.concat([result]); }, acc, decodeValue_1(v, i));\r\n }, ok([]));\r\n }\r\n else if (isJsonArray(json)) {\r\n return ok(json);\r\n }\r\n else {\r\n return err({ message: expectedGot('an array', json) });\r\n }\r\n });\r\n };\r\n Decoder.tuple = function (decoders) {\r\n return new Decoder(function (json) {\r\n if (isJsonArray(json)) {\r\n if (json.length !== decoders.length) {\r\n return err({\r\n message: \"expected a tuple of length \" + decoders.length + \", got one of length \" + json.length\r\n });\r\n }\r\n var result = [];\r\n for (var i = 0; i < decoders.length; i++) {\r\n var nth = decoders[i].decode(json[i]);\r\n if (nth.ok) {\r\n result[i] = nth.result;\r\n }\r\n else {\r\n return err(prependAt(\"[\" + i + \"]\", nth.error));\r\n }\r\n }\r\n return ok(result);\r\n }\r\n else {\r\n return err({ message: expectedGot(\"a tuple of length \" + decoders.length, json) });\r\n }\r\n });\r\n };\r\n Decoder.union = function (ad, bd) {\r\n var decoders = [];\r\n for (var _i = 2; _i < arguments.length; _i++) {\r\n decoders[_i - 2] = arguments[_i];\r\n }\r\n return Decoder.oneOf.apply(Decoder, [ad, bd].concat(decoders));\r\n };\r\n Decoder.intersection = function (ad, bd) {\r\n var ds = [];\r\n for (var _i = 2; _i < arguments.length; _i++) {\r\n ds[_i - 2] = arguments[_i];\r\n }\r\n return new Decoder(function (json) {\r\n return [ad, bd].concat(ds).reduce(function (acc, decoder) { return map2(Object.assign, acc, decoder.decode(json)); }, ok({}));\r\n });\r\n };\r\n /**\r\n * Escape hatch to bypass validation. Always succeeds and types the result as\r\n * `any`. Useful for defining decoders incrementally, particularly for\r\n * complex objects.\r\n *\r\n * Example:\r\n * ```\r\n * interface User {\r\n * name: string;\r\n * complexUserData: ComplexType;\r\n * }\r\n *\r\n * const userDecoder: Decoder<User> = object({\r\n * name: string(),\r\n * complexUserData: anyJson()\r\n * });\r\n * ```\r\n */\r\n Decoder.anyJson = function () { return new Decoder(function (json) { return ok(json); }); };\r\n /**\r\n * Decoder identity function which always succeeds and types the result as\r\n * `unknown`.\r\n */\r\n Decoder.unknownJson = function () {\r\n return new Decoder(function (json) { return ok(json); });\r\n };\r\n /**\r\n * Decoder for json objects where the keys are unknown strings, but the values\r\n * should all be of the same type.\r\n *\r\n * Example:\r\n * ```\r\n * dict(number()).run({chocolate: 12, vanilla: 10, mint: 37});\r\n * // => {ok: true, result: {chocolate: 12, vanilla: 10, mint: 37}}\r\n * ```\r\n */\r\n Decoder.dict = function (decoder) {\r\n return new Decoder(function (json) {\r\n if (isJsonObject(json)) {\r\n var obj = {};\r\n for (var key in json) {\r\n if (json.hasOwnProperty(key)) {\r\n var r = decoder.decode(json[key]);\r\n if (r.ok === true) {\r\n obj[key] = r.result;\r\n }\r\n else {\r\n return err(prependAt(\".\" + key, r.error));\r\n }\r\n }\r\n }\r\n return ok(obj);\r\n }\r\n else {\r\n return err({ message: expectedGot('an object', json) });\r\n }\r\n });\r\n };\r\n /**\r\n * Decoder for values that may be `undefined`. This is primarily helpful for\r\n * decoding interfaces with optional fields.\r\n *\r\n * Example:\r\n * ```\r\n * interface User {\r\n * id: number;\r\n * isOwner?: boolean;\r\n * }\r\n *\r\n * const decoder: Decoder<User> = object({\r\n * id: number(),\r\n * isOwner: optional(boolean())\r\n * });\r\n * ```\r\n */\r\n Decoder.optional = function (decoder) {\r\n return new Decoder(function (json) { return (json === undefined ? ok(undefined) : decoder.decode(json)); });\r\n };\r\n /**\r\n * Decoder that attempts to run each decoder in `decoders` and either succeeds\r\n * with the first successful decoder, or fails after all decoders have failed.\r\n *\r\n * Note that `oneOf` expects the decoders to all have the same return type,\r\n * while `union` creates a decoder for the union type of all the input\r\n * decoders.\r\n *\r\n * Examples:\r\n * ```\r\n * oneOf(string(), number().map(String))\r\n * oneOf(constant('start'), constant('stop'), succeed('unknown'))\r\n * ```\r\n */\r\n Decoder.oneOf = function () {\r\n var decoders = [];\r\n for (var _i = 0; _i < arguments.length; _i++) {\r\n decoders[_i] = arguments[_i];\r\n }\r\n return new Decoder(function (json) {\r\n var errors = [];\r\n for (var i = 0; i < decoders.length; i++) {\r\n var r = decoders[i].decode(json);\r\n if (r.ok === true) {\r\n return r;\r\n }\r\n else {\r\n errors[i] = r.error;\r\n }\r\n }\r\n var errorsList = errors\r\n .map(function (error) { return \"at error\" + (error.at || '') + \": \" + error.message; })\r\n .join('\", \"');\r\n return err({\r\n message: \"expected a value matching one of the decoders, got the errors [\\\"\" + errorsList + \"\\\"]\"\r\n });\r\n });\r\n };\r\n /**\r\n * Decoder that always succeeds with either the decoded value, or a fallback\r\n * default value.\r\n */\r\n Decoder.withDefault = function (defaultValue, decoder) {\r\n return new Decoder(function (json) {\r\n return ok(withDefault(defaultValue, decoder.decode(json)));\r\n });\r\n };\r\n /**\r\n * Decoder that pulls a specific field out of a json structure, instead of\r\n * decoding and returning the full structure. The `paths` array describes the\r\n * object keys and array indices to traverse, so that values can be pulled out\r\n * of a nested structure.\r\n *\r\n * Example:\r\n * ```\r\n * const decoder = valueAt(['a', 'b', 0], string());\r\n *\r\n * decoder.run({a: {b: ['surprise!']}})\r\n * // => {ok: true, result: 'surprise!'}\r\n *\r\n * decoder.run({a: {x: 'cats'}})\r\n * // => {ok: false, error: {... at: 'input.a.b[0]' message: 'path does not exist'}}\r\n * ```\r\n *\r\n * Note that the `decoder` is ran on the value found at the last key in the\r\n * path, even if the last key is not found. This allows the `optional`\r\n * decoder to succeed when appropriate.\r\n * ```\r\n * const optionalDecoder = valueAt(['a', 'b', 'c'], optional(string()));\r\n *\r\n * optionalDecoder.run({a: {b: {c: 'surprise!'}}})\r\n * // => {ok: true, result: 'surprise!'}\r\n *\r\n * optionalDecoder.run({a: {b: 'cats'}})\r\n * // => {ok: false, error: {... at: 'input.a.b.c' message: 'expected an object, got \"cats\"'}\r\n *\r\n * optionalDecoder.run({a: {b: {z: 1}}})\r\n * // => {ok: true, result: undefined}\r\n * ```\r\n */\r\n Decoder.valueAt = function (paths, decoder) {\r\n return new Decoder(function (json) {\r\n var jsonAtPath = json;\r\n for (var i = 0; i < paths.length; i++) {\r\n if (jsonAtPath === undefined) {\r\n return err({\r\n at: printPath(paths.slice(0, i + 1)),\r\n message: 'path does not exist'\r\n });\r\n }\r\n else if (typeof paths[i] === 'string' && !isJsonObject(jsonAtPath)) {\r\n return err({\r\n at: printPath(paths.slice(0, i + 1)),\r\n message: expectedGot('an object', jsonAtPath)\r\n });\r\n }\r\n else if (typeof paths[i] === 'number' && !isJsonArray(jsonAtPath)) {\r\n return err({\r\n at: printPath(paths.slice(0, i + 1)),\r\n message: expectedGot('an array', jsonAtPath)\r\n });\r\n }\r\n else {\r\n jsonAtPath = jsonAtPath[paths[i]];\r\n }\r\n }\r\n return mapError(function (error) {\r\n return jsonAtPath === undefined\r\n ? { at: printPath(paths), message: 'path does not exist' }\r\n : prependAt(printPath(paths), error);\r\n }, decoder.decode(jsonAtPath));\r\n });\r\n };\r\n /**\r\n * Decoder that ignores the input json and always succeeds with `fixedValue`.\r\n */\r\n Decoder.succeed = function (fixedValue) {\r\n return new Decoder(function (json) { return ok(fixedValue); });\r\n };\r\n /**\r\n * Decoder that ignores the input json and always fails with `errorMessage`.\r\n */\r\n Decoder.fail = function (errorMessage) {\r\n return new Decoder(function (json) { return err({ message: errorMessage }); });\r\n };\r\n /**\r\n * Decoder that allows for validating recursive data structures. Unlike with\r\n * functions, decoders assigned to variables can't reference themselves\r\n * before they are fully defined. We can avoid prematurely referencing the\r\n * decoder by wrapping it in a function that won't be called until use, at\r\n * which point the decoder has been defined.\r\n *\r\n * Example:\r\n * ```\r\n * interface Comment {\r\n * msg: string;\r\n * replies: Comment[];\r\n * }\r\n *\r\n * const decoder: Decoder<Comment> = object({\r\n * msg: string(),\r\n * replies: lazy(() => array(decoder))\r\n * });\r\n * ```\r\n */\r\n Decoder.lazy = function (mkDecoder) {\r\n return new Decoder(function (json) { return mkDecoder().decode(json); });\r\n };\r\n return Decoder;\r\n}());\n\n/* tslint:disable:variable-name */\r\n/** See `Decoder.string` */\r\nvar string = Decoder.string;\r\n/** See `Decoder.number` */\r\nvar number = Decoder.number;\r\n/** See `Decoder.boolean` */\r\nvar boolean = Decoder.boolean;\r\n/** See `Decoder.anyJson` */\r\nvar anyJson = Decoder.anyJson;\r\n/** See `Decoder.unknownJson` */\r\nvar unknownJson = Decoder.unknownJson;\r\n/** See `Decoder.constant` */\r\nvar constant = Decoder.constant;\r\n/** See `Decoder.object` */\r\nvar object = Decoder.object;\r\n/** See `Decoder.array` */\r\nvar array = Decoder.array;\r\n/** See `Decoder.tuple` */\r\nvar tuple = Decoder.tuple;\r\n/** See `Decoder.dict` */\r\nvar dict = Decoder.dict;\r\n/** See `Decoder.optional` */\r\nvar optional = Decoder.optional;\r\n/** See `Decoder.oneOf` */\r\nvar oneOf = Decoder.oneOf;\r\n/** See `Decoder.union` */\r\nvar union = Decoder.union;\r\n/** See `Decoder.intersection` */\r\nvar intersection = Decoder.intersection;\r\n/** See `Decoder.withDefault` */\r\nvar withDefault$1 = Decoder.withDefault;\r\n/** See `Decoder.valueAt` */\r\nvar valueAt = Decoder.valueAt;\r\n/** See `Decoder.succeed` */\r\nvar succeed = Decoder.succeed;\r\n/** See `Decoder.fail` */\r\nvar fail = Decoder.fail;\r\n/** See `Decoder.lazy` */\r\nvar lazy = Decoder.lazy;\n\nexport { result as Result, Decoder, isDecoderError, string, number, boolean, anyJson, unknownJson, constant, object, array, tuple, dict, optional, oneOf, union, intersection, withDefault$1 as withDefault, valueAt, succeed, fail, lazy };\n//# sourceMappingURL=index.es5.js.map\n","\"use strict\";\nvar __assign = (this && this.__assign) || function () {\n __assign = Object.assign || function(t) {\n for (var s, i = 1, n = arguments.length; i < n; i++) {\n s = arguments[i];\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))\n t[p] = s[p];\n }\n return t;\n };\n return __assign.apply(this, arguments);\n};\nvar __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n var desc = Object.getOwnPropertyDescriptor(m, k);\n if (!desc || (\"get\" in desc ? !m.__esModule : desc.writable || desc.configurable)) {\n desc = { enumerable: true, get: function() { return m[k]; } };\n }\n Object.defineProperty(o, k2, desc);\n}) : (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n o[k2] = m[k];\n}));\nvar __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {\n Object.defineProperty(o, \"default\", { enumerable: true, value: v });\n}) : function(o, v) {\n o[\"default\"] = v;\n});\nvar __importStar = (this && this.__importStar) || (function () {\n var ownKeys = function(o) {\n ownKeys = Object.getOwnPropertyNames || function (o) {\n var ar = [];\n for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;\n return ar;\n };\n return ownKeys(o);\n };\n return function (mod) {\n if (mod && mod.__esModule) return mod;\n var result = {};\n if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== \"default\") __createBinding(result, mod, k[i]);\n __setModuleDefault(result, mod);\n return result;\n };\n})();\nvar __generator = (this && this.__generator) || function (thisArg, body) {\n var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g = Object.create((typeof Iterator === \"function\" ? Iterator : Object).prototype);\n return g.next = verb(0), g[\"throw\"] = verb(1), g[\"return\"] = verb(2), typeof Symbol === \"function\" && (g[Symbol.iterator] = function() { return this; }), g;\n function verb(n) { return function (v) { return step([n, v]); }; }\n function step(op) {\n if (f) throw new TypeError(\"Generator is already executing.\");\n while (g && (g = 0, op[0] && (_ = 0)), _) try {\n if (f = 1, y && (t = op[0] & 2 ? y[\"return\"] : op[0] ? y[\"throw\"] || ((t = y[\"return\"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;\n if (y = 0, t) op = [op[0] & 2, t.value];\n switch (op[0]) {\n case 0: case 1: t = op; break;\n case 4: _.label++; return { value: op[1], done: false };\n case 5: _.label++; y = op[1]; op = [0]; continue;\n case 7: op = _.ops.pop(); _.trys.pop(); continue;\n default:\n if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }\n if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }\n if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }\n if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }\n if (t[2]) _.ops.pop();\n _.trys.pop(); continue;\n }\n op = body.call(thisArg, _);\n } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }\n if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };\n }\n};\nvar __importDefault = (this && this.__importDefault) || function (mod) {\n return (mod && mod.__esModule) ? mod : { \"default\": mod };\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.Map = exports.emptyMap = exports.TextMap = exports.Optional = exports.ContractId = exports.Date = exports.List = exports.Party = exports.Time = exports.Text = exports.Decimal = exports.Numeric = exports.Int = exports.Bool = exports.Unit = exports.lookupTemplate = exports.templateIdWithPackageId = exports.registerTemplate = void 0;\nexports.assembleTemplate = assembleTemplate;\nexports.assembleInterface = assembleInterface;\nexports.memo = memo;\nexports.lazyMemo = lazyMemo;\n// Copyright (c) 2025 Digital Asset (Switzerland) GmbH and/or its affiliates. All rights reserved.\n// SPDX-License-Identifier: Apache-2.0\nvar jtv = __importStar(require(\"@mojotech/json-type-validation\"));\nvar lodash_1 = __importDefault(require(\"lodash\"));\nvar InterfaceBrand = Symbol();\nvar FromTemplateBrand = Symbol();\nfunction toInterfaceMixin() {\n return {\n toInterface: function (_, cid) {\n return cid;\n },\n unsafeFromInterface: function (_, cid) {\n return cid;\n },\n };\n}\n/**\n * @internal\n */\nfunction assembleTemplate(template) {\n var _interfaces = []; // eslint-disable-line @typescript-eslint/no-unused-vars\n for (var _i = 1 // eslint-disable-line @typescript-eslint/no-unused-vars\n ; _i < arguments.length // eslint-disable-line @typescript-eslint/no-unused-vars\n ; _i++ // eslint-disable-line @typescript-eslint/no-unused-vars\n ) {\n _interfaces[_i - 1] = arguments[_i]; // eslint-disable-line @typescript-eslint/no-unused-vars\n }\n return __assign(__assign({}, toInterfaceMixin()), template);\n}\n/**\n * @internal\n */\nfunction assembleInterface(templateId, decoderSource, choices) {\n return __assign({ templateId: templateId, sdkVersion: \"3.3.0-snapshot.20250528.13806.0.v3cd439fb\", \n // `Interface<I> &` is a phantom intersection\n decoder: lazyMemo(function () { return decoderSource().decoder; }), keyDecoder: jtv.succeed(undefined) }, choices);\n}\n/**\n * @internal\n */\nvar registeredTemplates = {};\n/**\n * @internal\n */\nvar registerTemplate = function (template, packageSpecifiers) {\n if (packageSpecifiers === void 0) { packageSpecifiers = []; }\n var aliases = packageSpecifiers.map((0, exports.templateIdWithPackageId)(template));\n new Set([template.templateId].concat(aliases)).forEach(function (templateId) {\n if (templateId in registeredTemplates) {\n console.warn(\"Trying to re-register template \".concat(templateId, \".\"));\n }\n else {\n registeredTemplates[templateId] = template;\n console.debug(\"Registered template \".concat(templateId, \".\"));\n }\n });\n};\nexports.registerTemplate = registerTemplate;\n/**\n * @internal\n */\nvar templateIdWithPackageId = function (t) {\n return function (pkgId) {\n return [pkgId].concat(t.templateId.split(\":\").slice(1)).join(\":\");\n };\n};\nexports.templateIdWithPackageId = templateIdWithPackageId;\n/**\n * @internal\n */\nvar lookupTemplate = function (templateId) {\n var template = registeredTemplates[templateId];\n if (template === undefined) {\n throw Error(\"Failed to look up template \".concat(templateId, \". Make sure your @daml/types version agrees with the used Daml SDK version.\"));\n }\n return template;\n};\nexports.lookupTemplate = lookupTemplate;\n/**\n * @internal Turn a thunk into a memoized version of itself. The memoized thunk\n * invokes the original thunk only on its first invocation and caches the result\n * for later uses. We use this to implement a version of `jtv.lazy` with\n * memoization.\n */\nfunction memo(thunk) {\n var memoized = function () {\n var cache = thunk();\n memoized = function () { return cache; };\n return cache;\n };\n // NOTE(MH): Since we change `memoized` when the resultung thunk is invoked\n // for the first time, we need to return it \"by reference\". Thus, we return\n // a closure which contains a reference to `memoized`.\n return function () { return memoized(); };\n}\n/**\n * @internal Variation of `jtv.lazy` which memoizes the computed decoder on its\n * first invocation.\n */\nfunction lazyMemo(mkDecoder) {\n return jtv.lazy(memo(mkDecoder));\n}\n/**\n * Companion object of the [[Unit]] type.\n */\nexports.Unit = {\n decoder: jtv.object({}),\n encode: function (t) { return t; },\n};\n/**\n * Companion object of the [[Bool]] type.\n */\nexports.Bool = {\n decoder: jtv.boolean(),\n encode: function (b) { return b; },\n};\n/**\n * Companion object of the [[Int]] type.\n */\nexports.Int = {\n decoder: jtv.string(),\n encode: function (i) { return i; },\n};\n/**\n * Companion function of the [[Numeric]] type.\n */\n// eslint-disable-next-line @typescript-eslint/no-unused-vars\nvar Numeric = function (_) { return ({\n decoder: jtv.string(),\n encode: function (n) { return n; },\n}); };\nexports.Numeric = Numeric;\n/**\n * Companion object of the [[Decimal]] type.\n */\nexports.Decimal = (0, exports.Numeric)(10);\n/**\n * Companion object of the [[Text]] type.\n */\nexports.Text = {\n decoder: jtv.string(),\n encode: function (t) { return t; },\n};\n/**\n * Companion object of the [[Time]] type.\n */\nexports.Time = {\n decoder: jtv.string(),\n encode: function (t) { return t; },\n};\n/**\n * Companion object of the [[Party]] type.\n */\nexports.Party = {\n decoder: jtv.string(),\n encode: function (p) { return p; },\n};\n/**\n * Companion object of the [[List]] type.\n */\nvar List = function (t) { return ({\n decoder: jtv.array(t.decoder),\n encode: function (l) { return l.map(function (element) { return t.encode(element); }); },\n}); };\nexports.List = List;\n/**\n * Companion object of the [[Date]] type.\n */\nexports.Date = {\n decoder: jtv.string(),\n encode: function (d) { return d; },\n};\n/**\n * Used to `brand` [[ContractId]].\n */\nvar ContractIdBrand = Symbol();\n/**\n * Companion object of the [[ContractId]] type.\n */\nvar ContractId = function (_t) { return ({\n decoder: jtv.string(),\n encode: function (c) { return c; },\n}); };\nexports.ContractId = ContractId;\n/**\n * This class does the actual work behind the [[Optional]] companion function. In addition to\n * implementing the [[Serializable]] interface it also stores the [[Serializable]] instance of the\n * payload of the [[Optional]] and uses it to provide a decoder for the [[OptionalInner]] type.\n *\n * @typeparam T The type of the optionally present value.\n */\nvar OptionalWorker = /** @class */ (function () {\n function OptionalWorker(payload) {\n if (payload instanceof OptionalWorker) {\n var payloadInnerDecoder = payload.innerDecoder;\n this.innerDecoder = jtv.oneOf(jtv.constant([]), jtv.tuple([payloadInnerDecoder]));\n this.encode = function (o) {\n if (o === null) {\n // Top-level enclosing Optional where the type argument is also\n // Optional and we represent None.\n return null;\n }\n else {\n // The current type is Optional<Optional<...>> and the current value\n // is Some x. Therefore the nested value is represented as [] for\n // x = None or as [y] for x = Some y. In both cases mapping the\n // encoder of the type parameter does the right thing.\n return o.map(function (nested) { return payload.encode(nested); });\n }\n };\n }\n else {\n // NOTE(MH): `T` is not of the form `Optional<U>` here and hence `null`\n // does not extend `T`. Thus, `OptionalInner<T> = T`.\n this.innerDecoder = payload.decoder;\n this.encode = function (o) {\n if (o === null) {\n // This branch is only reached if we are at the top-level and the\n // entire type is a non-nested Optional, i.e. Optional<U> where U is\n // not Optional. Recursive calls from the other branch would stop\n // before reaching this case, as nested None are empty lists and\n // never null.\n return null;\n }\n else {\n return payload.encode(o);\n }\n };\n }\n this.decoder = jtv\n .optional(jtv.oneOf(jtv.constant(null), this.innerDecoder))\n .map(function (x) { return (x === undefined ? null : x); });\n }\n return OptionalWorker;\n}());\n/**\n * Companion function of the [[Optional]] type.\n */\nvar Optional = function (t) {\n return new OptionalWorker(t);\n};\nexports.Optional = Optional;\n/**\n * Companion object of the [[TextMap]] type.\n */\nvar TextMap = function (t) { return ({\n decoder: jtv.dict(t.decoder),\n encode: function (tm) {\n var out = {};\n Object.keys(tm).forEach(function (k) {\n out[k] = t.encode(tm[k]);\n });\n return out;\n },\n}); };\nexports.TextMap = TextMap;\nfunction it(arr) {\n var i;\n return __generator(this, function (_a) {\n switch (_a.label) {\n case 0:\n i = 0;\n _a.label = 1;\n case 1:\n if (!(i < arr.length)) return [3 /*break*/, 4];\n return [4 /*yield*/, lodash_1.default.cloneDeep(arr[i])];\n case 2:\n _a.sent();\n _a.label = 3;\n case 3:\n i++;\n return [3 /*break*/, 1];\n case 4: return [2 /*return*/, undefined];\n }\n });\n}\n// This code assumes that the decoder is only ever used in decoding values\n// straight from the API responses, and said raw responses are never reused\n// afterwards. This should be enforced by this class not being exported and the\n// daml-ledger module not letting raw JSON responses escape without going\n// through this.\n//\n// Without that assumption, the constructor would need to deep-copy its kvs\n// argument.\nvar MapImpl = /** @class */ (function () {\n function MapImpl(kvs) {\n // sorting done so that generic object deep comparison would find equal\n // maps equal (as defined by jest's expect().toEqual())\n this._kvs = lodash_1.default.sortBy(kvs, function (kv) { return JSON.stringify(kv[0]); });\n this._keys = this._kvs.map(function (e) { return e[0]; });\n this._values = this._kvs.map(function (e) { return e[1]; });\n }\n MapImpl.prototype._idx = function (k) {\n return this._keys.findIndex(function (l) { return lodash_1.default.isEqual(k, l); });\n };\n MapImpl.prototype.has = function (k) {\n return this._idx(k) !== -1;\n };\n MapImpl.prototype.get = function (k) {\n return lodash_1.default.cloneDeep(this._values[this._idx(k)]);\n };\n MapImpl.prototype.set = function (k, v) {\n if (this.has(k)) {\n var cpy = this._kvs.slice();\n cpy[this._idx(k)] = lodash_1.default.cloneDeep([k, v]);\n return new MapImpl(cpy);\n }\n else {\n var head = lodash_1.default.cloneDeep([[k, v]]);\n return new MapImpl(head.concat(this._kvs));\n }\n };\n MapImpl.prototype.delete = function (k) {\n var i = this._idx(k);\n if (i !== -1) {\n return new MapImpl(this._kvs.slice(0, i).concat(this._kvs.slice(i + 1)));\n }\n else {\n return this;\n }\n };\n MapImpl.prototype.keys = function () {\n return it(this._keys);\n };\n MapImpl.prototype.values = function () {\n return it(this._values);\n };\n MapImpl.prototype.entries = function () {\n return it(this._kvs);\n };\n MapImpl.prototype.entriesArray = function () {\n return lodash_1.default.cloneDeep(this._kvs);\n };\n MapImpl.prototype.forEach = function (f, u) {\n var g = u ? f.bind(u) : f;\n for (var _i = 0, _a = this._kvs; _i < _a.length; _i++) {\n var _b = _a[_i], k = _b[0], v = _b[1];\n g(v, k, this);\n }\n };\n return MapImpl;\n}());\nvar emptyMap = function () { return new MapImpl([]); };\nexports.emptyMap = emptyMap;\n/**\n * Companion function of the [[GenMap]] type.\n */\nvar Map = function (kd, vd) { return ({\n decoder: jtv\n .array(jtv.tuple([kd.decoder, vd.decoder]))\n .map(function (kvs) { return new MapImpl(kvs); }),\n encode: function (m) {\n return m.entriesArray().map(function (e) { return [kd.encode(e[0]), vd.encode(e[1])]; });\n },\n}); };\nexports.Map = Map;\n//# sourceMappingURL=index.js.map","\"use strict\";\n\nvar conversions = {};\nmodule.exports = conversions;\n\nfunction sign(x) {\n return x < 0 ? -1 : 1;\n}\n\nfunction evenRound(x) {\n // Round x to the nearest integer, choosing the even integer if it lies halfway between two.\n if ((x % 1) === 0.5 && (x & 1) === 0) { // [even number].5; round down (i.e. floor)\n return Math.floor(x);\n } else {\n return Math.round(x);\n }\n}\n\nfunction createNumberConversion(bitLength, typeOpts) {\n if (!typeOpts.unsigned) {\n --bitLength;\n }\n const lowerBound = typeOpts.unsigned ? 0 : -Math.pow(2, bitLength);\n const upperBound = Math.pow(2, bitLength) - 1;\n\n const moduloVal = typeOpts.moduloBitLength ? Math.pow(2, typeOpts.moduloBitLength) : Math.pow(2, bitLength);\n const moduloBound = typeOpts.moduloBitLength ? Math.pow(2, typeOpts.moduloBitLength - 1) : Math.pow(2, bitLength - 1);\n\n return function(V, opts) {\n if (!opts) opts = {};\n\n let x = +V;\n\n if (opts.enforceRange) {\n if (!Number.isFinite(x)) {\n throw new TypeError(\"Argument is not a finite number\");\n }\n\n x = sign(x) * Math.floor(Math.abs(x));\n if (x < lowerBound || x > upperBound) {\n throw new TypeError(\"Argument is not in byte range\");\n }\n\n return x;\n }\n\n if (!isNaN(x) && opts.clamp) {\n x = evenRound(x);\n\n if (x < lowerBound) x = lowerBound;\n if (x > upperBound) x = upperBound;\n return x;\n }\n\n if (!Number.isFinite(x) || x === 0) {\n return 0;\n }\n\n x = sign(x) * Math.floor(Math.abs(x));\n x = x % moduloVal;\n\n if (!typeOpts.unsigned && x >= moduloBound) {\n return x - moduloVal;\n } else if (typeOpts.unsigned) {\n if (x < 0) {\n x += moduloVal;\n } else if (x === -0) { // don't return negative zero\n return 0;\n }\n }\n\n return x;\n }\n}\n\nconversions[\"void\"] = function () {\n return undefined;\n};\n\nconversions[\"boolean\"] = function (val) {\n return !!val;\n};\n\nconversions[\"byte\"] = createNumberConversion(8, { unsigned: false });\nconversions[\"octet\"] = createNumberConversion(8, { unsigned: true });\n\nconversions[\"short\"] = createNumberConversion(16, { unsigned: false });\nconversions[\"unsigned short\"] = createNumberConversion(16, { unsigned: true });\n\nconversions[\"long\"] = createNumberConversion(32, { unsigned: false });\nconversions[\"unsigned long\"] = createNumberConversion(32, { unsigned: true });\n\nconversions[\"long long\"] = createNumberConversion(32, { unsigned: false, moduloBitLength: 64 });\nconversions[\"unsigned long long\"] = createNumberConversion(32, { unsigned: true, moduloBitLength: 64 });\n\nconversions[\"double\"] = function (V) {\n const x = +V;\n\n if (!Number.isFinite(x)) {\n throw new TypeError(\"Argument is not a finite floating-point value\");\n }\n\n return x;\n};\n\nconversions[\"unrestricted double\"] = function (V) {\n const x = +V;\n\n if (isNaN(x)) {\n throw new TypeError(\"Argument is NaN\");\n }\n\n return x;\n};\n\n// not quite valid, but good enough for JS\nconversions[\"float\"] = conversions[\"double\"];\nconversions[\"unrestricted float\"] = conversions[\"unrestricted double\"];\n\nconversions[\"DOMString\"] = function (V, opts) {\n if (!opts) opts = {};\n\n if (opts.treatNullAsEmptyString && V === null) {\n return \"\";\n }\n\n return String(V);\n};\n\nconversions[\"ByteString\"] = function (V, opts) {\n const x = String(V);\n let c = undefined;\n for (let i = 0; (c = x.codePointAt(i)) !== undefined; ++i) {\n if (c > 255) {\n throw new TypeError(\"Argument is not a valid bytestring\");\n }\n }\n\n return x;\n};\n\nconversions[\"USVString\"] = function (V) {\n const S = String(V);\n const n = S.length;\n const U = [];\n for (let i = 0; i < n; ++i) {\n const c = S.charCodeAt(i);\n if (c < 0xD800 || c > 0xDFFF) {\n U.push(String.fromCodePoint(c));\n } else if (0xDC00 <= c && c <= 0xDFFF) {\n U.push(String.fromCodePoint(0xFFFD));\n } else {\n if (i === n - 1) {\n U.push(String.fromCodePoint(0xFFFD));\n } else {\n const d = S.charCodeAt(i + 1);\n if (0xDC00 <= d && d <= 0xDFFF) {\n const a = c & 0x3FF;\n const b = d & 0x3FF;\n U.push(String.fromCodePoint((2 << 15) + (2 << 9) * a + b));\n ++i;\n } else {\n U.push(String.fromCodePoint(0xFFFD));\n }\n }\n }\n }\n\n return U.join('');\n};\n\nconversions[\"Date\"] = function (V, opts) {\n if (!(V instanceof Date)) {\n throw new TypeError(\"Argument is not a Date object\");\n }\n if (isNaN(V)) {\n return undefined;\n }\n\n return V;\n};\n\nconversions[\"RegExp\"] = function (V, opts) {\n if (!(V instanceof RegExp)) {\n V = new RegExp(V);\n }\n\n return V;\n};\n","\"use strict\";\n\nmodule.exports.mixin = function mixin(target, source) {\n const keys = Object.getOwnPropertyNames(source);\n for (let i = 0; i < keys.length; ++i) {\n Object.defineProperty(target, keys[i], Object.getOwnPropertyDescriptor(source, keys[i]));\n }\n};\n\nmodule.exports.wrapperSymbol = Symbol(\"wrapper\");\nmodule.exports.implSymbol = Symbol(\"impl\");\n\nmodule.exports.wrapperForImpl = function (impl) {\n return impl[module.exports.wrapperSymbol];\n};\n\nmodule.exports.implForWrapper = function (wrapper) {\n return wrapper[module.exports.implSymbol];\n};\n\n","\"use strict\";\n\nvar punycode = require(\"punycode\");\nvar mappingTable = require(\"./lib/mappingTable.json\");\n\nvar PROCESSING_OPTIONS = {\n TRANSITIONAL: 0,\n NONTRANSITIONAL: 1\n};\n\nfunction normalize(str) { // fix bug in v8\n return str.split('\\u0000').map(function (s) { return s.normalize('NFC'); }).join('\\u0000');\n}\n\nfunction findStatus(val) {\n var start = 0;\n var end = mappingTable.length - 1;\n\n while (start <= end) {\n var mid = Math.floor((start + end) / 2);\n\n var target = mappingTable[mid];\n if (target[0][0] <= val && target[0][1] >= val) {\n return target;\n } else if (target[0][0] > val) {\n end = mid - 1;\n } else {\n start = mid + 1;\n }\n }\n\n return null;\n}\n\nvar regexAstralSymbols = /[\\uD800-\\uDBFF][\\uDC00-\\uDFFF]/g;\n\nfunction countSymbols(string) {\n return string\n // replace every surrogate pair with a BMP symbol\n .replace(regexAstralSymbols, '_')\n // then get the length\n .length;\n}\n\nfunction mapChars(domain_name, useSTD3, processing_option) {\n var hasError = false;\n var processed = \"\";\n\n var len = countSymbols(domain_name);\n for (var i = 0; i < len; ++i) {\n var codePoint = domain_name.codePointAt(i);\n var status = findStatus(codePoint);\n\n switch (status[1]) {\n case \"disallowed\":\n hasError = true;\n processed += String.fromCodePoint(codePoint);\n break;\n case \"ignored\":\n break;\n case \"mapped\":\n processed += String.fromCodePoint.apply(String, status[2]);\n break;\n case \"deviation\":\n if (processing_option === PROCESSING_OPTIONS.TRANSITIONAL) {\n processed += String.fromCodePoint.apply(String, status[2]);\n } else {\n processed += String.fromCodePoint(codePoint);\n }\n break;\n case \"valid\":\n processed += String.fromCodePoint(codePoint);\n break;\n case \"disallowed_STD3_mapped\":\n if (useSTD3) {\n hasError = true;\n processed += String.fromCodePoint(codePoint);\n } else {\n processed += String.fromCodePoint.apply(String, status[2]);\n }\n break;\n case \"disallowed_STD3_valid\":\n if (useSTD3) {\n hasError = true;\n }\n\n processed += String.fromCodePoint(codePoint);\n break;\n }\n }\n\n return {\n string: processed,\n error: hasError\n };\n}\n\nvar combiningMarksRegex = /[\\u0300-\\u036F\\u0483-\\u0489\\u0591-\\u05BD\\u05BF\\u05C1\\u05C2\\u05C4\\u05C5\\u05C7\\u0610-\\u061A\\u064B-\\u065F\\u0670\\u06D6-\\u06DC\\u06DF-\\u06E4\\u06E7\\u06E8\\u06EA-\\u06ED\\u0711\\u0730-\\u074A\\u07A6-\\u07B0\\u07EB-\\u07F3\\u0816-\\u0819\\u081B-\\u0823\\u0825-\\u0827\\u0829-\\u082D\\u0859-\\u085B\\u08E4-\\u0903\\u093A-\\u093C\\u093E-\\u094F\\u0951-\\u0957\\u0962\\u0963\\u0981-\\u0983\\u09BC\\u09BE-\\u09C4\\u09C7\\u09C8\\u09CB-\\u09CD\\u09D7\\u09E2\\u09E3\\u0A01-\\u0A03\\u0A3C\\u0A3E-\\u0A42\\u0A47\\u0A48\\u0A4B-\\u0A4D\\u0A51\\u0A70\\u0A71\\u0A75\\u0A81-\\u0A83\\u0ABC\\u0ABE-\\u0AC5\\u0AC7-\\u0AC9\\u0ACB-\\u0ACD\\u0AE2\\u0AE3\\u0B01-\\u0B03\\u0B3C\\u0B3E-\\u0B44\\u0B47\\u0B48\\u0B4B-\\u0B4D\\u0B56\\u0B57\\u0B62\\u0B63\\u0B82\\u0BBE-\\u0BC2\\u0BC6-\\u0BC8\\u0BCA-\\u0BCD\\u0BD7\\u0C00-\\u0C03\\u0C3E-\\u0C44\\u0C46-\\u0C48\\u0C4A-\\u0C4D\\u0C55\\u0C56\\u0C62\\u0C63\\u0C81-\\u0C83\\u0CBC\\u0CBE-\\u0CC4\\u0CC6-\\u0CC8\\u0CCA-\\u0CCD\\u0CD5\\u0CD6\\u0CE2\\u0CE3\\u0D01-\\u0D03\\u0D3E-\\u0D44\\u0D46-\\u0D48\\u0D4A-\\u0D4D\\u0D57\\u0D62\\u0D63\\u0D82\\u0D83\\u0DCA\\u0DCF-\\u0DD4\\u0DD6\\u0DD8-\\u0DDF\\u0DF2\\u0DF3\\u0E31\\u0E34-\\u0E3A\\u0E47-\\u0E4E\\u0EB1\\u0EB4-\\u0EB9\\u0EBB\\u0EBC\\u0EC8-\\u0ECD\\u0F18\\u0F19\\u0F35\\u0F37\\u0F39\\u0F3E\\u0F3F\\u0F71-\\u0F84\\u0F86\\u0F87\\u0F8D-\\u0F97\\u0F99-\\u0FBC\\u0FC6\\u102B-\\u103E\\u1056-\\u1059\\u105E-\\u1060\\u1062-\\u1064\\u1067-\\u106D\\u1071-\\u1074\\u1082-\\u108D\\u108F\\u109A-\\u109D\\u135D-\\u135F\\u1712-\\u1714\\u1732-\\u1734\\u1752\\u1753\\u1772\\u1773\\u17B4-\\u17D3\\u17DD\\u180B-\\u180D\\u18A9\\u1920-\\u192B\\u1930-\\u193B\\u19B0-\\u19C0\\u19C8\\u19C9\\u1A17-\\u1A1B\\u1A55-\\u1A5E\\u1A60-\\u1A7C\\u1A7F\\u1AB0-\\u1ABE\\u1B00-\\u1B04\\u1B34-\\u1B44\\u1B6B-\\u1B73\\u1B80-\\u1B82\\u1BA1-\\u1BAD\\u1BE6-\\u1BF3\\u1C24-\\u1C37\\u1CD0-\\u1CD2\\u1CD4-\\u1CE8\\u1CED\\u1CF2-\\u1CF4\\u1CF8\\u1CF9\\u1DC0-\\u1DF5\\u1DFC-\\u1DFF\\u20D0-\\u20F0\\u2CEF-\\u2CF1\\u2D7F\\u2DE0-\\u2DFF\\u302A-\\u302F\\u3099\\u309A\\uA66F-\\uA672\\uA674-\\uA67D\\uA69F\\uA6F0\\uA6F1\\uA802\\uA806\\uA80B\\uA823-\\uA827\\uA880\\uA881\\uA8B4-\\uA8C4\\uA8E0-\\uA8F1\\uA926-\\uA92D\\uA947-\\uA953\\uA980-\\uA983\\uA9B3-\\uA9C0\\uA9E5\\uAA29-\\uAA36\\uAA43\\uAA4C\\uAA4D\\uAA7B-\\uAA7D\\uAAB0\\uAAB2-\\uAAB4\\uAAB7\\uAAB8\\uAABE\\uAABF\\uAAC1\\uAAEB-\\uAAEF\\uAAF5\\uAAF6\\uABE3-\\uABEA\\uABEC\\uABED\\uFB1E\\uFE00-\\uFE0F\\uFE20-\\uFE2D]|\\uD800[\\uDDFD\\uDEE0\\uDF76-\\uDF7A]|\\uD802[\\uDE01-\\uDE03\\uDE05\\uDE06\\uDE0C-\\uDE0F\\uDE38-\\uDE3A\\uDE3F\\uDEE5\\uDEE6]|\\uD804[\\uDC00-\\uDC02\\uDC38-\\uDC46\\uDC7F-\\uDC82\\uDCB0-\\uDCBA\\uDD00-\\uDD02\\uDD27-\\uDD34\\uDD73\\uDD80-\\uDD82\\uDDB3-\\uDDC0\\uDE2C-\\uDE37\\uDEDF-\\uDEEA\\uDF01-\\uDF03\\uDF3C\\uDF3E-\\uDF44\\uDF47\\uDF48\\uDF4B-\\uDF4D\\uDF57\\uDF62\\uDF63\\uDF66-\\uDF6C\\uDF70-\\uDF74]|\\uD805[\\uDCB0-\\uDCC3\\uDDAF-\\uDDB5\\uDDB8-\\uDDC0\\uDE30-\\uDE40\\uDEAB-\\uDEB7]|\\uD81A[\\uDEF0-\\uDEF4\\uDF30-\\uDF36]|\\uD81B[\\uDF51-\\uDF7E\\uDF8F-\\uDF92]|\\uD82F[\\uDC9D\\uDC9E]|\\uD834[\\uDD65-\\uDD69\\uDD6D-\\uDD72\\uDD7B-\\uDD82\\uDD85-\\uDD8B\\uDDAA-\\uDDAD\\uDE42-\\uDE44]|\\uD83A[\\uDCD0-\\uDCD6]|\\uDB40[\\uDD00-\\uDDEF]/;\n\nfunction validateLabel(label, processing_option) {\n if (label.substr(0, 4) === \"xn--\") {\n label = punycode.toUnicode(label);\n processing_option = PROCESSING_OPTIONS.NONTRANSITIONAL;\n }\n\n var error = false;\n\n if (normalize(label) !== label ||\n (label[3] === \"-\" && label[4] === \"-\") ||\n label[0] === \"-\" || label[label.length - 1] === \"-\" ||\n label.indexOf(\".\") !== -1 ||\n label.search(combiningMarksRegex) === 0) {\n error = true;\n }\n\n var len = countSymbols(label);\n for (var i = 0; i < len; ++i) {\n var status = findStatus(label.codePointAt(i));\n if ((processing === PROCESSING_OPTIONS.TRANSITIONAL && status[1] !== \"valid\") ||\n (processing === PROCESSING_OPTIONS.NONTRANSITIONAL &&\n status[1] !== \"valid\" && status[1] !== \"deviation\")) {\n error = true;\n break;\n }\n }\n\n return {\n label: label,\n error: error\n };\n}\n\nfunction processing(domain_name, useSTD3, processing_option) {\n var result = mapChars(domain_name, useSTD3, processing_option);\n result.string = normalize(result.string);\n\n var labels = result.string.split(\".\");\n for (var i = 0; i < labels.length; ++i) {\n try {\n var validation = validateLabel(labels[i]);\n labels[i] = validation.label;\n result.error = result.error || validation.error;\n } catch(e) {\n result.error = true;\n }\n }\n\n return {\n string: labels.join(\".\"),\n error: result.error\n };\n}\n\nmodule.exports.toASCII = function(domain_name, useSTD3, processing_option, verifyDnsLength) {\n var result = processing(domain_name, useSTD3, processing_option);\n var labels = result.string.split(\".\");\n labels = labels.map(function(l) {\n try {\n return punycode.toASCII(l);\n } catch(e) {\n result.error = true;\n return l;\n }\n });\n\n if (verifyDnsLength) {\n var total = labels.slice(0, labels.length - 1).join(\".\").length;\n if (total.length > 253 || total.length === 0) {\n result.error = true;\n }\n\n for (var i=0; i < labels.length; ++i) {\n if (labels.length > 63 || labels.length === 0) {\n result.error = true;\n break;\n }\n }\n }\n\n if (result.error) return null;\n return labels.join(\".\");\n};\n\nmodule.exports.toUnicode = function(domain_name, useSTD3) {\n var result = processing(domain_name, useSTD3, PROCESSING_OPTIONS.NONTRANSITIONAL);\n\n return {\n domain: result.string,\n error: result.error\n };\n};\n\nmodule.exports.PROCESSING_OPTIONS = PROCESSING_OPTIONS;\n","\"use strict\";\r\nconst punycode = require(\"punycode\");\r\nconst tr46 = require(\"tr46\");\r\n\r\nconst specialSchemes = {\r\n ftp: 21,\r\n file: null,\r\n gopher: 70,\r\n http: 80,\r\n https: 443,\r\n ws: 80,\r\n wss: 443\r\n};\r\n\r\nconst failure = Symbol(\"failure\");\r\n\r\nfunction countSymbols(str) {\r\n return punycode.ucs2.decode(str).length;\r\n}\r\n\r\nfunction at(input, idx) {\r\n const c = input[idx];\r\n return isNaN(c) ? undefined : String.fromCodePoint(c);\r\n}\r\n\r\nfunction isASCIIDigit(c) {\r\n return c >= 0x30 && c <= 0x39;\r\n}\r\n\r\nfunction isASCIIAlpha(c) {\r\n return (c >= 0x41 && c <= 0x5A) || (c >= 0x61 && c <= 0x7A);\r\n}\r\n\r\nfunction isASCIIAlphanumeric(c) {\r\n return isASCIIAlpha(c) || isASCIIDigit(c);\r\n}\r\n\r\nfunction isASCIIHex(c) {\r\n return isASCIIDigit(c) || (c >= 0x41 && c <= 0x46) || (c >= 0x61 && c <= 0x66);\r\n}\r\n\r\nfunction isSingleDot(buffer) {\r\n return buffer === \".\" || buffer.toLowerCase() === \"%2e\";\r\n}\r\n\r\nfunction isDoubleDot(buffer) {\r\n buffer = buffer.toLowerCase();\r\n return buffer === \"..\" || buffer === \"%2e.\" || buffer === \".%2e\" || buffer === \"%2e%2e\";\r\n}\r\n\r\nfunction isWindowsDriveLetterCodePoints(cp1, cp2) {\r\n return isASCIIAlpha(cp1) && (cp2 === 58 || cp2 === 124);\r\n}\r\n\r\nfunction isWindowsDriveLetterString(string) {\r\n return string.length === 2 && isASCIIAlpha(string.codePointAt(0)) && (string[1] === \":\" || string[1] === \"|\");\r\n}\r\n\r\nfunction isNormalizedWindowsDriveLetterString(string) {\r\n return string.length === 2 && isASCIIAlpha(string.codePointAt(0)) && string[1] === \":\";\r\n}\r\n\r\nfunction containsForbiddenHostCodePoint(string) {\r\n return string.search(/\\u0000|\\u0009|\\u000A|\\u000D|\\u0020|#|%|\\/|:|\\?|@|\\[|\\\\|\\]/) !== -1;\r\n}\r\n\r\nfunction containsForbiddenHostCodePointExcludingPercent(string) {\r\n return string.search(/\\u0000|\\u0009|\\u000A|\\u000D|\\u0020|#|\\/|:|\\?|@|\\[|\\\\|\\]/) !== -1;\r\n}\r\n\r\nfunction isSpecialScheme(scheme) {\r\n return specialSchemes[scheme] !== undefined;\r\n}\r\n\r\nfunction isSpecial(url) {\r\n return isSpecialScheme(url.scheme);\r\n}\r\n\r\nfunction defaultPort(scheme) {\r\n return specialSchemes[scheme];\r\n}\r\n\r\nfunction percentEncode(c) {\r\n let hex = c.toString(16).toUpperCase();\r\n if (hex.length === 1) {\r\n hex = \"0\" + hex;\r\n }\r\n\r\n return \"%\" + hex;\r\n}\r\n\r\nfunction utf8PercentEncode(c) {\r\n const buf = new Buffer(c);\r\n\r\n let str = \"\";\r\n\r\n for (let i = 0; i < buf.length; ++i) {\r\n str += percentEncode(buf[i]);\r\n }\r\n\r\n return str;\r\n}\r\n\r\nfunction utf8PercentDecode(str) {\r\n const input = new Buffer(str);\r\n const output = [];\r\n for (let i = 0; i < input.length; ++i) {\r\n if (input[i] !== 37) {\r\n output.push(input[i]);\r\n } else if (input[i] === 37 && isASCIIHex(input[i + 1]) && isASCIIHex(input[i + 2])) {\r\n output.push(parseInt(input.slice(i + 1, i + 3).toString(), 16));\r\n i += 2;\r\n } else {\r\n output.push(input[i]);\r\n }\r\n }\r\n return new Buffer(output).toString();\r\n}\r\n\r\nfunction isC0ControlPercentEncode(c) {\r\n return c <= 0x1F || c > 0x7E;\r\n}\r\n\r\nconst extraPathPercentEncodeSet = new Set([32, 34, 35, 60, 62, 63, 96, 123, 125]);\r\nfunction isPathPercentEncode(c) {\r\n return isC0ControlPercentEncode(c) || extraPathPercentEncodeSet.has(c);\r\n}\r\n\r\nconst extraUserinfoPercentEncodeSet =\r\n new Set([47, 58, 59, 61, 64, 91, 92, 93, 94, 124]);\r\nfunction isUserinfoPercentEncode(c) {\r\n return isPathPercentEncode(c) || extraUserinfoPercentEncodeSet.has(c);\r\n}\r\n\r\nfunction percentEncodeChar(c, encodeSetPredicate) {\r\n const cStr = String.fromCodePoint(c);\r\n\r\n if (encodeSetPredicate(c)) {\r\n return utf8PercentEncode(cStr);\r\n }\r\n\r\n return cStr;\r\n}\r\n\r\nfunction parseIPv4Number(input) {\r\n let R = 10;\r\n\r\n if (input.length >= 2 && input.charAt(0) === \"0\" && input.charAt(1).toLowerCase() === \"x\") {\r\n input = input.substring(2);\r\n R = 16;\r\n } else if (input.length >= 2 && input.charAt(0) === \"0\") {\r\n input = input.substring(1);\r\n R = 8;\r\n }\r\n\r\n if (input === \"\") {\r\n return 0;\r\n }\r\n\r\n const regex = R === 10 ? /[^0-9]/ : (R === 16 ? /[^0-9A-Fa-f]/ : /[^0-7]/);\r\n if (regex.test(input)) {\r\n return failure;\r\n }\r\n\r\n return parseInt(input, R);\r\n}\r\n\r\nfunction parseIPv4(input) {\r\n const parts = input.split(\".\");\r\n if (parts[parts.length - 1] === \"\") {\r\n if (parts.length > 1) {\r\n parts.pop();\r\n }\r\n }\r\n\r\n if (parts.length > 4) {\r\n return input;\r\n }\r\n\r\n const numbers = [];\r\n for (const part of parts) {\r\n if (part === \"\") {\r\n return input;\r\n }\r\n const n = parseIPv4Number(part);\r\n if (n === failure) {\r\n return input;\r\n }\r\n\r\n numbers.push(n);\r\n }\r\n\r\n for (let i = 0; i < numbers.length - 1; ++i) {\r\n if (numbers[i] > 255) {\r\n return failure;\r\n }\r\n }\r\n if (numbers[numbers.length - 1] >= Math.pow(256, 5 - numbers.length)) {\r\n return failure;\r\n }\r\n\r\n let ipv4 = numbers.pop();\r\n let counter = 0;\r\n\r\n for (const n of numbers) {\r\n ipv4 += n * Math.pow(256, 3 - counter);\r\n ++counter;\r\n }\r\n\r\n return ipv4;\r\n}\r\n\r\nfunction serializeIPv4(address) {\r\n let output = \"\";\r\n let n = address;\r\n\r\n for (let i = 1; i <= 4; ++i) {\r\n output = String(n % 256) + output;\r\n if (i !== 4) {\r\n output = \".\" + output;\r\n }\r\n n = Math.floor(n / 256);\r\n }\r\n\r\n return output;\r\n}\r\n\r\nfunction parseIPv6(input) {\r\n const address = [0, 0, 0, 0, 0, 0, 0, 0];\r\n let pieceIndex = 0;\r\n let compress = null;\r\n let pointer = 0;\r\n\r\n input = punycode.ucs2.decode(input);\r\n\r\n if (input[pointer] === 58) {\r\n if (input[pointer + 1] !== 58) {\r\n return failure;\r\n }\r\n\r\n pointer += 2;\r\n ++pieceIndex;\r\n compress = pieceIndex;\r\n }\r\n\r\n while (pointer < input.length) {\r\n if (pieceIndex === 8) {\r\n return failure;\r\n }\r\n\r\n if (input[pointer] === 58) {\r\n if (compress !== null) {\r\n return failure;\r\n }\r\n ++pointer;\r\n ++pieceIndex;\r\n compress = pieceIndex;\r\n continue;\r\n }\r\n\r\n let value = 0;\r\n let length = 0;\r\n\r\n while (length < 4 && isASCIIHex(input[pointer])) {\r\n value = value * 0x10 + parseInt(at(input, pointer), 16);\r\n ++pointer;\r\n ++length;\r\n }\r\n\r\n if (input[pointer] === 46) {\r\n if (length === 0) {\r\n return failure;\r\n }\r\n\r\n pointer -= length;\r\n\r\n if (pieceIndex > 6) {\r\n return failure;\r\n }\r\n\r\n let numbersSeen = 0;\r\n\r\n while (input[pointer] !== undefined) {\r\n let ipv4Piece = null;\r\n\r\n if (numbersSeen > 0) {\r\n if (input[pointer] === 46 && numbersSeen < 4) {\r\n ++pointer;\r\n } else {\r\n return failure;\r\n }\r\n }\r\n\r\n if (!isASCIIDigit(input[pointer])) {\r\n return failure;\r\n }\r\n\r\n while (isASCIIDigit(input[pointer])) {\r\n const number = parseInt(at(input, pointer));\r\n if (ipv4Piece === null) {\r\n ipv4Piece = number;\r\n } else if (ipv4Piece === 0) {\r\n return failure;\r\n } else {\r\n ipv4Piece = ipv4Piece * 10 + number;\r\n }\r\n if (ipv4Piece > 255) {\r\n return failure;\r\n }\r\n ++pointer;\r\n }\r\n\r\n address[pieceIndex] = address[pieceIndex] * 0x100 + ipv4Piece;\r\n\r\n ++numbersSeen;\r\n\r\n if (numbersSeen === 2 || numbersSeen === 4) {\r\n ++pieceIndex;\r\n }\r\n }\r\n\r\n if (numbersSeen !== 4) {\r\n return failure;\r\n }\r\n\r\n break;\r\n } else if (input[pointer] === 58) {\r\n ++pointer;\r\n if (input[pointer] === undefined) {\r\n return failure;\r\n }\r\n } else if (input[pointer] !== undefined) {\r\n return failure;\r\n }\r\n\r\n address[pieceIndex] = value;\r\n ++pieceIndex;\r\n }\r\n\r\n if (compress !== null) {\r\n let swaps = pieceIndex - compress;\r\n pieceIndex = 7;\r\n while (pieceIndex !== 0 && swaps > 0) {\r\n const temp = address[compress + swaps - 1];\r\n address[compress + swaps - 1] = address[pieceIndex];\r\n address[pieceIndex] = temp;\r\n --pieceIndex;\r\n --swaps;\r\n }\r\n } else if (compress === null && pieceIndex !== 8) {\r\n return failure;\r\n }\r\n\r\n return address;\r\n}\r\n\r\nfunction serializeIPv6(address) {\r\n let output = \"\";\r\n const seqResult = findLongestZeroSequence(address);\r\n const compress = seqResult.idx;\r\n let ignore0 = false;\r\n\r\n for (let pieceIndex = 0; pieceIndex <= 7; ++pieceIndex) {\r\n if (ignore0 && address[pieceIndex] === 0) {\r\n continue;\r\n } else if (ignore0) {\r\n ignore0 = false;\r\n }\r\n\r\n if (compress === pieceIndex) {\r\n const separator = pieceIndex === 0 ? \"::\" : \":\";\r\n output += separator;\r\n ignore0 = true;\r\n continue;\r\n }\r\n\r\n output += address[pieceIndex].toString(16);\r\n\r\n if (pieceIndex !== 7) {\r\n output += \":\";\r\n }\r\n }\r\n\r\n return output;\r\n}\r\n\r\nfunction parseHost(input, isSpecialArg) {\r\n if (input[0] === \"[\") {\r\n if (input[input.length - 1] !== \"]\") {\r\n return failure;\r\n }\r\n\r\n return parseIPv6(input.substring(1, input.length - 1));\r\n }\r\n\r\n if (!isSpecialArg) {\r\n return parseOpaqueHost(input);\r\n }\r\n\r\n const domain = utf8PercentDecode(input);\r\n const asciiDomain = tr46.toASCII(domain, false, tr46.PROCESSING_OPTIONS.NONTRANSITIONAL, false);\r\n if (asciiDomain === null) {\r\n return failure;\r\n }\r\n\r\n if (containsForbiddenHostCodePoint(asciiDomain)) {\r\n return failure;\r\n }\r\n\r\n const ipv4Host = parseIPv4(asciiDomain);\r\n if (typeof ipv4Host === \"number\" || ipv4Host === failure) {\r\n return ipv4Host;\r\n }\r\n\r\n return asciiDomain;\r\n}\r\n\r\nfunction parseOpaqueHost(input) {\r\n if (containsForbiddenHostCodePointExcludingPercent(input)) {\r\n return failure;\r\n }\r\n\r\n let output = \"\";\r\n const decoded = punycode.ucs2.decode(input);\r\n for (let i = 0; i < decoded.length; ++i) {\r\n output += percentEncodeChar(decoded[i], isC0ControlPercentEncode);\r\n }\r\n return output;\r\n}\r\n\r\nfunction findLongestZeroSequence(arr) {\r\n let maxIdx = null;\r\n let maxLen = 1; // only find elements > 1\r\n let currStart = null;\r\n let currLen = 0;\r\n\r\n for (let i = 0; i < arr.length; ++i) {\r\n if (arr[i] !== 0) {\r\n if (currLen > maxLen) {\r\n maxIdx = currStart;\r\n maxLen = currLen;\r\n }\r\n\r\n currStart = null;\r\n currLen = 0;\r\n } else {\r\n if (currStart === null) {\r\n currStart = i;\r\n }\r\n ++currLen;\r\n }\r\n }\r\n\r\n // if trailing zeros\r\n if (currLen > maxLen) {\r\n maxIdx = currStart;\r\n maxLen = currLen;\r\n }\r\n\r\n return {\r\n idx: maxIdx,\r\n len: maxLen\r\n };\r\n}\r\n\r\nfunction serializeHost(host) {\r\n if (typeof host === \"number\") {\r\n return serializeIPv4(host);\r\n }\r\n\r\n // IPv6 serializer\r\n if (host instanceof Array) {\r\n return \"[\" + serializeIPv6(host) + \"]\";\r\n }\r\n\r\n return host;\r\n}\r\n\r\nfunction trimControlChars(url) {\r\n return url.replace(/^[\\u0000-\\u001F\\u0020]+|[\\u0000-\\u001F\\u0020]+$/g, \"\");\r\n}\r\n\r\nfunction trimTabAndNewline(url) {\r\n return url.replace(/\\u0009|\\u000A|\\u000D/g, \"\");\r\n}\r\n\r\nfunction shortenPath(url) {\r\n const path = url.path;\r\n if (path.length === 0) {\r\n return;\r\n }\r\n if (url.scheme === \"file\" && path.length === 1 && isNormalizedWindowsDriveLetter(path[0])) {\r\n return;\r\n }\r\n\r\n path.pop();\r\n}\r\n\r\nfunction includesCredentials(url) {\r\n return url.username !== \"\" || url.password !== \"\";\r\n}\r\n\r\nfunction cannotHaveAUsernamePasswordPort(url) {\r\n return url.host === null || url.host === \"\" || url.cannotBeABaseURL || url.scheme === \"file\";\r\n}\r\n\r\nfunction isNormalizedWindowsDriveLetter(string) {\r\n return /^[A-Za-z]:$/.test(string);\r\n}\r\n\r\nfunction URLStateMachine(input, base, encodingOverride, url, stateOverride) {\r\n this.pointer = 0;\r\n this.input = input;\r\n this.base = base || null;\r\n this.encodingOverride = encodingOverride || \"utf-8\";\r\n this.stateOverride = stateOverride;\r\n this.url = url;\r\n this.failure = false;\r\n this.parseError = false;\r\n\r\n if (!this.url) {\r\n this.url = {\r\n scheme: \"\",\r\n username: \"\",\r\n password: \"\",\r\n host: null,\r\n port: null,\r\n path: [],\r\n query: null,\r\n fragment: null,\r\n\r\n cannotBeABaseURL: false\r\n };\r\n\r\n const res = trimControlChars(this.input);\r\n if (res !== this.input) {\r\n this.parseError = true;\r\n }\r\n this.input = res;\r\n }\r\n\r\n const res = trimTabAndNewline(this.input);\r\n if (res !== this.input) {\r\n this.parseError = true;\r\n }\r\n this.input = res;\r\n\r\n this.state = stateOverride || \"scheme start\";\r\n\r\n this.buffer = \"\";\r\n this.atFlag = false;\r\n this.arrFlag = false;\r\n this.passwordTokenSeenFlag = false;\r\n\r\n this.input = punycode.ucs2.decode(this.input);\r\n\r\n for (; this.pointer <= this.input.length; ++this.pointer) {\r\n const c = this.input[this.pointer];\r\n const cStr = isNaN(c) ? undefined : String.fromCodePoint(c);\r\n\r\n // exec state machine\r\n const ret = this[\"parse \" + this.state](c, cStr);\r\n if (!ret) {\r\n break; // terminate algorithm\r\n } else if (ret === failure) {\r\n this.failure = true;\r\n break;\r\n }\r\n }\r\n}\r\n\r\nURLStateMachine.prototype[\"parse scheme start\"] = function parseSchemeStart(c, cStr) {\r\n if (isASCIIAlpha(c)) {\r\n this.buffer += cStr.toLowerCase();\r\n this.state = \"scheme\";\r\n } else if (!this.stateOverride) {\r\n this.state = \"no scheme\";\r\n --this.pointer;\r\n } else {\r\n this.parseError = true;\r\n return failure;\r\n }\r\n\r\n return true;\r\n};\r\n\r\nURLStateMachine.prototype[\"parse scheme\"] = function parseScheme(c, cStr) {\r\n if (isASCIIAlphanumeric(c) || c === 43 || c === 45 || c === 46) {\r\n this.buffer += cStr.toLowerCase();\r\n } else if (c === 58) {\r\n if (this.stateOverride) {\r\n if (isSpecial(this.url) && !isSpecialScheme(this.buffer)) {\r\n return false;\r\n }\r\n\r\n if (!isSpecial(this.url) && isSpecialScheme(this.buffer)) {\r\n return false;\r\n }\r\n\r\n if ((includesCredentials(this.url) || this.url.port !== null) && this.buffer === \"file\") {\r\n return false;\r\n }\r\n\r\n if (this.url.scheme === \"file\" && (this.url.host === \"\" || this.url.host === null)) {\r\n return false;\r\n }\r\n }\r\n this.url.scheme = this.buffer;\r\n this.buffer = \"\";\r\n if (this.stateOverride) {\r\n return false;\r\n }\r\n if (this.url.scheme === \"file\") {\r\n if (this.input[this.pointer + 1] !== 47 || this.input[this.pointer + 2] !== 47) {\r\n this.parseError = true;\r\n }\r\n this.state = \"file\";\r\n } else if (isSpecial(this.url) && this.base !== null && this.base.scheme === this.url.scheme) {\r\n this.state = \"special relative or authority\";\r\n } else if (isSpecial(this.url)) {\r\n this.state = \"special authority slashes\";\r\n } else if (this.input[this.pointer + 1] === 47) {\r\n this.state = \"path or authority\";\r\n ++this.pointer;\r\n } else {\r\n this.url.cannotBeABaseURL = true;\r\n this.url.path.push(\"\");\r\n this.state = \"cannot-be-a-base-URL path\";\r\n }\r\n } else if (!this.stateOverride) {\r\n this.buffer = \"\";\r\n this.state = \"no scheme\";\r\n this.pointer = -1;\r\n } else {\r\n this.parseError = true;\r\n return failure;\r\n }\r\n\r\n return true;\r\n};\r\n\r\nURLStateMachine.prototype[\"parse no scheme\"] = function parseNoScheme(c) {\r\n if (this.base === null || (this.base.cannotBeABaseURL && c !== 35)) {\r\n return failure;\r\n } else if (this.base.cannotBeABaseURL && c === 35) {\r\n this.url.scheme = this.base.scheme;\r\n this.url.path = this.base.path.slice();\r\n this.url.query = this.base.query;\r\n this.url.fragment = \"\";\r\n this.url.cannotBeABaseURL = true;\r\n this.state = \"fragment\";\r\n } else if (this.base.scheme === \"file\") {\r\n this.state = \"file\";\r\n --this.pointer;\r\n } else {\r\n this.state = \"relative\";\r\n --this.pointer;\r\n }\r\n\r\n return true;\r\n};\r\n\r\nURLStateMachine.prototype[\"parse special relative or authority\"] = function parseSpecialRelativeOrAuthority(c) {\r\n if (c === 47 && this.input[this.pointer + 1] === 47) {\r\n this.state = \"special authority ignore slashes\";\r\n ++this.pointer;\r\n } else {\r\n this.parseError = true;\r\n this.state = \"relative\";\r\n --this.pointer;\r\n }\r\n\r\n return true;\r\n};\r\n\r\nURLStateMachine.prototype[\"parse path or authority\"] = function parsePathOrAuthority(c) {\r\n if (c === 47) {\r\n this.state = \"authority\";\r\n } else {\r\n this.state = \"path\";\r\n --this.pointer;\r\n }\r\n\r\n return true;\r\n};\r\n\r\nURLStateMachine.prototype[\"parse relative\"] = function parseRelative(c) {\r\n this.url.scheme = this.base.scheme;\r\n if (isNaN(c)) {\r\n this.url.username = this.base.username;\r\n this.url.password = this.base.password;\r\n this.url.host = this.base.host;\r\n this.url.port = this.base.port;\r\n this.url.path = this.base.path.slice();\r\n this.url.query = this.base.query;\r\n } else if (c === 47) {\r\n this.state = \"relative slash\";\r\n } else if (c === 63) {\r\n this.url.username = this.base.username;\r\n this.url.password = this.base.password;\r\n this.url.host = this.base.host;\r\n this.url.port = this.base.port;\r\n this.url.path = this.base.path.slice();\r\n this.url.query = \"\";\r\n this.state = \"query\";\r\n } else if (c === 35) {\r\n this.url.username = this.base.username;\r\n this.url.password = this.base.password;\r\n this.url.host = this.base.host;\r\n this.url.port = this.base.port;\r\n this.url.path = this.base.path.slice();\r\n this.url.query = this.base.query;\r\n this.url.fragment = \"\";\r\n this.state = \"fragment\";\r\n } else if (isSpecial(this.url) && c === 92) {\r\n this.parseError = true;\r\n this.state = \"relative slash\";\r\n } else {\r\n this.url.username = this.base.username;\r\n this.url.password = this.base.password;\r\n this.url.host = this.base.host;\r\n this.url.port = this.base.port;\r\n this.url.path = this.base.path.slice(0, this.base.path.length - 1);\r\n\r\n this.state = \"path\";\r\n --this.pointer;\r\n }\r\n\r\n return true;\r\n};\r\n\r\nURLStateMachine.prototype[\"parse relative slash\"] = function parseRelativeSlash(c) {\r\n if (isSpecial(this.url) && (c === 47 || c === 92)) {\r\n if (c === 92) {\r\n this.parseError = true;\r\n }\r\n this.state = \"special authority ignore slashes\";\r\n } else if (c === 47) {\r\n this.state = \"authority\";\r\n } else {\r\n this.url.username = this.base.username;\r\n this.url.password = this.base.password;\r\n this.url.host = this.base.host;\r\n this.url.port = this.base.port;\r\n this.state = \"path\";\r\n --this.pointer;\r\n }\r\n\r\n return true;\r\n};\r\n\r\nURLStateMachine.prototype[\"parse special authority slashes\"] = function parseSpecialAuthoritySlashes(c) {\r\n if (c === 47 && this.input[this.pointer + 1] === 47) {\r\n this.state = \"special authority ignore slashes\";\r\n ++this.pointer;\r\n } else {\r\n this.parseError = true;\r\n this.state = \"special authority ignore slashes\";\r\n --this.pointer;\r\n }\r\n\r\n return true;\r\n};\r\n\r\nURLStateMachine.prototype[\"parse special authority ignore slashes\"] = function parseSpecialAuthorityIgnoreSlashes(c) {\r\n if (c !== 47 && c !== 92) {\r\n this.state = \"authority\";\r\n --this.pointer;\r\n } else {\r\n this.parseError = true;\r\n }\r\n\r\n return true;\r\n};\r\n\r\nURLStateMachine.prototype[\"parse authority\"] = function parseAuthority(c, cStr) {\r\n if (c === 64) {\r\n this.parseError = true;\r\n if (this.atFlag) {\r\n this.buffer = \"%40\" + this.buffer;\r\n }\r\n this.atFlag = true;\r\n\r\n // careful, this is based on buffer and has its own pointer (this.pointer != pointer) and inner chars\r\n const len = countSymbols(this.buffer);\r\n for (let pointer = 0; pointer < len; ++pointer) {\r\n const codePoint = this.buffer.codePointAt(pointer);\r\n\r\n if (codePoint === 58 && !this.passwordTokenSeenFlag) {\r\n this.passwordTokenSeenFlag = true;\r\n continue;\r\n }\r\n const encodedCodePoints = percentEncodeChar(codePoint, isUserinfoPercentEncode);\r\n if (this.passwordTokenSeenFlag) {\r\n this.url.password += encodedCodePoints;\r\n } else {\r\n this.url.username += encodedCodePoints;\r\n }\r\n }\r\n this.buffer = \"\";\r\n } else if (isNaN(c) || c === 47 || c === 63 || c === 35 ||\r\n (isSpecial(this.url) && c === 92)) {\r\n if (this.atFlag && this.buffer === \"\") {\r\n this.parseError = true;\r\n return failure;\r\n }\r\n this.pointer -= countSymbols(this.buffer) + 1;\r\n this.buffer = \"\";\r\n this.state = \"host\";\r\n } else {\r\n this.buffer += cStr;\r\n }\r\n\r\n return true;\r\n};\r\n\r\nURLStateMachine.prototype[\"parse hostname\"] =\r\nURLStateMachine.prototype[\"parse host\"] = function parseHostName(c, cStr) {\r\n if (this.stateOverride && this.url.scheme === \"file\") {\r\n --this.pointer;\r\n this.state = \"file host\";\r\n } else if (c === 58 && !this.arrFlag) {\r\n if (this.buffer === \"\") {\r\n this.parseError = true;\r\n return failure;\r\n }\r\n\r\n const host = parseHost(this.buffer, isSpecial(this.url));\r\n if (host === failure) {\r\n return failure;\r\n }\r\n\r\n this.url.host = host;\r\n this.buffer = \"\";\r\n this.state = \"port\";\r\n if (this.stateOverride === \"hostname\") {\r\n return false;\r\n }\r\n } else if (isNaN(c) || c === 47 || c === 63 || c === 35 ||\r\n (isSpecial(this.url) && c === 92)) {\r\n --this.pointer;\r\n if (isSpecial(this.url) && this.buffer === \"\") {\r\n this.parseError = true;\r\n return failure;\r\n } else if (this.stateOverride && this.buffer === \"\" &&\r\n (includesCredentials(this.url) || this.url.port !== null)) {\r\n this.parseError = true;\r\n return false;\r\n }\r\n\r\n const host = parseHost(this.buffer, isSpecial(this.url));\r\n if (host === failure) {\r\n return failure;\r\n }\r\n\r\n this.url.host = host;\r\n this.buffer = \"\";\r\n this.state = \"path start\";\r\n if (this.stateOverride) {\r\n return false;\r\n }\r\n } else {\r\n if (c === 91) {\r\n this.arrFlag = true;\r\n } else if (c === 93) {\r\n this.arrFlag = false;\r\n }\r\n this.buffer += cStr;\r\n }\r\n\r\n return true;\r\n};\r\n\r\nURLStateMachine.prototype[\"parse port\"] = function parsePort(c, cStr) {\r\n if (isASCIIDigit(c)) {\r\n this.buffer += cStr;\r\n } else if (isNaN(c) || c === 47 || c === 63 || c === 35 ||\r\n (isSpecial(this.url) && c === 92) ||\r\n this.stateOverride) {\r\n if (this.buffer !== \"\") {\r\n const port = parseInt(this.buffer);\r\n if (port > Math.pow(2, 16) - 1) {\r\n this.parseError = true;\r\n return failure;\r\n }\r\n this.url.port = port === defaultPort(this.url.scheme) ? null : port;\r\n this.buffer = \"\";\r\n }\r\n if (this.stateOverride) {\r\n return false;\r\n }\r\n this.state = \"path start\";\r\n --this.pointer;\r\n } else {\r\n this.parseError = true;\r\n return failure;\r\n }\r\n\r\n return true;\r\n};\r\n\r\nconst fileOtherwiseCodePoints = new Set([47, 92, 63, 35]);\r\n\r\nURLStateMachine.prototype[\"parse file\"] = function parseFile(c) {\r\n this.url.scheme = \"file\";\r\n\r\n if (c === 47 || c === 92) {\r\n if (c === 92) {\r\n this.parseError = true;\r\n }\r\n this.state = \"file slash\";\r\n } else if (this.base !== null && this.base.scheme === \"file\") {\r\n if (isNaN(c)) {\r\n this.url.host = this.base.host;\r\n this.url.path = this.base.path.slice();\r\n this.url.query = this.base.query;\r\n } else if (c === 63) {\r\n this.url.host = this.base.host;\r\n this.url.path = this.base.path.slice();\r\n this.url.query = \"\";\r\n this.state = \"query\";\r\n } else if (c === 35) {\r\n this.url.host = this.base.host;\r\n this.url.path = this.base.path.slice();\r\n this.url.query = this.base.query;\r\n this.url.fragment = \"\";\r\n this.state = \"fragment\";\r\n } else {\r\n if (this.input.length - this.pointer - 1 === 0 || // remaining consists of 0 code points\r\n !isWindowsDriveLetterCodePoints(c, this.input[this.pointer + 1]) ||\r\n (this.input.length - this.pointer - 1 >= 2 && // remaining has at least 2 code points\r\n !fileOtherwiseCodePoints.has(this.input[this.pointer + 2]))) {\r\n this.url.host = this.base.host;\r\n this.url.path = this.base.path.slice();\r\n shortenPath(this.url);\r\n } else {\r\n this.parseError = true;\r\n }\r\n\r\n this.state = \"path\";\r\n --this.pointer;\r\n }\r\n } else {\r\n this.state = \"path\";\r\n --this.pointer;\r\n }\r\n\r\n return true;\r\n};\r\n\r\nURLStateMachine.prototype[\"parse file slash\"] = function parseFileSlash(c) {\r\n if (c === 47 || c === 92) {\r\n if (c === 92) {\r\n this.parseError = true;\r\n }\r\n this.state = \"file host\";\r\n } else {\r\n if (this.base !== null && this.base.scheme === \"file\") {\r\n if (isNormalizedWindowsDriveLetterString(this.base.path[0])) {\r\n this.url.path.push(this.base.path[0]);\r\n } else {\r\n this.url.host = this.base.host;\r\n }\r\n }\r\n this.state = \"path\";\r\n --this.pointer;\r\n }\r\n\r\n return true;\r\n};\r\n\r\nURLStateMachine.prototype[\"parse file host\"] = function parseFileHost(c, cStr) {\r\n if (isNaN(c) || c === 47 || c === 92 || c === 63 || c === 35) {\r\n --this.pointer;\r\n if (!this.stateOverride && isWindowsDriveLetterString(this.buffer)) {\r\n this.parseError = true;\r\n this.state = \"path\";\r\n } else if (this.buffer === \"\") {\r\n this.url.host = \"\";\r\n if (this.stateOverride) {\r\n return false;\r\n }\r\n this.state = \"path start\";\r\n } else {\r\n let host = parseHost(this.buffer, isSpecial(this.url));\r\n if (host === failure) {\r\n return failure;\r\n }\r\n if (host === \"localhost\") {\r\n host = \"\";\r\n }\r\n this.url.host = host;\r\n\r\n if (this.stateOverride) {\r\n return false;\r\n }\r\n\r\n this.buffer = \"\";\r\n this.state = \"path start\";\r\n }\r\n } else {\r\n this.buffer += cStr;\r\n }\r\n\r\n return true;\r\n};\r\n\r\nURLStateMachine.prototype[\"parse path start\"] = function parsePathStart(c) {\r\n if (isSpecial(this.url)) {\r\n if (c === 92) {\r\n this.parseError = true;\r\n }\r\n this.state = \"path\";\r\n\r\n if (c !== 47 && c !== 92) {\r\n --this.pointer;\r\n }\r\n } else if (!this.stateOverride && c === 63) {\r\n this.url.query = \"\";\r\n this.state = \"query\";\r\n } else if (!this.stateOverride && c === 35) {\r\n this.url.fragment = \"\";\r\n this.state = \"fragment\";\r\n } else if (c !== undefined) {\r\n this.state = \"path\";\r\n if (c !== 47) {\r\n --this.pointer;\r\n }\r\n }\r\n\r\n return true;\r\n};\r\n\r\nURLStateMachine.prototype[\"parse path\"] = function parsePath(c) {\r\n if (isNaN(c) || c === 47 || (isSpecial(this.url) && c === 92) ||\r\n (!this.stateOverride && (c === 63 || c === 35))) {\r\n if (isSpecial(this.url) && c === 92) {\r\n this.parseError = true;\r\n }\r\n\r\n if (isDoubleDot(this.buffer)) {\r\n shortenPath(this.url);\r\n if (c !== 47 && !(isSpecial(this.url) && c === 92)) {\r\n this.url.path.push(\"\");\r\n }\r\n } else if (isSingleDot(this.buffer) && c !== 47 &&\r\n !(isSpecial(this.url) && c === 92)) {\r\n this.url.path.push(\"\");\r\n } else if (!isSingleDot(this.buffer)) {\r\n if (this.url.scheme === \"file\" && this.url.path.length === 0 && isWindowsDriveLetterString(this.buffer)) {\r\n if (this.url.host !== \"\" && this.url.host !== null) {\r\n this.parseError = true;\r\n this.url.host = \"\";\r\n }\r\n this.buffer = this.buffer[0] + \":\";\r\n }\r\n this.url.path.push(this.buffer);\r\n }\r\n this.buffer = \"\";\r\n if (this.url.scheme === \"file\" && (c === undefined || c === 63 || c === 35)) {\r\n while (this.url.path.length > 1 && this.url.path[0] === \"\") {\r\n this.parseError = true;\r\n this.url.path.shift();\r\n }\r\n }\r\n if (c === 63) {\r\n this.url.query = \"\";\r\n this.state = \"query\";\r\n }\r\n if (c === 35) {\r\n this.url.fragment = \"\";\r\n this.state = \"fragment\";\r\n }\r\n } else {\r\n // TODO: If c is not a URL code point and not \"%\", parse error.\r\n\r\n if (c === 37 &&\r\n (!isASCIIHex(this.input[this.pointer + 1]) ||\r\n !isASCIIHex(this.input[this.pointer + 2]))) {\r\n this.parseError = true;\r\n }\r\n\r\n this.buffer += percentEncodeChar(c, isPathPercentEncode);\r\n }\r\n\r\n return true;\r\n};\r\n\r\nURLStateMachine.prototype[\"parse cannot-be-a-base-URL path\"] = function parseCannotBeABaseURLPath(c) {\r\n if (c === 63) {\r\n this.url.query = \"\";\r\n this.state = \"query\";\r\n } else if (c === 35) {\r\n this.url.fragment = \"\";\r\n this.state = \"fragment\";\r\n } else {\r\n // TODO: Add: not a URL code point\r\n if (!isNaN(c) && c !== 37) {\r\n this.parseError = true;\r\n }\r\n\r\n if (c === 37 &&\r\n (!isASCIIHex(this.input[this.pointer + 1]) ||\r\n !isASCIIHex(this.input[this.pointer + 2]))) {\r\n this.parseError = true;\r\n }\r\n\r\n if (!isNaN(c)) {\r\n this.url.path[0] = this.url.path[0] + percentEncodeChar(c, isC0ControlPercentEncode);\r\n }\r\n }\r\n\r\n return true;\r\n};\r\n\r\nURLStateMachine.prototype[\"parse query\"] = function parseQuery(c, cStr) {\r\n if (isNaN(c) || (!this.stateOverride && c === 35)) {\r\n if (!isSpecial(this.url) || this.url.scheme === \"ws\" || this.url.scheme === \"wss\") {\r\n this.encodingOverride = \"utf-8\";\r\n }\r\n\r\n const buffer = new Buffer(this.buffer); // TODO: Use encoding override instead\r\n for (let i = 0; i < buffer.length; ++i) {\r\n if (buffer[i] < 0x21 || buffer[i] > 0x7E || buffer[i] === 0x22 || buffer[i] === 0x23 ||\r\n buffer[i] === 0x3C || buffer[i] === 0x3E) {\r\n this.url.query += percentEncode(buffer[i]);\r\n } else {\r\n this.url.query += String.fromCodePoint(buffer[i]);\r\n }\r\n }\r\n\r\n this.buffer = \"\";\r\n if (c === 35) {\r\n this.url.fragment = \"\";\r\n this.state = \"fragment\";\r\n }\r\n } else {\r\n // TODO: If c is not a URL code point and not \"%\", parse error.\r\n if (c === 37 &&\r\n (!isASCIIHex(this.input[this.pointer + 1]) ||\r\n !isASCIIHex(this.input[this.pointer + 2]))) {\r\n this.parseError = true;\r\n }\r\n\r\n this.buffer += cStr;\r\n }\r\n\r\n return true;\r\n};\r\n\r\nURLStateMachine.prototype[\"parse fragment\"] = function parseFragment(c) {\r\n if (isNaN(c)) { // do nothing\r\n } else if (c === 0x0) {\r\n this.parseError = true;\r\n } else {\r\n // TODO: If c is not a URL code point and not \"%\", parse error.\r\n if (c === 37 &&\r\n (!isASCIIHex(this.input[this.pointer + 1]) ||\r\n !isASCIIHex(this.input[this.pointer + 2]))) {\r\n this.parseError = true;\r\n }\r\n\r\n this.url.fragment += percentEncodeChar(c, isC0ControlPercentEncode);\r\n }\r\n\r\n return true;\r\n};\r\n\r\nfunction serializeURL(url, excludeFragment) {\r\n let output = url.scheme + \":\";\r\n if (url.host !== null) {\r\n output += \"//\";\r\n\r\n if (url.username !== \"\" || url.password !== \"\") {\r\n output += url.username;\r\n if (url.password !== \"\") {\r\n output += \":\" + url.password;\r\n }\r\n output += \"@\";\r\n }\r\n\r\n output += serializeHost(url.host);\r\n\r\n if (url.port !== null) {\r\n output += \":\" + url.port;\r\n }\r\n } else if (url.host === null && url.scheme === \"file\") {\r\n output += \"//\";\r\n }\r\n\r\n if (url.cannotBeABaseURL) {\r\n output += url.path[0];\r\n } else {\r\n for (const string of url.path) {\r\n output += \"/\" + string;\r\n }\r\n }\r\n\r\n if (url.query !== null) {\r\n output += \"?\" + url.query;\r\n }\r\n\r\n if (!excludeFragment && url.fragment !== null) {\r\n output += \"#\" + url.fragment;\r\n }\r\n\r\n return output;\r\n}\r\n\r\nfunction serializeOrigin(tuple) {\r\n let result = tuple.scheme + \"://\";\r\n result += serializeHost(tuple.host);\r\n\r\n if (tuple.port !== null) {\r\n result += \":\" + tuple.port;\r\n }\r\n\r\n return result;\r\n}\r\n\r\nmodule.exports.serializeURL = serializeURL;\r\n\r\nmodule.exports.serializeURLOrigin = function (url) {\r\n // https://url.spec.whatwg.org/#concept-url-origin\r\n switch (url.scheme) {\r\n case \"blob\":\r\n try {\r\n return module.exports.serializeURLOrigin(module.exports.parseURL(url.path[0]));\r\n } catch (e) {\r\n // serializing an opaque origin returns \"null\"\r\n return \"null\";\r\n }\r\n case \"ftp\":\r\n case \"gopher\":\r\n case \"http\":\r\n case \"https\":\r\n case \"ws\":\r\n case \"wss\":\r\n return serializeOrigin({\r\n scheme: url.scheme,\r\n host: url.host,\r\n port: url.port\r\n });\r\n case \"file\":\r\n // spec says \"exercise to the reader\", chrome says \"file://\"\r\n return \"file://\";\r\n default:\r\n // serializing an opaque origin returns \"null\"\r\n return \"null\";\r\n }\r\n};\r\n\r\nmodule.exports.basicURLParse = function (input, options) {\r\n if (options === undefined) {\r\n options = {};\r\n }\r\n\r\n const usm = new URLStateMachine(input, options.baseURL, options.encodingOverride, options.url, options.stateOverride);\r\n if (usm.failure) {\r\n return \"failure\";\r\n }\r\n\r\n return usm.url;\r\n};\r\n\r\nmodule.exports.setTheUsername = function (url, username) {\r\n url.username = \"\";\r\n const decoded = punycode.ucs2.decode(username);\r\n for (let i = 0; i < decoded.length; ++i) {\r\n url.username += percentEncodeChar(decoded[i], isUserinfoPercentEncode);\r\n }\r\n};\r\n\r\nmodule.exports.setThePassword = function (url, password) {\r\n url.password = \"\";\r\n const decoded = punycode.ucs2.decode(password);\r\n for (let i = 0; i < decoded.length; ++i) {\r\n url.password += percentEncodeChar(decoded[i], isUserinfoPercentEncode);\r\n }\r\n};\r\n\r\nmodule.exports.serializeHost = serializeHost;\r\n\r\nmodule.exports.cannotHaveAUsernamePasswordPort = cannotHaveAUsernamePasswordPort;\r\n\r\nmodule.exports.serializeInteger = function (integer) {\r\n return String(integer);\r\n};\r\n\r\nmodule.exports.parseURL = function (input, options) {\r\n if (options === undefined) {\r\n options = {};\r\n }\r\n\r\n // We don't handle blobs, so this just delegates:\r\n return module.exports.basicURLParse(input, { baseURL: options.baseURL, encodingOverride: options.encodingOverride });\r\n};\r\n","\"use strict\";\nconst usm = require(\"./url-state-machine\");\n\nexports.implementation = class URLImpl {\n constructor(constructorArgs) {\n const url = constructorArgs[0];\n const base = constructorArgs[1];\n\n let parsedBase = null;\n if (base !== undefined) {\n parsedBase = usm.basicURLParse(base);\n if (parsedBase === \"failure\") {\n throw new TypeError(\"Invalid base URL\");\n }\n }\n\n const parsedURL = usm.basicURLParse(url, { baseURL: parsedBase });\n if (parsedURL === \"failure\") {\n throw new TypeError(\"Invalid URL\");\n }\n\n this._url = parsedURL;\n\n // TODO: query stuff\n }\n\n get href() {\n return usm.serializeURL(this._url);\n }\n\n set href(v) {\n const parsedURL = usm.basicURLParse(v);\n if (parsedURL === \"failure\") {\n throw new TypeError(\"Invalid URL\");\n }\n\n this._url = parsedURL;\n }\n\n get origin() {\n return usm.serializeURLOrigin(this._url);\n }\n\n get protocol() {\n return this._url.scheme + \":\";\n }\n\n set protocol(v) {\n usm.basicURLParse(v + \":\", { url: this._url, stateOverride: \"scheme start\" });\n }\n\n get username() {\n return this._url.username;\n }\n\n set username(v) {\n if (usm.cannotHaveAUsernamePasswordPort(this._url)) {\n return;\n }\n\n usm.setTheUsername(this._url, v);\n }\n\n get password() {\n return this._url.password;\n }\n\n set password(v) {\n if (usm.cannotHaveAUsernamePasswordPort(this._url)) {\n return;\n }\n\n usm.setThePassword(this._url, v);\n }\n\n get host() {\n const url = this._url;\n\n if (url.host === null) {\n return \"\";\n }\n\n if (url.port === null) {\n return usm.serializeHost(url.host);\n }\n\n return usm.serializeHost(url.host) + \":\" + usm.serializeInteger(url.port);\n }\n\n set host(v) {\n if (this._url.cannotBeABaseURL) {\n return;\n }\n\n usm.basicURLParse(v, { url: this._url, stateOverride: \"host\" });\n }\n\n get hostname() {\n if (this._url.host === null) {\n return \"\";\n }\n\n return usm.serializeHost(this._url.host);\n }\n\n set hostname(v) {\n if (this._url.cannotBeABaseURL) {\n return;\n }\n\n usm.basicURLParse(v, { url: this._url, stateOverride: \"hostname\" });\n }\n\n get port() {\n if (this._url.port === null) {\n return \"\";\n }\n\n return usm.serializeInteger(this._url.port);\n }\n\n set port(v) {\n if (usm.cannotHaveAUsernamePasswordPort(this._url)) {\n return;\n }\n\n if (v === \"\") {\n this._url.port = null;\n } else {\n usm.basicURLParse(v, { url: this._url, stateOverride: \"port\" });\n }\n }\n\n get pathname() {\n if (this._url.cannotBeABaseURL) {\n return this._url.path[0];\n }\n\n if (this._url.path.length === 0) {\n return \"\";\n }\n\n return \"/\" + this._url.path.join(\"/\");\n }\n\n set pathname(v) {\n if (this._url.cannotBeABaseURL) {\n return;\n }\n\n this._url.path = [];\n usm.basicURLParse(v, { url: this._url, stateOverride: \"path start\" });\n }\n\n get search() {\n if (this._url.query === null || this._url.query === \"\") {\n return \"\";\n }\n\n return \"?\" + this._url.query;\n }\n\n set search(v) {\n // TODO: query stuff\n\n const url = this._url;\n\n if (v === \"\") {\n url.query = null;\n return;\n }\n\n const input = v[0] === \"?\" ? v.substring(1) : v;\n url.query = \"\";\n usm.basicURLParse(input, { url, stateOverride: \"query\" });\n }\n\n get hash() {\n if (this._url.fragment === null || this._url.fragment === \"\") {\n return \"\";\n }\n\n return \"#\" + this._url.fragment;\n }\n\n set hash(v) {\n if (v === \"\") {\n this._url.fragment = null;\n return;\n }\n\n const input = v[0] === \"#\" ? v.substring(1) : v;\n this._url.fragment = \"\";\n usm.basicURLParse(input, { url: this._url, stateOverride: \"fragment\" });\n }\n\n toJSON() {\n return this.href;\n }\n};\n","\"use strict\";\n\nconst conversions = require(\"webidl-conversions\");\nconst utils = require(\"./utils.js\");\nconst Impl = require(\".//URL-impl.js\");\n\nconst impl = utils.implSymbol;\n\nfunction URL(url) {\n if (!this || this[impl] || !(this instanceof URL)) {\n throw new TypeError(\"Failed to construct 'URL': Please use the 'new' operator, this DOM object constructor cannot be called as a function.\");\n }\n if (arguments.length < 1) {\n throw new TypeError(\"Failed to construct 'URL': 1 argument required, but only \" + arguments.length + \" present.\");\n }\n const args = [];\n for (let i = 0; i < arguments.length && i < 2; ++i) {\n args[i] = arguments[i];\n }\n args[0] = conversions[\"USVString\"](args[0]);\n if (args[1] !== undefined) {\n args[1] = conversions[\"USVString\"](args[1]);\n }\n\n module.exports.setup(this, args);\n}\n\nURL.prototype.toJSON = function toJSON() {\n if (!this || !module.exports.is(this)) {\n throw new TypeError(\"Illegal invocation\");\n }\n const args = [];\n for (let i = 0; i < arguments.length && i < 0; ++i) {\n args[i] = arguments[i];\n }\n return this[impl].toJSON.apply(this[impl], args);\n};\nObject.defineProperty(URL.prototype, \"href\", {\n get() {\n return this[impl].href;\n },\n set(V) {\n V = conversions[\"USVString\"](V);\n this[impl].href = V;\n },\n enumerable: true,\n configurable: true\n});\n\nURL.prototype.toString = function () {\n if (!this || !module.exports.is(this)) {\n throw new TypeError(\"Illegal invocation\");\n }\n return this.href;\n};\n\nObject.defineProperty(URL.prototype, \"origin\", {\n get() {\n return this[impl].origin;\n },\n enumerable: true,\n configurable: true\n});\n\nObject.defineProperty(URL.prototype, \"protocol\", {\n get() {\n return this[impl].protocol;\n },\n set(V) {\n V = conversions[\"USVString\"](V);\n this[impl].protocol = V;\n },\n enumerable: true,\n configurable: true\n});\n\nObject.defineProperty(URL.prototype, \"username\", {\n get() {\n return this[impl].username;\n },\n set(V) {\n V = conversions[\"USVString\"](V);\n this[impl].username = V;\n },\n enumerable: true,\n configurable: true\n});\n\nObject.defineProperty(URL.prototype, \"password\", {\n get() {\n return this[impl].password;\n },\n set(V) {\n V = conversions[\"USVString\"](V);\n this[impl].password = V;\n },\n enumerable: true,\n configurable: true\n});\n\nObject.defineProperty(URL.prototype, \"host\", {\n get() {\n return this[impl].host;\n },\n set(V) {\n V = conversions[\"USVString\"](V);\n this[impl].host = V;\n },\n enumerable: true,\n configurable: true\n});\n\nObject.defineProperty(URL.prototype, \"hostname\", {\n get() {\n return this[impl].hostname;\n },\n set(V) {\n V = conversions[\"USVString\"](V);\n this[impl].hostname = V;\n },\n enumerable: true,\n configurable: true\n});\n\nObject.defineProperty(URL.prototype, \"port\", {\n get() {\n return this[impl].port;\n },\n set(V) {\n V = conversions[\"USVString\"](V);\n this[impl].port = V;\n },\n enumerable: true,\n configurable: true\n});\n\nObject.defineProperty(URL.prototype, \"pathname\", {\n get() {\n return this[impl].pathname;\n },\n set(V) {\n V = conversions[\"USVString\"](V);\n this[impl].pathname = V;\n },\n enumerable: true,\n configurable: true\n});\n\nObject.defineProperty(URL.prototype, \"search\", {\n get() {\n return this[impl].search;\n },\n set(V) {\n V = conversions[\"USVString\"](V);\n this[impl].search = V;\n },\n enumerable: true,\n configurable: true\n});\n\nObject.defineProperty(URL.prototype, \"hash\", {\n get() {\n return this[impl].hash;\n },\n set(V) {\n V = conversions[\"USVString\"](V);\n this[impl].hash = V;\n },\n enumerable: true,\n configurable: true\n});\n\n\nmodule.exports = {\n is(obj) {\n return !!obj && obj[impl] instanceof Impl.implementation;\n },\n create(constructorArgs, privateData) {\n let obj = Object.create(URL.prototype);\n this.setup(obj, constructorArgs, privateData);\n return obj;\n },\n setup(obj, constructorArgs, privateData) {\n if (!privateData) privateData = {};\n privateData.wrapper = obj;\n\n obj[impl] = new Impl.implementation(constructorArgs, privateData);\n obj[impl][utils.wrapperSymbol] = obj;\n },\n interface: URL,\n expose: {\n Window: { URL: URL },\n Worker: { URL: URL }\n }\n};\n\n","\"use strict\";\n\nexports.URL = require(\"./URL\").interface;\nexports.serializeURL = require(\"./url-state-machine\").serializeURL;\nexports.serializeURLOrigin = require(\"./url-state-machine\").serializeURLOrigin;\nexports.basicURLParse = require(\"./url-state-machine\").basicURLParse;\nexports.setTheUsername = require(\"./url-state-machine\").setTheUsername;\nexports.setThePassword = require(\"./url-state-machine\").setThePassword;\nexports.serializeHost = require(\"./url-state-machine\").serializeHost;\nexports.serializeInteger = require(\"./url-state-machine\").serializeInteger;\nexports.parseURL = require(\"./url-state-machine\").parseURL;\n","import Stream from 'stream';\nimport http from 'http';\nimport Url from 'url';\nimport whatwgUrl from 'whatwg-url';\nimport https from 'https';\nimport zlib from 'zlib';\n\n// Based on https://github.com/tmpvar/jsdom/blob/aa85b2abf07766ff7bf5c1f6daafb3726f2f2db5/lib/jsdom/living/blob.js\n\n// fix for \"Readable\" isn't a named export issue\nconst Readable = Stream.Readable;\n\nconst BUFFER = Symbol('buffer');\nconst TYPE = Symbol('type');\n\nclass Blob {\n\tconstructor() {\n\t\tthis[TYPE] = '';\n\n\t\tconst blobParts = arguments[0];\n\t\tconst options = arguments[1];\n\n\t\tconst buffers = [];\n\t\tlet size = 0;\n\n\t\tif (blobParts) {\n\t\t\tconst a = blobParts;\n\t\t\tconst length = Number(a.length);\n\t\t\tfor (let i = 0; i < length; i++) {\n\t\t\t\tconst element = a[i];\n\t\t\t\tlet buffer;\n\t\t\t\tif (element instanceof Buffer) {\n\t\t\t\t\tbuffer = element;\n\t\t\t\t} else if (ArrayBuffer.isView(element)) {\n\t\t\t\t\tbuffer = Buffer.from(element.buffer, element.byteOffset, element.byteLength);\n\t\t\t\t} else if (element instanceof ArrayBuffer) {\n\t\t\t\t\tbuffer = Buffer.from(element);\n\t\t\t\t} else if (element instanceof Blob) {\n\t\t\t\t\tbuffer = element[BUFFER];\n\t\t\t\t} else {\n\t\t\t\t\tbuffer = Buffer.from(typeof element === 'string' ? element : String(element));\n\t\t\t\t}\n\t\t\t\tsize += buffer.length;\n\t\t\t\tbuffers.push(buffer);\n\t\t\t}\n\t\t}\n\n\t\tthis[BUFFER] = Buffer.concat(buffers);\n\n\t\tlet type = options && options.type !== undefined && String(options.type).toLowerCase();\n\t\tif (type && !/[^\\u0020-\\u007E]/.test(type)) {\n\t\t\tthis[TYPE] = type;\n\t\t}\n\t}\n\tget size() {\n\t\treturn this[BUFFER].length;\n\t}\n\tget type() {\n\t\treturn this[TYPE];\n\t}\n\ttext() {\n\t\treturn Promise.resolve(this[BUFFER].toString());\n\t}\n\tarrayBuffer() {\n\t\tconst buf = this[BUFFER];\n\t\tconst ab = buf.buffer.slice(buf.byteOffset, buf.byteOffset + buf.byteLength);\n\t\treturn Promise.resolve(ab);\n\t}\n\tstream() {\n\t\tconst readable = new Readable();\n\t\treadable._read = function () {};\n\t\treadable.push(this[BUFFER]);\n\t\treadable.push(null);\n\t\treturn readable;\n\t}\n\ttoString() {\n\t\treturn '[object Blob]';\n\t}\n\tslice() {\n\t\tconst size = this.size;\n\n\t\tconst start = arguments[0];\n\t\tconst end = arguments[1];\n\t\tlet relativeStart, relativeEnd;\n\t\tif (start === undefined) {\n\t\t\trelativeStart = 0;\n\t\t} else if (start < 0) {\n\t\t\trelativeStart = Math.max(size + start, 0);\n\t\t} else {\n\t\t\trelativeStart = Math.min(start, size);\n\t\t}\n\t\tif (end === undefined) {\n\t\t\trelativeEnd = size;\n\t\t} else if (end < 0) {\n\t\t\trelativeEnd = Math.max(size + end, 0);\n\t\t} else {\n\t\t\trelativeEnd = Math.min(end, size);\n\t\t}\n\t\tconst span = Math.max(relativeEnd - relativeStart, 0);\n\n\t\tconst buffer = this[BUFFER];\n\t\tconst slicedBuffer = buffer.slice(relativeStart, relativeStart + span);\n\t\tconst blob = new Blob([], { type: arguments[2] });\n\t\tblob[BUFFER] = slicedBuffer;\n\t\treturn blob;\n\t}\n}\n\nObject.defineProperties(Blob.prototype, {\n\tsize: { enumerable: true },\n\ttype: { enumerable: true },\n\tslice: { enumerable: true }\n});\n\nObject.defineProperty(Blob.prototype, Symbol.toStringTag, {\n\tvalue: 'Blob',\n\twritable: false,\n\tenumerable: false,\n\tconfigurable: true\n});\n\n/**\n * fetch-error.js\n *\n * FetchError interface for operational errors\n */\n\n/**\n * Create FetchError instance\n *\n * @param String message Error message for human\n * @param String type Error type for machine\n * @param String systemError For Node.js system error\n * @return FetchError\n */\nfunction FetchError(message, type, systemError) {\n Error.call(this, message);\n\n this.message = message;\n this.type = type;\n\n // when err.type is `system`, err.code contains system error code\n if (systemError) {\n this.code = this.errno = systemError.code;\n }\n\n // hide custom error implementation details from end-users\n Error.captureStackTrace(this, this.constructor);\n}\n\nFetchError.prototype = Object.create(Error.prototype);\nFetchError.prototype.constructor = FetchError;\nFetchError.prototype.name = 'FetchError';\n\nlet convert;\ntry {\n\tconvert = require('encoding').convert;\n} catch (e) {}\n\nconst INTERNALS = Symbol('Body internals');\n\n// fix an issue where \"PassThrough\" isn't a named export for node <10\nconst PassThrough = Stream.PassThrough;\n\n/**\n * Body mixin\n *\n * Ref: https://fetch.spec.whatwg.org/#body\n *\n * @param Stream body Readable stream\n * @param Object opts Response options\n * @return Void\n */\nfunction Body(body) {\n\tvar _this = this;\n\n\tvar _ref = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {},\n\t _ref$size = _ref.size;\n\n\tlet size = _ref$size === undefined ? 0 : _ref$size;\n\tvar _ref$timeout = _ref.timeout;\n\tlet timeout = _ref$timeout === undefined ? 0 : _ref$timeout;\n\n\tif (body == null) {\n\t\t// body is undefined or null\n\t\tbody = null;\n\t} else if (isURLSearchParams(body)) {\n\t\t// body is a URLSearchParams\n\t\tbody = Buffer.from(body.toString());\n\t} else if (isBlob(body)) ; else if (Buffer.isBuffer(body)) ; else if (Object.prototype.toString.call(body) === '[object ArrayBuffer]') {\n\t\t// body is ArrayBuffer\n\t\tbody = Buffer.from(body);\n\t} else if (ArrayBuffer.isView(body)) {\n\t\t// body is ArrayBufferView\n\t\tbody = Buffer.from(body.buffer, body.byteOffset, body.byteLength);\n\t} else if (body instanceof Stream) ; else {\n\t\t// none of the above\n\t\t// coerce to string then buffer\n\t\tbody = Buffer.from(String(body));\n\t}\n\tthis[INTERNALS] = {\n\t\tbody,\n\t\tdisturbed: false,\n\t\terror: null\n\t};\n\tthis.size = size;\n\tthis.timeout = timeout;\n\n\tif (body instanceof Stream) {\n\t\tbody.on('error', function (err) {\n\t\t\tconst error = err.name === 'AbortError' ? err : new FetchError(`Invalid response body while trying to fetch ${_this.url}: ${err.message}`, 'system', err);\n\t\t\t_this[INTERNALS].error = error;\n\t\t});\n\t}\n}\n\nBody.prototype = {\n\tget body() {\n\t\treturn this[INTERNALS].body;\n\t},\n\n\tget bodyUsed() {\n\t\treturn this[INTERNALS].disturbed;\n\t},\n\n\t/**\n * Decode response as ArrayBuffer\n *\n * @return Promise\n */\n\tarrayBuffer() {\n\t\treturn consumeBody.call(this).then(function (buf) {\n\t\t\treturn buf.buffer.slice(buf.byteOffset, buf.byteOffset + buf.byteLength);\n\t\t});\n\t},\n\n\t/**\n * Return raw response as Blob\n *\n * @return Promise\n */\n\tblob() {\n\t\tlet ct = this.headers && this.headers.get('content-type') || '';\n\t\treturn consumeBody.call(this).then(function (buf) {\n\t\t\treturn Object.assign(\n\t\t\t// Prevent copying\n\t\t\tnew Blob([], {\n\t\t\t\ttype: ct.toLowerCase()\n\t\t\t}), {\n\t\t\t\t[BUFFER]: buf\n\t\t\t});\n\t\t});\n\t},\n\n\t/**\n * Decode response as json\n *\n * @return Promise\n */\n\tjson() {\n\t\tvar _this2 = this;\n\n\t\treturn consumeBody.call(this).then(function (buffer) {\n\t\t\ttry {\n\t\t\t\treturn JSON.parse(buffer.toString());\n\t\t\t} catch (err) {\n\t\t\t\treturn Body.Promise.reject(new FetchError(`invalid json response body at ${_this2.url} reason: ${err.message}`, 'invalid-json'));\n\t\t\t}\n\t\t});\n\t},\n\n\t/**\n * Decode response as text\n *\n * @return Promise\n */\n\ttext() {\n\t\treturn consumeBody.call(this).then(function (buffer) {\n\t\t\treturn buffer.toString();\n\t\t});\n\t},\n\n\t/**\n * Decode response as buffer (non-spec api)\n *\n * @return Promise\n */\n\tbuffer() {\n\t\treturn consumeBody.call(this);\n\t},\n\n\t/**\n * Decode response as text, while automatically detecting the encoding and\n * trying to decode to UTF-8 (non-spec api)\n *\n * @return Promise\n */\n\ttextConverted() {\n\t\tvar _this3 = this;\n\n\t\treturn consumeBody.call(this).then(function (buffer) {\n\t\t\treturn convertBody(buffer, _this3.headers);\n\t\t});\n\t}\n};\n\n// In browsers, all properties are enumerable.\nObject.defineProperties(Body.prototype, {\n\tbody: { enumerable: true },\n\tbodyUsed: { enumerable: true },\n\tarrayBuffer: { enumerable: true },\n\tblob: { enumerable: true },\n\tjson: { enumerable: true },\n\ttext: { enumerable: true }\n});\n\nBody.mixIn = function (proto) {\n\tfor (const name of Object.getOwnPropertyNames(Body.prototype)) {\n\t\t// istanbul ignore else: future proof\n\t\tif (!(name in proto)) {\n\t\t\tconst desc = Object.getOwnPropertyDescriptor(Body.prototype, name);\n\t\t\tObject.defineProperty(proto, name, desc);\n\t\t}\n\t}\n};\n\n/**\n * Consume and convert an entire Body to a Buffer.\n *\n * Ref: https://fetch.spec.whatwg.org/#concept-body-consume-body\n *\n * @return Promise\n */\nfunction consumeBody() {\n\tvar _this4 = this;\n\n\tif (this[INTERNALS].disturbed) {\n\t\treturn Body.Promise.reject(new TypeError(`body used already for: ${this.url}`));\n\t}\n\n\tthis[INTERNALS].disturbed = true;\n\n\tif (this[INTERNALS].error) {\n\t\treturn Body.Promise.reject(this[INTERNALS].error);\n\t}\n\n\tlet body = this.body;\n\n\t// body is null\n\tif (body === null) {\n\t\treturn Body.Promise.resolve(Buffer.alloc(0));\n\t}\n\n\t// body is blob\n\tif (isBlob(body)) {\n\t\tbody = body.stream();\n\t}\n\n\t// body is buffer\n\tif (Buffer.isBuffer(body)) {\n\t\treturn Body.Promise.resolve(body);\n\t}\n\n\t// istanbul ignore if: should never happen\n\tif (!(body instanceof Stream)) {\n\t\treturn Body.Promise.resolve(Buffer.alloc(0));\n\t}\n\n\t// body is stream\n\t// get ready to actually consume the body\n\tlet accum = [];\n\tlet accumBytes = 0;\n\tlet abort = false;\n\n\treturn new Body.Promise(function (resolve, reject) {\n\t\tlet resTimeout;\n\n\t\t// allow timeout on slow response body\n\t\tif (_this4.timeout) {\n\t\t\tresTimeout = setTimeout(function () {\n\t\t\t\tabort = true;\n\t\t\t\treject(new FetchError(`Response timeout while trying to fetch ${_this4.url} (over ${_this4.timeout}ms)`, 'body-timeout'));\n\t\t\t}, _this4.timeout);\n\t\t}\n\n\t\t// handle stream errors\n\t\tbody.on('error', function (err) {\n\t\t\tif (err.name === 'AbortError') {\n\t\t\t\t// if the request was aborted, reject with this Error\n\t\t\t\tabort = true;\n\t\t\t\treject(err);\n\t\t\t} else {\n\t\t\t\t// other errors, such as incorrect content-encoding\n\t\t\t\treject(new FetchError(`Invalid response body while trying to fetch ${_this4.url}: ${err.message}`, 'system', err));\n\t\t\t}\n\t\t});\n\n\t\tbody.on('data', function (chunk) {\n\t\t\tif (abort || chunk === null) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tif (_this4.size && accumBytes + chunk.length > _this4.size) {\n\t\t\t\tabort = true;\n\t\t\t\treject(new FetchError(`content size at ${_this4.url} over limit: ${_this4.size}`, 'max-size'));\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\taccumBytes += chunk.length;\n\t\t\taccum.push(chunk);\n\t\t});\n\n\t\tbody.on('end', function () {\n\t\t\tif (abort) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tclearTimeout(resTimeout);\n\n\t\t\ttry {\n\t\t\t\tresolve(Buffer.concat(accum, accumBytes));\n\t\t\t} catch (err) {\n\t\t\t\t// handle streams that have accumulated too much data (issue #414)\n\t\t\t\treject(new FetchError(`Could not create Buffer from response body for ${_this4.url}: ${err.message}`, 'system', err));\n\t\t\t}\n\t\t});\n\t});\n}\n\n/**\n * Detect buffer encoding and convert to target encoding\n * ref: http://www.w3.org/TR/2011/WD-html5-20110113/parsing.html#determining-the-character-encoding\n *\n * @param Buffer buffer Incoming buffer\n * @param String encoding Target encoding\n * @return String\n */\nfunction convertBody(buffer, headers) {\n\tif (typeof convert !== 'function') {\n\t\tthrow new Error('The package `encoding` must be installed to use the textConverted() function');\n\t}\n\n\tconst ct = headers.get('content-type');\n\tlet charset = 'utf-8';\n\tlet res, str;\n\n\t// header\n\tif (ct) {\n\t\tres = /charset=([^;]*)/i.exec(ct);\n\t}\n\n\t// no charset in content type, peek at response body for at most 1024 bytes\n\tstr = buffer.slice(0, 1024).toString();\n\n\t// html5\n\tif (!res && str) {\n\t\tres = /<meta.+?charset=(['\"])(.+?)\\1/i.exec(str);\n\t}\n\n\t// html4\n\tif (!res && str) {\n\t\tres = /<meta[\\s]+?http-equiv=(['\"])content-type\\1[\\s]+?content=(['\"])(.+?)\\2/i.exec(str);\n\t\tif (!res) {\n\t\t\tres = /<meta[\\s]+?content=(['\"])(.+?)\\1[\\s]+?http-equiv=(['\"])content-type\\3/i.exec(str);\n\t\t\tif (res) {\n\t\t\t\tres.pop(); // drop last quote\n\t\t\t}\n\t\t}\n\n\t\tif (res) {\n\t\t\tres = /charset=(.*)/i.exec(res.pop());\n\t\t}\n\t}\n\n\t// xml\n\tif (!res && str) {\n\t\tres = /<\\?xml.+?encoding=(['\"])(.+?)\\1/i.exec(str);\n\t}\n\n\t// found charset\n\tif (res) {\n\t\tcharset = res.pop();\n\n\t\t// prevent decode issues when sites use incorrect encoding\n\t\t// ref: https://hsivonen.fi/encoding-menu/\n\t\tif (charset === 'gb2312' || charset === 'gbk') {\n\t\t\tcharset = 'gb18030';\n\t\t}\n\t}\n\n\t// turn raw buffers into a single utf-8 buffer\n\treturn convert(buffer, 'UTF-8', charset).toString();\n}\n\n/**\n * Detect a URLSearchParams object\n * ref: https://github.com/bitinn/node-fetch/issues/296#issuecomment-307598143\n *\n * @param Object obj Object to detect by type or brand\n * @return String\n */\nfunction isURLSearchParams(obj) {\n\t// Duck-typing as a necessary condition.\n\tif (typeof obj !== 'object' || typeof obj.append !== 'function' || typeof obj.delete !== 'function' || typeof obj.get !== 'function' || typeof obj.getAll !== 'function' || typeof obj.has !== 'function' || typeof obj.set !== 'function') {\n\t\treturn false;\n\t}\n\n\t// Brand-checking and more duck-typing as optional condition.\n\treturn obj.constructor.name === 'URLSearchParams' || Object.prototype.toString.call(obj) === '[object URLSearchParams]' || typeof obj.sort === 'function';\n}\n\n/**\n * Check if `obj` is a W3C `Blob` object (which `File` inherits from)\n * @param {*} obj\n * @return {boolean}\n */\nfunction isBlob(obj) {\n\treturn typeof obj === 'object' && typeof obj.arrayBuffer === 'function' && typeof obj.type === 'string' && typeof obj.stream === 'function' && typeof obj.constructor === 'function' && typeof obj.constructor.name === 'string' && /^(Blob|File)$/.test(obj.constructor.name) && /^(Blob|File)$/.test(obj[Symbol.toStringTag]);\n}\n\n/**\n * Clone body given Res/Req instance\n *\n * @param Mixed instance Response or Request instance\n * @return Mixed\n */\nfunction clone(instance) {\n\tlet p1, p2;\n\tlet body = instance.body;\n\n\t// don't allow cloning a used body\n\tif (instance.bodyUsed) {\n\t\tthrow new Error('cannot clone body after it is used');\n\t}\n\n\t// check that body is a stream and not form-data object\n\t// note: we can't clone the form-data object without having it as a dependency\n\tif (body instanceof Stream && typeof body.getBoundary !== 'function') {\n\t\t// tee instance body\n\t\tp1 = new PassThrough();\n\t\tp2 = new PassThrough();\n\t\tbody.pipe(p1);\n\t\tbody.pipe(p2);\n\t\t// set instance body to teed body and return the other teed body\n\t\tinstance[INTERNALS].body = p1;\n\t\tbody = p2;\n\t}\n\n\treturn body;\n}\n\n/**\n * Performs the operation \"extract a `Content-Type` value from |object|\" as\n * specified in the specification:\n * https://fetch.spec.whatwg.org/#concept-bodyinit-extract\n *\n * This function assumes that instance.body is present.\n *\n * @param Mixed instance Any options.body input\n */\nfunction extractContentType(body) {\n\tif (body === null) {\n\t\t// body is null\n\t\treturn null;\n\t} else if (typeof body === 'string') {\n\t\t// body is string\n\t\treturn 'text/plain;charset=UTF-8';\n\t} else if (isURLSearchParams(body)) {\n\t\t// body is a URLSearchParams\n\t\treturn 'application/x-www-form-urlencoded;charset=UTF-8';\n\t} else if (isBlob(body)) {\n\t\t// body is blob\n\t\treturn body.type || null;\n\t} else if (Buffer.isBuffer(body)) {\n\t\t// body is buffer\n\t\treturn null;\n\t} else if (Object.prototype.toString.call(body) === '[object ArrayBuffer]') {\n\t\t// body is ArrayBuffer\n\t\treturn null;\n\t} else if (ArrayBuffer.isView(body)) {\n\t\t// body is ArrayBufferView\n\t\treturn null;\n\t} else if (typeof body.getBoundary === 'function') {\n\t\t// detect form data input from form-data module\n\t\treturn `multipart/form-data;boundary=${body.getBoundary()}`;\n\t} else if (body instanceof Stream) {\n\t\t// body is stream\n\t\t// can't really do much about this\n\t\treturn null;\n\t} else {\n\t\t// Body constructor defaults other things to string\n\t\treturn 'text/plain;charset=UTF-8';\n\t}\n}\n\n/**\n * The Fetch Standard treats this as if \"total bytes\" is a property on the body.\n * For us, we have to explicitly get it with a function.\n *\n * ref: https://fetch.spec.whatwg.org/#concept-body-total-bytes\n *\n * @param Body instance Instance of Body\n * @return Number? Number of bytes, or null if not possible\n */\nfunction getTotalBytes(instance) {\n\tconst body = instance.body;\n\n\n\tif (body === null) {\n\t\t// body is null\n\t\treturn 0;\n\t} else if (isBlob(body)) {\n\t\treturn body.size;\n\t} else if (Buffer.isBuffer(body)) {\n\t\t// body is buffer\n\t\treturn body.length;\n\t} else if (body && typeof body.getLengthSync === 'function') {\n\t\t// detect form data input from form-data module\n\t\tif (body._lengthRetrievers && body._lengthRetrievers.length == 0 || // 1.x\n\t\tbody.hasKnownLength && body.hasKnownLength()) {\n\t\t\t// 2.x\n\t\t\treturn body.getLengthSync();\n\t\t}\n\t\treturn null;\n\t} else {\n\t\t// body is stream\n\t\treturn null;\n\t}\n}\n\n/**\n * Write a Body to a Node.js WritableStream (e.g. http.Request) object.\n *\n * @param Body instance Instance of Body\n * @return Void\n */\nfunction writeToStream(dest, instance) {\n\tconst body = instance.body;\n\n\n\tif (body === null) {\n\t\t// body is null\n\t\tdest.end();\n\t} else if (isBlob(body)) {\n\t\tbody.stream().pipe(dest);\n\t} else if (Buffer.isBuffer(body)) {\n\t\t// body is buffer\n\t\tdest.write(body);\n\t\tdest.end();\n\t} else {\n\t\t// body is stream\n\t\tbody.pipe(dest);\n\t}\n}\n\n// expose Promise\nBody.Promise = global.Promise;\n\n/**\n * headers.js\n *\n * Headers class offers convenient helpers\n */\n\nconst invalidTokenRegex = /[^\\^_`a-zA-Z\\-0-9!#$%&'*+.|~]/;\nconst invalidHeaderCharRegex = /[^\\t\\x20-\\x7e\\x80-\\xff]/;\n\nfunction validateName(name) {\n\tname = `${name}`;\n\tif (invalidTokenRegex.test(name) || name === '') {\n\t\tthrow new TypeError(`${name} is not a legal HTTP header name`);\n\t}\n}\n\nfunction validateValue(value) {\n\tvalue = `${value}`;\n\tif (invalidHeaderCharRegex.test(value)) {\n\t\tthrow new TypeError(`${value} is not a legal HTTP header value`);\n\t}\n}\n\n/**\n * Find the key in the map object given a header name.\n *\n * Returns undefined if not found.\n *\n * @param String name Header name\n * @return String|Undefined\n */\nfunction find(map, name) {\n\tname = name.toLowerCase();\n\tfor (const key in map) {\n\t\tif (key.toLowerCase() === name) {\n\t\t\treturn key;\n\t\t}\n\t}\n\treturn undefined;\n}\n\nconst MAP = Symbol('map');\nclass Headers {\n\t/**\n * Headers class\n *\n * @param Object headers Response headers\n * @return Void\n */\n\tconstructor() {\n\t\tlet init = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : undefined;\n\n\t\tthis[MAP] = Object.create(null);\n\n\t\tif (init instanceof Headers) {\n\t\t\tconst rawHeaders = init.raw();\n\t\t\tconst headerNames = Object.keys(rawHeaders);\n\n\t\t\tfor (const headerName of headerNames) {\n\t\t\t\tfor (const value of rawHeaders[headerName]) {\n\t\t\t\t\tthis.append(headerName, value);\n\t\t\t\t}\n\t\t\t}\n\n\t\t\treturn;\n\t\t}\n\n\t\t// We don't worry about converting prop to ByteString here as append()\n\t\t// will handle it.\n\t\tif (init == null) ; else if (typeof init === 'object') {\n\t\t\tconst method = init[Symbol.iterator];\n\t\t\tif (method != null) {\n\t\t\t\tif (typeof method !== 'function') {\n\t\t\t\t\tthrow new TypeError('Header pairs must be iterable');\n\t\t\t\t}\n\n\t\t\t\t// sequence<sequence<ByteString>>\n\t\t\t\t// Note: per spec we have to first exhaust the lists then process them\n\t\t\t\tconst pairs = [];\n\t\t\t\tfor (const pair of init) {\n\t\t\t\t\tif (typeof pair !== 'object' || typeof pair[Symbol.iterator] !== 'function') {\n\t\t\t\t\t\tthrow new TypeError('Each header pair must be iterable');\n\t\t\t\t\t}\n\t\t\t\t\tpairs.push(Array.from(pair));\n\t\t\t\t}\n\n\t\t\t\tfor (const pair of pairs) {\n\t\t\t\t\tif (pair.length !== 2) {\n\t\t\t\t\t\tthrow new TypeError('Each header pair must be a name/value tuple');\n\t\t\t\t\t}\n\t\t\t\t\tthis.append(pair[0], pair[1]);\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\t// record<ByteString, ByteString>\n\t\t\t\tfor (const key of Object.keys(init)) {\n\t\t\t\t\tconst value = init[key];\n\t\t\t\t\tthis.append(key, value);\n\t\t\t\t}\n\t\t\t}\n\t\t} else {\n\t\t\tthrow new TypeError('Provided initializer must be an object');\n\t\t}\n\t}\n\n\t/**\n * Return combined header value given name\n *\n * @param String name Header name\n * @return Mixed\n */\n\tget(name) {\n\t\tname = `${name}`;\n\t\tvalidateName(name);\n\t\tconst key = find(this[MAP], name);\n\t\tif (key === undefined) {\n\t\t\treturn null;\n\t\t}\n\n\t\treturn this[MAP][key].join(', ');\n\t}\n\n\t/**\n * Iterate over all headers\n *\n * @param Function callback Executed for each item with parameters (value, name, thisArg)\n * @param Boolean thisArg `this` context for callback function\n * @return Void\n */\n\tforEach(callback) {\n\t\tlet thisArg = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : undefined;\n\n\t\tlet pairs = getHeaders(this);\n\t\tlet i = 0;\n\t\twhile (i < pairs.length) {\n\t\t\tvar _pairs$i = pairs[i];\n\t\t\tconst name = _pairs$i[0],\n\t\t\t value = _pairs$i[1];\n\n\t\t\tcallback.call(thisArg, value, name, this);\n\t\t\tpairs = getHeaders(this);\n\t\t\ti++;\n\t\t}\n\t}\n\n\t/**\n * Overwrite header values given name\n *\n * @param String name Header name\n * @param String value Header value\n * @return Void\n */\n\tset(name, value) {\n\t\tname = `${name}`;\n\t\tvalue = `${value}`;\n\t\tvalidateName(name);\n\t\tvalidateValue(value);\n\t\tconst key = find(this[MAP], name);\n\t\tthis[MAP][key !== undefined ? key : name] = [value];\n\t}\n\n\t/**\n * Append a value onto existing header\n *\n * @param String name Header name\n * @param String value Header value\n * @return Void\n */\n\tappend(name, value) {\n\t\tname = `${name}`;\n\t\tvalue = `${value}`;\n\t\tvalidateName(name);\n\t\tvalidateValue(value);\n\t\tconst key = find(this[MAP], name);\n\t\tif (key !== undefined) {\n\t\t\tthis[MAP][key].push(value);\n\t\t} else {\n\t\t\tthis[MAP][name] = [value];\n\t\t}\n\t}\n\n\t/**\n * Check for header name existence\n *\n * @param String name Header name\n * @return Boolean\n */\n\thas(name) {\n\t\tname = `${name}`;\n\t\tvalidateName(name);\n\t\treturn find(this[MAP], name) !== undefined;\n\t}\n\n\t/**\n * Delete all header values given name\n *\n * @param String name Header name\n * @return Void\n */\n\tdelete(name) {\n\t\tname = `${name}`;\n\t\tvalidateName(name);\n\t\tconst key = find(this[MAP], name);\n\t\tif (key !== undefined) {\n\t\t\tdelete this[MAP][key];\n\t\t}\n\t}\n\n\t/**\n * Return raw headers (non-spec api)\n *\n * @return Object\n */\n\traw() {\n\t\treturn this[MAP];\n\t}\n\n\t/**\n * Get an iterator on keys.\n *\n * @return Iterator\n */\n\tkeys() {\n\t\treturn createHeadersIterator(this, 'key');\n\t}\n\n\t/**\n * Get an iterator on values.\n *\n * @return Iterator\n */\n\tvalues() {\n\t\treturn createHeadersIterator(this, 'value');\n\t}\n\n\t/**\n * Get an iterator on entries.\n *\n * This is the default iterator of the Headers object.\n *\n * @return Iterator\n */\n\t[Symbol.iterator]() {\n\t\treturn createHeadersIterator(this, 'key+value');\n\t}\n}\nHeaders.prototype.entries = Headers.prototype[Symbol.iterator];\n\nObject.defineProperty(Headers.prototype, Symbol.toStringTag, {\n\tvalue: 'Headers',\n\twritable: false,\n\tenumerable: false,\n\tconfigurable: true\n});\n\nObject.defineProperties(Headers.prototype, {\n\tget: { enumerable: true },\n\tforEach: { enumerable: true },\n\tset: { enumerable: true },\n\tappend: { enumerable: true },\n\thas: { enumerable: true },\n\tdelete: { enumerable: true },\n\tkeys: { enumerable: true },\n\tvalues: { enumerable: true },\n\tentries: { enumerable: true }\n});\n\nfunction getHeaders(headers) {\n\tlet kind = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 'key+value';\n\n\tconst keys = Object.keys(headers[MAP]).sort();\n\treturn keys.map(kind === 'key' ? function (k) {\n\t\treturn k.toLowerCase();\n\t} : kind === 'value' ? function (k) {\n\t\treturn headers[MAP][k].join(', ');\n\t} : function (k) {\n\t\treturn [k.toLowerCase(), headers[MAP][k].join(', ')];\n\t});\n}\n\nconst INTERNAL = Symbol('internal');\n\nfunction createHeadersIterator(target, kind) {\n\tconst iterator = Object.create(HeadersIteratorPrototype);\n\titerator[INTERNAL] = {\n\t\ttarget,\n\t\tkind,\n\t\tindex: 0\n\t};\n\treturn iterator;\n}\n\nconst HeadersIteratorPrototype = Object.setPrototypeOf({\n\tnext() {\n\t\t// istanbul ignore if\n\t\tif (!this || Object.getPrototypeOf(this) !== HeadersIteratorPrototype) {\n\t\t\tthrow new TypeError('Value of `this` is not a HeadersIterator');\n\t\t}\n\n\t\tvar _INTERNAL = this[INTERNAL];\n\t\tconst target = _INTERNAL.target,\n\t\t kind = _INTERNAL.kind,\n\t\t index = _INTERNAL.index;\n\n\t\tconst values = getHeaders(target, kind);\n\t\tconst len = values.length;\n\t\tif (index >= len) {\n\t\t\treturn {\n\t\t\t\tvalue: undefined,\n\t\t\t\tdone: true\n\t\t\t};\n\t\t}\n\n\t\tthis[INTERNAL].index = index + 1;\n\n\t\treturn {\n\t\t\tvalue: values[index],\n\t\t\tdone: false\n\t\t};\n\t}\n}, Object.getPrototypeOf(Object.getPrototypeOf([][Symbol.iterator]())));\n\nObject.defineProperty(HeadersIteratorPrototype, Symbol.toStringTag, {\n\tvalue: 'HeadersIterator',\n\twritable: false,\n\tenumerable: false,\n\tconfigurable: true\n});\n\n/**\n * Export the Headers object in a form that Node.js can consume.\n *\n * @param Headers headers\n * @return Object\n */\nfunction exportNodeCompatibleHeaders(headers) {\n\tconst obj = Object.assign({ __proto__: null }, headers[MAP]);\n\n\t// http.request() only supports string as Host header. This hack makes\n\t// specifying custom Host header possible.\n\tconst hostHeaderKey = find(headers[MAP], 'Host');\n\tif (hostHeaderKey !== undefined) {\n\t\tobj[hostHeaderKey] = obj[hostHeaderKey][0];\n\t}\n\n\treturn obj;\n}\n\n/**\n * Create a Headers object from an object of headers, ignoring those that do\n * not conform to HTTP grammar productions.\n *\n * @param Object obj Object of headers\n * @return Headers\n */\nfunction createHeadersLenient(obj) {\n\tconst headers = new Headers();\n\tfor (const name of Object.keys(obj)) {\n\t\tif (invalidTokenRegex.test(name)) {\n\t\t\tcontinue;\n\t\t}\n\t\tif (Array.isArray(obj[name])) {\n\t\t\tfor (const val of obj[name]) {\n\t\t\t\tif (invalidHeaderCharRegex.test(val)) {\n\t\t\t\t\tcontinue;\n\t\t\t\t}\n\t\t\t\tif (headers[MAP][name] === undefined) {\n\t\t\t\t\theaders[MAP][name] = [val];\n\t\t\t\t} else {\n\t\t\t\t\theaders[MAP][name].push(val);\n\t\t\t\t}\n\t\t\t}\n\t\t} else if (!invalidHeaderCharRegex.test(obj[name])) {\n\t\t\theaders[MAP][name] = [obj[name]];\n\t\t}\n\t}\n\treturn headers;\n}\n\nconst INTERNALS$1 = Symbol('Response internals');\n\n// fix an issue where \"STATUS_CODES\" aren't a named export for node <10\nconst STATUS_CODES = http.STATUS_CODES;\n\n/**\n * Response class\n *\n * @param Stream body Readable stream\n * @param Object opts Response options\n * @return Void\n */\nclass Response {\n\tconstructor() {\n\t\tlet body = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : null;\n\t\tlet opts = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n\n\t\tBody.call(this, body, opts);\n\n\t\tconst status = opts.status || 200;\n\t\tconst headers = new Headers(opts.headers);\n\n\t\tif (body != null && !headers.has('Content-Type')) {\n\t\t\tconst contentType = extractContentType(body);\n\t\t\tif (contentType) {\n\t\t\t\theaders.append('Content-Type', contentType);\n\t\t\t}\n\t\t}\n\n\t\tthis[INTERNALS$1] = {\n\t\t\turl: opts.url,\n\t\t\tstatus,\n\t\t\tstatusText: opts.statusText || STATUS_CODES[status],\n\t\t\theaders,\n\t\t\tcounter: opts.counter\n\t\t};\n\t}\n\n\tget url() {\n\t\treturn this[INTERNALS$1].url || '';\n\t}\n\n\tget status() {\n\t\treturn this[INTERNALS$1].status;\n\t}\n\n\t/**\n * Convenience property representing if the request ended normally\n */\n\tget ok() {\n\t\treturn this[INTERNALS$1].status >= 200 && this[INTERNALS$1].status < 300;\n\t}\n\n\tget redirected() {\n\t\treturn this[INTERNALS$1].counter > 0;\n\t}\n\n\tget statusText() {\n\t\treturn this[INTERNALS$1].statusText;\n\t}\n\n\tget headers() {\n\t\treturn this[INTERNALS$1].headers;\n\t}\n\n\t/**\n * Clone this response\n *\n * @return Response\n */\n\tclone() {\n\t\treturn new Response(clone(this), {\n\t\t\turl: this.url,\n\t\t\tstatus: this.status,\n\t\t\tstatusText: this.statusText,\n\t\t\theaders: this.headers,\n\t\t\tok: this.ok,\n\t\t\tredirected: this.redirected\n\t\t});\n\t}\n}\n\nBody.mixIn(Response.prototype);\n\nObject.defineProperties(Response.prototype, {\n\turl: { enumerable: true },\n\tstatus: { enumerable: true },\n\tok: { enumerable: true },\n\tredirected: { enumerable: true },\n\tstatusText: { enumerable: true },\n\theaders: { enumerable: true },\n\tclone: { enumerable: true }\n});\n\nObject.defineProperty(Response.prototype, Symbol.toStringTag, {\n\tvalue: 'Response',\n\twritable: false,\n\tenumerable: false,\n\tconfigurable: true\n});\n\nconst INTERNALS$2 = Symbol('Request internals');\nconst URL = Url.URL || whatwgUrl.URL;\n\n// fix an issue where \"format\", \"parse\" aren't a named export for node <10\nconst parse_url = Url.parse;\nconst format_url = Url.format;\n\n/**\n * Wrapper around `new URL` to handle arbitrary URLs\n *\n * @param {string} urlStr\n * @return {void}\n */\nfunction parseURL(urlStr) {\n\t/*\n \tCheck whether the URL is absolute or not\n \t\tScheme: https://tools.ietf.org/html/rfc3986#section-3.1\n \tAbsolute URL: https://tools.ietf.org/html/rfc3986#section-4.3\n */\n\tif (/^[a-zA-Z][a-zA-Z\\d+\\-.]*:/.exec(urlStr)) {\n\t\turlStr = new URL(urlStr).toString();\n\t}\n\n\t// Fallback to old implementation for arbitrary URLs\n\treturn parse_url(urlStr);\n}\n\nconst streamDestructionSupported = 'destroy' in Stream.Readable.prototype;\n\n/**\n * Check if a value is an instance of Request.\n *\n * @param Mixed input\n * @return Boolean\n */\nfunction isRequest(input) {\n\treturn typeof input === 'object' && typeof input[INTERNALS$2] === 'object';\n}\n\nfunction isAbortSignal(signal) {\n\tconst proto = signal && typeof signal === 'object' && Object.getPrototypeOf(signal);\n\treturn !!(proto && proto.constructor.name === 'AbortSignal');\n}\n\n/**\n * Request class\n *\n * @param Mixed input Url or Request instance\n * @param Object init Custom options\n * @return Void\n */\nclass Request {\n\tconstructor(input) {\n\t\tlet init = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n\n\t\tlet parsedURL;\n\n\t\t// normalize input\n\t\tif (!isRequest(input)) {\n\t\t\tif (input && input.href) {\n\t\t\t\t// in order to support Node.js' Url objects; though WHATWG's URL objects\n\t\t\t\t// will fall into this branch also (since their `toString()` will return\n\t\t\t\t// `href` property anyway)\n\t\t\t\tparsedURL = parseURL(input.href);\n\t\t\t} else {\n\t\t\t\t// coerce input to a string before attempting to parse\n\t\t\t\tparsedURL = parseURL(`${input}`);\n\t\t\t}\n\t\t\tinput = {};\n\t\t} else {\n\t\t\tparsedURL = parseURL(input.url);\n\t\t}\n\n\t\tlet method = init.method || input.method || 'GET';\n\t\tmethod = method.toUpperCase();\n\n\t\tif ((init.body != null || isRequest(input) && input.body !== null) && (method === 'GET' || method === 'HEAD')) {\n\t\t\tthrow new TypeError('Request with GET/HEAD method cannot have body');\n\t\t}\n\n\t\tlet inputBody = init.body != null ? init.body : isRequest(input) && input.body !== null ? clone(input) : null;\n\n\t\tBody.call(this, inputBody, {\n\t\t\ttimeout: init.timeout || input.timeout || 0,\n\t\t\tsize: init.size || input.size || 0\n\t\t});\n\n\t\tconst headers = new Headers(init.headers || input.headers || {});\n\n\t\tif (inputBody != null && !headers.has('Content-Type')) {\n\t\t\tconst contentType = extractContentType(inputBody);\n\t\t\tif (contentType) {\n\t\t\t\theaders.append('Content-Type', contentType);\n\t\t\t}\n\t\t}\n\n\t\tlet signal = isRequest(input) ? input.signal : null;\n\t\tif ('signal' in init) signal = init.signal;\n\n\t\tif (signal != null && !isAbortSignal(signal)) {\n\t\t\tthrow new TypeError('Expected signal to be an instanceof AbortSignal');\n\t\t}\n\n\t\tthis[INTERNALS$2] = {\n\t\t\tmethod,\n\t\t\tredirect: init.redirect || input.redirect || 'follow',\n\t\t\theaders,\n\t\t\tparsedURL,\n\t\t\tsignal\n\t\t};\n\n\t\t// node-fetch-only options\n\t\tthis.follow = init.follow !== undefined ? init.follow : input.follow !== undefined ? input.follow : 20;\n\t\tthis.compress = init.compress !== undefined ? init.compress : input.compress !== undefined ? input.compress : true;\n\t\tthis.counter = init.counter || input.counter || 0;\n\t\tthis.agent = init.agent || input.agent;\n\t}\n\n\tget method() {\n\t\treturn this[INTERNALS$2].method;\n\t}\n\n\tget url() {\n\t\treturn format_url(this[INTERNALS$2].parsedURL);\n\t}\n\n\tget headers() {\n\t\treturn this[INTERNALS$2].headers;\n\t}\n\n\tget redirect() {\n\t\treturn this[INTERNALS$2].redirect;\n\t}\n\n\tget signal() {\n\t\treturn this[INTERNALS$2].signal;\n\t}\n\n\t/**\n * Clone this request\n *\n * @return Request\n */\n\tclone() {\n\t\treturn new Request(this);\n\t}\n}\n\nBody.mixIn(Request.prototype);\n\nObject.defineProperty(Request.prototype, Symbol.toStringTag, {\n\tvalue: 'Request',\n\twritable: false,\n\tenumerable: false,\n\tconfigurable: true\n});\n\nObject.defineProperties(Request.prototype, {\n\tmethod: { enumerable: true },\n\turl: { enumerable: true },\n\theaders: { enumerable: true },\n\tredirect: { enumerable: true },\n\tclone: { enumerable: true },\n\tsignal: { enumerable: true }\n});\n\n/**\n * Convert a Request to Node.js http request options.\n *\n * @param Request A Request instance\n * @return Object The options object to be passed to http.request\n */\nfunction getNodeRequestOptions(request) {\n\tconst parsedURL = request[INTERNALS$2].parsedURL;\n\tconst headers = new Headers(request[INTERNALS$2].headers);\n\n\t// fetch step 1.3\n\tif (!headers.has('Accept')) {\n\t\theaders.set('Accept', '*/*');\n\t}\n\n\t// Basic fetch\n\tif (!parsedURL.protocol || !parsedURL.hostname) {\n\t\tthrow new TypeError('Only absolute URLs are supported');\n\t}\n\n\tif (!/^https?:$/.test(parsedURL.protocol)) {\n\t\tthrow new TypeError('Only HTTP(S) protocols are supported');\n\t}\n\n\tif (request.signal && request.body instanceof Stream.Readable && !streamDestructionSupported) {\n\t\tthrow new Error('Cancellation of streamed requests with AbortSignal is not supported in node < 8');\n\t}\n\n\t// HTTP-network-or-cache fetch steps 2.4-2.7\n\tlet contentLengthValue = null;\n\tif (request.body == null && /^(POST|PUT)$/i.test(request.method)) {\n\t\tcontentLengthValue = '0';\n\t}\n\tif (request.body != null) {\n\t\tconst totalBytes = getTotalBytes(request);\n\t\tif (typeof totalBytes === 'number') {\n\t\t\tcontentLengthValue = String(totalBytes);\n\t\t}\n\t}\n\tif (contentLengthValue) {\n\t\theaders.set('Content-Length', contentLengthValue);\n\t}\n\n\t// HTTP-network-or-cache fetch step 2.11\n\tif (!headers.has('User-Agent')) {\n\t\theaders.set('User-Agent', 'node-fetch/1.0 (+https://github.com/bitinn/node-fetch)');\n\t}\n\n\t// HTTP-network-or-cache fetch step 2.15\n\tif (request.compress && !headers.has('Accept-Encoding')) {\n\t\theaders.set('Accept-Encoding', 'gzip,deflate');\n\t}\n\n\tlet agent = request.agent;\n\tif (typeof agent === 'function') {\n\t\tagent = agent(parsedURL);\n\t}\n\n\t// HTTP-network fetch step 4.2\n\t// chunked encoding is handled by Node.js\n\n\treturn Object.assign({}, parsedURL, {\n\t\tmethod: request.method,\n\t\theaders: exportNodeCompatibleHeaders(headers),\n\t\tagent\n\t});\n}\n\n/**\n * abort-error.js\n *\n * AbortError interface for cancelled requests\n */\n\n/**\n * Create AbortError instance\n *\n * @param String message Error message for human\n * @return AbortError\n */\nfunction AbortError(message) {\n Error.call(this, message);\n\n this.type = 'aborted';\n this.message = message;\n\n // hide custom error implementation details from end-users\n Error.captureStackTrace(this, this.constructor);\n}\n\nAbortError.prototype = Object.create(Error.prototype);\nAbortError.prototype.constructor = AbortError;\nAbortError.prototype.name = 'AbortError';\n\nconst URL$1 = Url.URL || whatwgUrl.URL;\n\n// fix an issue where \"PassThrough\", \"resolve\" aren't a named export for node <10\nconst PassThrough$1 = Stream.PassThrough;\n\nconst isDomainOrSubdomain = function isDomainOrSubdomain(destination, original) {\n\tconst orig = new URL$1(original).hostname;\n\tconst dest = new URL$1(destination).hostname;\n\n\treturn orig === dest || orig[orig.length - dest.length - 1] === '.' && orig.endsWith(dest);\n};\n\n/**\n * isSameProtocol reports whether the two provided URLs use the same protocol.\n *\n * Both domains must already be in canonical form.\n * @param {string|URL} original\n * @param {string|URL} destination\n */\nconst isSameProtocol = function isSameProtocol(destination, original) {\n\tconst orig = new URL$1(original).protocol;\n\tconst dest = new URL$1(destination).protocol;\n\n\treturn orig === dest;\n};\n\n/**\n * Fetch function\n *\n * @param Mixed url Absolute url or Request instance\n * @param Object opts Fetch options\n * @return Promise\n */\nfunction fetch(url, opts) {\n\n\t// allow custom promise\n\tif (!fetch.Promise) {\n\t\tthrow new Error('native promise missing, set fetch.Promise to your favorite alternative');\n\t}\n\n\tBody.Promise = fetch.Promise;\n\n\t// wrap http.request into fetch\n\treturn new fetch.Promise(function (resolve, reject) {\n\t\t// build request object\n\t\tconst request = new Request(url, opts);\n\t\tconst options = getNodeRequestOptions(request);\n\n\t\tconst send = (options.protocol === 'https:' ? https : http).request;\n\t\tconst signal = request.signal;\n\n\t\tlet response = null;\n\n\t\tconst abort = function abort() {\n\t\t\tlet error = new AbortError('The user aborted a request.');\n\t\t\treject(error);\n\t\t\tif (request.body && request.body instanceof Stream.Readable) {\n\t\t\t\tdestroyStream(request.body, error);\n\t\t\t}\n\t\t\tif (!response || !response.body) return;\n\t\t\tresponse.body.emit('error', error);\n\t\t};\n\n\t\tif (signal && signal.aborted) {\n\t\t\tabort();\n\t\t\treturn;\n\t\t}\n\n\t\tconst abortAndFinalize = function abortAndFinalize() {\n\t\t\tabort();\n\t\t\tfinalize();\n\t\t};\n\n\t\t// send request\n\t\tconst req = send(options);\n\t\tlet reqTimeout;\n\n\t\tif (signal) {\n\t\t\tsignal.addEventListener('abort', abortAndFinalize);\n\t\t}\n\n\t\tfunction finalize() {\n\t\t\treq.abort();\n\t\t\tif (signal) signal.removeEventListener('abort', abortAndFinalize);\n\t\t\tclearTimeout(reqTimeout);\n\t\t}\n\n\t\tif (request.timeout) {\n\t\t\treq.once('socket', function (socket) {\n\t\t\t\treqTimeout = setTimeout(function () {\n\t\t\t\t\treject(new FetchError(`network timeout at: ${request.url}`, 'request-timeout'));\n\t\t\t\t\tfinalize();\n\t\t\t\t}, request.timeout);\n\t\t\t});\n\t\t}\n\n\t\treq.on('error', function (err) {\n\t\t\treject(new FetchError(`request to ${request.url} failed, reason: ${err.message}`, 'system', err));\n\n\t\t\tif (response && response.body) {\n\t\t\t\tdestroyStream(response.body, err);\n\t\t\t}\n\n\t\t\tfinalize();\n\t\t});\n\n\t\tfixResponseChunkedTransferBadEnding(req, function (err) {\n\t\t\tif (signal && signal.aborted) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tif (response && response.body) {\n\t\t\t\tdestroyStream(response.body, err);\n\t\t\t}\n\t\t});\n\n\t\t/* c8 ignore next 18 */\n\t\tif (parseInt(process.version.substring(1)) < 14) {\n\t\t\t// Before Node.js 14, pipeline() does not fully support async iterators and does not always\n\t\t\t// properly handle when the socket close/end events are out of order.\n\t\t\treq.on('socket', function (s) {\n\t\t\t\ts.addListener('close', function (hadError) {\n\t\t\t\t\t// if a data listener is still present we didn't end cleanly\n\t\t\t\t\tconst hasDataListener = s.listenerCount('data') > 0;\n\n\t\t\t\t\t// if end happened before close but the socket didn't emit an error, do it now\n\t\t\t\t\tif (response && hasDataListener && !hadError && !(signal && signal.aborted)) {\n\t\t\t\t\t\tconst err = new Error('Premature close');\n\t\t\t\t\t\terr.code = 'ERR_STREAM_PREMATURE_CLOSE';\n\t\t\t\t\t\tresponse.body.emit('error', err);\n\t\t\t\t\t}\n\t\t\t\t});\n\t\t\t});\n\t\t}\n\n\t\treq.on('response', function (res) {\n\t\t\tclearTimeout(reqTimeout);\n\n\t\t\tconst headers = createHeadersLenient(res.headers);\n\n\t\t\t// HTTP fetch step 5\n\t\t\tif (fetch.isRedirect(res.statusCode)) {\n\t\t\t\t// HTTP fetch step 5.2\n\t\t\t\tconst location = headers.get('Location');\n\n\t\t\t\t// HTTP fetch step 5.3\n\t\t\t\tlet locationURL = null;\n\t\t\t\ttry {\n\t\t\t\t\tlocationURL = location === null ? null : new URL$1(location, request.url).toString();\n\t\t\t\t} catch (err) {\n\t\t\t\t\t// error here can only be invalid URL in Location: header\n\t\t\t\t\t// do not throw when options.redirect == manual\n\t\t\t\t\t// let the user extract the errorneous redirect URL\n\t\t\t\t\tif (request.redirect !== 'manual') {\n\t\t\t\t\t\treject(new FetchError(`uri requested responds with an invalid redirect URL: ${location}`, 'invalid-redirect'));\n\t\t\t\t\t\tfinalize();\n\t\t\t\t\t\treturn;\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\t// HTTP fetch step 5.5\n\t\t\t\tswitch (request.redirect) {\n\t\t\t\t\tcase 'error':\n\t\t\t\t\t\treject(new FetchError(`uri requested responds with a redirect, redirect mode is set to error: ${request.url}`, 'no-redirect'));\n\t\t\t\t\t\tfinalize();\n\t\t\t\t\t\treturn;\n\t\t\t\t\tcase 'manual':\n\t\t\t\t\t\t// node-fetch-specific step: make manual redirect a bit easier to use by setting the Location header value to the resolved URL.\n\t\t\t\t\t\tif (locationURL !== null) {\n\t\t\t\t\t\t\t// handle corrupted header\n\t\t\t\t\t\t\ttry {\n\t\t\t\t\t\t\t\theaders.set('Location', locationURL);\n\t\t\t\t\t\t\t} catch (err) {\n\t\t\t\t\t\t\t\t// istanbul ignore next: nodejs server prevent invalid response headers, we can't test this through normal request\n\t\t\t\t\t\t\t\treject(err);\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase 'follow':\n\t\t\t\t\t\t// HTTP-redirect fetch step 2\n\t\t\t\t\t\tif (locationURL === null) {\n\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\t// HTTP-redirect fetch step 5\n\t\t\t\t\t\tif (request.counter >= request.follow) {\n\t\t\t\t\t\t\treject(new FetchError(`maximum redirect reached at: ${request.url}`, 'max-redirect'));\n\t\t\t\t\t\t\tfinalize();\n\t\t\t\t\t\t\treturn;\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\t// HTTP-redirect fetch step 6 (counter increment)\n\t\t\t\t\t\t// Create a new Request object.\n\t\t\t\t\t\tconst requestOpts = {\n\t\t\t\t\t\t\theaders: new Headers(request.headers),\n\t\t\t\t\t\t\tfollow: request.follow,\n\t\t\t\t\t\t\tcounter: request.counter + 1,\n\t\t\t\t\t\t\tagent: request.agent,\n\t\t\t\t\t\t\tcompress: request.compress,\n\t\t\t\t\t\t\tmethod: request.method,\n\t\t\t\t\t\t\tbody: request.body,\n\t\t\t\t\t\t\tsignal: request.signal,\n\t\t\t\t\t\t\ttimeout: request.timeout,\n\t\t\t\t\t\t\tsize: request.size\n\t\t\t\t\t\t};\n\n\t\t\t\t\t\tif (!isDomainOrSubdomain(request.url, locationURL) || !isSameProtocol(request.url, locationURL)) {\n\t\t\t\t\t\t\tfor (const name of ['authorization', 'www-authenticate', 'cookie', 'cookie2']) {\n\t\t\t\t\t\t\t\trequestOpts.headers.delete(name);\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\t// HTTP-redirect fetch step 9\n\t\t\t\t\t\tif (res.statusCode !== 303 && request.body && getTotalBytes(request) === null) {\n\t\t\t\t\t\t\treject(new FetchError('Cannot follow redirect with body being a readable stream', 'unsupported-redirect'));\n\t\t\t\t\t\t\tfinalize();\n\t\t\t\t\t\t\treturn;\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\t// HTTP-redirect fetch step 11\n\t\t\t\t\t\tif (res.statusCode === 303 || (res.statusCode === 301 || res.statusCode === 302) && request.method === 'POST') {\n\t\t\t\t\t\t\trequestOpts.method = 'GET';\n\t\t\t\t\t\t\trequestOpts.body = undefined;\n\t\t\t\t\t\t\trequestOpts.headers.delete('content-length');\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\t// HTTP-redirect fetch step 15\n\t\t\t\t\t\tresolve(fetch(new Request(locationURL, requestOpts)));\n\t\t\t\t\t\tfinalize();\n\t\t\t\t\t\treturn;\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t// prepare response\n\t\t\tres.once('end', function () {\n\t\t\t\tif (signal) signal.removeEventListener('abort', abortAndFinalize);\n\t\t\t});\n\t\t\tlet body = res.pipe(new PassThrough$1());\n\n\t\t\tconst response_options = {\n\t\t\t\turl: request.url,\n\t\t\t\tstatus: res.statusCode,\n\t\t\t\tstatusText: res.statusMessage,\n\t\t\t\theaders: headers,\n\t\t\t\tsize: request.size,\n\t\t\t\ttimeout: request.timeout,\n\t\t\t\tcounter: request.counter\n\t\t\t};\n\n\t\t\t// HTTP-network fetch step 12.1.1.3\n\t\t\tconst codings = headers.get('Content-Encoding');\n\n\t\t\t// HTTP-network fetch step 12.1.1.4: handle content codings\n\n\t\t\t// in following scenarios we ignore compression support\n\t\t\t// 1. compression support is disabled\n\t\t\t// 2. HEAD request\n\t\t\t// 3. no Content-Encoding header\n\t\t\t// 4. no content response (204)\n\t\t\t// 5. content not modified response (304)\n\t\t\tif (!request.compress || request.method === 'HEAD' || codings === null || res.statusCode === 204 || res.statusCode === 304) {\n\t\t\t\tresponse = new Response(body, response_options);\n\t\t\t\tresolve(response);\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\t// For Node v6+\n\t\t\t// Be less strict when decoding compressed responses, since sometimes\n\t\t\t// servers send slightly invalid responses that are still accepted\n\t\t\t// by common browsers.\n\t\t\t// Always using Z_SYNC_FLUSH is what cURL does.\n\t\t\tconst zlibOptions = {\n\t\t\t\tflush: zlib.Z_SYNC_FLUSH,\n\t\t\t\tfinishFlush: zlib.Z_SYNC_FLUSH\n\t\t\t};\n\n\t\t\t// for gzip\n\t\t\tif (codings == 'gzip' || codings == 'x-gzip') {\n\t\t\t\tbody = body.pipe(zlib.createGunzip(zlibOptions));\n\t\t\t\tresponse = new Response(body, response_options);\n\t\t\t\tresolve(response);\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\t// for deflate\n\t\t\tif (codings == 'deflate' || codings == 'x-deflate') {\n\t\t\t\t// handle the infamous raw deflate response from old servers\n\t\t\t\t// a hack for old IIS and Apache servers\n\t\t\t\tconst raw = res.pipe(new PassThrough$1());\n\t\t\t\traw.once('data', function (chunk) {\n\t\t\t\t\t// see http://stackoverflow.com/questions/37519828\n\t\t\t\t\tif ((chunk[0] & 0x0F) === 0x08) {\n\t\t\t\t\t\tbody = body.pipe(zlib.createInflate());\n\t\t\t\t\t} else {\n\t\t\t\t\t\tbody = body.pipe(zlib.createInflateRaw());\n\t\t\t\t\t}\n\t\t\t\t\tresponse = new Response(body, response_options);\n\t\t\t\t\tresolve(response);\n\t\t\t\t});\n\t\t\t\traw.on('end', function () {\n\t\t\t\t\t// some old IIS servers return zero-length OK deflate responses, so 'data' is never emitted.\n\t\t\t\t\tif (!response) {\n\t\t\t\t\t\tresponse = new Response(body, response_options);\n\t\t\t\t\t\tresolve(response);\n\t\t\t\t\t}\n\t\t\t\t});\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\t// for br\n\t\t\tif (codings == 'br' && typeof zlib.createBrotliDecompress === 'function') {\n\t\t\t\tbody = body.pipe(zlib.createBrotliDecompress());\n\t\t\t\tresponse = new Response(body, response_options);\n\t\t\t\tresolve(response);\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\t// otherwise, use response as-is\n\t\t\tresponse = new Response(body, response_options);\n\t\t\tresolve(response);\n\t\t});\n\n\t\twriteToStream(req, request);\n\t});\n}\nfunction fixResponseChunkedTransferBadEnding(request, errorCallback) {\n\tlet socket;\n\n\trequest.on('socket', function (s) {\n\t\tsocket = s;\n\t});\n\n\trequest.on('response', function (response) {\n\t\tconst headers = response.headers;\n\n\t\tif (headers['transfer-encoding'] === 'chunked' && !headers['content-length']) {\n\t\t\tresponse.once('close', function (hadError) {\n\t\t\t\t// tests for socket presence, as in some situations the\n\t\t\t\t// the 'socket' event is not triggered for the request\n\t\t\t\t// (happens in deno), avoids `TypeError`\n\t\t\t\t// if a data listener is still present we didn't end cleanly\n\t\t\t\tconst hasDataListener = socket && socket.listenerCount('data') > 0;\n\n\t\t\t\tif (hasDataListener && !hadError) {\n\t\t\t\t\tconst err = new Error('Premature close');\n\t\t\t\t\terr.code = 'ERR_STREAM_PREMATURE_CLOSE';\n\t\t\t\t\terrorCallback(err);\n\t\t\t\t}\n\t\t\t});\n\t\t}\n\t});\n}\n\nfunction destroyStream(stream, err) {\n\tif (stream.destroy) {\n\t\tstream.destroy(err);\n\t} else {\n\t\t// node < 8\n\t\tstream.emit('error', err);\n\t\tstream.end();\n\t}\n}\n\n/**\n * Redirect code matching\n *\n * @param Number code Status code\n * @return Boolean\n */\nfetch.isRedirect = function (code) {\n\treturn code === 301 || code === 302 || code === 303 || code === 307 || code === 308;\n};\n\n// expose Promise\nfetch.Promise = global.Promise;\n\nexport default fetch;\nexport { Headers, Request, Response, FetchError, AbortError };\n","const nodeFetch = require('node-fetch')\nconst realFetch = nodeFetch.default || nodeFetch\n\nconst fetch = function (url, options) {\n // Support schemaless URIs on the server for parity with the browser.\n // Ex: //github.com/ -> https://github.com/\n if (/^\\/\\//.test(url)) {\n url = 'https:' + url\n }\n return realFetch.call(this, url, options)\n}\n\nfetch.ponyfill = true\n\nmodule.exports = exports = fetch\nexports.fetch = fetch\nexports.Headers = nodeFetch.Headers\nexports.Request = nodeFetch.Request\nexports.Response = nodeFetch.Response\n\n// Needed for TypeScript consumers without esModuleInterop.\nexports.default = fetch\n","'use strict';\n\nmodule.exports = {\n BINARY_TYPES: ['nodebuffer', 'arraybuffer', 'fragments'],\n GUID: '258EAFA5-E914-47DA-95CA-C5AB0DC85B11',\n kStatusCode: Symbol('status-code'),\n kWebSocket: Symbol('websocket'),\n EMPTY_BUFFER: Buffer.alloc(0),\n NOOP: () => {}\n};\n","'use strict';\n\nconst { EMPTY_BUFFER } = require('./constants');\n\n/**\n * Merges an array of buffers into a new buffer.\n *\n * @param {Buffer[]} list The array of buffers to concat\n * @param {Number} totalLength The total length of buffers in the list\n * @return {Buffer} The resulting buffer\n * @public\n */\nfunction concat(list, totalLength) {\n if (list.length === 0) return EMPTY_BUFFER;\n if (list.length === 1) return list[0];\n\n const target = Buffer.allocUnsafe(totalLength);\n let offset = 0;\n\n for (let i = 0; i < list.length; i++) {\n const buf = list[i];\n target.set(buf, offset);\n offset += buf.length;\n }\n\n if (offset < totalLength) return target.slice(0, offset);\n\n return target;\n}\n\n/**\n * Masks a buffer using the given mask.\n *\n * @param {Buffer} source The buffer to mask\n * @param {Buffer} mask The mask to use\n * @param {Buffer} output The buffer where to store the result\n * @param {Number} offset The offset at which to start writing\n * @param {Number} length The number of bytes to mask.\n * @public\n */\nfunction _mask(source, mask, output, offset, length) {\n for (let i = 0; i < length; i++) {\n output[offset + i] = source[i] ^ mask[i & 3];\n }\n}\n\n/**\n * Unmasks a buffer using the given mask.\n *\n * @param {Buffer} buffer The buffer to unmask\n * @param {Buffer} mask The mask to use\n * @public\n */\nfunction _unmask(buffer, mask) {\n // Required until https://github.com/nodejs/node/issues/9006 is resolved.\n const length = buffer.length;\n for (let i = 0; i < length; i++) {\n buffer[i] ^= mask[i & 3];\n }\n}\n\n/**\n * Converts a buffer to an `ArrayBuffer`.\n *\n * @param {Buffer} buf The buffer to convert\n * @return {ArrayBuffer} Converted buffer\n * @public\n */\nfunction toArrayBuffer(buf) {\n if (buf.byteLength === buf.buffer.byteLength) {\n return buf.buffer;\n }\n\n return buf.buffer.slice(buf.byteOffset, buf.byteOffset + buf.byteLength);\n}\n\n/**\n * Converts `data` to a `Buffer`.\n *\n * @param {*} data The data to convert\n * @return {Buffer} The buffer\n * @throws {TypeError}\n * @public\n */\nfunction toBuffer(data) {\n toBuffer.readOnly = true;\n\n if (Buffer.isBuffer(data)) return data;\n\n let buf;\n\n if (data instanceof ArrayBuffer) {\n buf = Buffer.from(data);\n } else if (ArrayBuffer.isView(data)) {\n buf = Buffer.from(data.buffer, data.byteOffset, data.byteLength);\n } else {\n buf = Buffer.from(data);\n toBuffer.readOnly = false;\n }\n\n return buf;\n}\n\ntry {\n const bufferUtil = require('bufferutil');\n const bu = bufferUtil.BufferUtil || bufferUtil;\n\n module.exports = {\n concat,\n mask(source, mask, output, offset, length) {\n if (length < 48) _mask(source, mask, output, offset, length);\n else bu.mask(source, mask, output, offset, length);\n },\n toArrayBuffer,\n toBuffer,\n unmask(buffer, mask) {\n if (buffer.length < 32) _unmask(buffer, mask);\n else bu.unmask(buffer, mask);\n }\n };\n} catch (e) /* istanbul ignore next */ {\n module.exports = {\n concat,\n mask: _mask,\n toArrayBuffer,\n toBuffer,\n unmask: _unmask\n };\n}\n","'use strict';\n\nconst kDone = Symbol('kDone');\nconst kRun = Symbol('kRun');\n\n/**\n * A very simple job queue with adjustable concurrency. Adapted from\n * https://github.com/STRML/async-limiter\n */\nclass Limiter {\n /**\n * Creates a new `Limiter`.\n *\n * @param {Number} [concurrency=Infinity] The maximum number of jobs allowed\n * to run concurrently\n */\n constructor(concurrency) {\n this[kDone] = () => {\n this.pending--;\n this[kRun]();\n };\n this.concurrency = concurrency || Infinity;\n this.jobs = [];\n this.pending = 0;\n }\n\n /**\n * Adds a job to the queue.\n *\n * @param {Function} job The job to run\n * @public\n */\n add(job) {\n this.jobs.push(job);\n this[kRun]();\n }\n\n /**\n * Removes a job from the queue and runs it if possible.\n *\n * @private\n */\n [kRun]() {\n if (this.pending === this.concurrency) return;\n\n if (this.jobs.length) {\n const job = this.jobs.shift();\n\n this.pending++;\n job(this[kDone]);\n }\n }\n}\n\nmodule.exports = Limiter;\n","'use strict';\n\nconst zlib = require('zlib');\n\nconst bufferUtil = require('./buffer-util');\nconst Limiter = require('./limiter');\nconst { kStatusCode, NOOP } = require('./constants');\n\nconst TRAILER = Buffer.from([0x00, 0x00, 0xff, 0xff]);\nconst kPerMessageDeflate = Symbol('permessage-deflate');\nconst kTotalLength = Symbol('total-length');\nconst kCallback = Symbol('callback');\nconst kBuffers = Symbol('buffers');\nconst kError = Symbol('error');\n\n//\n// We limit zlib concurrency, which prevents severe memory fragmentation\n// as documented in https://github.com/nodejs/node/issues/8871#issuecomment-250915913\n// and https://github.com/websockets/ws/issues/1202\n//\n// Intentionally global; it's the global thread pool that's an issue.\n//\nlet zlibLimiter;\n\n/**\n * permessage-deflate implementation.\n */\nclass PerMessageDeflate {\n /**\n * Creates a PerMessageDeflate instance.\n *\n * @param {Object} [options] Configuration options\n * @param {Boolean} [options.serverNoContextTakeover=false] Request/accept\n * disabling of server context takeover\n * @param {Boolean} [options.clientNoContextTakeover=false] Advertise/\n * acknowledge disabling of client context takeover\n * @param {(Boolean|Number)} [options.serverMaxWindowBits] Request/confirm the\n * use of a custom server window size\n * @param {(Boolean|Number)} [options.clientMaxWindowBits] Advertise support\n * for, or request, a custom client window size\n * @param {Object} [options.zlibDeflateOptions] Options to pass to zlib on\n * deflate\n * @param {Object} [options.zlibInflateOptions] Options to pass to zlib on\n * inflate\n * @param {Number} [options.threshold=1024] Size (in bytes) below which\n * messages should not be compressed\n * @param {Number} [options.concurrencyLimit=10] The number of concurrent\n * calls to zlib\n * @param {Boolean} [isServer=false] Create the instance in either server or\n * client mode\n * @param {Number} [maxPayload=0] The maximum allowed message length\n */\n constructor(options, isServer, maxPayload) {\n this._maxPayload = maxPayload | 0;\n this._options = options || {};\n this._threshold =\n this._options.threshold !== undefined ? this._options.threshold : 1024;\n this._isServer = !!isServer;\n this._deflate = null;\n this._inflate = null;\n\n this.params = null;\n\n if (!zlibLimiter) {\n const concurrency =\n this._options.concurrencyLimit !== undefined\n ? this._options.concurrencyLimit\n : 10;\n zlibLimiter = new Limiter(concurrency);\n }\n }\n\n /**\n * @type {String}\n */\n static get extensionName() {\n return 'permessage-deflate';\n }\n\n /**\n * Create an extension negotiation offer.\n *\n * @return {Object} Extension parameters\n * @public\n */\n offer() {\n const params = {};\n\n if (this._options.serverNoContextTakeover) {\n params.server_no_context_takeover = true;\n }\n if (this._options.clientNoContextTakeover) {\n params.client_no_context_takeover = true;\n }\n if (this._options.serverMaxWindowBits) {\n params.server_max_window_bits = this._options.serverMaxWindowBits;\n }\n if (this._options.clientMaxWindowBits) {\n params.client_max_window_bits = this._options.clientMaxWindowBits;\n } else if (this._options.clientMaxWindowBits == null) {\n params.client_max_window_bits = true;\n }\n\n return params;\n }\n\n /**\n * Accept an extension negotiation offer/response.\n *\n * @param {Array} configurations The extension negotiation offers/reponse\n * @return {Object} Accepted configuration\n * @public\n */\n accept(configurations) {\n configurations = this.normalizeParams(configurations);\n\n this.params = this._isServer\n ? this.acceptAsServer(configurations)\n : this.acceptAsClient(configurations);\n\n return this.params;\n }\n\n /**\n * Releases all resources used by the extension.\n *\n * @public\n */\n cleanup() {\n if (this._inflate) {\n this._inflate.close();\n this._inflate = null;\n }\n\n if (this._deflate) {\n const callback = this._deflate[kCallback];\n\n this._deflate.close();\n this._deflate = null;\n\n if (callback) {\n callback(\n new Error(\n 'The deflate stream was closed while data was being processed'\n )\n );\n }\n }\n }\n\n /**\n * Accept an extension negotiation offer.\n *\n * @param {Array} offers The extension negotiation offers\n * @return {Object} Accepted configuration\n * @private\n */\n acceptAsServer(offers) {\n const opts = this._options;\n const accepted = offers.find((params) => {\n if (\n (opts.serverNoContextTakeover === false &&\n params.server_no_context_takeover) ||\n (params.server_max_window_bits &&\n (opts.serverMaxWindowBits === false ||\n (typeof opts.serverMaxWindowBits === 'number' &&\n opts.serverMaxWindowBits > params.server_max_window_bits))) ||\n (typeof opts.clientMaxWindowBits === 'number' &&\n !params.client_max_window_bits)\n ) {\n return false;\n }\n\n return true;\n });\n\n if (!accepted) {\n throw new Error('None of the extension offers can be accepted');\n }\n\n if (opts.serverNoContextTakeover) {\n accepted.server_no_context_takeover = true;\n }\n if (opts.clientNoContextTakeover) {\n accepted.client_no_context_takeover = true;\n }\n if (typeof opts.serverMaxWindowBits === 'number') {\n accepted.server_max_window_bits = opts.serverMaxWindowBits;\n }\n if (typeof opts.clientMaxWindowBits === 'number') {\n accepted.client_max_window_bits = opts.clientMaxWindowBits;\n } else if (\n accepted.client_max_window_bits === true ||\n opts.clientMaxWindowBits === false\n ) {\n delete accepted.client_max_window_bits;\n }\n\n return accepted;\n }\n\n /**\n * Accept the extension negotiation response.\n *\n * @param {Array} response The extension negotiation response\n * @return {Object} Accepted configuration\n * @private\n */\n acceptAsClient(response) {\n const params = response[0];\n\n if (\n this._options.clientNoContextTakeover === false &&\n params.client_no_context_takeover\n ) {\n throw new Error('Unexpected parameter \"client_no_context_takeover\"');\n }\n\n if (!params.client_max_window_bits) {\n if (typeof this._options.clientMaxWindowBits === 'number') {\n params.client_max_window_bits = this._options.clientMaxWindowBits;\n }\n } else if (\n this._options.clientMaxWindowBits === false ||\n (typeof this._options.clientMaxWindowBits === 'number' &&\n params.client_max_window_bits > this._options.clientMaxWindowBits)\n ) {\n throw new Error(\n 'Unexpected or invalid parameter \"client_max_window_bits\"'\n );\n }\n\n return params;\n }\n\n /**\n * Normalize parameters.\n *\n * @param {Array} configurations The extension negotiation offers/reponse\n * @return {Array} The offers/response with normalized parameters\n * @private\n */\n normalizeParams(configurations) {\n configurations.forEach((params) => {\n Object.keys(params).forEach((key) => {\n let value = params[key];\n\n if (value.length > 1) {\n throw new Error(`Parameter \"${key}\" must have only a single value`);\n }\n\n value = value[0];\n\n if (key === 'client_max_window_bits') {\n if (value !== true) {\n const num = +value;\n if (!Number.isInteger(num) || num < 8 || num > 15) {\n throw new TypeError(\n `Invalid value for parameter \"${key}\": ${value}`\n );\n }\n value = num;\n } else if (!this._isServer) {\n throw new TypeError(\n `Invalid value for parameter \"${key}\": ${value}`\n );\n }\n } else if (key === 'server_max_window_bits') {\n const num = +value;\n if (!Number.isInteger(num) || num < 8 || num > 15) {\n throw new TypeError(\n `Invalid value for parameter \"${key}\": ${value}`\n );\n }\n value = num;\n } else if (\n key === 'client_no_context_takeover' ||\n key === 'server_no_context_takeover'\n ) {\n if (value !== true) {\n throw new TypeError(\n `Invalid value for parameter \"${key}\": ${value}`\n );\n }\n } else {\n throw new Error(`Unknown parameter \"${key}\"`);\n }\n\n params[key] = value;\n });\n });\n\n return configurations;\n }\n\n /**\n * Decompress data. Concurrency limited.\n *\n * @param {Buffer} data Compressed data\n * @param {Boolean} fin Specifies whether or not this is the last fragment\n * @param {Function} callback Callback\n * @public\n */\n decompress(data, fin, callback) {\n zlibLimiter.add((done) => {\n this._decompress(data, fin, (err, result) => {\n done();\n callback(err, result);\n });\n });\n }\n\n /**\n * Compress data. Concurrency limited.\n *\n * @param {Buffer} data Data to compress\n * @param {Boolean} fin Specifies whether or not this is the last fragment\n * @param {Function} callback Callback\n * @public\n */\n compress(data, fin, callback) {\n zlibLimiter.add((done) => {\n this._compress(data, fin, (err, result) => {\n done();\n callback(err, result);\n });\n });\n }\n\n /**\n * Decompress data.\n *\n * @param {Buffer} data Compressed data\n * @param {Boolean} fin Specifies whether or not this is the last fragment\n * @param {Function} callback Callback\n * @private\n */\n _decompress(data, fin, callback) {\n const endpoint = this._isServer ? 'client' : 'server';\n\n if (!this._inflate) {\n const key = `${endpoint}_max_window_bits`;\n const windowBits =\n typeof this.params[key] !== 'number'\n ? zlib.Z_DEFAULT_WINDOWBITS\n : this.params[key];\n\n this._inflate = zlib.createInflateRaw({\n ...this._options.zlibInflateOptions,\n windowBits\n });\n this._inflate[kPerMessageDeflate] = this;\n this._inflate[kTotalLength] = 0;\n this._inflate[kBuffers] = [];\n this._inflate.on('error', inflateOnError);\n this._inflate.on('data', inflateOnData);\n }\n\n this._inflate[kCallback] = callback;\n\n this._inflate.write(data);\n if (fin) this._inflate.write(TRAILER);\n\n this._inflate.flush(() => {\n const err = this._inflate[kError];\n\n if (err) {\n this._inflate.close();\n this._inflate = null;\n callback(err);\n return;\n }\n\n const data = bufferUtil.concat(\n this._inflate[kBuffers],\n this._inflate[kTotalLength]\n );\n\n if (this._inflate._readableState.endEmitted) {\n this._inflate.close();\n this._inflate = null;\n } else {\n this._inflate[kTotalLength] = 0;\n this._inflate[kBuffers] = [];\n\n if (fin && this.params[`${endpoint}_no_context_takeover`]) {\n this._inflate.reset();\n }\n }\n\n callback(null, data);\n });\n }\n\n /**\n * Compress data.\n *\n * @param {Buffer} data Data to compress\n * @param {Boolean} fin Specifies whether or not this is the last fragment\n * @param {Function} callback Callback\n * @private\n */\n _compress(data, fin, callback) {\n const endpoint = this._isServer ? 'server' : 'client';\n\n if (!this._deflate) {\n const key = `${endpoint}_max_window_bits`;\n const windowBits =\n typeof this.params[key] !== 'number'\n ? zlib.Z_DEFAULT_WINDOWBITS\n : this.params[key];\n\n this._deflate = zlib.createDeflateRaw({\n ...this._options.zlibDeflateOptions,\n windowBits\n });\n\n this._deflate[kTotalLength] = 0;\n this._deflate[kBuffers] = [];\n\n //\n // An `'error'` event is emitted, only on Node.js < 10.0.0, if the\n // `zlib.DeflateRaw` instance is closed while data is being processed.\n // This can happen if `PerMessageDeflate#cleanup()` is called at the wrong\n // time due to an abnormal WebSocket closure.\n //\n this._deflate.on('error', NOOP);\n this._deflate.on('data', deflateOnData);\n }\n\n this._deflate[kCallback] = callback;\n\n this._deflate.write(data);\n this._deflate.flush(zlib.Z_SYNC_FLUSH, () => {\n if (!this._deflate) {\n //\n // The deflate stream was closed while data was being processed.\n //\n return;\n }\n\n let data = bufferUtil.concat(\n this._deflate[kBuffers],\n this._deflate[kTotalLength]\n );\n\n if (fin) data = data.slice(0, data.length - 4);\n\n //\n // Ensure that the callback will not be called again in\n // `PerMessageDeflate#cleanup()`.\n //\n this._deflate[kCallback] = null;\n\n this._deflate[kTotalLength] = 0;\n this._deflate[kBuffers] = [];\n\n if (fin && this.params[`${endpoint}_no_context_takeover`]) {\n this._deflate.reset();\n }\n\n callback(null, data);\n });\n }\n}\n\nmodule.exports = PerMessageDeflate;\n\n/**\n * The listener of the `zlib.DeflateRaw` stream `'data'` event.\n *\n * @param {Buffer} chunk A chunk of data\n * @private\n */\nfunction deflateOnData(chunk) {\n this[kBuffers].push(chunk);\n this[kTotalLength] += chunk.length;\n}\n\n/**\n * The listener of the `zlib.InflateRaw` stream `'data'` event.\n *\n * @param {Buffer} chunk A chunk of data\n * @private\n */\nfunction inflateOnData(chunk) {\n this[kTotalLength] += chunk.length;\n\n if (\n this[kPerMessageDeflate]._maxPayload < 1 ||\n this[kTotalLength] <= this[kPerMessageDeflate]._maxPayload\n ) {\n this[kBuffers].push(chunk);\n return;\n }\n\n this[kError] = new RangeError('Max payload size exceeded');\n this[kError].code = 'WS_ERR_UNSUPPORTED_MESSAGE_LENGTH';\n this[kError][kStatusCode] = 1009;\n this.removeListener('data', inflateOnData);\n this.reset();\n}\n\n/**\n * The listener of the `zlib.InflateRaw` stream `'error'` event.\n *\n * @param {Error} err The emitted error\n * @private\n */\nfunction inflateOnError(err) {\n //\n // There is no need to call `Zlib#close()` as the handle is automatically\n // closed when an error is emitted.\n //\n this[kPerMessageDeflate]._inflate = null;\n err[kStatusCode] = 1007;\n this[kCallback](err);\n}\n","'use strict';\n\n/**\n * Checks if a status code is allowed in a close frame.\n *\n * @param {Number} code The status code\n * @return {Boolean} `true` if the status code is valid, else `false`\n * @public\n */\nfunction isValidStatusCode(code) {\n return (\n (code >= 1000 &&\n code <= 1014 &&\n code !== 1004 &&\n code !== 1005 &&\n code !== 1006) ||\n (code >= 3000 && code <= 4999)\n );\n}\n\n/**\n * Checks if a given buffer contains only correct UTF-8.\n * Ported from https://www.cl.cam.ac.uk/%7Emgk25/ucs/utf8_check.c by\n * Markus Kuhn.\n *\n * @param {Buffer} buf The buffer to check\n * @return {Boolean} `true` if `buf` contains only correct UTF-8, else `false`\n * @public\n */\nfunction _isValidUTF8(buf) {\n const len = buf.length;\n let i = 0;\n\n while (i < len) {\n if ((buf[i] & 0x80) === 0) {\n // 0xxxxxxx\n i++;\n } else if ((buf[i] & 0xe0) === 0xc0) {\n // 110xxxxx 10xxxxxx\n if (\n i + 1 === len ||\n (buf[i + 1] & 0xc0) !== 0x80 ||\n (buf[i] & 0xfe) === 0xc0 // Overlong\n ) {\n return false;\n }\n\n i += 2;\n } else if ((buf[i] & 0xf0) === 0xe0) {\n // 1110xxxx 10xxxxxx 10xxxxxx\n if (\n i + 2 >= len ||\n (buf[i + 1] & 0xc0) !== 0x80 ||\n (buf[i + 2] & 0xc0) !== 0x80 ||\n (buf[i] === 0xe0 && (buf[i + 1] & 0xe0) === 0x80) || // Overlong\n (buf[i] === 0xed && (buf[i + 1] & 0xe0) === 0xa0) // Surrogate (U+D800 - U+DFFF)\n ) {\n return false;\n }\n\n i += 3;\n } else if ((buf[i] & 0xf8) === 0xf0) {\n // 11110xxx 10xxxxxx 10xxxxxx 10xxxxxx\n if (\n i + 3 >= len ||\n (buf[i + 1] & 0xc0) !== 0x80 ||\n (buf[i + 2] & 0xc0) !== 0x80 ||\n (buf[i + 3] & 0xc0) !== 0x80 ||\n (buf[i] === 0xf0 && (buf[i + 1] & 0xf0) === 0x80) || // Overlong\n (buf[i] === 0xf4 && buf[i + 1] > 0x8f) ||\n buf[i] > 0xf4 // > U+10FFFF\n ) {\n return false;\n }\n\n i += 4;\n } else {\n return false;\n }\n }\n\n return true;\n}\n\ntry {\n let isValidUTF8 = require('utf-8-validate');\n\n /* istanbul ignore if */\n if (typeof isValidUTF8 === 'object') {\n isValidUTF8 = isValidUTF8.Validation.isValidUTF8; // utf-8-validate@<3.0.0\n }\n\n module.exports = {\n isValidStatusCode,\n isValidUTF8(buf) {\n return buf.length < 150 ? _isValidUTF8(buf) : isValidUTF8(buf);\n }\n };\n} catch (e) /* istanbul ignore next */ {\n module.exports = {\n isValidStatusCode,\n isValidUTF8: _isValidUTF8\n };\n}\n","'use strict';\n\nconst { Writable } = require('stream');\n\nconst PerMessageDeflate = require('./permessage-deflate');\nconst {\n BINARY_TYPES,\n EMPTY_BUFFER,\n kStatusCode,\n kWebSocket\n} = require('./constants');\nconst { concat, toArrayBuffer, unmask } = require('./buffer-util');\nconst { isValidStatusCode, isValidUTF8 } = require('./validation');\n\nconst GET_INFO = 0;\nconst GET_PAYLOAD_LENGTH_16 = 1;\nconst GET_PAYLOAD_LENGTH_64 = 2;\nconst GET_MASK = 3;\nconst GET_DATA = 4;\nconst INFLATING = 5;\n\n/**\n * HyBi Receiver implementation.\n *\n * @extends Writable\n */\nclass Receiver extends Writable {\n /**\n * Creates a Receiver instance.\n *\n * @param {String} [binaryType=nodebuffer] The type for binary data\n * @param {Object} [extensions] An object containing the negotiated extensions\n * @param {Boolean} [isServer=false] Specifies whether to operate in client or\n * server mode\n * @param {Number} [maxPayload=0] The maximum allowed message length\n */\n constructor(binaryType, extensions, isServer, maxPayload) {\n super();\n\n this._binaryType = binaryType || BINARY_TYPES[0];\n this[kWebSocket] = undefined;\n this._extensions = extensions || {};\n this._isServer = !!isServer;\n this._maxPayload = maxPayload | 0;\n\n this._bufferedBytes = 0;\n this._buffers = [];\n\n this._compressed = false;\n this._payloadLength = 0;\n this._mask = undefined;\n this._fragmented = 0;\n this._masked = false;\n this._fin = false;\n this._opcode = 0;\n\n this._totalPayloadLength = 0;\n this._messageLength = 0;\n this._fragments = [];\n\n this._state = GET_INFO;\n this._loop = false;\n }\n\n /**\n * Implements `Writable.prototype._write()`.\n *\n * @param {Buffer} chunk The chunk of data to write\n * @param {String} encoding The character encoding of `chunk`\n * @param {Function} cb Callback\n * @private\n */\n _write(chunk, encoding, cb) {\n if (this._opcode === 0x08 && this._state == GET_INFO) return cb();\n\n this._bufferedBytes += chunk.length;\n this._buffers.push(chunk);\n this.startLoop(cb);\n }\n\n /**\n * Consumes `n` bytes from the buffered data.\n *\n * @param {Number} n The number of bytes to consume\n * @return {Buffer} The consumed bytes\n * @private\n */\n consume(n) {\n this._bufferedBytes -= n;\n\n if (n === this._buffers[0].length) return this._buffers.shift();\n\n if (n < this._buffers[0].length) {\n const buf = this._buffers[0];\n this._buffers[0] = buf.slice(n);\n return buf.slice(0, n);\n }\n\n const dst = Buffer.allocUnsafe(n);\n\n do {\n const buf = this._buffers[0];\n const offset = dst.length - n;\n\n if (n >= buf.length) {\n dst.set(this._buffers.shift(), offset);\n } else {\n dst.set(new Uint8Array(buf.buffer, buf.byteOffset, n), offset);\n this._buffers[0] = buf.slice(n);\n }\n\n n -= buf.length;\n } while (n > 0);\n\n return dst;\n }\n\n /**\n * Starts the parsing loop.\n *\n * @param {Function} cb Callback\n * @private\n */\n startLoop(cb) {\n let err;\n this._loop = true;\n\n do {\n switch (this._state) {\n case GET_INFO:\n err = this.getInfo();\n break;\n case GET_PAYLOAD_LENGTH_16:\n err = this.getPayloadLength16();\n break;\n case GET_PAYLOAD_LENGTH_64:\n err = this.getPayloadLength64();\n break;\n case GET_MASK:\n this.getMask();\n break;\n case GET_DATA:\n err = this.getData(cb);\n break;\n default:\n // `INFLATING`\n this._loop = false;\n return;\n }\n } while (this._loop);\n\n cb(err);\n }\n\n /**\n * Reads the first two bytes of a frame.\n *\n * @return {(RangeError|undefined)} A possible error\n * @private\n */\n getInfo() {\n if (this._bufferedBytes < 2) {\n this._loop = false;\n return;\n }\n\n const buf = this.consume(2);\n\n if ((buf[0] & 0x30) !== 0x00) {\n this._loop = false;\n return error(\n RangeError,\n 'RSV2 and RSV3 must be clear',\n true,\n 1002,\n 'WS_ERR_UNEXPECTED_RSV_2_3'\n );\n }\n\n const compressed = (buf[0] & 0x40) === 0x40;\n\n if (compressed && !this._extensions[PerMessageDeflate.extensionName]) {\n this._loop = false;\n return error(\n RangeError,\n 'RSV1 must be clear',\n true,\n 1002,\n 'WS_ERR_UNEXPECTED_RSV_1'\n );\n }\n\n this._fin = (buf[0] & 0x80) === 0x80;\n this._opcode = buf[0] & 0x0f;\n this._payloadLength = buf[1] & 0x7f;\n\n if (this._opcode === 0x00) {\n if (compressed) {\n this._loop = false;\n return error(\n RangeError,\n 'RSV1 must be clear',\n true,\n 1002,\n 'WS_ERR_UNEXPECTED_RSV_1'\n );\n }\n\n if (!this._fragmented) {\n this._loop = false;\n return error(\n RangeError,\n 'invalid opcode 0',\n true,\n 1002,\n 'WS_ERR_INVALID_OPCODE'\n );\n }\n\n this._opcode = this._fragmented;\n } else if (this._opcode === 0x01 || this._opcode === 0x02) {\n if (this._fragmented) {\n this._loop = false;\n return error(\n RangeError,\n `invalid opcode ${this._opcode}`,\n true,\n 1002,\n 'WS_ERR_INVALID_OPCODE'\n );\n }\n\n this._compressed = compressed;\n } else if (this._opcode > 0x07 && this._opcode < 0x0b) {\n if (!this._fin) {\n this._loop = false;\n return error(\n RangeError,\n 'FIN must be set',\n true,\n 1002,\n 'WS_ERR_EXPECTED_FIN'\n );\n }\n\n if (compressed) {\n this._loop = false;\n return error(\n RangeError,\n 'RSV1 must be clear',\n true,\n 1002,\n 'WS_ERR_UNEXPECTED_RSV_1'\n );\n }\n\n if (this._payloadLength > 0x7d) {\n this._loop = false;\n return error(\n RangeError,\n `invalid payload length ${this._payloadLength}`,\n true,\n 1002,\n 'WS_ERR_INVALID_CONTROL_PAYLOAD_LENGTH'\n );\n }\n } else {\n this._loop = false;\n return error(\n RangeError,\n `invalid opcode ${this._opcode}`,\n true,\n 1002,\n 'WS_ERR_INVALID_OPCODE'\n );\n }\n\n if (!this._fin && !this._fragmented) this._fragmented = this._opcode;\n this._masked = (buf[1] & 0x80) === 0x80;\n\n if (this._isServer) {\n if (!this._masked) {\n this._loop = false;\n return error(\n RangeError,\n 'MASK must be set',\n true,\n 1002,\n 'WS_ERR_EXPECTED_MASK'\n );\n }\n } else if (this._masked) {\n this._loop = false;\n return error(\n RangeError,\n 'MASK must be clear',\n true,\n 1002,\n 'WS_ERR_UNEXPECTED_MASK'\n );\n }\n\n if (this._payloadLength === 126) this._state = GET_PAYLOAD_LENGTH_16;\n else if (this._payloadLength === 127) this._state = GET_PAYLOAD_LENGTH_64;\n else return this.haveLength();\n }\n\n /**\n * Gets extended payload length (7+16).\n *\n * @return {(RangeError|undefined)} A possible error\n * @private\n */\n getPayloadLength16() {\n if (this._bufferedBytes < 2) {\n this._loop = false;\n return;\n }\n\n this._payloadLength = this.consume(2).readUInt16BE(0);\n return this.haveLength();\n }\n\n /**\n * Gets extended payload length (7+64).\n *\n * @return {(RangeError|undefined)} A possible error\n * @private\n */\n getPayloadLength64() {\n if (this._bufferedBytes < 8) {\n this._loop = false;\n return;\n }\n\n const buf = this.consume(8);\n const num = buf.readUInt32BE(0);\n\n //\n // The maximum safe integer in JavaScript is 2^53 - 1. An error is returned\n // if payload length is greater than this number.\n //\n if (num > Math.pow(2, 53 - 32) - 1) {\n this._loop = false;\n return error(\n RangeError,\n 'Unsupported WebSocket frame: payload length > 2^53 - 1',\n false,\n 1009,\n 'WS_ERR_UNSUPPORTED_DATA_PAYLOAD_LENGTH'\n );\n }\n\n this._payloadLength = num * Math.pow(2, 32) + buf.readUInt32BE(4);\n return this.haveLength();\n }\n\n /**\n * Payload length has been read.\n *\n * @return {(RangeError|undefined)} A possible error\n * @private\n */\n haveLength() {\n if (this._payloadLength && this._opcode < 0x08) {\n this._totalPayloadLength += this._payloadLength;\n if (this._totalPayloadLength > this._maxPayload && this._maxPayload > 0) {\n this._loop = false;\n return error(\n RangeError,\n 'Max payload size exceeded',\n false,\n 1009,\n 'WS_ERR_UNSUPPORTED_MESSAGE_LENGTH'\n );\n }\n }\n\n if (this._masked) this._state = GET_MASK;\n else this._state = GET_DATA;\n }\n\n /**\n * Reads mask bytes.\n *\n * @private\n */\n getMask() {\n if (this._bufferedBytes < 4) {\n this._loop = false;\n return;\n }\n\n this._mask = this.consume(4);\n this._state = GET_DATA;\n }\n\n /**\n * Reads data bytes.\n *\n * @param {Function} cb Callback\n * @return {(Error|RangeError|undefined)} A possible error\n * @private\n */\n getData(cb) {\n let data = EMPTY_BUFFER;\n\n if (this._payloadLength) {\n if (this._bufferedBytes < this._payloadLength) {\n this._loop = false;\n return;\n }\n\n data = this.consume(this._payloadLength);\n if (this._masked) unmask(data, this._mask);\n }\n\n if (this._opcode > 0x07) return this.controlMessage(data);\n\n if (this._compressed) {\n this._state = INFLATING;\n this.decompress(data, cb);\n return;\n }\n\n if (data.length) {\n //\n // This message is not compressed so its lenght is the sum of the payload\n // length of all fragments.\n //\n this._messageLength = this._totalPayloadLength;\n this._fragments.push(data);\n }\n\n return this.dataMessage();\n }\n\n /**\n * Decompresses data.\n *\n * @param {Buffer} data Compressed data\n * @param {Function} cb Callback\n * @private\n */\n decompress(data, cb) {\n const perMessageDeflate = this._extensions[PerMessageDeflate.extensionName];\n\n perMessageDeflate.decompress(data, this._fin, (err, buf) => {\n if (err) return cb(err);\n\n if (buf.length) {\n this._messageLength += buf.length;\n if (this._messageLength > this._maxPayload && this._maxPayload > 0) {\n return cb(\n error(\n RangeError,\n 'Max payload size exceeded',\n false,\n 1009,\n 'WS_ERR_UNSUPPORTED_MESSAGE_LENGTH'\n )\n );\n }\n\n this._fragments.push(buf);\n }\n\n const er = this.dataMessage();\n if (er) return cb(er);\n\n this.startLoop(cb);\n });\n }\n\n /**\n * Handles a data message.\n *\n * @return {(Error|undefined)} A possible error\n * @private\n */\n dataMessage() {\n if (this._fin) {\n const messageLength = this._messageLength;\n const fragments = this._fragments;\n\n this._totalPayloadLength = 0;\n this._messageLength = 0;\n this._fragmented = 0;\n this._fragments = [];\n\n if (this._opcode === 2) {\n let data;\n\n if (this._binaryType === 'nodebuffer') {\n data = concat(fragments, messageLength);\n } else if (this._binaryType === 'arraybuffer') {\n data = toArrayBuffer(concat(fragments, messageLength));\n } else {\n data = fragments;\n }\n\n this.emit('message', data);\n } else {\n const buf = concat(fragments, messageLength);\n\n if (!isValidUTF8(buf)) {\n this._loop = false;\n return error(\n Error,\n 'invalid UTF-8 sequence',\n true,\n 1007,\n 'WS_ERR_INVALID_UTF8'\n );\n }\n\n this.emit('message', buf.toString());\n }\n }\n\n this._state = GET_INFO;\n }\n\n /**\n * Handles a control message.\n *\n * @param {Buffer} data Data to handle\n * @return {(Error|RangeError|undefined)} A possible error\n * @private\n */\n controlMessage(data) {\n if (this._opcode === 0x08) {\n this._loop = false;\n\n if (data.length === 0) {\n this.emit('conclude', 1005, '');\n this.end();\n } else if (data.length === 1) {\n return error(\n RangeError,\n 'invalid payload length 1',\n true,\n 1002,\n 'WS_ERR_INVALID_CONTROL_PAYLOAD_LENGTH'\n );\n } else {\n const code = data.readUInt16BE(0);\n\n if (!isValidStatusCode(code)) {\n return error(\n RangeError,\n `invalid status code ${code}`,\n true,\n 1002,\n 'WS_ERR_INVALID_CLOSE_CODE'\n );\n }\n\n const buf = data.slice(2);\n\n if (!isValidUTF8(buf)) {\n return error(\n Error,\n 'invalid UTF-8 sequence',\n true,\n 1007,\n 'WS_ERR_INVALID_UTF8'\n );\n }\n\n this.emit('conclude', code, buf.toString());\n this.end();\n }\n } else if (this._opcode === 0x09) {\n this.emit('ping', data);\n } else {\n this.emit('pong', data);\n }\n\n this._state = GET_INFO;\n }\n}\n\nmodule.exports = Receiver;\n\n/**\n * Builds an error object.\n *\n * @param {function(new:Error|RangeError)} ErrorCtor The error constructor\n * @param {String} message The error message\n * @param {Boolean} prefix Specifies whether or not to add a default prefix to\n * `message`\n * @param {Number} statusCode The status code\n * @param {String} errorCode The exposed error code\n * @return {(Error|RangeError)} The error\n * @private\n */\nfunction error(ErrorCtor, message, prefix, statusCode, errorCode) {\n const err = new ErrorCtor(\n prefix ? `Invalid WebSocket frame: ${message}` : message\n );\n\n Error.captureStackTrace(err, error);\n err.code = errorCode;\n err[kStatusCode] = statusCode;\n return err;\n}\n","/* eslint no-unused-vars: [\"error\", { \"varsIgnorePattern\": \"^net|tls$\" }] */\n\n'use strict';\n\nconst net = require('net');\nconst tls = require('tls');\nconst { randomFillSync } = require('crypto');\n\nconst PerMessageDeflate = require('./permessage-deflate');\nconst { EMPTY_BUFFER } = require('./constants');\nconst { isValidStatusCode } = require('./validation');\nconst { mask: applyMask, toBuffer } = require('./buffer-util');\n\nconst mask = Buffer.alloc(4);\n\n/**\n * HyBi Sender implementation.\n */\nclass Sender {\n /**\n * Creates a Sender instance.\n *\n * @param {(net.Socket|tls.Socket)} socket The connection socket\n * @param {Object} [extensions] An object containing the negotiated extensions\n */\n constructor(socket, extensions) {\n this._extensions = extensions || {};\n this._socket = socket;\n\n this._firstFragment = true;\n this._compress = false;\n\n this._bufferedBytes = 0;\n this._deflating = false;\n this._queue = [];\n }\n\n /**\n * Frames a piece of data according to the HyBi WebSocket protocol.\n *\n * @param {Buffer} data The data to frame\n * @param {Object} options Options object\n * @param {Number} options.opcode The opcode\n * @param {Boolean} [options.readOnly=false] Specifies whether `data` can be\n * modified\n * @param {Boolean} [options.fin=false] Specifies whether or not to set the\n * FIN bit\n * @param {Boolean} [options.mask=false] Specifies whether or not to mask\n * `data`\n * @param {Boolean} [options.rsv1=false] Specifies whether or not to set the\n * RSV1 bit\n * @return {Buffer[]} The framed data as a list of `Buffer` instances\n * @public\n */\n static frame(data, options) {\n const merge = options.mask && options.readOnly;\n let offset = options.mask ? 6 : 2;\n let payloadLength = data.length;\n\n if (data.length >= 65536) {\n offset += 8;\n payloadLength = 127;\n } else if (data.length > 125) {\n offset += 2;\n payloadLength = 126;\n }\n\n const target = Buffer.allocUnsafe(merge ? data.length + offset : offset);\n\n target[0] = options.fin ? options.opcode | 0x80 : options.opcode;\n if (options.rsv1) target[0] |= 0x40;\n\n target[1] = payloadLength;\n\n if (payloadLength === 126) {\n target.writeUInt16BE(data.length, 2);\n } else if (payloadLength === 127) {\n target.writeUInt32BE(0, 2);\n target.writeUInt32BE(data.length, 6);\n }\n\n if (!options.mask) return [target, data];\n\n randomFillSync(mask, 0, 4);\n\n target[1] |= 0x80;\n target[offset - 4] = mask[0];\n target[offset - 3] = mask[1];\n target[offset - 2] = mask[2];\n target[offset - 1] = mask[3];\n\n if (merge) {\n applyMask(data, mask, target, offset, data.length);\n return [target];\n }\n\n applyMask(data, mask, data, 0, data.length);\n return [target, data];\n }\n\n /**\n * Sends a close message to the other peer.\n *\n * @param {Number} [code] The status code component of the body\n * @param {String} [data] The message component of the body\n * @param {Boolean} [mask=false] Specifies whether or not to mask the message\n * @param {Function} [cb] Callback\n * @public\n */\n close(code, data, mask, cb) {\n let buf;\n\n if (code === undefined) {\n buf = EMPTY_BUFFER;\n } else if (typeof code !== 'number' || !isValidStatusCode(code)) {\n throw new TypeError('First argument must be a valid error code number');\n } else if (data === undefined || data === '') {\n buf = Buffer.allocUnsafe(2);\n buf.writeUInt16BE(code, 0);\n } else {\n const length = Buffer.byteLength(data);\n\n if (length > 123) {\n throw new RangeError('The message must not be greater than 123 bytes');\n }\n\n buf = Buffer.allocUnsafe(2 + length);\n buf.writeUInt16BE(code, 0);\n buf.write(data, 2);\n }\n\n if (this._deflating) {\n this.enqueue([this.doClose, buf, mask, cb]);\n } else {\n this.doClose(buf, mask, cb);\n }\n }\n\n /**\n * Frames and sends a close message.\n *\n * @param {Buffer} data The message to send\n * @param {Boolean} [mask=false] Specifies whether or not to mask `data`\n * @param {Function} [cb] Callback\n * @private\n */\n doClose(data, mask, cb) {\n this.sendFrame(\n Sender.frame(data, {\n fin: true,\n rsv1: false,\n opcode: 0x08,\n mask,\n readOnly: false\n }),\n cb\n );\n }\n\n /**\n * Sends a ping message to the other peer.\n *\n * @param {*} data The message to send\n * @param {Boolean} [mask=false] Specifies whether or not to mask `data`\n * @param {Function} [cb] Callback\n * @public\n */\n ping(data, mask, cb) {\n const buf = toBuffer(data);\n\n if (buf.length > 125) {\n throw new RangeError('The data size must not be greater than 125 bytes');\n }\n\n if (this._deflating) {\n this.enqueue([this.doPing, buf, mask, toBuffer.readOnly, cb]);\n } else {\n this.doPing(buf, mask, toBuffer.readOnly, cb);\n }\n }\n\n /**\n * Frames and sends a ping message.\n *\n * @param {Buffer} data The message to send\n * @param {Boolean} [mask=false] Specifies whether or not to mask `data`\n * @param {Boolean} [readOnly=false] Specifies whether `data` can be modified\n * @param {Function} [cb] Callback\n * @private\n */\n doPing(data, mask, readOnly, cb) {\n this.sendFrame(\n Sender.frame(data, {\n fin: true,\n rsv1: false,\n opcode: 0x09,\n mask,\n readOnly\n }),\n cb\n );\n }\n\n /**\n * Sends a pong message to the other peer.\n *\n * @param {*} data The message to send\n * @param {Boolean} [mask=false] Specifies whether or not to mask `data`\n * @param {Function} [cb] Callback\n * @public\n */\n pong(data, mask, cb) {\n const buf = toBuffer(data);\n\n if (buf.length > 125) {\n throw new RangeError('The data size must not be greater than 125 bytes');\n }\n\n if (this._deflating) {\n this.enqueue([this.doPong, buf, mask, toBuffer.readOnly, cb]);\n } else {\n this.doPong(buf, mask, toBuffer.readOnly, cb);\n }\n }\n\n /**\n * Frames and sends a pong message.\n *\n * @param {Buffer} data The message to send\n * @param {Boolean} [mask=false] Specifies whether or not to mask `data`\n * @param {Boolean} [readOnly=false] Specifies whether `data` can be modified\n * @param {Function} [cb] Callback\n * @private\n */\n doPong(data, mask, readOnly, cb) {\n this.sendFrame(\n Sender.frame(data, {\n fin: true,\n rsv1: false,\n opcode: 0x0a,\n mask,\n readOnly\n }),\n cb\n );\n }\n\n /**\n * Sends a data message to the other peer.\n *\n * @param {*} data The message to send\n * @param {Object} options Options object\n * @param {Boolean} [options.compress=false] Specifies whether or not to\n * compress `data`\n * @param {Boolean} [options.binary=false] Specifies whether `data` is binary\n * or text\n * @param {Boolean} [options.fin=false] Specifies whether the fragment is the\n * last one\n * @param {Boolean} [options.mask=false] Specifies whether or not to mask\n * `data`\n * @param {Function} [cb] Callback\n * @public\n */\n send(data, options, cb) {\n const buf = toBuffer(data);\n const perMessageDeflate = this._extensions[PerMessageDeflate.extensionName];\n let opcode = options.binary ? 2 : 1;\n let rsv1 = options.compress;\n\n if (this._firstFragment) {\n this._firstFragment = false;\n if (rsv1 && perMessageDeflate) {\n rsv1 = buf.length >= perMessageDeflate._threshold;\n }\n this._compress = rsv1;\n } else {\n rsv1 = false;\n opcode = 0;\n }\n\n if (options.fin) this._firstFragment = true;\n\n if (perMessageDeflate) {\n const opts = {\n fin: options.fin,\n rsv1,\n opcode,\n mask: options.mask,\n readOnly: toBuffer.readOnly\n };\n\n if (this._deflating) {\n this.enqueue([this.dispatch, buf, this._compress, opts, cb]);\n } else {\n this.dispatch(buf, this._compress, opts, cb);\n }\n } else {\n this.sendFrame(\n Sender.frame(buf, {\n fin: options.fin,\n rsv1: false,\n opcode,\n mask: options.mask,\n readOnly: toBuffer.readOnly\n }),\n cb\n );\n }\n }\n\n /**\n * Dispatches a data message.\n *\n * @param {Buffer} data The message to send\n * @param {Boolean} [compress=false] Specifies whether or not to compress\n * `data`\n * @param {Object} options Options object\n * @param {Number} options.opcode The opcode\n * @param {Boolean} [options.readOnly=false] Specifies whether `data` can be\n * modified\n * @param {Boolean} [options.fin=false] Specifies whether or not to set the\n * FIN bit\n * @param {Boolean} [options.mask=false] Specifies whether or not to mask\n * `data`\n * @param {Boolean} [options.rsv1=false] Specifies whether or not to set the\n * RSV1 bit\n * @param {Function} [cb] Callback\n * @private\n */\n dispatch(data, compress, options, cb) {\n if (!compress) {\n this.sendFrame(Sender.frame(data, options), cb);\n return;\n }\n\n const perMessageDeflate = this._extensions[PerMessageDeflate.extensionName];\n\n this._bufferedBytes += data.length;\n this._deflating = true;\n perMessageDeflate.compress(data, options.fin, (_, buf) => {\n if (this._socket.destroyed) {\n const err = new Error(\n 'The socket was closed while data was being compressed'\n );\n\n if (typeof cb === 'function') cb(err);\n\n for (let i = 0; i < this._queue.length; i++) {\n const callback = this._queue[i][4];\n\n if (typeof callback === 'function') callback(err);\n }\n\n return;\n }\n\n this._bufferedBytes -= data.length;\n this._deflating = false;\n options.readOnly = false;\n this.sendFrame(Sender.frame(buf, options), cb);\n this.dequeue();\n });\n }\n\n /**\n * Executes queued send operations.\n *\n * @private\n */\n dequeue() {\n while (!this._deflating && this._queue.length) {\n const params = this._queue.shift();\n\n this._bufferedBytes -= params[1].length;\n Reflect.apply(params[0], this, params.slice(1));\n }\n }\n\n /**\n * Enqueues a send operation.\n *\n * @param {Array} params Send operation parameters.\n * @private\n */\n enqueue(params) {\n this._bufferedBytes += params[1].length;\n this._queue.push(params);\n }\n\n /**\n * Sends a frame.\n *\n * @param {Buffer[]} list The frame to send\n * @param {Function} [cb] Callback\n * @private\n */\n sendFrame(list, cb) {\n if (list.length === 2) {\n this._socket.cork();\n this._socket.write(list[0]);\n this._socket.write(list[1], cb);\n this._socket.uncork();\n } else {\n this._socket.write(list[0], cb);\n }\n }\n}\n\nmodule.exports = Sender;\n","'use strict';\n\n/**\n * Class representing an event.\n *\n * @private\n */\nclass Event {\n /**\n * Create a new `Event`.\n *\n * @param {String} type The name of the event\n * @param {Object} target A reference to the target to which the event was\n * dispatched\n */\n constructor(type, target) {\n this.target = target;\n this.type = type;\n }\n}\n\n/**\n * Class representing a message event.\n *\n * @extends Event\n * @private\n */\nclass MessageEvent extends Event {\n /**\n * Create a new `MessageEvent`.\n *\n * @param {(String|Buffer|ArrayBuffer|Buffer[])} data The received data\n * @param {WebSocket} target A reference to the target to which the event was\n * dispatched\n */\n constructor(data, target) {\n super('message', target);\n\n this.data = data;\n }\n}\n\n/**\n * Class representing a close event.\n *\n * @extends Event\n * @private\n */\nclass CloseEvent extends Event {\n /**\n * Create a new `CloseEvent`.\n *\n * @param {Number} code The status code explaining why the connection is being\n * closed\n * @param {String} reason A human-readable string explaining why the\n * connection is closing\n * @param {WebSocket} target A reference to the target to which the event was\n * dispatched\n */\n constructor(code, reason, target) {\n super('close', target);\n\n this.wasClean = target._closeFrameReceived && target._closeFrameSent;\n this.reason = reason;\n this.code = code;\n }\n}\n\n/**\n * Class representing an open event.\n *\n * @extends Event\n * @private\n */\nclass OpenEvent extends Event {\n /**\n * Create a new `OpenEvent`.\n *\n * @param {WebSocket} target A reference to the target to which the event was\n * dispatched\n */\n constructor(target) {\n super('open', target);\n }\n}\n\n/**\n * Class representing an error event.\n *\n * @extends Event\n * @private\n */\nclass ErrorEvent extends Event {\n /**\n * Create a new `ErrorEvent`.\n *\n * @param {Object} error The error that generated this event\n * @param {WebSocket} target A reference to the target to which the event was\n * dispatched\n */\n constructor(error, target) {\n super('error', target);\n\n this.message = error.message;\n this.error = error;\n }\n}\n\n/**\n * This provides methods for emulating the `EventTarget` interface. It's not\n * meant to be used directly.\n *\n * @mixin\n */\nconst EventTarget = {\n /**\n * Register an event listener.\n *\n * @param {String} type A string representing the event type to listen for\n * @param {Function} listener The listener to add\n * @param {Object} [options] An options object specifies characteristics about\n * the event listener\n * @param {Boolean} [options.once=false] A `Boolean`` indicating that the\n * listener should be invoked at most once after being added. If `true`,\n * the listener would be automatically removed when invoked.\n * @public\n */\n addEventListener(type, listener, options) {\n if (typeof listener !== 'function') return;\n\n function onMessage(data) {\n listener.call(this, new MessageEvent(data, this));\n }\n\n function onClose(code, message) {\n listener.call(this, new CloseEvent(code, message, this));\n }\n\n function onError(error) {\n listener.call(this, new ErrorEvent(error, this));\n }\n\n function onOpen() {\n listener.call(this, new OpenEvent(this));\n }\n\n const method = options && options.once ? 'once' : 'on';\n\n if (type === 'message') {\n onMessage._listener = listener;\n this[method](type, onMessage);\n } else if (type === 'close') {\n onClose._listener = listener;\n this[method](type, onClose);\n } else if (type === 'error') {\n onError._listener = listener;\n this[method](type, onError);\n } else if (type === 'open') {\n onOpen._listener = listener;\n this[method](type, onOpen);\n } else {\n this[method](type, listener);\n }\n },\n\n /**\n * Remove an event listener.\n *\n * @param {String} type A string representing the event type to remove\n * @param {Function} listener The listener to remove\n * @public\n */\n removeEventListener(type, listener) {\n const listeners = this.listeners(type);\n\n for (let i = 0; i < listeners.length; i++) {\n if (listeners[i] === listener || listeners[i]._listener === listener) {\n this.removeListener(type, listeners[i]);\n }\n }\n }\n};\n\nmodule.exports = EventTarget;\n","'use strict';\n\n//\n// Allowed token characters:\n//\n// '!', '#', '$', '%', '&', ''', '*', '+', '-',\n// '.', 0-9, A-Z, '^', '_', '`', a-z, '|', '~'\n//\n// tokenChars[32] === 0 // ' '\n// tokenChars[33] === 1 // '!'\n// tokenChars[34] === 0 // '\"'\n// ...\n//\n// prettier-ignore\nconst tokenChars = [\n 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, // 0 - 15\n 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, // 16 - 31\n 0, 1, 0, 1, 1, 1, 1, 1, 0, 0, 1, 1, 0, 1, 1, 0, // 32 - 47\n 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, // 48 - 63\n 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, // 64 - 79\n 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 1, 1, // 80 - 95\n 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, // 96 - 111\n 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 1, 0, 1, 0 // 112 - 127\n];\n\n/**\n * Adds an offer to the map of extension offers or a parameter to the map of\n * parameters.\n *\n * @param {Object} dest The map of extension offers or parameters\n * @param {String} name The extension or parameter name\n * @param {(Object|Boolean|String)} elem The extension parameters or the\n * parameter value\n * @private\n */\nfunction push(dest, name, elem) {\n if (dest[name] === undefined) dest[name] = [elem];\n else dest[name].push(elem);\n}\n\n/**\n * Parses the `Sec-WebSocket-Extensions` header into an object.\n *\n * @param {String} header The field value of the header\n * @return {Object} The parsed object\n * @public\n */\nfunction parse(header) {\n const offers = Object.create(null);\n\n if (header === undefined || header === '') return offers;\n\n let params = Object.create(null);\n let mustUnescape = false;\n let isEscaping = false;\n let inQuotes = false;\n let extensionName;\n let paramName;\n let start = -1;\n let end = -1;\n let i = 0;\n\n for (; i < header.length; i++) {\n const code = header.charCodeAt(i);\n\n if (extensionName === undefined) {\n if (end === -1 && tokenChars[code] === 1) {\n if (start === -1) start = i;\n } else if (code === 0x20 /* ' ' */ || code === 0x09 /* '\\t' */) {\n if (end === -1 && start !== -1) end = i;\n } else if (code === 0x3b /* ';' */ || code === 0x2c /* ',' */) {\n if (start === -1) {\n throw new SyntaxError(`Unexpected character at index ${i}`);\n }\n\n if (end === -1) end = i;\n const name = header.slice(start, end);\n if (code === 0x2c) {\n push(offers, name, params);\n params = Object.create(null);\n } else {\n extensionName = name;\n }\n\n start = end = -1;\n } else {\n throw new SyntaxError(`Unexpected character at index ${i}`);\n }\n } else if (paramName === undefined) {\n if (end === -1 && tokenChars[code] === 1) {\n if (start === -1) start = i;\n } else if (code === 0x20 || code === 0x09) {\n if (end === -1 && start !== -1) end = i;\n } else if (code === 0x3b || code === 0x2c) {\n if (start === -1) {\n throw new SyntaxError(`Unexpected character at index ${i}`);\n }\n\n if (end === -1) end = i;\n push(params, header.slice(start, end), true);\n if (code === 0x2c) {\n push(offers, extensionName, params);\n params = Object.create(null);\n extensionName = undefined;\n }\n\n start = end = -1;\n } else if (code === 0x3d /* '=' */ && start !== -1 && end === -1) {\n paramName = header.slice(start, i);\n start = end = -1;\n } else {\n throw new SyntaxError(`Unexpected character at index ${i}`);\n }\n } else {\n //\n // The value of a quoted-string after unescaping must conform to the\n // token ABNF, so only token characters are valid.\n // Ref: https://tools.ietf.org/html/rfc6455#section-9.1\n //\n if (isEscaping) {\n if (tokenChars[code] !== 1) {\n throw new SyntaxError(`Unexpected character at index ${i}`);\n }\n if (start === -1) start = i;\n else if (!mustUnescape) mustUnescape = true;\n isEscaping = false;\n } else if (inQuotes) {\n if (tokenChars[code] === 1) {\n if (start === -1) start = i;\n } else if (code === 0x22 /* '\"' */ && start !== -1) {\n inQuotes = false;\n end = i;\n } else if (code === 0x5c /* '\\' */) {\n isEscaping = true;\n } else {\n throw new SyntaxError(`Unexpected character at index ${i}`);\n }\n } else if (code === 0x22 && header.charCodeAt(i - 1) === 0x3d) {\n inQuotes = true;\n } else if (end === -1 && tokenChars[code] === 1) {\n if (start === -1) start = i;\n } else if (start !== -1 && (code === 0x20 || code === 0x09)) {\n if (end === -1) end = i;\n } else if (code === 0x3b || code === 0x2c) {\n if (start === -1) {\n throw new SyntaxError(`Unexpected character at index ${i}`);\n }\n\n if (end === -1) end = i;\n let value = header.slice(start, end);\n if (mustUnescape) {\n value = value.replace(/\\\\/g, '');\n mustUnescape = false;\n }\n push(params, paramName, value);\n if (code === 0x2c) {\n push(offers, extensionName, params);\n params = Object.create(null);\n extensionName = undefined;\n }\n\n paramName = undefined;\n start = end = -1;\n } else {\n throw new SyntaxError(`Unexpected character at index ${i}`);\n }\n }\n }\n\n if (start === -1 || inQuotes) {\n throw new SyntaxError('Unexpected end of input');\n }\n\n if (end === -1) end = i;\n const token = header.slice(start, end);\n if (extensionName === undefined) {\n push(offers, token, params);\n } else {\n if (paramName === undefined) {\n push(params, token, true);\n } else if (mustUnescape) {\n push(params, paramName, token.replace(/\\\\/g, ''));\n } else {\n push(params, paramName, token);\n }\n push(offers, extensionName, params);\n }\n\n return offers;\n}\n\n/**\n * Builds the `Sec-WebSocket-Extensions` header field value.\n *\n * @param {Object} extensions The map of extensions and parameters to format\n * @return {String} A string representing the given object\n * @public\n */\nfunction format(extensions) {\n return Object.keys(extensions)\n .map((extension) => {\n let configurations = extensions[extension];\n if (!Array.isArray(configurations)) configurations = [configurations];\n return configurations\n .map((params) => {\n return [extension]\n .concat(\n Object.keys(params).map((k) => {\n let values = params[k];\n if (!Array.isArray(values)) values = [values];\n return values\n .map((v) => (v === true ? k : `${k}=${v}`))\n .join('; ');\n })\n )\n .join('; ');\n })\n .join(', ');\n })\n .join(', ');\n}\n\nmodule.exports = { format, parse };\n","/* eslint no-unused-vars: [\"error\", { \"varsIgnorePattern\": \"^Readable$\" }] */\n\n'use strict';\n\nconst EventEmitter = require('events');\nconst https = require('https');\nconst http = require('http');\nconst net = require('net');\nconst tls = require('tls');\nconst { randomBytes, createHash } = require('crypto');\nconst { Readable } = require('stream');\nconst { URL } = require('url');\n\nconst PerMessageDeflate = require('./permessage-deflate');\nconst Receiver = require('./receiver');\nconst Sender = require('./sender');\nconst {\n BINARY_TYPES,\n EMPTY_BUFFER,\n GUID,\n kStatusCode,\n kWebSocket,\n NOOP\n} = require('./constants');\nconst { addEventListener, removeEventListener } = require('./event-target');\nconst { format, parse } = require('./extension');\nconst { toBuffer } = require('./buffer-util');\n\nconst readyStates = ['CONNECTING', 'OPEN', 'CLOSING', 'CLOSED'];\nconst protocolVersions = [8, 13];\nconst closeTimeout = 30 * 1000;\n\n/**\n * Class representing a WebSocket.\n *\n * @extends EventEmitter\n */\nclass WebSocket extends EventEmitter {\n /**\n * Create a new `WebSocket`.\n *\n * @param {(String|URL)} address The URL to which to connect\n * @param {(String|String[])} [protocols] The subprotocols\n * @param {Object} [options] Connection options\n */\n constructor(address, protocols, options) {\n super();\n\n this._binaryType = BINARY_TYPES[0];\n this._closeCode = 1006;\n this._closeFrameReceived = false;\n this._closeFrameSent = false;\n this._closeMessage = '';\n this._closeTimer = null;\n this._extensions = {};\n this._protocol = '';\n this._readyState = WebSocket.CONNECTING;\n this._receiver = null;\n this._sender = null;\n this._socket = null;\n\n if (address !== null) {\n this._bufferedAmount = 0;\n this._isServer = false;\n this._redirects = 0;\n\n if (Array.isArray(protocols)) {\n protocols = protocols.join(', ');\n } else if (typeof protocols === 'object' && protocols !== null) {\n options = protocols;\n protocols = undefined;\n }\n\n initAsClient(this, address, protocols, options);\n } else {\n this._isServer = true;\n }\n }\n\n /**\n * This deviates from the WHATWG interface since ws doesn't support the\n * required default \"blob\" type (instead we define a custom \"nodebuffer\"\n * type).\n *\n * @type {String}\n */\n get binaryType() {\n return this._binaryType;\n }\n\n set binaryType(type) {\n if (!BINARY_TYPES.includes(type)) return;\n\n this._binaryType = type;\n\n //\n // Allow to change `binaryType` on the fly.\n //\n if (this._receiver) this._receiver._binaryType = type;\n }\n\n /**\n * @type {Number}\n */\n get bufferedAmount() {\n if (!this._socket) return this._bufferedAmount;\n\n return this._socket._writableState.length + this._sender._bufferedBytes;\n }\n\n /**\n * @type {String}\n */\n get extensions() {\n return Object.keys(this._extensions).join();\n }\n\n /**\n * @type {Function}\n */\n /* istanbul ignore next */\n get onclose() {\n return undefined;\n }\n\n /* istanbul ignore next */\n set onclose(listener) {}\n\n /**\n * @type {Function}\n */\n /* istanbul ignore next */\n get onerror() {\n return undefined;\n }\n\n /* istanbul ignore next */\n set onerror(listener) {}\n\n /**\n * @type {Function}\n */\n /* istanbul ignore next */\n get onopen() {\n return undefined;\n }\n\n /* istanbul ignore next */\n set onopen(listener) {}\n\n /**\n * @type {Function}\n */\n /* istanbul ignore next */\n get onmessage() {\n return undefined;\n }\n\n /* istanbul ignore next */\n set onmessage(listener) {}\n\n /**\n * @type {String}\n */\n get protocol() {\n return this._protocol;\n }\n\n /**\n * @type {Number}\n */\n get readyState() {\n return this._readyState;\n }\n\n /**\n * @type {String}\n */\n get url() {\n return this._url;\n }\n\n /**\n * Set up the socket and the internal resources.\n *\n * @param {(net.Socket|tls.Socket)} socket The network socket between the\n * server and client\n * @param {Buffer} head The first packet of the upgraded stream\n * @param {Number} [maxPayload=0] The maximum allowed message size\n * @private\n */\n setSocket(socket, head, maxPayload) {\n const receiver = new Receiver(\n this.binaryType,\n this._extensions,\n this._isServer,\n maxPayload\n );\n\n this._sender = new Sender(socket, this._extensions);\n this._receiver = receiver;\n this._socket = socket;\n\n receiver[kWebSocket] = this;\n socket[kWebSocket] = this;\n\n receiver.on('conclude', receiverOnConclude);\n receiver.on('drain', receiverOnDrain);\n receiver.on('error', receiverOnError);\n receiver.on('message', receiverOnMessage);\n receiver.on('ping', receiverOnPing);\n receiver.on('pong', receiverOnPong);\n\n socket.setTimeout(0);\n socket.setNoDelay();\n\n if (head.length > 0) socket.unshift(head);\n\n socket.on('close', socketOnClose);\n socket.on('data', socketOnData);\n socket.on('end', socketOnEnd);\n socket.on('error', socketOnError);\n\n this._readyState = WebSocket.OPEN;\n this.emit('open');\n }\n\n /**\n * Emit the `'close'` event.\n *\n * @private\n */\n emitClose() {\n if (!this._socket) {\n this._readyState = WebSocket.CLOSED;\n this.emit('close', this._closeCode, this._closeMessage);\n return;\n }\n\n if (this._extensions[PerMessageDeflate.extensionName]) {\n this._extensions[PerMessageDeflate.extensionName].cleanup();\n }\n\n this._receiver.removeAllListeners();\n this._readyState = WebSocket.CLOSED;\n this.emit('close', this._closeCode, this._closeMessage);\n }\n\n /**\n * Start a closing handshake.\n *\n * +----------+ +-----------+ +----------+\n * - - -|ws.close()|-->|close frame|-->|ws.close()|- - -\n * | +----------+ +-----------+ +----------+ |\n * +----------+ +-----------+ |\n * CLOSING |ws.close()|<--|close frame|<--+-----+ CLOSING\n * +----------+ +-----------+ |\n * | | | +---+ |\n * +------------------------+-->|fin| - - - -\n * | +---+ | +---+\n * - - - - -|fin|<---------------------+\n * +---+\n *\n * @param {Number} [code] Status code explaining why the connection is closing\n * @param {String} [data] A string explaining why the connection is closing\n * @public\n */\n close(code, data) {\n if (this.readyState === WebSocket.CLOSED) return;\n if (this.readyState === WebSocket.CONNECTING) {\n const msg = 'WebSocket was closed before the connection was established';\n return abortHandshake(this, this._req, msg);\n }\n\n if (this.readyState === WebSocket.CLOSING) {\n if (\n this._closeFrameSent &&\n (this._closeFrameReceived || this._receiver._writableState.errorEmitted)\n ) {\n this._socket.end();\n }\n\n return;\n }\n\n this._readyState = WebSocket.CLOSING;\n this._sender.close(code, data, !this._isServer, (err) => {\n //\n // This error is handled by the `'error'` listener on the socket. We only\n // want to know if the close frame has been sent here.\n //\n if (err) return;\n\n this._closeFrameSent = true;\n\n if (\n this._closeFrameReceived ||\n this._receiver._writableState.errorEmitted\n ) {\n this._socket.end();\n }\n });\n\n //\n // Specify a timeout for the closing handshake to complete.\n //\n this._closeTimer = setTimeout(\n this._socket.destroy.bind(this._socket),\n closeTimeout\n );\n }\n\n /**\n * Send a ping.\n *\n * @param {*} [data] The data to send\n * @param {Boolean} [mask] Indicates whether or not to mask `data`\n * @param {Function} [cb] Callback which is executed when the ping is sent\n * @public\n */\n ping(data, mask, cb) {\n if (this.readyState === WebSocket.CONNECTING) {\n throw new Error('WebSocket is not open: readyState 0 (CONNECTING)');\n }\n\n if (typeof data === 'function') {\n cb = data;\n data = mask = undefined;\n } else if (typeof mask === 'function') {\n cb = mask;\n mask = undefined;\n }\n\n if (typeof data === 'number') data = data.toString();\n\n if (this.readyState !== WebSocket.OPEN) {\n sendAfterClose(this, data, cb);\n return;\n }\n\n if (mask === undefined) mask = !this._isServer;\n this._sender.ping(data || EMPTY_BUFFER, mask, cb);\n }\n\n /**\n * Send a pong.\n *\n * @param {*} [data] The data to send\n * @param {Boolean} [mask] Indicates whether or not to mask `data`\n * @param {Function} [cb] Callback which is executed when the pong is sent\n * @public\n */\n pong(data, mask, cb) {\n if (this.readyState === WebSocket.CONNECTING) {\n throw new Error('WebSocket is not open: readyState 0 (CONNECTING)');\n }\n\n if (typeof data === 'function') {\n cb = data;\n data = mask = undefined;\n } else if (typeof mask === 'function') {\n cb = mask;\n mask = undefined;\n }\n\n if (typeof data === 'number') data = data.toString();\n\n if (this.readyState !== WebSocket.OPEN) {\n sendAfterClose(this, data, cb);\n return;\n }\n\n if (mask === undefined) mask = !this._isServer;\n this._sender.pong(data || EMPTY_BUFFER, mask, cb);\n }\n\n /**\n * Send a data message.\n *\n * @param {*} data The message to send\n * @param {Object} [options] Options object\n * @param {Boolean} [options.compress] Specifies whether or not to compress\n * `data`\n * @param {Boolean} [options.binary] Specifies whether `data` is binary or\n * text\n * @param {Boolean} [options.fin=true] Specifies whether the fragment is the\n * last one\n * @param {Boolean} [options.mask] Specifies whether or not to mask `data`\n * @param {Function} [cb] Callback which is executed when data is written out\n * @public\n */\n send(data, options, cb) {\n if (this.readyState === WebSocket.CONNECTING) {\n throw new Error('WebSocket is not open: readyState 0 (CONNECTING)');\n }\n\n if (typeof options === 'function') {\n cb = options;\n options = {};\n }\n\n if (typeof data === 'number') data = data.toString();\n\n if (this.readyState !== WebSocket.OPEN) {\n sendAfterClose(this, data, cb);\n return;\n }\n\n const opts = {\n binary: typeof data !== 'string',\n mask: !this._isServer,\n compress: true,\n fin: true,\n ...options\n };\n\n if (!this._extensions[PerMessageDeflate.extensionName]) {\n opts.compress = false;\n }\n\n this._sender.send(data || EMPTY_BUFFER, opts, cb);\n }\n\n /**\n * Forcibly close the connection.\n *\n * @public\n */\n terminate() {\n if (this.readyState === WebSocket.CLOSED) return;\n if (this.readyState === WebSocket.CONNECTING) {\n const msg = 'WebSocket was closed before the connection was established';\n return abortHandshake(this, this._req, msg);\n }\n\n if (this._socket) {\n this._readyState = WebSocket.CLOSING;\n this._socket.destroy();\n }\n }\n}\n\n/**\n * @constant {Number} CONNECTING\n * @memberof WebSocket\n */\nObject.defineProperty(WebSocket, 'CONNECTING', {\n enumerable: true,\n value: readyStates.indexOf('CONNECTING')\n});\n\n/**\n * @constant {Number} CONNECTING\n * @memberof WebSocket.prototype\n */\nObject.defineProperty(WebSocket.prototype, 'CONNECTING', {\n enumerable: true,\n value: readyStates.indexOf('CONNECTING')\n});\n\n/**\n * @constant {Number} OPEN\n * @memberof WebSocket\n */\nObject.defineProperty(WebSocket, 'OPEN', {\n enumerable: true,\n value: readyStates.indexOf('OPEN')\n});\n\n/**\n * @constant {Number} OPEN\n * @memberof WebSocket.prototype\n */\nObject.defineProperty(WebSocket.prototype, 'OPEN', {\n enumerable: true,\n value: readyStates.indexOf('OPEN')\n});\n\n/**\n * @constant {Number} CLOSING\n * @memberof WebSocket\n */\nObject.defineProperty(WebSocket, 'CLOSING', {\n enumerable: true,\n value: readyStates.indexOf('CLOSING')\n});\n\n/**\n * @constant {Number} CLOSING\n * @memberof WebSocket.prototype\n */\nObject.defineProperty(WebSocket.prototype, 'CLOSING', {\n enumerable: true,\n value: readyStates.indexOf('CLOSING')\n});\n\n/**\n * @constant {Number} CLOSED\n * @memberof WebSocket\n */\nObject.defineProperty(WebSocket, 'CLOSED', {\n enumerable: true,\n value: readyStates.indexOf('CLOSED')\n});\n\n/**\n * @constant {Number} CLOSED\n * @memberof WebSocket.prototype\n */\nObject.defineProperty(WebSocket.prototype, 'CLOSED', {\n enumerable: true,\n value: readyStates.indexOf('CLOSED')\n});\n\n[\n 'binaryType',\n 'bufferedAmount',\n 'extensions',\n 'protocol',\n 'readyState',\n 'url'\n].forEach((property) => {\n Object.defineProperty(WebSocket.prototype, property, { enumerable: true });\n});\n\n//\n// Add the `onopen`, `onerror`, `onclose`, and `onmessage` attributes.\n// See https://html.spec.whatwg.org/multipage/comms.html#the-websocket-interface\n//\n['open', 'error', 'close', 'message'].forEach((method) => {\n Object.defineProperty(WebSocket.prototype, `on${method}`, {\n enumerable: true,\n get() {\n const listeners = this.listeners(method);\n for (let i = 0; i < listeners.length; i++) {\n if (listeners[i]._listener) return listeners[i]._listener;\n }\n\n return undefined;\n },\n set(listener) {\n const listeners = this.listeners(method);\n for (let i = 0; i < listeners.length; i++) {\n //\n // Remove only the listeners added via `addEventListener`.\n //\n if (listeners[i]._listener) this.removeListener(method, listeners[i]);\n }\n this.addEventListener(method, listener);\n }\n });\n});\n\nWebSocket.prototype.addEventListener = addEventListener;\nWebSocket.prototype.removeEventListener = removeEventListener;\n\nmodule.exports = WebSocket;\n\n/**\n * Initialize a WebSocket client.\n *\n * @param {WebSocket} websocket The client to initialize\n * @param {(String|URL)} address The URL to which to connect\n * @param {String} [protocols] The subprotocols\n * @param {Object} [options] Connection options\n * @param {(Boolean|Object)} [options.perMessageDeflate=true] Enable/disable\n * permessage-deflate\n * @param {Number} [options.handshakeTimeout] Timeout in milliseconds for the\n * handshake request\n * @param {Number} [options.protocolVersion=13] Value of the\n * `Sec-WebSocket-Version` header\n * @param {String} [options.origin] Value of the `Origin` or\n * `Sec-WebSocket-Origin` header\n * @param {Number} [options.maxPayload=104857600] The maximum allowed message\n * size\n * @param {Boolean} [options.followRedirects=false] Whether or not to follow\n * redirects\n * @param {Number} [options.maxRedirects=10] The maximum number of redirects\n * allowed\n * @private\n */\nfunction initAsClient(websocket, address, protocols, options) {\n const opts = {\n protocolVersion: protocolVersions[1],\n maxPayload: 100 * 1024 * 1024,\n perMessageDeflate: true,\n followRedirects: false,\n maxRedirects: 10,\n ...options,\n createConnection: undefined,\n socketPath: undefined,\n hostname: undefined,\n protocol: undefined,\n timeout: undefined,\n method: undefined,\n host: undefined,\n path: undefined,\n port: undefined\n };\n\n if (!protocolVersions.includes(opts.protocolVersion)) {\n throw new RangeError(\n `Unsupported protocol version: ${opts.protocolVersion} ` +\n `(supported versions: ${protocolVersions.join(', ')})`\n );\n }\n\n let parsedUrl;\n\n if (address instanceof URL) {\n parsedUrl = address;\n websocket._url = address.href;\n } else {\n parsedUrl = new URL(address);\n websocket._url = address;\n }\n\n const isUnixSocket = parsedUrl.protocol === 'ws+unix:';\n\n if (!parsedUrl.host && (!isUnixSocket || !parsedUrl.pathname)) {\n const err = new Error(`Invalid URL: ${websocket.url}`);\n\n if (websocket._redirects === 0) {\n throw err;\n } else {\n emitErrorAndClose(websocket, err);\n return;\n }\n }\n\n const isSecure =\n parsedUrl.protocol === 'wss:' || parsedUrl.protocol === 'https:';\n const defaultPort = isSecure ? 443 : 80;\n const key = randomBytes(16).toString('base64');\n const get = isSecure ? https.get : http.get;\n let perMessageDeflate;\n\n opts.createConnection = isSecure ? tlsConnect : netConnect;\n opts.defaultPort = opts.defaultPort || defaultPort;\n opts.port = parsedUrl.port || defaultPort;\n opts.host = parsedUrl.hostname.startsWith('[')\n ? parsedUrl.hostname.slice(1, -1)\n : parsedUrl.hostname;\n opts.headers = {\n 'Sec-WebSocket-Version': opts.protocolVersion,\n 'Sec-WebSocket-Key': key,\n Connection: 'Upgrade',\n Upgrade: 'websocket',\n ...opts.headers\n };\n opts.path = parsedUrl.pathname + parsedUrl.search;\n opts.timeout = opts.handshakeTimeout;\n\n if (opts.perMessageDeflate) {\n perMessageDeflate = new PerMessageDeflate(\n opts.perMessageDeflate !== true ? opts.perMessageDeflate : {},\n false,\n opts.maxPayload\n );\n opts.headers['Sec-WebSocket-Extensions'] = format({\n [PerMessageDeflate.extensionName]: perMessageDeflate.offer()\n });\n }\n if (protocols) {\n opts.headers['Sec-WebSocket-Protocol'] = protocols;\n }\n if (opts.origin) {\n if (opts.protocolVersion < 13) {\n opts.headers['Sec-WebSocket-Origin'] = opts.origin;\n } else {\n opts.headers.Origin = opts.origin;\n }\n }\n if (parsedUrl.username || parsedUrl.password) {\n opts.auth = `${parsedUrl.username}:${parsedUrl.password}`;\n }\n\n if (isUnixSocket) {\n const parts = opts.path.split(':');\n\n opts.socketPath = parts[0];\n opts.path = parts[1];\n }\n\n if (opts.followRedirects) {\n if (websocket._redirects === 0) {\n websocket._originalUnixSocket = isUnixSocket;\n websocket._originalSecure = isSecure;\n websocket._originalHostOrSocketPath = isUnixSocket\n ? opts.socketPath\n : parsedUrl.host;\n\n const headers = options && options.headers;\n\n //\n // Shallow copy the user provided options so that headers can be changed\n // without mutating the original object.\n //\n options = { ...options, headers: {} };\n\n if (headers) {\n for (const [key, value] of Object.entries(headers)) {\n options.headers[key.toLowerCase()] = value;\n }\n }\n } else {\n const isSameHost = isUnixSocket\n ? websocket._originalUnixSocket\n ? opts.socketPath === websocket._originalHostOrSocketPath\n : false\n : websocket._originalUnixSocket\n ? false\n : parsedUrl.host === websocket._originalHostOrSocketPath;\n\n if (!isSameHost || (websocket._originalSecure && !isSecure)) {\n //\n // Match curl 7.77.0 behavior and drop the following headers. These\n // headers are also dropped when following a redirect to a subdomain.\n //\n delete opts.headers.authorization;\n delete opts.headers.cookie;\n\n if (!isSameHost) delete opts.headers.host;\n\n opts.auth = undefined;\n }\n }\n\n //\n // Match curl 7.77.0 behavior and make the first `Authorization` header win.\n // If the `Authorization` header is set, then there is nothing to do as it\n // will take precedence.\n //\n if (opts.auth && !options.headers.authorization) {\n options.headers.authorization =\n 'Basic ' + Buffer.from(opts.auth).toString('base64');\n }\n }\n\n let req = (websocket._req = get(opts));\n\n if (opts.timeout) {\n req.on('timeout', () => {\n abortHandshake(websocket, req, 'Opening handshake has timed out');\n });\n }\n\n req.on('error', (err) => {\n if (req === null || req.aborted) return;\n\n req = websocket._req = null;\n emitErrorAndClose(websocket, err);\n });\n\n req.on('response', (res) => {\n const location = res.headers.location;\n const statusCode = res.statusCode;\n\n if (\n location &&\n opts.followRedirects &&\n statusCode >= 300 &&\n statusCode < 400\n ) {\n if (++websocket._redirects > opts.maxRedirects) {\n abortHandshake(websocket, req, 'Maximum redirects exceeded');\n return;\n }\n\n req.abort();\n\n let addr;\n\n try {\n addr = new URL(location, address);\n } catch (err) {\n emitErrorAndClose(websocket, err);\n return;\n }\n\n initAsClient(websocket, addr, protocols, options);\n } else if (!websocket.emit('unexpected-response', req, res)) {\n abortHandshake(\n websocket,\n req,\n `Unexpected server response: ${res.statusCode}`\n );\n }\n });\n\n req.on('upgrade', (res, socket, head) => {\n websocket.emit('upgrade', res);\n\n //\n // The user may have closed the connection from a listener of the `upgrade`\n // event.\n //\n if (websocket.readyState !== WebSocket.CONNECTING) return;\n\n req = websocket._req = null;\n\n const upgrade = res.headers.upgrade;\n\n if (upgrade === undefined || upgrade.toLowerCase() !== 'websocket') {\n abortHandshake(websocket, socket, 'Invalid Upgrade header');\n return;\n }\n\n const digest = createHash('sha1')\n .update(key + GUID)\n .digest('base64');\n\n if (res.headers['sec-websocket-accept'] !== digest) {\n abortHandshake(websocket, socket, 'Invalid Sec-WebSocket-Accept header');\n return;\n }\n\n const serverProt = res.headers['sec-websocket-protocol'];\n const protList = (protocols || '').split(/, */);\n let protError;\n\n if (!protocols && serverProt) {\n protError = 'Server sent a subprotocol but none was requested';\n } else if (protocols && !serverProt) {\n protError = 'Server sent no subprotocol';\n } else if (serverProt && !protList.includes(serverProt)) {\n protError = 'Server sent an invalid subprotocol';\n }\n\n if (protError) {\n abortHandshake(websocket, socket, protError);\n return;\n }\n\n if (serverProt) websocket._protocol = serverProt;\n\n const secWebSocketExtensions = res.headers['sec-websocket-extensions'];\n\n if (secWebSocketExtensions !== undefined) {\n if (!perMessageDeflate) {\n const message =\n 'Server sent a Sec-WebSocket-Extensions header but no extension ' +\n 'was requested';\n abortHandshake(websocket, socket, message);\n return;\n }\n\n let extensions;\n\n try {\n extensions = parse(secWebSocketExtensions);\n } catch (err) {\n const message = 'Invalid Sec-WebSocket-Extensions header';\n abortHandshake(websocket, socket, message);\n return;\n }\n\n const extensionNames = Object.keys(extensions);\n\n if (extensionNames.length) {\n if (\n extensionNames.length !== 1 ||\n extensionNames[0] !== PerMessageDeflate.extensionName\n ) {\n const message =\n 'Server indicated an extension that was not requested';\n abortHandshake(websocket, socket, message);\n return;\n }\n\n try {\n perMessageDeflate.accept(extensions[PerMessageDeflate.extensionName]);\n } catch (err) {\n const message = 'Invalid Sec-WebSocket-Extensions header';\n abortHandshake(websocket, socket, message);\n return;\n }\n\n websocket._extensions[PerMessageDeflate.extensionName] =\n perMessageDeflate;\n }\n }\n\n websocket.setSocket(socket, head, opts.maxPayload);\n });\n}\n\n/**\n * Emit the `'error'` and `'close'` event.\n *\n * @param {WebSocket} websocket The WebSocket instance\n * @param {Error} The error to emit\n * @private\n */\nfunction emitErrorAndClose(websocket, err) {\n websocket._readyState = WebSocket.CLOSING;\n websocket.emit('error', err);\n websocket.emitClose();\n}\n\n/**\n * Create a `net.Socket` and initiate a connection.\n *\n * @param {Object} options Connection options\n * @return {net.Socket} The newly created socket used to start the connection\n * @private\n */\nfunction netConnect(options) {\n options.path = options.socketPath;\n return net.connect(options);\n}\n\n/**\n * Create a `tls.TLSSocket` and initiate a connection.\n *\n * @param {Object} options Connection options\n * @return {tls.TLSSocket} The newly created socket used to start the connection\n * @private\n */\nfunction tlsConnect(options) {\n options.path = undefined;\n\n if (!options.servername && options.servername !== '') {\n options.servername = net.isIP(options.host) ? '' : options.host;\n }\n\n return tls.connect(options);\n}\n\n/**\n * Abort the handshake and emit an error.\n *\n * @param {WebSocket} websocket The WebSocket instance\n * @param {(http.ClientRequest|net.Socket|tls.Socket)} stream The request to\n * abort or the socket to destroy\n * @param {String} message The error message\n * @private\n */\nfunction abortHandshake(websocket, stream, message) {\n websocket._readyState = WebSocket.CLOSING;\n\n const err = new Error(message);\n Error.captureStackTrace(err, abortHandshake);\n\n if (stream.setHeader) {\n stream.abort();\n\n if (stream.socket && !stream.socket.destroyed) {\n //\n // On Node.js >= 14.3.0 `request.abort()` does not destroy the socket if\n // called after the request completed. See\n // https://github.com/websockets/ws/issues/1869.\n //\n stream.socket.destroy();\n }\n\n stream.once('abort', websocket.emitClose.bind(websocket));\n websocket.emit('error', err);\n } else {\n stream.destroy(err);\n stream.once('error', websocket.emit.bind(websocket, 'error'));\n stream.once('close', websocket.emitClose.bind(websocket));\n }\n}\n\n/**\n * Handle cases where the `ping()`, `pong()`, or `send()` methods are called\n * when the `readyState` attribute is `CLOSING` or `CLOSED`.\n *\n * @param {WebSocket} websocket The WebSocket instance\n * @param {*} [data] The data to send\n * @param {Function} [cb] Callback\n * @private\n */\nfunction sendAfterClose(websocket, data, cb) {\n if (data) {\n const length = toBuffer(data).length;\n\n //\n // The `_bufferedAmount` property is used only when the peer is a client and\n // the opening handshake fails. Under these circumstances, in fact, the\n // `setSocket()` method is not called, so the `_socket` and `_sender`\n // properties are set to `null`.\n //\n if (websocket._socket) websocket._sender._bufferedBytes += length;\n else websocket._bufferedAmount += length;\n }\n\n if (cb) {\n const err = new Error(\n `WebSocket is not open: readyState ${websocket.readyState} ` +\n `(${readyStates[websocket.readyState]})`\n );\n cb(err);\n }\n}\n\n/**\n * The listener of the `Receiver` `'conclude'` event.\n *\n * @param {Number} code The status code\n * @param {String} reason The reason for closing\n * @private\n */\nfunction receiverOnConclude(code, reason) {\n const websocket = this[kWebSocket];\n\n websocket._closeFrameReceived = true;\n websocket._closeMessage = reason;\n websocket._closeCode = code;\n\n if (websocket._socket[kWebSocket] === undefined) return;\n\n websocket._socket.removeListener('data', socketOnData);\n process.nextTick(resume, websocket._socket);\n\n if (code === 1005) websocket.close();\n else websocket.close(code, reason);\n}\n\n/**\n * The listener of the `Receiver` `'drain'` event.\n *\n * @private\n */\nfunction receiverOnDrain() {\n this[kWebSocket]._socket.resume();\n}\n\n/**\n * The listener of the `Receiver` `'error'` event.\n *\n * @param {(RangeError|Error)} err The emitted error\n * @private\n */\nfunction receiverOnError(err) {\n const websocket = this[kWebSocket];\n\n if (websocket._socket[kWebSocket] !== undefined) {\n websocket._socket.removeListener('data', socketOnData);\n\n //\n // On Node.js < 14.0.0 the `'error'` event is emitted synchronously. See\n // https://github.com/websockets/ws/issues/1940.\n //\n process.nextTick(resume, websocket._socket);\n\n websocket.close(err[kStatusCode]);\n }\n\n websocket.emit('error', err);\n}\n\n/**\n * The listener of the `Receiver` `'finish'` event.\n *\n * @private\n */\nfunction receiverOnFinish() {\n this[kWebSocket].emitClose();\n}\n\n/**\n * The listener of the `Receiver` `'message'` event.\n *\n * @param {(String|Buffer|ArrayBuffer|Buffer[])} data The message\n * @private\n */\nfunction receiverOnMessage(data) {\n this[kWebSocket].emit('message', data);\n}\n\n/**\n * The listener of the `Receiver` `'ping'` event.\n *\n * @param {Buffer} data The data included in the ping frame\n * @private\n */\nfunction receiverOnPing(data) {\n const websocket = this[kWebSocket];\n\n websocket.pong(data, !websocket._isServer, NOOP);\n websocket.emit('ping', data);\n}\n\n/**\n * The listener of the `Receiver` `'pong'` event.\n *\n * @param {Buffer} data The data included in the pong frame\n * @private\n */\nfunction receiverOnPong(data) {\n this[kWebSocket].emit('pong', data);\n}\n\n/**\n * Resume a readable stream\n *\n * @param {Readable} stream The readable stream\n * @private\n */\nfunction resume(stream) {\n stream.resume();\n}\n\n/**\n * The listener of the `net.Socket` `'close'` event.\n *\n * @private\n */\nfunction socketOnClose() {\n const websocket = this[kWebSocket];\n\n this.removeListener('close', socketOnClose);\n this.removeListener('data', socketOnData);\n this.removeListener('end', socketOnEnd);\n\n websocket._readyState = WebSocket.CLOSING;\n\n let chunk;\n\n //\n // The close frame might not have been received or the `'end'` event emitted,\n // for example, if the socket was destroyed due to an error. Ensure that the\n // `receiver` stream is closed after writing any remaining buffered data to\n // it. If the readable side of the socket is in flowing mode then there is no\n // buffered data as everything has been already written and `readable.read()`\n // will return `null`. If instead, the socket is paused, any possible buffered\n // data will be read as a single chunk.\n //\n if (\n !this._readableState.endEmitted &&\n !websocket._closeFrameReceived &&\n !websocket._receiver._writableState.errorEmitted &&\n (chunk = websocket._socket.read()) !== null\n ) {\n websocket._receiver.write(chunk);\n }\n\n websocket._receiver.end();\n\n this[kWebSocket] = undefined;\n\n clearTimeout(websocket._closeTimer);\n\n if (\n websocket._receiver._writableState.finished ||\n websocket._receiver._writableState.errorEmitted\n ) {\n websocket.emitClose();\n } else {\n websocket._receiver.on('error', receiverOnFinish);\n websocket._receiver.on('finish', receiverOnFinish);\n }\n}\n\n/**\n * The listener of the `net.Socket` `'data'` event.\n *\n * @param {Buffer} chunk A chunk of data\n * @private\n */\nfunction socketOnData(chunk) {\n if (!this[kWebSocket]._receiver.write(chunk)) {\n this.pause();\n }\n}\n\n/**\n * The listener of the `net.Socket` `'end'` event.\n *\n * @private\n */\nfunction socketOnEnd() {\n const websocket = this[kWebSocket];\n\n websocket._readyState = WebSocket.CLOSING;\n websocket._receiver.end();\n this.end();\n}\n\n/**\n * The listener of the `net.Socket` `'error'` event.\n *\n * @private\n */\nfunction socketOnError() {\n const websocket = this[kWebSocket];\n\n this.removeListener('error', socketOnError);\n this.on('error', NOOP);\n\n if (websocket) {\n websocket._readyState = WebSocket.CLOSING;\n this.destroy();\n }\n}\n","'use strict';\n\nconst { Duplex } = require('stream');\n\n/**\n * Emits the `'close'` event on a stream.\n *\n * @param {Duplex} stream The stream.\n * @private\n */\nfunction emitClose(stream) {\n stream.emit('close');\n}\n\n/**\n * The listener of the `'end'` event.\n *\n * @private\n */\nfunction duplexOnEnd() {\n if (!this.destroyed && this._writableState.finished) {\n this.destroy();\n }\n}\n\n/**\n * The listener of the `'error'` event.\n *\n * @param {Error} err The error\n * @private\n */\nfunction duplexOnError(err) {\n this.removeListener('error', duplexOnError);\n this.destroy();\n if (this.listenerCount('error') === 0) {\n // Do not suppress the throwing behavior.\n this.emit('error', err);\n }\n}\n\n/**\n * Wraps a `WebSocket` in a duplex stream.\n *\n * @param {WebSocket} ws The `WebSocket` to wrap\n * @param {Object} [options] The options for the `Duplex` constructor\n * @return {Duplex} The duplex stream\n * @public\n */\nfunction createWebSocketStream(ws, options) {\n let resumeOnReceiverDrain = true;\n let terminateOnDestroy = true;\n\n function receiverOnDrain() {\n if (resumeOnReceiverDrain) ws._socket.resume();\n }\n\n if (ws.readyState === ws.CONNECTING) {\n ws.once('open', function open() {\n ws._receiver.removeAllListeners('drain');\n ws._receiver.on('drain', receiverOnDrain);\n });\n } else {\n ws._receiver.removeAllListeners('drain');\n ws._receiver.on('drain', receiverOnDrain);\n }\n\n const duplex = new Duplex({\n ...options,\n autoDestroy: false,\n emitClose: false,\n objectMode: false,\n writableObjectMode: false\n });\n\n ws.on('message', function message(msg) {\n if (!duplex.push(msg)) {\n resumeOnReceiverDrain = false;\n ws._socket.pause();\n }\n });\n\n ws.once('error', function error(err) {\n if (duplex.destroyed) return;\n\n // Prevent `ws.terminate()` from being called by `duplex._destroy()`.\n //\n // - If the `'error'` event is emitted before the `'open'` event, then\n // `ws.terminate()` is a noop as no socket is assigned.\n // - Otherwise, the error is re-emitted by the listener of the `'error'`\n // event of the `Receiver` object. The listener already closes the\n // connection by calling `ws.close()`. This allows a close frame to be\n // sent to the other peer. If `ws.terminate()` is called right after this,\n // then the close frame might not be sent.\n terminateOnDestroy = false;\n duplex.destroy(err);\n });\n\n ws.once('close', function close() {\n if (duplex.destroyed) return;\n\n duplex.push(null);\n });\n\n duplex._destroy = function (err, callback) {\n if (ws.readyState === ws.CLOSED) {\n callback(err);\n process.nextTick(emitClose, duplex);\n return;\n }\n\n let called = false;\n\n ws.once('error', function error(err) {\n called = true;\n callback(err);\n });\n\n ws.once('close', function close() {\n if (!called) callback(err);\n process.nextTick(emitClose, duplex);\n });\n\n if (terminateOnDestroy) ws.terminate();\n };\n\n duplex._final = function (callback) {\n if (ws.readyState === ws.CONNECTING) {\n ws.once('open', function open() {\n duplex._final(callback);\n });\n return;\n }\n\n // If the value of the `_socket` property is `null` it means that `ws` is a\n // client websocket and the handshake failed. In fact, when this happens, a\n // socket is never assigned to the websocket. Wait for the `'error'` event\n // that will be emitted by the websocket.\n if (ws._socket === null) return;\n\n if (ws._socket._writableState.finished) {\n callback();\n if (duplex._readableState.endEmitted) duplex.destroy();\n } else {\n ws._socket.once('finish', function finish() {\n // `duplex` is not destroyed here because the `'end'` event will be\n // emitted on `duplex` after this `'finish'` event. The EOF signaling\n // `null` chunk is, in fact, pushed when the websocket emits `'close'`.\n callback();\n });\n ws.close();\n }\n };\n\n duplex._read = function () {\n if (\n (ws.readyState === ws.OPEN || ws.readyState === ws.CLOSING) &&\n !resumeOnReceiverDrain\n ) {\n resumeOnReceiverDrain = true;\n if (!ws._receiver._writableState.needDrain) ws._socket.resume();\n }\n };\n\n duplex._write = function (chunk, encoding, callback) {\n if (ws.readyState === ws.CONNECTING) {\n ws.once('open', function open() {\n duplex._write(chunk, encoding, callback);\n });\n return;\n }\n\n ws.send(chunk, callback);\n };\n\n duplex.on('end', duplexOnEnd);\n duplex.on('error', duplexOnError);\n return duplex;\n}\n\nmodule.exports = createWebSocketStream;\n","/* eslint no-unused-vars: [\"error\", { \"varsIgnorePattern\": \"^net|tls|https$\" }] */\n\n'use strict';\n\nconst EventEmitter = require('events');\nconst http = require('http');\nconst https = require('https');\nconst net = require('net');\nconst tls = require('tls');\nconst { createHash } = require('crypto');\n\nconst PerMessageDeflate = require('./permessage-deflate');\nconst WebSocket = require('./websocket');\nconst { format, parse } = require('./extension');\nconst { GUID, kWebSocket } = require('./constants');\n\nconst keyRegex = /^[+/0-9A-Za-z]{22}==$/;\n\nconst RUNNING = 0;\nconst CLOSING = 1;\nconst CLOSED = 2;\n\n/**\n * Class representing a WebSocket server.\n *\n * @extends EventEmitter\n */\nclass WebSocketServer extends EventEmitter {\n /**\n * Create a `WebSocketServer` instance.\n *\n * @param {Object} options Configuration options\n * @param {Number} [options.backlog=511] The maximum length of the queue of\n * pending connections\n * @param {Boolean} [options.clientTracking=true] Specifies whether or not to\n * track clients\n * @param {Function} [options.handleProtocols] A hook to handle protocols\n * @param {String} [options.host] The hostname where to bind the server\n * @param {Number} [options.maxPayload=104857600] The maximum allowed message\n * size\n * @param {Boolean} [options.noServer=false] Enable no server mode\n * @param {String} [options.path] Accept only connections matching this path\n * @param {(Boolean|Object)} [options.perMessageDeflate=false] Enable/disable\n * permessage-deflate\n * @param {Number} [options.port] The port where to bind the server\n * @param {(http.Server|https.Server)} [options.server] A pre-created HTTP/S\n * server to use\n * @param {Function} [options.verifyClient] A hook to reject connections\n * @param {Function} [callback] A listener for the `listening` event\n */\n constructor(options, callback) {\n super();\n\n options = {\n maxPayload: 100 * 1024 * 1024,\n perMessageDeflate: false,\n handleProtocols: null,\n clientTracking: true,\n verifyClient: null,\n noServer: false,\n backlog: null, // use default (511 as implemented in net.js)\n server: null,\n host: null,\n path: null,\n port: null,\n ...options\n };\n\n if (\n (options.port == null && !options.server && !options.noServer) ||\n (options.port != null && (options.server || options.noServer)) ||\n (options.server && options.noServer)\n ) {\n throw new TypeError(\n 'One and only one of the \"port\", \"server\", or \"noServer\" options ' +\n 'must be specified'\n );\n }\n\n if (options.port != null) {\n this._server = http.createServer((req, res) => {\n const body = http.STATUS_CODES[426];\n\n res.writeHead(426, {\n 'Content-Length': body.length,\n 'Content-Type': 'text/plain'\n });\n res.end(body);\n });\n this._server.listen(\n options.port,\n options.host,\n options.backlog,\n callback\n );\n } else if (options.server) {\n this._server = options.server;\n }\n\n if (this._server) {\n const emitConnection = this.emit.bind(this, 'connection');\n\n this._removeListeners = addListeners(this._server, {\n listening: this.emit.bind(this, 'listening'),\n error: this.emit.bind(this, 'error'),\n upgrade: (req, socket, head) => {\n this.handleUpgrade(req, socket, head, emitConnection);\n }\n });\n }\n\n if (options.perMessageDeflate === true) options.perMessageDeflate = {};\n if (options.clientTracking) this.clients = new Set();\n this.options = options;\n this._state = RUNNING;\n }\n\n /**\n * Returns the bound address, the address family name, and port of the server\n * as reported by the operating system if listening on an IP socket.\n * If the server is listening on a pipe or UNIX domain socket, the name is\n * returned as a string.\n *\n * @return {(Object|String|null)} The address of the server\n * @public\n */\n address() {\n if (this.options.noServer) {\n throw new Error('The server is operating in \"noServer\" mode');\n }\n\n if (!this._server) return null;\n return this._server.address();\n }\n\n /**\n * Close the server.\n *\n * @param {Function} [cb] Callback\n * @public\n */\n close(cb) {\n if (cb) this.once('close', cb);\n\n if (this._state === CLOSED) {\n process.nextTick(emitClose, this);\n return;\n }\n\n if (this._state === CLOSING) return;\n this._state = CLOSING;\n\n //\n // Terminate all associated clients.\n //\n if (this.clients) {\n for (const client of this.clients) client.terminate();\n }\n\n const server = this._server;\n\n if (server) {\n this._removeListeners();\n this._removeListeners = this._server = null;\n\n //\n // Close the http server if it was internally created.\n //\n if (this.options.port != null) {\n server.close(emitClose.bind(undefined, this));\n return;\n }\n }\n\n process.nextTick(emitClose, this);\n }\n\n /**\n * See if a given request should be handled by this server instance.\n *\n * @param {http.IncomingMessage} req Request object to inspect\n * @return {Boolean} `true` if the request is valid, else `false`\n * @public\n */\n shouldHandle(req) {\n if (this.options.path) {\n const index = req.url.indexOf('?');\n const pathname = index !== -1 ? req.url.slice(0, index) : req.url;\n\n if (pathname !== this.options.path) return false;\n }\n\n return true;\n }\n\n /**\n * Handle a HTTP Upgrade request.\n *\n * @param {http.IncomingMessage} req The request object\n * @param {(net.Socket|tls.Socket)} socket The network socket between the\n * server and client\n * @param {Buffer} head The first packet of the upgraded stream\n * @param {Function} cb Callback\n * @public\n */\n handleUpgrade(req, socket, head, cb) {\n socket.on('error', socketOnError);\n\n const key =\n req.headers['sec-websocket-key'] !== undefined\n ? req.headers['sec-websocket-key'].trim()\n : false;\n const upgrade = req.headers.upgrade;\n const version = +req.headers['sec-websocket-version'];\n const extensions = {};\n\n if (\n req.method !== 'GET' ||\n upgrade === undefined ||\n upgrade.toLowerCase() !== 'websocket' ||\n !key ||\n !keyRegex.test(key) ||\n (version !== 8 && version !== 13) ||\n !this.shouldHandle(req)\n ) {\n return abortHandshake(socket, 400);\n }\n\n if (this.options.perMessageDeflate) {\n const perMessageDeflate = new PerMessageDeflate(\n this.options.perMessageDeflate,\n true,\n this.options.maxPayload\n );\n\n try {\n const offers = parse(req.headers['sec-websocket-extensions']);\n\n if (offers[PerMessageDeflate.extensionName]) {\n perMessageDeflate.accept(offers[PerMessageDeflate.extensionName]);\n extensions[PerMessageDeflate.extensionName] = perMessageDeflate;\n }\n } catch (err) {\n return abortHandshake(socket, 400);\n }\n }\n\n //\n // Optionally call external client verification handler.\n //\n if (this.options.verifyClient) {\n const info = {\n origin:\n req.headers[`${version === 8 ? 'sec-websocket-origin' : 'origin'}`],\n secure: !!(req.socket.authorized || req.socket.encrypted),\n req\n };\n\n if (this.options.verifyClient.length === 2) {\n this.options.verifyClient(info, (verified, code, message, headers) => {\n if (!verified) {\n return abortHandshake(socket, code || 401, message, headers);\n }\n\n this.completeUpgrade(key, extensions, req, socket, head, cb);\n });\n return;\n }\n\n if (!this.options.verifyClient(info)) return abortHandshake(socket, 401);\n }\n\n this.completeUpgrade(key, extensions, req, socket, head, cb);\n }\n\n /**\n * Upgrade the connection to WebSocket.\n *\n * @param {String} key The value of the `Sec-WebSocket-Key` header\n * @param {Object} extensions The accepted extensions\n * @param {http.IncomingMessage} req The request object\n * @param {(net.Socket|tls.Socket)} socket The network socket between the\n * server and client\n * @param {Buffer} head The first packet of the upgraded stream\n * @param {Function} cb Callback\n * @throws {Error} If called more than once with the same socket\n * @private\n */\n completeUpgrade(key, extensions, req, socket, head, cb) {\n //\n // Destroy the socket if the client has already sent a FIN packet.\n //\n if (!socket.readable || !socket.writable) return socket.destroy();\n\n if (socket[kWebSocket]) {\n throw new Error(\n 'server.handleUpgrade() was called more than once with the same ' +\n 'socket, possibly due to a misconfiguration'\n );\n }\n\n if (this._state > RUNNING) return abortHandshake(socket, 503);\n\n const digest = createHash('sha1')\n .update(key + GUID)\n .digest('base64');\n\n const headers = [\n 'HTTP/1.1 101 Switching Protocols',\n 'Upgrade: websocket',\n 'Connection: Upgrade',\n `Sec-WebSocket-Accept: ${digest}`\n ];\n\n const ws = new WebSocket(null);\n let protocol = req.headers['sec-websocket-protocol'];\n\n if (protocol) {\n protocol = protocol.split(',').map(trim);\n\n //\n // Optionally call external protocol selection handler.\n //\n if (this.options.handleProtocols) {\n protocol = this.options.handleProtocols(protocol, req);\n } else {\n protocol = protocol[0];\n }\n\n if (protocol) {\n headers.push(`Sec-WebSocket-Protocol: ${protocol}`);\n ws._protocol = protocol;\n }\n }\n\n if (extensions[PerMessageDeflate.extensionName]) {\n const params = extensions[PerMessageDeflate.extensionName].params;\n const value = format({\n [PerMessageDeflate.extensionName]: [params]\n });\n headers.push(`Sec-WebSocket-Extensions: ${value}`);\n ws._extensions = extensions;\n }\n\n //\n // Allow external modification/inspection of handshake headers.\n //\n this.emit('headers', headers, req);\n\n socket.write(headers.concat('\\r\\n').join('\\r\\n'));\n socket.removeListener('error', socketOnError);\n\n ws.setSocket(socket, head, this.options.maxPayload);\n\n if (this.clients) {\n this.clients.add(ws);\n ws.on('close', () => this.clients.delete(ws));\n }\n\n cb(ws, req);\n }\n}\n\nmodule.exports = WebSocketServer;\n\n/**\n * Add event listeners on an `EventEmitter` using a map of <event, listener>\n * pairs.\n *\n * @param {EventEmitter} server The event emitter\n * @param {Object.<String, Function>} map The listeners to add\n * @return {Function} A function that will remove the added listeners when\n * called\n * @private\n */\nfunction addListeners(server, map) {\n for (const event of Object.keys(map)) server.on(event, map[event]);\n\n return function removeListeners() {\n for (const event of Object.keys(map)) {\n server.removeListener(event, map[event]);\n }\n };\n}\n\n/**\n * Emit a `'close'` event on an `EventEmitter`.\n *\n * @param {EventEmitter} server The event emitter\n * @private\n */\nfunction emitClose(server) {\n server._state = CLOSED;\n server.emit('close');\n}\n\n/**\n * Handle premature socket errors.\n *\n * @private\n */\nfunction socketOnError() {\n this.destroy();\n}\n\n/**\n * Close the connection when preconditions are not fulfilled.\n *\n * @param {(net.Socket|tls.Socket)} socket The socket of the upgrade request\n * @param {Number} code The HTTP response status code\n * @param {String} [message] The HTTP response body\n * @param {Object} [headers] Additional HTTP response headers\n * @private\n */\nfunction abortHandshake(socket, code, message, headers) {\n if (socket.writable) {\n message = message || http.STATUS_CODES[code];\n headers = {\n Connection: 'close',\n 'Content-Type': 'text/html',\n 'Content-Length': Buffer.byteLength(message),\n ...headers\n };\n\n socket.write(\n `HTTP/1.1 ${code} ${http.STATUS_CODES[code]}\\r\\n` +\n Object.keys(headers)\n .map((h) => `${h}: ${headers[h]}`)\n .join('\\r\\n') +\n '\\r\\n\\r\\n' +\n message\n );\n }\n\n socket.removeListener('error', socketOnError);\n socket.destroy();\n}\n\n/**\n * Remove whitespace characters from both ends of a string.\n *\n * @param {String} str The string\n * @return {String} A new string representing `str` stripped of whitespace\n * characters from both its beginning and end\n * @private\n */\nfunction trim(str) {\n return str.trim();\n}\n","'use strict';\n\nconst WebSocket = require('./lib/websocket');\n\nWebSocket.createWebSocketStream = require('./lib/stream');\nWebSocket.Server = require('./lib/websocket-server');\nWebSocket.Receiver = require('./lib/receiver');\nWebSocket.Sender = require('./lib/sender');\n\nmodule.exports = WebSocket;\n","\"use strict\";\n\nmodule.exports = require('ws');","\"use strict\";\nvar __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n if (typeof b !== \"function\" && b !== null)\n throw new TypeError(\"Class extends value \" + String(b) + \" is not a constructor or null\");\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __assign = (this && this.__assign) || function () {\n __assign = Object.assign || function(t) {\n for (var s, i = 1, n = arguments.length; i < n; i++) {\n s = arguments[i];\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))\n t[p] = s[p];\n }\n return t;\n };\n return __assign.apply(this, arguments);\n};\nvar __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n var desc = Object.getOwnPropertyDescriptor(m, k);\n if (!desc || (\"get\" in desc ? !m.__esModule : desc.writable || desc.configurable)) {\n desc = { enumerable: true, get: function() { return m[k]; } };\n }\n Object.defineProperty(o, k2, desc);\n}) : (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n o[k2] = m[k];\n}));\nvar __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {\n Object.defineProperty(o, \"default\", { enumerable: true, value: v });\n}) : function(o, v) {\n o[\"default\"] = v;\n});\nvar __importStar = (this && this.__importStar) || (function () {\n var ownKeys = function(o) {\n ownKeys = Object.getOwnPropertyNames || function (o) {\n var ar = [];\n for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;\n return ar;\n };\n return ownKeys(o);\n };\n return function (mod) {\n if (mod && mod.__esModule) return mod;\n var result = {};\n if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== \"default\") __createBinding(result, mod, k[i]);\n __setModuleDefault(result, mod);\n return result;\n };\n})();\nvar __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\n return new (P || (P = Promise))(function (resolve, reject) {\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\n step((generator = generator.apply(thisArg, _arguments || [])).next());\n });\n};\nvar __generator = (this && this.__generator) || function (thisArg, body) {\n var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g = Object.create((typeof Iterator === \"function\" ? Iterator : Object).prototype);\n return g.next = verb(0), g[\"throw\"] = verb(1), g[\"return\"] = verb(2), typeof Symbol === \"function\" && (g[Symbol.iterator] = function() { return this; }), g;\n function verb(n) { return function (v) { return step([n, v]); }; }\n function step(op) {\n if (f) throw new TypeError(\"Generator is already executing.\");\n while (g && (g = 0, op[0] && (_ = 0)), _) try {\n if (f = 1, y && (t = op[0] & 2 ? y[\"return\"] : op[0] ? y[\"throw\"] || ((t = y[\"return\"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;\n if (y = 0, t) op = [op[0] & 2, t.value];\n switch (op[0]) {\n case 0: case 1: t = op; break;\n case 4: _.label++; return { value: op[1], done: false };\n case 5: _.label++; y = op[1]; op = [0]; continue;\n case 7: op = _.ops.pop(); _.trys.pop(); continue;\n default:\n if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }\n if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }\n if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }\n if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }\n if (t[2]) _.ops.pop();\n _.trys.pop(); continue;\n }\n op = body.call(thisArg, _);\n } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }\n if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };\n }\n};\nvar __importDefault = (this && this.__importDefault) || function (mod) {\n return (mod && mod.__esModule) ? mod : { \"default\": mod };\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.Ledger = exports.WsState = exports.UserRightHelper = void 0;\nexports.assert = assert;\n// Copyright (c) 2025 Digital Asset (Switzerland) GmbH and/or its affiliates. All rights reserved.\n// SPDX-License-Identifier: Apache-2.0\nvar types_1 = require(\"@daml/types\");\nvar jtv = __importStar(require(\"@mojotech/json-type-validation\"));\nvar cross_fetch_1 = __importDefault(require(\"cross-fetch\"));\nvar events_1 = require(\"events\");\nvar isomorphic_ws_1 = __importDefault(require(\"isomorphic-ws\"));\nvar lodash_1 = __importStar(require(\"lodash\"));\nvar partyInfoDecoder = jtv.object({\n identifier: jtv.string(),\n isLocal: jtv.boolean(),\n});\nvar userDecoder = jtv.object({\n userId: jtv.string(),\n primaryParty: jtv.optional(jtv.string()),\n});\nvar UserRightHelper = /** @class */ (function () {\n function UserRightHelper() {\n }\n UserRightHelper.canActAs = function (party) {\n return { type: \"CanActAs\", party: party };\n };\n UserRightHelper.canReadAs = function (party) {\n return { type: \"CanReadAs\", party: party };\n };\n UserRightHelper.participantAdmin = {\n type: \"ParticipantAdmin\",\n };\n return UserRightHelper;\n}());\nexports.UserRightHelper = UserRightHelper;\nvar userRightDecoder = jtv.oneOf(jtv.object({\n type: jtv.constant(\"CanActAs\"),\n party: jtv.string(),\n}), jtv.object({\n type: jtv.constant(\"CanReadAs\"),\n party: jtv.string(),\n}), jtv.object({\n type: jtv.constant(\"ParticipantAdmin\"),\n}));\nvar decode = function (decoder, data) {\n return jtv.Result.withException(decoder.run(data));\n};\nfunction lookupTemplateOrUnknownInterface(templateId) {\n try {\n return (0, types_1.lookupTemplate)(templateId);\n }\n catch (e) {\n if (e instanceof Error)\n return {\n templateId: templateId,\n sdkVersion: \"3.3.0-snapshot.20250528.13806.0.v3cd439fb\",\n // there is no way to properly decode in this case, so we\n // discard the data instead. #15042\n decoder: jtv.succeed({}),\n keyDecoder: jtv.succeed(undefined),\n };\n else\n throw e;\n }\n}\nvar decodeTemplateId = function () {\n return jtv.string();\n};\n/**\n * Decoder for a [[CreateEvent]].\n */\nvar decodeCreateEvent = function (template) {\n return jtv.object({\n templateId: decodeTemplateId(),\n contractId: (0, types_1.ContractId)(template).decoder,\n signatories: (0, types_1.List)(types_1.Party).decoder,\n observers: (0, types_1.List)(types_1.Party).decoder,\n key: template.keyDecoder,\n payload: template.decoder,\n });\n};\n/**\n * Decoder for a [[CreateEvent]] of unknown contract template.\n */\nvar decodeCreateEventUnknown = jtv\n .valueAt([\"templateId\"], jtv.string())\n .andThen(function (templateId) {\n return decodeCreateEvent(lookupTemplateOrUnknownInterface(templateId));\n});\n/**\n * Decoder for an [[ArchiveEvent]].\n */\nvar decodeArchiveEvent = function (template) {\n return jtv.object({\n templateId: decodeTemplateId(),\n contractId: (0, types_1.ContractId)(template).decoder,\n });\n};\n/**\n * Decoder for an [[ArchiveEvent]] of unknown contract template.\n */\nvar decodeArchiveEventUnknown = jtv\n .valueAt([\"templateId\"], jtv.string())\n .andThen(function (templateId) {\n return decodeArchiveEvent(lookupTemplateOrUnknownInterface(templateId));\n});\n/**\n * Decoder for an [[Event]].\n */\nvar decodeEvent = function (template) {\n return jtv.oneOf(jtv.object({\n created: decodeCreateEvent(template),\n matchedQueries: jtv.array(jtv.number()),\n }), jtv.object({ created: decodeCreateEvent(template) }), jtv.object({ archived: decodeArchiveEvent(template) }));\n};\n/**\n * Decoder for an [[Event]] with unknown contract template.\n */\nvar decodeEventUnknown = jtv.oneOf(jtv.object({\n created: decodeCreateEventUnknown,\n matchedQueries: jtv.array(jtv.number()),\n}), jtv.object({ created: decodeCreateEventUnknown }), jtv.object({ archived: decodeArchiveEventUnknown }));\n/**\n * @internal\n */\nfunction stripPackage(templateId) {\n return templateId.split(\":\").slice(1).join(\":\");\n}\n/**\n * @internal\n */\nfunction decodeArchiveResponse(template, archiveMethod, \n// eslint-disable-next-line @typescript-eslint/ban-types\narchiveCommand) {\n return __awaiter(this, void 0, void 0, function () {\n var _a, _b, events;\n return __generator(this, function (_c) {\n switch (_c.label) {\n case 0: return [4 /*yield*/, archiveCommand()];\n case 1:\n _a = _c.sent(), _b = _a[0], events = _a[1];\n if (events.length === 1 &&\n \"archived\" in events[0] &&\n stripPackage(events[0].archived.templateId) ===\n stripPackage(template.templateId)) {\n return [2 /*return*/, events[0].archived];\n }\n else {\n throw Error(\"Ledger.\".concat(archiveMethod, \" is expected to cause one archive event for template \").concat(template.templateId, \" but caused \").concat(JSON.stringify(events), \".\"));\n }\n return [2 /*return*/];\n }\n });\n });\n}\n/**\n * @internal\n */\nfunction isRecordWith(field, x) {\n return typeof x === \"object\" && x !== null && field in x;\n}\n/**\n *\n * @internal\n */\nfunction isCreateWithMatchedQueries(event) {\n return isRecordWith(\"created\", event);\n}\n/** @internal\n * exported for testing only\n */\nfunction assert(b, m) {\n if (!b) {\n throw m;\n }\n}\n// TODO(MH): Support comparison queries.\n/** @internal\n *\n * Official documentation (docs/source/json-api/search-query-language.rst)\n * currently explicitly forbids the use of lists, textmaps and genmaps in\n * queries. As long as that restriction stays, there is no need for any kind of\n * encoding here.\n */\nfunction encodeQuery(_template, query) {\n return query;\n}\n/**\n * @internal\n */\nvar decodeLedgerResponse = jtv.object({\n status: jtv.number(),\n result: jtv.unknownJson(),\n warnings: jtv.optional(jtv.unknownJson()),\n});\n/**\n * @internal\n */\nvar decodeLedgerError = jtv.object({\n status: jtv.number(),\n errors: jtv.array(jtv.string()),\n warnings: jtv.optional(jtv.unknownJson()),\n});\nvar StreamEventEmitter = /** @class */ (function (_super) {\n __extends(StreamEventEmitter, _super);\n function StreamEventEmitter(_a) {\n var beforeClosing = _a.beforeClosing;\n var _this = _super.call(this) || this;\n _this.beforeClosing = beforeClosing;\n return _this;\n }\n StreamEventEmitter.prototype.close = function () {\n this.beforeClosing();\n this.emit(\"close\", { code: 4000, reason: \"called .close()\" });\n this.removeAllListeners();\n };\n return StreamEventEmitter;\n}(events_1.EventEmitter));\nvar NoOffsetReceivedYet = Symbol(\"NoOffsetReceivedYet\");\nvar NullOffsetReceived = Symbol(\"NullOffsetReceived\");\nfunction append(map, key, value) {\n var _a;\n if (map.has(key)) {\n (_a = map.get(key)) === null || _a === void 0 ? void 0 : _a.push(value);\n }\n else {\n map.set(key, [value]);\n }\n}\n/**\n * @deprecated All usages of this function should be replaced by just\n * iterating over the iterator. For this to happen, the TS\n * compiler requires the --downlevelIteration flag, which\n * however does not play nicely with Jest when running the\n * tests.\n *\n * TODO Moving the compilation target to ES6 probably would solve this, investigate.\n */\nfunction materialize(iterator) {\n return Array.from(iterator);\n}\nvar WsState;\n(function (WsState) {\n WsState[WsState[\"Connecting\"] = 0] = \"Connecting\";\n WsState[WsState[\"Open\"] = 1] = \"Open\";\n WsState[WsState[\"Closing\"] = 2] = \"Closing\";\n WsState[WsState[\"Closed\"] = 3] = \"Closed\";\n})(WsState || (exports.WsState = WsState = {}));\n/**\n * @internal\n *\n * A special handler for stream requests to the /v1/stream/query endpoint.\n * The query endpoint supports providing offsets on a per-query basis.\n * This class leverages this feature by multiplexing virtual streaming requests to a single web socket.\n */\nvar QueryStreamsManager = /** @class */ (function () {\n function QueryStreamsManager(_a) {\n var token = _a.token, wsBaseUrl = _a.wsBaseUrl, reconnectThreshold = _a.reconnectThreshold;\n // Mutable state BEGIN\n // Ongoing streaming queries that will be the downstream consumers of web socket messages\n this.queries = new Set();\n // Lookup tables used to route events to the relevant consumers:\n // - consumers for create events can be looked up based on their match index\n // - store the offset by which a match indexes needs to be shifted before the event is passed to the consumer\n // - archive events can be lookup up by template identifier\n // - this causes the consumer to observe what is known as \"phantom archives\", which are known and documented\n this.matchIndexLookupTable = [];\n this.templateIdsLookupTable = {};\n // Accumulates each query in a flattened form to be sent as a single request to the JSON API\n this.request = [];\n // to track changes on web socket queries\n this.wsQueriesChange = false;\n this.protocols = [\"jwt.token.\" + token, \"daml.ws.auth\"];\n this.url = wsBaseUrl + QueryStreamsManager.ENDPOINT;\n this.reconnectThresholdMs = reconnectThreshold;\n }\n QueryStreamsManager.toRequest = function (query) {\n var request = query.queries.length == 0\n ? [{ templateIds: [query.template.templateId] }]\n : query.queries.map(function (q) { return ({\n templateIds: [query.template.templateId],\n query: encodeQuery(query.template, q),\n }); });\n if (typeof query.offset === \"string\") {\n for (var _i = 0, request_1 = request; _i < request_1.length; _i++) {\n var r = request_1[_i];\n r.offset = query.offset;\n }\n }\n return request;\n };\n QueryStreamsManager.prototype.resetAllState = function () {\n // close ws if defined\n if (this.ws !== undefined) {\n this.ws.close();\n }\n this.queries.clear();\n this.matchIndexLookupTable = [];\n this.templateIdsLookupTable = {};\n this.request = [];\n this.ws = undefined;\n this.wsLiveSince = undefined;\n this.wsQueriesChange = false;\n };\n QueryStreamsManager.prototype.handleQueriesChange = function () {\n //eslint-disable-next-line @typescript-eslint/no-this-alias\n var manager = this; // stable self-reference for callbacks\n if (manager.queries.size > 0) {\n if (manager.ws !== undefined) {\n //set the queries change flag to true, this should eventually get reset once the ws is closed.\n manager.wsQueriesChange = true;\n manager.wsLiveSince = undefined;\n manager.ws.close();\n manager.ws = undefined;\n }\n var ws = new isomorphic_ws_1.default(manager.url, manager.protocols);\n var onWsMessage_1 = function (ws) {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n return function (_a) {\n var data = _a.data;\n if (ws.readyState === WsState.Open) {\n var json = JSON.parse(data.toString());\n if (isRecordWith(\"events\", json)) {\n var events = jtv.Result.withException(jtv.array(decodeEventUnknown).run(json.events));\n var multiplexer = new Map();\n for (var _i = 0, events_2 = events; _i < events_2.length; _i++) {\n var event_1 = events_2[_i];\n if (isCreateWithMatchedQueries(event_1)) {\n var consumersToMatchedQueries = new Map();\n for (var _b = 0, _c = event_1.matchedQueries; _b < _c.length; _b++) {\n var matchIndex = _c[_b];\n var _d = manager.matchIndexLookupTable[matchIndex], consumer = _d[0], matchIndexOffset = _d[1];\n append(consumersToMatchedQueries, consumer, matchIndexOffset);\n }\n for (var _e = 0, _f = materialize(consumersToMatchedQueries.entries()); _e < _f.length; _e++) {\n var _g = _f[_e], consumer = _g[0], matchedQueries = _g[1];\n // Create a new copy of the event for each consumer to freely mangle the matched queries and avoid sharing mutable state\n append(multiplexer, consumer, __assign(__assign({}, event_1), { matchedQueries: matchedQueries }));\n }\n }\n else if (\"archived\" in event_1) {\n var consumers = manager.templateIdsLookupTable[event_1.archived.templateId];\n for (var _h = 0, _j = materialize(consumers.values()); _h < _j.length; _h++) {\n var consumer = _j[_h];\n // Create a new copy of the event for each consumer to avoid sharing mutable state\n append(multiplexer, consumer, __assign({}, event_1));\n }\n }\n else {\n console.error(\"\".concat(event_1, \" unknown event type received, expected created with matchedQueries or archived\"), json);\n }\n }\n for (var _k = 0, _m = materialize(multiplexer.entries()); _k < _m.length; _k++) {\n var _o = _m[_k], consumer = _o[0], events_4 = _o[1];\n for (var _p = 0, events_3 = events_4; _p < events_3.length; _p++) {\n var event_2 = events_3[_p];\n if (isCreateWithMatchedQueries(event_2)) {\n consumer.state.set(event_2.created.contractId, event_2.created);\n }\n else if (\"archived\" in event_2) {\n consumer.state.delete(event_2.archived.contractId);\n }\n }\n consumer.stream.emit(\"change\", Array.from(consumer.state.values()), events_4);\n }\n if (isRecordWith(\"offset\", json)) {\n var offset = jtv.Result.withException(jtv.oneOf(jtv.constant(null), jtv.string()).run(json.offset));\n if (manager.wsLiveSince === undefined) {\n //on receiving the first offset event we consider the web socket to be live.\n manager.wsLiveSince = Date.now();\n }\n for (var _q = 0, _r = materialize(manager.queries.values()); _q < _r.length; _q++) {\n var consumer = _r[_q];\n if (!(typeof consumer.offset === \"string\")) {\n // Rebuilding the state array from scratch to make sure mutable state is not shared between the 'change' and 'live' event\n consumer.stream.emit(\"live\", Array.from(consumer.state.values()));\n }\n if (typeof offset === \"string\") {\n consumer.offset = offset;\n }\n else {\n consumer.offset = NullOffsetReceived;\n }\n }\n }\n }\n else if (isRecordWith(\"warnings\", json)) {\n for (var _s = 0, _u = materialize(manager.queries.values()); _s < _u.length; _s++) {\n var query = _u[_s];\n console.warn(\"\".concat(query.caller, \" warnings\"), json);\n }\n }\n else if (isRecordWith(\"errors\", json)) {\n for (var _v = 0, _w = materialize(manager.queries.values()); _v < _w.length; _v++) {\n var query = _w[_v];\n console.warn(\"\".concat(query.caller, \" errors\"), json);\n }\n }\n else {\n for (var _x = 0, _y = materialize(manager.queries.values()); _x < _y.length; _x++) {\n var query = _y[_x];\n console.error(\"\".concat(query.caller, \" unknown message\"), json);\n }\n }\n }\n };\n };\n var onWsOpen_1 = function () {\n var _a;\n // only make a new websocket request if we have registered queries\n if (manager.queries.size > 0) {\n var newRequests = [];\n var newMatchIndexLookupTable = [];\n for (var _i = 0, _b = materialize(manager.queries.values()); _i < _b.length; _i++) {\n var query = _b[_i];\n var request = QueryStreamsManager.toRequest(query);\n // Add entries to the lookup table for create events\n var matchIndexOffset = newMatchIndexLookupTable.length;\n var matchIndexLookupTableEntries = new Array(request.length).fill([query, matchIndexOffset]);\n newMatchIndexLookupTable = newMatchIndexLookupTable.concat(matchIndexLookupTableEntries);\n // Add entries to the lookup table for archive events\n for (var _c = 0, request_2 = request; _c < request_2.length; _c++) {\n var templateIds = request_2[_c].templateIds;\n for (var _d = 0, templateIds_1 = templateIds; _d < templateIds_1.length; _d++) {\n var templateId = templateIds_1[_d];\n manager.templateIdsLookupTable[templateId] =\n manager.templateIdsLookupTable[templateId] || new Set();\n manager.templateIdsLookupTable[templateId].add(query);\n }\n }\n //since we go through all queries on the manager, we should be safely able to rebuild the whole request\n newRequests = newRequests.concat(request);\n }\n manager.request = newRequests;\n manager.matchIndexLookupTable = newMatchIndexLookupTable;\n (_a = manager.ws) === null || _a === void 0 ? void 0 : _a.send(JSON.stringify(Array.from(manager.request.values())));\n }\n };\n var onWsClose_1 = function () {\n //if not a web socket queries change then we need to initiate reconnect logic.\n if (!manager.wsQueriesChange) {\n // The web socket has been closed due to an error\n // If the conditions are met, attempt to reconnect and/or inform downstream consumers\n var now = Date.now();\n if (manager.wsLiveSince !== undefined &&\n now - manager.wsLiveSince >= manager.reconnectThresholdMs) {\n console.log(\"Reconnecting ws, previously liveSince: \".concat(manager.wsLiveSince, \" and reconnectThresholdMs: \").concat(manager.reconnectThresholdMs));\n manager.wsLiveSince = undefined;\n var ws_1 = new isomorphic_ws_1.default(manager.url, manager.protocols);\n ws_1.addEventListener(\"open\", onWsOpen_1);\n ws_1.addEventListener(\"message\", onWsMessage_1(ws_1));\n ws_1.addEventListener(\"close\", onWsClose_1);\n manager.ws = ws_1;\n }\n else {\n // ws has closed too quickly / never managed to connect: we give up\n for (var _i = 0, _a = materialize(manager.queries.values()); _i < _a.length; _i++) {\n var consumer = _a[_i];\n consumer.stream.emit(\"close\", {\n code: 4001,\n reason: \"ws connection failed\",\n });\n consumer.stream.removeAllListeners();\n }\n manager.resetAllState();\n }\n }\n else {\n //this was triggered due to queries change , reset the flag\n manager.wsQueriesChange = false;\n }\n };\n // Purposefully ignoring 'error' events; they are always followed by a 'close' event, which needs to be handled anyway\n ws.addEventListener(\"open\", onWsOpen_1);\n ws.addEventListener(\"message\", onWsMessage_1(ws));\n ws.addEventListener(\"close\", onWsClose_1);\n //eslint-disable-next-line @typescript-eslint/no-this-alias\n manager.ws = ws;\n }\n };\n QueryStreamsManager.prototype.streamSubmit = function (template, queries, caller) {\n //eslint-disable-next-line @typescript-eslint/no-this-alias\n var manager = this;\n var query = {\n template: template,\n queries: queries,\n stream: new StreamEventEmitter({\n beforeClosing: function () {\n manager.queries.delete(query);\n // if no more queries then just let it go\n if (manager.queries.size > 0) {\n manager.handleQueriesChange();\n }\n },\n }),\n state: new Map(),\n offset: NoOffsetReceivedYet,\n caller: caller,\n };\n manager.queries.add(query);\n manager.handleQueriesChange();\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n var on = function (type, listener) {\n var _a, _b;\n if (((_a = manager.ws) === null || _a === void 0 ? void 0 : _a.readyState) === WsState.Open ||\n ((_b = manager.ws) === null || _b === void 0 ? void 0 : _b.readyState) === WsState.Connecting) {\n query.stream.on(type, listener);\n }\n else {\n console.error(\"Trying to add a listener to a closed stream.\");\n }\n };\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n var off = function (type, listener) {\n var _a, _b;\n if (((_a = manager.ws) === null || _a === void 0 ? void 0 : _a.readyState) === WsState.Open ||\n ((_b = manager.ws) === null || _b === void 0 ? void 0 : _b.readyState) === WsState.Connecting) {\n query.stream.off(type, listener);\n }\n else {\n console.error(\"Trying to remove a listener from a closed stream.\");\n }\n };\n var close = function () {\n query.stream.close();\n };\n return { on: on, off: off, close: close };\n };\n QueryStreamsManager.ENDPOINT = \"v1/stream/query\";\n return QueryStreamsManager;\n}());\n/**\n * An object of type `Ledger` represents a handle to a Daml ledger.\n */\nvar Ledger = /** @class */ (function () {\n /**\n * Construct a new `Ledger` object. See [[LedgerOptions]] for the constructor arguments.\n */\n function Ledger(_a) {\n var token = _a.token, httpBaseUrl = _a.httpBaseUrl, wsBaseUrl = _a.wsBaseUrl, _b = _a.reconnectThreshold, reconnectThreshold = _b === void 0 ? 30000 : _b, _c = _a.multiplexQueryStreams, multiplexQueryStreams = _c === void 0 ? false : _c;\n if (!httpBaseUrl) {\n httpBaseUrl = \"\".concat(window.location.protocol, \"//\").concat(window.location.host, \"/\");\n }\n if (!(httpBaseUrl.startsWith(\"http://\") || httpBaseUrl.startsWith(\"https://\"))) {\n throw Error(\"Ledger: httpBaseUrl must start with 'http://' or 'https://'. (\".concat(httpBaseUrl, \")\"));\n }\n if (!httpBaseUrl.endsWith(\"/\")) {\n throw Error(\"Ledger: httpBaseUrl must end with '/'. (\".concat(httpBaseUrl, \")\"));\n }\n if (!wsBaseUrl) {\n wsBaseUrl = \"ws\" + httpBaseUrl.slice(4);\n }\n if (!(wsBaseUrl.startsWith(\"ws://\") || wsBaseUrl.startsWith(\"wss://\"))) {\n throw Error(\"Ledger: wsBaseUrl must start with 'ws://' or 'wss://'. (\".concat(wsBaseUrl, \")\"));\n }\n if (!wsBaseUrl.endsWith(\"/\")) {\n throw Error(\"Ledger: wsBaseUrl must end with '/'. (\".concat(wsBaseUrl, \")\"));\n }\n this.token = token;\n this.httpBaseUrl = httpBaseUrl;\n this.wsBaseUrl = wsBaseUrl;\n this.reconnectThreshold = reconnectThreshold;\n this.multiplexQueryStreams = multiplexQueryStreams;\n this.queryStreamsManager = new QueryStreamsManager({\n token: token,\n wsBaseUrl: wsBaseUrl,\n reconnectThreshold: reconnectThreshold,\n });\n }\n /**\n * @internal\n */\n Ledger.prototype.auth = function () {\n return { Authorization: \"Bearer \" + this.token };\n };\n /**\n * @internal\n */\n Ledger.prototype.throwOnError = function (r) {\n return __awaiter(this, void 0, void 0, function () {\n var json;\n return __generator(this, function (_a) {\n switch (_a.label) {\n case 0:\n if (!!r.ok) return [3 /*break*/, 2];\n return [4 /*yield*/, r.json()];\n case 1:\n json = _a.sent();\n console.log(json);\n throw decode(decodeLedgerError, json);\n case 2: return [2 /*return*/];\n }\n });\n });\n };\n /**\n * @internal\n *\n * Internal function to submit a command to the JSON API.\n */\n Ledger.prototype.submit = function (endpoint_1, payload_1) {\n return __awaiter(this, arguments, void 0, function (endpoint, payload, method) {\n var httpResponse, json, ledgerResponse;\n if (method === void 0) { method = \"post\"; }\n return __generator(this, function (_a) {\n switch (_a.label) {\n case 0: return [4 /*yield*/, (0, cross_fetch_1.default)(this.httpBaseUrl + endpoint, {\n body: JSON.stringify(payload),\n headers: __assign(__assign({}, this.auth()), { \"Content-type\": \"application/json\" }),\n method: method,\n })];\n case 1:\n httpResponse = _a.sent();\n return [4 /*yield*/, this.throwOnError(httpResponse)];\n case 2:\n _a.sent();\n return [4 /*yield*/, httpResponse.json()];\n case 3:\n json = _a.sent();\n ledgerResponse = jtv.Result.withException(decodeLedgerResponse.run(json));\n if (!(ledgerResponse.status >= 200 && ledgerResponse.status <= 299)) {\n console.log(\"Request to \".concat(endpoint, \" returned status \").concat(ledgerResponse.status, \" with response body: \").concat(JSON.stringify(json), \".\"));\n throw decode(decodeLedgerError, json);\n }\n if (ledgerResponse.warnings) {\n console.warn(ledgerResponse.warnings);\n }\n return [2 /*return*/, ledgerResponse.result];\n }\n });\n });\n };\n /***\n * Internal\n *\n * Retrieve the readiness status from the JSON API.\n */\n Ledger.prototype.checkIfReady = function () {\n return __awaiter(this, void 0, void 0, function () {\n var endpoint, httpResponse, text, json, ledgerResponse;\n return __generator(this, function (_a) {\n switch (_a.label) {\n case 0:\n endpoint = \"readyz\";\n return [4 /*yield*/, (0, cross_fetch_1.default)(this.httpBaseUrl + endpoint, {\n headers: __assign(__assign({}, this.auth()), { \"Content-type\": \"application/json\" }),\n method: \"get\",\n })];\n case 1:\n httpResponse = _a.sent();\n return [4 /*yield*/, this.throwOnError(httpResponse)];\n case 2:\n _a.sent();\n return [4 /*yield*/, httpResponse.text()];\n case 3:\n text = _a.sent();\n if (!text.includes(\"readyz check passed\")) return [3 /*break*/, 4];\n return [2 /*return*/, httpResponse];\n case 4:\n if (!text.includes(\"readyz check failed\")) return [3 /*break*/, 5];\n throw decode(decodeLedgerError, httpResponse);\n case 5: return [4 /*yield*/, httpResponse.json()];\n case 6:\n json = _a.sent();\n ledgerResponse = jtv.Result.withException(decodeLedgerResponse.run(json));\n if (!(ledgerResponse.status >= 200 && ledgerResponse.status <= 299)) {\n console.log(\"Request to \".concat(endpoint, \" returned status \").concat(ledgerResponse.status, \" with response body: \").concat(JSON.stringify(json), \".\"));\n throw decode(decodeLedgerError, json);\n }\n if (ledgerResponse.warnings) {\n console.warn(ledgerResponse.warnings);\n }\n return [2 /*return*/, ledgerResponse.result];\n }\n });\n });\n };\n /***\n * Retrieve the readiness status from the JSON API with retries every 1s.\n */\n Ledger.prototype.ready = function (maxAttempts) {\n return __awaiter(this, void 0, void 0, function () {\n var execute, delay;\n var _this = this;\n return __generator(this, function (_a) {\n execute = function (attempt) { return __awaiter(_this, void 0, void 0, function () {\n var err_1;\n return __generator(this, function (_a) {\n switch (_a.label) {\n case 0:\n _a.trys.push([0, 2, , 3]);\n return [4 /*yield*/, this.checkIfReady()];\n case 1: return [2 /*return*/, _a.sent()];\n case 2:\n err_1 = _a.sent();\n if (attempt <= maxAttempts) {\n return [2 /*return*/, delay(function () { return execute(attempt + 1); }, 1000)];\n }\n else {\n throw err_1;\n }\n return [3 /*break*/, 3];\n case 3: return [2 /*return*/];\n }\n });\n }); };\n delay = function (fn, ms) { return __awaiter(_this, void 0, void 0, function () {\n return __generator(this, function (_a) {\n return [2 /*return*/, new Promise(function (resolve) { return setTimeout(function () { return resolve(fn()); }, ms); })];\n });\n }); };\n return [2 /*return*/, execute(1)];\n });\n });\n };\n /**\n * Retrieve contracts for a given template.\n *\n * When no `query` argument is given, all contracts visible to the submitting party are returned.\n * When a `query` argument is given, only those contracts matching the query are returned. See\n * https://docs.daml.com/json-api/search-query-language.html for a description of the query\n * language.\n *\n * @param template The contract template of the contracts to be matched against.\n * @param query The contract query for the contracts to be matched against.\n *\n * @typeparam T The contract template type.\n * @typeparam K The contract key type.\n * @typeparam I The contract id type.\n *\n */\n Ledger.prototype.query = function (template, query) {\n return __awaiter(this, void 0, void 0, function () {\n var payload, json;\n return __generator(this, function (_a) {\n switch (_a.label) {\n case 0:\n payload = {\n templateIds: [template.templateId],\n query: encodeQuery(template, query),\n };\n return [4 /*yield*/, this.submit(\"v1/query\", payload)];\n case 1:\n json = _a.sent();\n return [2 /*return*/, jtv.Result.withException(jtv.array(decodeCreateEvent(template)).run(json))];\n }\n });\n });\n };\n /**\n * Fetch a contract identified by its contract ID.\n *\n * @param template The template of the contract to be fetched.\n * @param contractId The contract id of the contract to be fetched.\n *\n * @typeparam T The contract template type.\n * @typeparam K The contract key type.\n * @typeparam I The contract id type.\n *\n */\n Ledger.prototype.fetch = function (template, contractId) {\n return __awaiter(this, void 0, void 0, function () {\n var payload, json;\n return __generator(this, function (_a) {\n switch (_a.label) {\n case 0:\n payload = {\n templateId: template.templateId,\n contractId: (0, types_1.ContractId)(template).encode(contractId),\n };\n return [4 /*yield*/, this.submit(\"v1/fetch\", payload)];\n case 1:\n json = _a.sent();\n return [2 /*return*/, jtv.Result.withException(jtv.oneOf(jtv.constant(null), decodeCreateEvent(template)).run(json))];\n }\n });\n });\n };\n /**\n * Fetch a contract identified by its contract key.\n *\n * Same as [[fetch]], but the contract to be fetched is identified by its contract key instead of\n * its contract id.\n *\n * @param template The template of the contract to be fetched.\n * @param key The contract key of the contract to be fetched.\n *\n * @typeparam T The contract template type.\n * @typeparam K The contract key type.\n * @typeparam I The contract id type.\n */\n Ledger.prototype.fetchByKey = function (template, key) {\n return __awaiter(this, void 0, void 0, function () {\n var payload, json;\n return __generator(this, function (_a) {\n switch (_a.label) {\n case 0:\n if (key === undefined) {\n throw Error(\"Cannot lookup by key on template \".concat(template.templateId, \" because it does not define a key.\"));\n }\n payload = {\n templateId: template.templateId,\n key: template.keyEncode(key),\n };\n return [4 /*yield*/, this.submit(\"v1/fetch\", payload)];\n case 1:\n json = _a.sent();\n return [2 /*return*/, jtv.Result.withException(jtv.oneOf(jtv.constant(null), decodeCreateEvent(template)).run(json))];\n }\n });\n });\n };\n /**\n * Create a contract for a given template.\n *\n * @param template The template of the contract to be created.\n * @param payload The template arguments for the contract to be created.\n * @param meta Optional meta fields to specify additional data on a command submission.\n *\n * @typeparam T The contract template type.\n * @typeparam K The contract key type.\n * @typeparam I The contract id type.\n *\n */\n Ledger.prototype.create = function (template, payload, meta) {\n return __awaiter(this, void 0, void 0, function () {\n var command, json;\n return __generator(this, function (_a) {\n switch (_a.label) {\n case 0:\n command = {\n templateId: template.templateId,\n payload: template.encode(payload),\n meta: meta,\n };\n return [4 /*yield*/, this.submit(\"v1/create\", command)];\n case 1:\n json = _a.sent();\n return [2 /*return*/, jtv.Result.withException(decodeCreateEvent(template).run(json))];\n }\n });\n });\n };\n /**\n * Exercise a choice on a contract identified by its contract ID.\n *\n * @param choice The choice to exercise.\n * @param contractId The contract id of the contract to exercise.\n * @param argument The choice arguments.\n * @param meta Optional meta fields to specify additional data on a command submission.\n *\n * @typeparam T The contract template type.\n * @typeparam C The type of the contract choice.\n * @typeparam R The return type of the choice.\n *\n * @returns The return value of the choice together with a list of\n * [[event]]'s that were created as a result of exercising the choice.\n */\n Ledger.prototype.exercise = function (choice, contractId, argument, meta) {\n return __awaiter(this, void 0, void 0, function () {\n var payload, json, responseDecoder, _a, exerciseResult, events;\n return __generator(this, function (_b) {\n switch (_b.label) {\n case 0:\n payload = {\n templateId: choice.template().templateId,\n contractId: (0, types_1.ContractId)(choice.template()).encode(contractId),\n choice: choice.choiceName,\n argument: choice.argumentEncode(argument),\n meta: meta,\n };\n return [4 /*yield*/, this.submit(\"v1/exercise\", payload)];\n case 1:\n json = _b.sent();\n responseDecoder = jtv.object({\n exerciseResult: choice.resultDecoder,\n events: jtv.array(decodeEventUnknown),\n });\n _a = jtv.Result.withException(responseDecoder.run(json)), exerciseResult = _a.exerciseResult, events = _a.events;\n return [2 /*return*/, [exerciseResult, events]];\n }\n });\n });\n };\n /**\n * Exercse a choice on a newly-created contract, in a single transaction.\n *\n * @param choice The choice to exercise.\n * @param payload The template arguments for the newly-created contract.\n * @param argument The choice arguments.\n * @param meta Optional meta fields to specify additional data on a command submission.\n *\n * @typeparam T The contract template type.\n * @typeparam C The type of the contract choice.\n * @typeparam R The return type of the choice.\n *\n * @returns The return value of the choice together with a list of\n * [[event]]'s that includes the creation event for the created contract as\n * well as all the events that were created as a result of exercising the\n * choice, including the archive event for the created contract if the choice\n * is consuming (or otherwise archives it as part of its execution).\n *\n */\n Ledger.prototype.createAndExercise = function (choice, payload, argument, meta) {\n return __awaiter(this, void 0, void 0, function () {\n var command, json, responseDecoder, _a, exerciseResult, events;\n return __generator(this, function (_b) {\n switch (_b.label) {\n case 0:\n command = {\n templateId: choice.template().templateId,\n payload: choice.template().encode(payload),\n choice: choice.choiceName,\n argument: choice.argumentEncode(argument),\n meta: meta,\n };\n return [4 /*yield*/, this.submit(\"v1/create-and-exercise\", command)];\n case 1:\n json = _b.sent();\n responseDecoder = jtv.object({\n exerciseResult: choice.resultDecoder,\n events: jtv.array(decodeEventUnknown),\n });\n _a = jtv.Result.withException(responseDecoder.run(json)), exerciseResult = _a.exerciseResult, events = _a.events;\n return [2 /*return*/, [exerciseResult, events]];\n }\n });\n });\n };\n /**\n * Exercise a choice on a contract identified by its contract key.\n *\n * Same as [[exercise]], but the contract is identified by its contract key instead of its\n * contract id.\n *\n * @param choice The choice to exercise.\n * @param key The contract key of the contract to exercise.\n * @param argument The choice arguments.\n * @param meta Optional meta fields to specify additional data on a command submission.\n *\n * @typeparam T The contract template type.\n * @typeparam C The type of the contract choice.\n * @typeparam R The return type of the choice.\n * @typeparam K The type of the contract key.\n *\n * @returns The return value of the choice together with a list of [[event]]'s that where created\n * as a result of exercising the choice.\n */\n Ledger.prototype.exerciseByKey = function (choice, key, argument, meta) {\n return __awaiter(this, void 0, void 0, function () {\n var payload, json, responseDecoder, _a, exerciseResult, events;\n return __generator(this, function (_b) {\n switch (_b.label) {\n case 0:\n if (key === undefined) {\n throw Error(\"Cannot exercise by key on template \".concat(choice.template().templateId, \" because it does not define a key.\"));\n }\n payload = {\n templateId: choice.template().templateId,\n key: choice.template().keyEncode(key),\n choice: choice.choiceName,\n argument: choice.argumentEncode(argument),\n meta: meta,\n };\n return [4 /*yield*/, this.submit(\"v1/exercise\", payload)];\n case 1:\n json = _b.sent();\n responseDecoder = jtv.object({\n exerciseResult: choice.resultDecoder,\n events: jtv.array(decodeEventUnknown),\n });\n _a = jtv.Result.withException(responseDecoder.run(json)), exerciseResult = _a.exerciseResult, events = _a.events;\n return [2 /*return*/, [exerciseResult, events]];\n }\n });\n });\n };\n /**\n * Archive a contract identified by its contract ID.\n *\n * @param template The template of the contract to archive.\n * @param contractId The contract id of the contract to archive.\n * @param meta Optional meta fields to specify additional data on a command submission.\n *\n * @typeparam T The contract template type.\n * @typeparam K The contract key type.\n * @typeparam I The contract id type.\n *\n */\n Ledger.prototype.archive = function (template, contractId, meta) {\n return __awaiter(this, void 0, void 0, function () {\n var _this = this;\n return __generator(this, function (_a) {\n return [2 /*return*/, decodeArchiveResponse(template, \"archive\", function () {\n return _this.exercise(template.Archive, contractId, {}, meta);\n })];\n });\n });\n };\n /**\n * Archive a contract identified by its contract key.\n * Same as [[archive]], but the contract to be archived is identified by its contract key.\n *\n * @param template The template of the contract to be archived.\n * @param key The contract key of the contract to be archived.\n * @param meta Optional meta fields to specify additional data on a command submission.\n *\n * @typeparam T The contract template type.\n * @typeparam K The contract key type.\n * @typeparam I The contract id type.\n *\n */\n Ledger.prototype.archiveByKey = function (template, key, meta) {\n return __awaiter(this, void 0, void 0, function () {\n var _this = this;\n return __generator(this, function (_a) {\n return [2 /*return*/, decodeArchiveResponse(template, \"archiveByKey\", function () {\n return _this.exerciseByKey(template.Archive, key, {}, meta);\n })];\n });\n });\n };\n /**\n * @internal\n *\n * Internal command to submit a request to a streaming endpoint of the\n * JSON API. Returns a stream consisting of accumulated state together with\n * the events that produced the latest state change. The `change` function\n * must be an operation of the monoid `Event<T, K, I>[]` on the set `State`,\n * i.e., for all `s: State` and `x, y: Event<T, K, I>[]` we\n * must have the structural equalities\n * ```\n * change(s, []) == s\n * change(s, x.concat(y)) == change(change(s, x), y)\n * ```\n * Also, `change` must never change its arguments.\n */\n Ledger.prototype.streamSubmit = function (callerName, template, endpoint, request, reconnectRequest, init, change) {\n var _this = this;\n var protocols = [\"jwt.token.\" + this.token, \"daml.ws.auth\"];\n var ws = new isomorphic_ws_1.default(this.wsBaseUrl + endpoint, protocols);\n var isLiveSince = undefined;\n var lastOffset = undefined;\n var state = init;\n var isReconnecting = false;\n var streamClosed = false;\n var emitter = new events_1.EventEmitter();\n var onWsOpen = function () {\n if (isReconnecting) {\n // the JSON API server can't handle null offsets, even though it sends them out under\n // special conditions when there are no transactions yet. Not sending the `offset` message\n // will start the stream from the very beginning of the transaction log.\n if (lastOffset !== null)\n ws.send(JSON.stringify({ offset: lastOffset }));\n ws.send(JSON.stringify(reconnectRequest()));\n }\n else {\n ws.send(JSON.stringify(request));\n }\n };\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n var onWsMessage = function (event) {\n var json = JSON.parse(event.data.toString());\n if (isRecordWith(\"events\", json)) {\n var events = jtv.Result.withException(jtv.array(decodeEvent(template)).run(json.events));\n if (events.length > 0) {\n state = change(state, events);\n emitter.emit(\"change\", state, events);\n }\n if (isRecordWith(\"offset\", json)) {\n lastOffset = jtv.Result.withException(jtv.oneOf(jtv.constant(null), jtv.string()).run(json.offset));\n if (isLiveSince === undefined) {\n isLiveSince = Date.now();\n emitter.emit(\"live\", state);\n }\n }\n }\n else if (isRecordWith(\"warnings\", json)) {\n console.warn(\"\".concat(callerName, \" warnings\"), json);\n }\n else if (isRecordWith(\"errors\", json)) {\n console.error(\"\".concat(callerName, \" errors\"), json);\n }\n else {\n console.error(\"\".concat(callerName, \" unknown message\"), json);\n }\n };\n var closeStream = function (status) {\n streamClosed = true;\n emitter.emit(\"close\", status);\n emitter.removeAllListeners();\n };\n var onWsClose = function () {\n if (streamClosed === false) {\n var now = new Date().getTime();\n // we want to try and keep the stream open, so we try to reconnect\n // the underlying ws\n if (lastOffset !== undefined &&\n isLiveSince !== undefined &&\n now - isLiveSince >= _this.reconnectThreshold) {\n isLiveSince = undefined;\n isReconnecting = true;\n ws = new isomorphic_ws_1.default(_this.wsBaseUrl + endpoint, protocols);\n ws.addEventListener(\"open\", onWsOpen);\n ws.addEventListener(\"message\", onWsMessage);\n ws.addEventListener(\"close\", onWsClose);\n }\n else {\n // ws has closed too quickly / never managed to connect: we give up\n closeStream({ code: 4001, reason: \"ws connection failed\" });\n }\n } // no else: if the stream is closed we don't need to keep a ws\n };\n ws.addEventListener(\"open\", onWsOpen);\n ws.addEventListener(\"message\", onWsMessage);\n // NOTE(MH): We ignore the 'error' event since it is always followed by a\n // 'close' event, which we need to handle anyway.\n ws.addEventListener(\"close\", onWsClose);\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n var on = function (type, listener) {\n if (streamClosed === false) {\n void emitter.on(type, listener);\n }\n else {\n console.error(\"Trying to add a listener to a closed stream.\");\n }\n };\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n var off = function (type, listener) {\n if (streamClosed === false) {\n void emitter.off(type, listener);\n }\n else {\n console.error(\"Trying to remove a listener from a closed stream.\");\n }\n };\n var close = function () {\n // Note: ws.close will trigger the onClose handlers of the WebSocket\n // (here onWsClose), but they execute as a separate event after the\n // current event in the JS event loop, i.e. in particular after the call\n // to closeStream and thus, in this case, the onWsClose handler will see\n // streamClosed as true.\n ws.close();\n closeStream({ code: 4000, reason: \"called .close()\" });\n };\n return { on: on, off: off, close: close };\n };\n /**\n * Retrieve a consolidated stream of events for a given template and query.\n *\n * The accumulated state is the current set of active contracts matching the query. When no\n * `query` argument is given, all events visible to the submitting party are returned. When a\n * `query` argument is given, only those create events matching the query are returned. See\n * https://docs.daml.com/json-api/search-query-language.html for a description of the query\n * language.\n *\n * @deprecated Prefer `streamQueries`.\n *\n * @param template The contract template to match contracts against.\n * @param query The query to match contracts agains.\n *\n * @typeparam T The contract template type.\n * @typeparam K The contract key type.\n * @typeparam I The contract id type.\n *\n */\n Ledger.prototype.streamQuery = function (template, query) {\n if (query === undefined) {\n return this.streamQueryCommon(template, [], \"Ledger.streamQuery\");\n }\n else {\n return this.streamQueryCommon(template, [query], \"Ledger.streamQuery\");\n }\n };\n /**\n * @internal\n *\n */\n Ledger.prototype.streamQueryCommon = function (template, queries, name) {\n if (this.multiplexQueryStreams) {\n return this.queryStreamsManager.streamSubmit(template, queries, name);\n }\n else {\n var request_3 = queries.length == 0\n ? [{ templateIds: [template.templateId] }]\n : queries.map(function (q) { return ({\n templateIds: [template.templateId],\n query: encodeQuery(template, q),\n }); });\n var reconnectRequest = function () { return request_3; };\n var change = function (contracts, events) {\n var archiveEvents = new Set();\n var createEvents = [];\n for (var _i = 0, events_5 = events; _i < events_5.length; _i++) {\n var event_3 = events_5[_i];\n if (\"created\" in event_3) {\n createEvents.push(event_3.created);\n }\n else if (\"archived\" in event_3) {\n archiveEvents.add(event_3.archived.contractId);\n }\n }\n return contracts\n .concat(createEvents)\n .filter(function (contract) { return !archiveEvents.has(contract.contractId); });\n };\n return this.streamSubmit(name, template, \"v1/stream/query\", request_3, reconnectRequest, [], change);\n }\n };\n /**\n * Retrieve a consolidated stream of events for a given template and queries.\n *\n * If the given list is empty, the accumulated state is the set of all active\n * contracts for the given template. Otherwise, the accumulated state is the\n * set of all contracts that match at least one of the given queries.\n *\n * See https://docs.daml.com/json-api/search-query-language.html for a\n * description of the query language.\n *\n * @param template The contract template to match contracts against.\n * @param queries A query to match contracts against.\n *\n * @typeparam T The contract template type.\n * @typeparam K The contract key type.\n * @typeparam I The contract id type.\n */\n Ledger.prototype.streamQueries = function (template, queries) {\n return this.streamQueryCommon(template, queries, \"Ledger.streamQueries\");\n };\n /**\n * Retrieve a consolidated stream of events for a given template and contract key.\n *\n * The accumulated state is either the current active contract for the given\n * key, or null if there is no active contract for the given key.\n *\n * @deprecated Prefer `streamFetchByKeys`.\n *\n * @typeparam T The contract template type.\n * @typeparam K The contract key type.\n * @typeparam I The contract id type.\n *\n */\n Ledger.prototype.streamFetchByKey = function (template, key) {\n // Note: this implementation is deliberately not unified with that of\n // `streamFetchByKeys`, because doing so would add the requirement that the\n // given key be in output format, whereas existing implementation supports\n // input format.\n var lastContractId = null;\n var request = [\n { templateId: template.templateId, key: template.keyEncode(key) },\n ];\n var reconnectRequest = function () { return [\n __assign(__assign({}, request[0]), { contractIdAtOffset: lastContractId && (0, types_1.ContractId)(template).encode(lastContractId) }),\n ]; };\n var change = function (contract, events) {\n for (var _i = 0, events_6 = events; _i < events_6.length; _i++) {\n var event_4 = events_6[_i];\n if (\"created\" in event_4) {\n contract = event_4.created;\n }\n else {\n // i.e. 'archived' event\n if (contract && contract.contractId === event_4.archived.contractId) {\n contract = null;\n }\n }\n }\n lastContractId = contract ? contract.contractId : null;\n return contract;\n };\n return this.streamSubmit(\"Ledger.streamFetchByKey\", template, \"v1/stream/fetch\", request, reconnectRequest, null, change);\n };\n /**\n * @internal\n *\n * Returns the same API as [[streamSubmit]] but does not, in fact, establish\n * any socket connection. Instead, this is a stream that always has the given\n * value as its accumulated state.\n */\n Ledger.prototype.constantStream = function (value) {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n function on(type, listener) {\n if (type === \"live\") {\n listener(value);\n }\n if (type === \"change\") {\n listener(value, []);\n }\n }\n // eslint-disable-next-line @typescript-eslint/no-explicit-any, @typescript-eslint/no-unused-vars, @typescript-eslint/no-empty-function\n function off(_t, _l) { }\n // eslint-disable-next-line @typescript-eslint/no-empty-function\n return { on: on, off: off, close: function () { } };\n };\n /**\n * Retrieve a consolidated stream of events for a list of keys and a single\n * template.\n *\n * The accumulated state is an array of the same length as the given list of\n * keys, with positional correspondence. Each element in the array represents\n * the current contract for the given key, or is explicitly null if there is\n * currently no active contract matching that key.\n *\n * Note: the given `key` objects will be compared for (deep) equality with\n * the values returned by the API. As such, they have to be given in the\n * \"output\" format of the API, including the values of\n * `encodeDecimalAsString` and `encodeInt64AsString`. See [the JSON API docs\n * for details](https://docs.daml.com/json-api/lf-value-specification.html).\n *\n * @typeparam T The contract template type.\n * @typeparam K The contract key type.\n * @typeparam I The contract id type.\n */\n Ledger.prototype.streamFetchByKeys = function (template, keys) {\n // We support zero-length key so clients can more easily manage a dynamic\n // list, without having to special-case 0-length on their side.\n if (keys.length == 0) {\n return this.constantStream([]);\n }\n var lastContractIds = Array(keys.length).fill(null);\n var keysCopy = lodash_1.default.cloneDeep(keys);\n var initState = Array(keys.length).fill(null);\n var request = keys.map(function (k) { return ({\n templateId: template.templateId,\n key: template.keyEncode(k),\n }); });\n var reconnectRequest = function () {\n return request.map(function (r, idx) {\n var lastId = lastContractIds[idx];\n return __assign(__assign({}, r), { contractIdAtOffset: lastId && (0, types_1.ContractId)(template).encode(lastId) });\n });\n };\n var change = function (state, events) {\n var newState = Array.from(state);\n var _loop_1 = function (event_5) {\n if (\"created\" in event_5) {\n var k_1 = event_5.created.key;\n keysCopy.forEach(function (requestKey, idx) {\n if (lodash_1.default.isEqual(requestKey, k_1)) {\n newState[idx] = event_5.created;\n }\n });\n }\n else {\n // i.e. 'archived' in event\n var id_1 = event_5.archived.contractId;\n newState.forEach(function (contract, idx) {\n if (contract && contract.contractId === id_1) {\n newState[idx] = null;\n }\n });\n }\n };\n for (var _i = 0, events_7 = events; _i < events_7.length; _i++) {\n var event_5 = events_7[_i];\n _loop_1(event_5);\n }\n newState.forEach(function (c, idx) {\n lastContractIds[idx] = c ? c.contractId : null;\n });\n return newState;\n };\n return this.streamSubmit(\"streamFetchByKeys\", template, \"v1/stream/fetch\", request, reconnectRequest, initState, change);\n };\n /**\n * Fetch parties by identifier.\n *\n * @param parties An array of Party identifiers.\n *\n * @returns An array of the same length, where each element corresponds to\n * the same-index element of the given parties, ans is either a PartyInfo\n * object if the party exists or null if it does not.\n *\n */\n Ledger.prototype.getParties = function (parties) {\n return __awaiter(this, void 0, void 0, function () {\n var json, resp, mapping, _i, resp_1, p, ret, idx;\n return __generator(this, function (_a) {\n switch (_a.label) {\n case 0:\n if (parties.length === 0) {\n return [2 /*return*/, []];\n }\n return [4 /*yield*/, this.submit(\"v1/parties\", parties)];\n case 1:\n json = _a.sent();\n resp = decode(jtv.array(partyInfoDecoder), json);\n mapping = {};\n for (_i = 0, resp_1 = resp; _i < resp_1.length; _i++) {\n p = resp_1[_i];\n mapping[p.identifier] = p;\n }\n ret = Array(parties.length).fill(null);\n for (idx = 0; idx < parties.length; idx++) {\n ret[idx] = mapping[parties[idx]] || null;\n }\n return [2 /*return*/, ret];\n }\n });\n });\n };\n /**\n * Fetch all parties on the ledger.\n *\n * @returns All parties on the ledger, in no particular order.\n *\n */\n Ledger.prototype.listKnownParties = function () {\n return __awaiter(this, void 0, void 0, function () {\n var json;\n return __generator(this, function (_a) {\n switch (_a.label) {\n case 0: return [4 /*yield*/, this.submit(\"v1/parties\", undefined, \"get\")];\n case 1:\n json = _a.sent();\n return [2 /*return*/, decode(jtv.array(partyInfoDecoder), json)];\n }\n });\n });\n };\n /**\n * Get the current user details obtained by the currently used JWT.\n *\n * @param userId The user id\n *\n * @returns User details\n *\n */\n Ledger.prototype.getUser = function (userId) {\n return __awaiter(this, void 0, void 0, function () {\n var json, _a;\n return __generator(this, function (_b) {\n switch (_b.label) {\n case 0:\n if (!(0, lodash_1.isUndefined)(userId)) return [3 /*break*/, 2];\n return [4 /*yield*/, this.submit(\"v1/user\", undefined, \"get\")];\n case 1:\n _a = _b.sent();\n return [3 /*break*/, 4];\n case 2: return [4 /*yield*/, this.submit(\"v1/user\", { userId: userId }, \"post\")];\n case 3:\n _a = _b.sent();\n _b.label = 4;\n case 4:\n json = _a;\n return [2 /*return*/, decode(userDecoder, json)];\n }\n });\n });\n };\n /**\n * Lists the users on the ledger\n *\n * @returns user list\n *\n */\n Ledger.prototype.listUsers = function () {\n return __awaiter(this, void 0, void 0, function () {\n var json;\n return __generator(this, function (_a) {\n switch (_a.label) {\n case 0: return [4 /*yield*/, this.submit(\"v1/users\", undefined, \"get\")];\n case 1:\n json = _a.sent();\n return [2 /*return*/, decode(jtv.array(userDecoder), json)];\n }\n });\n });\n };\n /**\n * Lists the rights associated with the given user id\n *\n * @param userId, if empty then the user id will obtained by the currently used JWT.\n *\n * @returns list of user rights\n */\n Ledger.prototype.listUserRights = function (userId) {\n return __awaiter(this, void 0, void 0, function () {\n var json, _a;\n return __generator(this, function (_b) {\n switch (_b.label) {\n case 0:\n if (!(0, lodash_1.isUndefined)(userId)) return [3 /*break*/, 2];\n return [4 /*yield*/, this.submit(\"v1/user/rights\", undefined, \"get\")];\n case 1:\n _a = _b.sent();\n return [3 /*break*/, 4];\n case 2: return [4 /*yield*/, this.submit(\"v1/user/rights\", { userId: userId })];\n case 3:\n _a = _b.sent();\n _b.label = 4;\n case 4:\n json = _a;\n return [2 /*return*/, decode(jtv.array(userRightDecoder), json)];\n }\n });\n });\n };\n /**\n * Grants rights to a user\n *\n * @param userId The user to which rights shall be granted\n *\n * @param rights The rights which shall be granted\n *\n * @returns The rights which actually were granted (if a right was already granted, then it will not be in the return list)\n */\n Ledger.prototype.grantUserRights = function (userId, rights) {\n return __awaiter(this, void 0, void 0, function () {\n var json;\n return __generator(this, function (_a) {\n switch (_a.label) {\n case 0: return [4 /*yield*/, this.submit(\"v1/user/rights/grant\", {\n userId: userId,\n rights: rights,\n })];\n case 1:\n json = _a.sent();\n return [2 /*return*/, decode(jtv.array(userRightDecoder), json)];\n }\n });\n });\n };\n /**\n * Revokes rights from a user\n *\n * @param userId The user from which rights shall be revoked\n *\n * @param rights The rights which shall be revoked\n *\n * @returns The rights which actually were revoked (if a right was already revoked, then it will not be in the return list)\n */\n Ledger.prototype.revokeUserRights = function (userId, rights) {\n return __awaiter(this, void 0, void 0, function () {\n var json;\n return __generator(this, function (_a) {\n switch (_a.label) {\n case 0: return [4 /*yield*/, this.submit(\"v1/user/rights/revoke\", {\n userId: userId,\n rights: rights,\n })];\n case 1:\n json = _a.sent();\n return [2 /*return*/, decode(jtv.array(userRightDecoder), json)];\n }\n });\n });\n };\n /**\n * Creates a user\n *\n * @param userId The user ID\n * @param rights The initial rights the user should have\n * @param primaryParty The primary party the user should have\n *\n */\n Ledger.prototype.createUser = function (userId, rights, primaryParty) {\n return __awaiter(this, void 0, void 0, function () {\n return __generator(this, function (_a) {\n switch (_a.label) {\n case 0: return [4 /*yield*/, this.submit(\"v1/user/create\", {\n userId: userId,\n rights: rights,\n primaryParty: primaryParty,\n })];\n case 1:\n _a.sent();\n return [2 /*return*/];\n }\n });\n });\n };\n /**\n * Deletes a user\n *\n * @param userId The user ID\n * @param rights The initial rights the user should have\n * @param primaryParty The primary party the user should have\n *\n */\n Ledger.prototype.deleteUser = function (userId) {\n return __awaiter(this, void 0, void 0, function () {\n return __generator(this, function (_a) {\n switch (_a.label) {\n case 0: return [4 /*yield*/, this.submit(\"v1/user/delete\", { userId: userId })];\n case 1:\n _a.sent();\n return [2 /*return*/];\n }\n });\n });\n };\n /**\n * Allocate a new party.\n *\n * @param partyOpt Parameters for party allocation.\n *\n * @returns PartyInfo for the newly created party.\n *\n */\n Ledger.prototype.allocateParty = function (partyOpt) {\n return __awaiter(this, void 0, void 0, function () {\n var json;\n return __generator(this, function (_a) {\n switch (_a.label) {\n case 0: return [4 /*yield*/, this.submit(\"v1/parties/allocate\", partyOpt)];\n case 1:\n json = _a.sent();\n return [2 /*return*/, decode(partyInfoDecoder, json)];\n }\n });\n });\n };\n /**\n * Fetch a list of all package IDs from the ledger.\n *\n * @returns List of package IDs.\n *\n */\n Ledger.prototype.listPackages = function () {\n return __awaiter(this, void 0, void 0, function () {\n var json;\n return __generator(this, function (_a) {\n switch (_a.label) {\n case 0: return [4 /*yield*/, this.submit(\"v1/packages\", undefined, \"get\")];\n case 1:\n json = _a.sent();\n return [2 /*return*/, decode(jtv.array(jtv.string()), json)];\n }\n });\n });\n };\n /**\n * Fetch a binary package.\n *\n * @returns The content of the package as a raw ArrayBuffer.\n *\n */\n Ledger.prototype.getPackage = function (id) {\n return __awaiter(this, void 0, void 0, function () {\n var httpResponse;\n return __generator(this, function (_a) {\n switch (_a.label) {\n case 0: return [4 /*yield*/, (0, cross_fetch_1.default)(this.httpBaseUrl + \"v1/packages/\" + id, {\n headers: this.auth(),\n method: \"get\",\n })];\n case 1:\n httpResponse = _a.sent();\n return [4 /*yield*/, this.throwOnError(httpResponse)];\n case 2:\n _a.sent();\n return [4 /*yield*/, httpResponse.arrayBuffer()];\n case 3: return [2 /*return*/, _a.sent()];\n }\n });\n });\n };\n /**\n * Upload a binary archive. Note that this requires admin privileges.\n *\n * @returns No return value on success; throws on error.\n *\n */\n Ledger.prototype.uploadDarFile = function (abuf) {\n return __awaiter(this, void 0, void 0, function () {\n var httpResponse;\n return __generator(this, function (_a) {\n switch (_a.label) {\n case 0: return [4 /*yield*/, (0, cross_fetch_1.default)(this.httpBaseUrl + \"v1/packages\", {\n body: abuf,\n headers: __assign(__assign({}, this.auth()), { \"Content-type\": \"application/octet-stream\" }),\n method: \"post\",\n })];\n case 1:\n httpResponse = _a.sent();\n return [4 /*yield*/, this.throwOnError(httpResponse)];\n case 2:\n _a.sent();\n return [2 /*return*/];\n }\n });\n });\n };\n return Ledger;\n}());\nexports.Ledger = Ledger;\nexports.default = Ledger;\n//# sourceMappingURL=index.js.map","'use strict'\n/* eslint-disable-next-line no-unused-vars */\nfunction __export(m) {\n /* eslint-disable-next-line no-prototype-builtins */\n for (var p in m) if (!exports.hasOwnProperty(p)) exports[p] = m[p]\n}\nObject.defineProperty(exports, '__esModule', { value: true })\n/* eslint-disable-next-line no-unused-vars */\nvar jtv = require('@mojotech/json-type-validation')\n/* eslint-disable-next-line no-unused-vars */\nvar damlTypes = require('@daml/types')\n/* eslint-disable-next-line no-unused-vars */\nvar damlLedger = require('@daml/ledger')\n\nexports.Archive = {\n decoder: damlTypes.lazyMemo(function () {\n return jtv.object({})\n }),\n encode: function (__typed__) {\n return {}\n },\n}\n","'use strict'\n/* eslint-disable-next-line no-unused-vars */\nfunction __export(m) {\n /* eslint-disable-next-line no-prototype-builtins */\n for (var p in m) if (!exports.hasOwnProperty(p)) exports[p] = m[p]\n}\nObject.defineProperty(exports, '__esModule', { value: true })\n__export(require('./module'))\n","'use strict'\n/* eslint-disable-next-line no-unused-vars */\nfunction __export(m) {\n /* eslint-disable-next-line no-prototype-builtins */\n for (var p in m) if (!exports.hasOwnProperty(p)) exports[p] = m[p]\n}\nObject.defineProperty(exports, '__esModule', { value: true })\nvar Template = require('./Template')\nexports.Template = Template\n","'use strict'\n/* eslint-disable-next-line no-unused-vars */\nfunction __export(m) {\n /* eslint-disable-next-line no-prototype-builtins */\n for (var p in m) if (!exports.hasOwnProperty(p)) exports[p] = m[p]\n}\nObject.defineProperty(exports, '__esModule', { value: true })\nvar Internal = require('./Internal')\nexports.Internal = Internal\n","'use strict'\n/* eslint-disable-next-line no-unused-vars */\nfunction __export(m) {\n /* eslint-disable-next-line no-prototype-builtins */\n for (var p in m) if (!exports.hasOwnProperty(p)) exports[p] = m[p]\n}\nObject.defineProperty(exports, '__esModule', { value: true })\nvar DA = require('./DA')\nexports.DA = DA\nexports.packageId =\n '9e70a8b3510d617f8a136213f33d6a903a10ca0eeec76bb06ba55d1ed9680f69'\n","'use strict'\n/* eslint-disable-next-line no-unused-vars */\nfunction __export(m) {\n /* eslint-disable-next-line no-prototype-builtins */\n for (var p in m) if (!exports.hasOwnProperty(p)) exports[p] = m[p]\n}\nObject.defineProperty(exports, '__esModule', { value: true })\n/* eslint-disable-next-line no-unused-vars */\nvar jtv = require('@mojotech/json-type-validation')\n/* eslint-disable-next-line no-unused-vars */\nvar damlTypes = require('@daml/types')\n/* eslint-disable-next-line no-unused-vars */\nvar damlLedger = require('@daml/ledger')\n\nexports.RelTime = {\n decoder: damlTypes.lazyMemo(function () {\n return jtv.object({ microseconds: damlTypes.Int.decoder })\n }),\n encode: function (__typed__) {\n return {\n microseconds: damlTypes.Int.encode(__typed__.microseconds),\n }\n },\n}\n","'use strict'\n/* eslint-disable-next-line no-unused-vars */\nfunction __export(m) {\n /* eslint-disable-next-line no-prototype-builtins */\n for (var p in m) if (!exports.hasOwnProperty(p)) exports[p] = m[p]\n}\nObject.defineProperty(exports, '__esModule', { value: true })\n__export(require('./module'))\n","'use strict'\n/* eslint-disable-next-line no-unused-vars */\nfunction __export(m) {\n /* eslint-disable-next-line no-prototype-builtins */\n for (var p in m) if (!exports.hasOwnProperty(p)) exports[p] = m[p]\n}\nObject.defineProperty(exports, '__esModule', { value: true })\nvar Types = require('./Types')\nexports.Types = Types\n","'use strict'\n/* eslint-disable-next-line no-unused-vars */\nfunction __export(m) {\n /* eslint-disable-next-line no-prototype-builtins */\n for (var p in m) if (!exports.hasOwnProperty(p)) exports[p] = m[p]\n}\nObject.defineProperty(exports, '__esModule', { value: true })\nvar Time = require('./Time')\nexports.Time = Time\n","'use strict'\n/* eslint-disable-next-line no-unused-vars */\nfunction __export(m) {\n /* eslint-disable-next-line no-prototype-builtins */\n for (var p in m) if (!exports.hasOwnProperty(p)) exports[p] = m[p]\n}\nObject.defineProperty(exports, '__esModule', { value: true })\nvar DA = require('./DA')\nexports.DA = DA\nexports.packageId =\n 'b70db8369e1c461d5c70f1c86f526a29e9776c655e6ffc2560f95b05ccb8b946'\n","'use strict'\n/* eslint-disable-next-line no-unused-vars */\nfunction __export(m) {\n /* eslint-disable-next-line no-prototype-builtins */\n for (var p in m) if (!exports.hasOwnProperty(p)) exports[p] = m[p]\n}\nObject.defineProperty(exports, '__esModule', { value: true })\n/* eslint-disable-next-line no-unused-vars */\nvar jtv = require('@mojotech/json-type-validation')\n/* eslint-disable-next-line no-unused-vars */\nvar damlTypes = require('@daml/types')\n/* eslint-disable-next-line no-unused-vars */\nvar damlLedger = require('@daml/ledger')\n\nvar pkg9e70a8b3510d617f8a136213f33d6a903a10ca0eeec76bb06ba55d1ed9680f69 = require('@daml.js/ghc-stdlib-DA-Internal-Template-1.0.0')\nvar pkgb70db8369e1c461d5c70f1c86f526a29e9776c655e6ffc2560f95b05ccb8b946 = require('@daml.js/daml-stdlib-DA-Time-Types-1.0.0')\n\nexports.AnyContract = damlTypes.assembleInterface(\n 'a132be8b23c8515da6c828dd97519a73d9c8b1aa6f9cddd3c7acc206e4b41f8c:Splice.Api.Token.MetadataV1:AnyContract',\n function () {\n return exports.AnyContractView\n },\n {\n Archive: {\n template: function () {\n return exports.AnyContract\n },\n choiceName: 'Archive',\n argumentDecoder: damlTypes.lazyMemo(function () {\n return pkg9e70a8b3510d617f8a136213f33d6a903a10ca0eeec76bb06ba55d1ed9680f69\n .DA.Internal.Template.Archive.decoder\n }),\n argumentEncode: function (__typed__) {\n return pkg9e70a8b3510d617f8a136213f33d6a903a10ca0eeec76bb06ba55d1ed9680f69.DA.Internal.Template.Archive.encode(\n __typed__\n )\n },\n resultDecoder: damlTypes.lazyMemo(function () {\n return damlTypes.Unit.decoder\n }),\n resultEncode: function (__typed__) {\n return damlTypes.Unit.encode(__typed__)\n },\n },\n }\n)\n\nexports.ChoiceExecutionMetadata = {\n decoder: damlTypes.lazyMemo(function () {\n return jtv.object({ meta: exports.Metadata.decoder })\n }),\n encode: function (__typed__) {\n return {\n meta: exports.Metadata.encode(__typed__.meta),\n }\n },\n}\n\nexports.ExtraArgs = {\n decoder: damlTypes.lazyMemo(function () {\n return jtv.object({\n context: exports.ChoiceContext.decoder,\n meta: exports.Metadata.decoder,\n })\n }),\n encode: function (__typed__) {\n return {\n context: exports.ChoiceContext.encode(__typed__.context),\n meta: exports.Metadata.encode(__typed__.meta),\n }\n },\n}\n\nexports.Metadata = {\n decoder: damlTypes.lazyMemo(function () {\n return jtv.object({ values: damlTypes.TextMap(damlTypes.Text).decoder })\n }),\n encode: function (__typed__) {\n return {\n values: damlTypes.TextMap(damlTypes.Text).encode(__typed__.values),\n }\n },\n}\n\nexports.ChoiceContext = {\n decoder: damlTypes.lazyMemo(function () {\n return jtv.object({\n values: damlTypes.TextMap(exports.AnyValue).decoder,\n })\n }),\n encode: function (__typed__) {\n return {\n values: damlTypes\n .TextMap(exports.AnyValue)\n .encode(__typed__.values),\n }\n },\n}\n\nexports.AnyContractView = {\n decoder: damlTypes.lazyMemo(function () {\n return jtv.object({})\n }),\n encode: function (__typed__) {\n return {}\n },\n}\n\nexports.AnyValue = {\n decoder: damlTypes.lazyMemo(function () {\n return jtv.oneOf(\n jtv.object({\n tag: jtv.constant('AV_Text'),\n value: damlTypes.Text.decoder,\n }),\n jtv.object({\n tag: jtv.constant('AV_Int'),\n value: damlTypes.Int.decoder,\n }),\n jtv.object({\n tag: jtv.constant('AV_Decimal'),\n value: damlTypes.Numeric(10).decoder,\n }),\n jtv.object({\n tag: jtv.constant('AV_Bool'),\n value: damlTypes.Bool.decoder,\n }),\n jtv.object({\n tag: jtv.constant('AV_Date'),\n value: damlTypes.Date.decoder,\n }),\n jtv.object({\n tag: jtv.constant('AV_Time'),\n value: damlTypes.Time.decoder,\n }),\n jtv.object({\n tag: jtv.constant('AV_RelTime'),\n value: pkgb70db8369e1c461d5c70f1c86f526a29e9776c655e6ffc2560f95b05ccb8b946\n .DA.Time.Types.RelTime.decoder,\n }),\n jtv.object({\n tag: jtv.constant('AV_Party'),\n value: damlTypes.Party.decoder,\n }),\n jtv.object({\n tag: jtv.constant('AV_ContractId'),\n value: damlTypes.ContractId(exports.AnyContract).decoder,\n }),\n jtv.object({\n tag: jtv.constant('AV_List'),\n value: damlTypes.List(exports.AnyValue).decoder,\n }),\n jtv.object({\n tag: jtv.constant('AV_Map'),\n value: damlTypes.TextMap(exports.AnyValue).decoder,\n })\n )\n }),\n encode: function (__typed__) {\n switch (__typed__.tag) {\n case 'AV_Text':\n return {\n tag: __typed__.tag,\n value: damlTypes.Text.encode(__typed__.value),\n }\n case 'AV_Int':\n return {\n tag: __typed__.tag,\n value: damlTypes.Int.encode(__typed__.value),\n }\n case 'AV_Decimal':\n return {\n tag: __typed__.tag,\n value: damlTypes.Numeric(10).encode(__typed__.value),\n }\n case 'AV_Bool':\n return {\n tag: __typed__.tag,\n value: damlTypes.Bool.encode(__typed__.value),\n }\n case 'AV_Date':\n return {\n tag: __typed__.tag,\n value: damlTypes.Date.encode(__typed__.value),\n }\n case 'AV_Time':\n return {\n tag: __typed__.tag,\n value: damlTypes.Time.encode(__typed__.value),\n }\n case 'AV_RelTime':\n return {\n tag: __typed__.tag,\n value: pkgb70db8369e1c461d5c70f1c86f526a29e9776c655e6ffc2560f95b05ccb8b946.DA.Time.Types.RelTime.encode(\n __typed__.value\n ),\n }\n case 'AV_Party':\n return {\n tag: __typed__.tag,\n value: damlTypes.Party.encode(__typed__.value),\n }\n case 'AV_ContractId':\n return {\n tag: __typed__.tag,\n value: damlTypes\n .ContractId(exports.AnyContract)\n .encode(__typed__.value),\n }\n case 'AV_List':\n return {\n tag: __typed__.tag,\n value: damlTypes\n .List(exports.AnyValue)\n .encode(__typed__.value),\n }\n case 'AV_Map':\n return {\n tag: __typed__.tag,\n value: damlTypes\n .TextMap(exports.AnyValue)\n .encode(__typed__.value),\n }\n default:\n throw (\n 'unrecognized type tag: ' +\n __typed__.tag +\n ' while serializing a value of type AnyValue'\n )\n }\n },\n}\n","'use strict'\n/* eslint-disable-next-line no-unused-vars */\nfunction __export(m) {\n /* eslint-disable-next-line no-prototype-builtins */\n for (var p in m) if (!exports.hasOwnProperty(p)) exports[p] = m[p]\n}\nObject.defineProperty(exports, '__esModule', { value: true })\n/* eslint-disable-next-line no-unused-vars */\nvar jtv = require('@mojotech/json-type-validation')\n/* eslint-disable-next-line no-unused-vars */\nvar damlTypes = require('@daml/types')\n/* eslint-disable-next-line no-unused-vars */\nvar damlLedger = require('@daml/ledger')\n\nvar pkg9e70a8b3510d617f8a136213f33d6a903a10ca0eeec76bb06ba55d1ed9680f69 = require('@daml.js/ghc-stdlib-DA-Internal-Template-1.0.0')\nvar pkgb70db8369e1c461d5c70f1c86f526a29e9776c655e6ffc2560f95b05ccb8b946 = require('@daml.js/daml-stdlib-DA-Time-Types-1.0.0')\n\nvar Splice_Api_Token_MetadataV1 = require('../../../../Splice/Api/Token/MetadataV1/module')\n\nexports.Holding = damlTypes.assembleInterface(\n 'a132be8b23c8515da6c828dd97519a73d9c8b1aa6f9cddd3c7acc206e4b41f8c:Splice.Api.Token.HoldingV1:Holding',\n function () {\n return exports.HoldingView\n },\n {\n Archive: {\n template: function () {\n return exports.Holding\n },\n choiceName: 'Archive',\n argumentDecoder: damlTypes.lazyMemo(function () {\n return pkg9e70a8b3510d617f8a136213f33d6a903a10ca0eeec76bb06ba55d1ed9680f69\n .DA.Internal.Template.Archive.decoder\n }),\n argumentEncode: function (__typed__) {\n return pkg9e70a8b3510d617f8a136213f33d6a903a10ca0eeec76bb06ba55d1ed9680f69.DA.Internal.Template.Archive.encode(\n __typed__\n )\n },\n resultDecoder: damlTypes.lazyMemo(function () {\n return damlTypes.Unit.decoder\n }),\n resultEncode: function (__typed__) {\n return damlTypes.Unit.encode(__typed__)\n },\n },\n }\n)\n\nexports.HoldingView = {\n decoder: damlTypes.lazyMemo(function () {\n return jtv.object({\n owner: damlTypes.Party.decoder,\n instrumentId: exports.InstrumentId.decoder,\n amount: damlTypes.Numeric(10).decoder,\n lock: jtv.Decoder.withDefault(\n null,\n damlTypes.Optional(exports.Lock).decoder\n ),\n meta: Splice_Api_Token_MetadataV1.Metadata.decoder,\n })\n }),\n encode: function (__typed__) {\n return {\n owner: damlTypes.Party.encode(__typed__.owner),\n instrumentId: exports.InstrumentId.encode(__typed__.instrumentId),\n amount: damlTypes.Numeric(10).encode(__typed__.amount),\n lock: damlTypes.Optional(exports.Lock).encode(__typed__.lock),\n meta: Splice_Api_Token_MetadataV1.Metadata.encode(__typed__.meta),\n }\n },\n}\n\nexports.Lock = {\n decoder: damlTypes.lazyMemo(function () {\n return jtv.object({\n holders: damlTypes.List(damlTypes.Party).decoder,\n expiresAt: jtv.Decoder.withDefault(\n null,\n damlTypes.Optional(damlTypes.Time).decoder\n ),\n expiresAfter: jtv.Decoder.withDefault(\n null,\n damlTypes.Optional(\n pkgb70db8369e1c461d5c70f1c86f526a29e9776c655e6ffc2560f95b05ccb8b946\n .DA.Time.Types.RelTime\n ).decoder\n ),\n context: jtv.Decoder.withDefault(\n null,\n damlTypes.Optional(damlTypes.Text).decoder\n ),\n })\n }),\n encode: function (__typed__) {\n return {\n holders: damlTypes.List(damlTypes.Party).encode(__typed__.holders),\n expiresAt: damlTypes\n .Optional(damlTypes.Time)\n .encode(__typed__.expiresAt),\n expiresAfter: damlTypes\n .Optional(\n pkgb70db8369e1c461d5c70f1c86f526a29e9776c655e6ffc2560f95b05ccb8b946\n .DA.Time.Types.RelTime\n )\n .encode(__typed__.expiresAfter),\n context: damlTypes\n .Optional(damlTypes.Text)\n .encode(__typed__.context),\n }\n },\n}\n\nexports.InstrumentId = {\n decoder: damlTypes.lazyMemo(function () {\n return jtv.object({\n admin: damlTypes.Party.decoder,\n id: damlTypes.Text.decoder,\n })\n }),\n encode: function (__typed__) {\n return {\n admin: damlTypes.Party.encode(__typed__.admin),\n id: damlTypes.Text.encode(__typed__.id),\n }\n },\n}\n","'use strict'\n/* eslint-disable-next-line no-unused-vars */\nfunction __export(m) {\n /* eslint-disable-next-line no-prototype-builtins */\n for (var p in m) if (!exports.hasOwnProperty(p)) exports[p] = m[p]\n}\nObject.defineProperty(exports, '__esModule', { value: true })\n/* eslint-disable-next-line no-unused-vars */\nvar jtv = require('@mojotech/json-type-validation')\n/* eslint-disable-next-line no-unused-vars */\nvar damlTypes = require('@daml/types')\n/* eslint-disable-next-line no-unused-vars */\nvar damlLedger = require('@daml/ledger')\n\nvar pkg9e70a8b3510d617f8a136213f33d6a903a10ca0eeec76bb06ba55d1ed9680f69 = require('@daml.js/ghc-stdlib-DA-Internal-Template-1.0.0')\n\nvar Splice_Api_Token_HoldingV1 = require('../../../../Splice/Api/Token/HoldingV1/module')\nvar Splice_Api_Token_MetadataV1 = require('../../../../Splice/Api/Token/MetadataV1/module')\n\nexports.Allocation = damlTypes.assembleInterface(\n 'a132be8b23c8515da6c828dd97519a73d9c8b1aa6f9cddd3c7acc206e4b41f8c:Splice.Api.Token.AllocationV1:Allocation',\n function () {\n return exports.AllocationView\n },\n {\n Archive: {\n template: function () {\n return exports.Allocation\n },\n choiceName: 'Archive',\n argumentDecoder: damlTypes.lazyMemo(function () {\n return pkg9e70a8b3510d617f8a136213f33d6a903a10ca0eeec76bb06ba55d1ed9680f69\n .DA.Internal.Template.Archive.decoder\n }),\n argumentEncode: function (__typed__) {\n return pkg9e70a8b3510d617f8a136213f33d6a903a10ca0eeec76bb06ba55d1ed9680f69.DA.Internal.Template.Archive.encode(\n __typed__\n )\n },\n resultDecoder: damlTypes.lazyMemo(function () {\n return damlTypes.Unit.decoder\n }),\n resultEncode: function (__typed__) {\n return damlTypes.Unit.encode(__typed__)\n },\n },\n Allocation_Withdraw: {\n template: function () {\n return exports.Allocation\n },\n choiceName: 'Allocation_Withdraw',\n argumentDecoder: damlTypes.lazyMemo(function () {\n return exports.Allocation_Withdraw.decoder\n }),\n argumentEncode: function (__typed__) {\n return exports.Allocation_Withdraw.encode(__typed__)\n },\n resultDecoder: damlTypes.lazyMemo(function () {\n return exports.Allocation_WithdrawResult.decoder\n }),\n resultEncode: function (__typed__) {\n return exports.Allocation_WithdrawResult.encode(__typed__)\n },\n },\n Allocation_Cancel: {\n template: function () {\n return exports.Allocation\n },\n choiceName: 'Allocation_Cancel',\n argumentDecoder: damlTypes.lazyMemo(function () {\n return exports.Allocation_Cancel.decoder\n }),\n argumentEncode: function (__typed__) {\n return exports.Allocation_Cancel.encode(__typed__)\n },\n resultDecoder: damlTypes.lazyMemo(function () {\n return exports.Allocation_CancelResult.decoder\n }),\n resultEncode: function (__typed__) {\n return exports.Allocation_CancelResult.encode(__typed__)\n },\n },\n Allocation_ExecuteTransfer: {\n template: function () {\n return exports.Allocation\n },\n choiceName: 'Allocation_ExecuteTransfer',\n argumentDecoder: damlTypes.lazyMemo(function () {\n return exports.Allocation_ExecuteTransfer.decoder\n }),\n argumentEncode: function (__typed__) {\n return exports.Allocation_ExecuteTransfer.encode(__typed__)\n },\n resultDecoder: damlTypes.lazyMemo(function () {\n return exports.Allocation_ExecuteTransferResult.decoder\n }),\n resultEncode: function (__typed__) {\n return exports.Allocation_ExecuteTransferResult.encode(\n __typed__\n )\n },\n },\n }\n)\n\nexports.Allocation_WithdrawResult = {\n decoder: damlTypes.lazyMemo(function () {\n return jtv.object({\n senderHoldingCids: damlTypes.List(\n damlTypes.ContractId(Splice_Api_Token_HoldingV1.Holding)\n ).decoder,\n meta: Splice_Api_Token_MetadataV1.Metadata.decoder,\n })\n }),\n encode: function (__typed__) {\n return {\n senderHoldingCids: damlTypes\n .List(damlTypes.ContractId(Splice_Api_Token_HoldingV1.Holding))\n .encode(__typed__.senderHoldingCids),\n meta: Splice_Api_Token_MetadataV1.Metadata.encode(__typed__.meta),\n }\n },\n}\n\nexports.Allocation_CancelResult = {\n decoder: damlTypes.lazyMemo(function () {\n return jtv.object({\n senderHoldingCids: damlTypes.List(\n damlTypes.ContractId(Splice_Api_Token_HoldingV1.Holding)\n ).decoder,\n meta: Splice_Api_Token_MetadataV1.Metadata.decoder,\n })\n }),\n encode: function (__typed__) {\n return {\n senderHoldingCids: damlTypes\n .List(damlTypes.ContractId(Splice_Api_Token_HoldingV1.Holding))\n .encode(__typed__.senderHoldingCids),\n meta: Splice_Api_Token_MetadataV1.Metadata.encode(__typed__.meta),\n }\n },\n}\n\nexports.Allocation_ExecuteTransferResult = {\n decoder: damlTypes.lazyMemo(function () {\n return jtv.object({\n senderHoldingCids: damlTypes.List(\n damlTypes.ContractId(Splice_Api_Token_HoldingV1.Holding)\n ).decoder,\n receiverHoldingCids: damlTypes.List(\n damlTypes.ContractId(Splice_Api_Token_HoldingV1.Holding)\n ).decoder,\n meta: Splice_Api_Token_MetadataV1.Metadata.decoder,\n })\n }),\n encode: function (__typed__) {\n return {\n senderHoldingCids: damlTypes\n .List(damlTypes.ContractId(Splice_Api_Token_HoldingV1.Holding))\n .encode(__typed__.senderHoldingCids),\n receiverHoldingCids: damlTypes\n .List(damlTypes.ContractId(Splice_Api_Token_HoldingV1.Holding))\n .encode(__typed__.receiverHoldingCids),\n meta: Splice_Api_Token_MetadataV1.Metadata.encode(__typed__.meta),\n }\n },\n}\n\nexports.Allocation_Withdraw = {\n decoder: damlTypes.lazyMemo(function () {\n return jtv.object({\n extraArgs: Splice_Api_Token_MetadataV1.ExtraArgs.decoder,\n })\n }),\n encode: function (__typed__) {\n return {\n extraArgs: Splice_Api_Token_MetadataV1.ExtraArgs.encode(\n __typed__.extraArgs\n ),\n }\n },\n}\n\nexports.Allocation_Cancel = {\n decoder: damlTypes.lazyMemo(function () {\n return jtv.object({\n extraArgs: Splice_Api_Token_MetadataV1.ExtraArgs.decoder,\n })\n }),\n encode: function (__typed__) {\n return {\n extraArgs: Splice_Api_Token_MetadataV1.ExtraArgs.encode(\n __typed__.extraArgs\n ),\n }\n },\n}\n\nexports.Allocation_ExecuteTransfer = {\n decoder: damlTypes.lazyMemo(function () {\n return jtv.object({\n extraArgs: Splice_Api_Token_MetadataV1.ExtraArgs.decoder,\n })\n }),\n encode: function (__typed__) {\n return {\n extraArgs: Splice_Api_Token_MetadataV1.ExtraArgs.encode(\n __typed__.extraArgs\n ),\n }\n },\n}\n\nexports.AllocationView = {\n decoder: damlTypes.lazyMemo(function () {\n return jtv.object({\n allocation: exports.AllocationSpecification.decoder,\n holdingCids: damlTypes.List(\n damlTypes.ContractId(Splice_Api_Token_HoldingV1.Holding)\n ).decoder,\n meta: Splice_Api_Token_MetadataV1.Metadata.decoder,\n })\n }),\n encode: function (__typed__) {\n return {\n allocation: exports.AllocationSpecification.encode(\n __typed__.allocation\n ),\n holdingCids: damlTypes\n .List(damlTypes.ContractId(Splice_Api_Token_HoldingV1.Holding))\n .encode(__typed__.holdingCids),\n meta: Splice_Api_Token_MetadataV1.Metadata.encode(__typed__.meta),\n }\n },\n}\n\nexports.AllocationSpecification = {\n decoder: damlTypes.lazyMemo(function () {\n return jtv.object({\n settlement: exports.SettlementInfo.decoder,\n transferLegId: damlTypes.Text.decoder,\n transferLeg: exports.TransferLeg.decoder,\n })\n }),\n encode: function (__typed__) {\n return {\n settlement: exports.SettlementInfo.encode(__typed__.settlement),\n transferLegId: damlTypes.Text.encode(__typed__.transferLegId),\n transferLeg: exports.TransferLeg.encode(__typed__.transferLeg),\n }\n },\n}\n\nexports.TransferLeg = {\n decoder: damlTypes.lazyMemo(function () {\n return jtv.object({\n sender: damlTypes.Party.decoder,\n receiver: damlTypes.Party.decoder,\n amount: damlTypes.Numeric(10).decoder,\n instrumentId: Splice_Api_Token_HoldingV1.InstrumentId.decoder,\n meta: Splice_Api_Token_MetadataV1.Metadata.decoder,\n })\n }),\n encode: function (__typed__) {\n return {\n sender: damlTypes.Party.encode(__typed__.sender),\n receiver: damlTypes.Party.encode(__typed__.receiver),\n amount: damlTypes.Numeric(10).encode(__typed__.amount),\n instrumentId: Splice_Api_Token_HoldingV1.InstrumentId.encode(\n __typed__.instrumentId\n ),\n meta: Splice_Api_Token_MetadataV1.Metadata.encode(__typed__.meta),\n }\n },\n}\n\nexports.SettlementInfo = {\n decoder: damlTypes.lazyMemo(function () {\n return jtv.object({\n executor: damlTypes.Party.decoder,\n settlementRef: exports.Reference.decoder,\n requestedAt: damlTypes.Time.decoder,\n allocateBefore: damlTypes.Time.decoder,\n settleBefore: damlTypes.Time.decoder,\n meta: Splice_Api_Token_MetadataV1.Metadata.decoder,\n })\n }),\n encode: function (__typed__) {\n return {\n executor: damlTypes.Party.encode(__typed__.executor),\n settlementRef: exports.Reference.encode(__typed__.settlementRef),\n requestedAt: damlTypes.Time.encode(__typed__.requestedAt),\n allocateBefore: damlTypes.Time.encode(__typed__.allocateBefore),\n settleBefore: damlTypes.Time.encode(__typed__.settleBefore),\n meta: Splice_Api_Token_MetadataV1.Metadata.encode(__typed__.meta),\n }\n },\n}\n\nexports.Reference = {\n decoder: damlTypes.lazyMemo(function () {\n return jtv.object({\n id: damlTypes.Text.decoder,\n cid: jtv.Decoder.withDefault(\n null,\n damlTypes.Optional(\n damlTypes.ContractId(\n Splice_Api_Token_MetadataV1.AnyContract\n )\n ).decoder\n ),\n })\n }),\n encode: function (__typed__) {\n return {\n id: damlTypes.Text.encode(__typed__.id),\n cid: damlTypes\n .Optional(\n damlTypes.ContractId(\n Splice_Api_Token_MetadataV1.AnyContract\n )\n )\n .encode(__typed__.cid),\n }\n },\n}\n","'use strict'\n/* eslint-disable-next-line no-unused-vars */\nfunction __export(m) {\n /* eslint-disable-next-line no-prototype-builtins */\n for (var p in m) if (!exports.hasOwnProperty(p)) exports[p] = m[p]\n}\nObject.defineProperty(exports, '__esModule', { value: true })\n/* eslint-disable-next-line no-unused-vars */\nvar jtv = require('@mojotech/json-type-validation')\n/* eslint-disable-next-line no-unused-vars */\nvar damlTypes = require('@daml/types')\n/* eslint-disable-next-line no-unused-vars */\nvar damlLedger = require('@daml/ledger')\n\nvar pkg9e70a8b3510d617f8a136213f33d6a903a10ca0eeec76bb06ba55d1ed9680f69 = require('@daml.js/ghc-stdlib-DA-Internal-Template-1.0.0')\n\nvar Splice_Api_Token_AllocationV1 = require('../../../../Splice/Api/Token/AllocationV1/module')\nvar Splice_Api_Token_HoldingV1 = require('../../../../Splice/Api/Token/HoldingV1/module')\nvar Splice_Api_Token_MetadataV1 = require('../../../../Splice/Api/Token/MetadataV1/module')\n\nexports.AllocationFactory = damlTypes.assembleInterface(\n 'a132be8b23c8515da6c828dd97519a73d9c8b1aa6f9cddd3c7acc206e4b41f8c:Splice.Api.Token.AllocationInstructionV1:AllocationFactory',\n function () {\n return exports.AllocationFactoryView\n },\n {\n Archive: {\n template: function () {\n return exports.AllocationFactory\n },\n choiceName: 'Archive',\n argumentDecoder: damlTypes.lazyMemo(function () {\n return pkg9e70a8b3510d617f8a136213f33d6a903a10ca0eeec76bb06ba55d1ed9680f69\n .DA.Internal.Template.Archive.decoder\n }),\n argumentEncode: function (__typed__) {\n return pkg9e70a8b3510d617f8a136213f33d6a903a10ca0eeec76bb06ba55d1ed9680f69.DA.Internal.Template.Archive.encode(\n __typed__\n )\n },\n resultDecoder: damlTypes.lazyMemo(function () {\n return damlTypes.Unit.decoder\n }),\n resultEncode: function (__typed__) {\n return damlTypes.Unit.encode(__typed__)\n },\n },\n AllocationFactory_Allocate: {\n template: function () {\n return exports.AllocationFactory\n },\n choiceName: 'AllocationFactory_Allocate',\n argumentDecoder: damlTypes.lazyMemo(function () {\n return exports.AllocationFactory_Allocate.decoder\n }),\n argumentEncode: function (__typed__) {\n return exports.AllocationFactory_Allocate.encode(__typed__)\n },\n resultDecoder: damlTypes.lazyMemo(function () {\n return exports.AllocationInstructionResult.decoder\n }),\n resultEncode: function (__typed__) {\n return exports.AllocationInstructionResult.encode(__typed__)\n },\n },\n AllocationFactory_PublicFetch: {\n template: function () {\n return exports.AllocationFactory\n },\n choiceName: 'AllocationFactory_PublicFetch',\n argumentDecoder: damlTypes.lazyMemo(function () {\n return exports.AllocationFactory_PublicFetch.decoder\n }),\n argumentEncode: function (__typed__) {\n return exports.AllocationFactory_PublicFetch.encode(__typed__)\n },\n resultDecoder: damlTypes.lazyMemo(function () {\n return exports.AllocationFactoryView.decoder\n }),\n resultEncode: function (__typed__) {\n return exports.AllocationFactoryView.encode(__typed__)\n },\n },\n }\n)\n\nexports.AllocationInstruction = damlTypes.assembleInterface(\n 'a132be8b23c8515da6c828dd97519a73d9c8b1aa6f9cddd3c7acc206e4b41f8c:Splice.Api.Token.AllocationInstructionV1:AllocationInstruction',\n function () {\n return exports.AllocationInstructionView\n },\n {\n Archive: {\n template: function () {\n return exports.AllocationInstruction\n },\n choiceName: 'Archive',\n argumentDecoder: damlTypes.lazyMemo(function () {\n return pkg9e70a8b3510d617f8a136213f33d6a903a10ca0eeec76bb06ba55d1ed9680f69\n .DA.Internal.Template.Archive.decoder\n }),\n argumentEncode: function (__typed__) {\n return pkg9e70a8b3510d617f8a136213f33d6a903a10ca0eeec76bb06ba55d1ed9680f69.DA.Internal.Template.Archive.encode(\n __typed__\n )\n },\n resultDecoder: damlTypes.lazyMemo(function () {\n return damlTypes.Unit.decoder\n }),\n resultEncode: function (__typed__) {\n return damlTypes.Unit.encode(__typed__)\n },\n },\n AllocationInstruction_Withdraw: {\n template: function () {\n return exports.AllocationInstruction\n },\n choiceName: 'AllocationInstruction_Withdraw',\n argumentDecoder: damlTypes.lazyMemo(function () {\n return exports.AllocationInstruction_Withdraw.decoder\n }),\n argumentEncode: function (__typed__) {\n return exports.AllocationInstruction_Withdraw.encode(__typed__)\n },\n resultDecoder: damlTypes.lazyMemo(function () {\n return exports.AllocationInstructionResult.decoder\n }),\n resultEncode: function (__typed__) {\n return exports.AllocationInstructionResult.encode(__typed__)\n },\n },\n AllocationInstruction_Update: {\n template: function () {\n return exports.AllocationInstruction\n },\n choiceName: 'AllocationInstruction_Update',\n argumentDecoder: damlTypes.lazyMemo(function () {\n return exports.AllocationInstruction_Update.decoder\n }),\n argumentEncode: function (__typed__) {\n return exports.AllocationInstruction_Update.encode(__typed__)\n },\n resultDecoder: damlTypes.lazyMemo(function () {\n return exports.AllocationInstructionResult.decoder\n }),\n resultEncode: function (__typed__) {\n return exports.AllocationInstructionResult.encode(__typed__)\n },\n },\n }\n)\n\nexports.AllocationInstructionResult_Output = {\n decoder: damlTypes.lazyMemo(function () {\n return jtv.oneOf(\n jtv.object({\n tag: jtv.constant('AllocationInstructionResult_Pending'),\n value: exports.AllocationInstructionResult_Output\n .AllocationInstructionResult_Pending.decoder,\n }),\n jtv.object({\n tag: jtv.constant('AllocationInstructionResult_Completed'),\n value: exports.AllocationInstructionResult_Output\n .AllocationInstructionResult_Completed.decoder,\n }),\n jtv.object({\n tag: jtv.constant('AllocationInstructionResult_Failed'),\n value: damlTypes.Unit.decoder,\n })\n )\n }),\n encode: function (__typed__) {\n switch (__typed__.tag) {\n case 'AllocationInstructionResult_Pending':\n return {\n tag: __typed__.tag,\n value: exports.AllocationInstructionResult_Output.AllocationInstructionResult_Pending.encode(\n __typed__.value\n ),\n }\n case 'AllocationInstructionResult_Completed':\n return {\n tag: __typed__.tag,\n value: exports.AllocationInstructionResult_Output.AllocationInstructionResult_Completed.encode(\n __typed__.value\n ),\n }\n case 'AllocationInstructionResult_Failed':\n return {\n tag: __typed__.tag,\n value: damlTypes.Unit.encode(__typed__.value),\n }\n default:\n throw (\n 'unrecognized type tag: ' +\n __typed__.tag +\n ' while serializing a value of type AllocationInstructionResult_Output'\n )\n }\n },\n AllocationInstructionResult_Pending: {\n decoder: damlTypes.lazyMemo(function () {\n return jtv.object({\n allocationInstructionCid: damlTypes.ContractId(\n exports.AllocationInstruction\n ).decoder,\n })\n }),\n encode: function (__typed__) {\n return {\n allocationInstructionCid: damlTypes\n .ContractId(exports.AllocationInstruction)\n .encode(__typed__.allocationInstructionCid),\n }\n },\n },\n AllocationInstructionResult_Completed: {\n decoder: damlTypes.lazyMemo(function () {\n return jtv.object({\n allocationCid: damlTypes.ContractId(\n Splice_Api_Token_AllocationV1.Allocation\n ).decoder,\n })\n }),\n encode: function (__typed__) {\n return {\n allocationCid: damlTypes\n .ContractId(Splice_Api_Token_AllocationV1.Allocation)\n .encode(__typed__.allocationCid),\n }\n },\n },\n}\n\nexports.AllocationInstructionResult = {\n decoder: damlTypes.lazyMemo(function () {\n return jtv.object({\n output: exports.AllocationInstructionResult_Output.decoder,\n senderChangeCids: damlTypes.List(\n damlTypes.ContractId(Splice_Api_Token_HoldingV1.Holding)\n ).decoder,\n meta: Splice_Api_Token_MetadataV1.Metadata.decoder,\n })\n }),\n encode: function (__typed__) {\n return {\n output: exports.AllocationInstructionResult_Output.encode(\n __typed__.output\n ),\n senderChangeCids: damlTypes\n .List(damlTypes.ContractId(Splice_Api_Token_HoldingV1.Holding))\n .encode(__typed__.senderChangeCids),\n meta: Splice_Api_Token_MetadataV1.Metadata.encode(__typed__.meta),\n }\n },\n}\n\nexports.AllocationFactory_PublicFetch = {\n decoder: damlTypes.lazyMemo(function () {\n return jtv.object({\n expectedAdmin: damlTypes.Party.decoder,\n actor: damlTypes.Party.decoder,\n })\n }),\n encode: function (__typed__) {\n return {\n expectedAdmin: damlTypes.Party.encode(__typed__.expectedAdmin),\n actor: damlTypes.Party.encode(__typed__.actor),\n }\n },\n}\n\nexports.AllocationFactory_Allocate = {\n decoder: damlTypes.lazyMemo(function () {\n return jtv.object({\n expectedAdmin: damlTypes.Party.decoder,\n allocation:\n Splice_Api_Token_AllocationV1.AllocationSpecification.decoder,\n requestedAt: damlTypes.Time.decoder,\n inputHoldingCids: damlTypes.List(\n damlTypes.ContractId(Splice_Api_Token_HoldingV1.Holding)\n ).decoder,\n extraArgs: Splice_Api_Token_MetadataV1.ExtraArgs.decoder,\n })\n }),\n encode: function (__typed__) {\n return {\n expectedAdmin: damlTypes.Party.encode(__typed__.expectedAdmin),\n allocation:\n Splice_Api_Token_AllocationV1.AllocationSpecification.encode(\n __typed__.allocation\n ),\n requestedAt: damlTypes.Time.encode(__typed__.requestedAt),\n inputHoldingCids: damlTypes\n .List(damlTypes.ContractId(Splice_Api_Token_HoldingV1.Holding))\n .encode(__typed__.inputHoldingCids),\n extraArgs: Splice_Api_Token_MetadataV1.ExtraArgs.encode(\n __typed__.extraArgs\n ),\n }\n },\n}\n\nexports.AllocationFactoryView = {\n decoder: damlTypes.lazyMemo(function () {\n return jtv.object({\n admin: damlTypes.Party.decoder,\n meta: Splice_Api_Token_MetadataV1.Metadata.decoder,\n })\n }),\n encode: function (__typed__) {\n return {\n admin: damlTypes.Party.encode(__typed__.admin),\n meta: Splice_Api_Token_MetadataV1.Metadata.encode(__typed__.meta),\n }\n },\n}\n\nexports.AllocationInstruction_Update = {\n decoder: damlTypes.lazyMemo(function () {\n return jtv.object({\n extraActors: damlTypes.List(damlTypes.Party).decoder,\n extraArgs: Splice_Api_Token_MetadataV1.ExtraArgs.decoder,\n })\n }),\n encode: function (__typed__) {\n return {\n extraActors: damlTypes\n .List(damlTypes.Party)\n .encode(__typed__.extraActors),\n extraArgs: Splice_Api_Token_MetadataV1.ExtraArgs.encode(\n __typed__.extraArgs\n ),\n }\n },\n}\n\nexports.AllocationInstruction_Withdraw = {\n decoder: damlTypes.lazyMemo(function () {\n return jtv.object({\n extraArgs: Splice_Api_Token_MetadataV1.ExtraArgs.decoder,\n })\n }),\n encode: function (__typed__) {\n return {\n extraArgs: Splice_Api_Token_MetadataV1.ExtraArgs.encode(\n __typed__.extraArgs\n ),\n }\n },\n}\n\nexports.AllocationInstructionView = {\n decoder: damlTypes.lazyMemo(function () {\n return jtv.object({\n originalInstructionCid: jtv.Decoder.withDefault(\n null,\n damlTypes.Optional(\n damlTypes.ContractId(exports.AllocationInstruction)\n ).decoder\n ),\n allocation:\n Splice_Api_Token_AllocationV1.AllocationSpecification.decoder,\n pendingActions: damlTypes.Map(damlTypes.Party, damlTypes.Text)\n .decoder,\n requestedAt: damlTypes.Time.decoder,\n inputHoldingCids: damlTypes.List(\n damlTypes.ContractId(Splice_Api_Token_HoldingV1.Holding)\n ).decoder,\n meta: Splice_Api_Token_MetadataV1.Metadata.decoder,\n })\n }),\n encode: function (__typed__) {\n return {\n originalInstructionCid: damlTypes\n .Optional(damlTypes.ContractId(exports.AllocationInstruction))\n .encode(__typed__.originalInstructionCid),\n allocation:\n Splice_Api_Token_AllocationV1.AllocationSpecification.encode(\n __typed__.allocation\n ),\n pendingActions: damlTypes\n .Map(damlTypes.Party, damlTypes.Text)\n .encode(__typed__.pendingActions),\n requestedAt: damlTypes.Time.encode(__typed__.requestedAt),\n inputHoldingCids: damlTypes\n .List(damlTypes.ContractId(Splice_Api_Token_HoldingV1.Holding))\n .encode(__typed__.inputHoldingCids),\n meta: Splice_Api_Token_MetadataV1.Metadata.encode(__typed__.meta),\n }\n },\n}\n","'use strict'\n/* eslint-disable-next-line no-unused-vars */\nfunction __export(m) {\n /* eslint-disable-next-line no-prototype-builtins */\n for (var p in m) if (!exports.hasOwnProperty(p)) exports[p] = m[p]\n}\nObject.defineProperty(exports, '__esModule', { value: true })\n__export(require('./module'))\n","'use strict'\n/* eslint-disable-next-line no-unused-vars */\nfunction __export(m) {\n /* eslint-disable-next-line no-prototype-builtins */\n for (var p in m) if (!exports.hasOwnProperty(p)) exports[p] = m[p]\n}\nObject.defineProperty(exports, '__esModule', { value: true })\n/* eslint-disable-next-line no-unused-vars */\nvar jtv = require('@mojotech/json-type-validation')\n/* eslint-disable-next-line no-unused-vars */\nvar damlTypes = require('@daml/types')\n/* eslint-disable-next-line no-unused-vars */\nvar damlLedger = require('@daml/ledger')\n\nvar pkg9e70a8b3510d617f8a136213f33d6a903a10ca0eeec76bb06ba55d1ed9680f69 = require('@daml.js/ghc-stdlib-DA-Internal-Template-1.0.0')\n\nvar Splice_Api_Token_AllocationV1 = require('../../../../Splice/Api/Token/AllocationV1/module')\nvar Splice_Api_Token_MetadataV1 = require('../../../../Splice/Api/Token/MetadataV1/module')\n\nexports.AllocationRequest = damlTypes.assembleInterface(\n 'a132be8b23c8515da6c828dd97519a73d9c8b1aa6f9cddd3c7acc206e4b41f8c:Splice.Api.Token.AllocationRequestV1:AllocationRequest',\n function () {\n return exports.AllocationRequestView\n },\n {\n Archive: {\n template: function () {\n return exports.AllocationRequest\n },\n choiceName: 'Archive',\n argumentDecoder: damlTypes.lazyMemo(function () {\n return pkg9e70a8b3510d617f8a136213f33d6a903a10ca0eeec76bb06ba55d1ed9680f69\n .DA.Internal.Template.Archive.decoder\n }),\n argumentEncode: function (__typed__) {\n return pkg9e70a8b3510d617f8a136213f33d6a903a10ca0eeec76bb06ba55d1ed9680f69.DA.Internal.Template.Archive.encode(\n __typed__\n )\n },\n resultDecoder: damlTypes.lazyMemo(function () {\n return damlTypes.Unit.decoder\n }),\n resultEncode: function (__typed__) {\n return damlTypes.Unit.encode(__typed__)\n },\n },\n AllocationRequest_Reject: {\n template: function () {\n return exports.AllocationRequest\n },\n choiceName: 'AllocationRequest_Reject',\n argumentDecoder: damlTypes.lazyMemo(function () {\n return exports.AllocationRequest_Reject.decoder\n }),\n argumentEncode: function (__typed__) {\n return exports.AllocationRequest_Reject.encode(__typed__)\n },\n resultDecoder: damlTypes.lazyMemo(function () {\n return Splice_Api_Token_MetadataV1.ChoiceExecutionMetadata\n .decoder\n }),\n resultEncode: function (__typed__) {\n return Splice_Api_Token_MetadataV1.ChoiceExecutionMetadata.encode(\n __typed__\n )\n },\n },\n AllocationRequest_Withdraw: {\n template: function () {\n return exports.AllocationRequest\n },\n choiceName: 'AllocationRequest_Withdraw',\n argumentDecoder: damlTypes.lazyMemo(function () {\n return exports.AllocationRequest_Withdraw.decoder\n }),\n argumentEncode: function (__typed__) {\n return exports.AllocationRequest_Withdraw.encode(__typed__)\n },\n resultDecoder: damlTypes.lazyMemo(function () {\n return Splice_Api_Token_MetadataV1.ChoiceExecutionMetadata\n .decoder\n }),\n resultEncode: function (__typed__) {\n return Splice_Api_Token_MetadataV1.ChoiceExecutionMetadata.encode(\n __typed__\n )\n },\n },\n }\n)\n\nexports.AllocationRequestView = {\n decoder: damlTypes.lazyMemo(function () {\n return jtv.object({\n settlement: Splice_Api_Token_AllocationV1.SettlementInfo.decoder,\n transferLegs: damlTypes.TextMap(\n Splice_Api_Token_AllocationV1.TransferLeg\n ).decoder,\n meta: Splice_Api_Token_MetadataV1.Metadata.decoder,\n })\n }),\n encode: function (__typed__) {\n return {\n settlement: Splice_Api_Token_AllocationV1.SettlementInfo.encode(\n __typed__.settlement\n ),\n transferLegs: damlTypes\n .TextMap(Splice_Api_Token_AllocationV1.TransferLeg)\n .encode(__typed__.transferLegs),\n meta: Splice_Api_Token_MetadataV1.Metadata.encode(__typed__.meta),\n }\n },\n}\n\nexports.AllocationRequest_Withdraw = {\n decoder: damlTypes.lazyMemo(function () {\n return jtv.object({\n extraArgs: Splice_Api_Token_MetadataV1.ExtraArgs.decoder,\n })\n }),\n encode: function (__typed__) {\n return {\n extraArgs: Splice_Api_Token_MetadataV1.ExtraArgs.encode(\n __typed__.extraArgs\n ),\n }\n },\n}\n\nexports.AllocationRequest_Reject = {\n decoder: damlTypes.lazyMemo(function () {\n return jtv.object({\n actor: damlTypes.Party.decoder,\n extraArgs: Splice_Api_Token_MetadataV1.ExtraArgs.decoder,\n })\n }),\n encode: function (__typed__) {\n return {\n actor: damlTypes.Party.encode(__typed__.actor),\n extraArgs: Splice_Api_Token_MetadataV1.ExtraArgs.encode(\n __typed__.extraArgs\n ),\n }\n },\n}\n","'use strict'\n/* eslint-disable-next-line no-unused-vars */\nfunction __export(m) {\n /* eslint-disable-next-line no-prototype-builtins */\n for (var p in m) if (!exports.hasOwnProperty(p)) exports[p] = m[p]\n}\nObject.defineProperty(exports, '__esModule', { value: true })\n__export(require('./module'))\n","'use strict'\n/* eslint-disable-next-line no-unused-vars */\nfunction __export(m) {\n /* eslint-disable-next-line no-prototype-builtins */\n for (var p in m) if (!exports.hasOwnProperty(p)) exports[p] = m[p]\n}\nObject.defineProperty(exports, '__esModule', { value: true })\n__export(require('./module'))\n","'use strict'\n/* eslint-disable-next-line no-unused-vars */\nfunction __export(m) {\n /* eslint-disable-next-line no-prototype-builtins */\n for (var p in m) if (!exports.hasOwnProperty(p)) exports[p] = m[p]\n}\nObject.defineProperty(exports, '__esModule', { value: true })\n__export(require('./module'))\n","'use strict'\n/* eslint-disable-next-line no-unused-vars */\nfunction __export(m) {\n /* eslint-disable-next-line no-prototype-builtins */\n for (var p in m) if (!exports.hasOwnProperty(p)) exports[p] = m[p]\n}\nObject.defineProperty(exports, '__esModule', { value: true })\n__export(require('./module'))\n","'use strict'\n/* eslint-disable-next-line no-unused-vars */\nfunction __export(m) {\n /* eslint-disable-next-line no-prototype-builtins */\n for (var p in m) if (!exports.hasOwnProperty(p)) exports[p] = m[p]\n}\nObject.defineProperty(exports, '__esModule', { value: true })\n/* eslint-disable-next-line no-unused-vars */\nvar jtv = require('@mojotech/json-type-validation')\n/* eslint-disable-next-line no-unused-vars */\nvar damlTypes = require('@daml/types')\n/* eslint-disable-next-line no-unused-vars */\nvar damlLedger = require('@daml/ledger')\n\nvar pkg9e70a8b3510d617f8a136213f33d6a903a10ca0eeec76bb06ba55d1ed9680f69 = require('@daml.js/ghc-stdlib-DA-Internal-Template-1.0.0')\n\nvar Splice_Api_Token_HoldingV1 = require('../../../../Splice/Api/Token/HoldingV1/module')\nvar Splice_Api_Token_MetadataV1 = require('../../../../Splice/Api/Token/MetadataV1/module')\n\nexports.TransferFactory = damlTypes.assembleInterface(\n 'a132be8b23c8515da6c828dd97519a73d9c8b1aa6f9cddd3c7acc206e4b41f8c:Splice.Api.Token.TransferInstructionV1:TransferFactory',\n function () {\n return exports.TransferFactoryView\n },\n {\n Archive: {\n template: function () {\n return exports.TransferFactory\n },\n choiceName: 'Archive',\n argumentDecoder: damlTypes.lazyMemo(function () {\n return pkg9e70a8b3510d617f8a136213f33d6a903a10ca0eeec76bb06ba55d1ed9680f69\n .DA.Internal.Template.Archive.decoder\n }),\n argumentEncode: function (__typed__) {\n return pkg9e70a8b3510d617f8a136213f33d6a903a10ca0eeec76bb06ba55d1ed9680f69.DA.Internal.Template.Archive.encode(\n __typed__\n )\n },\n resultDecoder: damlTypes.lazyMemo(function () {\n return damlTypes.Unit.decoder\n }),\n resultEncode: function (__typed__) {\n return damlTypes.Unit.encode(__typed__)\n },\n },\n TransferFactory_Transfer: {\n template: function () {\n return exports.TransferFactory\n },\n choiceName: 'TransferFactory_Transfer',\n argumentDecoder: damlTypes.lazyMemo(function () {\n return exports.TransferFactory_Transfer.decoder\n }),\n argumentEncode: function (__typed__) {\n return exports.TransferFactory_Transfer.encode(__typed__)\n },\n resultDecoder: damlTypes.lazyMemo(function () {\n return exports.TransferInstructionResult.decoder\n }),\n resultEncode: function (__typed__) {\n return exports.TransferInstructionResult.encode(__typed__)\n },\n },\n TransferFactory_PublicFetch: {\n template: function () {\n return exports.TransferFactory\n },\n choiceName: 'TransferFactory_PublicFetch',\n argumentDecoder: damlTypes.lazyMemo(function () {\n return exports.TransferFactory_PublicFetch.decoder\n }),\n argumentEncode: function (__typed__) {\n return exports.TransferFactory_PublicFetch.encode(__typed__)\n },\n resultDecoder: damlTypes.lazyMemo(function () {\n return exports.TransferFactoryView.decoder\n }),\n resultEncode: function (__typed__) {\n return exports.TransferFactoryView.encode(__typed__)\n },\n },\n }\n)\n\nexports.TransferInstruction = damlTypes.assembleInterface(\n 'a132be8b23c8515da6c828dd97519a73d9c8b1aa6f9cddd3c7acc206e4b41f8c:Splice.Api.Token.TransferInstructionV1:TransferInstruction',\n function () {\n return exports.TransferInstructionView\n },\n {\n Archive: {\n template: function () {\n return exports.TransferInstruction\n },\n choiceName: 'Archive',\n argumentDecoder: damlTypes.lazyMemo(function () {\n return pkg9e70a8b3510d617f8a136213f33d6a903a10ca0eeec76bb06ba55d1ed9680f69\n .DA.Internal.Template.Archive.decoder\n }),\n argumentEncode: function (__typed__) {\n return pkg9e70a8b3510d617f8a136213f33d6a903a10ca0eeec76bb06ba55d1ed9680f69.DA.Internal.Template.Archive.encode(\n __typed__\n )\n },\n resultDecoder: damlTypes.lazyMemo(function () {\n return damlTypes.Unit.decoder\n }),\n resultEncode: function (__typed__) {\n return damlTypes.Unit.encode(__typed__)\n },\n },\n TransferInstruction_Accept: {\n template: function () {\n return exports.TransferInstruction\n },\n choiceName: 'TransferInstruction_Accept',\n argumentDecoder: damlTypes.lazyMemo(function () {\n return exports.TransferInstruction_Accept.decoder\n }),\n argumentEncode: function (__typed__) {\n return exports.TransferInstruction_Accept.encode(__typed__)\n },\n resultDecoder: damlTypes.lazyMemo(function () {\n return exports.TransferInstructionResult.decoder\n }),\n resultEncode: function (__typed__) {\n return exports.TransferInstructionResult.encode(__typed__)\n },\n },\n TransferInstruction_Reject: {\n template: function () {\n return exports.TransferInstruction\n },\n choiceName: 'TransferInstruction_Reject',\n argumentDecoder: damlTypes.lazyMemo(function () {\n return exports.TransferInstruction_Reject.decoder\n }),\n argumentEncode: function (__typed__) {\n return exports.TransferInstruction_Reject.encode(__typed__)\n },\n resultDecoder: damlTypes.lazyMemo(function () {\n return exports.TransferInstructionResult.decoder\n }),\n resultEncode: function (__typed__) {\n return exports.TransferInstructionResult.encode(__typed__)\n },\n },\n TransferInstruction_Withdraw: {\n template: function () {\n return exports.TransferInstruction\n },\n choiceName: 'TransferInstruction_Withdraw',\n argumentDecoder: damlTypes.lazyMemo(function () {\n return exports.TransferInstruction_Withdraw.decoder\n }),\n argumentEncode: function (__typed__) {\n return exports.TransferInstruction_Withdraw.encode(__typed__)\n },\n resultDecoder: damlTypes.lazyMemo(function () {\n return exports.TransferInstructionResult.decoder\n }),\n resultEncode: function (__typed__) {\n return exports.TransferInstructionResult.encode(__typed__)\n },\n },\n TransferInstruction_Update: {\n template: function () {\n return exports.TransferInstruction\n },\n choiceName: 'TransferInstruction_Update',\n argumentDecoder: damlTypes.lazyMemo(function () {\n return exports.TransferInstruction_Update.decoder\n }),\n argumentEncode: function (__typed__) {\n return exports.TransferInstruction_Update.encode(__typed__)\n },\n resultDecoder: damlTypes.lazyMemo(function () {\n return exports.TransferInstructionResult.decoder\n }),\n resultEncode: function (__typed__) {\n return exports.TransferInstructionResult.encode(__typed__)\n },\n },\n }\n)\n\nexports.TransferFactoryView = {\n decoder: damlTypes.lazyMemo(function () {\n return jtv.object({\n admin: damlTypes.Party.decoder,\n meta: Splice_Api_Token_MetadataV1.Metadata.decoder,\n })\n }),\n encode: function (__typed__) {\n return {\n admin: damlTypes.Party.encode(__typed__.admin),\n meta: Splice_Api_Token_MetadataV1.Metadata.encode(__typed__.meta),\n }\n },\n}\n\nexports.TransferFactory_PublicFetch = {\n decoder: damlTypes.lazyMemo(function () {\n return jtv.object({\n expectedAdmin: damlTypes.Party.decoder,\n actor: damlTypes.Party.decoder,\n })\n }),\n encode: function (__typed__) {\n return {\n expectedAdmin: damlTypes.Party.encode(__typed__.expectedAdmin),\n actor: damlTypes.Party.encode(__typed__.actor),\n }\n },\n}\n\nexports.TransferFactory_Transfer = {\n decoder: damlTypes.lazyMemo(function () {\n return jtv.object({\n expectedAdmin: damlTypes.Party.decoder,\n transfer: exports.Transfer.decoder,\n extraArgs: Splice_Api_Token_MetadataV1.ExtraArgs.decoder,\n })\n }),\n encode: function (__typed__) {\n return {\n expectedAdmin: damlTypes.Party.encode(__typed__.expectedAdmin),\n transfer: exports.Transfer.encode(__typed__.transfer),\n extraArgs: Splice_Api_Token_MetadataV1.ExtraArgs.encode(\n __typed__.extraArgs\n ),\n }\n },\n}\n\nexports.TransferInstruction_Update = {\n decoder: damlTypes.lazyMemo(function () {\n return jtv.object({\n extraActors: damlTypes.List(damlTypes.Party).decoder,\n extraArgs: Splice_Api_Token_MetadataV1.ExtraArgs.decoder,\n })\n }),\n encode: function (__typed__) {\n return {\n extraActors: damlTypes\n .List(damlTypes.Party)\n .encode(__typed__.extraActors),\n extraArgs: Splice_Api_Token_MetadataV1.ExtraArgs.encode(\n __typed__.extraArgs\n ),\n }\n },\n}\n\nexports.TransferInstruction_Withdraw = {\n decoder: damlTypes.lazyMemo(function () {\n return jtv.object({\n extraArgs: Splice_Api_Token_MetadataV1.ExtraArgs.decoder,\n })\n }),\n encode: function (__typed__) {\n return {\n extraArgs: Splice_Api_Token_MetadataV1.ExtraArgs.encode(\n __typed__.extraArgs\n ),\n }\n },\n}\n\nexports.TransferInstruction_Reject = {\n decoder: damlTypes.lazyMemo(function () {\n return jtv.object({\n extraArgs: Splice_Api_Token_MetadataV1.ExtraArgs.decoder,\n })\n }),\n encode: function (__typed__) {\n return {\n extraArgs: Splice_Api_Token_MetadataV1.ExtraArgs.encode(\n __typed__.extraArgs\n ),\n }\n },\n}\n\nexports.TransferInstruction_Accept = {\n decoder: damlTypes.lazyMemo(function () {\n return jtv.object({\n extraArgs: Splice_Api_Token_MetadataV1.ExtraArgs.decoder,\n })\n }),\n encode: function (__typed__) {\n return {\n extraArgs: Splice_Api_Token_MetadataV1.ExtraArgs.encode(\n __typed__.extraArgs\n ),\n }\n },\n}\n\nexports.TransferInstructionView = {\n decoder: damlTypes.lazyMemo(function () {\n return jtv.object({\n originalInstructionCid: jtv.Decoder.withDefault(\n null,\n damlTypes.Optional(\n damlTypes.ContractId(exports.TransferInstruction)\n ).decoder\n ),\n transfer: exports.Transfer.decoder,\n status: exports.TransferInstructionStatus.decoder,\n meta: Splice_Api_Token_MetadataV1.Metadata.decoder,\n })\n }),\n encode: function (__typed__) {\n return {\n originalInstructionCid: damlTypes\n .Optional(damlTypes.ContractId(exports.TransferInstruction))\n .encode(__typed__.originalInstructionCid),\n transfer: exports.Transfer.encode(__typed__.transfer),\n status: exports.TransferInstructionStatus.encode(__typed__.status),\n meta: Splice_Api_Token_MetadataV1.Metadata.encode(__typed__.meta),\n }\n },\n}\n\nexports.TransferInstructionStatus = {\n decoder: damlTypes.lazyMemo(function () {\n return jtv.oneOf(\n jtv.object({\n tag: jtv.constant('TransferPendingReceiverAcceptance'),\n value: damlTypes.Unit.decoder,\n }),\n jtv.object({\n tag: jtv.constant('TransferPendingInternalWorkflow'),\n value: exports.TransferInstructionStatus\n .TransferPendingInternalWorkflow.decoder,\n })\n )\n }),\n encode: function (__typed__) {\n switch (__typed__.tag) {\n case 'TransferPendingReceiverAcceptance':\n return {\n tag: __typed__.tag,\n value: damlTypes.Unit.encode(__typed__.value),\n }\n case 'TransferPendingInternalWorkflow':\n return {\n tag: __typed__.tag,\n value: exports.TransferInstructionStatus.TransferPendingInternalWorkflow.encode(\n __typed__.value\n ),\n }\n default:\n throw (\n 'unrecognized type tag: ' +\n __typed__.tag +\n ' while serializing a value of type TransferInstructionStatus'\n )\n }\n },\n TransferPendingInternalWorkflow: {\n decoder: damlTypes.lazyMemo(function () {\n return jtv.object({\n pendingActions: damlTypes.Map(damlTypes.Party, damlTypes.Text)\n .decoder,\n })\n }),\n encode: function (__typed__) {\n return {\n pendingActions: damlTypes\n .Map(damlTypes.Party, damlTypes.Text)\n .encode(__typed__.pendingActions),\n }\n },\n },\n}\n\nexports.TransferInstructionResult_Output = {\n decoder: damlTypes.lazyMemo(function () {\n return jtv.oneOf(\n jtv.object({\n tag: jtv.constant('TransferInstructionResult_Pending'),\n value: exports.TransferInstructionResult_Output\n .TransferInstructionResult_Pending.decoder,\n }),\n jtv.object({\n tag: jtv.constant('TransferInstructionResult_Completed'),\n value: exports.TransferInstructionResult_Output\n .TransferInstructionResult_Completed.decoder,\n }),\n jtv.object({\n tag: jtv.constant('TransferInstructionResult_Failed'),\n value: damlTypes.Unit.decoder,\n })\n )\n }),\n encode: function (__typed__) {\n switch (__typed__.tag) {\n case 'TransferInstructionResult_Pending':\n return {\n tag: __typed__.tag,\n value: exports.TransferInstructionResult_Output.TransferInstructionResult_Pending.encode(\n __typed__.value\n ),\n }\n case 'TransferInstructionResult_Completed':\n return {\n tag: __typed__.tag,\n value: exports.TransferInstructionResult_Output.TransferInstructionResult_Completed.encode(\n __typed__.value\n ),\n }\n case 'TransferInstructionResult_Failed':\n return {\n tag: __typed__.tag,\n value: damlTypes.Unit.encode(__typed__.value),\n }\n default:\n throw (\n 'unrecognized type tag: ' +\n __typed__.tag +\n ' while serializing a value of type TransferInstructionResult_Output'\n )\n }\n },\n TransferInstructionResult_Pending: {\n decoder: damlTypes.lazyMemo(function () {\n return jtv.object({\n transferInstructionCid: damlTypes.ContractId(\n exports.TransferInstruction\n ).decoder,\n })\n }),\n encode: function (__typed__) {\n return {\n transferInstructionCid: damlTypes\n .ContractId(exports.TransferInstruction)\n .encode(__typed__.transferInstructionCid),\n }\n },\n },\n TransferInstructionResult_Completed: {\n decoder: damlTypes.lazyMemo(function () {\n return jtv.object({\n receiverHoldingCids: damlTypes.List(\n damlTypes.ContractId(Splice_Api_Token_HoldingV1.Holding)\n ).decoder,\n })\n }),\n encode: function (__typed__) {\n return {\n receiverHoldingCids: damlTypes\n .List(\n damlTypes.ContractId(Splice_Api_Token_HoldingV1.Holding)\n )\n .encode(__typed__.receiverHoldingCids),\n }\n },\n },\n}\n\nexports.TransferInstructionResult = {\n decoder: damlTypes.lazyMemo(function () {\n return jtv.object({\n output: exports.TransferInstructionResult_Output.decoder,\n senderChangeCids: damlTypes.List(\n damlTypes.ContractId(Splice_Api_Token_HoldingV1.Holding)\n ).decoder,\n meta: Splice_Api_Token_MetadataV1.Metadata.decoder,\n })\n }),\n encode: function (__typed__) {\n return {\n output: exports.TransferInstructionResult_Output.encode(\n __typed__.output\n ),\n senderChangeCids: damlTypes\n .List(damlTypes.ContractId(Splice_Api_Token_HoldingV1.Holding))\n .encode(__typed__.senderChangeCids),\n meta: Splice_Api_Token_MetadataV1.Metadata.encode(__typed__.meta),\n }\n },\n}\n\nexports.Transfer = {\n decoder: damlTypes.lazyMemo(function () {\n return jtv.object({\n sender: damlTypes.Party.decoder,\n receiver: damlTypes.Party.decoder,\n amount: damlTypes.Numeric(10).decoder,\n instrumentId: Splice_Api_Token_HoldingV1.InstrumentId.decoder,\n requestedAt: damlTypes.Time.decoder,\n executeBefore: damlTypes.Time.decoder,\n inputHoldingCids: damlTypes.List(\n damlTypes.ContractId(Splice_Api_Token_HoldingV1.Holding)\n ).decoder,\n meta: Splice_Api_Token_MetadataV1.Metadata.decoder,\n })\n }),\n encode: function (__typed__) {\n return {\n sender: damlTypes.Party.encode(__typed__.sender),\n receiver: damlTypes.Party.encode(__typed__.receiver),\n amount: damlTypes.Numeric(10).encode(__typed__.amount),\n instrumentId: Splice_Api_Token_HoldingV1.InstrumentId.encode(\n __typed__.instrumentId\n ),\n requestedAt: damlTypes.Time.encode(__typed__.requestedAt),\n executeBefore: damlTypes.Time.encode(__typed__.executeBefore),\n inputHoldingCids: damlTypes\n .List(damlTypes.ContractId(Splice_Api_Token_HoldingV1.Holding))\n .encode(__typed__.inputHoldingCids),\n meta: Splice_Api_Token_MetadataV1.Metadata.encode(__typed__.meta),\n }\n },\n}\n","'use strict'\n/* eslint-disable-next-line no-unused-vars */\nfunction __export(m) {\n /* eslint-disable-next-line no-prototype-builtins */\n for (var p in m) if (!exports.hasOwnProperty(p)) exports[p] = m[p]\n}\nObject.defineProperty(exports, '__esModule', { value: true })\n__export(require('./module'))\n","'use strict'\n/* eslint-disable-next-line no-unused-vars */\nfunction __export(m) {\n /* eslint-disable-next-line no-prototype-builtins */\n for (var p in m) if (!exports.hasOwnProperty(p)) exports[p] = m[p]\n}\nObject.defineProperty(exports, '__esModule', { value: true })\nvar AllocationInstructionV1 = require('./AllocationInstructionV1')\nexports.AllocationInstructionV1 = AllocationInstructionV1\nvar AllocationRequestV1 = require('./AllocationRequestV1')\nexports.AllocationRequestV1 = AllocationRequestV1\nvar AllocationV1 = require('./AllocationV1')\nexports.AllocationV1 = AllocationV1\nvar HoldingV1 = require('./HoldingV1')\nexports.HoldingV1 = HoldingV1\nvar MetadataV1 = require('./MetadataV1')\nexports.MetadataV1 = MetadataV1\nvar TransferInstructionV1 = require('./TransferInstructionV1')\nexports.TransferInstructionV1 = TransferInstructionV1\n","'use strict'\n/* eslint-disable-next-line no-unused-vars */\nfunction __export(m) {\n /* eslint-disable-next-line no-prototype-builtins */\n for (var p in m) if (!exports.hasOwnProperty(p)) exports[p] = m[p]\n}\nObject.defineProperty(exports, '__esModule', { value: true })\nvar Token = require('./Token')\nexports.Token = Token\n","'use strict'\n/* eslint-disable-next-line no-unused-vars */\nfunction __export(m) {\n /* eslint-disable-next-line no-prototype-builtins */\n for (var p in m) if (!exports.hasOwnProperty(p)) exports[p] = m[p]\n}\nObject.defineProperty(exports, '__esModule', { value: true })\nvar Api = require('./Api')\nexports.Api = Api\n","'use strict'\n/* eslint-disable-next-line no-unused-vars */\nfunction __export(m) {\n /* eslint-disable-next-line no-prototype-builtins */\n for (var p in m) if (!exports.hasOwnProperty(p)) exports[p] = m[p]\n}\nObject.defineProperty(exports, '__esModule', { value: true })\nvar Splice = require('./Splice')\nexports.Splice = Splice\nexports.packageId =\n 'a132be8b23c8515da6c828dd97519a73d9c8b1aa6f9cddd3c7acc206e4b41f8c'\n","// Copyright (c) 2025 Digital Asset (Switzerland) GmbH and/or its affiliates. All rights reserved.\n// SPDX-License-Identifier: Apache-2.0\n\nimport { Splice } from '@daml.js/token-standard-models-1.0.0'\nimport { PartyId } from '@canton-network/core-types'\n\nexport * from './interface-ids.const.js'\n\nexport const TransferInstructionV1 = Splice.Api.Token.TransferInstructionV1\nexport const AllocationInstructionV1 = Splice.Api.Token.AllocationInstructionV1\nexport const AllocationRequestV1 = Splice.Api.Token.AllocationRequestV1\nexport const AllocationV1 = Splice.Api.Token.AllocationV1\nexport const HoldingV1 = Splice.Api.Token.HoldingV1\nexport const MetadataV1 = Splice.Api.Token.MetadataV1\n\nexport type {\n Holding,\n HoldingView,\n Lock,\n InstrumentId,\n HoldingInterface,\n} from '@daml.js/token-standard-models-1.0.0/lib/Splice/Api/Token/HoldingV1/module.js'\n\nexport type {\n Transfer,\n TransferInstruction,\n TransferInstructionView,\n TransferInstruction_Accept,\n TransferInstruction_Reject,\n TransferInstruction_Withdraw,\n TransferInstruction_Update,\n TransferFactory,\n TransferFactoryView,\n TransferFactory_PublicFetch,\n TransferFactory_Transfer,\n TransferInstructionResult,\n TransferInstructionResult_Output,\n TransferInstructionStatus,\n TransferFactoryInterface,\n TransferInstructionInterface,\n} from '@daml.js/token-standard-models-1.0.0/lib/Splice/Api/Token/TransferInstructionV1/module.js'\n\nexport type {\n AllocationFactory_Allocate,\n AllocationFactoryView,\n AllocationFactory_PublicFetch,\n AllocationInstruction_Update,\n AllocationInstruction_Withdraw,\n AllocationInstructionView,\n AllocationInstructionResult,\n AllocationInstructionResult_Output,\n AllocationFactory,\n AllocationFactoryInterface,\n AllocationInstruction,\n AllocationInstructionInterface,\n} from '@daml.js/token-standard-models-1.0.0/lib/Splice/Api/Token/AllocationInstructionV1/module.js'\n\nexport type {\n AllocationRequest,\n AllocationRequestView,\n AllocationRequest_Reject,\n AllocationRequest_Withdraw,\n AllocationRequestInterface,\n} from '@daml.js/token-standard-models-1.0.0/lib/Splice/Api/Token/AllocationRequestV1/module.js'\n\nexport type {\n AllocationSpecification,\n TransferLeg,\n SettlementInfo,\n Reference,\n AllocationView,\n Allocation,\n AllocationInterface,\n Allocation_Withdraw,\n Allocation_Cancel,\n Allocation_ExecuteTransfer,\n Allocation_WithdrawResult,\n Allocation_CancelResult,\n Allocation_ExecuteTransferResult,\n} from '@daml.js/token-standard-models-1.0.0/lib/Splice/Api/Token/AllocationV1/module.js'\n\nexport type {\n ExtraArgs,\n Metadata,\n ChoiceExecutionMetadata,\n AnyContract,\n AnyContractInterface,\n AnyContractView,\n ChoiceContext,\n AnyValue,\n} from '@daml.js/token-standard-models-1.0.0/lib/Splice/Api/Token/MetadataV1/module.js'\n\nexport type {\n ContractId,\n Party,\n Time,\n Date,\n Numeric,\n Int,\n Map,\n Optional,\n Serializable,\n} from '@daml/types'\n\nexport type Beneficiaries = {\n beneficiary: PartyId\n weight: number\n}\n"],"names":["createClient","global","require$$0","this","require$$1","lib","URLImpl_1","require$$2","Stream","http","Url","fetch","https","zlib","bufferUtil","bufferUtilModule","require$$3","validationModule","require$$4","require$$5","require$$6","require$$7","require$$8","require$$9","require$$10","require$$11","require$$12","require$$13","require$$14","Splice"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA;AACA;MA4Da,mBAAmB,CAAA;AACX,IAAA,MAAM;AACN,IAAA,MAAM;AACf,IAAA,mBAAmB;IAE3B,WAAA,CACI,OAAe,EACf,MAAc,EACd,OAAgB,EAChB,WAAoB,EACpB,mBAAyC,EAAA;AAEzC,QAAA,IAAI,CAAC,mBAAmB,GAAG,mBAAmB;AAC9C,QAAA,IAAI,CAAC,MAAM,GAAG,MAAM;QACpB,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,EAAE,OAAO,EAAE,EAAE,iCAAiC,CAAC;AACjE,QAAA,IAAI,CAAC,MAAM,GAAGA,6BAAY,CAAQ;YAC9B,OAAO;YACP,KAAK,EAAE,OAAO,GAAgB,EAAE,OAAA,GAAuB,EAAE,KAAI;AACzD,gBAAA,IAAI,IAAI,CAAC,mBAAmB,EAAE;AAC1B,oBAAA,WAAW,GAAG;AACV,0BAAE,MAAM,IAAI,CAAC,mBAAmB,CAAC,mBAAmB;0BAClD,MAAM,IAAI,CAAC,mBAAmB,CAAC,kBAAkB,EAAE;gBAC7D;gBACA,OAAO,KAAK,CAAC,GAAG,EAAE;AACd,oBAAA,GAAG,OAAO;AACV,oBAAA,OAAO,EAAE;AACL,wBAAA,IAAI,OAAO,CAAC,OAAO,IAAI,EAAE,CAAC;AAC1B,wBAAA,IAAI;AACA,8BAAE,EAAE,aAAa,EAAE,CAAA,OAAA,EAAU,WAAW,EAAE;8BACxC,EAAE,CAAC;AACT,wBAAA,cAAc,EAAE,kBAAkB;AACrC,qBAAA;AACJ,iBAAA,CAAC;YACN,CAAC;AACJ,SAAA,CAAC;IACN;AAEO,IAAA,MAAM,IAAI,CACb,IAAU,EACV,IAAuB,EACvB,MAGC,EAAA;;AAGD,QAAA,MAAM,OAAO,GAAG,EAAE,IAAI,EAAE,MAAM,EAAS;AACvC,QAAA,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,EAAE,WAAW,EAAE,IAAI,EAAE,EAAE,CAAA,KAAA,EAAQ,IAAI,CAAA,CAAE,CAAC;AACxD,QAAA,MAAM,IAAI,GAAG,MAAM,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,EAAE,OAAO,CAAC;AAClD,QAAA,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,EAAE,WAAW,EAAE,IAAI,EAAE,QAAQ,EAAE,IAAI,EAAE,EAAE,QAAQ,IAAI,CAAA,CAAE,CAAC;AACxE,QAAA,OAAO,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC;IAClC;AAEO,IAAA,MAAM,GAAG,CACZ,IAAU,EACV,MAGC,EAAA;;AAGD,QAAA,MAAM,OAAO,GAAG,EAAE,MAAM,EAAS;AAEjC,QAAA,MAAM,IAAI,GAAG,MAAM,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,IAAI,EAAE,OAAO,CAAC;QACjD,IAAI,CAAC,MAAM,CAAC,KAAK,CACb,EAAE,IAAI,EAAE,IAAI,EAAE,MAAM,EAAE,MAAM,EAAE,QAAQ,EAAE,IAAI,EAAE,EAC9C,CAAA,IAAA,EAAO,IAAI,CAAA,CAAE,CAChB;AACD,QAAA,OAAO,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC;IAClC;IAEQ,MAAM,YAAY,CAAI,QAG7B,EAAA;AACG,QAAA,IAAI,QAAQ,CAAC,IAAI,KAAK,SAAS,EAAE;YAC7B,OAAO,OAAO,CAAC,MAAM,CAAC,QAAQ,CAAC,KAAK,CAAC;QACzC;aAAO;YACH,OAAO,OAAO,CAAC,OAAO,CAAC,QAAQ,CAAC,IAAI,CAAC;QACzC;IACJ;AACH;;AC9ID;AACA;AAEO,MAAM,+BAA+B,GACxC;AACG,MAAM,mCAAmC,GAC5C;AACG,MAAM,+BAA+B,GACxC;AACG,MAAM,uBAAuB,GAChC;AACG,MAAM,oBAAoB,GAC7B;AACG,MAAM,qBAAqB,GAC9B;AACG,MAAM,6BAA6B,GACtC;AACG,MAAM,iCAAiC,GAC1C;AACG,MAAM,wCAAwC,GACjD;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;ACXJ;EACA,IAAI,gBAAgB,GAAG,GAAG;;AAE1B;EACA,IAAI,cAAc,GAAG,2BAA2B;;AAEhD;EACA,IAAI,oBAAoB,GAAG,CAAC;MACxB,sBAAsB,GAAG,CAAC;;AAE9B;EACA,IAAI,gBAAgB,GAAG,gBAAgB;;AAEvC;EACA,IAAI,OAAO,GAAG,oBAAoB;MAC9B,QAAQ,GAAG,gBAAgB;MAC3B,QAAQ,GAAG,wBAAwB;MACnC,OAAO,GAAG,kBAAkB;MAC5B,OAAO,GAAG,eAAe;MACzB,QAAQ,GAAG,gBAAgB;MAC3B,OAAO,GAAG,mBAAmB;MAC7B,MAAM,GAAG,4BAA4B;MACrC,MAAM,GAAG,cAAc;MACvB,SAAS,GAAG,iBAAiB;MAC7B,OAAO,GAAG,eAAe;MACzB,SAAS,GAAG,iBAAiB;MAC7B,UAAU,GAAG,kBAAkB;MAC/B,QAAQ,GAAG,gBAAgB;MAC3B,SAAS,GAAG,iBAAiB;MAC7B,MAAM,GAAG,cAAc;MACvB,SAAS,GAAG,iBAAiB;MAC7B,SAAS,GAAG,iBAAiB;MAC7B,YAAY,GAAG,oBAAoB;MACnC,UAAU,GAAG,kBAAkB;;EAEnC,IAAI,cAAc,GAAG,sBAAsB;MACvC,WAAW,GAAG,mBAAmB;MACjC,UAAU,GAAG,uBAAuB;MACpC,UAAU,GAAG,uBAAuB;MACpC,OAAO,GAAG,oBAAoB;MAC9B,QAAQ,GAAG,qBAAqB;MAChC,QAAQ,GAAG,qBAAqB;MAChC,QAAQ,GAAG,qBAAqB;MAChC,eAAe,GAAG,4BAA4B;MAC9C,SAAS,GAAG,sBAAsB;MAClC,SAAS,GAAG,sBAAsB;;AAEtC;AACA;AACA;AACA;EACA,IAAI,YAAY,GAAG,qBAAqB;;AAExC;EACA,IAAI,YAAY,GAAG,6BAA6B;;AAEhD;EACA,IAAI,QAAQ,GAAG,kBAAkB;;AAEjC;EACA,IAAI,cAAc,GAAG,EAAE;AACvB,EAAA,cAAc,CAAC,UAAU,CAAC,GAAG,cAAc,CAAC,UAAU,CAAC;AACvD,EAAA,cAAc,CAAC,OAAO,CAAC,GAAG,cAAc,CAAC,QAAQ,CAAC;AAClD,EAAA,cAAc,CAAC,QAAQ,CAAC,GAAG,cAAc,CAAC,QAAQ,CAAC;AACnD,EAAA,cAAc,CAAC,eAAe,CAAC,GAAG,cAAc,CAAC,SAAS,CAAC;AAC3D,EAAA,cAAc,CAAC,SAAS,CAAC,GAAG,IAAI;AAChC,EAAA,cAAc,CAAC,OAAO,CAAC,GAAG,cAAc,CAAC,QAAQ,CAAC;AAClD,EAAA,cAAc,CAAC,cAAc,CAAC,GAAG,cAAc,CAAC,OAAO,CAAC;AACxD,EAAA,cAAc,CAAC,WAAW,CAAC,GAAG,cAAc,CAAC,OAAO,CAAC;AACrD,EAAA,cAAc,CAAC,QAAQ,CAAC,GAAG,cAAc,CAAC,OAAO,CAAC;AAClD,EAAA,cAAc,CAAC,MAAM,CAAC,GAAG,cAAc,CAAC,SAAS,CAAC;AAClD,EAAA,cAAc,CAAC,SAAS,CAAC,GAAG,cAAc,CAAC,SAAS,CAAC;AACrD,EAAA,cAAc,CAAC,MAAM,CAAC,GAAG,cAAc,CAAC,SAAS,CAAC;AAClD,EAAA,cAAc,CAAC,UAAU,CAAC,GAAG,KAAK;;AAElC;AACA,EAAA,IAAI,UAAU,GAAG,OAAOC,cAAM,IAAI,QAAQ,IAAIA,cAAM,IAAIA,cAAM,CAAC,MAAM,KAAK,MAAM,IAAIA,cAAM;;AAE1F;AACA,EAAA,IAAI,QAAQ,GAAG,OAAO,IAAI,IAAI,QAAQ,IAAI,IAAI,IAAI,IAAI,CAAC,MAAM,KAAK,MAAM,IAAI,IAAI;;AAEhF;EACA,IAAI,IAAI,GAAG,UAAU,IAAI,QAAQ,IAAI,QAAQ,CAAC,aAAa,CAAC,EAAE;;AAE9D;AACA,EAAA,IAAI,WAAW,GAAiC,OAAO,IAAI,CAAC,OAAO,CAAC,QAAQ,IAAI,OAAO;;AAEvF;AACA,EAAA,IAAI,UAAU,GAAG,WAAW,IAAI,QAAa,IAAI,QAAQ,IAAI,MAAM,IAAI,CAAC,MAAM,CAAC,QAAQ,IAAI,MAAM;;AAEjG;EACA,IAAI,aAAa,GAAG,UAAU,IAAI,UAAU,CAAC,OAAO,KAAK,WAAW;;AAEpE;AACA,EAAA,IAAI,WAAW,GAAG,aAAa,IAAI,UAAU,CAAC,OAAO;;AAErD;EACA,IAAI,QAAQ,IAAI,WAAW;AAC3B,IAAE,IAAI;AACN,MAAI,OAAO,WAAW,IAAI,WAAW,CAAC,OAAO,IAAI,WAAW,CAAC,OAAO,CAAC,MAAM,CAAC;IAC5E,CAAG,CAAC,OAAO,CAAC,EAAE,CAAA;AACd,EAAA,CAAC,EAAE,CAAC;;AAEJ;AACA,EAAA,IAAI,gBAAgB,GAAG,QAAQ,IAAI,QAAQ,CAAC,YAAY;;AAExD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,EAAA,SAAS,WAAW,CAAC,KAAK,EAAE,SAAS,EAAE;AACvC,IAAE,IAAI,KAAK,GAAG,EAAE;QACV,MAAM,GAAG,KAAK,IAAI,IAAI,GAAG,CAAC,GAAG,KAAK,CAAC,MAAM;QACzC,QAAQ,GAAG,CAAC;QACZ,MAAM,GAAG,EAAE;;AAEjB,IAAE,OAAO,EAAE,KAAK,GAAG,MAAM,EAAE;AAC3B,MAAI,IAAI,KAAK,GAAG,KAAK,CAAC,KAAK,CAAC;MACxB,IAAI,SAAS,CAAC,KAAK,EAAE,KAAK,EAAE,KAAK,CAAC,EAAE;AACxC,QAAM,MAAM,CAAC,QAAQ,EAAE,CAAC,GAAG,KAAK;AAChC,MAAA;AACA,IAAA;AACA,IAAE,OAAO,MAAM;AACf,EAAA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,EAAA,SAAS,SAAS,CAAC,KAAK,EAAE,MAAM,EAAE;AAClC,IAAE,IAAI,KAAK,GAAG,EAAE;AAChB,QAAM,MAAM,GAAG,MAAM,CAAC,MAAM;AAC5B,QAAM,MAAM,GAAG,KAAK,CAAC,MAAM;;AAE3B,IAAE,OAAO,EAAE,KAAK,GAAG,MAAM,EAAE;MACvB,KAAK,CAAC,MAAM,GAAG,KAAK,CAAC,GAAG,MAAM,CAAC,KAAK,CAAC;AACzC,IAAA;AACA,IAAE,OAAO,KAAK;AACd,EAAA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,EAAA,SAAS,SAAS,CAAC,KAAK,EAAE,SAAS,EAAE;AACrC,IAAE,IAAI,KAAK,GAAG,EAAE;QACV,MAAM,GAAG,KAAK,IAAI,IAAI,GAAG,CAAC,GAAG,KAAK,CAAC,MAAM;;AAE/C,IAAE,OAAO,EAAE,KAAK,GAAG,MAAM,EAAE;AAC3B,MAAI,IAAI,SAAS,CAAC,KAAK,CAAC,KAAK,CAAC,EAAE,KAAK,EAAE,KAAK,CAAC,EAAE;AAC/C,QAAM,OAAO,IAAI;AACjB,MAAA;AACA,IAAA;AACA,IAAE,OAAO,KAAK;AACd,EAAA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,EAAA,SAAS,SAAS,CAAC,CAAC,EAAE,QAAQ,EAAE;AAChC,IAAE,IAAI,KAAK,GAAG,EAAE;AAChB,QAAM,MAAM,GAAG,KAAK,CAAC,CAAC,CAAC;;AAEvB,IAAE,OAAO,EAAE,KAAK,GAAG,CAAC,EAAE;MAClB,MAAM,CAAC,KAAK,CAAC,GAAG,QAAQ,CAAC,KAAK,CAAC;AACnC,IAAA;AACA,IAAE,OAAO,MAAM;AACf,EAAA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;EACA,SAAS,SAAS,CAAC,IAAI,EAAE;IACvB,OAAO,SAAS,KAAK,EAAE;AACzB,MAAI,OAAO,IAAI,CAAC,KAAK,CAAC;IACtB,CAAG;AACH,EAAA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,EAAA,SAAS,QAAQ,CAAC,KAAK,EAAE,GAAG,EAAE;AAC9B,IAAE,OAAO,KAAK,CAAC,GAAG,CAAC,GAAG,CAAC;AACvB,EAAA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,EAAA,SAAS,QAAQ,CAAC,MAAM,EAAE,GAAG,EAAE;IAC7B,OAAO,MAAM,IAAI,IAAI,GAAG,SAAS,GAAG,MAAM,CAAC,GAAG,CAAC;AACjD,EAAA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;EACA,SAAS,UAAU,CAAC,GAAG,EAAE;AACzB,IAAE,IAAI,KAAK,GAAG,EAAE;AAChB,QAAM,MAAM,GAAG,KAAK,CAAC,GAAG,CAAC,IAAI,CAAC;;IAE5B,GAAG,CAAC,OAAO,CAAC,SAAS,KAAK,EAAE,GAAG,EAAE;MAC/B,MAAM,CAAC,EAAE,KAAK,CAAC,GAAG,CAAC,GAAG,EAAE,KAAK,CAAC;AAClC,IAAA,CAAG,CAAC;AACJ,IAAE,OAAO,MAAM;AACf,EAAA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,EAAA,SAAS,OAAO,CAAC,IAAI,EAAE,SAAS,EAAE;IAChC,OAAO,SAAS,GAAG,EAAE;AACvB,MAAI,OAAO,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC;IAC/B,CAAG;AACH,EAAA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;EACA,SAAS,UAAU,CAAC,GAAG,EAAE;AACzB,IAAE,IAAI,KAAK,GAAG,EAAE;AAChB,QAAM,MAAM,GAAG,KAAK,CAAC,GAAG,CAAC,IAAI,CAAC;;AAE9B,IAAE,GAAG,CAAC,OAAO,CAAC,SAAS,KAAK,EAAE;AAC9B,MAAI,MAAM,CAAC,EAAE,KAAK,CAAC,GAAG,KAAK;AAC3B,IAAA,CAAG,CAAC;AACJ,IAAE,OAAO,MAAM;AACf,EAAA;;AAEA;AACA,EAAA,IAAI,UAAU,GAAG,KAAK,CAAC,SAAS;AAChC,MAAI,SAAS,GAAG,QAAQ,CAAC,SAAS;AAClC,MAAI,WAAW,GAAG,MAAM,CAAC,SAAS;;AAElC;AACA,EAAA,IAAI,UAAU,GAAG,IAAI,CAAC,oBAAoB,CAAC;;AAE3C;AACA,EAAA,IAAI,YAAY,GAAG,SAAS,CAAC,QAAQ;;AAErC;AACA,EAAA,IAAI,cAAc,GAAG,WAAW,CAAC,cAAc;;AAE/C;EACA,IAAI,UAAU,IAAI,WAAW;IAC3B,IAAI,GAAG,GAAG,QAAQ,CAAC,IAAI,CAAC,UAAU,IAAI,UAAU,CAAC,IAAI,IAAI,UAAU,CAAC,IAAI,CAAC,QAAQ,IAAI,EAAE,CAAC;AAC1F,IAAE,OAAO,GAAG,IAAI,gBAAgB,GAAG,GAAG,IAAI,EAAE;AAC5C,EAAA,CAAC,EAAE,CAAC;;AAEJ;AACA;AACA;AACA;AACA;AACA,EAAA,IAAI,oBAAoB,GAAG,WAAW,CAAC,QAAQ;;AAE/C;AACA,EAAA,IAAI,UAAU,GAAG,MAAM,CAAC,GAAG;IACzB,YAAY,CAAC,IAAI,CAAC,cAAc,CAAC,CAAC,OAAO,CAAC,YAAY,EAAE,MAAM;AAChE,KAAG,OAAO,CAAC,wDAAwD,EAAE,OAAO,CAAC,GAAG;GAC/E;;AAED;EACA,IAAI,MAAM,GAAG,aAAa,GAAG,IAAI,CAAC,MAAM,GAAG,SAAS;AACpD,MAAI,MAAM,GAAG,IAAI,CAAC,MAAM;AACxB,MAAI,UAAU,GAAG,IAAI,CAAC,UAAU;AAChC,MAAI,oBAAoB,GAAG,WAAW,CAAC,oBAAoB;AAC3D,MAAI,MAAM,GAAG,UAAU,CAAC,MAAM;MAC1B,cAAc,GAAG,MAAM,GAAG,MAAM,CAAC,WAAW,GAAG,SAAS;;AAE5D;AACA,EAAA,IAAI,gBAAgB,GAAG,MAAM,CAAC,qBAAqB;MAC/C,cAAc,GAAG,MAAM,GAAG,MAAM,CAAC,QAAQ,GAAG,SAAS;MACrD,UAAU,GAAG,OAAO,CAAC,MAAM,CAAC,IAAI,EAAE,MAAM,CAAC;;AAE7C;AACA,EAAA,IAAI,QAAQ,GAAG,SAAS,CAAC,IAAI,EAAE,UAAU,CAAC;AAC1C,MAAI,GAAG,GAAG,SAAS,CAAC,IAAI,EAAE,KAAK,CAAC;AAChC,MAAI,OAAO,GAAG,SAAS,CAAC,IAAI,EAAE,SAAS,CAAC;AACxC,MAAI,GAAG,GAAG,SAAS,CAAC,IAAI,EAAE,KAAK,CAAC;AAChC,MAAI,OAAO,GAAG,SAAS,CAAC,IAAI,EAAE,SAAS,CAAC;AACxC,MAAI,YAAY,GAAG,SAAS,CAAC,MAAM,EAAE,QAAQ,CAAC;;AAE9C;AACA,EAAA,IAAI,kBAAkB,GAAG,QAAQ,CAAC,QAAQ,CAAC;AAC3C,MAAI,aAAa,GAAG,QAAQ,CAAC,GAAG,CAAC;AACjC,MAAI,iBAAiB,GAAG,QAAQ,CAAC,OAAO,CAAC;AACzC,MAAI,aAAa,GAAG,QAAQ,CAAC,GAAG,CAAC;AACjC,MAAI,iBAAiB,GAAG,QAAQ,CAAC,OAAO,CAAC;;AAEzC;EACA,IAAI,WAAW,GAAG,MAAM,GAAG,MAAM,CAAC,SAAS,GAAG,SAAS;MACnD,aAAa,GAAG,WAAW,GAAG,WAAW,CAAC,OAAO,GAAG,SAAS;;AAEjE;AACA;AACA;AACA;AACA;AACA;AACA;EACA,SAAS,IAAI,CAAC,OAAO,EAAE;AACvB,IAAE,IAAI,KAAK,GAAG,EAAE;QACV,MAAM,GAAG,OAAO,IAAI,IAAI,GAAG,CAAC,GAAG,OAAO,CAAC,MAAM;;IAEjD,IAAI,CAAC,KAAK,EAAE;AACd,IAAE,OAAO,EAAE,KAAK,GAAG,MAAM,EAAE;AAC3B,MAAI,IAAI,KAAK,GAAG,OAAO,CAAC,KAAK,CAAC;AAC9B,MAAI,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,KAAK,CAAC,CAAC,CAAC,CAAC;AAChC,IAAA;AACA,EAAA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,EAAA,SAAS,SAAS,GAAG;IACnB,IAAI,CAAC,QAAQ,GAAG,YAAY,GAAG,YAAY,CAAC,IAAI,CAAC,GAAG,EAAE;AACxD,IAAE,IAAI,CAAC,IAAI,GAAG,CAAC;AACf,EAAA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;EACA,SAAS,UAAU,CAAC,GAAG,EAAE;AACzB,IAAE,IAAI,MAAM,GAAG,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,IAAI,OAAO,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC;IACvD,IAAI,CAAC,IAAI,IAAI,MAAM,GAAG,CAAC,GAAG,CAAC;AAC7B,IAAE,OAAO,MAAM;AACf,EAAA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;EACA,SAAS,OAAO,CAAC,GAAG,EAAE;AACtB,IAAE,IAAI,IAAI,GAAG,IAAI,CAAC,QAAQ;IACxB,IAAI,YAAY,EAAE;AACpB,MAAI,IAAI,MAAM,GAAG,IAAI,CAAC,GAAG,CAAC;AAC1B,MAAI,OAAO,MAAM,KAAK,cAAc,GAAG,SAAS,GAAG,MAAM;AACzD,IAAA;AACA,IAAE,OAAO,cAAc,CAAC,IAAI,CAAC,IAAI,EAAE,GAAG,CAAC,GAAG,IAAI,CAAC,GAAG,CAAC,GAAG,SAAS;AAC/D,EAAA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;EACA,SAAS,OAAO,CAAC,GAAG,EAAE;AACtB,IAAE,IAAI,IAAI,GAAG,IAAI,CAAC,QAAQ;AAC1B,IAAE,OAAO,YAAY,IAAI,IAAI,CAAC,GAAG,CAAC,KAAK,SAAS,IAAI,cAAc,CAAC,IAAI,CAAC,IAAI,EAAE,GAAG,CAAC;AAClF,EAAA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,EAAA,SAAS,OAAO,CAAC,GAAG,EAAE,KAAK,EAAE;AAC7B,IAAE,IAAI,IAAI,GAAG,IAAI,CAAC,QAAQ;AAC1B,IAAE,IAAI,CAAC,IAAI,IAAI,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC;AACpC,IAAE,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,YAAY,IAAI,KAAK,KAAK,SAAS,IAAI,cAAc,GAAG,KAAK;AAC5E,IAAE,OAAO,IAAI;AACb,EAAA;;AAEA;AACA,EAAA,IAAI,CAAC,SAAS,CAAC,KAAK,GAAG,SAAS;AAChC,EAAA,IAAI,CAAC,SAAS,CAAC,QAAQ,CAAC,GAAG,UAAU;AACrC,EAAA,IAAI,CAAC,SAAS,CAAC,GAAG,GAAG,OAAO;AAC5B,EAAA,IAAI,CAAC,SAAS,CAAC,GAAG,GAAG,OAAO;AAC5B,EAAA,IAAI,CAAC,SAAS,CAAC,GAAG,GAAG,OAAO;;AAE5B;AACA;AACA;AACA;AACA;AACA;AACA;EACA,SAAS,SAAS,CAAC,OAAO,EAAE;AAC5B,IAAE,IAAI,KAAK,GAAG,EAAE;QACV,MAAM,GAAG,OAAO,IAAI,IAAI,GAAG,CAAC,GAAG,OAAO,CAAC,MAAM;;IAEjD,IAAI,CAAC,KAAK,EAAE;AACd,IAAE,OAAO,EAAE,KAAK,GAAG,MAAM,EAAE;AAC3B,MAAI,IAAI,KAAK,GAAG,OAAO,CAAC,KAAK,CAAC;AAC9B,MAAI,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,KAAK,CAAC,CAAC,CAAC,CAAC;AAChC,IAAA;AACA,EAAA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,EAAA,SAAS,cAAc,GAAG;AAC1B,IAAE,IAAI,CAAC,QAAQ,GAAG,EAAE;AACpB,IAAE,IAAI,CAAC,IAAI,GAAG,CAAC;AACf,EAAA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;EACA,SAAS,eAAe,CAAC,GAAG,EAAE;AAC9B,IAAE,IAAI,IAAI,GAAG,IAAI,CAAC,QAAQ;AAC1B,QAAM,KAAK,GAAG,YAAY,CAAC,IAAI,EAAE,GAAG,CAAC;;AAErC,IAAE,IAAI,KAAK,GAAG,CAAC,EAAE;AACjB,MAAI,OAAO,KAAK;AAChB,IAAA;AACA,IAAE,IAAI,SAAS,GAAG,IAAI,CAAC,MAAM,GAAG,CAAC;AACjC,IAAE,IAAI,KAAK,IAAI,SAAS,EAAE;MACtB,IAAI,CAAC,GAAG,EAAE;AACd,IAAA,CAAG,MAAM;MACL,MAAM,CAAC,IAAI,CAAC,IAAI,EAAE,KAAK,EAAE,CAAC,CAAC;AAC/B,IAAA;IACE,EAAE,IAAI,CAAC,IAAI;AACb,IAAE,OAAO,IAAI;AACb,EAAA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;EACA,SAAS,YAAY,CAAC,GAAG,EAAE;AAC3B,IAAE,IAAI,IAAI,GAAG,IAAI,CAAC,QAAQ;AAC1B,QAAM,KAAK,GAAG,YAAY,CAAC,IAAI,EAAE,GAAG,CAAC;;AAErC,IAAE,OAAO,KAAK,GAAG,CAAC,GAAG,SAAS,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;AAC/C,EAAA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;EACA,SAAS,YAAY,CAAC,GAAG,EAAE;IACzB,OAAO,YAAY,CAAC,IAAI,CAAC,QAAQ,EAAE,GAAG,CAAC,GAAG,EAAE;AAC9C,EAAA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,EAAA,SAAS,YAAY,CAAC,GAAG,EAAE,KAAK,EAAE;AAClC,IAAE,IAAI,IAAI,GAAG,IAAI,CAAC,QAAQ;AAC1B,QAAM,KAAK,GAAG,YAAY,CAAC,IAAI,EAAE,GAAG,CAAC;;AAErC,IAAE,IAAI,KAAK,GAAG,CAAC,EAAE;MACb,EAAE,IAAI,CAAC,IAAI;MACX,IAAI,CAAC,IAAI,CAAC,CAAC,GAAG,EAAE,KAAK,CAAC,CAAC;AAC3B,IAAA,CAAG,MAAM;MACL,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,GAAG,KAAK;AAC1B,IAAA;AACA,IAAE,OAAO,IAAI;AACb,EAAA;;AAEA;AACA,EAAA,SAAS,CAAC,SAAS,CAAC,KAAK,GAAG,cAAc;AAC1C,EAAA,SAAS,CAAC,SAAS,CAAC,QAAQ,CAAC,GAAG,eAAe;AAC/C,EAAA,SAAS,CAAC,SAAS,CAAC,GAAG,GAAG,YAAY;AACtC,EAAA,SAAS,CAAC,SAAS,CAAC,GAAG,GAAG,YAAY;AACtC,EAAA,SAAS,CAAC,SAAS,CAAC,GAAG,GAAG,YAAY;;AAEtC;AACA;AACA;AACA;AACA;AACA;AACA;EACA,SAAS,QAAQ,CAAC,OAAO,EAAE;AAC3B,IAAE,IAAI,KAAK,GAAG,EAAE;QACV,MAAM,GAAG,OAAO,IAAI,IAAI,GAAG,CAAC,GAAG,OAAO,CAAC,MAAM;;IAEjD,IAAI,CAAC,KAAK,EAAE;AACd,IAAE,OAAO,EAAE,KAAK,GAAG,MAAM,EAAE;AAC3B,MAAI,IAAI,KAAK,GAAG,OAAO,CAAC,KAAK,CAAC;AAC9B,MAAI,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,KAAK,CAAC,CAAC,CAAC,CAAC;AAChC,IAAA;AACA,EAAA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,EAAA,SAAS,aAAa,GAAG;AACzB,IAAE,IAAI,CAAC,IAAI,GAAG,CAAC;IACb,IAAI,CAAC,QAAQ,GAAG;MACd,MAAM,EAAE,IAAI,IAAI;AACpB,MAAI,KAAK,EAAE,KAAK,GAAG,IAAI,SAAS,CAAC;MAC7B,QAAQ,EAAE,IAAI;KACf;AACH,EAAA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;EACA,SAAS,cAAc,CAAC,GAAG,EAAE;AAC7B,IAAE,IAAI,MAAM,GAAG,UAAU,CAAC,IAAI,EAAE,GAAG,CAAC,CAAC,QAAQ,CAAC,CAAC,GAAG,CAAC;IACjD,IAAI,CAAC,IAAI,IAAI,MAAM,GAAG,CAAC,GAAG,CAAC;AAC7B,IAAE,OAAO,MAAM;AACf,EAAA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;EACA,SAAS,WAAW,CAAC,GAAG,EAAE;IACxB,OAAO,UAAU,CAAC,IAAI,EAAE,GAAG,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC;AACvC,EAAA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;EACA,SAAS,WAAW,CAAC,GAAG,EAAE;IACxB,OAAO,UAAU,CAAC,IAAI,EAAE,GAAG,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC;AACvC,EAAA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,EAAA,SAAS,WAAW,CAAC,GAAG,EAAE,KAAK,EAAE;IAC/B,IAAI,IAAI,GAAG,UAAU,CAAC,IAAI,EAAE,GAAG,CAAC;AAClC,QAAM,IAAI,GAAG,IAAI,CAAC,IAAI;;AAEtB,IAAE,IAAI,CAAC,GAAG,CAAC,GAAG,EAAE,KAAK,CAAC;AACtB,IAAE,IAAI,CAAC,IAAI,IAAI,IAAI,CAAC,IAAI,IAAI,IAAI,GAAG,CAAC,GAAG,CAAC;AACxC,IAAE,OAAO,IAAI;AACb,EAAA;;AAEA;AACA,EAAA,QAAQ,CAAC,SAAS,CAAC,KAAK,GAAG,aAAa;AACxC,EAAA,QAAQ,CAAC,SAAS,CAAC,QAAQ,CAAC,GAAG,cAAc;AAC7C,EAAA,QAAQ,CAAC,SAAS,CAAC,GAAG,GAAG,WAAW;AACpC,EAAA,QAAQ,CAAC,SAAS,CAAC,GAAG,GAAG,WAAW;AACpC,EAAA,QAAQ,CAAC,SAAS,CAAC,GAAG,GAAG,WAAW;;AAEpC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;EACA,SAAS,QAAQ,CAAC,MAAM,EAAE;AAC1B,IAAE,IAAI,KAAK,GAAG,EAAE;QACV,MAAM,GAAG,MAAM,IAAI,IAAI,GAAG,CAAC,GAAG,MAAM,CAAC,MAAM;;AAEjD,IAAE,IAAI,CAAC,QAAQ,GAAG,IAAI,QAAQ;AAC9B,IAAE,OAAO,EAAE,KAAK,GAAG,MAAM,EAAE;MACvB,IAAI,CAAC,GAAG,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;AAC3B,IAAA;AACA,EAAA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;EACA,SAAS,WAAW,CAAC,KAAK,EAAE;IAC1B,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,KAAK,EAAE,cAAc,CAAC;AAC1C,IAAE,OAAO,IAAI;AACb,EAAA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;EACA,SAAS,WAAW,CAAC,KAAK,EAAE;IAC1B,OAAO,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,KAAK,CAAC;AACjC,EAAA;;AAEA;EACA,QAAQ,CAAC,SAAS,CAAC,GAAG,GAAG,QAAQ,CAAC,SAAS,CAAC,IAAI,GAAG,WAAW;AAC9D,EAAA,QAAQ,CAAC,SAAS,CAAC,GAAG,GAAG,WAAW;;AAEpC;AACA;AACA;AACA;AACA;AACA;AACA;EACA,SAAS,KAAK,CAAC,OAAO,EAAE;IACtB,IAAI,IAAI,GAAG,IAAI,CAAC,QAAQ,GAAG,IAAI,SAAS,CAAC,OAAO,CAAC;AACnD,IAAE,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC,IAAI;AACvB,EAAA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,EAAA,SAAS,UAAU,GAAG;AACtB,IAAE,IAAI,CAAC,QAAQ,GAAG,IAAI,SAAS;AAC/B,IAAE,IAAI,CAAC,IAAI,GAAG,CAAC;AACf,EAAA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;EACA,SAAS,WAAW,CAAC,GAAG,EAAE;AAC1B,IAAE,IAAI,IAAI,GAAG,IAAI,CAAC,QAAQ;QACpB,MAAM,GAAG,IAAI,CAAC,QAAQ,CAAC,CAAC,GAAG,CAAC;;AAElC,IAAE,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC,IAAI;AACvB,IAAE,OAAO,MAAM;AACf,EAAA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;EACA,SAAS,QAAQ,CAAC,GAAG,EAAE;IACrB,OAAO,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,GAAG,CAAC;AAC/B,EAAA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;EACA,SAAS,QAAQ,CAAC,GAAG,EAAE;IACrB,OAAO,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,GAAG,CAAC;AAC/B,EAAA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,EAAA,SAAS,QAAQ,CAAC,GAAG,EAAE,KAAK,EAAE;AAC9B,IAAE,IAAI,IAAI,GAAG,IAAI,CAAC,QAAQ;AAC1B,IAAE,IAAI,IAAI,YAAY,SAAS,EAAE;AACjC,MAAI,IAAI,KAAK,GAAG,IAAI,CAAC,QAAQ;AAC7B,MAAI,IAAI,CAAC,GAAG,KAAK,KAAK,CAAC,MAAM,GAAG,gBAAgB,GAAG,CAAC,CAAC,EAAE;QACjD,KAAK,CAAC,IAAI,CAAC,CAAC,GAAG,EAAE,KAAK,CAAC,CAAC;AAC9B,QAAM,IAAI,CAAC,IAAI,GAAG,EAAE,IAAI,CAAC,IAAI;AAC7B,QAAM,OAAO,IAAI;AACjB,MAAA;MACI,IAAI,GAAG,IAAI,CAAC,QAAQ,GAAG,IAAI,QAAQ,CAAC,KAAK,CAAC;AAC9C,IAAA;AACA,IAAE,IAAI,CAAC,GAAG,CAAC,GAAG,EAAE,KAAK,CAAC;AACtB,IAAE,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC,IAAI;AACvB,IAAE,OAAO,IAAI;AACb,EAAA;;AAEA;AACA,EAAA,KAAK,CAAC,SAAS,CAAC,KAAK,GAAG,UAAU;AAClC,EAAA,KAAK,CAAC,SAAS,CAAC,QAAQ,CAAC,GAAG,WAAW;AACvC,EAAA,KAAK,CAAC,SAAS,CAAC,GAAG,GAAG,QAAQ;AAC9B,EAAA,KAAK,CAAC,SAAS,CAAC,GAAG,GAAG,QAAQ;AAC9B,EAAA,KAAK,CAAC,SAAS,CAAC,GAAG,GAAG,QAAQ;;AAE9B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,EAAA,SAAS,aAAa,CAAC,KAAK,EAAE,SAAS,EAAE;AACzC,IAAE,IAAI,KAAK,GAAG,OAAO,CAAC,KAAK,CAAC;QACtB,KAAK,GAAG,CAAC,KAAK,IAAI,WAAW,CAAC,KAAK,CAAC;QACpC,MAAM,GAAG,CAAC,KAAK,IAAI,CAAC,KAAK,IAAI,QAAQ,CAAC,KAAK,CAAC;AAClD,QAAM,MAAM,GAAG,CAAC,KAAK,IAAI,CAAC,KAAK,IAAI,CAAC,MAAM,IAAI,YAAY,CAAC,KAAK,CAAC;QAC3D,WAAW,GAAG,KAAK,IAAI,KAAK,IAAI,MAAM,IAAI,MAAM;AACtD,QAAM,MAAM,GAAG,WAAW,GAAG,SAAS,CAAC,KAAK,CAAC,MAAM,EAAE,MAAM,CAAC,GAAG,EAAE;AACjE,QAAM,MAAM,GAAG,MAAM,CAAC,MAAM;;AAE5B,IAAE,KAAK,IAAI,GAAG,IAAI,KAAK,EAAE;MACrB,IAAI,CAAc,cAAc,CAAC,IAAI,CAAC,KAAK,EAAE,GAAG,CAAC;AACrD,UAAQ,EAAE,WAAW;AACrB;aACW,GAAG,IAAI,QAAQ;AAC1B;cACY,MAAM,KAAK,GAAG,IAAI,QAAQ,IAAI,GAAG,IAAI,QAAQ,CAAC,CAAC;AAC3D;AACA,cAAY,MAAM,KAAK,GAAG,IAAI,QAAQ,IAAI,GAAG,IAAI,YAAY,IAAI,GAAG,IAAI,YAAY,CAAC,CAAC;AACtF;AACA,aAAW,OAAO,CAAC,GAAG,EAAE,MAAM;AAC9B,WAAS,CAAC,EAAE;AACZ,QAAM,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC;AACtB,MAAA;AACA,IAAA;AACA,IAAE,OAAO,MAAM;AACf,EAAA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,EAAA,SAAS,YAAY,CAAC,KAAK,EAAE,GAAG,EAAE;AAClC,IAAE,IAAI,MAAM,GAAG,KAAK,CAAC,MAAM;IACzB,OAAO,MAAM,EAAE,EAAE;AACnB,MAAI,IAAI,EAAE,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,EAAE,GAAG,CAAC,EAAE;AACnC,QAAM,OAAO,MAAM;AACnB,MAAA;AACA,IAAA;IACE,OAAO,EAAE;AACX,EAAA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,EAAA,SAAS,cAAc,CAAC,MAAM,EAAE,QAAQ,EAAE,WAAW,EAAE;AACvD,IAAE,IAAI,MAAM,GAAG,QAAQ,CAAC,MAAM,CAAC;AAC/B,IAAE,OAAO,OAAO,CAAC,MAAM,CAAC,GAAG,MAAM,GAAG,SAAS,CAAC,MAAM,EAAE,WAAW,CAAC,MAAM,CAAC,CAAC;AAC1E,EAAA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;EACA,SAAS,UAAU,CAAC,KAAK,EAAE;AAC3B,IAAE,IAAI,KAAK,IAAI,IAAI,EAAE;AACrB,MAAI,OAAO,KAAK,KAAK,SAAS,GAAG,YAAY,GAAG,OAAO;AACvD,IAAA;IACE,OAAO,CAAC,cAAc,IAAI,cAAc,IAAI,MAAM,CAAC,KAAK,CAAC;QACrD,SAAS,CAAC,KAAK;QACf,cAAc,CAAC,KAAK,CAAC;AAC3B,EAAA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;EACA,SAAS,eAAe,CAAC,KAAK,EAAE;IAC9B,OAAO,YAAY,CAAC,KAAK,CAAC,IAAI,UAAU,CAAC,KAAK,CAAC,IAAI,OAAO;AAC5D,EAAA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;EACA,SAAS,WAAW,CAAC,KAAK,EAAE,KAAK,EAAE,OAAO,EAAE,UAAU,EAAE,KAAK,EAAE;AAC/D,IAAE,IAAI,KAAK,KAAK,KAAK,EAAE;AACvB,MAAI,OAAO,IAAI;AACf,IAAA;IACE,IAAI,KAAK,IAAI,IAAI,IAAI,KAAK,IAAI,IAAI,KAAK,CAAC,YAAY,CAAC,KAAK,CAAC,IAAI,CAAC,YAAY,CAAC,KAAK,CAAC,CAAC,EAAE;AACxF,MAAI,OAAO,KAAK,KAAK,KAAK,IAAI,KAAK,KAAK,KAAK;AAC7C,IAAA;AACA,IAAE,OAAO,eAAe,CAAC,KAAK,EAAE,KAAK,EAAE,OAAO,EAAE,UAAU,EAAE,WAAW,EAAE,KAAK,CAAC;AAC/E,EAAA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,EAAA,SAAS,eAAe,CAAC,MAAM,EAAE,KAAK,EAAE,OAAO,EAAE,UAAU,EAAE,SAAS,EAAE,KAAK,EAAE;AAC/E,IAAE,IAAI,QAAQ,GAAG,OAAO,CAAC,MAAM,CAAC;AAChC,QAAM,QAAQ,GAAG,OAAO,CAAC,KAAK,CAAC;QACzB,MAAM,GAAG,QAAQ,GAAG,QAAQ,GAAG,MAAM,CAAC,MAAM,CAAC;QAC7C,MAAM,GAAG,QAAQ,GAAG,QAAQ,GAAG,MAAM,CAAC,KAAK,CAAC;;IAEhD,MAAM,GAAG,MAAM,IAAI,OAAO,GAAG,SAAS,GAAG,MAAM;IAC/C,MAAM,GAAG,MAAM,IAAI,OAAO,GAAG,SAAS,GAAG,MAAM;;AAEjD,IAAE,IAAI,QAAQ,GAAG,MAAM,IAAI,SAAS;AACpC,QAAM,QAAQ,GAAG,MAAM,IAAI,SAAS;AACpC,QAAM,SAAS,GAAG,MAAM,IAAI,MAAM;;AAElC,IAAE,IAAI,SAAS,IAAI,QAAQ,CAAC,MAAM,CAAC,EAAE;AACrC,MAAI,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,EAAE;AAC1B,QAAM,OAAO,KAAK;AAClB,MAAA;MACI,QAAQ,GAAG,IAAI;MACf,QAAQ,GAAG,KAAK;AACpB,IAAA;AACA,IAAE,IAAI,SAAS,IAAI,CAAC,QAAQ,EAAE;AAC9B,MAAI,KAAK,KAAK,KAAK,GAAG,IAAI,KAAK,CAAC;AAChC,MAAI,OAAO,CAAC,QAAQ,IAAI,YAAY,CAAC,MAAM,CAAC;AAC5C,UAAQ,WAAW,CAAC,MAAM,EAAE,KAAK,EAAE,OAAO,EAAE,UAAU,EAAE,SAAS,EAAE,KAAK;AACxE,UAAQ,UAAU,CAAC,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,OAAO,EAAE,UAAU,EAAE,SAAS,EAAE,KAAK,CAAC;AAChF,IAAA;AACA,IAAE,IAAI,EAAE,OAAO,GAAG,oBAAoB,CAAC,EAAE;AACzC,MAAI,IAAI,YAAY,GAAG,QAAQ,IAAI,cAAc,CAAC,IAAI,CAAC,MAAM,EAAE,aAAa,CAAC;UACrE,YAAY,GAAG,QAAQ,IAAI,cAAc,CAAC,IAAI,CAAC,KAAK,EAAE,aAAa,CAAC;;AAE5E,MAAI,IAAI,YAAY,IAAI,YAAY,EAAE;QAChC,IAAI,YAAY,GAAG,YAAY,GAAG,MAAM,CAAC,KAAK,EAAE,GAAG,MAAM;YACrD,YAAY,GAAG,YAAY,GAAG,KAAK,CAAC,KAAK,EAAE,GAAG,KAAK;;AAE7D,QAAM,KAAK,KAAK,KAAK,GAAG,IAAI,KAAK,CAAC;AAClC,QAAM,OAAO,SAAS,CAAC,YAAY,EAAE,YAAY,EAAE,OAAO,EAAE,UAAU,EAAE,KAAK,CAAC;AAC9E,MAAA;AACA,IAAA;IACE,IAAI,CAAC,SAAS,EAAE;AAClB,MAAI,OAAO,KAAK;AAChB,IAAA;AACA,IAAE,KAAK,KAAK,KAAK,GAAG,IAAI,KAAK,CAAC;AAC9B,IAAE,OAAO,YAAY,CAAC,MAAM,EAAE,KAAK,EAAE,OAAO,EAAE,UAAU,EAAE,SAAS,EAAE,KAAK,CAAC;AAC3E,EAAA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;EACA,SAAS,YAAY,CAAC,KAAK,EAAE;IAC3B,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,IAAI,QAAQ,CAAC,KAAK,CAAC,EAAE;AAC3C,MAAI,OAAO,KAAK;AAChB,IAAA;IACE,IAAI,OAAO,GAAG,UAAU,CAAC,KAAK,CAAC,GAAG,UAAU,GAAG,YAAY;IAC3D,OAAO,OAAO,CAAC,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC;AACtC,EAAA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;EACA,SAAS,gBAAgB,CAAC,KAAK,EAAE;AACjC,IAAE,OAAO,YAAY,CAAC,KAAK,CAAC;AAC5B,MAAI,QAAQ,CAAC,KAAK,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,cAAc,CAAC,UAAU,CAAC,KAAK,CAAC,CAAC;AACjE,EAAA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;EACA,SAAS,QAAQ,CAAC,MAAM,EAAE;AAC1B,IAAE,IAAI,CAAC,WAAW,CAAC,MAAM,CAAC,EAAE;AAC5B,MAAI,OAAO,UAAU,CAAC,MAAM,CAAC;AAC7B,IAAA;IACE,IAAI,MAAM,GAAG,EAAE;IACf,KAAK,IAAI,GAAG,IAAI,MAAM,CAAC,MAAM,CAAC,EAAE;AAClC,MAAI,IAAI,cAAc,CAAC,IAAI,CAAC,MAAM,EAAE,GAAG,CAAC,IAAI,GAAG,IAAI,aAAa,EAAE;AAClE,QAAM,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC;AACtB,MAAA;AACA,IAAA;AACA,IAAE,OAAO,MAAM;AACf,EAAA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,EAAA,SAAS,WAAW,CAAC,KAAK,EAAE,KAAK,EAAE,OAAO,EAAE,UAAU,EAAE,SAAS,EAAE,KAAK,EAAE;AAC1E,IAAE,IAAI,SAAS,GAAG,OAAO,GAAG,oBAAoB;AAChD,QAAM,SAAS,GAAG,KAAK,CAAC,MAAM;AAC9B,QAAM,SAAS,GAAG,KAAK,CAAC,MAAM;;AAE9B,IAAE,IAAI,SAAS,IAAI,SAAS,IAAI,EAAE,SAAS,IAAI,SAAS,GAAG,SAAS,CAAC,EAAE;AACvE,MAAI,OAAO,KAAK;AAChB,IAAA;AACA;IACE,IAAI,OAAO,GAAG,KAAK,CAAC,GAAG,CAAC,KAAK,CAAC;IAC9B,IAAI,OAAO,IAAI,KAAK,CAAC,GAAG,CAAC,KAAK,CAAC,EAAE;MAC/B,OAAO,OAAO,IAAI,KAAK;AAC3B,IAAA;AACA,IAAE,IAAI,KAAK,GAAG,EAAE;QACV,MAAM,GAAG,IAAI;QACb,IAAI,GAAG,CAAC,OAAO,GAAG,sBAAsB,IAAI,IAAI,QAAQ,GAAG,SAAS;;AAE1E,IAAE,KAAK,CAAC,GAAG,CAAC,KAAK,EAAE,KAAK,CAAC;AACzB,IAAE,KAAK,CAAC,GAAG,CAAC,KAAK,EAAE,KAAK,CAAC;;AAEzB;AACA,IAAE,OAAO,EAAE,KAAK,GAAG,SAAS,EAAE;AAC9B,MAAI,IAAI,QAAQ,GAAG,KAAK,CAAC,KAAK,CAAC;AAC/B,UAAQ,QAAQ,GAAG,KAAK,CAAC,KAAK,CAAC;;MAE3B,IAAI,UAAU,EAAE;QACd,IAAI,QAAQ,GAAG;AACrB,YAAU,UAAU,CAAC,QAAQ,EAAE,QAAQ,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK;AACnE,YAAU,UAAU,CAAC,QAAQ,EAAE,QAAQ,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,CAAC;AACpE,MAAA;AACA,MAAI,IAAI,QAAQ,KAAK,SAAS,EAAE;QAC1B,IAAI,QAAQ,EAAE;UACZ;AACR,QAAA;QACM,MAAM,GAAG,KAAK;QACd;AACN,MAAA;AACA;MACI,IAAI,IAAI,EAAE;QACR,IAAI,CAAC,SAAS,CAAC,KAAK,EAAE,SAAS,QAAQ,EAAE,QAAQ,EAAE;AACzD,cAAY,IAAI,CAAC,QAAQ,CAAC,IAAI,EAAE,QAAQ,CAAC;AACzC,mBAAiB,QAAQ,KAAK,QAAQ,IAAI,SAAS,CAAC,QAAQ,EAAE,QAAQ,EAAE,OAAO,EAAE,UAAU,EAAE,KAAK,CAAC,CAAC,EAAE;AACtG,gBAAc,OAAO,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC;AACxC,cAAA;AACA,YAAA,CAAW,CAAC,EAAE;UACN,MAAM,GAAG,KAAK;UACd;AACR,QAAA;AACA,MAAA,CAAK,MAAM,IAAI;YACL,QAAQ,KAAK,QAAQ;cACnB,SAAS,CAAC,QAAQ,EAAE,QAAQ,EAAE,OAAO,EAAE,UAAU,EAAE,KAAK;AACpE,WAAS,EAAE;QACL,MAAM,GAAG,KAAK;QACd;AACN,MAAA;AACA,IAAA;AACA,IAAE,KAAK,CAAC,QAAQ,CAAC,CAAC,KAAK,CAAC;AACxB,IAAE,KAAK,CAAC,QAAQ,CAAC,CAAC,KAAK,CAAC;AACxB,IAAE,OAAO,MAAM;AACf,EAAA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,EAAA,SAAS,UAAU,CAAC,MAAM,EAAE,KAAK,EAAE,GAAG,EAAE,OAAO,EAAE,UAAU,EAAE,SAAS,EAAE,KAAK,EAAE;AAC/E,IAAE,QAAQ,GAAG;AACb,MAAI,KAAK,WAAW;QACd,IAAI,CAAC,MAAM,CAAC,UAAU,IAAI,KAAK,CAAC,UAAU;aACrC,MAAM,CAAC,UAAU,IAAI,KAAK,CAAC,UAAU,CAAC,EAAE;AACnD,UAAQ,OAAO,KAAK;AACpB,QAAA;AACA,QAAM,MAAM,GAAG,MAAM,CAAC,MAAM;AAC5B,QAAM,KAAK,GAAG,KAAK,CAAC,MAAM;;AAE1B,MAAI,KAAK,cAAc;QACjB,IAAI,CAAC,MAAM,CAAC,UAAU,IAAI,KAAK,CAAC,UAAU;AAChD,YAAU,CAAC,SAAS,CAAC,IAAI,UAAU,CAAC,MAAM,CAAC,EAAE,IAAI,UAAU,CAAC,KAAK,CAAC,CAAC,EAAE;AACrE,UAAQ,OAAO,KAAK;AACpB,QAAA;AACA,QAAM,OAAO,IAAI;;AAEjB,MAAI,KAAK,OAAO;AAChB,MAAI,KAAK,OAAO;AAChB,MAAI,KAAK,SAAS;AAClB;AACA;QACM,OAAO,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,KAAK,CAAC;;AAEhC,MAAI,KAAK,QAAQ;AACjB,QAAM,OAAO,MAAM,CAAC,IAAI,IAAI,KAAK,CAAC,IAAI,IAAI,MAAM,CAAC,OAAO,IAAI,KAAK,CAAC,OAAO;;AAEzE,MAAI,KAAK,SAAS;AAClB,MAAI,KAAK,SAAS;AAClB;AACA;AACA;AACA,QAAM,OAAO,MAAM,KAAK,KAAK,GAAG,EAAE,CAAC;;AAEnC,MAAI,KAAK,MAAM;QACT,IAAI,OAAO,GAAG,UAAU;;AAE9B,MAAI,KAAK,MAAM;AACf,QAAM,IAAI,SAAS,GAAG,OAAO,GAAG,oBAAoB;AACpD,QAAM,OAAO,KAAK,OAAO,GAAG,UAAU,CAAC;;QAEjC,IAAI,MAAM,CAAC,IAAI,IAAI,KAAK,CAAC,IAAI,IAAI,CAAC,SAAS,EAAE;AACnD,UAAQ,OAAO,KAAK;AACpB,QAAA;AACA;QACM,IAAI,OAAO,GAAG,KAAK,CAAC,GAAG,CAAC,MAAM,CAAC;QAC/B,IAAI,OAAO,EAAE;UACX,OAAO,OAAO,IAAI,KAAK;AAC/B,QAAA;QACM,OAAO,IAAI,sBAAsB;;AAEvC;AACA,QAAM,KAAK,CAAC,GAAG,CAAC,MAAM,EAAE,KAAK,CAAC;QACxB,IAAI,MAAM,GAAG,WAAW,CAAC,OAAO,CAAC,MAAM,CAAC,EAAE,OAAO,CAAC,KAAK,CAAC,EAAE,OAAO,EAAE,UAAU,EAAE,SAAS,EAAE,KAAK,CAAC;AACtG,QAAM,KAAK,CAAC,QAAQ,CAAC,CAAC,MAAM,CAAC;AAC7B,QAAM,OAAO,MAAM;;AAEnB,MAAI,KAAK,SAAS;QACZ,IAAI,aAAa,EAAE;AACzB,UAAQ,OAAO,aAAa,CAAC,IAAI,CAAC,MAAM,CAAC,IAAI,aAAa,CAAC,IAAI,CAAC,KAAK,CAAC;AACtE,QAAA;AACA;AACA,IAAE,OAAO,KAAK;AACd,EAAA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,EAAA,SAAS,YAAY,CAAC,MAAM,EAAE,KAAK,EAAE,OAAO,EAAE,UAAU,EAAE,SAAS,EAAE,KAAK,EAAE;AAC5E,IAAE,IAAI,SAAS,GAAG,OAAO,GAAG,oBAAoB;AAChD,QAAM,QAAQ,GAAG,UAAU,CAAC,MAAM,CAAC;AACnC,QAAM,SAAS,GAAG,QAAQ,CAAC,MAAM;AACjC,QAAM,QAAQ,GAAG,UAAU,CAAC,KAAK,CAAC;AAClC,QAAM,SAAS,GAAG,QAAQ,CAAC,MAAM;;AAEjC,IAAE,IAAI,SAAS,IAAI,SAAS,IAAI,CAAC,SAAS,EAAE;AAC5C,MAAI,OAAO,KAAK;AAChB,IAAA;IACE,IAAI,KAAK,GAAG,SAAS;IACrB,OAAO,KAAK,EAAE,EAAE;AAClB,MAAI,IAAI,GAAG,GAAG,QAAQ,CAAC,KAAK,CAAC;AAC7B,MAAI,IAAI,EAAE,SAAS,GAAG,GAAG,IAAI,KAAK,GAAG,cAAc,CAAC,IAAI,CAAC,KAAK,EAAE,GAAG,CAAC,CAAC,EAAE;AACvE,QAAM,OAAO,KAAK;AAClB,MAAA;AACA,IAAA;AACA;IACE,IAAI,OAAO,GAAG,KAAK,CAAC,GAAG,CAAC,MAAM,CAAC;IAC/B,IAAI,OAAO,IAAI,KAAK,CAAC,GAAG,CAAC,KAAK,CAAC,EAAE;MAC/B,OAAO,OAAO,IAAI,KAAK;AAC3B,IAAA;IACE,IAAI,MAAM,GAAG,IAAI;AACnB,IAAE,KAAK,CAAC,GAAG,CAAC,MAAM,EAAE,KAAK,CAAC;AAC1B,IAAE,KAAK,CAAC,GAAG,CAAC,KAAK,EAAE,MAAM,CAAC;;IAExB,IAAI,QAAQ,GAAG,SAAS;AAC1B,IAAE,OAAO,EAAE,KAAK,GAAG,SAAS,EAAE;AAC9B,MAAI,GAAG,GAAG,QAAQ,CAAC,KAAK,CAAC;AACzB,MAAI,IAAI,QAAQ,GAAG,MAAM,CAAC,GAAG,CAAC;AAC9B,UAAQ,QAAQ,GAAG,KAAK,CAAC,GAAG,CAAC;;MAEzB,IAAI,UAAU,EAAE;QACd,IAAI,QAAQ,GAAG;AACrB,YAAU,UAAU,CAAC,QAAQ,EAAE,QAAQ,EAAE,GAAG,EAAE,KAAK,EAAE,MAAM,EAAE,KAAK;AAClE,YAAU,UAAU,CAAC,QAAQ,EAAE,QAAQ,EAAE,GAAG,EAAE,MAAM,EAAE,KAAK,EAAE,KAAK,CAAC;AACnE,MAAA;AACA;MACI,IAAI,EAAE,QAAQ,KAAK;AACvB,eAAa,QAAQ,KAAK,QAAQ,IAAI,SAAS,CAAC,QAAQ,EAAE,QAAQ,EAAE,OAAO,EAAE,UAAU,EAAE,KAAK,CAAC;cACnF;AACZ,WAAS,EAAE;QACL,MAAM,GAAG,KAAK;QACd;AACN,MAAA;AACA,MAAI,QAAQ,KAAK,QAAQ,GAAG,GAAG,IAAI,aAAa,CAAC;AACjD,IAAA;AACA,IAAE,IAAI,MAAM,IAAI,CAAC,QAAQ,EAAE;AAC3B,MAAI,IAAI,OAAO,GAAG,MAAM,CAAC,WAAW;AACpC,UAAQ,OAAO,GAAG,KAAK,CAAC,WAAW;;AAEnC;MACI,IAAI,OAAO,IAAI,OAAO;AAC1B,WAAS,aAAa,IAAI,MAAM,IAAI,aAAa,IAAI,KAAK,CAAC;UACnD,EAAE,OAAO,OAAO,IAAI,UAAU,IAAI,OAAO,YAAY,OAAO;YAC1D,OAAO,OAAO,IAAI,UAAU,IAAI,OAAO,YAAY,OAAO,CAAC,EAAE;QACjE,MAAM,GAAG,KAAK;AACpB,MAAA;AACA,IAAA;AACA,IAAE,KAAK,CAAC,QAAQ,CAAC,CAAC,MAAM,CAAC;AACzB,IAAE,KAAK,CAAC,QAAQ,CAAC,CAAC,KAAK,CAAC;AACxB,IAAE,OAAO,MAAM;AACf,EAAA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;EACA,SAAS,UAAU,CAAC,MAAM,EAAE;IAC1B,OAAO,cAAc,CAAC,MAAM,EAAE,IAAI,EAAE,UAAU,CAAC;AACjD,EAAA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,EAAA,SAAS,UAAU,CAAC,GAAG,EAAE,GAAG,EAAE;AAC9B,IAAE,IAAI,IAAI,GAAG,GAAG,CAAC,QAAQ;IACvB,OAAO,SAAS,CAAC,GAAG;QAChB,IAAI,CAAC,OAAO,GAAG,IAAI,QAAQ,GAAG,QAAQ,GAAG,MAAM;QAC/C,IAAI,CAAC,GAAG;AACd,EAAA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,EAAA,SAAS,SAAS,CAAC,MAAM,EAAE,GAAG,EAAE;IAC9B,IAAI,KAAK,GAAG,QAAQ,CAAC,MAAM,EAAE,GAAG,CAAC;IACjC,OAAO,YAAY,CAAC,KAAK,CAAC,GAAG,KAAK,GAAG,SAAS;AAChD,EAAA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;EACA,SAAS,SAAS,CAAC,KAAK,EAAE;IACxB,IAAI,KAAK,GAAG,cAAc,CAAC,IAAI,CAAC,KAAK,EAAE,cAAc,CAAC;AACxD,QAAM,GAAG,GAAG,KAAK,CAAC,cAAc,CAAC;;AAEjC,IAAE,IAAI;AACN,MAAI,KAAK,CAAC,cAAc,CAAC,GAAG,SAAS;MACjC,IAAI,QAAQ,GAAG,IAAI;IACvB,CAAG,CAAC,OAAO,CAAC,EAAE,CAAA;;IAEZ,IAAI,MAAM,GAAG,oBAAoB,CAAC,IAAI,CAAC,KAAK,CAAC;IAC7C,IAAI,QAAQ,EAAE;MACZ,IAAI,KAAK,EAAE;AACf,QAAM,KAAK,CAAC,cAAc,CAAC,GAAG,GAAG;AACjC,MAAA,CAAK,MAAM;AACX,QAAM,OAAO,KAAK,CAAC,cAAc,CAAC;AAClC,MAAA;AACA,IAAA;AACA,IAAE,OAAO,MAAM;AACf,EAAA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;EACA,IAAI,UAAU,GAAG,CAAC,gBAAgB,GAAG,SAAS,GAAG,SAAS,MAAM,EAAE;AAClE,IAAE,IAAI,MAAM,IAAI,IAAI,EAAE;AACtB,MAAI,OAAO,EAAE;AACb,IAAA;AACA,IAAE,MAAM,GAAG,MAAM,CAAC,MAAM,CAAC;IACvB,OAAO,WAAW,CAAC,gBAAgB,CAAC,MAAM,CAAC,EAAE,SAAS,MAAM,EAAE;MAC5D,OAAO,oBAAoB,CAAC,IAAI,CAAC,MAAM,EAAE,MAAM,CAAC;AACpD,IAAA,CAAG,CAAC;EACJ,CAAC;;AAED;AACA;AACA;AACA;AACA;AACA;AACA;EACA,IAAI,MAAM,GAAG,UAAU;;AAEvB;AACA,EAAA,IAAI,CAAC,QAAQ,IAAI,MAAM,CAAC,IAAI,QAAQ,CAAC,IAAI,WAAW,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,WAAW;OACnE,GAAG,IAAI,MAAM,CAAC,IAAI,GAAG,CAAC,IAAI,MAAM,CAAC;OACjC,OAAO,IAAI,MAAM,CAAC,OAAO,CAAC,OAAO,EAAE,CAAC,IAAI,UAAU,CAAC;OACnD,GAAG,IAAI,MAAM,CAAC,IAAI,GAAG,CAAC,IAAI,MAAM,CAAC;OACjC,OAAO,IAAI,MAAM,CAAC,IAAI,OAAO,CAAC,IAAI,UAAU,CAAC,EAAE;AACpD,IAAE,MAAM,GAAG,SAAS,KAAK,EAAE;AAC3B,MAAI,IAAI,MAAM,GAAG,UAAU,CAAC,KAAK,CAAC;UAC1B,IAAI,GAAG,MAAM,IAAI,SAAS,GAAG,KAAK,CAAC,WAAW,GAAG,SAAS;UAC1D,UAAU,GAAG,IAAI,GAAG,QAAQ,CAAC,IAAI,CAAC,GAAG,EAAE;;MAE3C,IAAI,UAAU,EAAE;AACpB,QAAM,QAAQ,UAAU;AACxB,UAAQ,KAAK,kBAAkB,EAAE,OAAO,WAAW;AACnD,UAAQ,KAAK,aAAa,EAAE,OAAO,MAAM;AACzC,UAAQ,KAAK,iBAAiB,EAAE,OAAO,UAAU;AACjD,UAAQ,KAAK,aAAa,EAAE,OAAO,MAAM;AACzC,UAAQ,KAAK,iBAAiB,EAAE,OAAO,UAAU;AACjD;AACA,MAAA;AACA,MAAI,OAAO,MAAM;IACjB,CAAG;AACH,EAAA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,EAAA,SAAS,OAAO,CAAC,KAAK,EAAE,MAAM,EAAE;IAC9B,MAAM,GAAG,MAAM,IAAI,IAAI,GAAG,gBAAgB,GAAG,MAAM;IACnD,OAAO,CAAC,CAAC,MAAM;OACZ,OAAO,KAAK,IAAI,QAAQ,IAAI,QAAQ,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;AACtD,OAAK,KAAK,GAAG,EAAE,IAAI,KAAK,GAAG,CAAC,IAAI,CAAC,IAAI,KAAK,GAAG,MAAM,CAAC;AACpD,EAAA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;EACA,SAAS,SAAS,CAAC,KAAK,EAAE;AAC1B,IAAE,IAAI,IAAI,GAAG,OAAO,KAAK;AACzB,IAAE,OAAO,CAAC,IAAI,IAAI,QAAQ,IAAI,IAAI,IAAI,QAAQ,IAAI,IAAI,IAAI,QAAQ,IAAI,IAAI,IAAI,SAAS;SAChF,KAAK,KAAK,WAAW;SACrB,KAAK,KAAK,IAAI,CAAC;AACtB,EAAA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;EACA,SAAS,QAAQ,CAAC,IAAI,EAAE;IACtB,OAAO,CAAC,CAAC,UAAU,KAAK,UAAU,IAAI,IAAI,CAAC;AAC7C,EAAA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;EACA,SAAS,WAAW,CAAC,KAAK,EAAE;AAC5B,IAAE,IAAI,IAAI,GAAG,KAAK,IAAI,KAAK,CAAC,WAAW;AACvC,QAAM,KAAK,GAAG,CAAC,OAAO,IAAI,IAAI,UAAU,IAAI,IAAI,CAAC,SAAS,KAAK,WAAW;;IAExE,OAAO,KAAK,KAAK,KAAK;AACxB,EAAA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;EACA,SAAS,cAAc,CAAC,KAAK,EAAE;AAC/B,IAAE,OAAO,oBAAoB,CAAC,IAAI,CAAC,KAAK,CAAC;AACzC,EAAA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;EACA,SAAS,QAAQ,CAAC,IAAI,EAAE;AACxB,IAAE,IAAI,IAAI,IAAI,IAAI,EAAE;AACpB,MAAI,IAAI;AACR,QAAM,OAAO,YAAY,CAAC,IAAI,CAAC,IAAI,CAAC;MACpC,CAAK,CAAC,OAAO,CAAC,EAAE,CAAA;AAChB,MAAI,IAAI;QACF,QAAQ,IAAI,GAAG,EAAE;MACvB,CAAK,CAAC,OAAO,CAAC,EAAE,CAAA;AAChB,IAAA;AACA,IAAE,OAAO,EAAE;AACX,EAAA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,EAAA,SAAS,EAAE,CAAC,KAAK,EAAE,KAAK,EAAE;AAC1B,IAAE,OAAO,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,IAAI,KAAK,KAAK,KAAK,CAAC;AAChE,EAAA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,EAAA,IAAI,WAAW,GAAG,eAAe,CAAC,WAAW,EAAE,OAAO,SAAS,CAAC,CAAA,CAAE,EAAE,CAAC,GAAG,eAAe,GAAG,SAAS,KAAK,EAAE;AAC1G,IAAE,OAAO,YAAY,CAAC,KAAK,CAAC,IAAI,cAAc,CAAC,IAAI,CAAC,KAAK,EAAE,QAAQ,CAAC;MAChE,CAAC,oBAAoB,CAAC,IAAI,CAAC,KAAK,EAAE,QAAQ,CAAC;EAC/C,CAAC;;AAED;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,EAAA,IAAI,OAAO,GAAG,KAAK,CAAC,OAAO;;AAE3B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;EACA,SAAS,WAAW,CAAC,KAAK,EAAE;AAC5B,IAAE,OAAO,KAAK,IAAI,IAAI,IAAI,QAAQ,CAAC,KAAK,CAAC,MAAM,CAAC,IAAI,CAAC,UAAU,CAAC,KAAK,CAAC;AACtE,EAAA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,EAAA,IAAI,QAAQ,GAAG,cAAc,IAAI,SAAS;;AAE1C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,EAAA,SAAS,OAAO,CAAC,KAAK,EAAE,KAAK,EAAE;AAC/B,IAAE,OAAO,WAAW,CAAC,KAAK,EAAE,KAAK,CAAC;AAClC,EAAA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;EACA,SAAS,UAAU,CAAC,KAAK,EAAE;AAC3B,IAAE,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,EAAE;AACxB,MAAI,OAAO,KAAK;AAChB,IAAA;AACA;AACA;AACA,IAAE,IAAI,GAAG,GAAG,UAAU,CAAC,KAAK,CAAC;AAC7B,IAAE,OAAO,GAAG,IAAI,OAAO,IAAI,GAAG,IAAI,MAAM,IAAI,GAAG,IAAI,QAAQ,IAAI,GAAG,IAAI,QAAQ;AAC9E,EAAA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;EACA,SAAS,QAAQ,CAAC,KAAK,EAAE;AACzB,IAAE,OAAO,OAAO,KAAK,IAAI,QAAQ;AACjC,MAAI,KAAK,GAAG,EAAE,IAAI,KAAK,GAAG,CAAC,IAAI,CAAC,IAAI,KAAK,IAAI,gBAAgB;AAC7D,EAAA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;EACA,SAAS,QAAQ,CAAC,KAAK,EAAE;AACzB,IAAE,IAAI,IAAI,GAAG,OAAO,KAAK;AACzB,IAAE,OAAO,KAAK,IAAI,IAAI,KAAK,IAAI,IAAI,QAAQ,IAAI,IAAI,IAAI,UAAU,CAAC;AAClE,EAAA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;EACA,SAAS,YAAY,CAAC,KAAK,EAAE;IAC3B,OAAO,KAAK,IAAI,IAAI,IAAI,OAAO,KAAK,IAAI,QAAQ;AAClD,EAAA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;EACA,IAAI,YAAY,GAAG,gBAAgB,GAAG,SAAS,CAAC,gBAAgB,CAAC,GAAG,gBAAgB;;AAEpF;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;EACA,SAAS,IAAI,CAAC,MAAM,EAAE;AACtB,IAAE,OAAO,WAAW,CAAC,MAAM,CAAC,GAAG,aAAa,CAAC,MAAM,CAAC,GAAG,QAAQ,CAAC,MAAM,CAAC;AACvE,EAAA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,EAAA,SAAS,SAAS,GAAG;AACrB,IAAE,OAAO,EAAE;AACX,EAAA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,EAAA,SAAS,SAAS,GAAG;AACrB,IAAE,OAAO,KAAK;AACd,EAAA;;AAEA,EAAA,MAAA,CAAA,OAAA,GAAiB,OAAO,CAAA;;;;;;;;;;;AClzDxB,IAAI,EAAE,GAAG,UAAU,MAAM,EAAE,EAAE,QAAQ,EAAE,EAAE,EAAE,IAAI,EAAE,MAAM,EAAE,MAAM,EAAE,EAAE,EAAE,CAAC;AACtE;AACA;AACA;AACA,IAAI,IAAI,GAAG,UAAU,CAAC,EAAE,EAAE,OAAO,CAAC,CAAC,EAAE,KAAK,IAAI,CAAC,EAAE,CAAC;AAClD;AACA;AACA;AACA;AACA;AACA,IAAI,GAAG,GAAG,UAAU,KAAK,EAAE,EAAE,QAAQ,EAAE,EAAE,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,EAAE,EAAE,CAAC;AACrE;AACA;AACA;AACA,IAAI,KAAK,GAAG,UAAU,CAAC,EAAE,EAAE,OAAO,CAAC,CAAC,EAAE,KAAK,KAAK,CAAC,EAAE,CAAC;AACpD;AACA;AACA;AACA;AACA,IAAI,SAAS,GAAG,UAAU,CAAC,EAAE;AAC7B,IAAI,OAAO,CAAC,CAAC,EAAE,KAAK,IAAI,GAAG,OAAO,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC;AAC/E,CAAC,CAAC;AACF;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,IAAI,WAAW,GAAG,UAAU,YAAY,EAAE,CAAC,EAAE;AAC7C,IAAI,OAAO,CAAC,CAAC,EAAE,KAAK,IAAI,GAAG,CAAC,CAAC,MAAM,GAAG,YAAY,CAAC;AACnD,CAAC,CAAC;AACF;AACA;AACA;AACA,IAAI,aAAa,GAAG,UAAU,CAAC,EAAE;AACjC,IAAI,IAAI,CAAC,CAAC,EAAE,KAAK,IAAI,EAAE;AACvB,QAAQ,OAAO,CAAC,CAAC,MAAM,CAAC;AACxB,IAAA,CAAK;AACL,SAAS;AACT,QAAQ,MAAM,CAAC,CAAC,KAAK,CAAC;AACtB,IAAA,CAAK;AACL,CAAC,CAAC;AACF;AACA;AACA;AACA,IAAI,SAAS,GAAG,UAAU,OAAO,EAAE;AACnC,IAAI,OAAO,OAAO,CAAC,MAAM,CAAC,UAAU,GAAG,EAAE,CAAC,EAAE,EAAE,QAAQ,CAAC,CAAC,EAAE,KAAK,IAAI,GAAG,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,GAAG,EAAE,CAAA,CAAE,EAAE,EAAE,CAAC,CAAC;AAC1G,CAAC,CAAC;AACF;AACA;AACA;AACA,IAAI,GAAG,GAAG,UAAU,CAAC,EAAE,CAAC,EAAE;AAC1B,IAAI,OAAO,CAAC,CAAC,EAAE,KAAK,IAAI,GAAG,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,GAAG,CAAC,CAAC;AAC/C,CAAC,CAAC;AACF;AACA;AACA;AACA;AACA,IAAI,IAAI,GAAG,UAAU,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE;AAChC,IAAI,OAAO,EAAE,CAAC,EAAE,KAAK,KAAK,GAAG,EAAE;AAC/B,QAAQ,EAAE,CAAC,EAAE,KAAK,KAAK,GAAG,EAAE;AAC5B,YAAY,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,MAAM,EAAE,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC;AACxC,CAAC,CAAC;AACF;AACA;AACA;AACA,IAAI,QAAQ,GAAG,UAAU,CAAC,EAAE,CAAC,EAAE;AAC/B,IAAI,OAAO,CAAC,CAAC,EAAE,KAAK,IAAI,GAAG,CAAC,GAAG,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC;AAC/C,CAAC,CAAC;AACF;AACA;AACA;AACA;AACA;AACA;AACA,IAAI,OAAO,GAAG,UAAU,CAAC,EAAE,CAAC,EAAE;AAC9B,IAAI,OAAO,CAAC,CAAC,EAAE,KAAK,IAAI,GAAG,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;AAC3C,CAAC,CAAC;;;AAGF,IAAI,MAAM,GAAG,MAAM,CAAC,MAAM,CAAC;AAC3B,CAAC,EAAE,EAAE,EAAE;AACP,CAAC,IAAI,EAAE,IAAI;AACX,CAAC,GAAG,EAAE,GAAG;AACT,CAAC,KAAK,EAAE,KAAK;AACb,CAAC,SAAS,EAAE,SAAS;AACrB,CAAC,WAAW,EAAE,WAAW;AACzB,CAAC,aAAa,EAAE,aAAa;AAC7B,CAAC,SAAS,EAAE,SAAS;AACrB,CAAC,GAAG,EAAE,GAAG;AACT,CAAC,IAAI,EAAE,IAAI;AACX,CAAC,QAAQ,EAAE,QAAQ;AACnB,CAAC,OAAO,EAAE;AACV,CAAC,CAAC;;AAEF;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,IAAI,QAAQ,GAAG,WAAW;AAC1B,IAAI,QAAQ,GAAG,MAAM,CAAC,MAAM,IAAI,SAAS,QAAQ,CAAC,CAAC,EAAE;AACrD,QAAQ,KAAK,IAAI,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,SAAS,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE;AAC7D,YAAY,CAAC,GAAG,SAAS,CAAC,CAAC,CAAC,CAAC;AAC7B,YAAY,KAAK,IAAI,CAAC,IAAI,CAAC,EAAE,IAAI,MAAM,CAAC,SAAS,CAAC,cAAc,CAAC,IAAI,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;AACzF,QAAA,CAAS;AACT,QAAQ,OAAO,CAAC,CAAC;AACjB,IAAA,CAAK,CAAC;AACN,IAAI,OAAO,QAAQ,CAAC,KAAK,CAAC,IAAI,EAAE,SAAS,CAAC,CAAC;AAC3C,CAAC,CAAC;AACF;AACA,SAAS,MAAM,CAAC,CAAC,EAAE,CAAC,EAAE;AACtB,IAAI,IAAI,CAAC,GAAG,EAAE,CAAC;AACf,IAAI,KAAK,IAAI,CAAC,IAAI,CAAC,EAAE,IAAI,MAAM,CAAC,SAAS,CAAC,cAAc,CAAC,IAAI,CAAC,CAAC,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,GAAG,CAAC;AACvF,QAAQ,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;AACpB,IAAI,IAAI,CAAC,IAAI,IAAI,IAAI,OAAO,MAAM,CAAC,qBAAqB,KAAK,UAAU;AACvE,QAAQ,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,MAAM,CAAC,qBAAqB,CAAC,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,IAAI,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC;AACvG,YAAY,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;AAC9B,IAAI,OAAO,CAAC,CAAC;AACb;;AAEA,IAAI,OAAO,GAAGC,qBAAA,EAAyB,CAAC;AACxC;AACA;AACA;AACA;AACA;AACA;AACA,IAAI,cAAc,GAAG,UAAU,CAAC,EAAE;AAClC,IAAI,OAAO,CAAC,CAAC,IAAI,KAAK,cAAc,IAAI,OAAO,CAAC,CAAC,EAAE,KAAK,QAAQ,IAAI,OAAO,CAAC,CAAC,OAAO,KAAK,QAAQ,CAAC;AAClG,CAAC,CAAC;AACF;AACA;AACA;AACA,IAAI,WAAW,GAAG,UAAU,IAAI,EAAE,EAAE,OAAO,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,EAAE,CAAC;AAClE,IAAI,YAAY,GAAG,UAAU,IAAI,EAAE;AACnC,IAAI,OAAO,OAAO,IAAI,KAAK,QAAQ,IAAI,IAAI,KAAK,IAAI,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC;AAC3E,CAAC,CAAC;AACF,IAAI,UAAU,GAAG,UAAU,IAAI,EAAE;AACjC,IAAI,QAAQ,OAAO,IAAI;AACvB,QAAQ,KAAK,QAAQ;AACrB,YAAY,OAAO,UAAU,CAAC;AAC9B,QAAQ,KAAK,QAAQ;AACrB,YAAY,OAAO,UAAU,CAAC;AAC9B,QAAQ,KAAK,SAAS;AACtB,YAAY,OAAO,WAAW,CAAC;AAC/B,QAAQ,KAAK,WAAW;AACxB,YAAY,OAAO,WAAW,CAAC;AAC/B,QAAQ,KAAK,QAAQ;AACrB,YAAY,IAAI,IAAI,YAAY,KAAK,EAAE;AACvC,gBAAgB,OAAO,UAAU,CAAC;AAClC,YAAA,CAAa;AACb,iBAAiB,IAAI,IAAI,KAAK,IAAI,EAAE;AACpC,gBAAgB,OAAO,MAAM,CAAC;AAC9B,YAAA,CAAa;AACb,iBAAiB;AACjB,gBAAgB,OAAO,WAAW,CAAC;AACnC,YAAA,CAAa;AACb,QAAQ;AACR,YAAY,OAAO,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC;AACxC,KAAK;AACL,CAAC,CAAC;AACF,IAAI,WAAW,GAAG,UAAU,QAAQ,EAAE,GAAG,EAAE;AAC3C,IAAI,OAAO,WAAW,GAAG,QAAQ,GAAG,QAAQ,GAAG,UAAU,CAAC,GAAG,CAAC,CAAC;AAC/D,CAAC,CAAC;AACF,IAAI,SAAS,GAAG,UAAU,KAAK,EAAE;AACjC,IAAI,OAAO,KAAK,CAAC,GAAG,CAAC,UAAU,IAAI,EAAE,EAAE,QAAQ,OAAO,IAAI,KAAK,QAAQ,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,EAAE,CAAA,CAAE,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;AACtH,CAAC,CAAC;AACF,IAAI,SAAS,GAAG,UAAU,KAAK,EAAE,EAAE,EAAE;AACrC,IAAI,IAAI,EAAE,GAAG,EAAE,CAAC,EAAE,EAAE,IAAI,GAAG,MAAM,CAAC,EAAE,EAAE,CAAC,IAAI,CAAC,CAAC,CAAC;AAC9C,IAAI,QAAQ,QAAQ,CAAC,EAAE,EAAE,EAAE,KAAK,IAAI,EAAE,IAAI,EAAE,CAAC,EAAE,EAAE,IAAI,CAAC,EAAE;AACxD,CAAC,CAAC;AACF;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,IAAI,OAAO,kBAAkB,YAAY;AACzC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,IAAI,SAAS,OAAO,CAAC,MAAM,EAAE;AAC7B,QAAQ,IAAI,KAAK,GAAG,IAAI,CAAC;AACzB,QAAQ,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC;AAC7B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,QAAQ,IAAI,CAAC,GAAG,GAAG,UAAU,IAAI,EAAE;AACnC,YAAY,OAAO,QAAQ,CAAC,UAAU,KAAK,EAAE,EAAE,QAAQ;AACvD,gBAAgB,IAAI,EAAE,cAAc;AACpC,gBAAgB,KAAK,EAAE,IAAI;AAC3B,gBAAgB,EAAE,EAAE,OAAO,IAAI,KAAK,CAAC,EAAE,IAAI,EAAE,CAAC;AAC9C,gBAAgB,OAAO,EAAE,KAAK,CAAC,OAAO,IAAI,EAAE;AAC5C,aAAa,EAAE,CAAA,CAAE,EAAE,KAAK,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC;AACvC,QAAA,CAAS,CAAC;AACV;AACA;AACA;AACA,QAAQ,IAAI,CAAC,UAAU,GAAG,UAAU,IAAI,EAAE,EAAE,OAAO,SAAS,CAAC,KAAK,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC;AACjF;AACA;AACA;AACA;AACA,QAAQ,IAAI,CAAC,gBAAgB,GAAG,UAAU,IAAI,EAAE,EAAE,OAAO,aAAa,CAAC,KAAK,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC;AAC3F;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,QAAQ,IAAI,CAAC,GAAG,GAAG,UAAU,CAAC,EAAE;AAChC,YAAY,OAAO,IAAI,OAAO,CAAC,UAAU,IAAI,EAAE,EAAE,OAAO,GAAG,CAAC,CAAC,EAAE,KAAK,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,CAAA,CAAE,CAAC,CAAC;AACvF,QAAA,CAAS,CAAC;AACV;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,QAAQ,IAAI,CAAC,OAAO,GAAG,UAAU,CAAC,EAAE;AACpC,YAAY,OAAO,IAAI,OAAO,CAAC,UAAU,IAAI,EAAE;AAC/C,gBAAgB,OAAO,OAAO,CAAC,UAAU,KAAK,EAAE,EAAE,OAAO,CAAC,CAAC,KAAK,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,CAAA,CAAE,EAAE,KAAK,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC;AACvG,YAAA,CAAa,CAAC,CAAC;AACf,QAAA,CAAS,CAAC;AACV;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,QAAQ,IAAI,CAAC,KAAK,GAAG,UAAU,IAAI,EAAE,YAAY,EAAE;AACnD,YAAY,OAAO,KAAK,CAAC,OAAO,CAAC,UAAU,KAAK,EAAE,EAAE,QAAQ,IAAI,CAAC,KAAK,CAAC,GAAG,OAAO,CAAC,OAAO,CAAC,KAAK,CAAC,GAAG,OAAO,CAAC,IAAI,CAAC,YAAY,CAAC,EAAE,CAAA,CAAE,CAAC,CAAC;AACnI,QAAA,CAAS,CAAC;AACV,IAAA,CAAK;AACL;AACA;AACA;AACA,IAAI,OAAO,CAAC,MAAM,GAAG,YAAY;AACjC,QAAQ,OAAO,IAAI,OAAO,CAAC,UAAU,IAAI,EAAE;AAC3C,YAAY,OAAO,OAAO,IAAI,KAAK,QAAQ;AAC3C,kBAAkB,EAAE,CAAC,IAAI,CAAC;AAC1B,kBAAkB,GAAG,CAAC,EAAE,OAAO,EAAE,WAAW,CAAC,UAAU,EAAE,IAAI,CAAC,EAAE,CAAC,CAAC;AAClE,QAAA,CAAS,CAAC,CAAC;AACX,IAAA,CAAK,CAAC;AACN;AACA;AACA;AACA,IAAI,OAAO,CAAC,MAAM,GAAG,YAAY;AACjC,QAAQ,OAAO,IAAI,OAAO,CAAC,UAAU,IAAI,EAAE;AAC3C,YAAY,OAAO,OAAO,IAAI,KAAK,QAAQ;AAC3C,kBAAkB,EAAE,CAAC,IAAI,CAAC;AAC1B,kBAAkB,GAAG,CAAC,EAAE,OAAO,EAAE,WAAW,CAAC,UAAU,EAAE,IAAI,CAAC,EAAE,CAAC,CAAC;AAClE,QAAA,CAAS,CAAC,CAAC;AACX,IAAA,CAAK,CAAC;AACN;AACA;AACA;AACA,IAAI,OAAO,CAAC,OAAO,GAAG,YAAY;AAClC,QAAQ,OAAO,IAAI,OAAO,CAAC,UAAU,IAAI,EAAE;AAC3C,YAAY,OAAO,OAAO,IAAI,KAAK,SAAS;AAC5C,kBAAkB,EAAE,CAAC,IAAI,CAAC;AAC1B,kBAAkB,GAAG,CAAC,EAAE,OAAO,EAAE,WAAW,CAAC,WAAW,EAAE,IAAI,CAAC,EAAE,CAAC,CAAC;AACnE,QAAA,CAAS,CAAC,CAAC;AACX,IAAA,CAAK,CAAC;AACN,IAAI,OAAO,CAAC,QAAQ,GAAG,UAAU,KAAK,EAAE;AACxC,QAAQ,OAAO,IAAI,OAAO,CAAC,UAAU,IAAI,EAAE;AAC3C,YAAY,OAAO,OAAO,CAAC,IAAI,EAAE,KAAK,CAAC;AACvC,kBAAkB,EAAE,CAAC,KAAK,CAAC;AAC3B,kBAAkB,GAAG,CAAC,EAAE,OAAO,EAAE,WAAW,GAAG,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,GAAG,QAAQ,GAAG,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;AAC1G,QAAA,CAAS,CAAC,CAAC;AACX,IAAA,CAAK,CAAC;AACN,IAAI,OAAO,CAAC,MAAM,GAAG,UAAU,QAAQ,EAAE;AACzC,QAAQ,OAAO,IAAI,OAAO,CAAC,UAAU,IAAI,EAAE;AAC3C,YAAY,IAAI,YAAY,CAAC,IAAI,CAAC,IAAI,QAAQ,EAAE;AAChD,gBAAgB,IAAI,GAAG,GAAG,EAAE,CAAC;AAC7B,gBAAgB,KAAK,IAAI,GAAG,IAAI,QAAQ,EAAE;AAC1C,oBAAoB,IAAI,QAAQ,CAAC,cAAc,CAAC,GAAG,CAAC,EAAE;AACtD,wBAAwB,IAAI,CAAC,GAAG,QAAQ,CAAC,GAAG,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC;AAChE,wBAAwB,IAAI,CAAC,CAAC,EAAE,KAAK,IAAI,EAAE;AAC3C;AACA,4BAA4B,IAAI,CAAC,CAAC,MAAM,KAAK,SAAS,EAAE;AACxD,gCAAgC,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,MAAM,CAAC;AACpD,4BAAA,CAA6B;AAC7B,wBAAA,CAAyB;AACzB,6BAA6B,IAAI,IAAI,CAAC,GAAG,CAAC,KAAK,SAAS,EAAE;AAC1D,4BAA4B,OAAO,GAAG,CAAC,EAAE,OAAO,EAAE,WAAW,GAAG,GAAG,GAAG,mCAAmC,EAAE,CAAC,CAAC;AAC7G,wBAAA,CAAyB;AACzB,6BAA6B;AAC7B,4BAA4B,OAAO,GAAG,CAAC,SAAS,CAAC,GAAG,GAAG,GAAG,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC;AACtE,wBAAA,CAAyB;AACzB,oBAAA,CAAqB;AACrB,gBAAA,CAAiB;AACjB,gBAAgB,OAAO,EAAE,CAAC,GAAG,CAAC,CAAC;AAC/B,YAAA,CAAa;AACb,iBAAiB,IAAI,YAAY,CAAC,IAAI,CAAC,EAAE;AACzC,gBAAgB,OAAO,EAAE,CAAC,IAAI,CAAC,CAAC;AAChC,YAAA,CAAa;AACb,iBAAiB;AACjB,gBAAgB,OAAO,GAAG,CAAC,EAAE,OAAO,EAAE,WAAW,CAAC,WAAW,EAAE,IAAI,CAAC,EAAE,CAAC,CAAC;AACxE,YAAA,CAAa;AACb,QAAA,CAAS,CAAC,CAAC;AACX,IAAA,CAAK,CAAC;AACN,IAAI,OAAO,CAAC,KAAK,GAAG,UAAU,OAAO,EAAE;AACvC,QAAQ,OAAO,IAAI,OAAO,CAAC,UAAU,IAAI,EAAE;AAC3C,YAAY,IAAI,WAAW,CAAC,IAAI,CAAC,IAAI,OAAO,EAAE;AAC9C,gBAAgB,IAAI,aAAa,GAAG,UAAU,CAAC,EAAE,CAAC,EAAE;AACpD,oBAAoB,OAAO,QAAQ,CAAC,UAAU,MAAM,EAAE,EAAE,OAAO,SAAS,CAAC,GAAG,GAAG,CAAC,GAAG,GAAG,EAAE,MAAM,CAAC,CAAC,CAAA,CAAE,EAAE,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC;AACvH,gBAAA,CAAiB,CAAC;AAClB,gBAAgB,OAAO,IAAI,CAAC,MAAM,CAAC,UAAU,GAAG,EAAE,CAAC,EAAE,CAAC,EAAE;AACxD,oBAAoB,OAAO,IAAI,CAAC,UAAU,GAAG,EAAE,MAAM,EAAE,EAAE,OAAO,GAAG,CAAC,MAAM,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAA,CAAE,EAAE,GAAG,EAAE,aAAa,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;AACnH,gBAAA,CAAiB,EAAE,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC;AAC3B,YAAA,CAAa;AACb,iBAAiB,IAAI,WAAW,CAAC,IAAI,CAAC,EAAE;AACxC,gBAAgB,OAAO,EAAE,CAAC,IAAI,CAAC,CAAC;AAChC,YAAA,CAAa;AACb,iBAAiB;AACjB,gBAAgB,OAAO,GAAG,CAAC,EAAE,OAAO,EAAE,WAAW,CAAC,UAAU,EAAE,IAAI,CAAC,EAAE,CAAC,CAAC;AACvE,YAAA,CAAa;AACb,QAAA,CAAS,CAAC,CAAC;AACX,IAAA,CAAK,CAAC;AACN,IAAI,OAAO,CAAC,KAAK,GAAG,UAAU,QAAQ,EAAE;AACxC,QAAQ,OAAO,IAAI,OAAO,CAAC,UAAU,IAAI,EAAE;AAC3C,YAAY,IAAI,WAAW,CAAC,IAAI,CAAC,EAAE;AACnC,gBAAgB,IAAI,IAAI,CAAC,MAAM,KAAK,QAAQ,CAAC,MAAM,EAAE;AACrD,oBAAoB,OAAO,GAAG,CAAC;AAC/B,wBAAwB,OAAO,EAAE,6BAA6B,GAAG,QAAQ,CAAC,MAAM,GAAG,sBAAsB,GAAG,IAAI,CAAC,MAAM;AACvH,qBAAqB,CAAC,CAAC;AACvB,gBAAA,CAAiB;AACjB,gBAAgB,IAAI,MAAM,GAAG,EAAE,CAAC;AAChC,gBAAgB,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,QAAQ,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;AAC1D,oBAAoB,IAAI,GAAG,GAAG,QAAQ,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC;AAC1D,oBAAoB,IAAI,GAAG,CAAC,EAAE,EAAE;AAChC,wBAAwB,MAAM,CAAC,CAAC,CAAC,GAAG,GAAG,CAAC,MAAM,CAAC;AAC/C,oBAAA,CAAqB;AACrB,yBAAyB;AACzB,wBAAwB,OAAO,GAAG,CAAC,SAAS,CAAC,GAAG,GAAG,CAAC,GAAG,GAAG,EAAE,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC;AACxE,oBAAA,CAAqB;AACrB,gBAAA,CAAiB;AACjB,gBAAgB,OAAO,EAAE,CAAC,MAAM,CAAC,CAAC;AAClC,YAAA,CAAa;AACb,iBAAiB;AACjB,gBAAgB,OAAO,GAAG,CAAC,EAAE,OAAO,EAAE,WAAW,CAAC,oBAAoB,GAAG,QAAQ,CAAC,MAAM,EAAE,IAAI,CAAC,EAAE,CAAC,CAAC;AACnG,YAAA,CAAa;AACb,QAAA,CAAS,CAAC,CAAC;AACX,IAAA,CAAK,CAAC;AACN,IAAI,OAAO,CAAC,KAAK,GAAG,UAAU,EAAE,EAAE,EAAE,EAAE;AACtC,QAAQ,IAAI,QAAQ,GAAG,EAAE,CAAC;AAC1B,QAAQ,KAAK,IAAI,EAAE,GAAG,CAAC,EAAE,EAAE,GAAG,SAAS,CAAC,MAAM,EAAE,EAAE,EAAE,EAAE;AACtD,YAAY,QAAQ,CAAC,EAAE,GAAG,CAAC,CAAC,GAAG,SAAS,CAAC,EAAE,CAAC,CAAC;AAC7C,QAAA,CAAS;AACT,QAAQ,OAAO,OAAO,CAAC,KAAK,CAAC,KAAK,CAAC,OAAO,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC;AACvE,IAAA,CAAK,CAAC;AACN,IAAI,OAAO,CAAC,YAAY,GAAG,UAAU,EAAE,EAAE,EAAE,EAAE;AAC7C,QAAQ,IAAI,EAAE,GAAG,EAAE,CAAC;AACpB,QAAQ,KAAK,IAAI,EAAE,GAAG,CAAC,EAAE,EAAE,GAAG,SAAS,CAAC,MAAM,EAAE,EAAE,EAAE,EAAE;AACtD,YAAY,EAAE,CAAC,EAAE,GAAG,CAAC,CAAC,GAAG,SAAS,CAAC,EAAE,CAAC,CAAC;AACvC,QAAA,CAAS;AACT,QAAQ,OAAO,IAAI,OAAO,CAAC,UAAU,IAAI,EAAE;AAC3C,YAAY,OAAO,CAAC,EAAE,EAAE,EAAE,CAAC,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC,MAAM,CAAC,UAAU,GAAG,EAAE,OAAO,EAAE,EAAE,OAAO,IAAI,CAAC,MAAM,CAAC,MAAM,EAAE,GAAG,EAAE,OAAO,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC;AAC1I,QAAA,CAAS,CAAC,CAAC;AACX,IAAA,CAAK,CAAC;AACN;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,IAAI,OAAO,CAAC,OAAO,GAAG,YAAY,EAAE,OAAO,IAAI,OAAO,CAAC,UAAU,IAAI,EAAE,EAAE,OAAO,EAAE,CAAC,IAAI,CAAC,CAAC,CAAA,CAAE,CAAC,CAAC,CAAA,CAAE,CAAC;AAChG;AACA;AACA;AACA;AACA,IAAI,OAAO,CAAC,WAAW,GAAG,YAAY;AACtC,QAAQ,OAAO,IAAI,OAAO,CAAC,UAAU,IAAI,EAAE,EAAE,OAAO,EAAE,CAAC,IAAI,CAAC,CAAC,CAAA,CAAE,CAAC,CAAC;AACjE,IAAA,CAAK,CAAC;AACN;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,IAAI,OAAO,CAAC,IAAI,GAAG,UAAU,OAAO,EAAE;AACtC,QAAQ,OAAO,IAAI,OAAO,CAAC,UAAU,IAAI,EAAE;AAC3C,YAAY,IAAI,YAAY,CAAC,IAAI,CAAC,EAAE;AACpC,gBAAgB,IAAI,GAAG,GAAG,EAAE,CAAC;AAC7B,gBAAgB,KAAK,IAAI,GAAG,IAAI,IAAI,EAAE;AACtC,oBAAoB,IAAI,IAAI,CAAC,cAAc,CAAC,GAAG,CAAC,EAAE;AAClD,wBAAwB,IAAI,CAAC,GAAG,OAAO,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC;AAC1D,wBAAwB,IAAI,CAAC,CAAC,EAAE,KAAK,IAAI,EAAE;AAC3C,4BAA4B,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,MAAM,CAAC;AAChD,wBAAA,CAAyB;AACzB,6BAA6B;AAC7B,4BAA4B,OAAO,GAAG,CAAC,SAAS,CAAC,GAAG,GAAG,GAAG,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC;AACtE,wBAAA,CAAyB;AACzB,oBAAA,CAAqB;AACrB,gBAAA,CAAiB;AACjB,gBAAgB,OAAO,EAAE,CAAC,GAAG,CAAC,CAAC;AAC/B,YAAA,CAAa;AACb,iBAAiB;AACjB,gBAAgB,OAAO,GAAG,CAAC,EAAE,OAAO,EAAE,WAAW,CAAC,WAAW,EAAE,IAAI,CAAC,EAAE,CAAC,CAAC;AACxE,YAAA,CAAa;AACb,QAAA,CAAS,CAAC,CAAC;AACX,IAAA,CAAK,CAAC;AACN;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,IAAI,OAAO,CAAC,QAAQ,GAAG,UAAU,OAAO,EAAE;AAC1C,QAAQ,OAAO,IAAI,OAAO,CAAC,UAAU,IAAI,EAAE,EAAE,QAAQ,IAAI,KAAK,SAAS,GAAG,EAAE,CAAC,SAAS,CAAC,GAAG,OAAO,CAAC,MAAM,CAAC,IAAI,CAAC,EAAE,CAAA,CAAE,CAAC,CAAC;AACpH,IAAA,CAAK,CAAC;AACN;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,IAAI,OAAO,CAAC,KAAK,GAAG,YAAY;AAChC,QAAQ,IAAI,QAAQ,GAAG,EAAE,CAAC;AAC1B,QAAQ,KAAK,IAAI,EAAE,GAAG,CAAC,EAAE,EAAE,GAAG,SAAS,CAAC,MAAM,EAAE,EAAE,EAAE,EAAE;AACtD,YAAY,QAAQ,CAAC,EAAE,CAAC,GAAG,SAAS,CAAC,EAAE,CAAC,CAAC;AACzC,QAAA,CAAS;AACT,QAAQ,OAAO,IAAI,OAAO,CAAC,UAAU,IAAI,EAAE;AAC3C,YAAY,IAAI,MAAM,GAAG,EAAE,CAAC;AAC5B,YAAY,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,QAAQ,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;AACtD,gBAAgB,IAAI,CAAC,GAAG,QAAQ,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;AACjD,gBAAgB,IAAI,CAAC,CAAC,EAAE,KAAK,IAAI,EAAE;AACnC,oBAAoB,OAAO,CAAC,CAAC;AAC7B,gBAAA,CAAiB;AACjB,qBAAqB;AACrB,oBAAoB,MAAM,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,KAAK,CAAC;AACxC,gBAAA,CAAiB;AACjB,YAAA,CAAa;AACb,YAAY,IAAI,UAAU,GAAG,MAAM;AACnC,iBAAiB,GAAG,CAAC,UAAU,KAAK,EAAE,EAAE,OAAO,UAAU,IAAI,KAAK,CAAC,EAAE,IAAI,EAAE,CAAC,GAAG,IAAI,GAAG,KAAK,CAAC,OAAO,CAAC,CAAA,CAAE,CAAC;AACvG,iBAAiB,IAAI,CAAC,MAAM,CAAC,CAAC;AAC9B,YAAY,OAAO,GAAG,CAAC;AACvB,gBAAgB,OAAO,EAAE,mEAAmE,GAAG,UAAU,GAAG,KAAK;AACjH,aAAa,CAAC,CAAC;AACf,QAAA,CAAS,CAAC,CAAC;AACX,IAAA,CAAK,CAAC;AACN;AACA;AACA;AACA;AACA,IAAI,OAAO,CAAC,WAAW,GAAG,UAAU,YAAY,EAAE,OAAO,EAAE;AAC3D,QAAQ,OAAO,IAAI,OAAO,CAAC,UAAU,IAAI,EAAE;AAC3C,YAAY,OAAO,EAAE,CAAC,WAAW,CAAC,YAAY,EAAE,OAAO,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;AACvE,QAAA,CAAS,CAAC,CAAC;AACX,IAAA,CAAK,CAAC;AACN;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,IAAI,OAAO,CAAC,OAAO,GAAG,UAAU,KAAK,EAAE,OAAO,EAAE;AAChD,QAAQ,OAAO,IAAI,OAAO,CAAC,UAAU,IAAI,EAAE;AAC3C,YAAY,IAAI,UAAU,GAAG,IAAI,CAAC;AAClC,YAAY,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,KAAK,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;AACnD,gBAAgB,IAAI,UAAU,KAAK,SAAS,EAAE;AAC9C,oBAAoB,OAAO,GAAG,CAAC;AAC/B,wBAAwB,EAAE,EAAE,SAAS,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC;AAC5D,wBAAwB,OAAO,EAAE,qBAAqB;AACtD,qBAAqB,CAAC,CAAC;AACvB,gBAAA,CAAiB;AACjB,qBAAqB,IAAI,OAAO,KAAK,CAAC,CAAC,CAAC,KAAK,QAAQ,IAAI,CAAC,YAAY,CAAC,UAAU,CAAC,EAAE;AACpF,oBAAoB,OAAO,GAAG,CAAC;AAC/B,wBAAwB,EAAE,EAAE,SAAS,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC;AAC5D,wBAAwB,OAAO,EAAE,WAAW,CAAC,WAAW,EAAE,UAAU,CAAC;AACrE,qBAAqB,CAAC,CAAC;AACvB,gBAAA,CAAiB;AACjB,qBAAqB,IAAI,OAAO,KAAK,CAAC,CAAC,CAAC,KAAK,QAAQ,IAAI,CAAC,WAAW,CAAC,UAAU,CAAC,EAAE;AACnF,oBAAoB,OAAO,GAAG,CAAC;AAC/B,wBAAwB,EAAE,EAAE,SAAS,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC;AAC5D,wBAAwB,OAAO,EAAE,WAAW,CAAC,UAAU,EAAE,UAAU,CAAC;AACpE,qBAAqB,CAAC,CAAC;AACvB,gBAAA,CAAiB;AACjB,qBAAqB;AACrB,oBAAoB,UAAU,GAAG,UAAU,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC;AACtD,gBAAA,CAAiB;AACjB,YAAA,CAAa;AACb,YAAY,OAAO,QAAQ,CAAC,UAAU,KAAK,EAAE;AAC7C,gBAAgB,OAAO,UAAU,KAAK,SAAS;AAC/C,sBAAsB,EAAE,EAAE,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,OAAO,EAAE,qBAAqB,EAAE;AAC9E,sBAAsB,SAAS,CAAC,SAAS,CAAC,KAAK,CAAC,EAAE,KAAK,CAAC,CAAC;AACzD,YAAA,CAAa,EAAE,OAAO,CAAC,MAAM,CAAC,UAAU,CAAC,CAAC,CAAC;AAC3C,QAAA,CAAS,CAAC,CAAC;AACX,IAAA,CAAK,CAAC;AACN;AACA;AACA;AACA,IAAI,OAAO,CAAC,OAAO,GAAG,UAAU,UAAU,EAAE;AAC5C,QAAQ,OAAO,IAAI,OAAO,CAAC,UAAU,IAAI,EAAE,EAAE,OAAO,EAAE,CAAC,UAAU,CAAC,CAAC,CAAA,CAAE,CAAC,CAAC;AACvE,IAAA,CAAK,CAAC;AACN;AACA;AACA;AACA,IAAI,OAAO,CAAC,IAAI,GAAG,UAAU,YAAY,EAAE;AAC3C,QAAQ,OAAO,IAAI,OAAO,CAAC,UAAU,IAAI,EAAE,EAAE,OAAO,GAAG,CAAC,EAAE,OAAO,EAAE,YAAY,EAAE,CAAC,CAAC,CAAA,CAAE,CAAC,CAAC;AACvF,IAAA,CAAK,CAAC;AACN;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,IAAI,OAAO,CAAC,IAAI,GAAG,UAAU,SAAS,EAAE;AACxC,QAAQ,OAAO,IAAI,OAAO,CAAC,UAAU,IAAI,EAAE,EAAE,OAAO,SAAS,EAAE,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,CAAA,CAAE,CAAC,CAAC;AACjF,IAAA,CAAK,CAAC;AACN,IAAI,OAAO,OAAO,CAAC;AACnB,CAAC,EAAE,CAAC;;AAEJ;AACA;AACA,IAAI,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC;AAC5B;AACA,IAAI,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC;AAC5B;AACA,IAAI,OAAO,GAAG,OAAO,CAAC,OAAO,CAAC;AAC9B;AACA,IAAI,OAAO,GAAG,OAAO,CAAC,OAAO,CAAC;AAC9B;AACA,IAAI,WAAW,GAAG,OAAO,CAAC,WAAW,CAAC;AACtC;AACA,IAAI,QAAQ,GAAG,OAAO,CAAC,QAAQ,CAAC;AAChC;AACA,IAAI,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC;AAC5B;AACA,IAAI,KAAK,GAAG,OAAO,CAAC,KAAK,CAAC;AAC1B;AACA,IAAI,KAAK,GAAG,OAAO,CAAC,KAAK,CAAC;AAC1B;AACA,IAAI,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC;AACxB;AACA,IAAI,QAAQ,GAAG,OAAO,CAAC,QAAQ,CAAC;AAChC;AACA,IAAI,KAAK,GAAG,OAAO,CAAC,KAAK,CAAC;AAC1B;AACA,IAAI,KAAK,GAAG,OAAO,CAAC,KAAK,CAAC;AAC1B;AACA,IAAI,YAAY,GAAG,OAAO,CAAC,YAAY,CAAC;AACxC;AACA,IAAI,aAAa,GAAG,OAAO,CAAC,WAAW,CAAC;AACxC;AACA,IAAI,OAAO,GAAG,OAAO,CAAC,OAAO,CAAC;AAC9B;AACA,IAAI,OAAO,GAAG,OAAO,CAAC,OAAO,CAAC;AAC9B;AACA,IAAI,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC;AACxB;AACA,IAAI,IAAI,GAAG,OAAO,CAAC,IAAI;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;ECtwBvB,IAAI,QAAQ,GAAG,CAACC,KAAI,IAAIA,KAAI,CAAC,QAAQ,KAAK,YAAY;MAClD,QAAQ,GAAG,MAAM,CAAC,MAAM,IAAI,SAAS,CAAC,EAAE;UACpC,KAAK,IAAI,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,SAAS,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE;AAC7D,cAAY,CAAC,GAAG,SAAS,CAAC,CAAC,CAAC;AAC5B,cAAY,KAAK,IAAI,CAAC,IAAI,CAAC,EAAE,IAAI,MAAM,CAAC,SAAS,CAAC,cAAc,CAAC,IAAI,CAAC,CAAC,EAAE,CAAC,CAAC;kBAC3D,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;AAC3B,UAAA;AACA,UAAQ,OAAO,CAAC;MAChB,CAAK;MACD,OAAO,QAAQ,CAAC,KAAK,CAAC,IAAI,EAAE,SAAS,CAAC;EAC1C,CAAC;EACD,IAAI,eAAe,GAAG,CAACA,KAAI,IAAIA,KAAI,CAAC,eAAe,MAAM,MAAM,CAAC,MAAM,IAAI,SAAS,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE;AAChG,MAAI,IAAI,EAAE,KAAK,SAAS,EAAE,EAAE,GAAG,CAAC;MAC5B,IAAI,IAAI,GAAG,MAAM,CAAC,wBAAwB,CAAC,CAAC,EAAE,CAAC,CAAC;MAChD,IAAI,CAAC,IAAI,KAAK,KAAK,IAAI,IAAI,GAAG,CAAC,CAAC,CAAC,UAAU,GAAG,IAAI,CAAC,QAAQ,IAAI,IAAI,CAAC,YAAY,CAAC,EAAE;AACvF,QAAM,IAAI,GAAG,EAAE,UAAU,EAAE,IAAI,EAAE,GAAG,EAAE,WAAW,EAAE,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,EAAE;AACnE,MAAA;MACI,MAAM,CAAC,cAAc,CAAC,CAAC,EAAE,EAAE,EAAE,IAAI,CAAC;EACtC,CAAC,KAAK,SAAS,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE;AAC5B,MAAI,IAAI,EAAE,KAAK,SAAS,EAAE,EAAE,GAAG,CAAC;MAC5B,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;AAChB,EAAA,CAAC,CAAC,CAAC;AACH,EAAA,IAAI,kBAAkB,GAAG,CAACA,KAAI,IAAIA,KAAI,CAAC,kBAAkB,MAAM,MAAM,CAAC,MAAM,IAAI,SAAS,CAAC,EAAE,CAAC,EAAE;AAC/F,MAAI,MAAM,CAAC,cAAc,CAAC,CAAC,EAAE,SAAS,EAAE,EAAE,UAAU,EAAE,IAAI,EAAE,KAAK,EAAE,CAAC,EAAE,CAAC;AACvE,EAAA,CAAC,IAAI,SAAS,CAAC,EAAE,CAAC,EAAE;AACpB,MAAI,CAAC,CAAC,SAAS,CAAC,GAAG,CAAC;AACpB,EAAA,CAAC,CAAC;EACF,IAAI,YAAY,GAAG,CAACA,KAAI,IAAIA,KAAI,CAAC,YAAY,KAAK,CAAC,YAAY;AAC/D,MAAI,IAAI,OAAO,GAAG,SAAS,CAAC,EAAE;UACtB,OAAO,GAAG,MAAM,CAAC,mBAAmB,IAAI,UAAU,CAAC,EAAE;cACjD,IAAI,EAAE,GAAG,EAAE;cACX,KAAK,IAAI,CAAC,IAAI,CAAC,EAAE,IAAI,MAAM,CAAC,SAAS,CAAC,cAAc,CAAC,IAAI,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,EAAE,CAAC,MAAM,CAAC,GAAG,CAAC;AAC9F,cAAY,OAAO,EAAE;UACrB,CAAS;AACT,UAAQ,OAAO,OAAO,CAAC,CAAC,CAAC;MACzB,CAAK;MACD,OAAO,UAAU,GAAG,EAAE;UAClB,IAAI,GAAG,IAAI,GAAG,CAAC,UAAU,EAAE,OAAO,GAAG;UACrC,IAAI,MAAM,GAAG,EAAE;UACf,IAAI,GAAG,IAAI,IAAI,EAAE,KAAK,IAAI,CAAC,GAAG,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC,KAAK,SAAS,EAAE,eAAe,CAAC,MAAM,EAAE,GAAG,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC;AACxI,UAAQ,kBAAkB,CAAC,MAAM,EAAE,GAAG,CAAC;AACvC,UAAQ,OAAO,MAAM;MACrB,CAAK;AACL,EAAA,CAAC,GAAG;AACJ,EAAA,IAAI,WAAW,GAAG,CAACA,KAAI,IAAIA,KAAI,CAAC,WAAW,KAAK,UAAU,OAAO,EAAE,IAAI,EAAE;AACzE,MAAI,IAAI,CAAC,GAAG,EAAE,KAAK,EAAE,CAAC,EAAE,IAAI,EAAE,WAAW,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,EAAE,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,CAAA,CAAE,EAAE,IAAI,EAAE,EAAE,EAAE,GAAG,EAAE,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,GAAG,MAAM,CAAC,MAAM,CAAC,CAAC,OAAO,QAAQ,KAAK,UAAU,GAAG,QAAQ,GAAG,MAAM,EAAE,SAAS,CAAC;MAChM,OAAO,CAAC,CAAC,IAAI,GAAG,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,OAAO,CAAC,GAAG,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,QAAQ,CAAC,GAAG,IAAI,CAAC,CAAC,CAAC,EAAE,OAAO,MAAM,KAAK,UAAU,KAAK,CAAC,CAAC,MAAM,CAAC,QAAQ,CAAC,GAAG,WAAW,EAAE,OAAO,IAAI,CAAC,CAAA,CAAE,CAAC,EAAE,CAAC;MAC3J,SAAS,IAAI,CAAC,CAAC,EAAE,EAAE,OAAO,UAAU,CAAC,EAAE,EAAE,OAAO,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAA,CAAE,CAAC,CAAA;AACpE,MAAI,SAAS,IAAI,CAAC,EAAE,EAAE;UACd,IAAI,CAAC,EAAE,MAAM,IAAI,SAAS,CAAC,iCAAiC,CAAC;UAC7D,OAAO,CAAC,KAAK,CAAC,GAAG,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,IAAI;AACtD,cAAY,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,KAAK,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,QAAQ,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,GAAG,CAAC,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,EAAE,IAAI,EAAE,OAAO,CAAC;cAC5J,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,KAAK,CAAC;AACnD,cAAY,QAAQ,EAAE,CAAC,CAAC,CAAC;kBACT,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,EAAE,CAAC,GAAG,EAAE,CAAC,CAAC;kBACxB,KAAK,CAAC,EAAE,CAAC,CAAC,KAAK,EAAE,CAAC,CAAC,OAAO,EAAE,KAAK,EAAE,EAAE,CAAC,CAAC,CAAC,EAAE,IAAI,EAAE,KAAK,EAAE;kBACvD,KAAK,CAAC,EAAE,CAAC,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;kBACxC,KAAK,CAAC,EAAE,EAAE,GAAG,CAAC,CAAC,GAAG,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,EAAE,CAAC,CAAC;kBACxC;sBACI,IAAI,EAAE,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,CAAC,GAAG,CAAC,CAAC,MAAM,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC,KAAK,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,SAAS,CAAA;sBAC1G,IAAI,EAAE,CAAC,CAAC,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,KAAK,GAAG,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAA;AACxG,sBAAoB,IAAI,EAAE,CAAC,CAAC,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,KAAK,GAAG,CAAC,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,KAAK,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,EAAE,CAAC,CAAC,MAAM,CAAA;AACvF,sBAAoB,IAAI,CAAC,IAAI,CAAC,CAAC,KAAK,GAAG,CAAC,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,KAAK,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,CAAC,MAAM,CAAA;sBACjE,IAAI,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,GAAG,CAAC,GAAG,EAAE;AACzC,sBAAoB,CAAC,CAAC,IAAI,CAAC,GAAG,EAAE,CAAC,CAAC;AAClC;cACY,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,CAAC,CAAC;UACtC,CAAS,CAAC,OAAO,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAA,CAAE,SAAS,EAAE,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAA;AAChE,UAAQ,IAAI,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC,EAAE,MAAM,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,EAAE,KAAK,EAAE,EAAE,CAAC,CAAC,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC,GAAG,MAAM,EAAE,IAAI,EAAE,IAAI,EAAE;AACxF,MAAA;EACA,CAAC;EACD,IAAI,eAAe,GAAG,CAACA,KAAI,IAAIA,KAAI,CAAC,eAAe,KAAK,UAAU,GAAG,EAAE;AACvE,MAAI,OAAO,CAAC,GAAG,IAAI,GAAG,CAAC,UAAU,IAAI,GAAG,GAAG,EAAE,SAAS,EAAE,GAAG,EAAE;EAC7D,CAAC;EACD,MAAM,CAAC,cAAc,CAAA,OAAA,EAAU,YAAY,EAAE,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC;AAC7D,EAAA,OAAA,CAAA,GAAA,GAAc,mBAAmB,OAAA,CAAA,OAAA,GAAkB,OAAA,CAAA,QAAA,GAAmB,qBAAqB,OAAA,CAAA,IAAA,GAAe,OAAA,CAAA,IAAA,GAAe,gBAAgB,OAAA,CAAA,IAAA,GAAe,OAAA,CAAA,IAAA,GAAe,OAAA,CAAA,OAAA,GAAkB,OAAA,CAAA,OAAA,GAAkB,cAAc,OAAA,CAAA,IAAA,GAAe,OAAA,CAAA,IAAA,GAAe,yBAAyB,OAAA,CAAA,uBAAA,GAAkC,OAAA,CAAA,gBAAA,GAA2B,MAAM;AACnV,EAAA,OAAA,CAAA,gBAAA,GAA2B,gBAAgB;AAC3C,EAAA,OAAA,CAAA,iBAAA,GAA4B,iBAAiB;AAC7C,EAAA,OAAA,CAAA,IAAA,GAAe,IAAI;AACnB,EAAA,OAAA,CAAA,QAAA,GAAmB,QAAQ;AAC3B;AACA;AACA,EAAA,IAAI,GAAG,GAAG,YAAY,CAACD,YAAyC,CAAC;AACjE,EAAA,IAAI,QAAQ,GAAG,eAAe,CAACE,2BAAiB,CAAC;AAGjD,EAAA,SAAS,gBAAgB,GAAG;AAC5B,MAAI,OAAO;AACX,UAAQ,WAAW,EAAE,UAAU,CAAC,EAAE,GAAG,EAAE;AACvC,cAAY,OAAO,GAAG;UACtB,CAAS;AACT,UAAQ,mBAAmB,EAAE,UAAU,CAAC,EAAE,GAAG,EAAE;AAC/C,cAAY,OAAO,GAAG;UACtB,CAAS;OACJ;AACL,EAAA;AACA;AACA;AACA;EACA,SAAS,gBAAgB,CAAC,QAAQ,EAAE;AAQpC,MAAI,OAAO,QAAQ,CAAC,QAAQ,CAAC,EAAE,EAAE,gBAAgB,EAAE,CAAC,EAAE,QAAQ,CAAC;AAC/D,EAAA;AACA;AACA;AACA;AACA,EAAA,SAAS,iBAAiB,CAAC,UAAU,EAAE,aAAa,EAAE,OAAO,EAAE;MAC3D,OAAO,QAAQ,CAAC,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,2CAA2C;AACrG;UACQ,OAAO,EAAE,QAAQ,CAAC,YAAY,EAAE,OAAO,aAAa,EAAE,CAAC,OAAO,CAAC,CAAA,CAAE,CAAC,EAAE,UAAU,EAAE,GAAG,CAAC,OAAO,CAAC,SAAS,CAAC,EAAE,EAAE,OAAO,CAAC;AAC1H,EAAA;AACA;AACA;AACA;EACA,IAAI,mBAAmB,GAAG,EAAE;AAC5B;AACA;AACA;AACA,EAAA,IAAI,gBAAgB,GAAG,UAAU,QAAQ,EAAE,iBAAiB,EAAE;MAC1D,IAAI,iBAAiB,KAAK,MAAM,EAAE,EAAE,iBAAiB,GAAG,EAAE,CAAC,CAAA;AAC/D,MAAI,IAAI,OAAO,GAAG,iBAAiB,CAAC,GAAG,CAAC,IAAI,OAAO,CAAC,uBAAuB,EAAE,QAAQ,CAAC,CAAC;AACvF,MAAI,IAAI,GAAG,CAAC,CAAC,QAAQ,CAAC,UAAU,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,CAAC,OAAO,CAAC,UAAU,UAAU,EAAE;AACjF,UAAQ,IAAI,UAAU,IAAI,mBAAmB,EAAE;AAC/C,cAAY,OAAO,CAAC,IAAI,CAAC,iCAAiC,CAAC,MAAM,CAAC,UAAU,EAAE,GAAG,CAAC,CAAC;AACnF,UAAA;eACa;AACb,cAAY,mBAAmB,CAAC,UAAU,CAAC,GAAG,QAAQ;AACtD,cAAY,OAAO,CAAC,KAAK,CAAC,sBAAsB,CAAC,MAAM,CAAC,UAAU,EAAE,GAAG,CAAC,CAAC;AACzE,UAAA;AACA,MAAA,CAAK,CAAC;EACN,CAAC;AACD,EAAA,OAAA,CAAA,gBAAA,GAA2B,gBAAgB;AAC3C;AACA;AACA;AACA,EAAA,IAAI,uBAAuB,GAAG,UAAU,CAAC,EAAE;MACvC,OAAO,UAAU,KAAK,EAAE;UACpB,OAAO,CAAC,KAAK,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,UAAU,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC;MACzE,CAAK;EACL,CAAC;AACD,EAAA,OAAA,CAAA,uBAAA,GAAkC,uBAAuB;AACzD;AACA;AACA;AACA,EAAA,IAAI,cAAc,GAAG,UAAU,UAAU,EAAE;AAC3C,MAAI,IAAI,QAAQ,GAAG,mBAAmB,CAAC,UAAU,CAAC;AAClD,MAAI,IAAI,QAAQ,KAAK,SAAS,EAAE;UACxB,MAAM,KAAK,CAAC,6BAA6B,CAAC,MAAM,CAAC,UAAU,EAAE,6EAA6E,CAAC,CAAC;AACpJ,MAAA;AACA,MAAI,OAAO,QAAQ;EACnB,CAAC;AACD,EAAA,OAAA,CAAA,cAAA,GAAyB,cAAc;AACvC;AACA;AACA;AACA;AACA;AACA;EACA,SAAS,IAAI,CAAC,KAAK,EAAE;MACjB,IAAI,QAAQ,GAAG,YAAY;AAC/B,UAAQ,IAAI,KAAK,GAAG,KAAK,EAAE;AAC3B,UAAQ,QAAQ,GAAG,YAAY,EAAE,OAAO,KAAK,CAAC,CAAA,CAAE;AAChD,UAAQ,OAAO,KAAK;MACpB,CAAK;AACL;AACA;AACA;AACA,MAAI,OAAO,YAAY,EAAE,OAAO,QAAQ,EAAE,CAAC,CAAA,CAAE;AAC7C,EAAA;AACA;AACA;AACA;AACA;EACA,SAAS,QAAQ,CAAC,SAAS,EAAE;MACzB,OAAO,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;AACpC,EAAA;AACA;AACA;AACA;EACA,OAAA,CAAA,IAAA,GAAe;AACf,MAAI,OAAO,EAAE,GAAG,CAAC,MAAM,CAAC,EAAE,CAAC;MACvB,MAAM,EAAE,UAAU,CAAC,EAAE,EAAE,OAAO,CAAC,CAAC,CAAA,CAAE;GACrC;AACD;AACA;AACA;EACA,OAAA,CAAA,IAAA,GAAe;AACf,MAAI,OAAO,EAAE,GAAG,CAAC,OAAO,EAAE;MACtB,MAAM,EAAE,UAAU,CAAC,EAAE,EAAE,OAAO,CAAC,CAAC,CAAA,CAAE;GACrC;AACD;AACA;AACA;EACA,OAAA,CAAA,GAAA,GAAc;AACd,MAAI,OAAO,EAAE,GAAG,CAAC,MAAM,EAAE;MACrB,MAAM,EAAE,UAAU,CAAC,EAAE,EAAE,OAAO,CAAC,CAAC,CAAA,CAAE;GACrC;AACD;AACA;AACA;AACA;AACA,EAAA,IAAI,OAAO,GAAG,UAAU,CAAC,EAAE,EAAE,QAAQ;AACrC,MAAI,OAAO,EAAE,GAAG,CAAC,MAAM,EAAE;MACrB,MAAM,EAAE,UAAU,CAAC,EAAE,EAAE,OAAO,CAAC,CAAC,CAAA,CAAE;AACtC,GAAC,EAAE,CAAA,CAAE;AACL,EAAA,OAAA,CAAA,OAAA,GAAkB,OAAO;AACzB;AACA;AACA;EACA,OAAA,CAAA,OAAA,GAAkB,IAAI,OAAO,CAAC,OAAO,EAAE,EAAE,CAAC;AAC1C;AACA;AACA;EACA,OAAA,CAAA,IAAA,GAAe;AACf,MAAI,OAAO,EAAE,GAAG,CAAC,MAAM,EAAE;MACrB,MAAM,EAAE,UAAU,CAAC,EAAE,EAAE,OAAO,CAAC,CAAC,CAAA,CAAE;GACrC;AACD;AACA;AACA;EACA,OAAA,CAAA,IAAA,GAAe;AACf,MAAI,OAAO,EAAE,GAAG,CAAC,MAAM,EAAE;MACrB,MAAM,EAAE,UAAU,CAAC,EAAE,EAAE,OAAO,CAAC,CAAC,CAAA,CAAE;GACrC;AACD;AACA;AACA;EACA,OAAA,CAAA,KAAA,GAAgB;AAChB,MAAI,OAAO,EAAE,GAAG,CAAC,MAAM,EAAE;MACrB,MAAM,EAAE,UAAU,CAAC,EAAE,EAAE,OAAO,CAAC,CAAC,CAAA,CAAE;GACrC;AACD;AACA;AACA;AACA,EAAA,IAAI,IAAI,GAAG,UAAU,CAAC,EAAE,EAAE,QAAQ;MAC9B,OAAO,EAAE,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC,OAAO,CAAC;MAC7B,MAAM,EAAE,UAAU,CAAC,EAAE,EAAE,OAAO,CAAC,CAAC,GAAG,CAAC,UAAU,OAAO,EAAE,EAAE,OAAO,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,CAAA,CAAE,CAAC,CAAC,CAAA,CAAE;AAC5F,GAAC,EAAE,CAAA,CAAE;AACL,EAAA,OAAA,CAAA,IAAA,GAAe,IAAI;AACnB;AACA;AACA;EACA,OAAA,CAAA,IAAA,GAAe;AACf,MAAI,OAAO,EAAE,GAAG,CAAC,MAAM,EAAE;MACrB,MAAM,EAAE,UAAU,CAAC,EAAE,EAAE,OAAO,CAAC,CAAC,CAAA,CAAE;GACrC;AAKD;AACA;AACA;AACA,EAAA,IAAI,UAAU,GAAG,UAAU,EAAE,EAAE,EAAE,QAAQ;AACzC,MAAI,OAAO,EAAE,GAAG,CAAC,MAAM,EAAE;MACrB,MAAM,EAAE,UAAU,CAAC,EAAE,EAAE,OAAO,CAAC,CAAC,CAAA,CAAE;AACtC,GAAC,EAAE,CAAA,CAAE;AACL,EAAA,OAAA,CAAA,UAAA,GAAqB,UAAU;AAC/B;AACA;AACA;AACA;AACA;AACA;AACA;EACA,IAAI,cAAc,kBAAkB,YAAY;AAChD,MAAI,SAAS,cAAc,CAAC,OAAO,EAAE;AACrC,UAAQ,IAAI,OAAO,YAAY,cAAc,EAAE;AAC/C,cAAY,IAAI,mBAAmB,GAAG,OAAO,CAAC,YAAY;cAC9C,IAAI,CAAC,YAAY,GAAG,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,QAAQ,CAAC,EAAE,CAAC,EAAE,GAAG,CAAC,KAAK,CAAC,CAAC,mBAAmB,CAAC,CAAC,CAAC;AAC7F,cAAY,IAAI,CAAC,MAAM,GAAG,UAAU,CAAC,EAAE;AACvC,kBAAgB,IAAI,CAAC,KAAK,IAAI,EAAE;AAChC;AACA;AACA,sBAAoB,OAAO,IAAI;AAC/B,kBAAA;uBACqB;AACrB;AACA;AACA;AACA;AACA,sBAAoB,OAAO,CAAC,CAAC,GAAG,CAAC,UAAU,MAAM,EAAE,EAAE,OAAO,OAAO,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC;AACtF,kBAAA;cACA,CAAa;AACb,UAAA;eACa;AACb;AACA;AACA,cAAY,IAAI,CAAC,YAAY,GAAG,OAAO,CAAC,OAAO;AAC/C,cAAY,IAAI,CAAC,MAAM,GAAG,UAAU,CAAC,EAAE;AACvC,kBAAgB,IAAI,CAAC,KAAK,IAAI,EAAE;AAChC;AACA;AACA;AACA;AACA;AACA,sBAAoB,OAAO,IAAI;AAC/B,kBAAA;uBACqB;AACrB,sBAAoB,OAAO,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC;AAC5C,kBAAA;cACA,CAAa;AACb,UAAA;UACQ,IAAI,CAAC,OAAO,GAAG;AACvB,eAAa,QAAQ,CAAC,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,QAAQ,CAAC,IAAI,CAAC,EAAE,IAAI,CAAC,YAAY,CAAC;AACtE,eAAa,GAAG,CAAC,UAAU,CAAC,EAAE,EAAE,QAAQ,CAAC,KAAK,SAAS,GAAG,IAAI,GAAG,CAAC,EAAE,EAAE,CAAC;AACvE,MAAA;AACA,MAAI,OAAO,cAAc;AACzB,EAAA,CAAC,EAAE,CAAC;AACJ;AACA;AACA;AACA,EAAA,IAAI,QAAQ,GAAG,UAAU,CAAC,EAAE;AAC5B,MAAI,OAAO,IAAI,cAAc,CAAC,CAAC,CAAC;EAChC,CAAC;AACD,EAAA,OAAA,CAAA,QAAA,GAAmB,QAAQ;AAC3B;AACA;AACA;AACA,EAAA,IAAI,OAAO,GAAG,UAAU,CAAC,EAAE,EAAE,QAAQ;MACjC,OAAO,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC,OAAO,CAAC;AAChC,MAAI,MAAM,EAAE,UAAU,EAAE,EAAE;UAClB,IAAI,GAAG,GAAG,EAAE;UACZ,MAAM,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,OAAO,CAAC,UAAU,CAAC,EAAE;AAC7C,cAAY,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;AACpC,UAAA,CAAS,CAAC;AACV,UAAQ,OAAO,GAAG;MAClB,CAAK;AACL,GAAC,EAAE,CAAA,CAAE;AACL,EAAA,OAAA,CAAA,OAAA,GAAkB,OAAO;EACzB,SAAS,EAAE,CAAC,GAAG,EAAE;AACjB,MAAI,IAAI,CAAC;AACT,MAAI,OAAO,WAAW,CAAC,IAAI,EAAE,UAAU,EAAE,EAAE;UACnC,QAAQ,EAAE,CAAC,KAAK;AACxB,cAAY,KAAK,CAAC;kBACF,CAAC,GAAG,CAAC;AACrB,kBAAgB,EAAE,CAAC,KAAK,GAAG,CAAC;AAC5B,cAAY,KAAK,CAAC;AAClB,kBAAgB,IAAI,EAAE,CAAC,GAAG,GAAG,CAAC,MAAM,CAAC,EAAE,OAAO,CAAC,CAAC,YAAY,CAAC,CAAC;AAC9D,kBAAgB,OAAO,CAAC,CAAC,YAAY,QAAQ,CAAC,OAAO,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;AACxE,cAAY,KAAK,CAAC;kBACF,EAAE,CAAC,IAAI,EAAE;AACzB,kBAAgB,EAAE,CAAC,KAAK,GAAG,CAAC;AAC5B,cAAY,KAAK,CAAC;AAClB,kBAAgB,CAAC,EAAE;AACnB,kBAAgB,OAAO,CAAC,CAAC,YAAY,CAAC,CAAC;cAC3B,KAAK,CAAC,EAAE,OAAO,CAAC,CAAC,aAAa,SAAS,CAAC;AACpD;AACA,MAAA,CAAK,CAAC;AACN,EAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;EACA,IAAI,OAAO,kBAAkB,YAAY;AACzC,MAAI,SAAS,OAAO,CAAC,GAAG,EAAE;AAC1B;AACA;AACA,UAAQ,IAAI,CAAC,IAAI,GAAG,QAAQ,CAAC,OAAO,CAAC,MAAM,CAAC,GAAG,EAAE,UAAU,EAAE,EAAE,EAAE,OAAO,IAAI,CAAC,SAAS,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAA,CAAE,CAAC;UACzF,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,UAAU,CAAC,EAAE,EAAE,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,CAAA,CAAE,CAAC;UACzD,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,UAAU,CAAC,EAAE,EAAE,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,CAAA,CAAE,CAAC;AACnE,MAAA;MACI,OAAO,CAAC,SAAS,CAAC,IAAI,GAAG,UAAU,CAAC,EAAE;UAClC,OAAO,IAAI,CAAC,KAAK,CAAC,SAAS,CAAC,UAAU,CAAC,EAAE,EAAE,OAAO,QAAQ,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAA,CAAE,CAAC;MAC5F,CAAK;MACD,OAAO,CAAC,SAAS,CAAC,GAAG,GAAG,UAAU,CAAC,EAAE;UACjC,OAAO,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,KAAK,EAAE;MAClC,CAAK;MACD,OAAO,CAAC,SAAS,CAAC,GAAG,GAAG,UAAU,CAAC,EAAE;AACzC,UAAQ,OAAO,QAAQ,CAAC,OAAO,CAAC,SAAS,CAAC,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC;MACrE,CAAK;MACD,OAAO,CAAC,SAAS,CAAC,GAAG,GAAG,UAAU,CAAC,EAAE,CAAC,EAAE;AAC5C,UAAQ,IAAI,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE;cACb,IAAI,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,KAAK,EAAE;cAC3B,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,GAAG,QAAQ,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;AAClE,cAAY,OAAO,IAAI,OAAO,CAAC,GAAG,CAAC;AACnC,UAAA;eACa;AACb,cAAY,IAAI,IAAI,GAAG,QAAQ,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;AAC3D,cAAY,OAAO,IAAI,OAAO,CAAC,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AACtD,UAAA;MACA,CAAK;MACD,OAAO,CAAC,SAAS,CAAC,MAAM,GAAG,UAAU,CAAC,EAAE;UACpC,IAAI,CAAC,GAAG,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC;AAC5B,UAAQ,IAAI,CAAC,KAAK,EAAE,EAAE;AACtB,cAAY,OAAO,IAAI,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;AACpF,UAAA;eACa;AACb,cAAY,OAAO,IAAI;AACvB,UAAA;MACA,CAAK;AACL,MAAI,OAAO,CAAC,SAAS,CAAC,IAAI,GAAG,YAAY;AACzC,UAAQ,OAAO,EAAE,CAAC,IAAI,CAAC,KAAK,CAAC;MAC7B,CAAK;AACL,MAAI,OAAO,CAAC,SAAS,CAAC,MAAM,GAAG,YAAY;AAC3C,UAAQ,OAAO,EAAE,CAAC,IAAI,CAAC,OAAO,CAAC;MAC/B,CAAK;AACL,MAAI,OAAO,CAAC,SAAS,CAAC,OAAO,GAAG,YAAY;AAC5C,UAAQ,OAAO,EAAE,CAAC,IAAI,CAAC,IAAI,CAAC;MAC5B,CAAK;AACL,MAAI,OAAO,CAAC,SAAS,CAAC,YAAY,GAAG,YAAY;UACzC,OAAO,QAAQ,CAAC,OAAO,CAAC,SAAS,CAAC,IAAI,CAAC,IAAI,CAAC;MACpD,CAAK;MACD,OAAO,CAAC,SAAS,CAAC,OAAO,GAAG,UAAU,CAAC,EAAE,CAAC,EAAE;AAChD,UAAQ,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,GAAG,CAAC;UACzB,KAAK,IAAI,EAAE,GAAG,CAAC,EAAE,EAAE,GAAG,IAAI,CAAC,IAAI,EAAE,EAAE,GAAG,EAAE,CAAC,MAAM,EAAE,EAAE,EAAE,EAAE;cACnD,IAAI,EAAE,GAAG,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC;AACjD,cAAY,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,IAAI,CAAC;AACzB,UAAA;MACA,CAAK;AACL,MAAI,OAAO,OAAO;AAClB,EAAA,CAAC,EAAE,CAAC;EACJ,IAAI,QAAQ,GAAG,YAAY,EAAE,OAAO,IAAI,OAAO,CAAC,EAAE,CAAC,CAAC,CAAA,CAAE;AACtD,EAAA,OAAA,CAAA,QAAA,GAAmB,QAAQ;AAC3B;AACA;AACA;EACA,IAAI,GAAG,GAAG,UAAU,EAAE,EAAE,EAAE,EAAE,EAAE,QAAQ;AACtC,MAAI,OAAO,EAAE;AACb,WAAS,KAAK,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,OAAO,EAAE,EAAE,CAAC,OAAO,CAAC,CAAC;AAClD,WAAS,GAAG,CAAC,UAAU,GAAG,EAAE,EAAE,OAAO,IAAI,OAAO,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC;AACzD,MAAI,MAAM,EAAE,UAAU,CAAC,EAAE;AACzB,UAAQ,OAAO,CAAC,CAAC,YAAY,EAAE,CAAC,GAAG,CAAC,UAAU,CAAC,EAAE,EAAE,OAAO,CAAC,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;MAChG,CAAK;AACL,GAAC,EAAE,CAAA,CAAE;AACL,EAAA,OAAA,CAAA,GAAA,GAAc,GAAG;AACjB;;;;;;;;;;;;;;;;;;;;CCnbA,IAAI,WAAW,GAAG,EAAE;AACpB,CAAAC,KAAc,GAAG,WAAW;;CAE5B,SAAS,IAAI,CAAC,CAAC,EAAE;KACb,OAAO,CAAC,GAAG,CAAC,GAAG,EAAE,GAAG,CAAC;AACzB,CAAA;;CAEA,SAAS,SAAS,CAAC,CAAC,EAAE;AACtB;AACA,KAAI,IAAI,CAAC,CAAC,GAAG,CAAC,MAAM,GAAG,IAAI,CAAC,CAAC,GAAG,CAAC,MAAM,CAAC,EAAE;AAC1C,SAAQ,OAAO,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC;AAC5B,KAAA,CAAK,MAAM;AACX,SAAQ,OAAO,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC;AAC5B,KAAA;AACA,CAAA;;AAEA,CAAA,SAAS,sBAAsB,CAAC,SAAS,EAAE,QAAQ,EAAE;AACrD,KAAI,IAAI,CAAC,QAAQ,CAAC,QAAQ,EAAE;AAC5B,SAAQ,EAAE,SAAS;AACnB,KAAA;AACA,KAAI,MAAM,UAAU,GAAG,QAAQ,CAAC,QAAQ,GAAG,CAAC,GAAG,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,SAAS,CAAC;AACtE,KAAI,MAAM,UAAU,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,SAAS,CAAC,GAAG,CAAC;;KAE7C,MAAM,SAAS,GAAG,QAAQ,CAAC,eAAe,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,QAAQ,CAAC,eAAe,CAAC,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,SAAS,CAAC;AAC/G,KAAI,MAAM,WAAW,GAAG,QAAQ,CAAC,eAAe,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,QAAQ,CAAC,eAAe,GAAG,CAAC,CAAC,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,SAAS,GAAG,CAAC,CAAC;;AAEzH,KAAI,OAAO,SAAS,CAAC,EAAE,IAAI,EAAE;AAC7B,SAAQ,IAAI,CAAC,IAAI,EAAE,IAAI,GAAG,EAAE;;AAE5B,SAAQ,IAAI,CAAC,GAAG,CAAC,CAAC;;AAElB,SAAQ,IAAI,IAAI,CAAC,YAAY,EAAE;aACnB,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC,EAAE;AACrC,iBAAgB,MAAM,IAAI,SAAS,CAAC,iCAAiC,CAAC;AACtE,aAAA;;AAEA,aAAY,CAAC,GAAG,IAAI,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;aACrC,IAAI,CAAC,GAAG,UAAU,IAAI,CAAC,GAAG,UAAU,EAAE;AAClD,iBAAgB,MAAM,IAAI,SAAS,CAAC,+BAA+B,CAAC;AACpE,aAAA;;AAEA,aAAY,OAAO,CAAC;AACpB,SAAA;;SAEQ,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,IAAI,CAAC,KAAK,EAAE;AACrC,aAAY,CAAC,GAAG,SAAS,CAAC,CAAC,CAAC;;AAE5B,aAAY,IAAI,CAAC,GAAG,UAAU,EAAE,CAAC,GAAG,UAAU;AAC9C,aAAY,IAAI,CAAC,GAAG,UAAU,EAAE,CAAC,GAAG,UAAU;AAC9C,aAAY,OAAO,CAAC;AACpB,SAAA;;AAEA,SAAQ,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,EAAE;AAC5C,aAAY,OAAO,CAAC;AACpB,SAAA;;AAEA,SAAQ,CAAC,GAAG,IAAI,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;AAC7C,SAAQ,CAAC,GAAG,CAAC,GAAG,SAAS;;SAEjB,IAAI,CAAC,QAAQ,CAAC,QAAQ,IAAI,CAAC,IAAI,WAAW,EAAE;aACxC,OAAO,CAAC,GAAG,SAAS;AAChC,SAAA,CAAS,MAAM,IAAI,QAAQ,CAAC,QAAQ,EAAE;AACtC,aAAY,IAAI,CAAC,GAAG,CAAC,EAAE;eACT,CAAC,IAAI,SAAS;AAC5B,aAAA,CAAa,MAAM,IAAI,CAAC,KAAK,EAAE,EAAE;AACjC,eAAc,OAAO,CAAC;AACtB,aAAA;AACA,SAAA;;AAEA,SAAQ,OAAO,CAAC;AAChB,KAAA;AACA,CAAA;;AAEA,CAAA,WAAW,CAAC,MAAM,CAAC,GAAG,YAAY;AAClC,KAAI,OAAO,SAAS;CACpB,CAAC;;AAED,CAAA,WAAW,CAAC,SAAS,CAAC,GAAG,UAAU,GAAG,EAAE;KACpC,OAAO,CAAC,CAAC,GAAG;CAChB,CAAC;;AAED,CAAA,WAAW,CAAC,MAAM,CAAC,GAAG,sBAAsB,CAAC,CAAC,EAAE,EAAE,QAAQ,EAAE,KAAK,EAAE,CAAC;AACpE,CAAA,WAAW,CAAC,OAAO,CAAC,GAAG,sBAAsB,CAAC,CAAC,EAAE,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC;;AAEpE,CAAA,WAAW,CAAC,OAAO,CAAC,GAAG,sBAAsB,CAAC,EAAE,EAAE,EAAE,QAAQ,EAAE,KAAK,EAAE,CAAC;AACtE,CAAA,WAAW,CAAC,gBAAgB,CAAC,GAAG,sBAAsB,CAAC,EAAE,EAAE,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC;;AAE9E,CAAA,WAAW,CAAC,MAAM,CAAC,GAAG,sBAAsB,CAAC,EAAE,EAAE,EAAE,QAAQ,EAAE,KAAK,EAAE,CAAC;AACrE,CAAA,WAAW,CAAC,eAAe,CAAC,GAAG,sBAAsB,CAAC,EAAE,EAAE,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC;;AAE7E,CAAA,WAAW,CAAC,WAAW,CAAC,GAAG,sBAAsB,CAAC,EAAE,EAAE,EAAE,QAAQ,EAAE,KAAK,EAAE,eAAe,EAAE,EAAE,EAAE,CAAC;AAC/F,CAAA,WAAW,CAAC,oBAAoB,CAAC,GAAG,sBAAsB,CAAC,EAAE,EAAE,EAAE,QAAQ,EAAE,IAAI,EAAE,eAAe,EAAE,EAAE,EAAE,CAAC;;AAEvG,CAAA,WAAW,CAAC,QAAQ,CAAC,GAAG,UAAU,CAAC,EAAE;AACrC,KAAI,MAAM,CAAC,GAAG,CAAC,CAAC;;KAEZ,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC,EAAE;AAC7B,SAAQ,MAAM,IAAI,SAAS,CAAC,+CAA+C,CAAC;AAC5E,KAAA;;AAEA,KAAI,OAAO,CAAC;CACZ,CAAC;;AAED,CAAA,WAAW,CAAC,qBAAqB,CAAC,GAAG,UAAU,CAAC,EAAE;AAClD,KAAI,MAAM,CAAC,GAAG,CAAC,CAAC;;AAEhB,KAAI,IAAI,KAAK,CAAC,CAAC,CAAC,EAAE;AAClB,SAAQ,MAAM,IAAI,SAAS,CAAC,iBAAiB,CAAC;AAC9C,KAAA;;AAEA,KAAI,OAAO,CAAC;CACZ,CAAC;;AAED;AACA,CAAA,WAAW,CAAC,OAAO,CAAC,GAAG,WAAW,CAAC,QAAQ,CAAC;AAC5C,CAAA,WAAW,CAAC,oBAAoB,CAAC,GAAG,WAAW,CAAC,qBAAqB,CAAC;;CAEtE,WAAW,CAAC,WAAW,CAAC,GAAG,UAAU,CAAC,EAAE,IAAI,EAAE;AAC9C,KAAI,IAAI,CAAC,IAAI,EAAE,IAAI,GAAG,EAAE;;KAEpB,IAAI,IAAI,CAAC,sBAAsB,IAAI,CAAC,KAAK,IAAI,EAAE;AACnD,SAAQ,OAAO,EAAE;AACjB,KAAA;;AAEA,KAAI,OAAO,MAAM,CAAC,CAAC,CAAC;CACpB,CAAC;;CAED,WAAW,CAAC,YAAY,CAAC,GAAG,UAAU,CAAC,EAAE,IAAI,EAAE;AAC/C,KAAI,MAAM,CAAC,GAAG,MAAM,CAAC,CAAC,CAAC;KACnB,IAAI,CAAC,GAAG,SAAS;KACjB,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,MAAM,SAAS,EAAE,EAAE,CAAC,EAAE;AAC/D,SAAQ,IAAI,CAAC,GAAG,GAAG,EAAE;AACrB,aAAY,MAAM,IAAI,SAAS,CAAC,oCAAoC,CAAC;AACrE,SAAA;AACA,KAAA;;AAEA,KAAI,OAAO,CAAC;CACZ,CAAC;;AAED,CAAA,WAAW,CAAC,WAAW,CAAC,GAAG,UAAU,CAAC,EAAE;AACxC,KAAI,MAAM,CAAC,GAAG,MAAM,CAAC,CAAC,CAAC;AACvB,KAAI,MAAM,CAAC,GAAG,CAAC,CAAC,MAAM;KAClB,MAAM,CAAC,GAAG,EAAE;AAChB,KAAI,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,EAAE,CAAC,EAAE;SACxB,MAAM,CAAC,GAAG,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC;SACzB,IAAI,CAAC,GAAG,MAAM,IAAI,CAAC,GAAG,MAAM,EAAE;aAC1B,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC;SAC3C,CAAS,MAAM,IAAI,MAAM,IAAI,CAAC,IAAI,CAAC,IAAI,MAAM,EAAE;aACnC,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,aAAa,CAAC,MAAM,CAAC,CAAC;AAChD,SAAA,CAAS,MAAM;AACf,aAAY,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,EAAE;iBACb,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,aAAa,CAAC,MAAM,CAAC,CAAC;AACpD,aAAA,CAAa,MAAM;iBACH,MAAM,CAAC,GAAG,CAAC,CAAC,UAAU,CAAC,CAAC,GAAG,CAAC,CAAC;iBAC7B,IAAI,MAAM,IAAI,CAAC,IAAI,CAAC,IAAI,MAAM,EAAE;AAChD,qBAAoB,MAAM,CAAC,GAAG,CAAC,GAAG,KAAK;AACvC,qBAAoB,MAAM,CAAC,GAAG,CAAC,GAAG,KAAK;qBACnB,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,aAAa,CAAC,CAAC,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC;AAC9E,qBAAoB,EAAE,CAAC;AACvB,iBAAA,CAAiB,MAAM;qBACH,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,aAAa,CAAC,MAAM,CAAC,CAAC;AACxD,iBAAA;AACA,aAAA;AACA,SAAA;AACA,KAAA;;AAEA,KAAI,OAAO,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC;CACrB,CAAC;;CAED,WAAW,CAAC,MAAM,CAAC,GAAG,UAAU,CAAC,EAAE,IAAI,EAAE;AACzC,KAAI,IAAI,EAAE,CAAC,YAAY,IAAI,CAAC,EAAE;AAC9B,SAAQ,MAAM,IAAI,SAAS,CAAC,+BAA+B,CAAC;AAC5D,KAAA;AACA,KAAI,IAAI,KAAK,CAAC,CAAC,CAAC,EAAE;AAClB,SAAQ,OAAO,SAAS;AACxB,KAAA;;AAEA,KAAI,OAAO,CAAC;CACZ,CAAC;;CAED,WAAW,CAAC,QAAQ,CAAC,GAAG,UAAU,CAAC,EAAE,IAAI,EAAE;AAC3C,KAAI,IAAI,EAAE,CAAC,YAAY,MAAM,CAAC,EAAE;AAChC,SAAQ,CAAC,GAAG,IAAI,MAAM,CAAC,CAAC,CAAC;AACzB,KAAA;;AAEA,KAAI,OAAO,CAAC;CACZ,CAAC;;;;;;;;;;;;;AC1LD,EAAA,MAAA,CAAA,OAAA,CAAA,KAAA,GAAuB,SAAS,KAAK,CAAC,MAAM,EAAE,MAAM,EAAE;IACpD,MAAM,IAAI,GAAG,MAAM,CAAC,mBAAmB,CAAC,MAAM,CAAC;AACjD,IAAE,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,MAAM,EAAE,EAAE,CAAC,EAAE;MACpC,MAAM,CAAC,cAAc,CAAC,MAAM,EAAE,IAAI,CAAC,CAAC,CAAC,EAAE,MAAM,CAAC,wBAAwB,CAAC,MAAM,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC;AAC5F,IAAA;EACA,CAAC;;EAED,MAAA,CAAA,OAAA,CAAA,aAAA,GAA+B,MAAM,CAAC,SAAS,CAAC;EAChD,MAAA,CAAA,OAAA,CAAA,UAAA,GAA4B,MAAM,CAAC,MAAM,CAAC;;EAE1C,MAAA,CAAA,OAAA,CAAA,cAAA,GAAgC,UAAU,IAAI,EAAE;IAC9C,OAAO,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,aAAa,CAAC;EAC3C,CAAC;;EAED,MAAA,CAAA,OAAA,CAAA,cAAA,GAAgC,UAAU,OAAO,EAAE;IACjD,OAAO,OAAO,CAAC,MAAM,CAAC,OAAO,CAAC,UAAU,CAAC;EAC3C,CAAC,CAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;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C,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC;AAChD,GAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC;AAChD,GAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC;AAChD,GAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC;AAChD,GAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC;AAChD,GAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC;AAChD,GAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC;AAChD,GAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,C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","x_google_ignoreList":[2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38]}
|
|
1
|
+
{"version":3,"file":"index.cjs","sources":["../src/token-standard-client.ts","../src/interface-ids.const.ts","../../../../../../.yarn/berry/cache/lodash.isequal-npm-4.5.0-f8b0f64d63-10c0.zip/node_modules/lodash.isequal/index.js","../../../../../../.yarn/berry/cache/@mojotech-json-type-validation-npm-3.1.0-b983ac6694-10c0.zip/node_modules/@mojotech/json-type-validation/dist/index.es5.js","../../../../../../.yarn/berry/cache/@daml-types-npm-3.3.0-snapshot.20250528.13806.0.v3cd439fb-8d2fd59416-10c0.zip/node_modules/@daml/types/index.js","../../../../../../.yarn/berry/cache/webidl-conversions-npm-3.0.1-60310f6a2b-10c0.zip/node_modules/webidl-conversions/lib/index.js","../../../../../../.yarn/berry/cache/whatwg-url-npm-5.0.0-374fb45e60-10c0.zip/node_modules/whatwg-url/lib/utils.js","../../../../../../.yarn/berry/cache/tr46-npm-0.0.3-de53018915-10c0.zip/node_modules/tr46/index.js","../../../../../../.yarn/berry/cache/whatwg-url-npm-5.0.0-374fb45e60-10c0.zip/node_modules/whatwg-url/lib/url-state-machine.js","../../../../../../.yarn/berry/cache/whatwg-url-npm-5.0.0-374fb45e60-10c0.zip/node_modules/whatwg-url/lib/URL-impl.js","../../../../../../.yarn/berry/cache/whatwg-url-npm-5.0.0-374fb45e60-10c0.zip/node_modules/whatwg-url/lib/URL.js","../../../../../../.yarn/berry/cache/whatwg-url-npm-5.0.0-374fb45e60-10c0.zip/node_modules/whatwg-url/lib/public-api.js","../../../.yarn/__virtual__/node-fetch-virtual-addf273e03/4/.yarn/berry/cache/node-fetch-npm-2.7.0-587d57004e-10c0.zip/node_modules/node-fetch/lib/index.mjs","../../../../../../.yarn/berry/cache/cross-fetch-npm-3.2.0-267029ff2f-10c0.zip/node_modules/cross-fetch/dist/node-ponyfill.js","../../../.yarn/__virtual__/ws-virtual-79e908d9df/4/.yarn/berry/cache/ws-npm-7.5.10-878ccb886b-10c0.zip/node_modules/ws/lib/constants.js","../../../.yarn/__virtual__/ws-virtual-79e908d9df/4/.yarn/berry/cache/ws-npm-7.5.10-878ccb886b-10c0.zip/node_modules/ws/lib/buffer-util.js","../../../.yarn/__virtual__/ws-virtual-79e908d9df/4/.yarn/berry/cache/ws-npm-7.5.10-878ccb886b-10c0.zip/node_modules/ws/lib/limiter.js","../../../.yarn/__virtual__/ws-virtual-79e908d9df/4/.yarn/berry/cache/ws-npm-7.5.10-878ccb886b-10c0.zip/node_modules/ws/lib/permessage-deflate.js","../../../.yarn/__virtual__/ws-virtual-79e908d9df/4/.yarn/berry/cache/ws-npm-7.5.10-878ccb886b-10c0.zip/node_modules/ws/lib/validation.js","../../../.yarn/__virtual__/ws-virtual-79e908d9df/4/.yarn/berry/cache/ws-npm-7.5.10-878ccb886b-10c0.zip/node_modules/ws/lib/receiver.js","../../../.yarn/__virtual__/ws-virtual-79e908d9df/4/.yarn/berry/cache/ws-npm-7.5.10-878ccb886b-10c0.zip/node_modules/ws/lib/sender.js","../../../.yarn/__virtual__/ws-virtual-79e908d9df/4/.yarn/berry/cache/ws-npm-7.5.10-878ccb886b-10c0.zip/node_modules/ws/lib/event-target.js","../../../.yarn/__virtual__/ws-virtual-79e908d9df/4/.yarn/berry/cache/ws-npm-7.5.10-878ccb886b-10c0.zip/node_modules/ws/lib/extension.js","../../../.yarn/__virtual__/ws-virtual-79e908d9df/4/.yarn/berry/cache/ws-npm-7.5.10-878ccb886b-10c0.zip/node_modules/ws/lib/websocket.js","../../../.yarn/__virtual__/ws-virtual-79e908d9df/4/.yarn/berry/cache/ws-npm-7.5.10-878ccb886b-10c0.zip/node_modules/ws/lib/stream.js","../../../.yarn/__virtual__/ws-virtual-79e908d9df/4/.yarn/berry/cache/ws-npm-7.5.10-878ccb886b-10c0.zip/node_modules/ws/lib/websocket-server.js","../../../.yarn/__virtual__/ws-virtual-79e908d9df/4/.yarn/berry/cache/ws-npm-7.5.10-878ccb886b-10c0.zip/node_modules/ws/index.js","../../../.yarn/__virtual__/isomorphic-ws-virtual-27bbf212f5/4/.yarn/berry/cache/isomorphic-ws-npm-4.0.1-aa39192848-10c0.zip/node_modules/isomorphic-ws/node.js","../../../../../../.yarn/berry/cache/@daml-ledger-npm-3.3.0-snapshot.20250528.13806.0.v3cd439fb-bdb3d061db-10c0.zip/node_modules/@daml/ledger/index.js","../../../../../../.yarn/berry/cache/@daml.js-ghc-stdlib-DA-Internal-Template-1.0.0-file-c6b3e1def0-10c0.zip/node_modules/@daml.js/ghc-stdlib-DA-Internal-Template-1.0.0/lib/DA/Internal/Template/module.js","../../../../../../.yarn/berry/cache/@daml.js-ghc-stdlib-DA-Internal-Template-1.0.0-file-c6b3e1def0-10c0.zip/node_modules/@daml.js/ghc-stdlib-DA-Internal-Template-1.0.0/lib/DA/Internal/Template/index.js","../../../../../../.yarn/berry/cache/@daml.js-ghc-stdlib-DA-Internal-Template-1.0.0-file-c6b3e1def0-10c0.zip/node_modules/@daml.js/ghc-stdlib-DA-Internal-Template-1.0.0/lib/DA/Internal/index.js","../../../../../../.yarn/berry/cache/@daml.js-ghc-stdlib-DA-Internal-Template-1.0.0-file-c6b3e1def0-10c0.zip/node_modules/@daml.js/ghc-stdlib-DA-Internal-Template-1.0.0/lib/DA/index.js","../../../../../../.yarn/berry/cache/@daml.js-ghc-stdlib-DA-Internal-Template-1.0.0-file-c6b3e1def0-10c0.zip/node_modules/@daml.js/ghc-stdlib-DA-Internal-Template-1.0.0/lib/index.js","../../../../../../.yarn/berry/cache/@daml.js-daml-stdlib-DA-Time-Types-1.0.0-file-321c951204-10c0.zip/node_modules/@daml.js/daml-stdlib-DA-Time-Types-1.0.0/lib/DA/Time/Types/module.js","../../../../../../.yarn/berry/cache/@daml.js-daml-stdlib-DA-Time-Types-1.0.0-file-321c951204-10c0.zip/node_modules/@daml.js/daml-stdlib-DA-Time-Types-1.0.0/lib/DA/Time/Types/index.js","../../../../../../.yarn/berry/cache/@daml.js-daml-stdlib-DA-Time-Types-1.0.0-file-321c951204-10c0.zip/node_modules/@daml.js/daml-stdlib-DA-Time-Types-1.0.0/lib/DA/Time/index.js","../../../../../../.yarn/berry/cache/@daml.js-daml-stdlib-DA-Time-Types-1.0.0-file-321c951204-10c0.zip/node_modules/@daml.js/daml-stdlib-DA-Time-Types-1.0.0/lib/DA/index.js","../../../../../../.yarn/berry/cache/@daml.js-daml-stdlib-DA-Time-Types-1.0.0-file-321c951204-10c0.zip/node_modules/@daml.js/daml-stdlib-DA-Time-Types-1.0.0/lib/index.js","../../../damljs/token-standard-models/token-standard-models-1.0.0/lib/Splice/Api/Token/MetadataV1/module.js","../../../damljs/token-standard-models/token-standard-models-1.0.0/lib/Splice/Api/Token/HoldingV1/module.js","../../../damljs/token-standard-models/token-standard-models-1.0.0/lib/Splice/Api/Token/AllocationV1/module.js","../../../damljs/token-standard-models/token-standard-models-1.0.0/lib/Splice/Api/Token/AllocationInstructionV1/module.js","../../../damljs/token-standard-models/token-standard-models-1.0.0/lib/Splice/Api/Token/AllocationInstructionV1/index.js","../../../damljs/token-standard-models/token-standard-models-1.0.0/lib/Splice/Api/Token/AllocationRequestV1/module.js","../../../damljs/token-standard-models/token-standard-models-1.0.0/lib/Splice/Api/Token/AllocationRequestV1/index.js","../../../damljs/token-standard-models/token-standard-models-1.0.0/lib/Splice/Api/Token/AllocationV1/index.js","../../../damljs/token-standard-models/token-standard-models-1.0.0/lib/Splice/Api/Token/HoldingV1/index.js","../../../damljs/token-standard-models/token-standard-models-1.0.0/lib/Splice/Api/Token/MetadataV1/index.js","../../../damljs/token-standard-models/token-standard-models-1.0.0/lib/Splice/Api/Token/TransferInstructionV1/module.js","../../../damljs/token-standard-models/token-standard-models-1.0.0/lib/Splice/Api/Token/TransferInstructionV1/index.js","../../../damljs/token-standard-models/token-standard-models-1.0.0/lib/Splice/Api/Token/index.js","../../../damljs/token-standard-models/token-standard-models-1.0.0/lib/Splice/Api/index.js","../../../damljs/token-standard-models/token-standard-models-1.0.0/lib/Splice/index.js","../../../damljs/token-standard-models/token-standard-models-1.0.0/lib/index.js","../src/types.ts"],"sourcesContent":["// Copyright (c) 2025 Digital Asset (Switzerland) GmbH and/or its affiliates. All rights reserved.\n// SPDX-License-Identifier: Apache-2.0\n\nimport createClient, { Client } from 'openapi-fetch'\nimport { AccessTokenProvider, Logger } from '@canton-network/core-types'\n\nimport { paths as allocationPaths } from './generated-clients/splice-api-token-allocation-v1/allocation-v1.js'\nimport { paths as allocationInstructionPaths } from './generated-clients/splice-api-token-allocation-instruction-v1/allocation-instruction-v1.js'\nimport { paths as metadataPaths } from './generated-clients/splice-api-token-metadata-v1/token-metadata-v1.js'\nimport { paths as transferInstructionPaths } from './generated-clients/splice-api-token-transfer-instruction-v1/transfer-instruction-v1.js'\n\nexport { components as allocationRegistryTypes } from './generated-clients/splice-api-token-allocation-v1/allocation-v1.js'\nexport { components as metadataRegistryTypes } from './generated-clients/splice-api-token-metadata-v1/token-metadata-v1.js'\nexport { components as transferInstructionRegistryTypes } from './generated-clients/splice-api-token-transfer-instruction-v1/transfer-instruction-v1.js'\nexport { components as allocationInstructionRegistryTypes } from './generated-clients/splice-api-token-allocation-instruction-v1/allocation-instruction-v1.js'\n\ntype paths = allocationPaths &\n metadataPaths &\n transferInstructionPaths &\n allocationInstructionPaths\n\n// A conditional type that filters the set of OpenAPI path names to those that actually have a defined POST operation.\n// Any path without a POST is excluded via the `never` branch of the conditional\ntype PostEndpoint = {\n [Pathname in keyof paths]: paths[Pathname] extends {\n post: unknown\n }\n ? Pathname\n : never\n}[keyof paths]\n\n// Given a pathname (string) that has a POST, this helper type extracts the request body type from the OpenAPI definition.\nexport type PostRequest<Path extends PostEndpoint> = paths[Path] extends {\n post: { requestBody: { content: { 'application/json': infer Req } } }\n}\n ? Req\n : never\n\n// Given a pathname (string) that has a POST, this helper type extracts the 200 response type from the OpenAPI definition.\nexport type PostResponse<Path extends PostEndpoint> = paths[Path] extends {\n post: { responses: { 200: { content: { 'application/json': infer Res } } } }\n}\n ? Res\n : never\n\n// Similar as above, for GETs\ntype GetEndpoint = {\n [Pathname in keyof paths]: paths[Pathname] extends {\n get: unknown\n }\n ? Pathname\n : never\n}[keyof paths]\n\n// Similar as above, for GETs\nexport type GetResponse<Path extends GetEndpoint> = paths[Path] extends {\n get: { responses: { 200: { content: { 'application/json': infer Res } } } }\n}\n ? Res\n : never\n\nexport class TokenStandardClient {\n private readonly client: Client<paths>\n private readonly logger: Logger\n private accessTokenProvider: AccessTokenProvider | undefined\n\n constructor(\n baseUrl: string,\n logger: Logger,\n isAdmin: boolean,\n accessToken?: string,\n accessTokenProvider?: AccessTokenProvider\n ) {\n this.accessTokenProvider = accessTokenProvider\n this.logger = logger\n this.logger.debug({ baseUrl }, 'TokenStandardClient initialized')\n this.client = createClient<paths>({\n baseUrl,\n fetch: async (url: RequestInfo, options: RequestInit = {}) => {\n if (this.accessTokenProvider) {\n accessToken = isAdmin\n ? await this.accessTokenProvider.getAdminAccessToken()\n : await this.accessTokenProvider.getUserAccessToken()\n }\n return fetch(url, {\n ...options,\n headers: {\n ...(options.headers || {}),\n ...(accessToken\n ? { Authorization: `Bearer ${accessToken}` }\n : {}),\n 'Content-Type': 'application/json',\n },\n })\n },\n })\n }\n\n public async post<Path extends PostEndpoint>(\n path: Path,\n body: PostRequest<Path>,\n params?: {\n path?: Record<string, string>\n query?: Record<string, string | number>\n }\n ): Promise<PostResponse<Path>> {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any -- (cant align this with openapi-fetch generics :shrug:)\n const options = { body, params } as any\n this.logger.debug({ requestBody: body }, `POST ${path}`)\n const resp = await this.client.POST(path, options)\n this.logger.debug({ requestBody: body, response: resp }, `POST ${path}`)\n return this.valueOrError(resp)\n }\n\n public async get<Path extends GetEndpoint>(\n path: Path,\n params?: {\n path?: Record<string, string>\n query?: Record<string, string | number>\n }\n ): Promise<GetResponse<Path>> {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any -- (cant align this with openapi-fetch generics :shrug:)\n const options = { params } as any\n\n const resp = await this.client.GET(path, options)\n this.logger.debug(\n { path: path, params: params, response: resp },\n `GET ${path}`\n )\n return this.valueOrError(resp)\n }\n\n private async valueOrError<T>(response: {\n data?: T\n error?: unknown\n }): Promise<T> {\n if (response.data === undefined) {\n return Promise.reject(response.error)\n } else {\n return Promise.resolve(response.data)\n }\n }\n}\n","// Copyright (c) 2025 Digital Asset (Switzerland) GmbH and/or its affiliates. All rights reserved.\n// SPDX-License-Identifier: Apache-2.0\n\nexport const ALLOCATION_FACTORY_INTERFACE_ID =\n '#splice-api-token-allocation-instruction-v1:Splice.Api.Token.AllocationInstructionV1:AllocationFactory'\nexport const ALLOCATION_INSTRUCTION_INTERFACE_ID =\n '#splice-api-token-allocation-instruction-v1:Splice.Api.Token.AllocationInstructionV1:AllocationInstruction'\nexport const ALLOCATION_REQUEST_INTERFACE_ID =\n '#splice-api-token-allocation-request-v1:Splice.Api.Token.AllocationRequestV1:AllocationRequest'\nexport const ALLOCATION_INTERFACE_ID =\n '#splice-api-token-allocation-v1:Splice.Api.Token.AllocationV1:Allocation'\nexport const HOLDING_INTERFACE_ID =\n '#splice-api-token-holding-v1:Splice.Api.Token.HoldingV1:Holding'\nexport const METADATA_INTERFACE_ID =\n '#splice-api-token-metadata-v1:Splice.Api.Token.MetadataV1:AnyContract'\nexport const TRANSFER_FACTORY_INTERFACE_ID =\n '#splice-api-token-transfer-instruction-v1:Splice.Api.Token.TransferInstructionV1:TransferFactory'\nexport const TRANSFER_INSTRUCTION_INTERFACE_ID =\n '#splice-api-token-transfer-instruction-v1:Splice.Api.Token.TransferInstructionV1:TransferInstruction'\nexport const FEATURED_APP_DELEGATE_PROXY_INTERFACE_ID =\n '#splice-util-featured-app-proxies:Splice.Util.FeaturedApp.DelegateProxy:DelegateProxy'\nexport const MERGE_DELEGATION_PROPOSAL_TEMPLATE_ID =\n '#splice-util-token-standard-wallet:Splice.Util.Token.Wallet.MergeDelegation:MergeDelegationProposal'\nexport const MERGE_DELEGATION_TEMPLATE_ID =\n '#splice-util-token-standard-wallet:Splice.Util.Token.Wallet.MergeDelegation:MergeDelegation'\nexport const MERGE_DELEGATION_BATCH_MERGE_UTILITY =\n '#splice-util-token-standard-wallet:Splice.Util.Token.Wallet.MergeDelegation:BatchMergeUtility'\n","/**\n * Lodash (Custom Build) <https://lodash.com/>\n * Build: `lodash modularize exports=\"npm\" -o ./`\n * Copyright JS Foundation and other contributors <https://js.foundation/>\n * Released under MIT license <https://lodash.com/license>\n * Based on Underscore.js 1.8.3 <http://underscorejs.org/LICENSE>\n * Copyright Jeremy Ashkenas, DocumentCloud and Investigative Reporters & Editors\n */\n\n/** Used as the size to enable large array optimizations. */\nvar LARGE_ARRAY_SIZE = 200;\n\n/** Used to stand-in for `undefined` hash values. */\nvar HASH_UNDEFINED = '__lodash_hash_undefined__';\n\n/** Used to compose bitmasks for value comparisons. */\nvar COMPARE_PARTIAL_FLAG = 1,\n COMPARE_UNORDERED_FLAG = 2;\n\n/** Used as references for various `Number` constants. */\nvar MAX_SAFE_INTEGER = 9007199254740991;\n\n/** `Object#toString` result references. */\nvar argsTag = '[object Arguments]',\n arrayTag = '[object Array]',\n asyncTag = '[object AsyncFunction]',\n boolTag = '[object Boolean]',\n dateTag = '[object Date]',\n errorTag = '[object Error]',\n funcTag = '[object Function]',\n genTag = '[object GeneratorFunction]',\n mapTag = '[object Map]',\n numberTag = '[object Number]',\n nullTag = '[object Null]',\n objectTag = '[object Object]',\n promiseTag = '[object Promise]',\n proxyTag = '[object Proxy]',\n regexpTag = '[object RegExp]',\n setTag = '[object Set]',\n stringTag = '[object String]',\n symbolTag = '[object Symbol]',\n undefinedTag = '[object Undefined]',\n weakMapTag = '[object WeakMap]';\n\nvar arrayBufferTag = '[object ArrayBuffer]',\n dataViewTag = '[object DataView]',\n float32Tag = '[object Float32Array]',\n float64Tag = '[object Float64Array]',\n int8Tag = '[object Int8Array]',\n int16Tag = '[object Int16Array]',\n int32Tag = '[object Int32Array]',\n uint8Tag = '[object Uint8Array]',\n uint8ClampedTag = '[object Uint8ClampedArray]',\n uint16Tag = '[object Uint16Array]',\n uint32Tag = '[object Uint32Array]';\n\n/**\n * Used to match `RegExp`\n * [syntax characters](http://ecma-international.org/ecma-262/7.0/#sec-patterns).\n */\nvar reRegExpChar = /[\\\\^$.*+?()[\\]{}|]/g;\n\n/** Used to detect host constructors (Safari). */\nvar reIsHostCtor = /^\\[object .+?Constructor\\]$/;\n\n/** Used to detect unsigned integer values. */\nvar reIsUint = /^(?:0|[1-9]\\d*)$/;\n\n/** Used to identify `toStringTag` values of typed arrays. */\nvar typedArrayTags = {};\ntypedArrayTags[float32Tag] = typedArrayTags[float64Tag] =\ntypedArrayTags[int8Tag] = typedArrayTags[int16Tag] =\ntypedArrayTags[int32Tag] = typedArrayTags[uint8Tag] =\ntypedArrayTags[uint8ClampedTag] = typedArrayTags[uint16Tag] =\ntypedArrayTags[uint32Tag] = true;\ntypedArrayTags[argsTag] = typedArrayTags[arrayTag] =\ntypedArrayTags[arrayBufferTag] = typedArrayTags[boolTag] =\ntypedArrayTags[dataViewTag] = typedArrayTags[dateTag] =\ntypedArrayTags[errorTag] = typedArrayTags[funcTag] =\ntypedArrayTags[mapTag] = typedArrayTags[numberTag] =\ntypedArrayTags[objectTag] = typedArrayTags[regexpTag] =\ntypedArrayTags[setTag] = typedArrayTags[stringTag] =\ntypedArrayTags[weakMapTag] = false;\n\n/** Detect free variable `global` from Node.js. */\nvar freeGlobal = typeof global == 'object' && global && global.Object === Object && global;\n\n/** Detect free variable `self`. */\nvar freeSelf = typeof self == 'object' && self && self.Object === Object && self;\n\n/** Used as a reference to the global object. */\nvar root = freeGlobal || freeSelf || Function('return this')();\n\n/** Detect free variable `exports`. */\nvar freeExports = typeof exports == 'object' && exports && !exports.nodeType && exports;\n\n/** Detect free variable `module`. */\nvar freeModule = freeExports && typeof module == 'object' && module && !module.nodeType && module;\n\n/** Detect the popular CommonJS extension `module.exports`. */\nvar moduleExports = freeModule && freeModule.exports === freeExports;\n\n/** Detect free variable `process` from Node.js. */\nvar freeProcess = moduleExports && freeGlobal.process;\n\n/** Used to access faster Node.js helpers. */\nvar nodeUtil = (function() {\n try {\n return freeProcess && freeProcess.binding && freeProcess.binding('util');\n } catch (e) {}\n}());\n\n/* Node.js helper references. */\nvar nodeIsTypedArray = nodeUtil && nodeUtil.isTypedArray;\n\n/**\n * A specialized version of `_.filter` for arrays without support for\n * iteratee shorthands.\n *\n * @private\n * @param {Array} [array] The array to iterate over.\n * @param {Function} predicate The function invoked per iteration.\n * @returns {Array} Returns the new filtered array.\n */\nfunction arrayFilter(array, predicate) {\n var index = -1,\n length = array == null ? 0 : array.length,\n resIndex = 0,\n result = [];\n\n while (++index < length) {\n var value = array[index];\n if (predicate(value, index, array)) {\n result[resIndex++] = value;\n }\n }\n return result;\n}\n\n/**\n * Appends the elements of `values` to `array`.\n *\n * @private\n * @param {Array} array The array to modify.\n * @param {Array} values The values to append.\n * @returns {Array} Returns `array`.\n */\nfunction arrayPush(array, values) {\n var index = -1,\n length = values.length,\n offset = array.length;\n\n while (++index < length) {\n array[offset + index] = values[index];\n }\n return array;\n}\n\n/**\n * A specialized version of `_.some` for arrays without support for iteratee\n * shorthands.\n *\n * @private\n * @param {Array} [array] The array to iterate over.\n * @param {Function} predicate The function invoked per iteration.\n * @returns {boolean} Returns `true` if any element passes the predicate check,\n * else `false`.\n */\nfunction arraySome(array, predicate) {\n var index = -1,\n length = array == null ? 0 : array.length;\n\n while (++index < length) {\n if (predicate(array[index], index, array)) {\n return true;\n }\n }\n return false;\n}\n\n/**\n * The base implementation of `_.times` without support for iteratee shorthands\n * or max array length checks.\n *\n * @private\n * @param {number} n The number of times to invoke `iteratee`.\n * @param {Function} iteratee The function invoked per iteration.\n * @returns {Array} Returns the array of results.\n */\nfunction baseTimes(n, iteratee) {\n var index = -1,\n result = Array(n);\n\n while (++index < n) {\n result[index] = iteratee(index);\n }\n return result;\n}\n\n/**\n * The base implementation of `_.unary` without support for storing metadata.\n *\n * @private\n * @param {Function} func The function to cap arguments for.\n * @returns {Function} Returns the new capped function.\n */\nfunction baseUnary(func) {\n return function(value) {\n return func(value);\n };\n}\n\n/**\n * Checks if a `cache` value for `key` exists.\n *\n * @private\n * @param {Object} cache The cache to query.\n * @param {string} key The key of the entry to check.\n * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.\n */\nfunction cacheHas(cache, key) {\n return cache.has(key);\n}\n\n/**\n * Gets the value at `key` of `object`.\n *\n * @private\n * @param {Object} [object] The object to query.\n * @param {string} key The key of the property to get.\n * @returns {*} Returns the property value.\n */\nfunction getValue(object, key) {\n return object == null ? undefined : object[key];\n}\n\n/**\n * Converts `map` to its key-value pairs.\n *\n * @private\n * @param {Object} map The map to convert.\n * @returns {Array} Returns the key-value pairs.\n */\nfunction mapToArray(map) {\n var index = -1,\n result = Array(map.size);\n\n map.forEach(function(value, key) {\n result[++index] = [key, value];\n });\n return result;\n}\n\n/**\n * Creates a unary function that invokes `func` with its argument transformed.\n *\n * @private\n * @param {Function} func The function to wrap.\n * @param {Function} transform The argument transform.\n * @returns {Function} Returns the new function.\n */\nfunction overArg(func, transform) {\n return function(arg) {\n return func(transform(arg));\n };\n}\n\n/**\n * Converts `set` to an array of its values.\n *\n * @private\n * @param {Object} set The set to convert.\n * @returns {Array} Returns the values.\n */\nfunction setToArray(set) {\n var index = -1,\n result = Array(set.size);\n\n set.forEach(function(value) {\n result[++index] = value;\n });\n return result;\n}\n\n/** Used for built-in method references. */\nvar arrayProto = Array.prototype,\n funcProto = Function.prototype,\n objectProto = Object.prototype;\n\n/** Used to detect overreaching core-js shims. */\nvar coreJsData = root['__core-js_shared__'];\n\n/** Used to resolve the decompiled source of functions. */\nvar funcToString = funcProto.toString;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/** Used to detect methods masquerading as native. */\nvar maskSrcKey = (function() {\n var uid = /[^.]+$/.exec(coreJsData && coreJsData.keys && coreJsData.keys.IE_PROTO || '');\n return uid ? ('Symbol(src)_1.' + uid) : '';\n}());\n\n/**\n * Used to resolve the\n * [`toStringTag`](http://ecma-international.org/ecma-262/7.0/#sec-object.prototype.tostring)\n * of values.\n */\nvar nativeObjectToString = objectProto.toString;\n\n/** Used to detect if a method is native. */\nvar reIsNative = RegExp('^' +\n funcToString.call(hasOwnProperty).replace(reRegExpChar, '\\\\$&')\n .replace(/hasOwnProperty|(function).*?(?=\\\\\\()| for .+?(?=\\\\\\])/g, '$1.*?') + '$'\n);\n\n/** Built-in value references. */\nvar Buffer = moduleExports ? root.Buffer : undefined,\n Symbol = root.Symbol,\n Uint8Array = root.Uint8Array,\n propertyIsEnumerable = objectProto.propertyIsEnumerable,\n splice = arrayProto.splice,\n symToStringTag = Symbol ? Symbol.toStringTag : undefined;\n\n/* Built-in method references for those with the same name as other `lodash` methods. */\nvar nativeGetSymbols = Object.getOwnPropertySymbols,\n nativeIsBuffer = Buffer ? Buffer.isBuffer : undefined,\n nativeKeys = overArg(Object.keys, Object);\n\n/* Built-in method references that are verified to be native. */\nvar DataView = getNative(root, 'DataView'),\n Map = getNative(root, 'Map'),\n Promise = getNative(root, 'Promise'),\n Set = getNative(root, 'Set'),\n WeakMap = getNative(root, 'WeakMap'),\n nativeCreate = getNative(Object, 'create');\n\n/** Used to detect maps, sets, and weakmaps. */\nvar dataViewCtorString = toSource(DataView),\n mapCtorString = toSource(Map),\n promiseCtorString = toSource(Promise),\n setCtorString = toSource(Set),\n weakMapCtorString = toSource(WeakMap);\n\n/** Used to convert symbols to primitives and strings. */\nvar symbolProto = Symbol ? Symbol.prototype : undefined,\n symbolValueOf = symbolProto ? symbolProto.valueOf : undefined;\n\n/**\n * Creates a hash object.\n *\n * @private\n * @constructor\n * @param {Array} [entries] The key-value pairs to cache.\n */\nfunction Hash(entries) {\n var index = -1,\n length = entries == null ? 0 : entries.length;\n\n this.clear();\n while (++index < length) {\n var entry = entries[index];\n this.set(entry[0], entry[1]);\n }\n}\n\n/**\n * Removes all key-value entries from the hash.\n *\n * @private\n * @name clear\n * @memberOf Hash\n */\nfunction hashClear() {\n this.__data__ = nativeCreate ? nativeCreate(null) : {};\n this.size = 0;\n}\n\n/**\n * Removes `key` and its value from the hash.\n *\n * @private\n * @name delete\n * @memberOf Hash\n * @param {Object} hash The hash to modify.\n * @param {string} key The key of the value to remove.\n * @returns {boolean} Returns `true` if the entry was removed, else `false`.\n */\nfunction hashDelete(key) {\n var result = this.has(key) && delete this.__data__[key];\n this.size -= result ? 1 : 0;\n return result;\n}\n\n/**\n * Gets the hash value for `key`.\n *\n * @private\n * @name get\n * @memberOf Hash\n * @param {string} key The key of the value to get.\n * @returns {*} Returns the entry value.\n */\nfunction hashGet(key) {\n var data = this.__data__;\n if (nativeCreate) {\n var result = data[key];\n return result === HASH_UNDEFINED ? undefined : result;\n }\n return hasOwnProperty.call(data, key) ? data[key] : undefined;\n}\n\n/**\n * Checks if a hash value for `key` exists.\n *\n * @private\n * @name has\n * @memberOf Hash\n * @param {string} key The key of the entry to check.\n * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.\n */\nfunction hashHas(key) {\n var data = this.__data__;\n return nativeCreate ? (data[key] !== undefined) : hasOwnProperty.call(data, key);\n}\n\n/**\n * Sets the hash `key` to `value`.\n *\n * @private\n * @name set\n * @memberOf Hash\n * @param {string} key The key of the value to set.\n * @param {*} value The value to set.\n * @returns {Object} Returns the hash instance.\n */\nfunction hashSet(key, value) {\n var data = this.__data__;\n this.size += this.has(key) ? 0 : 1;\n data[key] = (nativeCreate && value === undefined) ? HASH_UNDEFINED : value;\n return this;\n}\n\n// Add methods to `Hash`.\nHash.prototype.clear = hashClear;\nHash.prototype['delete'] = hashDelete;\nHash.prototype.get = hashGet;\nHash.prototype.has = hashHas;\nHash.prototype.set = hashSet;\n\n/**\n * Creates an list cache object.\n *\n * @private\n * @constructor\n * @param {Array} [entries] The key-value pairs to cache.\n */\nfunction ListCache(entries) {\n var index = -1,\n length = entries == null ? 0 : entries.length;\n\n this.clear();\n while (++index < length) {\n var entry = entries[index];\n this.set(entry[0], entry[1]);\n }\n}\n\n/**\n * Removes all key-value entries from the list cache.\n *\n * @private\n * @name clear\n * @memberOf ListCache\n */\nfunction listCacheClear() {\n this.__data__ = [];\n this.size = 0;\n}\n\n/**\n * Removes `key` and its value from the list cache.\n *\n * @private\n * @name delete\n * @memberOf ListCache\n * @param {string} key The key of the value to remove.\n * @returns {boolean} Returns `true` if the entry was removed, else `false`.\n */\nfunction listCacheDelete(key) {\n var data = this.__data__,\n index = assocIndexOf(data, key);\n\n if (index < 0) {\n return false;\n }\n var lastIndex = data.length - 1;\n if (index == lastIndex) {\n data.pop();\n } else {\n splice.call(data, index, 1);\n }\n --this.size;\n return true;\n}\n\n/**\n * Gets the list cache value for `key`.\n *\n * @private\n * @name get\n * @memberOf ListCache\n * @param {string} key The key of the value to get.\n * @returns {*} Returns the entry value.\n */\nfunction listCacheGet(key) {\n var data = this.__data__,\n index = assocIndexOf(data, key);\n\n return index < 0 ? undefined : data[index][1];\n}\n\n/**\n * Checks if a list cache value for `key` exists.\n *\n * @private\n * @name has\n * @memberOf ListCache\n * @param {string} key The key of the entry to check.\n * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.\n */\nfunction listCacheHas(key) {\n return assocIndexOf(this.__data__, key) > -1;\n}\n\n/**\n * Sets the list cache `key` to `value`.\n *\n * @private\n * @name set\n * @memberOf ListCache\n * @param {string} key The key of the value to set.\n * @param {*} value The value to set.\n * @returns {Object} Returns the list cache instance.\n */\nfunction listCacheSet(key, value) {\n var data = this.__data__,\n index = assocIndexOf(data, key);\n\n if (index < 0) {\n ++this.size;\n data.push([key, value]);\n } else {\n data[index][1] = value;\n }\n return this;\n}\n\n// Add methods to `ListCache`.\nListCache.prototype.clear = listCacheClear;\nListCache.prototype['delete'] = listCacheDelete;\nListCache.prototype.get = listCacheGet;\nListCache.prototype.has = listCacheHas;\nListCache.prototype.set = listCacheSet;\n\n/**\n * Creates a map cache object to store key-value pairs.\n *\n * @private\n * @constructor\n * @param {Array} [entries] The key-value pairs to cache.\n */\nfunction MapCache(entries) {\n var index = -1,\n length = entries == null ? 0 : entries.length;\n\n this.clear();\n while (++index < length) {\n var entry = entries[index];\n this.set(entry[0], entry[1]);\n }\n}\n\n/**\n * Removes all key-value entries from the map.\n *\n * @private\n * @name clear\n * @memberOf MapCache\n */\nfunction mapCacheClear() {\n this.size = 0;\n this.__data__ = {\n 'hash': new Hash,\n 'map': new (Map || ListCache),\n 'string': new Hash\n };\n}\n\n/**\n * Removes `key` and its value from the map.\n *\n * @private\n * @name delete\n * @memberOf MapCache\n * @param {string} key The key of the value to remove.\n * @returns {boolean} Returns `true` if the entry was removed, else `false`.\n */\nfunction mapCacheDelete(key) {\n var result = getMapData(this, key)['delete'](key);\n this.size -= result ? 1 : 0;\n return result;\n}\n\n/**\n * Gets the map value for `key`.\n *\n * @private\n * @name get\n * @memberOf MapCache\n * @param {string} key The key of the value to get.\n * @returns {*} Returns the entry value.\n */\nfunction mapCacheGet(key) {\n return getMapData(this, key).get(key);\n}\n\n/**\n * Checks if a map value for `key` exists.\n *\n * @private\n * @name has\n * @memberOf MapCache\n * @param {string} key The key of the entry to check.\n * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.\n */\nfunction mapCacheHas(key) {\n return getMapData(this, key).has(key);\n}\n\n/**\n * Sets the map `key` to `value`.\n *\n * @private\n * @name set\n * @memberOf MapCache\n * @param {string} key The key of the value to set.\n * @param {*} value The value to set.\n * @returns {Object} Returns the map cache instance.\n */\nfunction mapCacheSet(key, value) {\n var data = getMapData(this, key),\n size = data.size;\n\n data.set(key, value);\n this.size += data.size == size ? 0 : 1;\n return this;\n}\n\n// Add methods to `MapCache`.\nMapCache.prototype.clear = mapCacheClear;\nMapCache.prototype['delete'] = mapCacheDelete;\nMapCache.prototype.get = mapCacheGet;\nMapCache.prototype.has = mapCacheHas;\nMapCache.prototype.set = mapCacheSet;\n\n/**\n *\n * Creates an array cache object to store unique values.\n *\n * @private\n * @constructor\n * @param {Array} [values] The values to cache.\n */\nfunction SetCache(values) {\n var index = -1,\n length = values == null ? 0 : values.length;\n\n this.__data__ = new MapCache;\n while (++index < length) {\n this.add(values[index]);\n }\n}\n\n/**\n * Adds `value` to the array cache.\n *\n * @private\n * @name add\n * @memberOf SetCache\n * @alias push\n * @param {*} value The value to cache.\n * @returns {Object} Returns the cache instance.\n */\nfunction setCacheAdd(value) {\n this.__data__.set(value, HASH_UNDEFINED);\n return this;\n}\n\n/**\n * Checks if `value` is in the array cache.\n *\n * @private\n * @name has\n * @memberOf SetCache\n * @param {*} value The value to search for.\n * @returns {number} Returns `true` if `value` is found, else `false`.\n */\nfunction setCacheHas(value) {\n return this.__data__.has(value);\n}\n\n// Add methods to `SetCache`.\nSetCache.prototype.add = SetCache.prototype.push = setCacheAdd;\nSetCache.prototype.has = setCacheHas;\n\n/**\n * Creates a stack cache object to store key-value pairs.\n *\n * @private\n * @constructor\n * @param {Array} [entries] The key-value pairs to cache.\n */\nfunction Stack(entries) {\n var data = this.__data__ = new ListCache(entries);\n this.size = data.size;\n}\n\n/**\n * Removes all key-value entries from the stack.\n *\n * @private\n * @name clear\n * @memberOf Stack\n */\nfunction stackClear() {\n this.__data__ = new ListCache;\n this.size = 0;\n}\n\n/**\n * Removes `key` and its value from the stack.\n *\n * @private\n * @name delete\n * @memberOf Stack\n * @param {string} key The key of the value to remove.\n * @returns {boolean} Returns `true` if the entry was removed, else `false`.\n */\nfunction stackDelete(key) {\n var data = this.__data__,\n result = data['delete'](key);\n\n this.size = data.size;\n return result;\n}\n\n/**\n * Gets the stack value for `key`.\n *\n * @private\n * @name get\n * @memberOf Stack\n * @param {string} key The key of the value to get.\n * @returns {*} Returns the entry value.\n */\nfunction stackGet(key) {\n return this.__data__.get(key);\n}\n\n/**\n * Checks if a stack value for `key` exists.\n *\n * @private\n * @name has\n * @memberOf Stack\n * @param {string} key The key of the entry to check.\n * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.\n */\nfunction stackHas(key) {\n return this.__data__.has(key);\n}\n\n/**\n * Sets the stack `key` to `value`.\n *\n * @private\n * @name set\n * @memberOf Stack\n * @param {string} key The key of the value to set.\n * @param {*} value The value to set.\n * @returns {Object} Returns the stack cache instance.\n */\nfunction stackSet(key, value) {\n var data = this.__data__;\n if (data instanceof ListCache) {\n var pairs = data.__data__;\n if (!Map || (pairs.length < LARGE_ARRAY_SIZE - 1)) {\n pairs.push([key, value]);\n this.size = ++data.size;\n return this;\n }\n data = this.__data__ = new MapCache(pairs);\n }\n data.set(key, value);\n this.size = data.size;\n return this;\n}\n\n// Add methods to `Stack`.\nStack.prototype.clear = stackClear;\nStack.prototype['delete'] = stackDelete;\nStack.prototype.get = stackGet;\nStack.prototype.has = stackHas;\nStack.prototype.set = stackSet;\n\n/**\n * Creates an array of the enumerable property names of the array-like `value`.\n *\n * @private\n * @param {*} value The value to query.\n * @param {boolean} inherited Specify returning inherited property names.\n * @returns {Array} Returns the array of property names.\n */\nfunction arrayLikeKeys(value, inherited) {\n var isArr = isArray(value),\n isArg = !isArr && isArguments(value),\n isBuff = !isArr && !isArg && isBuffer(value),\n isType = !isArr && !isArg && !isBuff && isTypedArray(value),\n skipIndexes = isArr || isArg || isBuff || isType,\n result = skipIndexes ? baseTimes(value.length, String) : [],\n length = result.length;\n\n for (var key in value) {\n if ((inherited || hasOwnProperty.call(value, key)) &&\n !(skipIndexes && (\n // Safari 9 has enumerable `arguments.length` in strict mode.\n key == 'length' ||\n // Node.js 0.10 has enumerable non-index properties on buffers.\n (isBuff && (key == 'offset' || key == 'parent')) ||\n // PhantomJS 2 has enumerable non-index properties on typed arrays.\n (isType && (key == 'buffer' || key == 'byteLength' || key == 'byteOffset')) ||\n // Skip index properties.\n isIndex(key, length)\n ))) {\n result.push(key);\n }\n }\n return result;\n}\n\n/**\n * Gets the index at which the `key` is found in `array` of key-value pairs.\n *\n * @private\n * @param {Array} array The array to inspect.\n * @param {*} key The key to search for.\n * @returns {number} Returns the index of the matched value, else `-1`.\n */\nfunction assocIndexOf(array, key) {\n var length = array.length;\n while (length--) {\n if (eq(array[length][0], key)) {\n return length;\n }\n }\n return -1;\n}\n\n/**\n * The base implementation of `getAllKeys` and `getAllKeysIn` which uses\n * `keysFunc` and `symbolsFunc` to get the enumerable property names and\n * symbols of `object`.\n *\n * @private\n * @param {Object} object The object to query.\n * @param {Function} keysFunc The function to get the keys of `object`.\n * @param {Function} symbolsFunc The function to get the symbols of `object`.\n * @returns {Array} Returns the array of property names and symbols.\n */\nfunction baseGetAllKeys(object, keysFunc, symbolsFunc) {\n var result = keysFunc(object);\n return isArray(object) ? result : arrayPush(result, symbolsFunc(object));\n}\n\n/**\n * The base implementation of `getTag` without fallbacks for buggy environments.\n *\n * @private\n * @param {*} value The value to query.\n * @returns {string} Returns the `toStringTag`.\n */\nfunction baseGetTag(value) {\n if (value == null) {\n return value === undefined ? undefinedTag : nullTag;\n }\n return (symToStringTag && symToStringTag in Object(value))\n ? getRawTag(value)\n : objectToString(value);\n}\n\n/**\n * The base implementation of `_.isArguments`.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an `arguments` object,\n */\nfunction baseIsArguments(value) {\n return isObjectLike(value) && baseGetTag(value) == argsTag;\n}\n\n/**\n * The base implementation of `_.isEqual` which supports partial comparisons\n * and tracks traversed objects.\n *\n * @private\n * @param {*} value The value to compare.\n * @param {*} other The other value to compare.\n * @param {boolean} bitmask The bitmask flags.\n * 1 - Unordered comparison\n * 2 - Partial comparison\n * @param {Function} [customizer] The function to customize comparisons.\n * @param {Object} [stack] Tracks traversed `value` and `other` objects.\n * @returns {boolean} Returns `true` if the values are equivalent, else `false`.\n */\nfunction baseIsEqual(value, other, bitmask, customizer, stack) {\n if (value === other) {\n return true;\n }\n if (value == null || other == null || (!isObjectLike(value) && !isObjectLike(other))) {\n return value !== value && other !== other;\n }\n return baseIsEqualDeep(value, other, bitmask, customizer, baseIsEqual, stack);\n}\n\n/**\n * A specialized version of `baseIsEqual` for arrays and objects which performs\n * deep comparisons and tracks traversed objects enabling objects with circular\n * references to be compared.\n *\n * @private\n * @param {Object} object The object to compare.\n * @param {Object} other The other object to compare.\n * @param {number} bitmask The bitmask flags. See `baseIsEqual` for more details.\n * @param {Function} customizer The function to customize comparisons.\n * @param {Function} equalFunc The function to determine equivalents of values.\n * @param {Object} [stack] Tracks traversed `object` and `other` objects.\n * @returns {boolean} Returns `true` if the objects are equivalent, else `false`.\n */\nfunction baseIsEqualDeep(object, other, bitmask, customizer, equalFunc, stack) {\n var objIsArr = isArray(object),\n othIsArr = isArray(other),\n objTag = objIsArr ? arrayTag : getTag(object),\n othTag = othIsArr ? arrayTag : getTag(other);\n\n objTag = objTag == argsTag ? objectTag : objTag;\n othTag = othTag == argsTag ? objectTag : othTag;\n\n var objIsObj = objTag == objectTag,\n othIsObj = othTag == objectTag,\n isSameTag = objTag == othTag;\n\n if (isSameTag && isBuffer(object)) {\n if (!isBuffer(other)) {\n return false;\n }\n objIsArr = true;\n objIsObj = false;\n }\n if (isSameTag && !objIsObj) {\n stack || (stack = new Stack);\n return (objIsArr || isTypedArray(object))\n ? equalArrays(object, other, bitmask, customizer, equalFunc, stack)\n : equalByTag(object, other, objTag, bitmask, customizer, equalFunc, stack);\n }\n if (!(bitmask & COMPARE_PARTIAL_FLAG)) {\n var objIsWrapped = objIsObj && hasOwnProperty.call(object, '__wrapped__'),\n othIsWrapped = othIsObj && hasOwnProperty.call(other, '__wrapped__');\n\n if (objIsWrapped || othIsWrapped) {\n var objUnwrapped = objIsWrapped ? object.value() : object,\n othUnwrapped = othIsWrapped ? other.value() : other;\n\n stack || (stack = new Stack);\n return equalFunc(objUnwrapped, othUnwrapped, bitmask, customizer, stack);\n }\n }\n if (!isSameTag) {\n return false;\n }\n stack || (stack = new Stack);\n return equalObjects(object, other, bitmask, customizer, equalFunc, stack);\n}\n\n/**\n * The base implementation of `_.isNative` without bad shim checks.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a native function,\n * else `false`.\n */\nfunction baseIsNative(value) {\n if (!isObject(value) || isMasked(value)) {\n return false;\n }\n var pattern = isFunction(value) ? reIsNative : reIsHostCtor;\n return pattern.test(toSource(value));\n}\n\n/**\n * The base implementation of `_.isTypedArray` without Node.js optimizations.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a typed array, else `false`.\n */\nfunction baseIsTypedArray(value) {\n return isObjectLike(value) &&\n isLength(value.length) && !!typedArrayTags[baseGetTag(value)];\n}\n\n/**\n * The base implementation of `_.keys` which doesn't treat sparse arrays as dense.\n *\n * @private\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of property names.\n */\nfunction baseKeys(object) {\n if (!isPrototype(object)) {\n return nativeKeys(object);\n }\n var result = [];\n for (var key in Object(object)) {\n if (hasOwnProperty.call(object, key) && key != 'constructor') {\n result.push(key);\n }\n }\n return result;\n}\n\n/**\n * A specialized version of `baseIsEqualDeep` for arrays with support for\n * partial deep comparisons.\n *\n * @private\n * @param {Array} array The array to compare.\n * @param {Array} other The other array to compare.\n * @param {number} bitmask The bitmask flags. See `baseIsEqual` for more details.\n * @param {Function} customizer The function to customize comparisons.\n * @param {Function} equalFunc The function to determine equivalents of values.\n * @param {Object} stack Tracks traversed `array` and `other` objects.\n * @returns {boolean} Returns `true` if the arrays are equivalent, else `false`.\n */\nfunction equalArrays(array, other, bitmask, customizer, equalFunc, stack) {\n var isPartial = bitmask & COMPARE_PARTIAL_FLAG,\n arrLength = array.length,\n othLength = other.length;\n\n if (arrLength != othLength && !(isPartial && othLength > arrLength)) {\n return false;\n }\n // Assume cyclic values are equal.\n var stacked = stack.get(array);\n if (stacked && stack.get(other)) {\n return stacked == other;\n }\n var index = -1,\n result = true,\n seen = (bitmask & COMPARE_UNORDERED_FLAG) ? new SetCache : undefined;\n\n stack.set(array, other);\n stack.set(other, array);\n\n // Ignore non-index properties.\n while (++index < arrLength) {\n var arrValue = array[index],\n othValue = other[index];\n\n if (customizer) {\n var compared = isPartial\n ? customizer(othValue, arrValue, index, other, array, stack)\n : customizer(arrValue, othValue, index, array, other, stack);\n }\n if (compared !== undefined) {\n if (compared) {\n continue;\n }\n result = false;\n break;\n }\n // Recursively compare arrays (susceptible to call stack limits).\n if (seen) {\n if (!arraySome(other, function(othValue, othIndex) {\n if (!cacheHas(seen, othIndex) &&\n (arrValue === othValue || equalFunc(arrValue, othValue, bitmask, customizer, stack))) {\n return seen.push(othIndex);\n }\n })) {\n result = false;\n break;\n }\n } else if (!(\n arrValue === othValue ||\n equalFunc(arrValue, othValue, bitmask, customizer, stack)\n )) {\n result = false;\n break;\n }\n }\n stack['delete'](array);\n stack['delete'](other);\n return result;\n}\n\n/**\n * A specialized version of `baseIsEqualDeep` for comparing objects of\n * the same `toStringTag`.\n *\n * **Note:** This function only supports comparing values with tags of\n * `Boolean`, `Date`, `Error`, `Number`, `RegExp`, or `String`.\n *\n * @private\n * @param {Object} object The object to compare.\n * @param {Object} other The other object to compare.\n * @param {string} tag The `toStringTag` of the objects to compare.\n * @param {number} bitmask The bitmask flags. See `baseIsEqual` for more details.\n * @param {Function} customizer The function to customize comparisons.\n * @param {Function} equalFunc The function to determine equivalents of values.\n * @param {Object} stack Tracks traversed `object` and `other` objects.\n * @returns {boolean} Returns `true` if the objects are equivalent, else `false`.\n */\nfunction equalByTag(object, other, tag, bitmask, customizer, equalFunc, stack) {\n switch (tag) {\n case dataViewTag:\n if ((object.byteLength != other.byteLength) ||\n (object.byteOffset != other.byteOffset)) {\n return false;\n }\n object = object.buffer;\n other = other.buffer;\n\n case arrayBufferTag:\n if ((object.byteLength != other.byteLength) ||\n !equalFunc(new Uint8Array(object), new Uint8Array(other))) {\n return false;\n }\n return true;\n\n case boolTag:\n case dateTag:\n case numberTag:\n // Coerce booleans to `1` or `0` and dates to milliseconds.\n // Invalid dates are coerced to `NaN`.\n return eq(+object, +other);\n\n case errorTag:\n return object.name == other.name && object.message == other.message;\n\n case regexpTag:\n case stringTag:\n // Coerce regexes to strings and treat strings, primitives and objects,\n // as equal. See http://www.ecma-international.org/ecma-262/7.0/#sec-regexp.prototype.tostring\n // for more details.\n return object == (other + '');\n\n case mapTag:\n var convert = mapToArray;\n\n case setTag:\n var isPartial = bitmask & COMPARE_PARTIAL_FLAG;\n convert || (convert = setToArray);\n\n if (object.size != other.size && !isPartial) {\n return false;\n }\n // Assume cyclic values are equal.\n var stacked = stack.get(object);\n if (stacked) {\n return stacked == other;\n }\n bitmask |= COMPARE_UNORDERED_FLAG;\n\n // Recursively compare objects (susceptible to call stack limits).\n stack.set(object, other);\n var result = equalArrays(convert(object), convert(other), bitmask, customizer, equalFunc, stack);\n stack['delete'](object);\n return result;\n\n case symbolTag:\n if (symbolValueOf) {\n return symbolValueOf.call(object) == symbolValueOf.call(other);\n }\n }\n return false;\n}\n\n/**\n * A specialized version of `baseIsEqualDeep` for objects with support for\n * partial deep comparisons.\n *\n * @private\n * @param {Object} object The object to compare.\n * @param {Object} other The other object to compare.\n * @param {number} bitmask The bitmask flags. See `baseIsEqual` for more details.\n * @param {Function} customizer The function to customize comparisons.\n * @param {Function} equalFunc The function to determine equivalents of values.\n * @param {Object} stack Tracks traversed `object` and `other` objects.\n * @returns {boolean} Returns `true` if the objects are equivalent, else `false`.\n */\nfunction equalObjects(object, other, bitmask, customizer, equalFunc, stack) {\n var isPartial = bitmask & COMPARE_PARTIAL_FLAG,\n objProps = getAllKeys(object),\n objLength = objProps.length,\n othProps = getAllKeys(other),\n othLength = othProps.length;\n\n if (objLength != othLength && !isPartial) {\n return false;\n }\n var index = objLength;\n while (index--) {\n var key = objProps[index];\n if (!(isPartial ? key in other : hasOwnProperty.call(other, key))) {\n return false;\n }\n }\n // Assume cyclic values are equal.\n var stacked = stack.get(object);\n if (stacked && stack.get(other)) {\n return stacked == other;\n }\n var result = true;\n stack.set(object, other);\n stack.set(other, object);\n\n var skipCtor = isPartial;\n while (++index < objLength) {\n key = objProps[index];\n var objValue = object[key],\n othValue = other[key];\n\n if (customizer) {\n var compared = isPartial\n ? customizer(othValue, objValue, key, other, object, stack)\n : customizer(objValue, othValue, key, object, other, stack);\n }\n // Recursively compare objects (susceptible to call stack limits).\n if (!(compared === undefined\n ? (objValue === othValue || equalFunc(objValue, othValue, bitmask, customizer, stack))\n : compared\n )) {\n result = false;\n break;\n }\n skipCtor || (skipCtor = key == 'constructor');\n }\n if (result && !skipCtor) {\n var objCtor = object.constructor,\n othCtor = other.constructor;\n\n // Non `Object` object instances with different constructors are not equal.\n if (objCtor != othCtor &&\n ('constructor' in object && 'constructor' in other) &&\n !(typeof objCtor == 'function' && objCtor instanceof objCtor &&\n typeof othCtor == 'function' && othCtor instanceof othCtor)) {\n result = false;\n }\n }\n stack['delete'](object);\n stack['delete'](other);\n return result;\n}\n\n/**\n * Creates an array of own enumerable property names and symbols of `object`.\n *\n * @private\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of property names and symbols.\n */\nfunction getAllKeys(object) {\n return baseGetAllKeys(object, keys, getSymbols);\n}\n\n/**\n * Gets the data for `map`.\n *\n * @private\n * @param {Object} map The map to query.\n * @param {string} key The reference key.\n * @returns {*} Returns the map data.\n */\nfunction getMapData(map, key) {\n var data = map.__data__;\n return isKeyable(key)\n ? data[typeof key == 'string' ? 'string' : 'hash']\n : data.map;\n}\n\n/**\n * Gets the native function at `key` of `object`.\n *\n * @private\n * @param {Object} object The object to query.\n * @param {string} key The key of the method to get.\n * @returns {*} Returns the function if it's native, else `undefined`.\n */\nfunction getNative(object, key) {\n var value = getValue(object, key);\n return baseIsNative(value) ? value : undefined;\n}\n\n/**\n * A specialized version of `baseGetTag` which ignores `Symbol.toStringTag` values.\n *\n * @private\n * @param {*} value The value to query.\n * @returns {string} Returns the raw `toStringTag`.\n */\nfunction getRawTag(value) {\n var isOwn = hasOwnProperty.call(value, symToStringTag),\n tag = value[symToStringTag];\n\n try {\n value[symToStringTag] = undefined;\n var unmasked = true;\n } catch (e) {}\n\n var result = nativeObjectToString.call(value);\n if (unmasked) {\n if (isOwn) {\n value[symToStringTag] = tag;\n } else {\n delete value[symToStringTag];\n }\n }\n return result;\n}\n\n/**\n * Creates an array of the own enumerable symbols of `object`.\n *\n * @private\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of symbols.\n */\nvar getSymbols = !nativeGetSymbols ? stubArray : function(object) {\n if (object == null) {\n return [];\n }\n object = Object(object);\n return arrayFilter(nativeGetSymbols(object), function(symbol) {\n return propertyIsEnumerable.call(object, symbol);\n });\n};\n\n/**\n * Gets the `toStringTag` of `value`.\n *\n * @private\n * @param {*} value The value to query.\n * @returns {string} Returns the `toStringTag`.\n */\nvar getTag = baseGetTag;\n\n// Fallback for data views, maps, sets, and weak maps in IE 11 and promises in Node.js < 6.\nif ((DataView && getTag(new DataView(new ArrayBuffer(1))) != dataViewTag) ||\n (Map && getTag(new Map) != mapTag) ||\n (Promise && getTag(Promise.resolve()) != promiseTag) ||\n (Set && getTag(new Set) != setTag) ||\n (WeakMap && getTag(new WeakMap) != weakMapTag)) {\n getTag = function(value) {\n var result = baseGetTag(value),\n Ctor = result == objectTag ? value.constructor : undefined,\n ctorString = Ctor ? toSource(Ctor) : '';\n\n if (ctorString) {\n switch (ctorString) {\n case dataViewCtorString: return dataViewTag;\n case mapCtorString: return mapTag;\n case promiseCtorString: return promiseTag;\n case setCtorString: return setTag;\n case weakMapCtorString: return weakMapTag;\n }\n }\n return result;\n };\n}\n\n/**\n * Checks if `value` is a valid array-like index.\n *\n * @private\n * @param {*} value The value to check.\n * @param {number} [length=MAX_SAFE_INTEGER] The upper bounds of a valid index.\n * @returns {boolean} Returns `true` if `value` is a valid index, else `false`.\n */\nfunction isIndex(value, length) {\n length = length == null ? MAX_SAFE_INTEGER : length;\n return !!length &&\n (typeof value == 'number' || reIsUint.test(value)) &&\n (value > -1 && value % 1 == 0 && value < length);\n}\n\n/**\n * Checks if `value` is suitable for use as unique object key.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is suitable, else `false`.\n */\nfunction isKeyable(value) {\n var type = typeof value;\n return (type == 'string' || type == 'number' || type == 'symbol' || type == 'boolean')\n ? (value !== '__proto__')\n : (value === null);\n}\n\n/**\n * Checks if `func` has its source masked.\n *\n * @private\n * @param {Function} func The function to check.\n * @returns {boolean} Returns `true` if `func` is masked, else `false`.\n */\nfunction isMasked(func) {\n return !!maskSrcKey && (maskSrcKey in func);\n}\n\n/**\n * Checks if `value` is likely a prototype object.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a prototype, else `false`.\n */\nfunction isPrototype(value) {\n var Ctor = value && value.constructor,\n proto = (typeof Ctor == 'function' && Ctor.prototype) || objectProto;\n\n return value === proto;\n}\n\n/**\n * Converts `value` to a string using `Object.prototype.toString`.\n *\n * @private\n * @param {*} value The value to convert.\n * @returns {string} Returns the converted string.\n */\nfunction objectToString(value) {\n return nativeObjectToString.call(value);\n}\n\n/**\n * Converts `func` to its source code.\n *\n * @private\n * @param {Function} func The function to convert.\n * @returns {string} Returns the source code.\n */\nfunction toSource(func) {\n if (func != null) {\n try {\n return funcToString.call(func);\n } catch (e) {}\n try {\n return (func + '');\n } catch (e) {}\n }\n return '';\n}\n\n/**\n * Performs a\n * [`SameValueZero`](http://ecma-international.org/ecma-262/7.0/#sec-samevaluezero)\n * comparison between two values to determine if they are equivalent.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to compare.\n * @param {*} other The other value to compare.\n * @returns {boolean} Returns `true` if the values are equivalent, else `false`.\n * @example\n *\n * var object = { 'a': 1 };\n * var other = { 'a': 1 };\n *\n * _.eq(object, object);\n * // => true\n *\n * _.eq(object, other);\n * // => false\n *\n * _.eq('a', 'a');\n * // => true\n *\n * _.eq('a', Object('a'));\n * // => false\n *\n * _.eq(NaN, NaN);\n * // => true\n */\nfunction eq(value, other) {\n return value === other || (value !== value && other !== other);\n}\n\n/**\n * Checks if `value` is likely an `arguments` object.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an `arguments` object,\n * else `false`.\n * @example\n *\n * _.isArguments(function() { return arguments; }());\n * // => true\n *\n * _.isArguments([1, 2, 3]);\n * // => false\n */\nvar isArguments = baseIsArguments(function() { return arguments; }()) ? baseIsArguments : function(value) {\n return isObjectLike(value) && hasOwnProperty.call(value, 'callee') &&\n !propertyIsEnumerable.call(value, 'callee');\n};\n\n/**\n * Checks if `value` is classified as an `Array` object.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an array, else `false`.\n * @example\n *\n * _.isArray([1, 2, 3]);\n * // => true\n *\n * _.isArray(document.body.children);\n * // => false\n *\n * _.isArray('abc');\n * // => false\n *\n * _.isArray(_.noop);\n * // => false\n */\nvar isArray = Array.isArray;\n\n/**\n * Checks if `value` is array-like. A value is considered array-like if it's\n * not a function and has a `value.length` that's an integer greater than or\n * equal to `0` and less than or equal to `Number.MAX_SAFE_INTEGER`.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is array-like, else `false`.\n * @example\n *\n * _.isArrayLike([1, 2, 3]);\n * // => true\n *\n * _.isArrayLike(document.body.children);\n * // => true\n *\n * _.isArrayLike('abc');\n * // => true\n *\n * _.isArrayLike(_.noop);\n * // => false\n */\nfunction isArrayLike(value) {\n return value != null && isLength(value.length) && !isFunction(value);\n}\n\n/**\n * Checks if `value` is a buffer.\n *\n * @static\n * @memberOf _\n * @since 4.3.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a buffer, else `false`.\n * @example\n *\n * _.isBuffer(new Buffer(2));\n * // => true\n *\n * _.isBuffer(new Uint8Array(2));\n * // => false\n */\nvar isBuffer = nativeIsBuffer || stubFalse;\n\n/**\n * Performs a deep comparison between two values to determine if they are\n * equivalent.\n *\n * **Note:** This method supports comparing arrays, array buffers, booleans,\n * date objects, error objects, maps, numbers, `Object` objects, regexes,\n * sets, strings, symbols, and typed arrays. `Object` objects are compared\n * by their own, not inherited, enumerable properties. Functions and DOM\n * nodes are compared by strict equality, i.e. `===`.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to compare.\n * @param {*} other The other value to compare.\n * @returns {boolean} Returns `true` if the values are equivalent, else `false`.\n * @example\n *\n * var object = { 'a': 1 };\n * var other = { 'a': 1 };\n *\n * _.isEqual(object, other);\n * // => true\n *\n * object === other;\n * // => false\n */\nfunction isEqual(value, other) {\n return baseIsEqual(value, other);\n}\n\n/**\n * Checks if `value` is classified as a `Function` object.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a function, else `false`.\n * @example\n *\n * _.isFunction(_);\n * // => true\n *\n * _.isFunction(/abc/);\n * // => false\n */\nfunction isFunction(value) {\n if (!isObject(value)) {\n return false;\n }\n // The use of `Object#toString` avoids issues with the `typeof` operator\n // in Safari 9 which returns 'object' for typed arrays and other constructors.\n var tag = baseGetTag(value);\n return tag == funcTag || tag == genTag || tag == asyncTag || tag == proxyTag;\n}\n\n/**\n * Checks if `value` is a valid array-like length.\n *\n * **Note:** This method is loosely based on\n * [`ToLength`](http://ecma-international.org/ecma-262/7.0/#sec-tolength).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a valid length, else `false`.\n * @example\n *\n * _.isLength(3);\n * // => true\n *\n * _.isLength(Number.MIN_VALUE);\n * // => false\n *\n * _.isLength(Infinity);\n * // => false\n *\n * _.isLength('3');\n * // => false\n */\nfunction isLength(value) {\n return typeof value == 'number' &&\n value > -1 && value % 1 == 0 && value <= MAX_SAFE_INTEGER;\n}\n\n/**\n * Checks if `value` is the\n * [language type](http://www.ecma-international.org/ecma-262/7.0/#sec-ecmascript-language-types)\n * of `Object`. (e.g. arrays, functions, objects, regexes, `new Number(0)`, and `new String('')`)\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an object, else `false`.\n * @example\n *\n * _.isObject({});\n * // => true\n *\n * _.isObject([1, 2, 3]);\n * // => true\n *\n * _.isObject(_.noop);\n * // => true\n *\n * _.isObject(null);\n * // => false\n */\nfunction isObject(value) {\n var type = typeof value;\n return value != null && (type == 'object' || type == 'function');\n}\n\n/**\n * Checks if `value` is object-like. A value is object-like if it's not `null`\n * and has a `typeof` result of \"object\".\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is object-like, else `false`.\n * @example\n *\n * _.isObjectLike({});\n * // => true\n *\n * _.isObjectLike([1, 2, 3]);\n * // => true\n *\n * _.isObjectLike(_.noop);\n * // => false\n *\n * _.isObjectLike(null);\n * // => false\n */\nfunction isObjectLike(value) {\n return value != null && typeof value == 'object';\n}\n\n/**\n * Checks if `value` is classified as a typed array.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a typed array, else `false`.\n * @example\n *\n * _.isTypedArray(new Uint8Array);\n * // => true\n *\n * _.isTypedArray([]);\n * // => false\n */\nvar isTypedArray = nodeIsTypedArray ? baseUnary(nodeIsTypedArray) : baseIsTypedArray;\n\n/**\n * Creates an array of the own enumerable property names of `object`.\n *\n * **Note:** Non-object values are coerced to objects. See the\n * [ES spec](http://ecma-international.org/ecma-262/7.0/#sec-object.keys)\n * for more details.\n *\n * @static\n * @since 0.1.0\n * @memberOf _\n * @category Object\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of property names.\n * @example\n *\n * function Foo() {\n * this.a = 1;\n * this.b = 2;\n * }\n *\n * Foo.prototype.c = 3;\n *\n * _.keys(new Foo);\n * // => ['a', 'b'] (iteration order is not guaranteed)\n *\n * _.keys('hi');\n * // => ['0', '1']\n */\nfunction keys(object) {\n return isArrayLike(object) ? arrayLikeKeys(object) : baseKeys(object);\n}\n\n/**\n * This method returns a new empty array.\n *\n * @static\n * @memberOf _\n * @since 4.13.0\n * @category Util\n * @returns {Array} Returns the new empty array.\n * @example\n *\n * var arrays = _.times(2, _.stubArray);\n *\n * console.log(arrays);\n * // => [[], []]\n *\n * console.log(arrays[0] === arrays[1]);\n * // => false\n */\nfunction stubArray() {\n return [];\n}\n\n/**\n * This method returns `false`.\n *\n * @static\n * @memberOf _\n * @since 4.13.0\n * @category Util\n * @returns {boolean} Returns `false`.\n * @example\n *\n * _.times(2, _.stubFalse);\n * // => [false, false]\n */\nfunction stubFalse() {\n return false;\n}\n\nmodule.exports = isEqual;\n","/**\r\n * Wraps values in an `Ok` type.\r\n *\r\n * Example: `ok(5) // => {ok: true, result: 5}`\r\n */\r\nvar ok = function (result) { return ({ ok: true, result: result }); };\r\n/**\r\n * Typeguard for `Ok`.\r\n */\r\nvar isOk = function (r) { return r.ok === true; };\r\n/**\r\n * Wraps errors in an `Err` type.\r\n *\r\n * Example: `err('on fire') // => {ok: false, error: 'on fire'}`\r\n */\r\nvar err = function (error) { return ({ ok: false, error: error }); };\r\n/**\r\n * Typeguard for `Err`.\r\n */\r\nvar isErr = function (r) { return r.ok === false; };\r\n/**\r\n * Create a `Promise` that either resolves with the result of `Ok` or rejects\r\n * with the error of `Err`.\r\n */\r\nvar asPromise = function (r) {\r\n return r.ok === true ? Promise.resolve(r.result) : Promise.reject(r.error);\r\n};\r\n/**\r\n * Unwraps a `Result` and returns either the result of an `Ok`, or\r\n * `defaultValue`.\r\n *\r\n * Example:\r\n * ```\r\n * Result.withDefault(5, number().run(json))\r\n * ```\r\n *\r\n * It would be nice if `Decoder` had an instance method that mirrored this\r\n * function. Such a method would look something like this:\r\n * ```\r\n * class Decoder<A> {\r\n * runWithDefault = (defaultValue: A, json: any): A =>\r\n * Result.withDefault(defaultValue, this.run(json));\r\n * }\r\n *\r\n * number().runWithDefault(5, json)\r\n * ```\r\n * Unfortunately, the type of `defaultValue: A` on the method causes issues\r\n * with type inference on the `object` decoder in some situations. While these\r\n * inference issues can be solved by providing the optional type argument for\r\n * `object`s, the extra trouble and confusion doesn't seem worth it.\r\n */\r\nvar withDefault = function (defaultValue, r) {\r\n return r.ok === true ? r.result : defaultValue;\r\n};\r\n/**\r\n * Return the successful result, or throw an error.\r\n */\r\nvar withException = function (r) {\r\n if (r.ok === true) {\r\n return r.result;\r\n }\r\n else {\r\n throw r.error;\r\n }\r\n};\r\n/**\r\n * Given an array of `Result`s, return the successful values.\r\n */\r\nvar successes = function (results) {\r\n return results.reduce(function (acc, r) { return (r.ok === true ? acc.concat(r.result) : acc); }, []);\r\n};\r\n/**\r\n * Apply `f` to the result of an `Ok`, or pass the error through.\r\n */\r\nvar map = function (f, r) {\r\n return r.ok === true ? ok(f(r.result)) : r;\r\n};\r\n/**\r\n * Apply `f` to the result of two `Ok`s, or pass an error through. If both\r\n * `Result`s are errors then the first one is returned.\r\n */\r\nvar map2 = function (f, ar, br) {\r\n return ar.ok === false ? ar :\r\n br.ok === false ? br :\r\n ok(f(ar.result, br.result));\r\n};\r\n/**\r\n * Apply `f` to the error of an `Err`, or pass the success through.\r\n */\r\nvar mapError = function (f, r) {\r\n return r.ok === true ? r : err(f(r.error));\r\n};\r\n/**\r\n * Chain together a sequence of computations that may fail, similar to a\r\n * `Promise`. If the first computation fails then the error will propagate\r\n * through. If it succeeds, then `f` will be applied to the value, returning a\r\n * new `Result`.\r\n */\r\nvar andThen = function (f, r) {\r\n return r.ok === true ? f(r.result) : r;\r\n};\r\n\n\nvar result = Object.freeze({\n\tok: ok,\n\tisOk: isOk,\n\terr: err,\n\tisErr: isErr,\n\tasPromise: asPromise,\n\twithDefault: withDefault,\n\twithException: withException,\n\tsuccesses: successes,\n\tmap: map,\n\tmap2: map2,\n\tmapError: mapError,\n\tandThen: andThen\n});\n\n/*! *****************************************************************************\r\nCopyright (c) Microsoft Corporation. All rights reserved.\r\nLicensed under the Apache License, Version 2.0 (the \"License\"); you may not use\r\nthis file except in compliance with the License. You may obtain a copy of the\r\nLicense at http://www.apache.org/licenses/LICENSE-2.0\r\n\r\nTHIS CODE IS PROVIDED ON AN *AS IS* BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\r\nKIND, EITHER EXPRESS OR IMPLIED, INCLUDING WITHOUT LIMITATION ANY IMPLIED\r\nWARRANTIES OR CONDITIONS OF TITLE, FITNESS FOR A PARTICULAR PURPOSE,\r\nMERCHANTABLITY OR NON-INFRINGEMENT.\r\n\r\nSee the Apache Version 2.0 License for specific language governing permissions\r\nand limitations under the License.\r\n***************************************************************************** */\r\n/* global Reflect, Promise */\r\n\r\n\r\n\r\nvar __assign = function() {\r\n __assign = Object.assign || function __assign(t) {\r\n for (var s, i = 1, n = arguments.length; i < n; i++) {\r\n s = arguments[i];\r\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p];\r\n }\r\n return t;\r\n };\r\n return __assign.apply(this, arguments);\r\n};\r\n\r\nfunction __rest(s, e) {\r\n var t = {};\r\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)\r\n t[p] = s[p];\r\n if (s != null && typeof Object.getOwnPropertySymbols === \"function\")\r\n for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) if (e.indexOf(p[i]) < 0)\r\n t[p[i]] = s[p[i]];\r\n return t;\r\n}\n\nvar isEqual = require('lodash.isequal'); // this syntax avoids TS1192\r\n/**\r\n * Type guard for `DecoderError`. One use case of the type guard is in the\r\n * `catch` of a promise. Typescript types the error argument of `catch` as\r\n * `any`, so when dealing with a decoder as a promise you may need to\r\n * distinguish between a `DecoderError` and an error string.\r\n */\r\nvar isDecoderError = function (a) {\r\n return a.kind === 'DecoderError' && typeof a.at === 'string' && typeof a.message === 'string';\r\n};\r\n/*\r\n * Helpers\r\n */\r\nvar isJsonArray = function (json) { return Array.isArray(json); };\r\nvar isJsonObject = function (json) {\r\n return typeof json === 'object' && json !== null && !isJsonArray(json);\r\n};\r\nvar typeString = function (json) {\r\n switch (typeof json) {\r\n case 'string':\r\n return 'a string';\r\n case 'number':\r\n return 'a number';\r\n case 'boolean':\r\n return 'a boolean';\r\n case 'undefined':\r\n return 'undefined';\r\n case 'object':\r\n if (json instanceof Array) {\r\n return 'an array';\r\n }\r\n else if (json === null) {\r\n return 'null';\r\n }\r\n else {\r\n return 'an object';\r\n }\r\n default:\r\n return JSON.stringify(json);\r\n }\r\n};\r\nvar expectedGot = function (expected, got) {\r\n return \"expected \" + expected + \", got \" + typeString(got);\r\n};\r\nvar printPath = function (paths) {\r\n return paths.map(function (path) { return (typeof path === 'string' ? \".\" + path : \"[\" + path + \"]\"); }).join('');\r\n};\r\nvar prependAt = function (newAt, _a) {\r\n var at = _a.at, rest = __rest(_a, [\"at\"]);\r\n return (__assign({ at: newAt + (at || '') }, rest));\r\n};\r\n/**\r\n * Decoders transform json objects with unknown structure into known and\r\n * verified forms. You can create objects of type `Decoder<A>` with either the\r\n * primitive decoder functions, such as `boolean()` and `string()`, or by\r\n * applying higher-order decoders to the primitives, such as `array(boolean())`\r\n * or `dict(string())`.\r\n *\r\n * Each of the decoder functions are available both as a static method on\r\n * `Decoder` and as a function alias -- for example the string decoder is\r\n * defined at `Decoder.string()`, but is also aliased to `string()`. Using the\r\n * function aliases exported with the library is recommended.\r\n *\r\n * `Decoder` exposes a number of 'run' methods, which all decode json in the\r\n * same way, but communicate success and failure in different ways. The `map`\r\n * and `andThen` methods modify decoders without having to call a 'run' method.\r\n *\r\n * Alternatively, the main decoder `run()` method returns an object of type\r\n * `Result<A, DecoderError>`. This library provides a number of helper\r\n * functions for dealing with the `Result` type, so you can do all the same\r\n * things with a `Result` as with the decoder methods.\r\n */\r\nvar Decoder = /** @class */ (function () {\r\n /**\r\n * The Decoder class constructor is kept private to separate the internal\r\n * `decode` function from the external `run` function. The distinction\r\n * between the two functions is that `decode` returns a\r\n * `Partial<DecoderError>` on failure, which contains an unfinished error\r\n * report. When `run` is called on a decoder, the relevant series of `decode`\r\n * calls is made, and then on failure the resulting `Partial<DecoderError>`\r\n * is turned into a `DecoderError` by filling in the missing information.\r\n *\r\n * While hiding the constructor may seem restrictive, leveraging the\r\n * provided decoder combinators and helper functions such as\r\n * `andThen` and `map` should be enough to build specialized decoders as\r\n * needed.\r\n */\r\n function Decoder(decode) {\r\n var _this = this;\r\n this.decode = decode;\r\n /**\r\n * Run the decoder and return a `Result` with either the decoded value or a\r\n * `DecoderError` containing the json input, the location of the error, and\r\n * the error message.\r\n *\r\n * Examples:\r\n * ```\r\n * number().run(12)\r\n * // => {ok: true, result: 12}\r\n *\r\n * string().run(9001)\r\n * // =>\r\n * // {\r\n * // ok: false,\r\n * // error: {\r\n * // kind: 'DecoderError',\r\n * // input: 9001,\r\n * // at: 'input',\r\n * // message: 'expected a string, got 9001'\r\n * // }\r\n * // }\r\n * ```\r\n */\r\n this.run = function (json) {\r\n return mapError(function (error) { return ({\r\n kind: 'DecoderError',\r\n input: json,\r\n at: 'input' + (error.at || ''),\r\n message: error.message || ''\r\n }); }, _this.decode(json));\r\n };\r\n /**\r\n * Run the decoder as a `Promise`.\r\n */\r\n this.runPromise = function (json) { return asPromise(_this.run(json)); };\r\n /**\r\n * Run the decoder and return the value on success, or throw an exception\r\n * with a formatted error string.\r\n */\r\n this.runWithException = function (json) { return withException(_this.run(json)); };\r\n /**\r\n * Construct a new decoder that applies a transformation to the decoded\r\n * result. If the decoder succeeds then `f` will be applied to the value. If\r\n * it fails the error will propagated through.\r\n *\r\n * Example:\r\n * ```\r\n * number().map(x => x * 5).run(10)\r\n * // => {ok: true, result: 50}\r\n * ```\r\n */\r\n this.map = function (f) {\r\n return new Decoder(function (json) { return map(f, _this.decode(json)); });\r\n };\r\n /**\r\n * Chain together a sequence of decoders. The first decoder will run, and\r\n * then the function will determine what decoder to run second. If the result\r\n * of the first decoder succeeds then `f` will be applied to the decoded\r\n * value. If it fails the error will propagate through.\r\n *\r\n * This is a very powerful method -- it can act as both the `map` and `where`\r\n * methods, can improve error messages for edge cases, and can be used to\r\n * make a decoder for custom types.\r\n *\r\n * Example of adding an error message:\r\n * ```\r\n * const versionDecoder = valueAt(['version'], number());\r\n * const infoDecoder3 = object({a: boolean()});\r\n *\r\n * const decoder = versionDecoder.andThen(version => {\r\n * switch (version) {\r\n * case 3:\r\n * return infoDecoder3;\r\n * default:\r\n * return fail(`Unable to decode info, version ${version} is not supported.`);\r\n * }\r\n * });\r\n *\r\n * decoder.run({version: 3, a: true})\r\n * // => {ok: true, result: {a: true}}\r\n *\r\n * decoder.run({version: 5, x: 'abc'})\r\n * // =>\r\n * // {\r\n * // ok: false,\r\n * // error: {... message: 'Unable to decode info, version 5 is not supported.'}\r\n * // }\r\n * ```\r\n *\r\n * Example of decoding a custom type:\r\n * ```\r\n * // nominal type for arrays with a length of at least one\r\n * type NonEmptyArray<T> = T[] & { __nonEmptyArrayBrand__: void };\r\n *\r\n * const nonEmptyArrayDecoder = <T>(values: Decoder<T>): Decoder<NonEmptyArray<T>> =>\r\n * array(values).andThen(arr =>\r\n * arr.length > 0\r\n * ? succeed(createNonEmptyArray(arr))\r\n * : fail(`expected a non-empty array, got an empty array`)\r\n * );\r\n * ```\r\n */\r\n this.andThen = function (f) {\r\n return new Decoder(function (json) {\r\n return andThen(function (value) { return f(value).decode(json); }, _this.decode(json));\r\n });\r\n };\r\n /**\r\n * Add constraints to a decoder _without_ changing the resulting type. The\r\n * `test` argument is a predicate function which returns true for valid\r\n * inputs. When `test` fails on an input, the decoder fails with the given\r\n * `errorMessage`.\r\n *\r\n * ```\r\n * const chars = (length: number): Decoder<string> =>\r\n * string().where(\r\n * (s: string) => s.length === length,\r\n * `expected a string of length ${length}`\r\n * );\r\n *\r\n * chars(5).run('12345')\r\n * // => {ok: true, result: '12345'}\r\n *\r\n * chars(2).run('HELLO')\r\n * // => {ok: false, error: {... message: 'expected a string of length 2'}}\r\n *\r\n * chars(12).run(true)\r\n * // => {ok: false, error: {... message: 'expected a string, got a boolean'}}\r\n * ```\r\n */\r\n this.where = function (test, errorMessage) {\r\n return _this.andThen(function (value) { return (test(value) ? Decoder.succeed(value) : Decoder.fail(errorMessage)); });\r\n };\r\n }\r\n /**\r\n * Decoder primitive that validates strings, and fails on all other input.\r\n */\r\n Decoder.string = function () {\r\n return new Decoder(function (json) {\r\n return typeof json === 'string'\r\n ? ok(json)\r\n : err({ message: expectedGot('a string', json) });\r\n });\r\n };\r\n /**\r\n * Decoder primitive that validates numbers, and fails on all other input.\r\n */\r\n Decoder.number = function () {\r\n return new Decoder(function (json) {\r\n return typeof json === 'number'\r\n ? ok(json)\r\n : err({ message: expectedGot('a number', json) });\r\n });\r\n };\r\n /**\r\n * Decoder primitive that validates booleans, and fails on all other input.\r\n */\r\n Decoder.boolean = function () {\r\n return new Decoder(function (json) {\r\n return typeof json === 'boolean'\r\n ? ok(json)\r\n : err({ message: expectedGot('a boolean', json) });\r\n });\r\n };\r\n Decoder.constant = function (value) {\r\n return new Decoder(function (json) {\r\n return isEqual(json, value)\r\n ? ok(value)\r\n : err({ message: \"expected \" + JSON.stringify(value) + \", got \" + JSON.stringify(json) });\r\n });\r\n };\r\n Decoder.object = function (decoders) {\r\n return new Decoder(function (json) {\r\n if (isJsonObject(json) && decoders) {\r\n var obj = {};\r\n for (var key in decoders) {\r\n if (decoders.hasOwnProperty(key)) {\r\n var r = decoders[key].decode(json[key]);\r\n if (r.ok === true) {\r\n // tslint:disable-next-line:strict-type-predicates\r\n if (r.result !== undefined) {\r\n obj[key] = r.result;\r\n }\r\n }\r\n else if (json[key] === undefined) {\r\n return err({ message: \"the key '\" + key + \"' is required but was not present\" });\r\n }\r\n else {\r\n return err(prependAt(\".\" + key, r.error));\r\n }\r\n }\r\n }\r\n return ok(obj);\r\n }\r\n else if (isJsonObject(json)) {\r\n return ok(json);\r\n }\r\n else {\r\n return err({ message: expectedGot('an object', json) });\r\n }\r\n });\r\n };\r\n Decoder.array = function (decoder) {\r\n return new Decoder(function (json) {\r\n if (isJsonArray(json) && decoder) {\r\n var decodeValue_1 = function (v, i) {\r\n return mapError(function (err$$1) { return prependAt(\"[\" + i + \"]\", err$$1); }, decoder.decode(v));\r\n };\r\n return json.reduce(function (acc, v, i) {\r\n return map2(function (arr, result) { return arr.concat([result]); }, acc, decodeValue_1(v, i));\r\n }, ok([]));\r\n }\r\n else if (isJsonArray(json)) {\r\n return ok(json);\r\n }\r\n else {\r\n return err({ message: expectedGot('an array', json) });\r\n }\r\n });\r\n };\r\n Decoder.tuple = function (decoders) {\r\n return new Decoder(function (json) {\r\n if (isJsonArray(json)) {\r\n if (json.length !== decoders.length) {\r\n return err({\r\n message: \"expected a tuple of length \" + decoders.length + \", got one of length \" + json.length\r\n });\r\n }\r\n var result = [];\r\n for (var i = 0; i < decoders.length; i++) {\r\n var nth = decoders[i].decode(json[i]);\r\n if (nth.ok) {\r\n result[i] = nth.result;\r\n }\r\n else {\r\n return err(prependAt(\"[\" + i + \"]\", nth.error));\r\n }\r\n }\r\n return ok(result);\r\n }\r\n else {\r\n return err({ message: expectedGot(\"a tuple of length \" + decoders.length, json) });\r\n }\r\n });\r\n };\r\n Decoder.union = function (ad, bd) {\r\n var decoders = [];\r\n for (var _i = 2; _i < arguments.length; _i++) {\r\n decoders[_i - 2] = arguments[_i];\r\n }\r\n return Decoder.oneOf.apply(Decoder, [ad, bd].concat(decoders));\r\n };\r\n Decoder.intersection = function (ad, bd) {\r\n var ds = [];\r\n for (var _i = 2; _i < arguments.length; _i++) {\r\n ds[_i - 2] = arguments[_i];\r\n }\r\n return new Decoder(function (json) {\r\n return [ad, bd].concat(ds).reduce(function (acc, decoder) { return map2(Object.assign, acc, decoder.decode(json)); }, ok({}));\r\n });\r\n };\r\n /**\r\n * Escape hatch to bypass validation. Always succeeds and types the result as\r\n * `any`. Useful for defining decoders incrementally, particularly for\r\n * complex objects.\r\n *\r\n * Example:\r\n * ```\r\n * interface User {\r\n * name: string;\r\n * complexUserData: ComplexType;\r\n * }\r\n *\r\n * const userDecoder: Decoder<User> = object({\r\n * name: string(),\r\n * complexUserData: anyJson()\r\n * });\r\n * ```\r\n */\r\n Decoder.anyJson = function () { return new Decoder(function (json) { return ok(json); }); };\r\n /**\r\n * Decoder identity function which always succeeds and types the result as\r\n * `unknown`.\r\n */\r\n Decoder.unknownJson = function () {\r\n return new Decoder(function (json) { return ok(json); });\r\n };\r\n /**\r\n * Decoder for json objects where the keys are unknown strings, but the values\r\n * should all be of the same type.\r\n *\r\n * Example:\r\n * ```\r\n * dict(number()).run({chocolate: 12, vanilla: 10, mint: 37});\r\n * // => {ok: true, result: {chocolate: 12, vanilla: 10, mint: 37}}\r\n * ```\r\n */\r\n Decoder.dict = function (decoder) {\r\n return new Decoder(function (json) {\r\n if (isJsonObject(json)) {\r\n var obj = {};\r\n for (var key in json) {\r\n if (json.hasOwnProperty(key)) {\r\n var r = decoder.decode(json[key]);\r\n if (r.ok === true) {\r\n obj[key] = r.result;\r\n }\r\n else {\r\n return err(prependAt(\".\" + key, r.error));\r\n }\r\n }\r\n }\r\n return ok(obj);\r\n }\r\n else {\r\n return err({ message: expectedGot('an object', json) });\r\n }\r\n });\r\n };\r\n /**\r\n * Decoder for values that may be `undefined`. This is primarily helpful for\r\n * decoding interfaces with optional fields.\r\n *\r\n * Example:\r\n * ```\r\n * interface User {\r\n * id: number;\r\n * isOwner?: boolean;\r\n * }\r\n *\r\n * const decoder: Decoder<User> = object({\r\n * id: number(),\r\n * isOwner: optional(boolean())\r\n * });\r\n * ```\r\n */\r\n Decoder.optional = function (decoder) {\r\n return new Decoder(function (json) { return (json === undefined ? ok(undefined) : decoder.decode(json)); });\r\n };\r\n /**\r\n * Decoder that attempts to run each decoder in `decoders` and either succeeds\r\n * with the first successful decoder, or fails after all decoders have failed.\r\n *\r\n * Note that `oneOf` expects the decoders to all have the same return type,\r\n * while `union` creates a decoder for the union type of all the input\r\n * decoders.\r\n *\r\n * Examples:\r\n * ```\r\n * oneOf(string(), number().map(String))\r\n * oneOf(constant('start'), constant('stop'), succeed('unknown'))\r\n * ```\r\n */\r\n Decoder.oneOf = function () {\r\n var decoders = [];\r\n for (var _i = 0; _i < arguments.length; _i++) {\r\n decoders[_i] = arguments[_i];\r\n }\r\n return new Decoder(function (json) {\r\n var errors = [];\r\n for (var i = 0; i < decoders.length; i++) {\r\n var r = decoders[i].decode(json);\r\n if (r.ok === true) {\r\n return r;\r\n }\r\n else {\r\n errors[i] = r.error;\r\n }\r\n }\r\n var errorsList = errors\r\n .map(function (error) { return \"at error\" + (error.at || '') + \": \" + error.message; })\r\n .join('\", \"');\r\n return err({\r\n message: \"expected a value matching one of the decoders, got the errors [\\\"\" + errorsList + \"\\\"]\"\r\n });\r\n });\r\n };\r\n /**\r\n * Decoder that always succeeds with either the decoded value, or a fallback\r\n * default value.\r\n */\r\n Decoder.withDefault = function (defaultValue, decoder) {\r\n return new Decoder(function (json) {\r\n return ok(withDefault(defaultValue, decoder.decode(json)));\r\n });\r\n };\r\n /**\r\n * Decoder that pulls a specific field out of a json structure, instead of\r\n * decoding and returning the full structure. The `paths` array describes the\r\n * object keys and array indices to traverse, so that values can be pulled out\r\n * of a nested structure.\r\n *\r\n * Example:\r\n * ```\r\n * const decoder = valueAt(['a', 'b', 0], string());\r\n *\r\n * decoder.run({a: {b: ['surprise!']}})\r\n * // => {ok: true, result: 'surprise!'}\r\n *\r\n * decoder.run({a: {x: 'cats'}})\r\n * // => {ok: false, error: {... at: 'input.a.b[0]' message: 'path does not exist'}}\r\n * ```\r\n *\r\n * Note that the `decoder` is ran on the value found at the last key in the\r\n * path, even if the last key is not found. This allows the `optional`\r\n * decoder to succeed when appropriate.\r\n * ```\r\n * const optionalDecoder = valueAt(['a', 'b', 'c'], optional(string()));\r\n *\r\n * optionalDecoder.run({a: {b: {c: 'surprise!'}}})\r\n * // => {ok: true, result: 'surprise!'}\r\n *\r\n * optionalDecoder.run({a: {b: 'cats'}})\r\n * // => {ok: false, error: {... at: 'input.a.b.c' message: 'expected an object, got \"cats\"'}\r\n *\r\n * optionalDecoder.run({a: {b: {z: 1}}})\r\n * // => {ok: true, result: undefined}\r\n * ```\r\n */\r\n Decoder.valueAt = function (paths, decoder) {\r\n return new Decoder(function (json) {\r\n var jsonAtPath = json;\r\n for (var i = 0; i < paths.length; i++) {\r\n if (jsonAtPath === undefined) {\r\n return err({\r\n at: printPath(paths.slice(0, i + 1)),\r\n message: 'path does not exist'\r\n });\r\n }\r\n else if (typeof paths[i] === 'string' && !isJsonObject(jsonAtPath)) {\r\n return err({\r\n at: printPath(paths.slice(0, i + 1)),\r\n message: expectedGot('an object', jsonAtPath)\r\n });\r\n }\r\n else if (typeof paths[i] === 'number' && !isJsonArray(jsonAtPath)) {\r\n return err({\r\n at: printPath(paths.slice(0, i + 1)),\r\n message: expectedGot('an array', jsonAtPath)\r\n });\r\n }\r\n else {\r\n jsonAtPath = jsonAtPath[paths[i]];\r\n }\r\n }\r\n return mapError(function (error) {\r\n return jsonAtPath === undefined\r\n ? { at: printPath(paths), message: 'path does not exist' }\r\n : prependAt(printPath(paths), error);\r\n }, decoder.decode(jsonAtPath));\r\n });\r\n };\r\n /**\r\n * Decoder that ignores the input json and always succeeds with `fixedValue`.\r\n */\r\n Decoder.succeed = function (fixedValue) {\r\n return new Decoder(function (json) { return ok(fixedValue); });\r\n };\r\n /**\r\n * Decoder that ignores the input json and always fails with `errorMessage`.\r\n */\r\n Decoder.fail = function (errorMessage) {\r\n return new Decoder(function (json) { return err({ message: errorMessage }); });\r\n };\r\n /**\r\n * Decoder that allows for validating recursive data structures. Unlike with\r\n * functions, decoders assigned to variables can't reference themselves\r\n * before they are fully defined. We can avoid prematurely referencing the\r\n * decoder by wrapping it in a function that won't be called until use, at\r\n * which point the decoder has been defined.\r\n *\r\n * Example:\r\n * ```\r\n * interface Comment {\r\n * msg: string;\r\n * replies: Comment[];\r\n * }\r\n *\r\n * const decoder: Decoder<Comment> = object({\r\n * msg: string(),\r\n * replies: lazy(() => array(decoder))\r\n * });\r\n * ```\r\n */\r\n Decoder.lazy = function (mkDecoder) {\r\n return new Decoder(function (json) { return mkDecoder().decode(json); });\r\n };\r\n return Decoder;\r\n}());\n\n/* tslint:disable:variable-name */\r\n/** See `Decoder.string` */\r\nvar string = Decoder.string;\r\n/** See `Decoder.number` */\r\nvar number = Decoder.number;\r\n/** See `Decoder.boolean` */\r\nvar boolean = Decoder.boolean;\r\n/** See `Decoder.anyJson` */\r\nvar anyJson = Decoder.anyJson;\r\n/** See `Decoder.unknownJson` */\r\nvar unknownJson = Decoder.unknownJson;\r\n/** See `Decoder.constant` */\r\nvar constant = Decoder.constant;\r\n/** See `Decoder.object` */\r\nvar object = Decoder.object;\r\n/** See `Decoder.array` */\r\nvar array = Decoder.array;\r\n/** See `Decoder.tuple` */\r\nvar tuple = Decoder.tuple;\r\n/** See `Decoder.dict` */\r\nvar dict = Decoder.dict;\r\n/** See `Decoder.optional` */\r\nvar optional = Decoder.optional;\r\n/** See `Decoder.oneOf` */\r\nvar oneOf = Decoder.oneOf;\r\n/** See `Decoder.union` */\r\nvar union = Decoder.union;\r\n/** See `Decoder.intersection` */\r\nvar intersection = Decoder.intersection;\r\n/** See `Decoder.withDefault` */\r\nvar withDefault$1 = Decoder.withDefault;\r\n/** See `Decoder.valueAt` */\r\nvar valueAt = Decoder.valueAt;\r\n/** See `Decoder.succeed` */\r\nvar succeed = Decoder.succeed;\r\n/** See `Decoder.fail` */\r\nvar fail = Decoder.fail;\r\n/** See `Decoder.lazy` */\r\nvar lazy = Decoder.lazy;\n\nexport { result as Result, Decoder, isDecoderError, string, number, boolean, anyJson, unknownJson, constant, object, array, tuple, dict, optional, oneOf, union, intersection, withDefault$1 as withDefault, valueAt, succeed, fail, lazy };\n//# sourceMappingURL=index.es5.js.map\n","\"use strict\";\nvar __assign = (this && this.__assign) || function () {\n __assign = Object.assign || function(t) {\n for (var s, i = 1, n = arguments.length; i < n; i++) {\n s = arguments[i];\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))\n t[p] = s[p];\n }\n return t;\n };\n return __assign.apply(this, arguments);\n};\nvar __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n var desc = Object.getOwnPropertyDescriptor(m, k);\n if (!desc || (\"get\" in desc ? !m.__esModule : desc.writable || desc.configurable)) {\n desc = { enumerable: true, get: function() { return m[k]; } };\n }\n Object.defineProperty(o, k2, desc);\n}) : (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n o[k2] = m[k];\n}));\nvar __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {\n Object.defineProperty(o, \"default\", { enumerable: true, value: v });\n}) : function(o, v) {\n o[\"default\"] = v;\n});\nvar __importStar = (this && this.__importStar) || (function () {\n var ownKeys = function(o) {\n ownKeys = Object.getOwnPropertyNames || function (o) {\n var ar = [];\n for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;\n return ar;\n };\n return ownKeys(o);\n };\n return function (mod) {\n if (mod && mod.__esModule) return mod;\n var result = {};\n if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== \"default\") __createBinding(result, mod, k[i]);\n __setModuleDefault(result, mod);\n return result;\n };\n})();\nvar __generator = (this && this.__generator) || function (thisArg, body) {\n var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g = Object.create((typeof Iterator === \"function\" ? Iterator : Object).prototype);\n return g.next = verb(0), g[\"throw\"] = verb(1), g[\"return\"] = verb(2), typeof Symbol === \"function\" && (g[Symbol.iterator] = function() { return this; }), g;\n function verb(n) { return function (v) { return step([n, v]); }; }\n function step(op) {\n if (f) throw new TypeError(\"Generator is already executing.\");\n while (g && (g = 0, op[0] && (_ = 0)), _) try {\n if (f = 1, y && (t = op[0] & 2 ? y[\"return\"] : op[0] ? y[\"throw\"] || ((t = y[\"return\"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;\n if (y = 0, t) op = [op[0] & 2, t.value];\n switch (op[0]) {\n case 0: case 1: t = op; break;\n case 4: _.label++; return { value: op[1], done: false };\n case 5: _.label++; y = op[1]; op = [0]; continue;\n case 7: op = _.ops.pop(); _.trys.pop(); continue;\n default:\n if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }\n if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }\n if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }\n if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }\n if (t[2]) _.ops.pop();\n _.trys.pop(); continue;\n }\n op = body.call(thisArg, _);\n } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }\n if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };\n }\n};\nvar __importDefault = (this && this.__importDefault) || function (mod) {\n return (mod && mod.__esModule) ? mod : { \"default\": mod };\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.Map = exports.emptyMap = exports.TextMap = exports.Optional = exports.ContractId = exports.Date = exports.List = exports.Party = exports.Time = exports.Text = exports.Decimal = exports.Numeric = exports.Int = exports.Bool = exports.Unit = exports.lookupTemplate = exports.templateIdWithPackageId = exports.registerTemplate = void 0;\nexports.assembleTemplate = assembleTemplate;\nexports.assembleInterface = assembleInterface;\nexports.memo = memo;\nexports.lazyMemo = lazyMemo;\n// Copyright (c) 2025 Digital Asset (Switzerland) GmbH and/or its affiliates. All rights reserved.\n// SPDX-License-Identifier: Apache-2.0\nvar jtv = __importStar(require(\"@mojotech/json-type-validation\"));\nvar lodash_1 = __importDefault(require(\"lodash\"));\nvar InterfaceBrand = Symbol();\nvar FromTemplateBrand = Symbol();\nfunction toInterfaceMixin() {\n return {\n toInterface: function (_, cid) {\n return cid;\n },\n unsafeFromInterface: function (_, cid) {\n return cid;\n },\n };\n}\n/**\n * @internal\n */\nfunction assembleTemplate(template) {\n var _interfaces = []; // eslint-disable-line @typescript-eslint/no-unused-vars\n for (var _i = 1 // eslint-disable-line @typescript-eslint/no-unused-vars\n ; _i < arguments.length // eslint-disable-line @typescript-eslint/no-unused-vars\n ; _i++ // eslint-disable-line @typescript-eslint/no-unused-vars\n ) {\n _interfaces[_i - 1] = arguments[_i]; // eslint-disable-line @typescript-eslint/no-unused-vars\n }\n return __assign(__assign({}, toInterfaceMixin()), template);\n}\n/**\n * @internal\n */\nfunction assembleInterface(templateId, decoderSource, choices) {\n return __assign({ templateId: templateId, sdkVersion: \"3.3.0-snapshot.20250528.13806.0.v3cd439fb\", \n // `Interface<I> &` is a phantom intersection\n decoder: lazyMemo(function () { return decoderSource().decoder; }), keyDecoder: jtv.succeed(undefined) }, choices);\n}\n/**\n * @internal\n */\nvar registeredTemplates = {};\n/**\n * @internal\n */\nvar registerTemplate = function (template, packageSpecifiers) {\n if (packageSpecifiers === void 0) { packageSpecifiers = []; }\n var aliases = packageSpecifiers.map((0, exports.templateIdWithPackageId)(template));\n new Set([template.templateId].concat(aliases)).forEach(function (templateId) {\n if (templateId in registeredTemplates) {\n console.warn(\"Trying to re-register template \".concat(templateId, \".\"));\n }\n else {\n registeredTemplates[templateId] = template;\n console.debug(\"Registered template \".concat(templateId, \".\"));\n }\n });\n};\nexports.registerTemplate = registerTemplate;\n/**\n * @internal\n */\nvar templateIdWithPackageId = function (t) {\n return function (pkgId) {\n return [pkgId].concat(t.templateId.split(\":\").slice(1)).join(\":\");\n };\n};\nexports.templateIdWithPackageId = templateIdWithPackageId;\n/**\n * @internal\n */\nvar lookupTemplate = function (templateId) {\n var template = registeredTemplates[templateId];\n if (template === undefined) {\n throw Error(\"Failed to look up template \".concat(templateId, \". Make sure your @daml/types version agrees with the used Daml SDK version.\"));\n }\n return template;\n};\nexports.lookupTemplate = lookupTemplate;\n/**\n * @internal Turn a thunk into a memoized version of itself. The memoized thunk\n * invokes the original thunk only on its first invocation and caches the result\n * for later uses. We use this to implement a version of `jtv.lazy` with\n * memoization.\n */\nfunction memo(thunk) {\n var memoized = function () {\n var cache = thunk();\n memoized = function () { return cache; };\n return cache;\n };\n // NOTE(MH): Since we change `memoized` when the resultung thunk is invoked\n // for the first time, we need to return it \"by reference\". Thus, we return\n // a closure which contains a reference to `memoized`.\n return function () { return memoized(); };\n}\n/**\n * @internal Variation of `jtv.lazy` which memoizes the computed decoder on its\n * first invocation.\n */\nfunction lazyMemo(mkDecoder) {\n return jtv.lazy(memo(mkDecoder));\n}\n/**\n * Companion object of the [[Unit]] type.\n */\nexports.Unit = {\n decoder: jtv.object({}),\n encode: function (t) { return t; },\n};\n/**\n * Companion object of the [[Bool]] type.\n */\nexports.Bool = {\n decoder: jtv.boolean(),\n encode: function (b) { return b; },\n};\n/**\n * Companion object of the [[Int]] type.\n */\nexports.Int = {\n decoder: jtv.string(),\n encode: function (i) { return i; },\n};\n/**\n * Companion function of the [[Numeric]] type.\n */\n// eslint-disable-next-line @typescript-eslint/no-unused-vars\nvar Numeric = function (_) { return ({\n decoder: jtv.string(),\n encode: function (n) { return n; },\n}); };\nexports.Numeric = Numeric;\n/**\n * Companion object of the [[Decimal]] type.\n */\nexports.Decimal = (0, exports.Numeric)(10);\n/**\n * Companion object of the [[Text]] type.\n */\nexports.Text = {\n decoder: jtv.string(),\n encode: function (t) { return t; },\n};\n/**\n * Companion object of the [[Time]] type.\n */\nexports.Time = {\n decoder: jtv.string(),\n encode: function (t) { return t; },\n};\n/**\n * Companion object of the [[Party]] type.\n */\nexports.Party = {\n decoder: jtv.string(),\n encode: function (p) { return p; },\n};\n/**\n * Companion object of the [[List]] type.\n */\nvar List = function (t) { return ({\n decoder: jtv.array(t.decoder),\n encode: function (l) { return l.map(function (element) { return t.encode(element); }); },\n}); };\nexports.List = List;\n/**\n * Companion object of the [[Date]] type.\n */\nexports.Date = {\n decoder: jtv.string(),\n encode: function (d) { return d; },\n};\n/**\n * Used to `brand` [[ContractId]].\n */\nvar ContractIdBrand = Symbol();\n/**\n * Companion object of the [[ContractId]] type.\n */\nvar ContractId = function (_t) { return ({\n decoder: jtv.string(),\n encode: function (c) { return c; },\n}); };\nexports.ContractId = ContractId;\n/**\n * This class does the actual work behind the [[Optional]] companion function. In addition to\n * implementing the [[Serializable]] interface it also stores the [[Serializable]] instance of the\n * payload of the [[Optional]] and uses it to provide a decoder for the [[OptionalInner]] type.\n *\n * @typeparam T The type of the optionally present value.\n */\nvar OptionalWorker = /** @class */ (function () {\n function OptionalWorker(payload) {\n if (payload instanceof OptionalWorker) {\n var payloadInnerDecoder = payload.innerDecoder;\n this.innerDecoder = jtv.oneOf(jtv.constant([]), jtv.tuple([payloadInnerDecoder]));\n this.encode = function (o) {\n if (o === null) {\n // Top-level enclosing Optional where the type argument is also\n // Optional and we represent None.\n return null;\n }\n else {\n // The current type is Optional<Optional<...>> and the current value\n // is Some x. Therefore the nested value is represented as [] for\n // x = None or as [y] for x = Some y. In both cases mapping the\n // encoder of the type parameter does the right thing.\n return o.map(function (nested) { return payload.encode(nested); });\n }\n };\n }\n else {\n // NOTE(MH): `T` is not of the form `Optional<U>` here and hence `null`\n // does not extend `T`. Thus, `OptionalInner<T> = T`.\n this.innerDecoder = payload.decoder;\n this.encode = function (o) {\n if (o === null) {\n // This branch is only reached if we are at the top-level and the\n // entire type is a non-nested Optional, i.e. Optional<U> where U is\n // not Optional. Recursive calls from the other branch would stop\n // before reaching this case, as nested None are empty lists and\n // never null.\n return null;\n }\n else {\n return payload.encode(o);\n }\n };\n }\n this.decoder = jtv\n .optional(jtv.oneOf(jtv.constant(null), this.innerDecoder))\n .map(function (x) { return (x === undefined ? null : x); });\n }\n return OptionalWorker;\n}());\n/**\n * Companion function of the [[Optional]] type.\n */\nvar Optional = function (t) {\n return new OptionalWorker(t);\n};\nexports.Optional = Optional;\n/**\n * Companion object of the [[TextMap]] type.\n */\nvar TextMap = function (t) { return ({\n decoder: jtv.dict(t.decoder),\n encode: function (tm) {\n var out = {};\n Object.keys(tm).forEach(function (k) {\n out[k] = t.encode(tm[k]);\n });\n return out;\n },\n}); };\nexports.TextMap = TextMap;\nfunction it(arr) {\n var i;\n return __generator(this, function (_a) {\n switch (_a.label) {\n case 0:\n i = 0;\n _a.label = 1;\n case 1:\n if (!(i < arr.length)) return [3 /*break*/, 4];\n return [4 /*yield*/, lodash_1.default.cloneDeep(arr[i])];\n case 2:\n _a.sent();\n _a.label = 3;\n case 3:\n i++;\n return [3 /*break*/, 1];\n case 4: return [2 /*return*/, undefined];\n }\n });\n}\n// This code assumes that the decoder is only ever used in decoding values\n// straight from the API responses, and said raw responses are never reused\n// afterwards. This should be enforced by this class not being exported and the\n// daml-ledger module not letting raw JSON responses escape without going\n// through this.\n//\n// Without that assumption, the constructor would need to deep-copy its kvs\n// argument.\nvar MapImpl = /** @class */ (function () {\n function MapImpl(kvs) {\n // sorting done so that generic object deep comparison would find equal\n // maps equal (as defined by jest's expect().toEqual())\n this._kvs = lodash_1.default.sortBy(kvs, function (kv) { return JSON.stringify(kv[0]); });\n this._keys = this._kvs.map(function (e) { return e[0]; });\n this._values = this._kvs.map(function (e) { return e[1]; });\n }\n MapImpl.prototype._idx = function (k) {\n return this._keys.findIndex(function (l) { return lodash_1.default.isEqual(k, l); });\n };\n MapImpl.prototype.has = function (k) {\n return this._idx(k) !== -1;\n };\n MapImpl.prototype.get = function (k) {\n return lodash_1.default.cloneDeep(this._values[this._idx(k)]);\n };\n MapImpl.prototype.set = function (k, v) {\n if (this.has(k)) {\n var cpy = this._kvs.slice();\n cpy[this._idx(k)] = lodash_1.default.cloneDeep([k, v]);\n return new MapImpl(cpy);\n }\n else {\n var head = lodash_1.default.cloneDeep([[k, v]]);\n return new MapImpl(head.concat(this._kvs));\n }\n };\n MapImpl.prototype.delete = function (k) {\n var i = this._idx(k);\n if (i !== -1) {\n return new MapImpl(this._kvs.slice(0, i).concat(this._kvs.slice(i + 1)));\n }\n else {\n return this;\n }\n };\n MapImpl.prototype.keys = function () {\n return it(this._keys);\n };\n MapImpl.prototype.values = function () {\n return it(this._values);\n };\n MapImpl.prototype.entries = function () {\n return it(this._kvs);\n };\n MapImpl.prototype.entriesArray = function () {\n return lodash_1.default.cloneDeep(this._kvs);\n };\n MapImpl.prototype.forEach = function (f, u) {\n var g = u ? f.bind(u) : f;\n for (var _i = 0, _a = this._kvs; _i < _a.length; _i++) {\n var _b = _a[_i], k = _b[0], v = _b[1];\n g(v, k, this);\n }\n };\n return MapImpl;\n}());\nvar emptyMap = function () { return new MapImpl([]); };\nexports.emptyMap = emptyMap;\n/**\n * Companion function of the [[GenMap]] type.\n */\nvar Map = function (kd, vd) { return ({\n decoder: jtv\n .array(jtv.tuple([kd.decoder, vd.decoder]))\n .map(function (kvs) { return new MapImpl(kvs); }),\n encode: function (m) {\n return m.entriesArray().map(function (e) { return [kd.encode(e[0]), vd.encode(e[1])]; });\n },\n}); };\nexports.Map = Map;\n//# sourceMappingURL=index.js.map","\"use strict\";\n\nvar conversions = {};\nmodule.exports = conversions;\n\nfunction sign(x) {\n return x < 0 ? -1 : 1;\n}\n\nfunction evenRound(x) {\n // Round x to the nearest integer, choosing the even integer if it lies halfway between two.\n if ((x % 1) === 0.5 && (x & 1) === 0) { // [even number].5; round down (i.e. floor)\n return Math.floor(x);\n } else {\n return Math.round(x);\n }\n}\n\nfunction createNumberConversion(bitLength, typeOpts) {\n if (!typeOpts.unsigned) {\n --bitLength;\n }\n const lowerBound = typeOpts.unsigned ? 0 : -Math.pow(2, bitLength);\n const upperBound = Math.pow(2, bitLength) - 1;\n\n const moduloVal = typeOpts.moduloBitLength ? Math.pow(2, typeOpts.moduloBitLength) : Math.pow(2, bitLength);\n const moduloBound = typeOpts.moduloBitLength ? Math.pow(2, typeOpts.moduloBitLength - 1) : Math.pow(2, bitLength - 1);\n\n return function(V, opts) {\n if (!opts) opts = {};\n\n let x = +V;\n\n if (opts.enforceRange) {\n if (!Number.isFinite(x)) {\n throw new TypeError(\"Argument is not a finite number\");\n }\n\n x = sign(x) * Math.floor(Math.abs(x));\n if (x < lowerBound || x > upperBound) {\n throw new TypeError(\"Argument is not in byte range\");\n }\n\n return x;\n }\n\n if (!isNaN(x) && opts.clamp) {\n x = evenRound(x);\n\n if (x < lowerBound) x = lowerBound;\n if (x > upperBound) x = upperBound;\n return x;\n }\n\n if (!Number.isFinite(x) || x === 0) {\n return 0;\n }\n\n x = sign(x) * Math.floor(Math.abs(x));\n x = x % moduloVal;\n\n if (!typeOpts.unsigned && x >= moduloBound) {\n return x - moduloVal;\n } else if (typeOpts.unsigned) {\n if (x < 0) {\n x += moduloVal;\n } else if (x === -0) { // don't return negative zero\n return 0;\n }\n }\n\n return x;\n }\n}\n\nconversions[\"void\"] = function () {\n return undefined;\n};\n\nconversions[\"boolean\"] = function (val) {\n return !!val;\n};\n\nconversions[\"byte\"] = createNumberConversion(8, { unsigned: false });\nconversions[\"octet\"] = createNumberConversion(8, { unsigned: true });\n\nconversions[\"short\"] = createNumberConversion(16, { unsigned: false });\nconversions[\"unsigned short\"] = createNumberConversion(16, { unsigned: true });\n\nconversions[\"long\"] = createNumberConversion(32, { unsigned: false });\nconversions[\"unsigned long\"] = createNumberConversion(32, { unsigned: true });\n\nconversions[\"long long\"] = createNumberConversion(32, { unsigned: false, moduloBitLength: 64 });\nconversions[\"unsigned long long\"] = createNumberConversion(32, { unsigned: true, moduloBitLength: 64 });\n\nconversions[\"double\"] = function (V) {\n const x = +V;\n\n if (!Number.isFinite(x)) {\n throw new TypeError(\"Argument is not a finite floating-point value\");\n }\n\n return x;\n};\n\nconversions[\"unrestricted double\"] = function (V) {\n const x = +V;\n\n if (isNaN(x)) {\n throw new TypeError(\"Argument is NaN\");\n }\n\n return x;\n};\n\n// not quite valid, but good enough for JS\nconversions[\"float\"] = conversions[\"double\"];\nconversions[\"unrestricted float\"] = conversions[\"unrestricted double\"];\n\nconversions[\"DOMString\"] = function (V, opts) {\n if (!opts) opts = {};\n\n if (opts.treatNullAsEmptyString && V === null) {\n return \"\";\n }\n\n return String(V);\n};\n\nconversions[\"ByteString\"] = function (V, opts) {\n const x = String(V);\n let c = undefined;\n for (let i = 0; (c = x.codePointAt(i)) !== undefined; ++i) {\n if (c > 255) {\n throw new TypeError(\"Argument is not a valid bytestring\");\n }\n }\n\n return x;\n};\n\nconversions[\"USVString\"] = function (V) {\n const S = String(V);\n const n = S.length;\n const U = [];\n for (let i = 0; i < n; ++i) {\n const c = S.charCodeAt(i);\n if (c < 0xD800 || c > 0xDFFF) {\n U.push(String.fromCodePoint(c));\n } else if (0xDC00 <= c && c <= 0xDFFF) {\n U.push(String.fromCodePoint(0xFFFD));\n } else {\n if (i === n - 1) {\n U.push(String.fromCodePoint(0xFFFD));\n } else {\n const d = S.charCodeAt(i + 1);\n if (0xDC00 <= d && d <= 0xDFFF) {\n const a = c & 0x3FF;\n const b = d & 0x3FF;\n U.push(String.fromCodePoint((2 << 15) + (2 << 9) * a + b));\n ++i;\n } else {\n U.push(String.fromCodePoint(0xFFFD));\n }\n }\n }\n }\n\n return U.join('');\n};\n\nconversions[\"Date\"] = function (V, opts) {\n if (!(V instanceof Date)) {\n throw new TypeError(\"Argument is not a Date object\");\n }\n if (isNaN(V)) {\n return undefined;\n }\n\n return V;\n};\n\nconversions[\"RegExp\"] = function (V, opts) {\n if (!(V instanceof RegExp)) {\n V = new RegExp(V);\n }\n\n return V;\n};\n","\"use strict\";\n\nmodule.exports.mixin = function mixin(target, source) {\n const keys = Object.getOwnPropertyNames(source);\n for (let i = 0; i < keys.length; ++i) {\n Object.defineProperty(target, keys[i], Object.getOwnPropertyDescriptor(source, keys[i]));\n }\n};\n\nmodule.exports.wrapperSymbol = Symbol(\"wrapper\");\nmodule.exports.implSymbol = Symbol(\"impl\");\n\nmodule.exports.wrapperForImpl = function (impl) {\n return impl[module.exports.wrapperSymbol];\n};\n\nmodule.exports.implForWrapper = function (wrapper) {\n return wrapper[module.exports.implSymbol];\n};\n\n","\"use strict\";\n\nvar punycode = require(\"punycode\");\nvar mappingTable = require(\"./lib/mappingTable.json\");\n\nvar PROCESSING_OPTIONS = {\n TRANSITIONAL: 0,\n NONTRANSITIONAL: 1\n};\n\nfunction normalize(str) { // fix bug in v8\n return str.split('\\u0000').map(function (s) { return s.normalize('NFC'); }).join('\\u0000');\n}\n\nfunction findStatus(val) {\n var start = 0;\n var end = mappingTable.length - 1;\n\n while (start <= end) {\n var mid = Math.floor((start + end) / 2);\n\n var target = mappingTable[mid];\n if (target[0][0] <= val && target[0][1] >= val) {\n return target;\n } else if (target[0][0] > val) {\n end = mid - 1;\n } else {\n start = mid + 1;\n }\n }\n\n return null;\n}\n\nvar regexAstralSymbols = /[\\uD800-\\uDBFF][\\uDC00-\\uDFFF]/g;\n\nfunction countSymbols(string) {\n return string\n // replace every surrogate pair with a BMP symbol\n .replace(regexAstralSymbols, '_')\n // then get the length\n .length;\n}\n\nfunction mapChars(domain_name, useSTD3, processing_option) {\n var hasError = false;\n var processed = \"\";\n\n var len = countSymbols(domain_name);\n for (var i = 0; i < len; ++i) {\n var codePoint = domain_name.codePointAt(i);\n var status = findStatus(codePoint);\n\n switch (status[1]) {\n case \"disallowed\":\n hasError = true;\n processed += String.fromCodePoint(codePoint);\n break;\n case \"ignored\":\n break;\n case \"mapped\":\n processed += String.fromCodePoint.apply(String, status[2]);\n break;\n case \"deviation\":\n if (processing_option === PROCESSING_OPTIONS.TRANSITIONAL) {\n processed += String.fromCodePoint.apply(String, status[2]);\n } else {\n processed += String.fromCodePoint(codePoint);\n }\n break;\n case \"valid\":\n processed += String.fromCodePoint(codePoint);\n break;\n case \"disallowed_STD3_mapped\":\n if (useSTD3) {\n hasError = true;\n processed += String.fromCodePoint(codePoint);\n } else {\n processed += String.fromCodePoint.apply(String, status[2]);\n }\n break;\n case \"disallowed_STD3_valid\":\n if (useSTD3) {\n hasError = true;\n }\n\n processed += String.fromCodePoint(codePoint);\n break;\n }\n }\n\n return {\n string: processed,\n error: hasError\n };\n}\n\nvar combiningMarksRegex = /[\\u0300-\\u036F\\u0483-\\u0489\\u0591-\\u05BD\\u05BF\\u05C1\\u05C2\\u05C4\\u05C5\\u05C7\\u0610-\\u061A\\u064B-\\u065F\\u0670\\u06D6-\\u06DC\\u06DF-\\u06E4\\u06E7\\u06E8\\u06EA-\\u06ED\\u0711\\u0730-\\u074A\\u07A6-\\u07B0\\u07EB-\\u07F3\\u0816-\\u0819\\u081B-\\u0823\\u0825-\\u0827\\u0829-\\u082D\\u0859-\\u085B\\u08E4-\\u0903\\u093A-\\u093C\\u093E-\\u094F\\u0951-\\u0957\\u0962\\u0963\\u0981-\\u0983\\u09BC\\u09BE-\\u09C4\\u09C7\\u09C8\\u09CB-\\u09CD\\u09D7\\u09E2\\u09E3\\u0A01-\\u0A03\\u0A3C\\u0A3E-\\u0A42\\u0A47\\u0A48\\u0A4B-\\u0A4D\\u0A51\\u0A70\\u0A71\\u0A75\\u0A81-\\u0A83\\u0ABC\\u0ABE-\\u0AC5\\u0AC7-\\u0AC9\\u0ACB-\\u0ACD\\u0AE2\\u0AE3\\u0B01-\\u0B03\\u0B3C\\u0B3E-\\u0B44\\u0B47\\u0B48\\u0B4B-\\u0B4D\\u0B56\\u0B57\\u0B62\\u0B63\\u0B82\\u0BBE-\\u0BC2\\u0BC6-\\u0BC8\\u0BCA-\\u0BCD\\u0BD7\\u0C00-\\u0C03\\u0C3E-\\u0C44\\u0C46-\\u0C48\\u0C4A-\\u0C4D\\u0C55\\u0C56\\u0C62\\u0C63\\u0C81-\\u0C83\\u0CBC\\u0CBE-\\u0CC4\\u0CC6-\\u0CC8\\u0CCA-\\u0CCD\\u0CD5\\u0CD6\\u0CE2\\u0CE3\\u0D01-\\u0D03\\u0D3E-\\u0D44\\u0D46-\\u0D48\\u0D4A-\\u0D4D\\u0D57\\u0D62\\u0D63\\u0D82\\u0D83\\u0DCA\\u0DCF-\\u0DD4\\u0DD6\\u0DD8-\\u0DDF\\u0DF2\\u0DF3\\u0E31\\u0E34-\\u0E3A\\u0E47-\\u0E4E\\u0EB1\\u0EB4-\\u0EB9\\u0EBB\\u0EBC\\u0EC8-\\u0ECD\\u0F18\\u0F19\\u0F35\\u0F37\\u0F39\\u0F3E\\u0F3F\\u0F71-\\u0F84\\u0F86\\u0F87\\u0F8D-\\u0F97\\u0F99-\\u0FBC\\u0FC6\\u102B-\\u103E\\u1056-\\u1059\\u105E-\\u1060\\u1062-\\u1064\\u1067-\\u106D\\u1071-\\u1074\\u1082-\\u108D\\u108F\\u109A-\\u109D\\u135D-\\u135F\\u1712-\\u1714\\u1732-\\u1734\\u1752\\u1753\\u1772\\u1773\\u17B4-\\u17D3\\u17DD\\u180B-\\u180D\\u18A9\\u1920-\\u192B\\u1930-\\u193B\\u19B0-\\u19C0\\u19C8\\u19C9\\u1A17-\\u1A1B\\u1A55-\\u1A5E\\u1A60-\\u1A7C\\u1A7F\\u1AB0-\\u1ABE\\u1B00-\\u1B04\\u1B34-\\u1B44\\u1B6B-\\u1B73\\u1B80-\\u1B82\\u1BA1-\\u1BAD\\u1BE6-\\u1BF3\\u1C24-\\u1C37\\u1CD0-\\u1CD2\\u1CD4-\\u1CE8\\u1CED\\u1CF2-\\u1CF4\\u1CF8\\u1CF9\\u1DC0-\\u1DF5\\u1DFC-\\u1DFF\\u20D0-\\u20F0\\u2CEF-\\u2CF1\\u2D7F\\u2DE0-\\u2DFF\\u302A-\\u302F\\u3099\\u309A\\uA66F-\\uA672\\uA674-\\uA67D\\uA69F\\uA6F0\\uA6F1\\uA802\\uA806\\uA80B\\uA823-\\uA827\\uA880\\uA881\\uA8B4-\\uA8C4\\uA8E0-\\uA8F1\\uA926-\\uA92D\\uA947-\\uA953\\uA980-\\uA983\\uA9B3-\\uA9C0\\uA9E5\\uAA29-\\uAA36\\uAA43\\uAA4C\\uAA4D\\uAA7B-\\uAA7D\\uAAB0\\uAAB2-\\uAAB4\\uAAB7\\uAAB8\\uAABE\\uAABF\\uAAC1\\uAAEB-\\uAAEF\\uAAF5\\uAAF6\\uABE3-\\uABEA\\uABEC\\uABED\\uFB1E\\uFE00-\\uFE0F\\uFE20-\\uFE2D]|\\uD800[\\uDDFD\\uDEE0\\uDF76-\\uDF7A]|\\uD802[\\uDE01-\\uDE03\\uDE05\\uDE06\\uDE0C-\\uDE0F\\uDE38-\\uDE3A\\uDE3F\\uDEE5\\uDEE6]|\\uD804[\\uDC00-\\uDC02\\uDC38-\\uDC46\\uDC7F-\\uDC82\\uDCB0-\\uDCBA\\uDD00-\\uDD02\\uDD27-\\uDD34\\uDD73\\uDD80-\\uDD82\\uDDB3-\\uDDC0\\uDE2C-\\uDE37\\uDEDF-\\uDEEA\\uDF01-\\uDF03\\uDF3C\\uDF3E-\\uDF44\\uDF47\\uDF48\\uDF4B-\\uDF4D\\uDF57\\uDF62\\uDF63\\uDF66-\\uDF6C\\uDF70-\\uDF74]|\\uD805[\\uDCB0-\\uDCC3\\uDDAF-\\uDDB5\\uDDB8-\\uDDC0\\uDE30-\\uDE40\\uDEAB-\\uDEB7]|\\uD81A[\\uDEF0-\\uDEF4\\uDF30-\\uDF36]|\\uD81B[\\uDF51-\\uDF7E\\uDF8F-\\uDF92]|\\uD82F[\\uDC9D\\uDC9E]|\\uD834[\\uDD65-\\uDD69\\uDD6D-\\uDD72\\uDD7B-\\uDD82\\uDD85-\\uDD8B\\uDDAA-\\uDDAD\\uDE42-\\uDE44]|\\uD83A[\\uDCD0-\\uDCD6]|\\uDB40[\\uDD00-\\uDDEF]/;\n\nfunction validateLabel(label, processing_option) {\n if (label.substr(0, 4) === \"xn--\") {\n label = punycode.toUnicode(label);\n processing_option = PROCESSING_OPTIONS.NONTRANSITIONAL;\n }\n\n var error = false;\n\n if (normalize(label) !== label ||\n (label[3] === \"-\" && label[4] === \"-\") ||\n label[0] === \"-\" || label[label.length - 1] === \"-\" ||\n label.indexOf(\".\") !== -1 ||\n label.search(combiningMarksRegex) === 0) {\n error = true;\n }\n\n var len = countSymbols(label);\n for (var i = 0; i < len; ++i) {\n var status = findStatus(label.codePointAt(i));\n if ((processing === PROCESSING_OPTIONS.TRANSITIONAL && status[1] !== \"valid\") ||\n (processing === PROCESSING_OPTIONS.NONTRANSITIONAL &&\n status[1] !== \"valid\" && status[1] !== \"deviation\")) {\n error = true;\n break;\n }\n }\n\n return {\n label: label,\n error: error\n };\n}\n\nfunction processing(domain_name, useSTD3, processing_option) {\n var result = mapChars(domain_name, useSTD3, processing_option);\n result.string = normalize(result.string);\n\n var labels = result.string.split(\".\");\n for (var i = 0; i < labels.length; ++i) {\n try {\n var validation = validateLabel(labels[i]);\n labels[i] = validation.label;\n result.error = result.error || validation.error;\n } catch(e) {\n result.error = true;\n }\n }\n\n return {\n string: labels.join(\".\"),\n error: result.error\n };\n}\n\nmodule.exports.toASCII = function(domain_name, useSTD3, processing_option, verifyDnsLength) {\n var result = processing(domain_name, useSTD3, processing_option);\n var labels = result.string.split(\".\");\n labels = labels.map(function(l) {\n try {\n return punycode.toASCII(l);\n } catch(e) {\n result.error = true;\n return l;\n }\n });\n\n if (verifyDnsLength) {\n var total = labels.slice(0, labels.length - 1).join(\".\").length;\n if (total.length > 253 || total.length === 0) {\n result.error = true;\n }\n\n for (var i=0; i < labels.length; ++i) {\n if (labels.length > 63 || labels.length === 0) {\n result.error = true;\n break;\n }\n }\n }\n\n if (result.error) return null;\n return labels.join(\".\");\n};\n\nmodule.exports.toUnicode = function(domain_name, useSTD3) {\n var result = processing(domain_name, useSTD3, PROCESSING_OPTIONS.NONTRANSITIONAL);\n\n return {\n domain: result.string,\n error: result.error\n };\n};\n\nmodule.exports.PROCESSING_OPTIONS = PROCESSING_OPTIONS;\n","\"use strict\";\r\nconst punycode = require(\"punycode\");\r\nconst tr46 = require(\"tr46\");\r\n\r\nconst specialSchemes = {\r\n ftp: 21,\r\n file: null,\r\n gopher: 70,\r\n http: 80,\r\n https: 443,\r\n ws: 80,\r\n wss: 443\r\n};\r\n\r\nconst failure = Symbol(\"failure\");\r\n\r\nfunction countSymbols(str) {\r\n return punycode.ucs2.decode(str).length;\r\n}\r\n\r\nfunction at(input, idx) {\r\n const c = input[idx];\r\n return isNaN(c) ? undefined : String.fromCodePoint(c);\r\n}\r\n\r\nfunction isASCIIDigit(c) {\r\n return c >= 0x30 && c <= 0x39;\r\n}\r\n\r\nfunction isASCIIAlpha(c) {\r\n return (c >= 0x41 && c <= 0x5A) || (c >= 0x61 && c <= 0x7A);\r\n}\r\n\r\nfunction isASCIIAlphanumeric(c) {\r\n return isASCIIAlpha(c) || isASCIIDigit(c);\r\n}\r\n\r\nfunction isASCIIHex(c) {\r\n return isASCIIDigit(c) || (c >= 0x41 && c <= 0x46) || (c >= 0x61 && c <= 0x66);\r\n}\r\n\r\nfunction isSingleDot(buffer) {\r\n return buffer === \".\" || buffer.toLowerCase() === \"%2e\";\r\n}\r\n\r\nfunction isDoubleDot(buffer) {\r\n buffer = buffer.toLowerCase();\r\n return buffer === \"..\" || buffer === \"%2e.\" || buffer === \".%2e\" || buffer === \"%2e%2e\";\r\n}\r\n\r\nfunction isWindowsDriveLetterCodePoints(cp1, cp2) {\r\n return isASCIIAlpha(cp1) && (cp2 === 58 || cp2 === 124);\r\n}\r\n\r\nfunction isWindowsDriveLetterString(string) {\r\n return string.length === 2 && isASCIIAlpha(string.codePointAt(0)) && (string[1] === \":\" || string[1] === \"|\");\r\n}\r\n\r\nfunction isNormalizedWindowsDriveLetterString(string) {\r\n return string.length === 2 && isASCIIAlpha(string.codePointAt(0)) && string[1] === \":\";\r\n}\r\n\r\nfunction containsForbiddenHostCodePoint(string) {\r\n return string.search(/\\u0000|\\u0009|\\u000A|\\u000D|\\u0020|#|%|\\/|:|\\?|@|\\[|\\\\|\\]/) !== -1;\r\n}\r\n\r\nfunction containsForbiddenHostCodePointExcludingPercent(string) {\r\n return string.search(/\\u0000|\\u0009|\\u000A|\\u000D|\\u0020|#|\\/|:|\\?|@|\\[|\\\\|\\]/) !== -1;\r\n}\r\n\r\nfunction isSpecialScheme(scheme) {\r\n return specialSchemes[scheme] !== undefined;\r\n}\r\n\r\nfunction isSpecial(url) {\r\n return isSpecialScheme(url.scheme);\r\n}\r\n\r\nfunction defaultPort(scheme) {\r\n return specialSchemes[scheme];\r\n}\r\n\r\nfunction percentEncode(c) {\r\n let hex = c.toString(16).toUpperCase();\r\n if (hex.length === 1) {\r\n hex = \"0\" + hex;\r\n }\r\n\r\n return \"%\" + hex;\r\n}\r\n\r\nfunction utf8PercentEncode(c) {\r\n const buf = new Buffer(c);\r\n\r\n let str = \"\";\r\n\r\n for (let i = 0; i < buf.length; ++i) {\r\n str += percentEncode(buf[i]);\r\n }\r\n\r\n return str;\r\n}\r\n\r\nfunction utf8PercentDecode(str) {\r\n const input = new Buffer(str);\r\n const output = [];\r\n for (let i = 0; i < input.length; ++i) {\r\n if (input[i] !== 37) {\r\n output.push(input[i]);\r\n } else if (input[i] === 37 && isASCIIHex(input[i + 1]) && isASCIIHex(input[i + 2])) {\r\n output.push(parseInt(input.slice(i + 1, i + 3).toString(), 16));\r\n i += 2;\r\n } else {\r\n output.push(input[i]);\r\n }\r\n }\r\n return new Buffer(output).toString();\r\n}\r\n\r\nfunction isC0ControlPercentEncode(c) {\r\n return c <= 0x1F || c > 0x7E;\r\n}\r\n\r\nconst extraPathPercentEncodeSet = new Set([32, 34, 35, 60, 62, 63, 96, 123, 125]);\r\nfunction isPathPercentEncode(c) {\r\n return isC0ControlPercentEncode(c) || extraPathPercentEncodeSet.has(c);\r\n}\r\n\r\nconst extraUserinfoPercentEncodeSet =\r\n new Set([47, 58, 59, 61, 64, 91, 92, 93, 94, 124]);\r\nfunction isUserinfoPercentEncode(c) {\r\n return isPathPercentEncode(c) || extraUserinfoPercentEncodeSet.has(c);\r\n}\r\n\r\nfunction percentEncodeChar(c, encodeSetPredicate) {\r\n const cStr = String.fromCodePoint(c);\r\n\r\n if (encodeSetPredicate(c)) {\r\n return utf8PercentEncode(cStr);\r\n }\r\n\r\n return cStr;\r\n}\r\n\r\nfunction parseIPv4Number(input) {\r\n let R = 10;\r\n\r\n if (input.length >= 2 && input.charAt(0) === \"0\" && input.charAt(1).toLowerCase() === \"x\") {\r\n input = input.substring(2);\r\n R = 16;\r\n } else if (input.length >= 2 && input.charAt(0) === \"0\") {\r\n input = input.substring(1);\r\n R = 8;\r\n }\r\n\r\n if (input === \"\") {\r\n return 0;\r\n }\r\n\r\n const regex = R === 10 ? /[^0-9]/ : (R === 16 ? /[^0-9A-Fa-f]/ : /[^0-7]/);\r\n if (regex.test(input)) {\r\n return failure;\r\n }\r\n\r\n return parseInt(input, R);\r\n}\r\n\r\nfunction parseIPv4(input) {\r\n const parts = input.split(\".\");\r\n if (parts[parts.length - 1] === \"\") {\r\n if (parts.length > 1) {\r\n parts.pop();\r\n }\r\n }\r\n\r\n if (parts.length > 4) {\r\n return input;\r\n }\r\n\r\n const numbers = [];\r\n for (const part of parts) {\r\n if (part === \"\") {\r\n return input;\r\n }\r\n const n = parseIPv4Number(part);\r\n if (n === failure) {\r\n return input;\r\n }\r\n\r\n numbers.push(n);\r\n }\r\n\r\n for (let i = 0; i < numbers.length - 1; ++i) {\r\n if (numbers[i] > 255) {\r\n return failure;\r\n }\r\n }\r\n if (numbers[numbers.length - 1] >= Math.pow(256, 5 - numbers.length)) {\r\n return failure;\r\n }\r\n\r\n let ipv4 = numbers.pop();\r\n let counter = 0;\r\n\r\n for (const n of numbers) {\r\n ipv4 += n * Math.pow(256, 3 - counter);\r\n ++counter;\r\n }\r\n\r\n return ipv4;\r\n}\r\n\r\nfunction serializeIPv4(address) {\r\n let output = \"\";\r\n let n = address;\r\n\r\n for (let i = 1; i <= 4; ++i) {\r\n output = String(n % 256) + output;\r\n if (i !== 4) {\r\n output = \".\" + output;\r\n }\r\n n = Math.floor(n / 256);\r\n }\r\n\r\n return output;\r\n}\r\n\r\nfunction parseIPv6(input) {\r\n const address = [0, 0, 0, 0, 0, 0, 0, 0];\r\n let pieceIndex = 0;\r\n let compress = null;\r\n let pointer = 0;\r\n\r\n input = punycode.ucs2.decode(input);\r\n\r\n if (input[pointer] === 58) {\r\n if (input[pointer + 1] !== 58) {\r\n return failure;\r\n }\r\n\r\n pointer += 2;\r\n ++pieceIndex;\r\n compress = pieceIndex;\r\n }\r\n\r\n while (pointer < input.length) {\r\n if (pieceIndex === 8) {\r\n return failure;\r\n }\r\n\r\n if (input[pointer] === 58) {\r\n if (compress !== null) {\r\n return failure;\r\n }\r\n ++pointer;\r\n ++pieceIndex;\r\n compress = pieceIndex;\r\n continue;\r\n }\r\n\r\n let value = 0;\r\n let length = 0;\r\n\r\n while (length < 4 && isASCIIHex(input[pointer])) {\r\n value = value * 0x10 + parseInt(at(input, pointer), 16);\r\n ++pointer;\r\n ++length;\r\n }\r\n\r\n if (input[pointer] === 46) {\r\n if (length === 0) {\r\n return failure;\r\n }\r\n\r\n pointer -= length;\r\n\r\n if (pieceIndex > 6) {\r\n return failure;\r\n }\r\n\r\n let numbersSeen = 0;\r\n\r\n while (input[pointer] !== undefined) {\r\n let ipv4Piece = null;\r\n\r\n if (numbersSeen > 0) {\r\n if (input[pointer] === 46 && numbersSeen < 4) {\r\n ++pointer;\r\n } else {\r\n return failure;\r\n }\r\n }\r\n\r\n if (!isASCIIDigit(input[pointer])) {\r\n return failure;\r\n }\r\n\r\n while (isASCIIDigit(input[pointer])) {\r\n const number = parseInt(at(input, pointer));\r\n if (ipv4Piece === null) {\r\n ipv4Piece = number;\r\n } else if (ipv4Piece === 0) {\r\n return failure;\r\n } else {\r\n ipv4Piece = ipv4Piece * 10 + number;\r\n }\r\n if (ipv4Piece > 255) {\r\n return failure;\r\n }\r\n ++pointer;\r\n }\r\n\r\n address[pieceIndex] = address[pieceIndex] * 0x100 + ipv4Piece;\r\n\r\n ++numbersSeen;\r\n\r\n if (numbersSeen === 2 || numbersSeen === 4) {\r\n ++pieceIndex;\r\n }\r\n }\r\n\r\n if (numbersSeen !== 4) {\r\n return failure;\r\n }\r\n\r\n break;\r\n } else if (input[pointer] === 58) {\r\n ++pointer;\r\n if (input[pointer] === undefined) {\r\n return failure;\r\n }\r\n } else if (input[pointer] !== undefined) {\r\n return failure;\r\n }\r\n\r\n address[pieceIndex] = value;\r\n ++pieceIndex;\r\n }\r\n\r\n if (compress !== null) {\r\n let swaps = pieceIndex - compress;\r\n pieceIndex = 7;\r\n while (pieceIndex !== 0 && swaps > 0) {\r\n const temp = address[compress + swaps - 1];\r\n address[compress + swaps - 1] = address[pieceIndex];\r\n address[pieceIndex] = temp;\r\n --pieceIndex;\r\n --swaps;\r\n }\r\n } else if (compress === null && pieceIndex !== 8) {\r\n return failure;\r\n }\r\n\r\n return address;\r\n}\r\n\r\nfunction serializeIPv6(address) {\r\n let output = \"\";\r\n const seqResult = findLongestZeroSequence(address);\r\n const compress = seqResult.idx;\r\n let ignore0 = false;\r\n\r\n for (let pieceIndex = 0; pieceIndex <= 7; ++pieceIndex) {\r\n if (ignore0 && address[pieceIndex] === 0) {\r\n continue;\r\n } else if (ignore0) {\r\n ignore0 = false;\r\n }\r\n\r\n if (compress === pieceIndex) {\r\n const separator = pieceIndex === 0 ? \"::\" : \":\";\r\n output += separator;\r\n ignore0 = true;\r\n continue;\r\n }\r\n\r\n output += address[pieceIndex].toString(16);\r\n\r\n if (pieceIndex !== 7) {\r\n output += \":\";\r\n }\r\n }\r\n\r\n return output;\r\n}\r\n\r\nfunction parseHost(input, isSpecialArg) {\r\n if (input[0] === \"[\") {\r\n if (input[input.length - 1] !== \"]\") {\r\n return failure;\r\n }\r\n\r\n return parseIPv6(input.substring(1, input.length - 1));\r\n }\r\n\r\n if (!isSpecialArg) {\r\n return parseOpaqueHost(input);\r\n }\r\n\r\n const domain = utf8PercentDecode(input);\r\n const asciiDomain = tr46.toASCII(domain, false, tr46.PROCESSING_OPTIONS.NONTRANSITIONAL, false);\r\n if (asciiDomain === null) {\r\n return failure;\r\n }\r\n\r\n if (containsForbiddenHostCodePoint(asciiDomain)) {\r\n return failure;\r\n }\r\n\r\n const ipv4Host = parseIPv4(asciiDomain);\r\n if (typeof ipv4Host === \"number\" || ipv4Host === failure) {\r\n return ipv4Host;\r\n }\r\n\r\n return asciiDomain;\r\n}\r\n\r\nfunction parseOpaqueHost(input) {\r\n if (containsForbiddenHostCodePointExcludingPercent(input)) {\r\n return failure;\r\n }\r\n\r\n let output = \"\";\r\n const decoded = punycode.ucs2.decode(input);\r\n for (let i = 0; i < decoded.length; ++i) {\r\n output += percentEncodeChar(decoded[i], isC0ControlPercentEncode);\r\n }\r\n return output;\r\n}\r\n\r\nfunction findLongestZeroSequence(arr) {\r\n let maxIdx = null;\r\n let maxLen = 1; // only find elements > 1\r\n let currStart = null;\r\n let currLen = 0;\r\n\r\n for (let i = 0; i < arr.length; ++i) {\r\n if (arr[i] !== 0) {\r\n if (currLen > maxLen) {\r\n maxIdx = currStart;\r\n maxLen = currLen;\r\n }\r\n\r\n currStart = null;\r\n currLen = 0;\r\n } else {\r\n if (currStart === null) {\r\n currStart = i;\r\n }\r\n ++currLen;\r\n }\r\n }\r\n\r\n // if trailing zeros\r\n if (currLen > maxLen) {\r\n maxIdx = currStart;\r\n maxLen = currLen;\r\n }\r\n\r\n return {\r\n idx: maxIdx,\r\n len: maxLen\r\n };\r\n}\r\n\r\nfunction serializeHost(host) {\r\n if (typeof host === \"number\") {\r\n return serializeIPv4(host);\r\n }\r\n\r\n // IPv6 serializer\r\n if (host instanceof Array) {\r\n return \"[\" + serializeIPv6(host) + \"]\";\r\n }\r\n\r\n return host;\r\n}\r\n\r\nfunction trimControlChars(url) {\r\n return url.replace(/^[\\u0000-\\u001F\\u0020]+|[\\u0000-\\u001F\\u0020]+$/g, \"\");\r\n}\r\n\r\nfunction trimTabAndNewline(url) {\r\n return url.replace(/\\u0009|\\u000A|\\u000D/g, \"\");\r\n}\r\n\r\nfunction shortenPath(url) {\r\n const path = url.path;\r\n if (path.length === 0) {\r\n return;\r\n }\r\n if (url.scheme === \"file\" && path.length === 1 && isNormalizedWindowsDriveLetter(path[0])) {\r\n return;\r\n }\r\n\r\n path.pop();\r\n}\r\n\r\nfunction includesCredentials(url) {\r\n return url.username !== \"\" || url.password !== \"\";\r\n}\r\n\r\nfunction cannotHaveAUsernamePasswordPort(url) {\r\n return url.host === null || url.host === \"\" || url.cannotBeABaseURL || url.scheme === \"file\";\r\n}\r\n\r\nfunction isNormalizedWindowsDriveLetter(string) {\r\n return /^[A-Za-z]:$/.test(string);\r\n}\r\n\r\nfunction URLStateMachine(input, base, encodingOverride, url, stateOverride) {\r\n this.pointer = 0;\r\n this.input = input;\r\n this.base = base || null;\r\n this.encodingOverride = encodingOverride || \"utf-8\";\r\n this.stateOverride = stateOverride;\r\n this.url = url;\r\n this.failure = false;\r\n this.parseError = false;\r\n\r\n if (!this.url) {\r\n this.url = {\r\n scheme: \"\",\r\n username: \"\",\r\n password: \"\",\r\n host: null,\r\n port: null,\r\n path: [],\r\n query: null,\r\n fragment: null,\r\n\r\n cannotBeABaseURL: false\r\n };\r\n\r\n const res = trimControlChars(this.input);\r\n if (res !== this.input) {\r\n this.parseError = true;\r\n }\r\n this.input = res;\r\n }\r\n\r\n const res = trimTabAndNewline(this.input);\r\n if (res !== this.input) {\r\n this.parseError = true;\r\n }\r\n this.input = res;\r\n\r\n this.state = stateOverride || \"scheme start\";\r\n\r\n this.buffer = \"\";\r\n this.atFlag = false;\r\n this.arrFlag = false;\r\n this.passwordTokenSeenFlag = false;\r\n\r\n this.input = punycode.ucs2.decode(this.input);\r\n\r\n for (; this.pointer <= this.input.length; ++this.pointer) {\r\n const c = this.input[this.pointer];\r\n const cStr = isNaN(c) ? undefined : String.fromCodePoint(c);\r\n\r\n // exec state machine\r\n const ret = this[\"parse \" + this.state](c, cStr);\r\n if (!ret) {\r\n break; // terminate algorithm\r\n } else if (ret === failure) {\r\n this.failure = true;\r\n break;\r\n }\r\n }\r\n}\r\n\r\nURLStateMachine.prototype[\"parse scheme start\"] = function parseSchemeStart(c, cStr) {\r\n if (isASCIIAlpha(c)) {\r\n this.buffer += cStr.toLowerCase();\r\n this.state = \"scheme\";\r\n } else if (!this.stateOverride) {\r\n this.state = \"no scheme\";\r\n --this.pointer;\r\n } else {\r\n this.parseError = true;\r\n return failure;\r\n }\r\n\r\n return true;\r\n};\r\n\r\nURLStateMachine.prototype[\"parse scheme\"] = function parseScheme(c, cStr) {\r\n if (isASCIIAlphanumeric(c) || c === 43 || c === 45 || c === 46) {\r\n this.buffer += cStr.toLowerCase();\r\n } else if (c === 58) {\r\n if (this.stateOverride) {\r\n if (isSpecial(this.url) && !isSpecialScheme(this.buffer)) {\r\n return false;\r\n }\r\n\r\n if (!isSpecial(this.url) && isSpecialScheme(this.buffer)) {\r\n return false;\r\n }\r\n\r\n if ((includesCredentials(this.url) || this.url.port !== null) && this.buffer === \"file\") {\r\n return false;\r\n }\r\n\r\n if (this.url.scheme === \"file\" && (this.url.host === \"\" || this.url.host === null)) {\r\n return false;\r\n }\r\n }\r\n this.url.scheme = this.buffer;\r\n this.buffer = \"\";\r\n if (this.stateOverride) {\r\n return false;\r\n }\r\n if (this.url.scheme === \"file\") {\r\n if (this.input[this.pointer + 1] !== 47 || this.input[this.pointer + 2] !== 47) {\r\n this.parseError = true;\r\n }\r\n this.state = \"file\";\r\n } else if (isSpecial(this.url) && this.base !== null && this.base.scheme === this.url.scheme) {\r\n this.state = \"special relative or authority\";\r\n } else if (isSpecial(this.url)) {\r\n this.state = \"special authority slashes\";\r\n } else if (this.input[this.pointer + 1] === 47) {\r\n this.state = \"path or authority\";\r\n ++this.pointer;\r\n } else {\r\n this.url.cannotBeABaseURL = true;\r\n this.url.path.push(\"\");\r\n this.state = \"cannot-be-a-base-URL path\";\r\n }\r\n } else if (!this.stateOverride) {\r\n this.buffer = \"\";\r\n this.state = \"no scheme\";\r\n this.pointer = -1;\r\n } else {\r\n this.parseError = true;\r\n return failure;\r\n }\r\n\r\n return true;\r\n};\r\n\r\nURLStateMachine.prototype[\"parse no scheme\"] = function parseNoScheme(c) {\r\n if (this.base === null || (this.base.cannotBeABaseURL && c !== 35)) {\r\n return failure;\r\n } else if (this.base.cannotBeABaseURL && c === 35) {\r\n this.url.scheme = this.base.scheme;\r\n this.url.path = this.base.path.slice();\r\n this.url.query = this.base.query;\r\n this.url.fragment = \"\";\r\n this.url.cannotBeABaseURL = true;\r\n this.state = \"fragment\";\r\n } else if (this.base.scheme === \"file\") {\r\n this.state = \"file\";\r\n --this.pointer;\r\n } else {\r\n this.state = \"relative\";\r\n --this.pointer;\r\n }\r\n\r\n return true;\r\n};\r\n\r\nURLStateMachine.prototype[\"parse special relative or authority\"] = function parseSpecialRelativeOrAuthority(c) {\r\n if (c === 47 && this.input[this.pointer + 1] === 47) {\r\n this.state = \"special authority ignore slashes\";\r\n ++this.pointer;\r\n } else {\r\n this.parseError = true;\r\n this.state = \"relative\";\r\n --this.pointer;\r\n }\r\n\r\n return true;\r\n};\r\n\r\nURLStateMachine.prototype[\"parse path or authority\"] = function parsePathOrAuthority(c) {\r\n if (c === 47) {\r\n this.state = \"authority\";\r\n } else {\r\n this.state = \"path\";\r\n --this.pointer;\r\n }\r\n\r\n return true;\r\n};\r\n\r\nURLStateMachine.prototype[\"parse relative\"] = function parseRelative(c) {\r\n this.url.scheme = this.base.scheme;\r\n if (isNaN(c)) {\r\n this.url.username = this.base.username;\r\n this.url.password = this.base.password;\r\n this.url.host = this.base.host;\r\n this.url.port = this.base.port;\r\n this.url.path = this.base.path.slice();\r\n this.url.query = this.base.query;\r\n } else if (c === 47) {\r\n this.state = \"relative slash\";\r\n } else if (c === 63) {\r\n this.url.username = this.base.username;\r\n this.url.password = this.base.password;\r\n this.url.host = this.base.host;\r\n this.url.port = this.base.port;\r\n this.url.path = this.base.path.slice();\r\n this.url.query = \"\";\r\n this.state = \"query\";\r\n } else if (c === 35) {\r\n this.url.username = this.base.username;\r\n this.url.password = this.base.password;\r\n this.url.host = this.base.host;\r\n this.url.port = this.base.port;\r\n this.url.path = this.base.path.slice();\r\n this.url.query = this.base.query;\r\n this.url.fragment = \"\";\r\n this.state = \"fragment\";\r\n } else if (isSpecial(this.url) && c === 92) {\r\n this.parseError = true;\r\n this.state = \"relative slash\";\r\n } else {\r\n this.url.username = this.base.username;\r\n this.url.password = this.base.password;\r\n this.url.host = this.base.host;\r\n this.url.port = this.base.port;\r\n this.url.path = this.base.path.slice(0, this.base.path.length - 1);\r\n\r\n this.state = \"path\";\r\n --this.pointer;\r\n }\r\n\r\n return true;\r\n};\r\n\r\nURLStateMachine.prototype[\"parse relative slash\"] = function parseRelativeSlash(c) {\r\n if (isSpecial(this.url) && (c === 47 || c === 92)) {\r\n if (c === 92) {\r\n this.parseError = true;\r\n }\r\n this.state = \"special authority ignore slashes\";\r\n } else if (c === 47) {\r\n this.state = \"authority\";\r\n } else {\r\n this.url.username = this.base.username;\r\n this.url.password = this.base.password;\r\n this.url.host = this.base.host;\r\n this.url.port = this.base.port;\r\n this.state = \"path\";\r\n --this.pointer;\r\n }\r\n\r\n return true;\r\n};\r\n\r\nURLStateMachine.prototype[\"parse special authority slashes\"] = function parseSpecialAuthoritySlashes(c) {\r\n if (c === 47 && this.input[this.pointer + 1] === 47) {\r\n this.state = \"special authority ignore slashes\";\r\n ++this.pointer;\r\n } else {\r\n this.parseError = true;\r\n this.state = \"special authority ignore slashes\";\r\n --this.pointer;\r\n }\r\n\r\n return true;\r\n};\r\n\r\nURLStateMachine.prototype[\"parse special authority ignore slashes\"] = function parseSpecialAuthorityIgnoreSlashes(c) {\r\n if (c !== 47 && c !== 92) {\r\n this.state = \"authority\";\r\n --this.pointer;\r\n } else {\r\n this.parseError = true;\r\n }\r\n\r\n return true;\r\n};\r\n\r\nURLStateMachine.prototype[\"parse authority\"] = function parseAuthority(c, cStr) {\r\n if (c === 64) {\r\n this.parseError = true;\r\n if (this.atFlag) {\r\n this.buffer = \"%40\" + this.buffer;\r\n }\r\n this.atFlag = true;\r\n\r\n // careful, this is based on buffer and has its own pointer (this.pointer != pointer) and inner chars\r\n const len = countSymbols(this.buffer);\r\n for (let pointer = 0; pointer < len; ++pointer) {\r\n const codePoint = this.buffer.codePointAt(pointer);\r\n\r\n if (codePoint === 58 && !this.passwordTokenSeenFlag) {\r\n this.passwordTokenSeenFlag = true;\r\n continue;\r\n }\r\n const encodedCodePoints = percentEncodeChar(codePoint, isUserinfoPercentEncode);\r\n if (this.passwordTokenSeenFlag) {\r\n this.url.password += encodedCodePoints;\r\n } else {\r\n this.url.username += encodedCodePoints;\r\n }\r\n }\r\n this.buffer = \"\";\r\n } else if (isNaN(c) || c === 47 || c === 63 || c === 35 ||\r\n (isSpecial(this.url) && c === 92)) {\r\n if (this.atFlag && this.buffer === \"\") {\r\n this.parseError = true;\r\n return failure;\r\n }\r\n this.pointer -= countSymbols(this.buffer) + 1;\r\n this.buffer = \"\";\r\n this.state = \"host\";\r\n } else {\r\n this.buffer += cStr;\r\n }\r\n\r\n return true;\r\n};\r\n\r\nURLStateMachine.prototype[\"parse hostname\"] =\r\nURLStateMachine.prototype[\"parse host\"] = function parseHostName(c, cStr) {\r\n if (this.stateOverride && this.url.scheme === \"file\") {\r\n --this.pointer;\r\n this.state = \"file host\";\r\n } else if (c === 58 && !this.arrFlag) {\r\n if (this.buffer === \"\") {\r\n this.parseError = true;\r\n return failure;\r\n }\r\n\r\n const host = parseHost(this.buffer, isSpecial(this.url));\r\n if (host === failure) {\r\n return failure;\r\n }\r\n\r\n this.url.host = host;\r\n this.buffer = \"\";\r\n this.state = \"port\";\r\n if (this.stateOverride === \"hostname\") {\r\n return false;\r\n }\r\n } else if (isNaN(c) || c === 47 || c === 63 || c === 35 ||\r\n (isSpecial(this.url) && c === 92)) {\r\n --this.pointer;\r\n if (isSpecial(this.url) && this.buffer === \"\") {\r\n this.parseError = true;\r\n return failure;\r\n } else if (this.stateOverride && this.buffer === \"\" &&\r\n (includesCredentials(this.url) || this.url.port !== null)) {\r\n this.parseError = true;\r\n return false;\r\n }\r\n\r\n const host = parseHost(this.buffer, isSpecial(this.url));\r\n if (host === failure) {\r\n return failure;\r\n }\r\n\r\n this.url.host = host;\r\n this.buffer = \"\";\r\n this.state = \"path start\";\r\n if (this.stateOverride) {\r\n return false;\r\n }\r\n } else {\r\n if (c === 91) {\r\n this.arrFlag = true;\r\n } else if (c === 93) {\r\n this.arrFlag = false;\r\n }\r\n this.buffer += cStr;\r\n }\r\n\r\n return true;\r\n};\r\n\r\nURLStateMachine.prototype[\"parse port\"] = function parsePort(c, cStr) {\r\n if (isASCIIDigit(c)) {\r\n this.buffer += cStr;\r\n } else if (isNaN(c) || c === 47 || c === 63 || c === 35 ||\r\n (isSpecial(this.url) && c === 92) ||\r\n this.stateOverride) {\r\n if (this.buffer !== \"\") {\r\n const port = parseInt(this.buffer);\r\n if (port > Math.pow(2, 16) - 1) {\r\n this.parseError = true;\r\n return failure;\r\n }\r\n this.url.port = port === defaultPort(this.url.scheme) ? null : port;\r\n this.buffer = \"\";\r\n }\r\n if (this.stateOverride) {\r\n return false;\r\n }\r\n this.state = \"path start\";\r\n --this.pointer;\r\n } else {\r\n this.parseError = true;\r\n return failure;\r\n }\r\n\r\n return true;\r\n};\r\n\r\nconst fileOtherwiseCodePoints = new Set([47, 92, 63, 35]);\r\n\r\nURLStateMachine.prototype[\"parse file\"] = function parseFile(c) {\r\n this.url.scheme = \"file\";\r\n\r\n if (c === 47 || c === 92) {\r\n if (c === 92) {\r\n this.parseError = true;\r\n }\r\n this.state = \"file slash\";\r\n } else if (this.base !== null && this.base.scheme === \"file\") {\r\n if (isNaN(c)) {\r\n this.url.host = this.base.host;\r\n this.url.path = this.base.path.slice();\r\n this.url.query = this.base.query;\r\n } else if (c === 63) {\r\n this.url.host = this.base.host;\r\n this.url.path = this.base.path.slice();\r\n this.url.query = \"\";\r\n this.state = \"query\";\r\n } else if (c === 35) {\r\n this.url.host = this.base.host;\r\n this.url.path = this.base.path.slice();\r\n this.url.query = this.base.query;\r\n this.url.fragment = \"\";\r\n this.state = \"fragment\";\r\n } else {\r\n if (this.input.length - this.pointer - 1 === 0 || // remaining consists of 0 code points\r\n !isWindowsDriveLetterCodePoints(c, this.input[this.pointer + 1]) ||\r\n (this.input.length - this.pointer - 1 >= 2 && // remaining has at least 2 code points\r\n !fileOtherwiseCodePoints.has(this.input[this.pointer + 2]))) {\r\n this.url.host = this.base.host;\r\n this.url.path = this.base.path.slice();\r\n shortenPath(this.url);\r\n } else {\r\n this.parseError = true;\r\n }\r\n\r\n this.state = \"path\";\r\n --this.pointer;\r\n }\r\n } else {\r\n this.state = \"path\";\r\n --this.pointer;\r\n }\r\n\r\n return true;\r\n};\r\n\r\nURLStateMachine.prototype[\"parse file slash\"] = function parseFileSlash(c) {\r\n if (c === 47 || c === 92) {\r\n if (c === 92) {\r\n this.parseError = true;\r\n }\r\n this.state = \"file host\";\r\n } else {\r\n if (this.base !== null && this.base.scheme === \"file\") {\r\n if (isNormalizedWindowsDriveLetterString(this.base.path[0])) {\r\n this.url.path.push(this.base.path[0]);\r\n } else {\r\n this.url.host = this.base.host;\r\n }\r\n }\r\n this.state = \"path\";\r\n --this.pointer;\r\n }\r\n\r\n return true;\r\n};\r\n\r\nURLStateMachine.prototype[\"parse file host\"] = function parseFileHost(c, cStr) {\r\n if (isNaN(c) || c === 47 || c === 92 || c === 63 || c === 35) {\r\n --this.pointer;\r\n if (!this.stateOverride && isWindowsDriveLetterString(this.buffer)) {\r\n this.parseError = true;\r\n this.state = \"path\";\r\n } else if (this.buffer === \"\") {\r\n this.url.host = \"\";\r\n if (this.stateOverride) {\r\n return false;\r\n }\r\n this.state = \"path start\";\r\n } else {\r\n let host = parseHost(this.buffer, isSpecial(this.url));\r\n if (host === failure) {\r\n return failure;\r\n }\r\n if (host === \"localhost\") {\r\n host = \"\";\r\n }\r\n this.url.host = host;\r\n\r\n if (this.stateOverride) {\r\n return false;\r\n }\r\n\r\n this.buffer = \"\";\r\n this.state = \"path start\";\r\n }\r\n } else {\r\n this.buffer += cStr;\r\n }\r\n\r\n return true;\r\n};\r\n\r\nURLStateMachine.prototype[\"parse path start\"] = function parsePathStart(c) {\r\n if (isSpecial(this.url)) {\r\n if (c === 92) {\r\n this.parseError = true;\r\n }\r\n this.state = \"path\";\r\n\r\n if (c !== 47 && c !== 92) {\r\n --this.pointer;\r\n }\r\n } else if (!this.stateOverride && c === 63) {\r\n this.url.query = \"\";\r\n this.state = \"query\";\r\n } else if (!this.stateOverride && c === 35) {\r\n this.url.fragment = \"\";\r\n this.state = \"fragment\";\r\n } else if (c !== undefined) {\r\n this.state = \"path\";\r\n if (c !== 47) {\r\n --this.pointer;\r\n }\r\n }\r\n\r\n return true;\r\n};\r\n\r\nURLStateMachine.prototype[\"parse path\"] = function parsePath(c) {\r\n if (isNaN(c) || c === 47 || (isSpecial(this.url) && c === 92) ||\r\n (!this.stateOverride && (c === 63 || c === 35))) {\r\n if (isSpecial(this.url) && c === 92) {\r\n this.parseError = true;\r\n }\r\n\r\n if (isDoubleDot(this.buffer)) {\r\n shortenPath(this.url);\r\n if (c !== 47 && !(isSpecial(this.url) && c === 92)) {\r\n this.url.path.push(\"\");\r\n }\r\n } else if (isSingleDot(this.buffer) && c !== 47 &&\r\n !(isSpecial(this.url) && c === 92)) {\r\n this.url.path.push(\"\");\r\n } else if (!isSingleDot(this.buffer)) {\r\n if (this.url.scheme === \"file\" && this.url.path.length === 0 && isWindowsDriveLetterString(this.buffer)) {\r\n if (this.url.host !== \"\" && this.url.host !== null) {\r\n this.parseError = true;\r\n this.url.host = \"\";\r\n }\r\n this.buffer = this.buffer[0] + \":\";\r\n }\r\n this.url.path.push(this.buffer);\r\n }\r\n this.buffer = \"\";\r\n if (this.url.scheme === \"file\" && (c === undefined || c === 63 || c === 35)) {\r\n while (this.url.path.length > 1 && this.url.path[0] === \"\") {\r\n this.parseError = true;\r\n this.url.path.shift();\r\n }\r\n }\r\n if (c === 63) {\r\n this.url.query = \"\";\r\n this.state = \"query\";\r\n }\r\n if (c === 35) {\r\n this.url.fragment = \"\";\r\n this.state = \"fragment\";\r\n }\r\n } else {\r\n // TODO: If c is not a URL code point and not \"%\", parse error.\r\n\r\n if (c === 37 &&\r\n (!isASCIIHex(this.input[this.pointer + 1]) ||\r\n !isASCIIHex(this.input[this.pointer + 2]))) {\r\n this.parseError = true;\r\n }\r\n\r\n this.buffer += percentEncodeChar(c, isPathPercentEncode);\r\n }\r\n\r\n return true;\r\n};\r\n\r\nURLStateMachine.prototype[\"parse cannot-be-a-base-URL path\"] = function parseCannotBeABaseURLPath(c) {\r\n if (c === 63) {\r\n this.url.query = \"\";\r\n this.state = \"query\";\r\n } else if (c === 35) {\r\n this.url.fragment = \"\";\r\n this.state = \"fragment\";\r\n } else {\r\n // TODO: Add: not a URL code point\r\n if (!isNaN(c) && c !== 37) {\r\n this.parseError = true;\r\n }\r\n\r\n if (c === 37 &&\r\n (!isASCIIHex(this.input[this.pointer + 1]) ||\r\n !isASCIIHex(this.input[this.pointer + 2]))) {\r\n this.parseError = true;\r\n }\r\n\r\n if (!isNaN(c)) {\r\n this.url.path[0] = this.url.path[0] + percentEncodeChar(c, isC0ControlPercentEncode);\r\n }\r\n }\r\n\r\n return true;\r\n};\r\n\r\nURLStateMachine.prototype[\"parse query\"] = function parseQuery(c, cStr) {\r\n if (isNaN(c) || (!this.stateOverride && c === 35)) {\r\n if (!isSpecial(this.url) || this.url.scheme === \"ws\" || this.url.scheme === \"wss\") {\r\n this.encodingOverride = \"utf-8\";\r\n }\r\n\r\n const buffer = new Buffer(this.buffer); // TODO: Use encoding override instead\r\n for (let i = 0; i < buffer.length; ++i) {\r\n if (buffer[i] < 0x21 || buffer[i] > 0x7E || buffer[i] === 0x22 || buffer[i] === 0x23 ||\r\n buffer[i] === 0x3C || buffer[i] === 0x3E) {\r\n this.url.query += percentEncode(buffer[i]);\r\n } else {\r\n this.url.query += String.fromCodePoint(buffer[i]);\r\n }\r\n }\r\n\r\n this.buffer = \"\";\r\n if (c === 35) {\r\n this.url.fragment = \"\";\r\n this.state = \"fragment\";\r\n }\r\n } else {\r\n // TODO: If c is not a URL code point and not \"%\", parse error.\r\n if (c === 37 &&\r\n (!isASCIIHex(this.input[this.pointer + 1]) ||\r\n !isASCIIHex(this.input[this.pointer + 2]))) {\r\n this.parseError = true;\r\n }\r\n\r\n this.buffer += cStr;\r\n }\r\n\r\n return true;\r\n};\r\n\r\nURLStateMachine.prototype[\"parse fragment\"] = function parseFragment(c) {\r\n if (isNaN(c)) { // do nothing\r\n } else if (c === 0x0) {\r\n this.parseError = true;\r\n } else {\r\n // TODO: If c is not a URL code point and not \"%\", parse error.\r\n if (c === 37 &&\r\n (!isASCIIHex(this.input[this.pointer + 1]) ||\r\n !isASCIIHex(this.input[this.pointer + 2]))) {\r\n this.parseError = true;\r\n }\r\n\r\n this.url.fragment += percentEncodeChar(c, isC0ControlPercentEncode);\r\n }\r\n\r\n return true;\r\n};\r\n\r\nfunction serializeURL(url, excludeFragment) {\r\n let output = url.scheme + \":\";\r\n if (url.host !== null) {\r\n output += \"//\";\r\n\r\n if (url.username !== \"\" || url.password !== \"\") {\r\n output += url.username;\r\n if (url.password !== \"\") {\r\n output += \":\" + url.password;\r\n }\r\n output += \"@\";\r\n }\r\n\r\n output += serializeHost(url.host);\r\n\r\n if (url.port !== null) {\r\n output += \":\" + url.port;\r\n }\r\n } else if (url.host === null && url.scheme === \"file\") {\r\n output += \"//\";\r\n }\r\n\r\n if (url.cannotBeABaseURL) {\r\n output += url.path[0];\r\n } else {\r\n for (const string of url.path) {\r\n output += \"/\" + string;\r\n }\r\n }\r\n\r\n if (url.query !== null) {\r\n output += \"?\" + url.query;\r\n }\r\n\r\n if (!excludeFragment && url.fragment !== null) {\r\n output += \"#\" + url.fragment;\r\n }\r\n\r\n return output;\r\n}\r\n\r\nfunction serializeOrigin(tuple) {\r\n let result = tuple.scheme + \"://\";\r\n result += serializeHost(tuple.host);\r\n\r\n if (tuple.port !== null) {\r\n result += \":\" + tuple.port;\r\n }\r\n\r\n return result;\r\n}\r\n\r\nmodule.exports.serializeURL = serializeURL;\r\n\r\nmodule.exports.serializeURLOrigin = function (url) {\r\n // https://url.spec.whatwg.org/#concept-url-origin\r\n switch (url.scheme) {\r\n case \"blob\":\r\n try {\r\n return module.exports.serializeURLOrigin(module.exports.parseURL(url.path[0]));\r\n } catch (e) {\r\n // serializing an opaque origin returns \"null\"\r\n return \"null\";\r\n }\r\n case \"ftp\":\r\n case \"gopher\":\r\n case \"http\":\r\n case \"https\":\r\n case \"ws\":\r\n case \"wss\":\r\n return serializeOrigin({\r\n scheme: url.scheme,\r\n host: url.host,\r\n port: url.port\r\n });\r\n case \"file\":\r\n // spec says \"exercise to the reader\", chrome says \"file://\"\r\n return \"file://\";\r\n default:\r\n // serializing an opaque origin returns \"null\"\r\n return \"null\";\r\n }\r\n};\r\n\r\nmodule.exports.basicURLParse = function (input, options) {\r\n if (options === undefined) {\r\n options = {};\r\n }\r\n\r\n const usm = new URLStateMachine(input, options.baseURL, options.encodingOverride, options.url, options.stateOverride);\r\n if (usm.failure) {\r\n return \"failure\";\r\n }\r\n\r\n return usm.url;\r\n};\r\n\r\nmodule.exports.setTheUsername = function (url, username) {\r\n url.username = \"\";\r\n const decoded = punycode.ucs2.decode(username);\r\n for (let i = 0; i < decoded.length; ++i) {\r\n url.username += percentEncodeChar(decoded[i], isUserinfoPercentEncode);\r\n }\r\n};\r\n\r\nmodule.exports.setThePassword = function (url, password) {\r\n url.password = \"\";\r\n const decoded = punycode.ucs2.decode(password);\r\n for (let i = 0; i < decoded.length; ++i) {\r\n url.password += percentEncodeChar(decoded[i], isUserinfoPercentEncode);\r\n }\r\n};\r\n\r\nmodule.exports.serializeHost = serializeHost;\r\n\r\nmodule.exports.cannotHaveAUsernamePasswordPort = cannotHaveAUsernamePasswordPort;\r\n\r\nmodule.exports.serializeInteger = function (integer) {\r\n return String(integer);\r\n};\r\n\r\nmodule.exports.parseURL = function (input, options) {\r\n if (options === undefined) {\r\n options = {};\r\n }\r\n\r\n // We don't handle blobs, so this just delegates:\r\n return module.exports.basicURLParse(input, { baseURL: options.baseURL, encodingOverride: options.encodingOverride });\r\n};\r\n","\"use strict\";\nconst usm = require(\"./url-state-machine\");\n\nexports.implementation = class URLImpl {\n constructor(constructorArgs) {\n const url = constructorArgs[0];\n const base = constructorArgs[1];\n\n let parsedBase = null;\n if (base !== undefined) {\n parsedBase = usm.basicURLParse(base);\n if (parsedBase === \"failure\") {\n throw new TypeError(\"Invalid base URL\");\n }\n }\n\n const parsedURL = usm.basicURLParse(url, { baseURL: parsedBase });\n if (parsedURL === \"failure\") {\n throw new TypeError(\"Invalid URL\");\n }\n\n this._url = parsedURL;\n\n // TODO: query stuff\n }\n\n get href() {\n return usm.serializeURL(this._url);\n }\n\n set href(v) {\n const parsedURL = usm.basicURLParse(v);\n if (parsedURL === \"failure\") {\n throw new TypeError(\"Invalid URL\");\n }\n\n this._url = parsedURL;\n }\n\n get origin() {\n return usm.serializeURLOrigin(this._url);\n }\n\n get protocol() {\n return this._url.scheme + \":\";\n }\n\n set protocol(v) {\n usm.basicURLParse(v + \":\", { url: this._url, stateOverride: \"scheme start\" });\n }\n\n get username() {\n return this._url.username;\n }\n\n set username(v) {\n if (usm.cannotHaveAUsernamePasswordPort(this._url)) {\n return;\n }\n\n usm.setTheUsername(this._url, v);\n }\n\n get password() {\n return this._url.password;\n }\n\n set password(v) {\n if (usm.cannotHaveAUsernamePasswordPort(this._url)) {\n return;\n }\n\n usm.setThePassword(this._url, v);\n }\n\n get host() {\n const url = this._url;\n\n if (url.host === null) {\n return \"\";\n }\n\n if (url.port === null) {\n return usm.serializeHost(url.host);\n }\n\n return usm.serializeHost(url.host) + \":\" + usm.serializeInteger(url.port);\n }\n\n set host(v) {\n if (this._url.cannotBeABaseURL) {\n return;\n }\n\n usm.basicURLParse(v, { url: this._url, stateOverride: \"host\" });\n }\n\n get hostname() {\n if (this._url.host === null) {\n return \"\";\n }\n\n return usm.serializeHost(this._url.host);\n }\n\n set hostname(v) {\n if (this._url.cannotBeABaseURL) {\n return;\n }\n\n usm.basicURLParse(v, { url: this._url, stateOverride: \"hostname\" });\n }\n\n get port() {\n if (this._url.port === null) {\n return \"\";\n }\n\n return usm.serializeInteger(this._url.port);\n }\n\n set port(v) {\n if (usm.cannotHaveAUsernamePasswordPort(this._url)) {\n return;\n }\n\n if (v === \"\") {\n this._url.port = null;\n } else {\n usm.basicURLParse(v, { url: this._url, stateOverride: \"port\" });\n }\n }\n\n get pathname() {\n if (this._url.cannotBeABaseURL) {\n return this._url.path[0];\n }\n\n if (this._url.path.length === 0) {\n return \"\";\n }\n\n return \"/\" + this._url.path.join(\"/\");\n }\n\n set pathname(v) {\n if (this._url.cannotBeABaseURL) {\n return;\n }\n\n this._url.path = [];\n usm.basicURLParse(v, { url: this._url, stateOverride: \"path start\" });\n }\n\n get search() {\n if (this._url.query === null || this._url.query === \"\") {\n return \"\";\n }\n\n return \"?\" + this._url.query;\n }\n\n set search(v) {\n // TODO: query stuff\n\n const url = this._url;\n\n if (v === \"\") {\n url.query = null;\n return;\n }\n\n const input = v[0] === \"?\" ? v.substring(1) : v;\n url.query = \"\";\n usm.basicURLParse(input, { url, stateOverride: \"query\" });\n }\n\n get hash() {\n if (this._url.fragment === null || this._url.fragment === \"\") {\n return \"\";\n }\n\n return \"#\" + this._url.fragment;\n }\n\n set hash(v) {\n if (v === \"\") {\n this._url.fragment = null;\n return;\n }\n\n const input = v[0] === \"#\" ? v.substring(1) : v;\n this._url.fragment = \"\";\n usm.basicURLParse(input, { url: this._url, stateOverride: \"fragment\" });\n }\n\n toJSON() {\n return this.href;\n }\n};\n","\"use strict\";\n\nconst conversions = require(\"webidl-conversions\");\nconst utils = require(\"./utils.js\");\nconst Impl = require(\".//URL-impl.js\");\n\nconst impl = utils.implSymbol;\n\nfunction URL(url) {\n if (!this || this[impl] || !(this instanceof URL)) {\n throw new TypeError(\"Failed to construct 'URL': Please use the 'new' operator, this DOM object constructor cannot be called as a function.\");\n }\n if (arguments.length < 1) {\n throw new TypeError(\"Failed to construct 'URL': 1 argument required, but only \" + arguments.length + \" present.\");\n }\n const args = [];\n for (let i = 0; i < arguments.length && i < 2; ++i) {\n args[i] = arguments[i];\n }\n args[0] = conversions[\"USVString\"](args[0]);\n if (args[1] !== undefined) {\n args[1] = conversions[\"USVString\"](args[1]);\n }\n\n module.exports.setup(this, args);\n}\n\nURL.prototype.toJSON = function toJSON() {\n if (!this || !module.exports.is(this)) {\n throw new TypeError(\"Illegal invocation\");\n }\n const args = [];\n for (let i = 0; i < arguments.length && i < 0; ++i) {\n args[i] = arguments[i];\n }\n return this[impl].toJSON.apply(this[impl], args);\n};\nObject.defineProperty(URL.prototype, \"href\", {\n get() {\n return this[impl].href;\n },\n set(V) {\n V = conversions[\"USVString\"](V);\n this[impl].href = V;\n },\n enumerable: true,\n configurable: true\n});\n\nURL.prototype.toString = function () {\n if (!this || !module.exports.is(this)) {\n throw new TypeError(\"Illegal invocation\");\n }\n return this.href;\n};\n\nObject.defineProperty(URL.prototype, \"origin\", {\n get() {\n return this[impl].origin;\n },\n enumerable: true,\n configurable: true\n});\n\nObject.defineProperty(URL.prototype, \"protocol\", {\n get() {\n return this[impl].protocol;\n },\n set(V) {\n V = conversions[\"USVString\"](V);\n this[impl].protocol = V;\n },\n enumerable: true,\n configurable: true\n});\n\nObject.defineProperty(URL.prototype, \"username\", {\n get() {\n return this[impl].username;\n },\n set(V) {\n V = conversions[\"USVString\"](V);\n this[impl].username = V;\n },\n enumerable: true,\n configurable: true\n});\n\nObject.defineProperty(URL.prototype, \"password\", {\n get() {\n return this[impl].password;\n },\n set(V) {\n V = conversions[\"USVString\"](V);\n this[impl].password = V;\n },\n enumerable: true,\n configurable: true\n});\n\nObject.defineProperty(URL.prototype, \"host\", {\n get() {\n return this[impl].host;\n },\n set(V) {\n V = conversions[\"USVString\"](V);\n this[impl].host = V;\n },\n enumerable: true,\n configurable: true\n});\n\nObject.defineProperty(URL.prototype, \"hostname\", {\n get() {\n return this[impl].hostname;\n },\n set(V) {\n V = conversions[\"USVString\"](V);\n this[impl].hostname = V;\n },\n enumerable: true,\n configurable: true\n});\n\nObject.defineProperty(URL.prototype, \"port\", {\n get() {\n return this[impl].port;\n },\n set(V) {\n V = conversions[\"USVString\"](V);\n this[impl].port = V;\n },\n enumerable: true,\n configurable: true\n});\n\nObject.defineProperty(URL.prototype, \"pathname\", {\n get() {\n return this[impl].pathname;\n },\n set(V) {\n V = conversions[\"USVString\"](V);\n this[impl].pathname = V;\n },\n enumerable: true,\n configurable: true\n});\n\nObject.defineProperty(URL.prototype, \"search\", {\n get() {\n return this[impl].search;\n },\n set(V) {\n V = conversions[\"USVString\"](V);\n this[impl].search = V;\n },\n enumerable: true,\n configurable: true\n});\n\nObject.defineProperty(URL.prototype, \"hash\", {\n get() {\n return this[impl].hash;\n },\n set(V) {\n V = conversions[\"USVString\"](V);\n this[impl].hash = V;\n },\n enumerable: true,\n configurable: true\n});\n\n\nmodule.exports = {\n is(obj) {\n return !!obj && obj[impl] instanceof Impl.implementation;\n },\n create(constructorArgs, privateData) {\n let obj = Object.create(URL.prototype);\n this.setup(obj, constructorArgs, privateData);\n return obj;\n },\n setup(obj, constructorArgs, privateData) {\n if (!privateData) privateData = {};\n privateData.wrapper = obj;\n\n obj[impl] = new Impl.implementation(constructorArgs, privateData);\n obj[impl][utils.wrapperSymbol] = obj;\n },\n interface: URL,\n expose: {\n Window: { URL: URL },\n Worker: { URL: URL }\n }\n};\n\n","\"use strict\";\n\nexports.URL = require(\"./URL\").interface;\nexports.serializeURL = require(\"./url-state-machine\").serializeURL;\nexports.serializeURLOrigin = require(\"./url-state-machine\").serializeURLOrigin;\nexports.basicURLParse = require(\"./url-state-machine\").basicURLParse;\nexports.setTheUsername = require(\"./url-state-machine\").setTheUsername;\nexports.setThePassword = require(\"./url-state-machine\").setThePassword;\nexports.serializeHost = require(\"./url-state-machine\").serializeHost;\nexports.serializeInteger = require(\"./url-state-machine\").serializeInteger;\nexports.parseURL = require(\"./url-state-machine\").parseURL;\n","import Stream from 'stream';\nimport http from 'http';\nimport Url from 'url';\nimport whatwgUrl from 'whatwg-url';\nimport https from 'https';\nimport zlib from 'zlib';\n\n// Based on https://github.com/tmpvar/jsdom/blob/aa85b2abf07766ff7bf5c1f6daafb3726f2f2db5/lib/jsdom/living/blob.js\n\n// fix for \"Readable\" isn't a named export issue\nconst Readable = Stream.Readable;\n\nconst BUFFER = Symbol('buffer');\nconst TYPE = Symbol('type');\n\nclass Blob {\n\tconstructor() {\n\t\tthis[TYPE] = '';\n\n\t\tconst blobParts = arguments[0];\n\t\tconst options = arguments[1];\n\n\t\tconst buffers = [];\n\t\tlet size = 0;\n\n\t\tif (blobParts) {\n\t\t\tconst a = blobParts;\n\t\t\tconst length = Number(a.length);\n\t\t\tfor (let i = 0; i < length; i++) {\n\t\t\t\tconst element = a[i];\n\t\t\t\tlet buffer;\n\t\t\t\tif (element instanceof Buffer) {\n\t\t\t\t\tbuffer = element;\n\t\t\t\t} else if (ArrayBuffer.isView(element)) {\n\t\t\t\t\tbuffer = Buffer.from(element.buffer, element.byteOffset, element.byteLength);\n\t\t\t\t} else if (element instanceof ArrayBuffer) {\n\t\t\t\t\tbuffer = Buffer.from(element);\n\t\t\t\t} else if (element instanceof Blob) {\n\t\t\t\t\tbuffer = element[BUFFER];\n\t\t\t\t} else {\n\t\t\t\t\tbuffer = Buffer.from(typeof element === 'string' ? element : String(element));\n\t\t\t\t}\n\t\t\t\tsize += buffer.length;\n\t\t\t\tbuffers.push(buffer);\n\t\t\t}\n\t\t}\n\n\t\tthis[BUFFER] = Buffer.concat(buffers);\n\n\t\tlet type = options && options.type !== undefined && String(options.type).toLowerCase();\n\t\tif (type && !/[^\\u0020-\\u007E]/.test(type)) {\n\t\t\tthis[TYPE] = type;\n\t\t}\n\t}\n\tget size() {\n\t\treturn this[BUFFER].length;\n\t}\n\tget type() {\n\t\treturn this[TYPE];\n\t}\n\ttext() {\n\t\treturn Promise.resolve(this[BUFFER].toString());\n\t}\n\tarrayBuffer() {\n\t\tconst buf = this[BUFFER];\n\t\tconst ab = buf.buffer.slice(buf.byteOffset, buf.byteOffset + buf.byteLength);\n\t\treturn Promise.resolve(ab);\n\t}\n\tstream() {\n\t\tconst readable = new Readable();\n\t\treadable._read = function () {};\n\t\treadable.push(this[BUFFER]);\n\t\treadable.push(null);\n\t\treturn readable;\n\t}\n\ttoString() {\n\t\treturn '[object Blob]';\n\t}\n\tslice() {\n\t\tconst size = this.size;\n\n\t\tconst start = arguments[0];\n\t\tconst end = arguments[1];\n\t\tlet relativeStart, relativeEnd;\n\t\tif (start === undefined) {\n\t\t\trelativeStart = 0;\n\t\t} else if (start < 0) {\n\t\t\trelativeStart = Math.max(size + start, 0);\n\t\t} else {\n\t\t\trelativeStart = Math.min(start, size);\n\t\t}\n\t\tif (end === undefined) {\n\t\t\trelativeEnd = size;\n\t\t} else if (end < 0) {\n\t\t\trelativeEnd = Math.max(size + end, 0);\n\t\t} else {\n\t\t\trelativeEnd = Math.min(end, size);\n\t\t}\n\t\tconst span = Math.max(relativeEnd - relativeStart, 0);\n\n\t\tconst buffer = this[BUFFER];\n\t\tconst slicedBuffer = buffer.slice(relativeStart, relativeStart + span);\n\t\tconst blob = new Blob([], { type: arguments[2] });\n\t\tblob[BUFFER] = slicedBuffer;\n\t\treturn blob;\n\t}\n}\n\nObject.defineProperties(Blob.prototype, {\n\tsize: { enumerable: true },\n\ttype: { enumerable: true },\n\tslice: { enumerable: true }\n});\n\nObject.defineProperty(Blob.prototype, Symbol.toStringTag, {\n\tvalue: 'Blob',\n\twritable: false,\n\tenumerable: false,\n\tconfigurable: true\n});\n\n/**\n * fetch-error.js\n *\n * FetchError interface for operational errors\n */\n\n/**\n * Create FetchError instance\n *\n * @param String message Error message for human\n * @param String type Error type for machine\n * @param String systemError For Node.js system error\n * @return FetchError\n */\nfunction FetchError(message, type, systemError) {\n Error.call(this, message);\n\n this.message = message;\n this.type = type;\n\n // when err.type is `system`, err.code contains system error code\n if (systemError) {\n this.code = this.errno = systemError.code;\n }\n\n // hide custom error implementation details from end-users\n Error.captureStackTrace(this, this.constructor);\n}\n\nFetchError.prototype = Object.create(Error.prototype);\nFetchError.prototype.constructor = FetchError;\nFetchError.prototype.name = 'FetchError';\n\nlet convert;\ntry {\n\tconvert = require('encoding').convert;\n} catch (e) {}\n\nconst INTERNALS = Symbol('Body internals');\n\n// fix an issue where \"PassThrough\" isn't a named export for node <10\nconst PassThrough = Stream.PassThrough;\n\n/**\n * Body mixin\n *\n * Ref: https://fetch.spec.whatwg.org/#body\n *\n * @param Stream body Readable stream\n * @param Object opts Response options\n * @return Void\n */\nfunction Body(body) {\n\tvar _this = this;\n\n\tvar _ref = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {},\n\t _ref$size = _ref.size;\n\n\tlet size = _ref$size === undefined ? 0 : _ref$size;\n\tvar _ref$timeout = _ref.timeout;\n\tlet timeout = _ref$timeout === undefined ? 0 : _ref$timeout;\n\n\tif (body == null) {\n\t\t// body is undefined or null\n\t\tbody = null;\n\t} else if (isURLSearchParams(body)) {\n\t\t// body is a URLSearchParams\n\t\tbody = Buffer.from(body.toString());\n\t} else if (isBlob(body)) ; else if (Buffer.isBuffer(body)) ; else if (Object.prototype.toString.call(body) === '[object ArrayBuffer]') {\n\t\t// body is ArrayBuffer\n\t\tbody = Buffer.from(body);\n\t} else if (ArrayBuffer.isView(body)) {\n\t\t// body is ArrayBufferView\n\t\tbody = Buffer.from(body.buffer, body.byteOffset, body.byteLength);\n\t} else if (body instanceof Stream) ; else {\n\t\t// none of the above\n\t\t// coerce to string then buffer\n\t\tbody = Buffer.from(String(body));\n\t}\n\tthis[INTERNALS] = {\n\t\tbody,\n\t\tdisturbed: false,\n\t\terror: null\n\t};\n\tthis.size = size;\n\tthis.timeout = timeout;\n\n\tif (body instanceof Stream) {\n\t\tbody.on('error', function (err) {\n\t\t\tconst error = err.name === 'AbortError' ? err : new FetchError(`Invalid response body while trying to fetch ${_this.url}: ${err.message}`, 'system', err);\n\t\t\t_this[INTERNALS].error = error;\n\t\t});\n\t}\n}\n\nBody.prototype = {\n\tget body() {\n\t\treturn this[INTERNALS].body;\n\t},\n\n\tget bodyUsed() {\n\t\treturn this[INTERNALS].disturbed;\n\t},\n\n\t/**\n * Decode response as ArrayBuffer\n *\n * @return Promise\n */\n\tarrayBuffer() {\n\t\treturn consumeBody.call(this).then(function (buf) {\n\t\t\treturn buf.buffer.slice(buf.byteOffset, buf.byteOffset + buf.byteLength);\n\t\t});\n\t},\n\n\t/**\n * Return raw response as Blob\n *\n * @return Promise\n */\n\tblob() {\n\t\tlet ct = this.headers && this.headers.get('content-type') || '';\n\t\treturn consumeBody.call(this).then(function (buf) {\n\t\t\treturn Object.assign(\n\t\t\t// Prevent copying\n\t\t\tnew Blob([], {\n\t\t\t\ttype: ct.toLowerCase()\n\t\t\t}), {\n\t\t\t\t[BUFFER]: buf\n\t\t\t});\n\t\t});\n\t},\n\n\t/**\n * Decode response as json\n *\n * @return Promise\n */\n\tjson() {\n\t\tvar _this2 = this;\n\n\t\treturn consumeBody.call(this).then(function (buffer) {\n\t\t\ttry {\n\t\t\t\treturn JSON.parse(buffer.toString());\n\t\t\t} catch (err) {\n\t\t\t\treturn Body.Promise.reject(new FetchError(`invalid json response body at ${_this2.url} reason: ${err.message}`, 'invalid-json'));\n\t\t\t}\n\t\t});\n\t},\n\n\t/**\n * Decode response as text\n *\n * @return Promise\n */\n\ttext() {\n\t\treturn consumeBody.call(this).then(function (buffer) {\n\t\t\treturn buffer.toString();\n\t\t});\n\t},\n\n\t/**\n * Decode response as buffer (non-spec api)\n *\n * @return Promise\n */\n\tbuffer() {\n\t\treturn consumeBody.call(this);\n\t},\n\n\t/**\n * Decode response as text, while automatically detecting the encoding and\n * trying to decode to UTF-8 (non-spec api)\n *\n * @return Promise\n */\n\ttextConverted() {\n\t\tvar _this3 = this;\n\n\t\treturn consumeBody.call(this).then(function (buffer) {\n\t\t\treturn convertBody(buffer, _this3.headers);\n\t\t});\n\t}\n};\n\n// In browsers, all properties are enumerable.\nObject.defineProperties(Body.prototype, {\n\tbody: { enumerable: true },\n\tbodyUsed: { enumerable: true },\n\tarrayBuffer: { enumerable: true },\n\tblob: { enumerable: true },\n\tjson: { enumerable: true },\n\ttext: { enumerable: true }\n});\n\nBody.mixIn = function (proto) {\n\tfor (const name of Object.getOwnPropertyNames(Body.prototype)) {\n\t\t// istanbul ignore else: future proof\n\t\tif (!(name in proto)) {\n\t\t\tconst desc = Object.getOwnPropertyDescriptor(Body.prototype, name);\n\t\t\tObject.defineProperty(proto, name, desc);\n\t\t}\n\t}\n};\n\n/**\n * Consume and convert an entire Body to a Buffer.\n *\n * Ref: https://fetch.spec.whatwg.org/#concept-body-consume-body\n *\n * @return Promise\n */\nfunction consumeBody() {\n\tvar _this4 = this;\n\n\tif (this[INTERNALS].disturbed) {\n\t\treturn Body.Promise.reject(new TypeError(`body used already for: ${this.url}`));\n\t}\n\n\tthis[INTERNALS].disturbed = true;\n\n\tif (this[INTERNALS].error) {\n\t\treturn Body.Promise.reject(this[INTERNALS].error);\n\t}\n\n\tlet body = this.body;\n\n\t// body is null\n\tif (body === null) {\n\t\treturn Body.Promise.resolve(Buffer.alloc(0));\n\t}\n\n\t// body is blob\n\tif (isBlob(body)) {\n\t\tbody = body.stream();\n\t}\n\n\t// body is buffer\n\tif (Buffer.isBuffer(body)) {\n\t\treturn Body.Promise.resolve(body);\n\t}\n\n\t// istanbul ignore if: should never happen\n\tif (!(body instanceof Stream)) {\n\t\treturn Body.Promise.resolve(Buffer.alloc(0));\n\t}\n\n\t// body is stream\n\t// get ready to actually consume the body\n\tlet accum = [];\n\tlet accumBytes = 0;\n\tlet abort = false;\n\n\treturn new Body.Promise(function (resolve, reject) {\n\t\tlet resTimeout;\n\n\t\t// allow timeout on slow response body\n\t\tif (_this4.timeout) {\n\t\t\tresTimeout = setTimeout(function () {\n\t\t\t\tabort = true;\n\t\t\t\treject(new FetchError(`Response timeout while trying to fetch ${_this4.url} (over ${_this4.timeout}ms)`, 'body-timeout'));\n\t\t\t}, _this4.timeout);\n\t\t}\n\n\t\t// handle stream errors\n\t\tbody.on('error', function (err) {\n\t\t\tif (err.name === 'AbortError') {\n\t\t\t\t// if the request was aborted, reject with this Error\n\t\t\t\tabort = true;\n\t\t\t\treject(err);\n\t\t\t} else {\n\t\t\t\t// other errors, such as incorrect content-encoding\n\t\t\t\treject(new FetchError(`Invalid response body while trying to fetch ${_this4.url}: ${err.message}`, 'system', err));\n\t\t\t}\n\t\t});\n\n\t\tbody.on('data', function (chunk) {\n\t\t\tif (abort || chunk === null) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tif (_this4.size && accumBytes + chunk.length > _this4.size) {\n\t\t\t\tabort = true;\n\t\t\t\treject(new FetchError(`content size at ${_this4.url} over limit: ${_this4.size}`, 'max-size'));\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\taccumBytes += chunk.length;\n\t\t\taccum.push(chunk);\n\t\t});\n\n\t\tbody.on('end', function () {\n\t\t\tif (abort) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tclearTimeout(resTimeout);\n\n\t\t\ttry {\n\t\t\t\tresolve(Buffer.concat(accum, accumBytes));\n\t\t\t} catch (err) {\n\t\t\t\t// handle streams that have accumulated too much data (issue #414)\n\t\t\t\treject(new FetchError(`Could not create Buffer from response body for ${_this4.url}: ${err.message}`, 'system', err));\n\t\t\t}\n\t\t});\n\t});\n}\n\n/**\n * Detect buffer encoding and convert to target encoding\n * ref: http://www.w3.org/TR/2011/WD-html5-20110113/parsing.html#determining-the-character-encoding\n *\n * @param Buffer buffer Incoming buffer\n * @param String encoding Target encoding\n * @return String\n */\nfunction convertBody(buffer, headers) {\n\tif (typeof convert !== 'function') {\n\t\tthrow new Error('The package `encoding` must be installed to use the textConverted() function');\n\t}\n\n\tconst ct = headers.get('content-type');\n\tlet charset = 'utf-8';\n\tlet res, str;\n\n\t// header\n\tif (ct) {\n\t\tres = /charset=([^;]*)/i.exec(ct);\n\t}\n\n\t// no charset in content type, peek at response body for at most 1024 bytes\n\tstr = buffer.slice(0, 1024).toString();\n\n\t// html5\n\tif (!res && str) {\n\t\tres = /<meta.+?charset=(['\"])(.+?)\\1/i.exec(str);\n\t}\n\n\t// html4\n\tif (!res && str) {\n\t\tres = /<meta[\\s]+?http-equiv=(['\"])content-type\\1[\\s]+?content=(['\"])(.+?)\\2/i.exec(str);\n\t\tif (!res) {\n\t\t\tres = /<meta[\\s]+?content=(['\"])(.+?)\\1[\\s]+?http-equiv=(['\"])content-type\\3/i.exec(str);\n\t\t\tif (res) {\n\t\t\t\tres.pop(); // drop last quote\n\t\t\t}\n\t\t}\n\n\t\tif (res) {\n\t\t\tres = /charset=(.*)/i.exec(res.pop());\n\t\t}\n\t}\n\n\t// xml\n\tif (!res && str) {\n\t\tres = /<\\?xml.+?encoding=(['\"])(.+?)\\1/i.exec(str);\n\t}\n\n\t// found charset\n\tif (res) {\n\t\tcharset = res.pop();\n\n\t\t// prevent decode issues when sites use incorrect encoding\n\t\t// ref: https://hsivonen.fi/encoding-menu/\n\t\tif (charset === 'gb2312' || charset === 'gbk') {\n\t\t\tcharset = 'gb18030';\n\t\t}\n\t}\n\n\t// turn raw buffers into a single utf-8 buffer\n\treturn convert(buffer, 'UTF-8', charset).toString();\n}\n\n/**\n * Detect a URLSearchParams object\n * ref: https://github.com/bitinn/node-fetch/issues/296#issuecomment-307598143\n *\n * @param Object obj Object to detect by type or brand\n * @return String\n */\nfunction isURLSearchParams(obj) {\n\t// Duck-typing as a necessary condition.\n\tif (typeof obj !== 'object' || typeof obj.append !== 'function' || typeof obj.delete !== 'function' || typeof obj.get !== 'function' || typeof obj.getAll !== 'function' || typeof obj.has !== 'function' || typeof obj.set !== 'function') {\n\t\treturn false;\n\t}\n\n\t// Brand-checking and more duck-typing as optional condition.\n\treturn obj.constructor.name === 'URLSearchParams' || Object.prototype.toString.call(obj) === '[object URLSearchParams]' || typeof obj.sort === 'function';\n}\n\n/**\n * Check if `obj` is a W3C `Blob` object (which `File` inherits from)\n * @param {*} obj\n * @return {boolean}\n */\nfunction isBlob(obj) {\n\treturn typeof obj === 'object' && typeof obj.arrayBuffer === 'function' && typeof obj.type === 'string' && typeof obj.stream === 'function' && typeof obj.constructor === 'function' && typeof obj.constructor.name === 'string' && /^(Blob|File)$/.test(obj.constructor.name) && /^(Blob|File)$/.test(obj[Symbol.toStringTag]);\n}\n\n/**\n * Clone body given Res/Req instance\n *\n * @param Mixed instance Response or Request instance\n * @return Mixed\n */\nfunction clone(instance) {\n\tlet p1, p2;\n\tlet body = instance.body;\n\n\t// don't allow cloning a used body\n\tif (instance.bodyUsed) {\n\t\tthrow new Error('cannot clone body after it is used');\n\t}\n\n\t// check that body is a stream and not form-data object\n\t// note: we can't clone the form-data object without having it as a dependency\n\tif (body instanceof Stream && typeof body.getBoundary !== 'function') {\n\t\t// tee instance body\n\t\tp1 = new PassThrough();\n\t\tp2 = new PassThrough();\n\t\tbody.pipe(p1);\n\t\tbody.pipe(p2);\n\t\t// set instance body to teed body and return the other teed body\n\t\tinstance[INTERNALS].body = p1;\n\t\tbody = p2;\n\t}\n\n\treturn body;\n}\n\n/**\n * Performs the operation \"extract a `Content-Type` value from |object|\" as\n * specified in the specification:\n * https://fetch.spec.whatwg.org/#concept-bodyinit-extract\n *\n * This function assumes that instance.body is present.\n *\n * @param Mixed instance Any options.body input\n */\nfunction extractContentType(body) {\n\tif (body === null) {\n\t\t// body is null\n\t\treturn null;\n\t} else if (typeof body === 'string') {\n\t\t// body is string\n\t\treturn 'text/plain;charset=UTF-8';\n\t} else if (isURLSearchParams(body)) {\n\t\t// body is a URLSearchParams\n\t\treturn 'application/x-www-form-urlencoded;charset=UTF-8';\n\t} else if (isBlob(body)) {\n\t\t// body is blob\n\t\treturn body.type || null;\n\t} else if (Buffer.isBuffer(body)) {\n\t\t// body is buffer\n\t\treturn null;\n\t} else if (Object.prototype.toString.call(body) === '[object ArrayBuffer]') {\n\t\t// body is ArrayBuffer\n\t\treturn null;\n\t} else if (ArrayBuffer.isView(body)) {\n\t\t// body is ArrayBufferView\n\t\treturn null;\n\t} else if (typeof body.getBoundary === 'function') {\n\t\t// detect form data input from form-data module\n\t\treturn `multipart/form-data;boundary=${body.getBoundary()}`;\n\t} else if (body instanceof Stream) {\n\t\t// body is stream\n\t\t// can't really do much about this\n\t\treturn null;\n\t} else {\n\t\t// Body constructor defaults other things to string\n\t\treturn 'text/plain;charset=UTF-8';\n\t}\n}\n\n/**\n * The Fetch Standard treats this as if \"total bytes\" is a property on the body.\n * For us, we have to explicitly get it with a function.\n *\n * ref: https://fetch.spec.whatwg.org/#concept-body-total-bytes\n *\n * @param Body instance Instance of Body\n * @return Number? Number of bytes, or null if not possible\n */\nfunction getTotalBytes(instance) {\n\tconst body = instance.body;\n\n\n\tif (body === null) {\n\t\t// body is null\n\t\treturn 0;\n\t} else if (isBlob(body)) {\n\t\treturn body.size;\n\t} else if (Buffer.isBuffer(body)) {\n\t\t// body is buffer\n\t\treturn body.length;\n\t} else if (body && typeof body.getLengthSync === 'function') {\n\t\t// detect form data input from form-data module\n\t\tif (body._lengthRetrievers && body._lengthRetrievers.length == 0 || // 1.x\n\t\tbody.hasKnownLength && body.hasKnownLength()) {\n\t\t\t// 2.x\n\t\t\treturn body.getLengthSync();\n\t\t}\n\t\treturn null;\n\t} else {\n\t\t// body is stream\n\t\treturn null;\n\t}\n}\n\n/**\n * Write a Body to a Node.js WritableStream (e.g. http.Request) object.\n *\n * @param Body instance Instance of Body\n * @return Void\n */\nfunction writeToStream(dest, instance) {\n\tconst body = instance.body;\n\n\n\tif (body === null) {\n\t\t// body is null\n\t\tdest.end();\n\t} else if (isBlob(body)) {\n\t\tbody.stream().pipe(dest);\n\t} else if (Buffer.isBuffer(body)) {\n\t\t// body is buffer\n\t\tdest.write(body);\n\t\tdest.end();\n\t} else {\n\t\t// body is stream\n\t\tbody.pipe(dest);\n\t}\n}\n\n// expose Promise\nBody.Promise = global.Promise;\n\n/**\n * headers.js\n *\n * Headers class offers convenient helpers\n */\n\nconst invalidTokenRegex = /[^\\^_`a-zA-Z\\-0-9!#$%&'*+.|~]/;\nconst invalidHeaderCharRegex = /[^\\t\\x20-\\x7e\\x80-\\xff]/;\n\nfunction validateName(name) {\n\tname = `${name}`;\n\tif (invalidTokenRegex.test(name) || name === '') {\n\t\tthrow new TypeError(`${name} is not a legal HTTP header name`);\n\t}\n}\n\nfunction validateValue(value) {\n\tvalue = `${value}`;\n\tif (invalidHeaderCharRegex.test(value)) {\n\t\tthrow new TypeError(`${value} is not a legal HTTP header value`);\n\t}\n}\n\n/**\n * Find the key in the map object given a header name.\n *\n * Returns undefined if not found.\n *\n * @param String name Header name\n * @return String|Undefined\n */\nfunction find(map, name) {\n\tname = name.toLowerCase();\n\tfor (const key in map) {\n\t\tif (key.toLowerCase() === name) {\n\t\t\treturn key;\n\t\t}\n\t}\n\treturn undefined;\n}\n\nconst MAP = Symbol('map');\nclass Headers {\n\t/**\n * Headers class\n *\n * @param Object headers Response headers\n * @return Void\n */\n\tconstructor() {\n\t\tlet init = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : undefined;\n\n\t\tthis[MAP] = Object.create(null);\n\n\t\tif (init instanceof Headers) {\n\t\t\tconst rawHeaders = init.raw();\n\t\t\tconst headerNames = Object.keys(rawHeaders);\n\n\t\t\tfor (const headerName of headerNames) {\n\t\t\t\tfor (const value of rawHeaders[headerName]) {\n\t\t\t\t\tthis.append(headerName, value);\n\t\t\t\t}\n\t\t\t}\n\n\t\t\treturn;\n\t\t}\n\n\t\t// We don't worry about converting prop to ByteString here as append()\n\t\t// will handle it.\n\t\tif (init == null) ; else if (typeof init === 'object') {\n\t\t\tconst method = init[Symbol.iterator];\n\t\t\tif (method != null) {\n\t\t\t\tif (typeof method !== 'function') {\n\t\t\t\t\tthrow new TypeError('Header pairs must be iterable');\n\t\t\t\t}\n\n\t\t\t\t// sequence<sequence<ByteString>>\n\t\t\t\t// Note: per spec we have to first exhaust the lists then process them\n\t\t\t\tconst pairs = [];\n\t\t\t\tfor (const pair of init) {\n\t\t\t\t\tif (typeof pair !== 'object' || typeof pair[Symbol.iterator] !== 'function') {\n\t\t\t\t\t\tthrow new TypeError('Each header pair must be iterable');\n\t\t\t\t\t}\n\t\t\t\t\tpairs.push(Array.from(pair));\n\t\t\t\t}\n\n\t\t\t\tfor (const pair of pairs) {\n\t\t\t\t\tif (pair.length !== 2) {\n\t\t\t\t\t\tthrow new TypeError('Each header pair must be a name/value tuple');\n\t\t\t\t\t}\n\t\t\t\t\tthis.append(pair[0], pair[1]);\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\t// record<ByteString, ByteString>\n\t\t\t\tfor (const key of Object.keys(init)) {\n\t\t\t\t\tconst value = init[key];\n\t\t\t\t\tthis.append(key, value);\n\t\t\t\t}\n\t\t\t}\n\t\t} else {\n\t\t\tthrow new TypeError('Provided initializer must be an object');\n\t\t}\n\t}\n\n\t/**\n * Return combined header value given name\n *\n * @param String name Header name\n * @return Mixed\n */\n\tget(name) {\n\t\tname = `${name}`;\n\t\tvalidateName(name);\n\t\tconst key = find(this[MAP], name);\n\t\tif (key === undefined) {\n\t\t\treturn null;\n\t\t}\n\n\t\treturn this[MAP][key].join(', ');\n\t}\n\n\t/**\n * Iterate over all headers\n *\n * @param Function callback Executed for each item with parameters (value, name, thisArg)\n * @param Boolean thisArg `this` context for callback function\n * @return Void\n */\n\tforEach(callback) {\n\t\tlet thisArg = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : undefined;\n\n\t\tlet pairs = getHeaders(this);\n\t\tlet i = 0;\n\t\twhile (i < pairs.length) {\n\t\t\tvar _pairs$i = pairs[i];\n\t\t\tconst name = _pairs$i[0],\n\t\t\t value = _pairs$i[1];\n\n\t\t\tcallback.call(thisArg, value, name, this);\n\t\t\tpairs = getHeaders(this);\n\t\t\ti++;\n\t\t}\n\t}\n\n\t/**\n * Overwrite header values given name\n *\n * @param String name Header name\n * @param String value Header value\n * @return Void\n */\n\tset(name, value) {\n\t\tname = `${name}`;\n\t\tvalue = `${value}`;\n\t\tvalidateName(name);\n\t\tvalidateValue(value);\n\t\tconst key = find(this[MAP], name);\n\t\tthis[MAP][key !== undefined ? key : name] = [value];\n\t}\n\n\t/**\n * Append a value onto existing header\n *\n * @param String name Header name\n * @param String value Header value\n * @return Void\n */\n\tappend(name, value) {\n\t\tname = `${name}`;\n\t\tvalue = `${value}`;\n\t\tvalidateName(name);\n\t\tvalidateValue(value);\n\t\tconst key = find(this[MAP], name);\n\t\tif (key !== undefined) {\n\t\t\tthis[MAP][key].push(value);\n\t\t} else {\n\t\t\tthis[MAP][name] = [value];\n\t\t}\n\t}\n\n\t/**\n * Check for header name existence\n *\n * @param String name Header name\n * @return Boolean\n */\n\thas(name) {\n\t\tname = `${name}`;\n\t\tvalidateName(name);\n\t\treturn find(this[MAP], name) !== undefined;\n\t}\n\n\t/**\n * Delete all header values given name\n *\n * @param String name Header name\n * @return Void\n */\n\tdelete(name) {\n\t\tname = `${name}`;\n\t\tvalidateName(name);\n\t\tconst key = find(this[MAP], name);\n\t\tif (key !== undefined) {\n\t\t\tdelete this[MAP][key];\n\t\t}\n\t}\n\n\t/**\n * Return raw headers (non-spec api)\n *\n * @return Object\n */\n\traw() {\n\t\treturn this[MAP];\n\t}\n\n\t/**\n * Get an iterator on keys.\n *\n * @return Iterator\n */\n\tkeys() {\n\t\treturn createHeadersIterator(this, 'key');\n\t}\n\n\t/**\n * Get an iterator on values.\n *\n * @return Iterator\n */\n\tvalues() {\n\t\treturn createHeadersIterator(this, 'value');\n\t}\n\n\t/**\n * Get an iterator on entries.\n *\n * This is the default iterator of the Headers object.\n *\n * @return Iterator\n */\n\t[Symbol.iterator]() {\n\t\treturn createHeadersIterator(this, 'key+value');\n\t}\n}\nHeaders.prototype.entries = Headers.prototype[Symbol.iterator];\n\nObject.defineProperty(Headers.prototype, Symbol.toStringTag, {\n\tvalue: 'Headers',\n\twritable: false,\n\tenumerable: false,\n\tconfigurable: true\n});\n\nObject.defineProperties(Headers.prototype, {\n\tget: { enumerable: true },\n\tforEach: { enumerable: true },\n\tset: { enumerable: true },\n\tappend: { enumerable: true },\n\thas: { enumerable: true },\n\tdelete: { enumerable: true },\n\tkeys: { enumerable: true },\n\tvalues: { enumerable: true },\n\tentries: { enumerable: true }\n});\n\nfunction getHeaders(headers) {\n\tlet kind = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 'key+value';\n\n\tconst keys = Object.keys(headers[MAP]).sort();\n\treturn keys.map(kind === 'key' ? function (k) {\n\t\treturn k.toLowerCase();\n\t} : kind === 'value' ? function (k) {\n\t\treturn headers[MAP][k].join(', ');\n\t} : function (k) {\n\t\treturn [k.toLowerCase(), headers[MAP][k].join(', ')];\n\t});\n}\n\nconst INTERNAL = Symbol('internal');\n\nfunction createHeadersIterator(target, kind) {\n\tconst iterator = Object.create(HeadersIteratorPrototype);\n\titerator[INTERNAL] = {\n\t\ttarget,\n\t\tkind,\n\t\tindex: 0\n\t};\n\treturn iterator;\n}\n\nconst HeadersIteratorPrototype = Object.setPrototypeOf({\n\tnext() {\n\t\t// istanbul ignore if\n\t\tif (!this || Object.getPrototypeOf(this) !== HeadersIteratorPrototype) {\n\t\t\tthrow new TypeError('Value of `this` is not a HeadersIterator');\n\t\t}\n\n\t\tvar _INTERNAL = this[INTERNAL];\n\t\tconst target = _INTERNAL.target,\n\t\t kind = _INTERNAL.kind,\n\t\t index = _INTERNAL.index;\n\n\t\tconst values = getHeaders(target, kind);\n\t\tconst len = values.length;\n\t\tif (index >= len) {\n\t\t\treturn {\n\t\t\t\tvalue: undefined,\n\t\t\t\tdone: true\n\t\t\t};\n\t\t}\n\n\t\tthis[INTERNAL].index = index + 1;\n\n\t\treturn {\n\t\t\tvalue: values[index],\n\t\t\tdone: false\n\t\t};\n\t}\n}, Object.getPrototypeOf(Object.getPrototypeOf([][Symbol.iterator]())));\n\nObject.defineProperty(HeadersIteratorPrototype, Symbol.toStringTag, {\n\tvalue: 'HeadersIterator',\n\twritable: false,\n\tenumerable: false,\n\tconfigurable: true\n});\n\n/**\n * Export the Headers object in a form that Node.js can consume.\n *\n * @param Headers headers\n * @return Object\n */\nfunction exportNodeCompatibleHeaders(headers) {\n\tconst obj = Object.assign({ __proto__: null }, headers[MAP]);\n\n\t// http.request() only supports string as Host header. This hack makes\n\t// specifying custom Host header possible.\n\tconst hostHeaderKey = find(headers[MAP], 'Host');\n\tif (hostHeaderKey !== undefined) {\n\t\tobj[hostHeaderKey] = obj[hostHeaderKey][0];\n\t}\n\n\treturn obj;\n}\n\n/**\n * Create a Headers object from an object of headers, ignoring those that do\n * not conform to HTTP grammar productions.\n *\n * @param Object obj Object of headers\n * @return Headers\n */\nfunction createHeadersLenient(obj) {\n\tconst headers = new Headers();\n\tfor (const name of Object.keys(obj)) {\n\t\tif (invalidTokenRegex.test(name)) {\n\t\t\tcontinue;\n\t\t}\n\t\tif (Array.isArray(obj[name])) {\n\t\t\tfor (const val of obj[name]) {\n\t\t\t\tif (invalidHeaderCharRegex.test(val)) {\n\t\t\t\t\tcontinue;\n\t\t\t\t}\n\t\t\t\tif (headers[MAP][name] === undefined) {\n\t\t\t\t\theaders[MAP][name] = [val];\n\t\t\t\t} else {\n\t\t\t\t\theaders[MAP][name].push(val);\n\t\t\t\t}\n\t\t\t}\n\t\t} else if (!invalidHeaderCharRegex.test(obj[name])) {\n\t\t\theaders[MAP][name] = [obj[name]];\n\t\t}\n\t}\n\treturn headers;\n}\n\nconst INTERNALS$1 = Symbol('Response internals');\n\n// fix an issue where \"STATUS_CODES\" aren't a named export for node <10\nconst STATUS_CODES = http.STATUS_CODES;\n\n/**\n * Response class\n *\n * @param Stream body Readable stream\n * @param Object opts Response options\n * @return Void\n */\nclass Response {\n\tconstructor() {\n\t\tlet body = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : null;\n\t\tlet opts = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n\n\t\tBody.call(this, body, opts);\n\n\t\tconst status = opts.status || 200;\n\t\tconst headers = new Headers(opts.headers);\n\n\t\tif (body != null && !headers.has('Content-Type')) {\n\t\t\tconst contentType = extractContentType(body);\n\t\t\tif (contentType) {\n\t\t\t\theaders.append('Content-Type', contentType);\n\t\t\t}\n\t\t}\n\n\t\tthis[INTERNALS$1] = {\n\t\t\turl: opts.url,\n\t\t\tstatus,\n\t\t\tstatusText: opts.statusText || STATUS_CODES[status],\n\t\t\theaders,\n\t\t\tcounter: opts.counter\n\t\t};\n\t}\n\n\tget url() {\n\t\treturn this[INTERNALS$1].url || '';\n\t}\n\n\tget status() {\n\t\treturn this[INTERNALS$1].status;\n\t}\n\n\t/**\n * Convenience property representing if the request ended normally\n */\n\tget ok() {\n\t\treturn this[INTERNALS$1].status >= 200 && this[INTERNALS$1].status < 300;\n\t}\n\n\tget redirected() {\n\t\treturn this[INTERNALS$1].counter > 0;\n\t}\n\n\tget statusText() {\n\t\treturn this[INTERNALS$1].statusText;\n\t}\n\n\tget headers() {\n\t\treturn this[INTERNALS$1].headers;\n\t}\n\n\t/**\n * Clone this response\n *\n * @return Response\n */\n\tclone() {\n\t\treturn new Response(clone(this), {\n\t\t\turl: this.url,\n\t\t\tstatus: this.status,\n\t\t\tstatusText: this.statusText,\n\t\t\theaders: this.headers,\n\t\t\tok: this.ok,\n\t\t\tredirected: this.redirected\n\t\t});\n\t}\n}\n\nBody.mixIn(Response.prototype);\n\nObject.defineProperties(Response.prototype, {\n\turl: { enumerable: true },\n\tstatus: { enumerable: true },\n\tok: { enumerable: true },\n\tredirected: { enumerable: true },\n\tstatusText: { enumerable: true },\n\theaders: { enumerable: true },\n\tclone: { enumerable: true }\n});\n\nObject.defineProperty(Response.prototype, Symbol.toStringTag, {\n\tvalue: 'Response',\n\twritable: false,\n\tenumerable: false,\n\tconfigurable: true\n});\n\nconst INTERNALS$2 = Symbol('Request internals');\nconst URL = Url.URL || whatwgUrl.URL;\n\n// fix an issue where \"format\", \"parse\" aren't a named export for node <10\nconst parse_url = Url.parse;\nconst format_url = Url.format;\n\n/**\n * Wrapper around `new URL` to handle arbitrary URLs\n *\n * @param {string} urlStr\n * @return {void}\n */\nfunction parseURL(urlStr) {\n\t/*\n \tCheck whether the URL is absolute or not\n \t\tScheme: https://tools.ietf.org/html/rfc3986#section-3.1\n \tAbsolute URL: https://tools.ietf.org/html/rfc3986#section-4.3\n */\n\tif (/^[a-zA-Z][a-zA-Z\\d+\\-.]*:/.exec(urlStr)) {\n\t\turlStr = new URL(urlStr).toString();\n\t}\n\n\t// Fallback to old implementation for arbitrary URLs\n\treturn parse_url(urlStr);\n}\n\nconst streamDestructionSupported = 'destroy' in Stream.Readable.prototype;\n\n/**\n * Check if a value is an instance of Request.\n *\n * @param Mixed input\n * @return Boolean\n */\nfunction isRequest(input) {\n\treturn typeof input === 'object' && typeof input[INTERNALS$2] === 'object';\n}\n\nfunction isAbortSignal(signal) {\n\tconst proto = signal && typeof signal === 'object' && Object.getPrototypeOf(signal);\n\treturn !!(proto && proto.constructor.name === 'AbortSignal');\n}\n\n/**\n * Request class\n *\n * @param Mixed input Url or Request instance\n * @param Object init Custom options\n * @return Void\n */\nclass Request {\n\tconstructor(input) {\n\t\tlet init = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n\n\t\tlet parsedURL;\n\n\t\t// normalize input\n\t\tif (!isRequest(input)) {\n\t\t\tif (input && input.href) {\n\t\t\t\t// in order to support Node.js' Url objects; though WHATWG's URL objects\n\t\t\t\t// will fall into this branch also (since their `toString()` will return\n\t\t\t\t// `href` property anyway)\n\t\t\t\tparsedURL = parseURL(input.href);\n\t\t\t} else {\n\t\t\t\t// coerce input to a string before attempting to parse\n\t\t\t\tparsedURL = parseURL(`${input}`);\n\t\t\t}\n\t\t\tinput = {};\n\t\t} else {\n\t\t\tparsedURL = parseURL(input.url);\n\t\t}\n\n\t\tlet method = init.method || input.method || 'GET';\n\t\tmethod = method.toUpperCase();\n\n\t\tif ((init.body != null || isRequest(input) && input.body !== null) && (method === 'GET' || method === 'HEAD')) {\n\t\t\tthrow new TypeError('Request with GET/HEAD method cannot have body');\n\t\t}\n\n\t\tlet inputBody = init.body != null ? init.body : isRequest(input) && input.body !== null ? clone(input) : null;\n\n\t\tBody.call(this, inputBody, {\n\t\t\ttimeout: init.timeout || input.timeout || 0,\n\t\t\tsize: init.size || input.size || 0\n\t\t});\n\n\t\tconst headers = new Headers(init.headers || input.headers || {});\n\n\t\tif (inputBody != null && !headers.has('Content-Type')) {\n\t\t\tconst contentType = extractContentType(inputBody);\n\t\t\tif (contentType) {\n\t\t\t\theaders.append('Content-Type', contentType);\n\t\t\t}\n\t\t}\n\n\t\tlet signal = isRequest(input) ? input.signal : null;\n\t\tif ('signal' in init) signal = init.signal;\n\n\t\tif (signal != null && !isAbortSignal(signal)) {\n\t\t\tthrow new TypeError('Expected signal to be an instanceof AbortSignal');\n\t\t}\n\n\t\tthis[INTERNALS$2] = {\n\t\t\tmethod,\n\t\t\tredirect: init.redirect || input.redirect || 'follow',\n\t\t\theaders,\n\t\t\tparsedURL,\n\t\t\tsignal\n\t\t};\n\n\t\t// node-fetch-only options\n\t\tthis.follow = init.follow !== undefined ? init.follow : input.follow !== undefined ? input.follow : 20;\n\t\tthis.compress = init.compress !== undefined ? init.compress : input.compress !== undefined ? input.compress : true;\n\t\tthis.counter = init.counter || input.counter || 0;\n\t\tthis.agent = init.agent || input.agent;\n\t}\n\n\tget method() {\n\t\treturn this[INTERNALS$2].method;\n\t}\n\n\tget url() {\n\t\treturn format_url(this[INTERNALS$2].parsedURL);\n\t}\n\n\tget headers() {\n\t\treturn this[INTERNALS$2].headers;\n\t}\n\n\tget redirect() {\n\t\treturn this[INTERNALS$2].redirect;\n\t}\n\n\tget signal() {\n\t\treturn this[INTERNALS$2].signal;\n\t}\n\n\t/**\n * Clone this request\n *\n * @return Request\n */\n\tclone() {\n\t\treturn new Request(this);\n\t}\n}\n\nBody.mixIn(Request.prototype);\n\nObject.defineProperty(Request.prototype, Symbol.toStringTag, {\n\tvalue: 'Request',\n\twritable: false,\n\tenumerable: false,\n\tconfigurable: true\n});\n\nObject.defineProperties(Request.prototype, {\n\tmethod: { enumerable: true },\n\turl: { enumerable: true },\n\theaders: { enumerable: true },\n\tredirect: { enumerable: true },\n\tclone: { enumerable: true },\n\tsignal: { enumerable: true }\n});\n\n/**\n * Convert a Request to Node.js http request options.\n *\n * @param Request A Request instance\n * @return Object The options object to be passed to http.request\n */\nfunction getNodeRequestOptions(request) {\n\tconst parsedURL = request[INTERNALS$2].parsedURL;\n\tconst headers = new Headers(request[INTERNALS$2].headers);\n\n\t// fetch step 1.3\n\tif (!headers.has('Accept')) {\n\t\theaders.set('Accept', '*/*');\n\t}\n\n\t// Basic fetch\n\tif (!parsedURL.protocol || !parsedURL.hostname) {\n\t\tthrow new TypeError('Only absolute URLs are supported');\n\t}\n\n\tif (!/^https?:$/.test(parsedURL.protocol)) {\n\t\tthrow new TypeError('Only HTTP(S) protocols are supported');\n\t}\n\n\tif (request.signal && request.body instanceof Stream.Readable && !streamDestructionSupported) {\n\t\tthrow new Error('Cancellation of streamed requests with AbortSignal is not supported in node < 8');\n\t}\n\n\t// HTTP-network-or-cache fetch steps 2.4-2.7\n\tlet contentLengthValue = null;\n\tif (request.body == null && /^(POST|PUT)$/i.test(request.method)) {\n\t\tcontentLengthValue = '0';\n\t}\n\tif (request.body != null) {\n\t\tconst totalBytes = getTotalBytes(request);\n\t\tif (typeof totalBytes === 'number') {\n\t\t\tcontentLengthValue = String(totalBytes);\n\t\t}\n\t}\n\tif (contentLengthValue) {\n\t\theaders.set('Content-Length', contentLengthValue);\n\t}\n\n\t// HTTP-network-or-cache fetch step 2.11\n\tif (!headers.has('User-Agent')) {\n\t\theaders.set('User-Agent', 'node-fetch/1.0 (+https://github.com/bitinn/node-fetch)');\n\t}\n\n\t// HTTP-network-or-cache fetch step 2.15\n\tif (request.compress && !headers.has('Accept-Encoding')) {\n\t\theaders.set('Accept-Encoding', 'gzip,deflate');\n\t}\n\n\tlet agent = request.agent;\n\tif (typeof agent === 'function') {\n\t\tagent = agent(parsedURL);\n\t}\n\n\t// HTTP-network fetch step 4.2\n\t// chunked encoding is handled by Node.js\n\n\treturn Object.assign({}, parsedURL, {\n\t\tmethod: request.method,\n\t\theaders: exportNodeCompatibleHeaders(headers),\n\t\tagent\n\t});\n}\n\n/**\n * abort-error.js\n *\n * AbortError interface for cancelled requests\n */\n\n/**\n * Create AbortError instance\n *\n * @param String message Error message for human\n * @return AbortError\n */\nfunction AbortError(message) {\n Error.call(this, message);\n\n this.type = 'aborted';\n this.message = message;\n\n // hide custom error implementation details from end-users\n Error.captureStackTrace(this, this.constructor);\n}\n\nAbortError.prototype = Object.create(Error.prototype);\nAbortError.prototype.constructor = AbortError;\nAbortError.prototype.name = 'AbortError';\n\nconst URL$1 = Url.URL || whatwgUrl.URL;\n\n// fix an issue where \"PassThrough\", \"resolve\" aren't a named export for node <10\nconst PassThrough$1 = Stream.PassThrough;\n\nconst isDomainOrSubdomain = function isDomainOrSubdomain(destination, original) {\n\tconst orig = new URL$1(original).hostname;\n\tconst dest = new URL$1(destination).hostname;\n\n\treturn orig === dest || orig[orig.length - dest.length - 1] === '.' && orig.endsWith(dest);\n};\n\n/**\n * isSameProtocol reports whether the two provided URLs use the same protocol.\n *\n * Both domains must already be in canonical form.\n * @param {string|URL} original\n * @param {string|URL} destination\n */\nconst isSameProtocol = function isSameProtocol(destination, original) {\n\tconst orig = new URL$1(original).protocol;\n\tconst dest = new URL$1(destination).protocol;\n\n\treturn orig === dest;\n};\n\n/**\n * Fetch function\n *\n * @param Mixed url Absolute url or Request instance\n * @param Object opts Fetch options\n * @return Promise\n */\nfunction fetch(url, opts) {\n\n\t// allow custom promise\n\tif (!fetch.Promise) {\n\t\tthrow new Error('native promise missing, set fetch.Promise to your favorite alternative');\n\t}\n\n\tBody.Promise = fetch.Promise;\n\n\t// wrap http.request into fetch\n\treturn new fetch.Promise(function (resolve, reject) {\n\t\t// build request object\n\t\tconst request = new Request(url, opts);\n\t\tconst options = getNodeRequestOptions(request);\n\n\t\tconst send = (options.protocol === 'https:' ? https : http).request;\n\t\tconst signal = request.signal;\n\n\t\tlet response = null;\n\n\t\tconst abort = function abort() {\n\t\t\tlet error = new AbortError('The user aborted a request.');\n\t\t\treject(error);\n\t\t\tif (request.body && request.body instanceof Stream.Readable) {\n\t\t\t\tdestroyStream(request.body, error);\n\t\t\t}\n\t\t\tif (!response || !response.body) return;\n\t\t\tresponse.body.emit('error', error);\n\t\t};\n\n\t\tif (signal && signal.aborted) {\n\t\t\tabort();\n\t\t\treturn;\n\t\t}\n\n\t\tconst abortAndFinalize = function abortAndFinalize() {\n\t\t\tabort();\n\t\t\tfinalize();\n\t\t};\n\n\t\t// send request\n\t\tconst req = send(options);\n\t\tlet reqTimeout;\n\n\t\tif (signal) {\n\t\t\tsignal.addEventListener('abort', abortAndFinalize);\n\t\t}\n\n\t\tfunction finalize() {\n\t\t\treq.abort();\n\t\t\tif (signal) signal.removeEventListener('abort', abortAndFinalize);\n\t\t\tclearTimeout(reqTimeout);\n\t\t}\n\n\t\tif (request.timeout) {\n\t\t\treq.once('socket', function (socket) {\n\t\t\t\treqTimeout = setTimeout(function () {\n\t\t\t\t\treject(new FetchError(`network timeout at: ${request.url}`, 'request-timeout'));\n\t\t\t\t\tfinalize();\n\t\t\t\t}, request.timeout);\n\t\t\t});\n\t\t}\n\n\t\treq.on('error', function (err) {\n\t\t\treject(new FetchError(`request to ${request.url} failed, reason: ${err.message}`, 'system', err));\n\n\t\t\tif (response && response.body) {\n\t\t\t\tdestroyStream(response.body, err);\n\t\t\t}\n\n\t\t\tfinalize();\n\t\t});\n\n\t\tfixResponseChunkedTransferBadEnding(req, function (err) {\n\t\t\tif (signal && signal.aborted) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tif (response && response.body) {\n\t\t\t\tdestroyStream(response.body, err);\n\t\t\t}\n\t\t});\n\n\t\t/* c8 ignore next 18 */\n\t\tif (parseInt(process.version.substring(1)) < 14) {\n\t\t\t// Before Node.js 14, pipeline() does not fully support async iterators and does not always\n\t\t\t// properly handle when the socket close/end events are out of order.\n\t\t\treq.on('socket', function (s) {\n\t\t\t\ts.addListener('close', function (hadError) {\n\t\t\t\t\t// if a data listener is still present we didn't end cleanly\n\t\t\t\t\tconst hasDataListener = s.listenerCount('data') > 0;\n\n\t\t\t\t\t// if end happened before close but the socket didn't emit an error, do it now\n\t\t\t\t\tif (response && hasDataListener && !hadError && !(signal && signal.aborted)) {\n\t\t\t\t\t\tconst err = new Error('Premature close');\n\t\t\t\t\t\terr.code = 'ERR_STREAM_PREMATURE_CLOSE';\n\t\t\t\t\t\tresponse.body.emit('error', err);\n\t\t\t\t\t}\n\t\t\t\t});\n\t\t\t});\n\t\t}\n\n\t\treq.on('response', function (res) {\n\t\t\tclearTimeout(reqTimeout);\n\n\t\t\tconst headers = createHeadersLenient(res.headers);\n\n\t\t\t// HTTP fetch step 5\n\t\t\tif (fetch.isRedirect(res.statusCode)) {\n\t\t\t\t// HTTP fetch step 5.2\n\t\t\t\tconst location = headers.get('Location');\n\n\t\t\t\t// HTTP fetch step 5.3\n\t\t\t\tlet locationURL = null;\n\t\t\t\ttry {\n\t\t\t\t\tlocationURL = location === null ? null : new URL$1(location, request.url).toString();\n\t\t\t\t} catch (err) {\n\t\t\t\t\t// error here can only be invalid URL in Location: header\n\t\t\t\t\t// do not throw when options.redirect == manual\n\t\t\t\t\t// let the user extract the errorneous redirect URL\n\t\t\t\t\tif (request.redirect !== 'manual') {\n\t\t\t\t\t\treject(new FetchError(`uri requested responds with an invalid redirect URL: ${location}`, 'invalid-redirect'));\n\t\t\t\t\t\tfinalize();\n\t\t\t\t\t\treturn;\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\t// HTTP fetch step 5.5\n\t\t\t\tswitch (request.redirect) {\n\t\t\t\t\tcase 'error':\n\t\t\t\t\t\treject(new FetchError(`uri requested responds with a redirect, redirect mode is set to error: ${request.url}`, 'no-redirect'));\n\t\t\t\t\t\tfinalize();\n\t\t\t\t\t\treturn;\n\t\t\t\t\tcase 'manual':\n\t\t\t\t\t\t// node-fetch-specific step: make manual redirect a bit easier to use by setting the Location header value to the resolved URL.\n\t\t\t\t\t\tif (locationURL !== null) {\n\t\t\t\t\t\t\t// handle corrupted header\n\t\t\t\t\t\t\ttry {\n\t\t\t\t\t\t\t\theaders.set('Location', locationURL);\n\t\t\t\t\t\t\t} catch (err) {\n\t\t\t\t\t\t\t\t// istanbul ignore next: nodejs server prevent invalid response headers, we can't test this through normal request\n\t\t\t\t\t\t\t\treject(err);\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase 'follow':\n\t\t\t\t\t\t// HTTP-redirect fetch step 2\n\t\t\t\t\t\tif (locationURL === null) {\n\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\t// HTTP-redirect fetch step 5\n\t\t\t\t\t\tif (request.counter >= request.follow) {\n\t\t\t\t\t\t\treject(new FetchError(`maximum redirect reached at: ${request.url}`, 'max-redirect'));\n\t\t\t\t\t\t\tfinalize();\n\t\t\t\t\t\t\treturn;\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\t// HTTP-redirect fetch step 6 (counter increment)\n\t\t\t\t\t\t// Create a new Request object.\n\t\t\t\t\t\tconst requestOpts = {\n\t\t\t\t\t\t\theaders: new Headers(request.headers),\n\t\t\t\t\t\t\tfollow: request.follow,\n\t\t\t\t\t\t\tcounter: request.counter + 1,\n\t\t\t\t\t\t\tagent: request.agent,\n\t\t\t\t\t\t\tcompress: request.compress,\n\t\t\t\t\t\t\tmethod: request.method,\n\t\t\t\t\t\t\tbody: request.body,\n\t\t\t\t\t\t\tsignal: request.signal,\n\t\t\t\t\t\t\ttimeout: request.timeout,\n\t\t\t\t\t\t\tsize: request.size\n\t\t\t\t\t\t};\n\n\t\t\t\t\t\tif (!isDomainOrSubdomain(request.url, locationURL) || !isSameProtocol(request.url, locationURL)) {\n\t\t\t\t\t\t\tfor (const name of ['authorization', 'www-authenticate', 'cookie', 'cookie2']) {\n\t\t\t\t\t\t\t\trequestOpts.headers.delete(name);\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\t// HTTP-redirect fetch step 9\n\t\t\t\t\t\tif (res.statusCode !== 303 && request.body && getTotalBytes(request) === null) {\n\t\t\t\t\t\t\treject(new FetchError('Cannot follow redirect with body being a readable stream', 'unsupported-redirect'));\n\t\t\t\t\t\t\tfinalize();\n\t\t\t\t\t\t\treturn;\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\t// HTTP-redirect fetch step 11\n\t\t\t\t\t\tif (res.statusCode === 303 || (res.statusCode === 301 || res.statusCode === 302) && request.method === 'POST') {\n\t\t\t\t\t\t\trequestOpts.method = 'GET';\n\t\t\t\t\t\t\trequestOpts.body = undefined;\n\t\t\t\t\t\t\trequestOpts.headers.delete('content-length');\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\t// HTTP-redirect fetch step 15\n\t\t\t\t\t\tresolve(fetch(new Request(locationURL, requestOpts)));\n\t\t\t\t\t\tfinalize();\n\t\t\t\t\t\treturn;\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t// prepare response\n\t\t\tres.once('end', function () {\n\t\t\t\tif (signal) signal.removeEventListener('abort', abortAndFinalize);\n\t\t\t});\n\t\t\tlet body = res.pipe(new PassThrough$1());\n\n\t\t\tconst response_options = {\n\t\t\t\turl: request.url,\n\t\t\t\tstatus: res.statusCode,\n\t\t\t\tstatusText: res.statusMessage,\n\t\t\t\theaders: headers,\n\t\t\t\tsize: request.size,\n\t\t\t\ttimeout: request.timeout,\n\t\t\t\tcounter: request.counter\n\t\t\t};\n\n\t\t\t// HTTP-network fetch step 12.1.1.3\n\t\t\tconst codings = headers.get('Content-Encoding');\n\n\t\t\t// HTTP-network fetch step 12.1.1.4: handle content codings\n\n\t\t\t// in following scenarios we ignore compression support\n\t\t\t// 1. compression support is disabled\n\t\t\t// 2. HEAD request\n\t\t\t// 3. no Content-Encoding header\n\t\t\t// 4. no content response (204)\n\t\t\t// 5. content not modified response (304)\n\t\t\tif (!request.compress || request.method === 'HEAD' || codings === null || res.statusCode === 204 || res.statusCode === 304) {\n\t\t\t\tresponse = new Response(body, response_options);\n\t\t\t\tresolve(response);\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\t// For Node v6+\n\t\t\t// Be less strict when decoding compressed responses, since sometimes\n\t\t\t// servers send slightly invalid responses that are still accepted\n\t\t\t// by common browsers.\n\t\t\t// Always using Z_SYNC_FLUSH is what cURL does.\n\t\t\tconst zlibOptions = {\n\t\t\t\tflush: zlib.Z_SYNC_FLUSH,\n\t\t\t\tfinishFlush: zlib.Z_SYNC_FLUSH\n\t\t\t};\n\n\t\t\t// for gzip\n\t\t\tif (codings == 'gzip' || codings == 'x-gzip') {\n\t\t\t\tbody = body.pipe(zlib.createGunzip(zlibOptions));\n\t\t\t\tresponse = new Response(body, response_options);\n\t\t\t\tresolve(response);\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\t// for deflate\n\t\t\tif (codings == 'deflate' || codings == 'x-deflate') {\n\t\t\t\t// handle the infamous raw deflate response from old servers\n\t\t\t\t// a hack for old IIS and Apache servers\n\t\t\t\tconst raw = res.pipe(new PassThrough$1());\n\t\t\t\traw.once('data', function (chunk) {\n\t\t\t\t\t// see http://stackoverflow.com/questions/37519828\n\t\t\t\t\tif ((chunk[0] & 0x0F) === 0x08) {\n\t\t\t\t\t\tbody = body.pipe(zlib.createInflate());\n\t\t\t\t\t} else {\n\t\t\t\t\t\tbody = body.pipe(zlib.createInflateRaw());\n\t\t\t\t\t}\n\t\t\t\t\tresponse = new Response(body, response_options);\n\t\t\t\t\tresolve(response);\n\t\t\t\t});\n\t\t\t\traw.on('end', function () {\n\t\t\t\t\t// some old IIS servers return zero-length OK deflate responses, so 'data' is never emitted.\n\t\t\t\t\tif (!response) {\n\t\t\t\t\t\tresponse = new Response(body, response_options);\n\t\t\t\t\t\tresolve(response);\n\t\t\t\t\t}\n\t\t\t\t});\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\t// for br\n\t\t\tif (codings == 'br' && typeof zlib.createBrotliDecompress === 'function') {\n\t\t\t\tbody = body.pipe(zlib.createBrotliDecompress());\n\t\t\t\tresponse = new Response(body, response_options);\n\t\t\t\tresolve(response);\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\t// otherwise, use response as-is\n\t\t\tresponse = new Response(body, response_options);\n\t\t\tresolve(response);\n\t\t});\n\n\t\twriteToStream(req, request);\n\t});\n}\nfunction fixResponseChunkedTransferBadEnding(request, errorCallback) {\n\tlet socket;\n\n\trequest.on('socket', function (s) {\n\t\tsocket = s;\n\t});\n\n\trequest.on('response', function (response) {\n\t\tconst headers = response.headers;\n\n\t\tif (headers['transfer-encoding'] === 'chunked' && !headers['content-length']) {\n\t\t\tresponse.once('close', function (hadError) {\n\t\t\t\t// tests for socket presence, as in some situations the\n\t\t\t\t// the 'socket' event is not triggered for the request\n\t\t\t\t// (happens in deno), avoids `TypeError`\n\t\t\t\t// if a data listener is still present we didn't end cleanly\n\t\t\t\tconst hasDataListener = socket && socket.listenerCount('data') > 0;\n\n\t\t\t\tif (hasDataListener && !hadError) {\n\t\t\t\t\tconst err = new Error('Premature close');\n\t\t\t\t\terr.code = 'ERR_STREAM_PREMATURE_CLOSE';\n\t\t\t\t\terrorCallback(err);\n\t\t\t\t}\n\t\t\t});\n\t\t}\n\t});\n}\n\nfunction destroyStream(stream, err) {\n\tif (stream.destroy) {\n\t\tstream.destroy(err);\n\t} else {\n\t\t// node < 8\n\t\tstream.emit('error', err);\n\t\tstream.end();\n\t}\n}\n\n/**\n * Redirect code matching\n *\n * @param Number code Status code\n * @return Boolean\n */\nfetch.isRedirect = function (code) {\n\treturn code === 301 || code === 302 || code === 303 || code === 307 || code === 308;\n};\n\n// expose Promise\nfetch.Promise = global.Promise;\n\nexport default fetch;\nexport { Headers, Request, Response, FetchError, AbortError };\n","const nodeFetch = require('node-fetch')\nconst realFetch = nodeFetch.default || nodeFetch\n\nconst fetch = function (url, options) {\n // Support schemaless URIs on the server for parity with the browser.\n // Ex: //github.com/ -> https://github.com/\n if (/^\\/\\//.test(url)) {\n url = 'https:' + url\n }\n return realFetch.call(this, url, options)\n}\n\nfetch.ponyfill = true\n\nmodule.exports = exports = fetch\nexports.fetch = fetch\nexports.Headers = nodeFetch.Headers\nexports.Request = nodeFetch.Request\nexports.Response = nodeFetch.Response\n\n// Needed for TypeScript consumers without esModuleInterop.\nexports.default = fetch\n","'use strict';\n\nmodule.exports = {\n BINARY_TYPES: ['nodebuffer', 'arraybuffer', 'fragments'],\n GUID: '258EAFA5-E914-47DA-95CA-C5AB0DC85B11',\n kStatusCode: Symbol('status-code'),\n kWebSocket: Symbol('websocket'),\n EMPTY_BUFFER: Buffer.alloc(0),\n NOOP: () => {}\n};\n","'use strict';\n\nconst { EMPTY_BUFFER } = require('./constants');\n\n/**\n * Merges an array of buffers into a new buffer.\n *\n * @param {Buffer[]} list The array of buffers to concat\n * @param {Number} totalLength The total length of buffers in the list\n * @return {Buffer} The resulting buffer\n * @public\n */\nfunction concat(list, totalLength) {\n if (list.length === 0) return EMPTY_BUFFER;\n if (list.length === 1) return list[0];\n\n const target = Buffer.allocUnsafe(totalLength);\n let offset = 0;\n\n for (let i = 0; i < list.length; i++) {\n const buf = list[i];\n target.set(buf, offset);\n offset += buf.length;\n }\n\n if (offset < totalLength) return target.slice(0, offset);\n\n return target;\n}\n\n/**\n * Masks a buffer using the given mask.\n *\n * @param {Buffer} source The buffer to mask\n * @param {Buffer} mask The mask to use\n * @param {Buffer} output The buffer where to store the result\n * @param {Number} offset The offset at which to start writing\n * @param {Number} length The number of bytes to mask.\n * @public\n */\nfunction _mask(source, mask, output, offset, length) {\n for (let i = 0; i < length; i++) {\n output[offset + i] = source[i] ^ mask[i & 3];\n }\n}\n\n/**\n * Unmasks a buffer using the given mask.\n *\n * @param {Buffer} buffer The buffer to unmask\n * @param {Buffer} mask The mask to use\n * @public\n */\nfunction _unmask(buffer, mask) {\n // Required until https://github.com/nodejs/node/issues/9006 is resolved.\n const length = buffer.length;\n for (let i = 0; i < length; i++) {\n buffer[i] ^= mask[i & 3];\n }\n}\n\n/**\n * Converts a buffer to an `ArrayBuffer`.\n *\n * @param {Buffer} buf The buffer to convert\n * @return {ArrayBuffer} Converted buffer\n * @public\n */\nfunction toArrayBuffer(buf) {\n if (buf.byteLength === buf.buffer.byteLength) {\n return buf.buffer;\n }\n\n return buf.buffer.slice(buf.byteOffset, buf.byteOffset + buf.byteLength);\n}\n\n/**\n * Converts `data` to a `Buffer`.\n *\n * @param {*} data The data to convert\n * @return {Buffer} The buffer\n * @throws {TypeError}\n * @public\n */\nfunction toBuffer(data) {\n toBuffer.readOnly = true;\n\n if (Buffer.isBuffer(data)) return data;\n\n let buf;\n\n if (data instanceof ArrayBuffer) {\n buf = Buffer.from(data);\n } else if (ArrayBuffer.isView(data)) {\n buf = Buffer.from(data.buffer, data.byteOffset, data.byteLength);\n } else {\n buf = Buffer.from(data);\n toBuffer.readOnly = false;\n }\n\n return buf;\n}\n\ntry {\n const bufferUtil = require('bufferutil');\n const bu = bufferUtil.BufferUtil || bufferUtil;\n\n module.exports = {\n concat,\n mask(source, mask, output, offset, length) {\n if (length < 48) _mask(source, mask, output, offset, length);\n else bu.mask(source, mask, output, offset, length);\n },\n toArrayBuffer,\n toBuffer,\n unmask(buffer, mask) {\n if (buffer.length < 32) _unmask(buffer, mask);\n else bu.unmask(buffer, mask);\n }\n };\n} catch (e) /* istanbul ignore next */ {\n module.exports = {\n concat,\n mask: _mask,\n toArrayBuffer,\n toBuffer,\n unmask: _unmask\n };\n}\n","'use strict';\n\nconst kDone = Symbol('kDone');\nconst kRun = Symbol('kRun');\n\n/**\n * A very simple job queue with adjustable concurrency. Adapted from\n * https://github.com/STRML/async-limiter\n */\nclass Limiter {\n /**\n * Creates a new `Limiter`.\n *\n * @param {Number} [concurrency=Infinity] The maximum number of jobs allowed\n * to run concurrently\n */\n constructor(concurrency) {\n this[kDone] = () => {\n this.pending--;\n this[kRun]();\n };\n this.concurrency = concurrency || Infinity;\n this.jobs = [];\n this.pending = 0;\n }\n\n /**\n * Adds a job to the queue.\n *\n * @param {Function} job The job to run\n * @public\n */\n add(job) {\n this.jobs.push(job);\n this[kRun]();\n }\n\n /**\n * Removes a job from the queue and runs it if possible.\n *\n * @private\n */\n [kRun]() {\n if (this.pending === this.concurrency) return;\n\n if (this.jobs.length) {\n const job = this.jobs.shift();\n\n this.pending++;\n job(this[kDone]);\n }\n }\n}\n\nmodule.exports = Limiter;\n","'use strict';\n\nconst zlib = require('zlib');\n\nconst bufferUtil = require('./buffer-util');\nconst Limiter = require('./limiter');\nconst { kStatusCode, NOOP } = require('./constants');\n\nconst TRAILER = Buffer.from([0x00, 0x00, 0xff, 0xff]);\nconst kPerMessageDeflate = Symbol('permessage-deflate');\nconst kTotalLength = Symbol('total-length');\nconst kCallback = Symbol('callback');\nconst kBuffers = Symbol('buffers');\nconst kError = Symbol('error');\n\n//\n// We limit zlib concurrency, which prevents severe memory fragmentation\n// as documented in https://github.com/nodejs/node/issues/8871#issuecomment-250915913\n// and https://github.com/websockets/ws/issues/1202\n//\n// Intentionally global; it's the global thread pool that's an issue.\n//\nlet zlibLimiter;\n\n/**\n * permessage-deflate implementation.\n */\nclass PerMessageDeflate {\n /**\n * Creates a PerMessageDeflate instance.\n *\n * @param {Object} [options] Configuration options\n * @param {Boolean} [options.serverNoContextTakeover=false] Request/accept\n * disabling of server context takeover\n * @param {Boolean} [options.clientNoContextTakeover=false] Advertise/\n * acknowledge disabling of client context takeover\n * @param {(Boolean|Number)} [options.serverMaxWindowBits] Request/confirm the\n * use of a custom server window size\n * @param {(Boolean|Number)} [options.clientMaxWindowBits] Advertise support\n * for, or request, a custom client window size\n * @param {Object} [options.zlibDeflateOptions] Options to pass to zlib on\n * deflate\n * @param {Object} [options.zlibInflateOptions] Options to pass to zlib on\n * inflate\n * @param {Number} [options.threshold=1024] Size (in bytes) below which\n * messages should not be compressed\n * @param {Number} [options.concurrencyLimit=10] The number of concurrent\n * calls to zlib\n * @param {Boolean} [isServer=false] Create the instance in either server or\n * client mode\n * @param {Number} [maxPayload=0] The maximum allowed message length\n */\n constructor(options, isServer, maxPayload) {\n this._maxPayload = maxPayload | 0;\n this._options = options || {};\n this._threshold =\n this._options.threshold !== undefined ? this._options.threshold : 1024;\n this._isServer = !!isServer;\n this._deflate = null;\n this._inflate = null;\n\n this.params = null;\n\n if (!zlibLimiter) {\n const concurrency =\n this._options.concurrencyLimit !== undefined\n ? this._options.concurrencyLimit\n : 10;\n zlibLimiter = new Limiter(concurrency);\n }\n }\n\n /**\n * @type {String}\n */\n static get extensionName() {\n return 'permessage-deflate';\n }\n\n /**\n * Create an extension negotiation offer.\n *\n * @return {Object} Extension parameters\n * @public\n */\n offer() {\n const params = {};\n\n if (this._options.serverNoContextTakeover) {\n params.server_no_context_takeover = true;\n }\n if (this._options.clientNoContextTakeover) {\n params.client_no_context_takeover = true;\n }\n if (this._options.serverMaxWindowBits) {\n params.server_max_window_bits = this._options.serverMaxWindowBits;\n }\n if (this._options.clientMaxWindowBits) {\n params.client_max_window_bits = this._options.clientMaxWindowBits;\n } else if (this._options.clientMaxWindowBits == null) {\n params.client_max_window_bits = true;\n }\n\n return params;\n }\n\n /**\n * Accept an extension negotiation offer/response.\n *\n * @param {Array} configurations The extension negotiation offers/reponse\n * @return {Object} Accepted configuration\n * @public\n */\n accept(configurations) {\n configurations = this.normalizeParams(configurations);\n\n this.params = this._isServer\n ? this.acceptAsServer(configurations)\n : this.acceptAsClient(configurations);\n\n return this.params;\n }\n\n /**\n * Releases all resources used by the extension.\n *\n * @public\n */\n cleanup() {\n if (this._inflate) {\n this._inflate.close();\n this._inflate = null;\n }\n\n if (this._deflate) {\n const callback = this._deflate[kCallback];\n\n this._deflate.close();\n this._deflate = null;\n\n if (callback) {\n callback(\n new Error(\n 'The deflate stream was closed while data was being processed'\n )\n );\n }\n }\n }\n\n /**\n * Accept an extension negotiation offer.\n *\n * @param {Array} offers The extension negotiation offers\n * @return {Object} Accepted configuration\n * @private\n */\n acceptAsServer(offers) {\n const opts = this._options;\n const accepted = offers.find((params) => {\n if (\n (opts.serverNoContextTakeover === false &&\n params.server_no_context_takeover) ||\n (params.server_max_window_bits &&\n (opts.serverMaxWindowBits === false ||\n (typeof opts.serverMaxWindowBits === 'number' &&\n opts.serverMaxWindowBits > params.server_max_window_bits))) ||\n (typeof opts.clientMaxWindowBits === 'number' &&\n !params.client_max_window_bits)\n ) {\n return false;\n }\n\n return true;\n });\n\n if (!accepted) {\n throw new Error('None of the extension offers can be accepted');\n }\n\n if (opts.serverNoContextTakeover) {\n accepted.server_no_context_takeover = true;\n }\n if (opts.clientNoContextTakeover) {\n accepted.client_no_context_takeover = true;\n }\n if (typeof opts.serverMaxWindowBits === 'number') {\n accepted.server_max_window_bits = opts.serverMaxWindowBits;\n }\n if (typeof opts.clientMaxWindowBits === 'number') {\n accepted.client_max_window_bits = opts.clientMaxWindowBits;\n } else if (\n accepted.client_max_window_bits === true ||\n opts.clientMaxWindowBits === false\n ) {\n delete accepted.client_max_window_bits;\n }\n\n return accepted;\n }\n\n /**\n * Accept the extension negotiation response.\n *\n * @param {Array} response The extension negotiation response\n * @return {Object} Accepted configuration\n * @private\n */\n acceptAsClient(response) {\n const params = response[0];\n\n if (\n this._options.clientNoContextTakeover === false &&\n params.client_no_context_takeover\n ) {\n throw new Error('Unexpected parameter \"client_no_context_takeover\"');\n }\n\n if (!params.client_max_window_bits) {\n if (typeof this._options.clientMaxWindowBits === 'number') {\n params.client_max_window_bits = this._options.clientMaxWindowBits;\n }\n } else if (\n this._options.clientMaxWindowBits === false ||\n (typeof this._options.clientMaxWindowBits === 'number' &&\n params.client_max_window_bits > this._options.clientMaxWindowBits)\n ) {\n throw new Error(\n 'Unexpected or invalid parameter \"client_max_window_bits\"'\n );\n }\n\n return params;\n }\n\n /**\n * Normalize parameters.\n *\n * @param {Array} configurations The extension negotiation offers/reponse\n * @return {Array} The offers/response with normalized parameters\n * @private\n */\n normalizeParams(configurations) {\n configurations.forEach((params) => {\n Object.keys(params).forEach((key) => {\n let value = params[key];\n\n if (value.length > 1) {\n throw new Error(`Parameter \"${key}\" must have only a single value`);\n }\n\n value = value[0];\n\n if (key === 'client_max_window_bits') {\n if (value !== true) {\n const num = +value;\n if (!Number.isInteger(num) || num < 8 || num > 15) {\n throw new TypeError(\n `Invalid value for parameter \"${key}\": ${value}`\n );\n }\n value = num;\n } else if (!this._isServer) {\n throw new TypeError(\n `Invalid value for parameter \"${key}\": ${value}`\n );\n }\n } else if (key === 'server_max_window_bits') {\n const num = +value;\n if (!Number.isInteger(num) || num < 8 || num > 15) {\n throw new TypeError(\n `Invalid value for parameter \"${key}\": ${value}`\n );\n }\n value = num;\n } else if (\n key === 'client_no_context_takeover' ||\n key === 'server_no_context_takeover'\n ) {\n if (value !== true) {\n throw new TypeError(\n `Invalid value for parameter \"${key}\": ${value}`\n );\n }\n } else {\n throw new Error(`Unknown parameter \"${key}\"`);\n }\n\n params[key] = value;\n });\n });\n\n return configurations;\n }\n\n /**\n * Decompress data. Concurrency limited.\n *\n * @param {Buffer} data Compressed data\n * @param {Boolean} fin Specifies whether or not this is the last fragment\n * @param {Function} callback Callback\n * @public\n */\n decompress(data, fin, callback) {\n zlibLimiter.add((done) => {\n this._decompress(data, fin, (err, result) => {\n done();\n callback(err, result);\n });\n });\n }\n\n /**\n * Compress data. Concurrency limited.\n *\n * @param {Buffer} data Data to compress\n * @param {Boolean} fin Specifies whether or not this is the last fragment\n * @param {Function} callback Callback\n * @public\n */\n compress(data, fin, callback) {\n zlibLimiter.add((done) => {\n this._compress(data, fin, (err, result) => {\n done();\n callback(err, result);\n });\n });\n }\n\n /**\n * Decompress data.\n *\n * @param {Buffer} data Compressed data\n * @param {Boolean} fin Specifies whether or not this is the last fragment\n * @param {Function} callback Callback\n * @private\n */\n _decompress(data, fin, callback) {\n const endpoint = this._isServer ? 'client' : 'server';\n\n if (!this._inflate) {\n const key = `${endpoint}_max_window_bits`;\n const windowBits =\n typeof this.params[key] !== 'number'\n ? zlib.Z_DEFAULT_WINDOWBITS\n : this.params[key];\n\n this._inflate = zlib.createInflateRaw({\n ...this._options.zlibInflateOptions,\n windowBits\n });\n this._inflate[kPerMessageDeflate] = this;\n this._inflate[kTotalLength] = 0;\n this._inflate[kBuffers] = [];\n this._inflate.on('error', inflateOnError);\n this._inflate.on('data', inflateOnData);\n }\n\n this._inflate[kCallback] = callback;\n\n this._inflate.write(data);\n if (fin) this._inflate.write(TRAILER);\n\n this._inflate.flush(() => {\n const err = this._inflate[kError];\n\n if (err) {\n this._inflate.close();\n this._inflate = null;\n callback(err);\n return;\n }\n\n const data = bufferUtil.concat(\n this._inflate[kBuffers],\n this._inflate[kTotalLength]\n );\n\n if (this._inflate._readableState.endEmitted) {\n this._inflate.close();\n this._inflate = null;\n } else {\n this._inflate[kTotalLength] = 0;\n this._inflate[kBuffers] = [];\n\n if (fin && this.params[`${endpoint}_no_context_takeover`]) {\n this._inflate.reset();\n }\n }\n\n callback(null, data);\n });\n }\n\n /**\n * Compress data.\n *\n * @param {Buffer} data Data to compress\n * @param {Boolean} fin Specifies whether or not this is the last fragment\n * @param {Function} callback Callback\n * @private\n */\n _compress(data, fin, callback) {\n const endpoint = this._isServer ? 'server' : 'client';\n\n if (!this._deflate) {\n const key = `${endpoint}_max_window_bits`;\n const windowBits =\n typeof this.params[key] !== 'number'\n ? zlib.Z_DEFAULT_WINDOWBITS\n : this.params[key];\n\n this._deflate = zlib.createDeflateRaw({\n ...this._options.zlibDeflateOptions,\n windowBits\n });\n\n this._deflate[kTotalLength] = 0;\n this._deflate[kBuffers] = [];\n\n //\n // An `'error'` event is emitted, only on Node.js < 10.0.0, if the\n // `zlib.DeflateRaw` instance is closed while data is being processed.\n // This can happen if `PerMessageDeflate#cleanup()` is called at the wrong\n // time due to an abnormal WebSocket closure.\n //\n this._deflate.on('error', NOOP);\n this._deflate.on('data', deflateOnData);\n }\n\n this._deflate[kCallback] = callback;\n\n this._deflate.write(data);\n this._deflate.flush(zlib.Z_SYNC_FLUSH, () => {\n if (!this._deflate) {\n //\n // The deflate stream was closed while data was being processed.\n //\n return;\n }\n\n let data = bufferUtil.concat(\n this._deflate[kBuffers],\n this._deflate[kTotalLength]\n );\n\n if (fin) data = data.slice(0, data.length - 4);\n\n //\n // Ensure that the callback will not be called again in\n // `PerMessageDeflate#cleanup()`.\n //\n this._deflate[kCallback] = null;\n\n this._deflate[kTotalLength] = 0;\n this._deflate[kBuffers] = [];\n\n if (fin && this.params[`${endpoint}_no_context_takeover`]) {\n this._deflate.reset();\n }\n\n callback(null, data);\n });\n }\n}\n\nmodule.exports = PerMessageDeflate;\n\n/**\n * The listener of the `zlib.DeflateRaw` stream `'data'` event.\n *\n * @param {Buffer} chunk A chunk of data\n * @private\n */\nfunction deflateOnData(chunk) {\n this[kBuffers].push(chunk);\n this[kTotalLength] += chunk.length;\n}\n\n/**\n * The listener of the `zlib.InflateRaw` stream `'data'` event.\n *\n * @param {Buffer} chunk A chunk of data\n * @private\n */\nfunction inflateOnData(chunk) {\n this[kTotalLength] += chunk.length;\n\n if (\n this[kPerMessageDeflate]._maxPayload < 1 ||\n this[kTotalLength] <= this[kPerMessageDeflate]._maxPayload\n ) {\n this[kBuffers].push(chunk);\n return;\n }\n\n this[kError] = new RangeError('Max payload size exceeded');\n this[kError].code = 'WS_ERR_UNSUPPORTED_MESSAGE_LENGTH';\n this[kError][kStatusCode] = 1009;\n this.removeListener('data', inflateOnData);\n this.reset();\n}\n\n/**\n * The listener of the `zlib.InflateRaw` stream `'error'` event.\n *\n * @param {Error} err The emitted error\n * @private\n */\nfunction inflateOnError(err) {\n //\n // There is no need to call `Zlib#close()` as the handle is automatically\n // closed when an error is emitted.\n //\n this[kPerMessageDeflate]._inflate = null;\n err[kStatusCode] = 1007;\n this[kCallback](err);\n}\n","'use strict';\n\n/**\n * Checks if a status code is allowed in a close frame.\n *\n * @param {Number} code The status code\n * @return {Boolean} `true` if the status code is valid, else `false`\n * @public\n */\nfunction isValidStatusCode(code) {\n return (\n (code >= 1000 &&\n code <= 1014 &&\n code !== 1004 &&\n code !== 1005 &&\n code !== 1006) ||\n (code >= 3000 && code <= 4999)\n );\n}\n\n/**\n * Checks if a given buffer contains only correct UTF-8.\n * Ported from https://www.cl.cam.ac.uk/%7Emgk25/ucs/utf8_check.c by\n * Markus Kuhn.\n *\n * @param {Buffer} buf The buffer to check\n * @return {Boolean} `true` if `buf` contains only correct UTF-8, else `false`\n * @public\n */\nfunction _isValidUTF8(buf) {\n const len = buf.length;\n let i = 0;\n\n while (i < len) {\n if ((buf[i] & 0x80) === 0) {\n // 0xxxxxxx\n i++;\n } else if ((buf[i] & 0xe0) === 0xc0) {\n // 110xxxxx 10xxxxxx\n if (\n i + 1 === len ||\n (buf[i + 1] & 0xc0) !== 0x80 ||\n (buf[i] & 0xfe) === 0xc0 // Overlong\n ) {\n return false;\n }\n\n i += 2;\n } else if ((buf[i] & 0xf0) === 0xe0) {\n // 1110xxxx 10xxxxxx 10xxxxxx\n if (\n i + 2 >= len ||\n (buf[i + 1] & 0xc0) !== 0x80 ||\n (buf[i + 2] & 0xc0) !== 0x80 ||\n (buf[i] === 0xe0 && (buf[i + 1] & 0xe0) === 0x80) || // Overlong\n (buf[i] === 0xed && (buf[i + 1] & 0xe0) === 0xa0) // Surrogate (U+D800 - U+DFFF)\n ) {\n return false;\n }\n\n i += 3;\n } else if ((buf[i] & 0xf8) === 0xf0) {\n // 11110xxx 10xxxxxx 10xxxxxx 10xxxxxx\n if (\n i + 3 >= len ||\n (buf[i + 1] & 0xc0) !== 0x80 ||\n (buf[i + 2] & 0xc0) !== 0x80 ||\n (buf[i + 3] & 0xc0) !== 0x80 ||\n (buf[i] === 0xf0 && (buf[i + 1] & 0xf0) === 0x80) || // Overlong\n (buf[i] === 0xf4 && buf[i + 1] > 0x8f) ||\n buf[i] > 0xf4 // > U+10FFFF\n ) {\n return false;\n }\n\n i += 4;\n } else {\n return false;\n }\n }\n\n return true;\n}\n\ntry {\n let isValidUTF8 = require('utf-8-validate');\n\n /* istanbul ignore if */\n if (typeof isValidUTF8 === 'object') {\n isValidUTF8 = isValidUTF8.Validation.isValidUTF8; // utf-8-validate@<3.0.0\n }\n\n module.exports = {\n isValidStatusCode,\n isValidUTF8(buf) {\n return buf.length < 150 ? _isValidUTF8(buf) : isValidUTF8(buf);\n }\n };\n} catch (e) /* istanbul ignore next */ {\n module.exports = {\n isValidStatusCode,\n isValidUTF8: _isValidUTF8\n };\n}\n","'use strict';\n\nconst { Writable } = require('stream');\n\nconst PerMessageDeflate = require('./permessage-deflate');\nconst {\n BINARY_TYPES,\n EMPTY_BUFFER,\n kStatusCode,\n kWebSocket\n} = require('./constants');\nconst { concat, toArrayBuffer, unmask } = require('./buffer-util');\nconst { isValidStatusCode, isValidUTF8 } = require('./validation');\n\nconst GET_INFO = 0;\nconst GET_PAYLOAD_LENGTH_16 = 1;\nconst GET_PAYLOAD_LENGTH_64 = 2;\nconst GET_MASK = 3;\nconst GET_DATA = 4;\nconst INFLATING = 5;\n\n/**\n * HyBi Receiver implementation.\n *\n * @extends Writable\n */\nclass Receiver extends Writable {\n /**\n * Creates a Receiver instance.\n *\n * @param {String} [binaryType=nodebuffer] The type for binary data\n * @param {Object} [extensions] An object containing the negotiated extensions\n * @param {Boolean} [isServer=false] Specifies whether to operate in client or\n * server mode\n * @param {Number} [maxPayload=0] The maximum allowed message length\n */\n constructor(binaryType, extensions, isServer, maxPayload) {\n super();\n\n this._binaryType = binaryType || BINARY_TYPES[0];\n this[kWebSocket] = undefined;\n this._extensions = extensions || {};\n this._isServer = !!isServer;\n this._maxPayload = maxPayload | 0;\n\n this._bufferedBytes = 0;\n this._buffers = [];\n\n this._compressed = false;\n this._payloadLength = 0;\n this._mask = undefined;\n this._fragmented = 0;\n this._masked = false;\n this._fin = false;\n this._opcode = 0;\n\n this._totalPayloadLength = 0;\n this._messageLength = 0;\n this._fragments = [];\n\n this._state = GET_INFO;\n this._loop = false;\n }\n\n /**\n * Implements `Writable.prototype._write()`.\n *\n * @param {Buffer} chunk The chunk of data to write\n * @param {String} encoding The character encoding of `chunk`\n * @param {Function} cb Callback\n * @private\n */\n _write(chunk, encoding, cb) {\n if (this._opcode === 0x08 && this._state == GET_INFO) return cb();\n\n this._bufferedBytes += chunk.length;\n this._buffers.push(chunk);\n this.startLoop(cb);\n }\n\n /**\n * Consumes `n` bytes from the buffered data.\n *\n * @param {Number} n The number of bytes to consume\n * @return {Buffer} The consumed bytes\n * @private\n */\n consume(n) {\n this._bufferedBytes -= n;\n\n if (n === this._buffers[0].length) return this._buffers.shift();\n\n if (n < this._buffers[0].length) {\n const buf = this._buffers[0];\n this._buffers[0] = buf.slice(n);\n return buf.slice(0, n);\n }\n\n const dst = Buffer.allocUnsafe(n);\n\n do {\n const buf = this._buffers[0];\n const offset = dst.length - n;\n\n if (n >= buf.length) {\n dst.set(this._buffers.shift(), offset);\n } else {\n dst.set(new Uint8Array(buf.buffer, buf.byteOffset, n), offset);\n this._buffers[0] = buf.slice(n);\n }\n\n n -= buf.length;\n } while (n > 0);\n\n return dst;\n }\n\n /**\n * Starts the parsing loop.\n *\n * @param {Function} cb Callback\n * @private\n */\n startLoop(cb) {\n let err;\n this._loop = true;\n\n do {\n switch (this._state) {\n case GET_INFO:\n err = this.getInfo();\n break;\n case GET_PAYLOAD_LENGTH_16:\n err = this.getPayloadLength16();\n break;\n case GET_PAYLOAD_LENGTH_64:\n err = this.getPayloadLength64();\n break;\n case GET_MASK:\n this.getMask();\n break;\n case GET_DATA:\n err = this.getData(cb);\n break;\n default:\n // `INFLATING`\n this._loop = false;\n return;\n }\n } while (this._loop);\n\n cb(err);\n }\n\n /**\n * Reads the first two bytes of a frame.\n *\n * @return {(RangeError|undefined)} A possible error\n * @private\n */\n getInfo() {\n if (this._bufferedBytes < 2) {\n this._loop = false;\n return;\n }\n\n const buf = this.consume(2);\n\n if ((buf[0] & 0x30) !== 0x00) {\n this._loop = false;\n return error(\n RangeError,\n 'RSV2 and RSV3 must be clear',\n true,\n 1002,\n 'WS_ERR_UNEXPECTED_RSV_2_3'\n );\n }\n\n const compressed = (buf[0] & 0x40) === 0x40;\n\n if (compressed && !this._extensions[PerMessageDeflate.extensionName]) {\n this._loop = false;\n return error(\n RangeError,\n 'RSV1 must be clear',\n true,\n 1002,\n 'WS_ERR_UNEXPECTED_RSV_1'\n );\n }\n\n this._fin = (buf[0] & 0x80) === 0x80;\n this._opcode = buf[0] & 0x0f;\n this._payloadLength = buf[1] & 0x7f;\n\n if (this._opcode === 0x00) {\n if (compressed) {\n this._loop = false;\n return error(\n RangeError,\n 'RSV1 must be clear',\n true,\n 1002,\n 'WS_ERR_UNEXPECTED_RSV_1'\n );\n }\n\n if (!this._fragmented) {\n this._loop = false;\n return error(\n RangeError,\n 'invalid opcode 0',\n true,\n 1002,\n 'WS_ERR_INVALID_OPCODE'\n );\n }\n\n this._opcode = this._fragmented;\n } else if (this._opcode === 0x01 || this._opcode === 0x02) {\n if (this._fragmented) {\n this._loop = false;\n return error(\n RangeError,\n `invalid opcode ${this._opcode}`,\n true,\n 1002,\n 'WS_ERR_INVALID_OPCODE'\n );\n }\n\n this._compressed = compressed;\n } else if (this._opcode > 0x07 && this._opcode < 0x0b) {\n if (!this._fin) {\n this._loop = false;\n return error(\n RangeError,\n 'FIN must be set',\n true,\n 1002,\n 'WS_ERR_EXPECTED_FIN'\n );\n }\n\n if (compressed) {\n this._loop = false;\n return error(\n RangeError,\n 'RSV1 must be clear',\n true,\n 1002,\n 'WS_ERR_UNEXPECTED_RSV_1'\n );\n }\n\n if (this._payloadLength > 0x7d) {\n this._loop = false;\n return error(\n RangeError,\n `invalid payload length ${this._payloadLength}`,\n true,\n 1002,\n 'WS_ERR_INVALID_CONTROL_PAYLOAD_LENGTH'\n );\n }\n } else {\n this._loop = false;\n return error(\n RangeError,\n `invalid opcode ${this._opcode}`,\n true,\n 1002,\n 'WS_ERR_INVALID_OPCODE'\n );\n }\n\n if (!this._fin && !this._fragmented) this._fragmented = this._opcode;\n this._masked = (buf[1] & 0x80) === 0x80;\n\n if (this._isServer) {\n if (!this._masked) {\n this._loop = false;\n return error(\n RangeError,\n 'MASK must be set',\n true,\n 1002,\n 'WS_ERR_EXPECTED_MASK'\n );\n }\n } else if (this._masked) {\n this._loop = false;\n return error(\n RangeError,\n 'MASK must be clear',\n true,\n 1002,\n 'WS_ERR_UNEXPECTED_MASK'\n );\n }\n\n if (this._payloadLength === 126) this._state = GET_PAYLOAD_LENGTH_16;\n else if (this._payloadLength === 127) this._state = GET_PAYLOAD_LENGTH_64;\n else return this.haveLength();\n }\n\n /**\n * Gets extended payload length (7+16).\n *\n * @return {(RangeError|undefined)} A possible error\n * @private\n */\n getPayloadLength16() {\n if (this._bufferedBytes < 2) {\n this._loop = false;\n return;\n }\n\n this._payloadLength = this.consume(2).readUInt16BE(0);\n return this.haveLength();\n }\n\n /**\n * Gets extended payload length (7+64).\n *\n * @return {(RangeError|undefined)} A possible error\n * @private\n */\n getPayloadLength64() {\n if (this._bufferedBytes < 8) {\n this._loop = false;\n return;\n }\n\n const buf = this.consume(8);\n const num = buf.readUInt32BE(0);\n\n //\n // The maximum safe integer in JavaScript is 2^53 - 1. An error is returned\n // if payload length is greater than this number.\n //\n if (num > Math.pow(2, 53 - 32) - 1) {\n this._loop = false;\n return error(\n RangeError,\n 'Unsupported WebSocket frame: payload length > 2^53 - 1',\n false,\n 1009,\n 'WS_ERR_UNSUPPORTED_DATA_PAYLOAD_LENGTH'\n );\n }\n\n this._payloadLength = num * Math.pow(2, 32) + buf.readUInt32BE(4);\n return this.haveLength();\n }\n\n /**\n * Payload length has been read.\n *\n * @return {(RangeError|undefined)} A possible error\n * @private\n */\n haveLength() {\n if (this._payloadLength && this._opcode < 0x08) {\n this._totalPayloadLength += this._payloadLength;\n if (this._totalPayloadLength > this._maxPayload && this._maxPayload > 0) {\n this._loop = false;\n return error(\n RangeError,\n 'Max payload size exceeded',\n false,\n 1009,\n 'WS_ERR_UNSUPPORTED_MESSAGE_LENGTH'\n );\n }\n }\n\n if (this._masked) this._state = GET_MASK;\n else this._state = GET_DATA;\n }\n\n /**\n * Reads mask bytes.\n *\n * @private\n */\n getMask() {\n if (this._bufferedBytes < 4) {\n this._loop = false;\n return;\n }\n\n this._mask = this.consume(4);\n this._state = GET_DATA;\n }\n\n /**\n * Reads data bytes.\n *\n * @param {Function} cb Callback\n * @return {(Error|RangeError|undefined)} A possible error\n * @private\n */\n getData(cb) {\n let data = EMPTY_BUFFER;\n\n if (this._payloadLength) {\n if (this._bufferedBytes < this._payloadLength) {\n this._loop = false;\n return;\n }\n\n data = this.consume(this._payloadLength);\n if (this._masked) unmask(data, this._mask);\n }\n\n if (this._opcode > 0x07) return this.controlMessage(data);\n\n if (this._compressed) {\n this._state = INFLATING;\n this.decompress(data, cb);\n return;\n }\n\n if (data.length) {\n //\n // This message is not compressed so its lenght is the sum of the payload\n // length of all fragments.\n //\n this._messageLength = this._totalPayloadLength;\n this._fragments.push(data);\n }\n\n return this.dataMessage();\n }\n\n /**\n * Decompresses data.\n *\n * @param {Buffer} data Compressed data\n * @param {Function} cb Callback\n * @private\n */\n decompress(data, cb) {\n const perMessageDeflate = this._extensions[PerMessageDeflate.extensionName];\n\n perMessageDeflate.decompress(data, this._fin, (err, buf) => {\n if (err) return cb(err);\n\n if (buf.length) {\n this._messageLength += buf.length;\n if (this._messageLength > this._maxPayload && this._maxPayload > 0) {\n return cb(\n error(\n RangeError,\n 'Max payload size exceeded',\n false,\n 1009,\n 'WS_ERR_UNSUPPORTED_MESSAGE_LENGTH'\n )\n );\n }\n\n this._fragments.push(buf);\n }\n\n const er = this.dataMessage();\n if (er) return cb(er);\n\n this.startLoop(cb);\n });\n }\n\n /**\n * Handles a data message.\n *\n * @return {(Error|undefined)} A possible error\n * @private\n */\n dataMessage() {\n if (this._fin) {\n const messageLength = this._messageLength;\n const fragments = this._fragments;\n\n this._totalPayloadLength = 0;\n this._messageLength = 0;\n this._fragmented = 0;\n this._fragments = [];\n\n if (this._opcode === 2) {\n let data;\n\n if (this._binaryType === 'nodebuffer') {\n data = concat(fragments, messageLength);\n } else if (this._binaryType === 'arraybuffer') {\n data = toArrayBuffer(concat(fragments, messageLength));\n } else {\n data = fragments;\n }\n\n this.emit('message', data);\n } else {\n const buf = concat(fragments, messageLength);\n\n if (!isValidUTF8(buf)) {\n this._loop = false;\n return error(\n Error,\n 'invalid UTF-8 sequence',\n true,\n 1007,\n 'WS_ERR_INVALID_UTF8'\n );\n }\n\n this.emit('message', buf.toString());\n }\n }\n\n this._state = GET_INFO;\n }\n\n /**\n * Handles a control message.\n *\n * @param {Buffer} data Data to handle\n * @return {(Error|RangeError|undefined)} A possible error\n * @private\n */\n controlMessage(data) {\n if (this._opcode === 0x08) {\n this._loop = false;\n\n if (data.length === 0) {\n this.emit('conclude', 1005, '');\n this.end();\n } else if (data.length === 1) {\n return error(\n RangeError,\n 'invalid payload length 1',\n true,\n 1002,\n 'WS_ERR_INVALID_CONTROL_PAYLOAD_LENGTH'\n );\n } else {\n const code = data.readUInt16BE(0);\n\n if (!isValidStatusCode(code)) {\n return error(\n RangeError,\n `invalid status code ${code}`,\n true,\n 1002,\n 'WS_ERR_INVALID_CLOSE_CODE'\n );\n }\n\n const buf = data.slice(2);\n\n if (!isValidUTF8(buf)) {\n return error(\n Error,\n 'invalid UTF-8 sequence',\n true,\n 1007,\n 'WS_ERR_INVALID_UTF8'\n );\n }\n\n this.emit('conclude', code, buf.toString());\n this.end();\n }\n } else if (this._opcode === 0x09) {\n this.emit('ping', data);\n } else {\n this.emit('pong', data);\n }\n\n this._state = GET_INFO;\n }\n}\n\nmodule.exports = Receiver;\n\n/**\n * Builds an error object.\n *\n * @param {function(new:Error|RangeError)} ErrorCtor The error constructor\n * @param {String} message The error message\n * @param {Boolean} prefix Specifies whether or not to add a default prefix to\n * `message`\n * @param {Number} statusCode The status code\n * @param {String} errorCode The exposed error code\n * @return {(Error|RangeError)} The error\n * @private\n */\nfunction error(ErrorCtor, message, prefix, statusCode, errorCode) {\n const err = new ErrorCtor(\n prefix ? `Invalid WebSocket frame: ${message}` : message\n );\n\n Error.captureStackTrace(err, error);\n err.code = errorCode;\n err[kStatusCode] = statusCode;\n return err;\n}\n","/* eslint no-unused-vars: [\"error\", { \"varsIgnorePattern\": \"^net|tls$\" }] */\n\n'use strict';\n\nconst net = require('net');\nconst tls = require('tls');\nconst { randomFillSync } = require('crypto');\n\nconst PerMessageDeflate = require('./permessage-deflate');\nconst { EMPTY_BUFFER } = require('./constants');\nconst { isValidStatusCode } = require('./validation');\nconst { mask: applyMask, toBuffer } = require('./buffer-util');\n\nconst mask = Buffer.alloc(4);\n\n/**\n * HyBi Sender implementation.\n */\nclass Sender {\n /**\n * Creates a Sender instance.\n *\n * @param {(net.Socket|tls.Socket)} socket The connection socket\n * @param {Object} [extensions] An object containing the negotiated extensions\n */\n constructor(socket, extensions) {\n this._extensions = extensions || {};\n this._socket = socket;\n\n this._firstFragment = true;\n this._compress = false;\n\n this._bufferedBytes = 0;\n this._deflating = false;\n this._queue = [];\n }\n\n /**\n * Frames a piece of data according to the HyBi WebSocket protocol.\n *\n * @param {Buffer} data The data to frame\n * @param {Object} options Options object\n * @param {Number} options.opcode The opcode\n * @param {Boolean} [options.readOnly=false] Specifies whether `data` can be\n * modified\n * @param {Boolean} [options.fin=false] Specifies whether or not to set the\n * FIN bit\n * @param {Boolean} [options.mask=false] Specifies whether or not to mask\n * `data`\n * @param {Boolean} [options.rsv1=false] Specifies whether or not to set the\n * RSV1 bit\n * @return {Buffer[]} The framed data as a list of `Buffer` instances\n * @public\n */\n static frame(data, options) {\n const merge = options.mask && options.readOnly;\n let offset = options.mask ? 6 : 2;\n let payloadLength = data.length;\n\n if (data.length >= 65536) {\n offset += 8;\n payloadLength = 127;\n } else if (data.length > 125) {\n offset += 2;\n payloadLength = 126;\n }\n\n const target = Buffer.allocUnsafe(merge ? data.length + offset : offset);\n\n target[0] = options.fin ? options.opcode | 0x80 : options.opcode;\n if (options.rsv1) target[0] |= 0x40;\n\n target[1] = payloadLength;\n\n if (payloadLength === 126) {\n target.writeUInt16BE(data.length, 2);\n } else if (payloadLength === 127) {\n target.writeUInt32BE(0, 2);\n target.writeUInt32BE(data.length, 6);\n }\n\n if (!options.mask) return [target, data];\n\n randomFillSync(mask, 0, 4);\n\n target[1] |= 0x80;\n target[offset - 4] = mask[0];\n target[offset - 3] = mask[1];\n target[offset - 2] = mask[2];\n target[offset - 1] = mask[3];\n\n if (merge) {\n applyMask(data, mask, target, offset, data.length);\n return [target];\n }\n\n applyMask(data, mask, data, 0, data.length);\n return [target, data];\n }\n\n /**\n * Sends a close message to the other peer.\n *\n * @param {Number} [code] The status code component of the body\n * @param {String} [data] The message component of the body\n * @param {Boolean} [mask=false] Specifies whether or not to mask the message\n * @param {Function} [cb] Callback\n * @public\n */\n close(code, data, mask, cb) {\n let buf;\n\n if (code === undefined) {\n buf = EMPTY_BUFFER;\n } else if (typeof code !== 'number' || !isValidStatusCode(code)) {\n throw new TypeError('First argument must be a valid error code number');\n } else if (data === undefined || data === '') {\n buf = Buffer.allocUnsafe(2);\n buf.writeUInt16BE(code, 0);\n } else {\n const length = Buffer.byteLength(data);\n\n if (length > 123) {\n throw new RangeError('The message must not be greater than 123 bytes');\n }\n\n buf = Buffer.allocUnsafe(2 + length);\n buf.writeUInt16BE(code, 0);\n buf.write(data, 2);\n }\n\n if (this._deflating) {\n this.enqueue([this.doClose, buf, mask, cb]);\n } else {\n this.doClose(buf, mask, cb);\n }\n }\n\n /**\n * Frames and sends a close message.\n *\n * @param {Buffer} data The message to send\n * @param {Boolean} [mask=false] Specifies whether or not to mask `data`\n * @param {Function} [cb] Callback\n * @private\n */\n doClose(data, mask, cb) {\n this.sendFrame(\n Sender.frame(data, {\n fin: true,\n rsv1: false,\n opcode: 0x08,\n mask,\n readOnly: false\n }),\n cb\n );\n }\n\n /**\n * Sends a ping message to the other peer.\n *\n * @param {*} data The message to send\n * @param {Boolean} [mask=false] Specifies whether or not to mask `data`\n * @param {Function} [cb] Callback\n * @public\n */\n ping(data, mask, cb) {\n const buf = toBuffer(data);\n\n if (buf.length > 125) {\n throw new RangeError('The data size must not be greater than 125 bytes');\n }\n\n if (this._deflating) {\n this.enqueue([this.doPing, buf, mask, toBuffer.readOnly, cb]);\n } else {\n this.doPing(buf, mask, toBuffer.readOnly, cb);\n }\n }\n\n /**\n * Frames and sends a ping message.\n *\n * @param {Buffer} data The message to send\n * @param {Boolean} [mask=false] Specifies whether or not to mask `data`\n * @param {Boolean} [readOnly=false] Specifies whether `data` can be modified\n * @param {Function} [cb] Callback\n * @private\n */\n doPing(data, mask, readOnly, cb) {\n this.sendFrame(\n Sender.frame(data, {\n fin: true,\n rsv1: false,\n opcode: 0x09,\n mask,\n readOnly\n }),\n cb\n );\n }\n\n /**\n * Sends a pong message to the other peer.\n *\n * @param {*} data The message to send\n * @param {Boolean} [mask=false] Specifies whether or not to mask `data`\n * @param {Function} [cb] Callback\n * @public\n */\n pong(data, mask, cb) {\n const buf = toBuffer(data);\n\n if (buf.length > 125) {\n throw new RangeError('The data size must not be greater than 125 bytes');\n }\n\n if (this._deflating) {\n this.enqueue([this.doPong, buf, mask, toBuffer.readOnly, cb]);\n } else {\n this.doPong(buf, mask, toBuffer.readOnly, cb);\n }\n }\n\n /**\n * Frames and sends a pong message.\n *\n * @param {Buffer} data The message to send\n * @param {Boolean} [mask=false] Specifies whether or not to mask `data`\n * @param {Boolean} [readOnly=false] Specifies whether `data` can be modified\n * @param {Function} [cb] Callback\n * @private\n */\n doPong(data, mask, readOnly, cb) {\n this.sendFrame(\n Sender.frame(data, {\n fin: true,\n rsv1: false,\n opcode: 0x0a,\n mask,\n readOnly\n }),\n cb\n );\n }\n\n /**\n * Sends a data message to the other peer.\n *\n * @param {*} data The message to send\n * @param {Object} options Options object\n * @param {Boolean} [options.compress=false] Specifies whether or not to\n * compress `data`\n * @param {Boolean} [options.binary=false] Specifies whether `data` is binary\n * or text\n * @param {Boolean} [options.fin=false] Specifies whether the fragment is the\n * last one\n * @param {Boolean} [options.mask=false] Specifies whether or not to mask\n * `data`\n * @param {Function} [cb] Callback\n * @public\n */\n send(data, options, cb) {\n const buf = toBuffer(data);\n const perMessageDeflate = this._extensions[PerMessageDeflate.extensionName];\n let opcode = options.binary ? 2 : 1;\n let rsv1 = options.compress;\n\n if (this._firstFragment) {\n this._firstFragment = false;\n if (rsv1 && perMessageDeflate) {\n rsv1 = buf.length >= perMessageDeflate._threshold;\n }\n this._compress = rsv1;\n } else {\n rsv1 = false;\n opcode = 0;\n }\n\n if (options.fin) this._firstFragment = true;\n\n if (perMessageDeflate) {\n const opts = {\n fin: options.fin,\n rsv1,\n opcode,\n mask: options.mask,\n readOnly: toBuffer.readOnly\n };\n\n if (this._deflating) {\n this.enqueue([this.dispatch, buf, this._compress, opts, cb]);\n } else {\n this.dispatch(buf, this._compress, opts, cb);\n }\n } else {\n this.sendFrame(\n Sender.frame(buf, {\n fin: options.fin,\n rsv1: false,\n opcode,\n mask: options.mask,\n readOnly: toBuffer.readOnly\n }),\n cb\n );\n }\n }\n\n /**\n * Dispatches a data message.\n *\n * @param {Buffer} data The message to send\n * @param {Boolean} [compress=false] Specifies whether or not to compress\n * `data`\n * @param {Object} options Options object\n * @param {Number} options.opcode The opcode\n * @param {Boolean} [options.readOnly=false] Specifies whether `data` can be\n * modified\n * @param {Boolean} [options.fin=false] Specifies whether or not to set the\n * FIN bit\n * @param {Boolean} [options.mask=false] Specifies whether or not to mask\n * `data`\n * @param {Boolean} [options.rsv1=false] Specifies whether or not to set the\n * RSV1 bit\n * @param {Function} [cb] Callback\n * @private\n */\n dispatch(data, compress, options, cb) {\n if (!compress) {\n this.sendFrame(Sender.frame(data, options), cb);\n return;\n }\n\n const perMessageDeflate = this._extensions[PerMessageDeflate.extensionName];\n\n this._bufferedBytes += data.length;\n this._deflating = true;\n perMessageDeflate.compress(data, options.fin, (_, buf) => {\n if (this._socket.destroyed) {\n const err = new Error(\n 'The socket was closed while data was being compressed'\n );\n\n if (typeof cb === 'function') cb(err);\n\n for (let i = 0; i < this._queue.length; i++) {\n const callback = this._queue[i][4];\n\n if (typeof callback === 'function') callback(err);\n }\n\n return;\n }\n\n this._bufferedBytes -= data.length;\n this._deflating = false;\n options.readOnly = false;\n this.sendFrame(Sender.frame(buf, options), cb);\n this.dequeue();\n });\n }\n\n /**\n * Executes queued send operations.\n *\n * @private\n */\n dequeue() {\n while (!this._deflating && this._queue.length) {\n const params = this._queue.shift();\n\n this._bufferedBytes -= params[1].length;\n Reflect.apply(params[0], this, params.slice(1));\n }\n }\n\n /**\n * Enqueues a send operation.\n *\n * @param {Array} params Send operation parameters.\n * @private\n */\n enqueue(params) {\n this._bufferedBytes += params[1].length;\n this._queue.push(params);\n }\n\n /**\n * Sends a frame.\n *\n * @param {Buffer[]} list The frame to send\n * @param {Function} [cb] Callback\n * @private\n */\n sendFrame(list, cb) {\n if (list.length === 2) {\n this._socket.cork();\n this._socket.write(list[0]);\n this._socket.write(list[1], cb);\n this._socket.uncork();\n } else {\n this._socket.write(list[0], cb);\n }\n }\n}\n\nmodule.exports = Sender;\n","'use strict';\n\n/**\n * Class representing an event.\n *\n * @private\n */\nclass Event {\n /**\n * Create a new `Event`.\n *\n * @param {String} type The name of the event\n * @param {Object} target A reference to the target to which the event was\n * dispatched\n */\n constructor(type, target) {\n this.target = target;\n this.type = type;\n }\n}\n\n/**\n * Class representing a message event.\n *\n * @extends Event\n * @private\n */\nclass MessageEvent extends Event {\n /**\n * Create a new `MessageEvent`.\n *\n * @param {(String|Buffer|ArrayBuffer|Buffer[])} data The received data\n * @param {WebSocket} target A reference to the target to which the event was\n * dispatched\n */\n constructor(data, target) {\n super('message', target);\n\n this.data = data;\n }\n}\n\n/**\n * Class representing a close event.\n *\n * @extends Event\n * @private\n */\nclass CloseEvent extends Event {\n /**\n * Create a new `CloseEvent`.\n *\n * @param {Number} code The status code explaining why the connection is being\n * closed\n * @param {String} reason A human-readable string explaining why the\n * connection is closing\n * @param {WebSocket} target A reference to the target to which the event was\n * dispatched\n */\n constructor(code, reason, target) {\n super('close', target);\n\n this.wasClean = target._closeFrameReceived && target._closeFrameSent;\n this.reason = reason;\n this.code = code;\n }\n}\n\n/**\n * Class representing an open event.\n *\n * @extends Event\n * @private\n */\nclass OpenEvent extends Event {\n /**\n * Create a new `OpenEvent`.\n *\n * @param {WebSocket} target A reference to the target to which the event was\n * dispatched\n */\n constructor(target) {\n super('open', target);\n }\n}\n\n/**\n * Class representing an error event.\n *\n * @extends Event\n * @private\n */\nclass ErrorEvent extends Event {\n /**\n * Create a new `ErrorEvent`.\n *\n * @param {Object} error The error that generated this event\n * @param {WebSocket} target A reference to the target to which the event was\n * dispatched\n */\n constructor(error, target) {\n super('error', target);\n\n this.message = error.message;\n this.error = error;\n }\n}\n\n/**\n * This provides methods for emulating the `EventTarget` interface. It's not\n * meant to be used directly.\n *\n * @mixin\n */\nconst EventTarget = {\n /**\n * Register an event listener.\n *\n * @param {String} type A string representing the event type to listen for\n * @param {Function} listener The listener to add\n * @param {Object} [options] An options object specifies characteristics about\n * the event listener\n * @param {Boolean} [options.once=false] A `Boolean`` indicating that the\n * listener should be invoked at most once after being added. If `true`,\n * the listener would be automatically removed when invoked.\n * @public\n */\n addEventListener(type, listener, options) {\n if (typeof listener !== 'function') return;\n\n function onMessage(data) {\n listener.call(this, new MessageEvent(data, this));\n }\n\n function onClose(code, message) {\n listener.call(this, new CloseEvent(code, message, this));\n }\n\n function onError(error) {\n listener.call(this, new ErrorEvent(error, this));\n }\n\n function onOpen() {\n listener.call(this, new OpenEvent(this));\n }\n\n const method = options && options.once ? 'once' : 'on';\n\n if (type === 'message') {\n onMessage._listener = listener;\n this[method](type, onMessage);\n } else if (type === 'close') {\n onClose._listener = listener;\n this[method](type, onClose);\n } else if (type === 'error') {\n onError._listener = listener;\n this[method](type, onError);\n } else if (type === 'open') {\n onOpen._listener = listener;\n this[method](type, onOpen);\n } else {\n this[method](type, listener);\n }\n },\n\n /**\n * Remove an event listener.\n *\n * @param {String} type A string representing the event type to remove\n * @param {Function} listener The listener to remove\n * @public\n */\n removeEventListener(type, listener) {\n const listeners = this.listeners(type);\n\n for (let i = 0; i < listeners.length; i++) {\n if (listeners[i] === listener || listeners[i]._listener === listener) {\n this.removeListener(type, listeners[i]);\n }\n }\n }\n};\n\nmodule.exports = EventTarget;\n","'use strict';\n\n//\n// Allowed token characters:\n//\n// '!', '#', '$', '%', '&', ''', '*', '+', '-',\n// '.', 0-9, A-Z, '^', '_', '`', a-z, '|', '~'\n//\n// tokenChars[32] === 0 // ' '\n// tokenChars[33] === 1 // '!'\n// tokenChars[34] === 0 // '\"'\n// ...\n//\n// prettier-ignore\nconst tokenChars = [\n 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, // 0 - 15\n 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, // 16 - 31\n 0, 1, 0, 1, 1, 1, 1, 1, 0, 0, 1, 1, 0, 1, 1, 0, // 32 - 47\n 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, // 48 - 63\n 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, // 64 - 79\n 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 1, 1, // 80 - 95\n 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, // 96 - 111\n 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 1, 0, 1, 0 // 112 - 127\n];\n\n/**\n * Adds an offer to the map of extension offers or a parameter to the map of\n * parameters.\n *\n * @param {Object} dest The map of extension offers or parameters\n * @param {String} name The extension or parameter name\n * @param {(Object|Boolean|String)} elem The extension parameters or the\n * parameter value\n * @private\n */\nfunction push(dest, name, elem) {\n if (dest[name] === undefined) dest[name] = [elem];\n else dest[name].push(elem);\n}\n\n/**\n * Parses the `Sec-WebSocket-Extensions` header into an object.\n *\n * @param {String} header The field value of the header\n * @return {Object} The parsed object\n * @public\n */\nfunction parse(header) {\n const offers = Object.create(null);\n\n if (header === undefined || header === '') return offers;\n\n let params = Object.create(null);\n let mustUnescape = false;\n let isEscaping = false;\n let inQuotes = false;\n let extensionName;\n let paramName;\n let start = -1;\n let end = -1;\n let i = 0;\n\n for (; i < header.length; i++) {\n const code = header.charCodeAt(i);\n\n if (extensionName === undefined) {\n if (end === -1 && tokenChars[code] === 1) {\n if (start === -1) start = i;\n } else if (code === 0x20 /* ' ' */ || code === 0x09 /* '\\t' */) {\n if (end === -1 && start !== -1) end = i;\n } else if (code === 0x3b /* ';' */ || code === 0x2c /* ',' */) {\n if (start === -1) {\n throw new SyntaxError(`Unexpected character at index ${i}`);\n }\n\n if (end === -1) end = i;\n const name = header.slice(start, end);\n if (code === 0x2c) {\n push(offers, name, params);\n params = Object.create(null);\n } else {\n extensionName = name;\n }\n\n start = end = -1;\n } else {\n throw new SyntaxError(`Unexpected character at index ${i}`);\n }\n } else if (paramName === undefined) {\n if (end === -1 && tokenChars[code] === 1) {\n if (start === -1) start = i;\n } else if (code === 0x20 || code === 0x09) {\n if (end === -1 && start !== -1) end = i;\n } else if (code === 0x3b || code === 0x2c) {\n if (start === -1) {\n throw new SyntaxError(`Unexpected character at index ${i}`);\n }\n\n if (end === -1) end = i;\n push(params, header.slice(start, end), true);\n if (code === 0x2c) {\n push(offers, extensionName, params);\n params = Object.create(null);\n extensionName = undefined;\n }\n\n start = end = -1;\n } else if (code === 0x3d /* '=' */ && start !== -1 && end === -1) {\n paramName = header.slice(start, i);\n start = end = -1;\n } else {\n throw new SyntaxError(`Unexpected character at index ${i}`);\n }\n } else {\n //\n // The value of a quoted-string after unescaping must conform to the\n // token ABNF, so only token characters are valid.\n // Ref: https://tools.ietf.org/html/rfc6455#section-9.1\n //\n if (isEscaping) {\n if (tokenChars[code] !== 1) {\n throw new SyntaxError(`Unexpected character at index ${i}`);\n }\n if (start === -1) start = i;\n else if (!mustUnescape) mustUnescape = true;\n isEscaping = false;\n } else if (inQuotes) {\n if (tokenChars[code] === 1) {\n if (start === -1) start = i;\n } else if (code === 0x22 /* '\"' */ && start !== -1) {\n inQuotes = false;\n end = i;\n } else if (code === 0x5c /* '\\' */) {\n isEscaping = true;\n } else {\n throw new SyntaxError(`Unexpected character at index ${i}`);\n }\n } else if (code === 0x22 && header.charCodeAt(i - 1) === 0x3d) {\n inQuotes = true;\n } else if (end === -1 && tokenChars[code] === 1) {\n if (start === -1) start = i;\n } else if (start !== -1 && (code === 0x20 || code === 0x09)) {\n if (end === -1) end = i;\n } else if (code === 0x3b || code === 0x2c) {\n if (start === -1) {\n throw new SyntaxError(`Unexpected character at index ${i}`);\n }\n\n if (end === -1) end = i;\n let value = header.slice(start, end);\n if (mustUnescape) {\n value = value.replace(/\\\\/g, '');\n mustUnescape = false;\n }\n push(params, paramName, value);\n if (code === 0x2c) {\n push(offers, extensionName, params);\n params = Object.create(null);\n extensionName = undefined;\n }\n\n paramName = undefined;\n start = end = -1;\n } else {\n throw new SyntaxError(`Unexpected character at index ${i}`);\n }\n }\n }\n\n if (start === -1 || inQuotes) {\n throw new SyntaxError('Unexpected end of input');\n }\n\n if (end === -1) end = i;\n const token = header.slice(start, end);\n if (extensionName === undefined) {\n push(offers, token, params);\n } else {\n if (paramName === undefined) {\n push(params, token, true);\n } else if (mustUnescape) {\n push(params, paramName, token.replace(/\\\\/g, ''));\n } else {\n push(params, paramName, token);\n }\n push(offers, extensionName, params);\n }\n\n return offers;\n}\n\n/**\n * Builds the `Sec-WebSocket-Extensions` header field value.\n *\n * @param {Object} extensions The map of extensions and parameters to format\n * @return {String} A string representing the given object\n * @public\n */\nfunction format(extensions) {\n return Object.keys(extensions)\n .map((extension) => {\n let configurations = extensions[extension];\n if (!Array.isArray(configurations)) configurations = [configurations];\n return configurations\n .map((params) => {\n return [extension]\n .concat(\n Object.keys(params).map((k) => {\n let values = params[k];\n if (!Array.isArray(values)) values = [values];\n return values\n .map((v) => (v === true ? k : `${k}=${v}`))\n .join('; ');\n })\n )\n .join('; ');\n })\n .join(', ');\n })\n .join(', ');\n}\n\nmodule.exports = { format, parse };\n","/* eslint no-unused-vars: [\"error\", { \"varsIgnorePattern\": \"^Readable$\" }] */\n\n'use strict';\n\nconst EventEmitter = require('events');\nconst https = require('https');\nconst http = require('http');\nconst net = require('net');\nconst tls = require('tls');\nconst { randomBytes, createHash } = require('crypto');\nconst { Readable } = require('stream');\nconst { URL } = require('url');\n\nconst PerMessageDeflate = require('./permessage-deflate');\nconst Receiver = require('./receiver');\nconst Sender = require('./sender');\nconst {\n BINARY_TYPES,\n EMPTY_BUFFER,\n GUID,\n kStatusCode,\n kWebSocket,\n NOOP\n} = require('./constants');\nconst { addEventListener, removeEventListener } = require('./event-target');\nconst { format, parse } = require('./extension');\nconst { toBuffer } = require('./buffer-util');\n\nconst readyStates = ['CONNECTING', 'OPEN', 'CLOSING', 'CLOSED'];\nconst protocolVersions = [8, 13];\nconst closeTimeout = 30 * 1000;\n\n/**\n * Class representing a WebSocket.\n *\n * @extends EventEmitter\n */\nclass WebSocket extends EventEmitter {\n /**\n * Create a new `WebSocket`.\n *\n * @param {(String|URL)} address The URL to which to connect\n * @param {(String|String[])} [protocols] The subprotocols\n * @param {Object} [options] Connection options\n */\n constructor(address, protocols, options) {\n super();\n\n this._binaryType = BINARY_TYPES[0];\n this._closeCode = 1006;\n this._closeFrameReceived = false;\n this._closeFrameSent = false;\n this._closeMessage = '';\n this._closeTimer = null;\n this._extensions = {};\n this._protocol = '';\n this._readyState = WebSocket.CONNECTING;\n this._receiver = null;\n this._sender = null;\n this._socket = null;\n\n if (address !== null) {\n this._bufferedAmount = 0;\n this._isServer = false;\n this._redirects = 0;\n\n if (Array.isArray(protocols)) {\n protocols = protocols.join(', ');\n } else if (typeof protocols === 'object' && protocols !== null) {\n options = protocols;\n protocols = undefined;\n }\n\n initAsClient(this, address, protocols, options);\n } else {\n this._isServer = true;\n }\n }\n\n /**\n * This deviates from the WHATWG interface since ws doesn't support the\n * required default \"blob\" type (instead we define a custom \"nodebuffer\"\n * type).\n *\n * @type {String}\n */\n get binaryType() {\n return this._binaryType;\n }\n\n set binaryType(type) {\n if (!BINARY_TYPES.includes(type)) return;\n\n this._binaryType = type;\n\n //\n // Allow to change `binaryType` on the fly.\n //\n if (this._receiver) this._receiver._binaryType = type;\n }\n\n /**\n * @type {Number}\n */\n get bufferedAmount() {\n if (!this._socket) return this._bufferedAmount;\n\n return this._socket._writableState.length + this._sender._bufferedBytes;\n }\n\n /**\n * @type {String}\n */\n get extensions() {\n return Object.keys(this._extensions).join();\n }\n\n /**\n * @type {Function}\n */\n /* istanbul ignore next */\n get onclose() {\n return undefined;\n }\n\n /* istanbul ignore next */\n set onclose(listener) {}\n\n /**\n * @type {Function}\n */\n /* istanbul ignore next */\n get onerror() {\n return undefined;\n }\n\n /* istanbul ignore next */\n set onerror(listener) {}\n\n /**\n * @type {Function}\n */\n /* istanbul ignore next */\n get onopen() {\n return undefined;\n }\n\n /* istanbul ignore next */\n set onopen(listener) {}\n\n /**\n * @type {Function}\n */\n /* istanbul ignore next */\n get onmessage() {\n return undefined;\n }\n\n /* istanbul ignore next */\n set onmessage(listener) {}\n\n /**\n * @type {String}\n */\n get protocol() {\n return this._protocol;\n }\n\n /**\n * @type {Number}\n */\n get readyState() {\n return this._readyState;\n }\n\n /**\n * @type {String}\n */\n get url() {\n return this._url;\n }\n\n /**\n * Set up the socket and the internal resources.\n *\n * @param {(net.Socket|tls.Socket)} socket The network socket between the\n * server and client\n * @param {Buffer} head The first packet of the upgraded stream\n * @param {Number} [maxPayload=0] The maximum allowed message size\n * @private\n */\n setSocket(socket, head, maxPayload) {\n const receiver = new Receiver(\n this.binaryType,\n this._extensions,\n this._isServer,\n maxPayload\n );\n\n this._sender = new Sender(socket, this._extensions);\n this._receiver = receiver;\n this._socket = socket;\n\n receiver[kWebSocket] = this;\n socket[kWebSocket] = this;\n\n receiver.on('conclude', receiverOnConclude);\n receiver.on('drain', receiverOnDrain);\n receiver.on('error', receiverOnError);\n receiver.on('message', receiverOnMessage);\n receiver.on('ping', receiverOnPing);\n receiver.on('pong', receiverOnPong);\n\n socket.setTimeout(0);\n socket.setNoDelay();\n\n if (head.length > 0) socket.unshift(head);\n\n socket.on('close', socketOnClose);\n socket.on('data', socketOnData);\n socket.on('end', socketOnEnd);\n socket.on('error', socketOnError);\n\n this._readyState = WebSocket.OPEN;\n this.emit('open');\n }\n\n /**\n * Emit the `'close'` event.\n *\n * @private\n */\n emitClose() {\n if (!this._socket) {\n this._readyState = WebSocket.CLOSED;\n this.emit('close', this._closeCode, this._closeMessage);\n return;\n }\n\n if (this._extensions[PerMessageDeflate.extensionName]) {\n this._extensions[PerMessageDeflate.extensionName].cleanup();\n }\n\n this._receiver.removeAllListeners();\n this._readyState = WebSocket.CLOSED;\n this.emit('close', this._closeCode, this._closeMessage);\n }\n\n /**\n * Start a closing handshake.\n *\n * +----------+ +-----------+ +----------+\n * - - -|ws.close()|-->|close frame|-->|ws.close()|- - -\n * | +----------+ +-----------+ +----------+ |\n * +----------+ +-----------+ |\n * CLOSING |ws.close()|<--|close frame|<--+-----+ CLOSING\n * +----------+ +-----------+ |\n * | | | +---+ |\n * +------------------------+-->|fin| - - - -\n * | +---+ | +---+\n * - - - - -|fin|<---------------------+\n * +---+\n *\n * @param {Number} [code] Status code explaining why the connection is closing\n * @param {String} [data] A string explaining why the connection is closing\n * @public\n */\n close(code, data) {\n if (this.readyState === WebSocket.CLOSED) return;\n if (this.readyState === WebSocket.CONNECTING) {\n const msg = 'WebSocket was closed before the connection was established';\n return abortHandshake(this, this._req, msg);\n }\n\n if (this.readyState === WebSocket.CLOSING) {\n if (\n this._closeFrameSent &&\n (this._closeFrameReceived || this._receiver._writableState.errorEmitted)\n ) {\n this._socket.end();\n }\n\n return;\n }\n\n this._readyState = WebSocket.CLOSING;\n this._sender.close(code, data, !this._isServer, (err) => {\n //\n // This error is handled by the `'error'` listener on the socket. We only\n // want to know if the close frame has been sent here.\n //\n if (err) return;\n\n this._closeFrameSent = true;\n\n if (\n this._closeFrameReceived ||\n this._receiver._writableState.errorEmitted\n ) {\n this._socket.end();\n }\n });\n\n //\n // Specify a timeout for the closing handshake to complete.\n //\n this._closeTimer = setTimeout(\n this._socket.destroy.bind(this._socket),\n closeTimeout\n );\n }\n\n /**\n * Send a ping.\n *\n * @param {*} [data] The data to send\n * @param {Boolean} [mask] Indicates whether or not to mask `data`\n * @param {Function} [cb] Callback which is executed when the ping is sent\n * @public\n */\n ping(data, mask, cb) {\n if (this.readyState === WebSocket.CONNECTING) {\n throw new Error('WebSocket is not open: readyState 0 (CONNECTING)');\n }\n\n if (typeof data === 'function') {\n cb = data;\n data = mask = undefined;\n } else if (typeof mask === 'function') {\n cb = mask;\n mask = undefined;\n }\n\n if (typeof data === 'number') data = data.toString();\n\n if (this.readyState !== WebSocket.OPEN) {\n sendAfterClose(this, data, cb);\n return;\n }\n\n if (mask === undefined) mask = !this._isServer;\n this._sender.ping(data || EMPTY_BUFFER, mask, cb);\n }\n\n /**\n * Send a pong.\n *\n * @param {*} [data] The data to send\n * @param {Boolean} [mask] Indicates whether or not to mask `data`\n * @param {Function} [cb] Callback which is executed when the pong is sent\n * @public\n */\n pong(data, mask, cb) {\n if (this.readyState === WebSocket.CONNECTING) {\n throw new Error('WebSocket is not open: readyState 0 (CONNECTING)');\n }\n\n if (typeof data === 'function') {\n cb = data;\n data = mask = undefined;\n } else if (typeof mask === 'function') {\n cb = mask;\n mask = undefined;\n }\n\n if (typeof data === 'number') data = data.toString();\n\n if (this.readyState !== WebSocket.OPEN) {\n sendAfterClose(this, data, cb);\n return;\n }\n\n if (mask === undefined) mask = !this._isServer;\n this._sender.pong(data || EMPTY_BUFFER, mask, cb);\n }\n\n /**\n * Send a data message.\n *\n * @param {*} data The message to send\n * @param {Object} [options] Options object\n * @param {Boolean} [options.compress] Specifies whether or not to compress\n * `data`\n * @param {Boolean} [options.binary] Specifies whether `data` is binary or\n * text\n * @param {Boolean} [options.fin=true] Specifies whether the fragment is the\n * last one\n * @param {Boolean} [options.mask] Specifies whether or not to mask `data`\n * @param {Function} [cb] Callback which is executed when data is written out\n * @public\n */\n send(data, options, cb) {\n if (this.readyState === WebSocket.CONNECTING) {\n throw new Error('WebSocket is not open: readyState 0 (CONNECTING)');\n }\n\n if (typeof options === 'function') {\n cb = options;\n options = {};\n }\n\n if (typeof data === 'number') data = data.toString();\n\n if (this.readyState !== WebSocket.OPEN) {\n sendAfterClose(this, data, cb);\n return;\n }\n\n const opts = {\n binary: typeof data !== 'string',\n mask: !this._isServer,\n compress: true,\n fin: true,\n ...options\n };\n\n if (!this._extensions[PerMessageDeflate.extensionName]) {\n opts.compress = false;\n }\n\n this._sender.send(data || EMPTY_BUFFER, opts, cb);\n }\n\n /**\n * Forcibly close the connection.\n *\n * @public\n */\n terminate() {\n if (this.readyState === WebSocket.CLOSED) return;\n if (this.readyState === WebSocket.CONNECTING) {\n const msg = 'WebSocket was closed before the connection was established';\n return abortHandshake(this, this._req, msg);\n }\n\n if (this._socket) {\n this._readyState = WebSocket.CLOSING;\n this._socket.destroy();\n }\n }\n}\n\n/**\n * @constant {Number} CONNECTING\n * @memberof WebSocket\n */\nObject.defineProperty(WebSocket, 'CONNECTING', {\n enumerable: true,\n value: readyStates.indexOf('CONNECTING')\n});\n\n/**\n * @constant {Number} CONNECTING\n * @memberof WebSocket.prototype\n */\nObject.defineProperty(WebSocket.prototype, 'CONNECTING', {\n enumerable: true,\n value: readyStates.indexOf('CONNECTING')\n});\n\n/**\n * @constant {Number} OPEN\n * @memberof WebSocket\n */\nObject.defineProperty(WebSocket, 'OPEN', {\n enumerable: true,\n value: readyStates.indexOf('OPEN')\n});\n\n/**\n * @constant {Number} OPEN\n * @memberof WebSocket.prototype\n */\nObject.defineProperty(WebSocket.prototype, 'OPEN', {\n enumerable: true,\n value: readyStates.indexOf('OPEN')\n});\n\n/**\n * @constant {Number} CLOSING\n * @memberof WebSocket\n */\nObject.defineProperty(WebSocket, 'CLOSING', {\n enumerable: true,\n value: readyStates.indexOf('CLOSING')\n});\n\n/**\n * @constant {Number} CLOSING\n * @memberof WebSocket.prototype\n */\nObject.defineProperty(WebSocket.prototype, 'CLOSING', {\n enumerable: true,\n value: readyStates.indexOf('CLOSING')\n});\n\n/**\n * @constant {Number} CLOSED\n * @memberof WebSocket\n */\nObject.defineProperty(WebSocket, 'CLOSED', {\n enumerable: true,\n value: readyStates.indexOf('CLOSED')\n});\n\n/**\n * @constant {Number} CLOSED\n * @memberof WebSocket.prototype\n */\nObject.defineProperty(WebSocket.prototype, 'CLOSED', {\n enumerable: true,\n value: readyStates.indexOf('CLOSED')\n});\n\n[\n 'binaryType',\n 'bufferedAmount',\n 'extensions',\n 'protocol',\n 'readyState',\n 'url'\n].forEach((property) => {\n Object.defineProperty(WebSocket.prototype, property, { enumerable: true });\n});\n\n//\n// Add the `onopen`, `onerror`, `onclose`, and `onmessage` attributes.\n// See https://html.spec.whatwg.org/multipage/comms.html#the-websocket-interface\n//\n['open', 'error', 'close', 'message'].forEach((method) => {\n Object.defineProperty(WebSocket.prototype, `on${method}`, {\n enumerable: true,\n get() {\n const listeners = this.listeners(method);\n for (let i = 0; i < listeners.length; i++) {\n if (listeners[i]._listener) return listeners[i]._listener;\n }\n\n return undefined;\n },\n set(listener) {\n const listeners = this.listeners(method);\n for (let i = 0; i < listeners.length; i++) {\n //\n // Remove only the listeners added via `addEventListener`.\n //\n if (listeners[i]._listener) this.removeListener(method, listeners[i]);\n }\n this.addEventListener(method, listener);\n }\n });\n});\n\nWebSocket.prototype.addEventListener = addEventListener;\nWebSocket.prototype.removeEventListener = removeEventListener;\n\nmodule.exports = WebSocket;\n\n/**\n * Initialize a WebSocket client.\n *\n * @param {WebSocket} websocket The client to initialize\n * @param {(String|URL)} address The URL to which to connect\n * @param {String} [protocols] The subprotocols\n * @param {Object} [options] Connection options\n * @param {(Boolean|Object)} [options.perMessageDeflate=true] Enable/disable\n * permessage-deflate\n * @param {Number} [options.handshakeTimeout] Timeout in milliseconds for the\n * handshake request\n * @param {Number} [options.protocolVersion=13] Value of the\n * `Sec-WebSocket-Version` header\n * @param {String} [options.origin] Value of the `Origin` or\n * `Sec-WebSocket-Origin` header\n * @param {Number} [options.maxPayload=104857600] The maximum allowed message\n * size\n * @param {Boolean} [options.followRedirects=false] Whether or not to follow\n * redirects\n * @param {Number} [options.maxRedirects=10] The maximum number of redirects\n * allowed\n * @private\n */\nfunction initAsClient(websocket, address, protocols, options) {\n const opts = {\n protocolVersion: protocolVersions[1],\n maxPayload: 100 * 1024 * 1024,\n perMessageDeflate: true,\n followRedirects: false,\n maxRedirects: 10,\n ...options,\n createConnection: undefined,\n socketPath: undefined,\n hostname: undefined,\n protocol: undefined,\n timeout: undefined,\n method: undefined,\n host: undefined,\n path: undefined,\n port: undefined\n };\n\n if (!protocolVersions.includes(opts.protocolVersion)) {\n throw new RangeError(\n `Unsupported protocol version: ${opts.protocolVersion} ` +\n `(supported versions: ${protocolVersions.join(', ')})`\n );\n }\n\n let parsedUrl;\n\n if (address instanceof URL) {\n parsedUrl = address;\n websocket._url = address.href;\n } else {\n parsedUrl = new URL(address);\n websocket._url = address;\n }\n\n const isUnixSocket = parsedUrl.protocol === 'ws+unix:';\n\n if (!parsedUrl.host && (!isUnixSocket || !parsedUrl.pathname)) {\n const err = new Error(`Invalid URL: ${websocket.url}`);\n\n if (websocket._redirects === 0) {\n throw err;\n } else {\n emitErrorAndClose(websocket, err);\n return;\n }\n }\n\n const isSecure =\n parsedUrl.protocol === 'wss:' || parsedUrl.protocol === 'https:';\n const defaultPort = isSecure ? 443 : 80;\n const key = randomBytes(16).toString('base64');\n const get = isSecure ? https.get : http.get;\n let perMessageDeflate;\n\n opts.createConnection = isSecure ? tlsConnect : netConnect;\n opts.defaultPort = opts.defaultPort || defaultPort;\n opts.port = parsedUrl.port || defaultPort;\n opts.host = parsedUrl.hostname.startsWith('[')\n ? parsedUrl.hostname.slice(1, -1)\n : parsedUrl.hostname;\n opts.headers = {\n 'Sec-WebSocket-Version': opts.protocolVersion,\n 'Sec-WebSocket-Key': key,\n Connection: 'Upgrade',\n Upgrade: 'websocket',\n ...opts.headers\n };\n opts.path = parsedUrl.pathname + parsedUrl.search;\n opts.timeout = opts.handshakeTimeout;\n\n if (opts.perMessageDeflate) {\n perMessageDeflate = new PerMessageDeflate(\n opts.perMessageDeflate !== true ? opts.perMessageDeflate : {},\n false,\n opts.maxPayload\n );\n opts.headers['Sec-WebSocket-Extensions'] = format({\n [PerMessageDeflate.extensionName]: perMessageDeflate.offer()\n });\n }\n if (protocols) {\n opts.headers['Sec-WebSocket-Protocol'] = protocols;\n }\n if (opts.origin) {\n if (opts.protocolVersion < 13) {\n opts.headers['Sec-WebSocket-Origin'] = opts.origin;\n } else {\n opts.headers.Origin = opts.origin;\n }\n }\n if (parsedUrl.username || parsedUrl.password) {\n opts.auth = `${parsedUrl.username}:${parsedUrl.password}`;\n }\n\n if (isUnixSocket) {\n const parts = opts.path.split(':');\n\n opts.socketPath = parts[0];\n opts.path = parts[1];\n }\n\n if (opts.followRedirects) {\n if (websocket._redirects === 0) {\n websocket._originalUnixSocket = isUnixSocket;\n websocket._originalSecure = isSecure;\n websocket._originalHostOrSocketPath = isUnixSocket\n ? opts.socketPath\n : parsedUrl.host;\n\n const headers = options && options.headers;\n\n //\n // Shallow copy the user provided options so that headers can be changed\n // without mutating the original object.\n //\n options = { ...options, headers: {} };\n\n if (headers) {\n for (const [key, value] of Object.entries(headers)) {\n options.headers[key.toLowerCase()] = value;\n }\n }\n } else {\n const isSameHost = isUnixSocket\n ? websocket._originalUnixSocket\n ? opts.socketPath === websocket._originalHostOrSocketPath\n : false\n : websocket._originalUnixSocket\n ? false\n : parsedUrl.host === websocket._originalHostOrSocketPath;\n\n if (!isSameHost || (websocket._originalSecure && !isSecure)) {\n //\n // Match curl 7.77.0 behavior and drop the following headers. These\n // headers are also dropped when following a redirect to a subdomain.\n //\n delete opts.headers.authorization;\n delete opts.headers.cookie;\n\n if (!isSameHost) delete opts.headers.host;\n\n opts.auth = undefined;\n }\n }\n\n //\n // Match curl 7.77.0 behavior and make the first `Authorization` header win.\n // If the `Authorization` header is set, then there is nothing to do as it\n // will take precedence.\n //\n if (opts.auth && !options.headers.authorization) {\n options.headers.authorization =\n 'Basic ' + Buffer.from(opts.auth).toString('base64');\n }\n }\n\n let req = (websocket._req = get(opts));\n\n if (opts.timeout) {\n req.on('timeout', () => {\n abortHandshake(websocket, req, 'Opening handshake has timed out');\n });\n }\n\n req.on('error', (err) => {\n if (req === null || req.aborted) return;\n\n req = websocket._req = null;\n emitErrorAndClose(websocket, err);\n });\n\n req.on('response', (res) => {\n const location = res.headers.location;\n const statusCode = res.statusCode;\n\n if (\n location &&\n opts.followRedirects &&\n statusCode >= 300 &&\n statusCode < 400\n ) {\n if (++websocket._redirects > opts.maxRedirects) {\n abortHandshake(websocket, req, 'Maximum redirects exceeded');\n return;\n }\n\n req.abort();\n\n let addr;\n\n try {\n addr = new URL(location, address);\n } catch (err) {\n emitErrorAndClose(websocket, err);\n return;\n }\n\n initAsClient(websocket, addr, protocols, options);\n } else if (!websocket.emit('unexpected-response', req, res)) {\n abortHandshake(\n websocket,\n req,\n `Unexpected server response: ${res.statusCode}`\n );\n }\n });\n\n req.on('upgrade', (res, socket, head) => {\n websocket.emit('upgrade', res);\n\n //\n // The user may have closed the connection from a listener of the `upgrade`\n // event.\n //\n if (websocket.readyState !== WebSocket.CONNECTING) return;\n\n req = websocket._req = null;\n\n const upgrade = res.headers.upgrade;\n\n if (upgrade === undefined || upgrade.toLowerCase() !== 'websocket') {\n abortHandshake(websocket, socket, 'Invalid Upgrade header');\n return;\n }\n\n const digest = createHash('sha1')\n .update(key + GUID)\n .digest('base64');\n\n if (res.headers['sec-websocket-accept'] !== digest) {\n abortHandshake(websocket, socket, 'Invalid Sec-WebSocket-Accept header');\n return;\n }\n\n const serverProt = res.headers['sec-websocket-protocol'];\n const protList = (protocols || '').split(/, */);\n let protError;\n\n if (!protocols && serverProt) {\n protError = 'Server sent a subprotocol but none was requested';\n } else if (protocols && !serverProt) {\n protError = 'Server sent no subprotocol';\n } else if (serverProt && !protList.includes(serverProt)) {\n protError = 'Server sent an invalid subprotocol';\n }\n\n if (protError) {\n abortHandshake(websocket, socket, protError);\n return;\n }\n\n if (serverProt) websocket._protocol = serverProt;\n\n const secWebSocketExtensions = res.headers['sec-websocket-extensions'];\n\n if (secWebSocketExtensions !== undefined) {\n if (!perMessageDeflate) {\n const message =\n 'Server sent a Sec-WebSocket-Extensions header but no extension ' +\n 'was requested';\n abortHandshake(websocket, socket, message);\n return;\n }\n\n let extensions;\n\n try {\n extensions = parse(secWebSocketExtensions);\n } catch (err) {\n const message = 'Invalid Sec-WebSocket-Extensions header';\n abortHandshake(websocket, socket, message);\n return;\n }\n\n const extensionNames = Object.keys(extensions);\n\n if (extensionNames.length) {\n if (\n extensionNames.length !== 1 ||\n extensionNames[0] !== PerMessageDeflate.extensionName\n ) {\n const message =\n 'Server indicated an extension that was not requested';\n abortHandshake(websocket, socket, message);\n return;\n }\n\n try {\n perMessageDeflate.accept(extensions[PerMessageDeflate.extensionName]);\n } catch (err) {\n const message = 'Invalid Sec-WebSocket-Extensions header';\n abortHandshake(websocket, socket, message);\n return;\n }\n\n websocket._extensions[PerMessageDeflate.extensionName] =\n perMessageDeflate;\n }\n }\n\n websocket.setSocket(socket, head, opts.maxPayload);\n });\n}\n\n/**\n * Emit the `'error'` and `'close'` event.\n *\n * @param {WebSocket} websocket The WebSocket instance\n * @param {Error} The error to emit\n * @private\n */\nfunction emitErrorAndClose(websocket, err) {\n websocket._readyState = WebSocket.CLOSING;\n websocket.emit('error', err);\n websocket.emitClose();\n}\n\n/**\n * Create a `net.Socket` and initiate a connection.\n *\n * @param {Object} options Connection options\n * @return {net.Socket} The newly created socket used to start the connection\n * @private\n */\nfunction netConnect(options) {\n options.path = options.socketPath;\n return net.connect(options);\n}\n\n/**\n * Create a `tls.TLSSocket` and initiate a connection.\n *\n * @param {Object} options Connection options\n * @return {tls.TLSSocket} The newly created socket used to start the connection\n * @private\n */\nfunction tlsConnect(options) {\n options.path = undefined;\n\n if (!options.servername && options.servername !== '') {\n options.servername = net.isIP(options.host) ? '' : options.host;\n }\n\n return tls.connect(options);\n}\n\n/**\n * Abort the handshake and emit an error.\n *\n * @param {WebSocket} websocket The WebSocket instance\n * @param {(http.ClientRequest|net.Socket|tls.Socket)} stream The request to\n * abort or the socket to destroy\n * @param {String} message The error message\n * @private\n */\nfunction abortHandshake(websocket, stream, message) {\n websocket._readyState = WebSocket.CLOSING;\n\n const err = new Error(message);\n Error.captureStackTrace(err, abortHandshake);\n\n if (stream.setHeader) {\n stream.abort();\n\n if (stream.socket && !stream.socket.destroyed) {\n //\n // On Node.js >= 14.3.0 `request.abort()` does not destroy the socket if\n // called after the request completed. See\n // https://github.com/websockets/ws/issues/1869.\n //\n stream.socket.destroy();\n }\n\n stream.once('abort', websocket.emitClose.bind(websocket));\n websocket.emit('error', err);\n } else {\n stream.destroy(err);\n stream.once('error', websocket.emit.bind(websocket, 'error'));\n stream.once('close', websocket.emitClose.bind(websocket));\n }\n}\n\n/**\n * Handle cases where the `ping()`, `pong()`, or `send()` methods are called\n * when the `readyState` attribute is `CLOSING` or `CLOSED`.\n *\n * @param {WebSocket} websocket The WebSocket instance\n * @param {*} [data] The data to send\n * @param {Function} [cb] Callback\n * @private\n */\nfunction sendAfterClose(websocket, data, cb) {\n if (data) {\n const length = toBuffer(data).length;\n\n //\n // The `_bufferedAmount` property is used only when the peer is a client and\n // the opening handshake fails. Under these circumstances, in fact, the\n // `setSocket()` method is not called, so the `_socket` and `_sender`\n // properties are set to `null`.\n //\n if (websocket._socket) websocket._sender._bufferedBytes += length;\n else websocket._bufferedAmount += length;\n }\n\n if (cb) {\n const err = new Error(\n `WebSocket is not open: readyState ${websocket.readyState} ` +\n `(${readyStates[websocket.readyState]})`\n );\n cb(err);\n }\n}\n\n/**\n * The listener of the `Receiver` `'conclude'` event.\n *\n * @param {Number} code The status code\n * @param {String} reason The reason for closing\n * @private\n */\nfunction receiverOnConclude(code, reason) {\n const websocket = this[kWebSocket];\n\n websocket._closeFrameReceived = true;\n websocket._closeMessage = reason;\n websocket._closeCode = code;\n\n if (websocket._socket[kWebSocket] === undefined) return;\n\n websocket._socket.removeListener('data', socketOnData);\n process.nextTick(resume, websocket._socket);\n\n if (code === 1005) websocket.close();\n else websocket.close(code, reason);\n}\n\n/**\n * The listener of the `Receiver` `'drain'` event.\n *\n * @private\n */\nfunction receiverOnDrain() {\n this[kWebSocket]._socket.resume();\n}\n\n/**\n * The listener of the `Receiver` `'error'` event.\n *\n * @param {(RangeError|Error)} err The emitted error\n * @private\n */\nfunction receiverOnError(err) {\n const websocket = this[kWebSocket];\n\n if (websocket._socket[kWebSocket] !== undefined) {\n websocket._socket.removeListener('data', socketOnData);\n\n //\n // On Node.js < 14.0.0 the `'error'` event is emitted synchronously. See\n // https://github.com/websockets/ws/issues/1940.\n //\n process.nextTick(resume, websocket._socket);\n\n websocket.close(err[kStatusCode]);\n }\n\n websocket.emit('error', err);\n}\n\n/**\n * The listener of the `Receiver` `'finish'` event.\n *\n * @private\n */\nfunction receiverOnFinish() {\n this[kWebSocket].emitClose();\n}\n\n/**\n * The listener of the `Receiver` `'message'` event.\n *\n * @param {(String|Buffer|ArrayBuffer|Buffer[])} data The message\n * @private\n */\nfunction receiverOnMessage(data) {\n this[kWebSocket].emit('message', data);\n}\n\n/**\n * The listener of the `Receiver` `'ping'` event.\n *\n * @param {Buffer} data The data included in the ping frame\n * @private\n */\nfunction receiverOnPing(data) {\n const websocket = this[kWebSocket];\n\n websocket.pong(data, !websocket._isServer, NOOP);\n websocket.emit('ping', data);\n}\n\n/**\n * The listener of the `Receiver` `'pong'` event.\n *\n * @param {Buffer} data The data included in the pong frame\n * @private\n */\nfunction receiverOnPong(data) {\n this[kWebSocket].emit('pong', data);\n}\n\n/**\n * Resume a readable stream\n *\n * @param {Readable} stream The readable stream\n * @private\n */\nfunction resume(stream) {\n stream.resume();\n}\n\n/**\n * The listener of the `net.Socket` `'close'` event.\n *\n * @private\n */\nfunction socketOnClose() {\n const websocket = this[kWebSocket];\n\n this.removeListener('close', socketOnClose);\n this.removeListener('data', socketOnData);\n this.removeListener('end', socketOnEnd);\n\n websocket._readyState = WebSocket.CLOSING;\n\n let chunk;\n\n //\n // The close frame might not have been received or the `'end'` event emitted,\n // for example, if the socket was destroyed due to an error. Ensure that the\n // `receiver` stream is closed after writing any remaining buffered data to\n // it. If the readable side of the socket is in flowing mode then there is no\n // buffered data as everything has been already written and `readable.read()`\n // will return `null`. If instead, the socket is paused, any possible buffered\n // data will be read as a single chunk.\n //\n if (\n !this._readableState.endEmitted &&\n !websocket._closeFrameReceived &&\n !websocket._receiver._writableState.errorEmitted &&\n (chunk = websocket._socket.read()) !== null\n ) {\n websocket._receiver.write(chunk);\n }\n\n websocket._receiver.end();\n\n this[kWebSocket] = undefined;\n\n clearTimeout(websocket._closeTimer);\n\n if (\n websocket._receiver._writableState.finished ||\n websocket._receiver._writableState.errorEmitted\n ) {\n websocket.emitClose();\n } else {\n websocket._receiver.on('error', receiverOnFinish);\n websocket._receiver.on('finish', receiverOnFinish);\n }\n}\n\n/**\n * The listener of the `net.Socket` `'data'` event.\n *\n * @param {Buffer} chunk A chunk of data\n * @private\n */\nfunction socketOnData(chunk) {\n if (!this[kWebSocket]._receiver.write(chunk)) {\n this.pause();\n }\n}\n\n/**\n * The listener of the `net.Socket` `'end'` event.\n *\n * @private\n */\nfunction socketOnEnd() {\n const websocket = this[kWebSocket];\n\n websocket._readyState = WebSocket.CLOSING;\n websocket._receiver.end();\n this.end();\n}\n\n/**\n * The listener of the `net.Socket` `'error'` event.\n *\n * @private\n */\nfunction socketOnError() {\n const websocket = this[kWebSocket];\n\n this.removeListener('error', socketOnError);\n this.on('error', NOOP);\n\n if (websocket) {\n websocket._readyState = WebSocket.CLOSING;\n this.destroy();\n }\n}\n","'use strict';\n\nconst { Duplex } = require('stream');\n\n/**\n * Emits the `'close'` event on a stream.\n *\n * @param {Duplex} stream The stream.\n * @private\n */\nfunction emitClose(stream) {\n stream.emit('close');\n}\n\n/**\n * The listener of the `'end'` event.\n *\n * @private\n */\nfunction duplexOnEnd() {\n if (!this.destroyed && this._writableState.finished) {\n this.destroy();\n }\n}\n\n/**\n * The listener of the `'error'` event.\n *\n * @param {Error} err The error\n * @private\n */\nfunction duplexOnError(err) {\n this.removeListener('error', duplexOnError);\n this.destroy();\n if (this.listenerCount('error') === 0) {\n // Do not suppress the throwing behavior.\n this.emit('error', err);\n }\n}\n\n/**\n * Wraps a `WebSocket` in a duplex stream.\n *\n * @param {WebSocket} ws The `WebSocket` to wrap\n * @param {Object} [options] The options for the `Duplex` constructor\n * @return {Duplex} The duplex stream\n * @public\n */\nfunction createWebSocketStream(ws, options) {\n let resumeOnReceiverDrain = true;\n let terminateOnDestroy = true;\n\n function receiverOnDrain() {\n if (resumeOnReceiverDrain) ws._socket.resume();\n }\n\n if (ws.readyState === ws.CONNECTING) {\n ws.once('open', function open() {\n ws._receiver.removeAllListeners('drain');\n ws._receiver.on('drain', receiverOnDrain);\n });\n } else {\n ws._receiver.removeAllListeners('drain');\n ws._receiver.on('drain', receiverOnDrain);\n }\n\n const duplex = new Duplex({\n ...options,\n autoDestroy: false,\n emitClose: false,\n objectMode: false,\n writableObjectMode: false\n });\n\n ws.on('message', function message(msg) {\n if (!duplex.push(msg)) {\n resumeOnReceiverDrain = false;\n ws._socket.pause();\n }\n });\n\n ws.once('error', function error(err) {\n if (duplex.destroyed) return;\n\n // Prevent `ws.terminate()` from being called by `duplex._destroy()`.\n //\n // - If the `'error'` event is emitted before the `'open'` event, then\n // `ws.terminate()` is a noop as no socket is assigned.\n // - Otherwise, the error is re-emitted by the listener of the `'error'`\n // event of the `Receiver` object. The listener already closes the\n // connection by calling `ws.close()`. This allows a close frame to be\n // sent to the other peer. If `ws.terminate()` is called right after this,\n // then the close frame might not be sent.\n terminateOnDestroy = false;\n duplex.destroy(err);\n });\n\n ws.once('close', function close() {\n if (duplex.destroyed) return;\n\n duplex.push(null);\n });\n\n duplex._destroy = function (err, callback) {\n if (ws.readyState === ws.CLOSED) {\n callback(err);\n process.nextTick(emitClose, duplex);\n return;\n }\n\n let called = false;\n\n ws.once('error', function error(err) {\n called = true;\n callback(err);\n });\n\n ws.once('close', function close() {\n if (!called) callback(err);\n process.nextTick(emitClose, duplex);\n });\n\n if (terminateOnDestroy) ws.terminate();\n };\n\n duplex._final = function (callback) {\n if (ws.readyState === ws.CONNECTING) {\n ws.once('open', function open() {\n duplex._final(callback);\n });\n return;\n }\n\n // If the value of the `_socket` property is `null` it means that `ws` is a\n // client websocket and the handshake failed. In fact, when this happens, a\n // socket is never assigned to the websocket. Wait for the `'error'` event\n // that will be emitted by the websocket.\n if (ws._socket === null) return;\n\n if (ws._socket._writableState.finished) {\n callback();\n if (duplex._readableState.endEmitted) duplex.destroy();\n } else {\n ws._socket.once('finish', function finish() {\n // `duplex` is not destroyed here because the `'end'` event will be\n // emitted on `duplex` after this `'finish'` event. The EOF signaling\n // `null` chunk is, in fact, pushed when the websocket emits `'close'`.\n callback();\n });\n ws.close();\n }\n };\n\n duplex._read = function () {\n if (\n (ws.readyState === ws.OPEN || ws.readyState === ws.CLOSING) &&\n !resumeOnReceiverDrain\n ) {\n resumeOnReceiverDrain = true;\n if (!ws._receiver._writableState.needDrain) ws._socket.resume();\n }\n };\n\n duplex._write = function (chunk, encoding, callback) {\n if (ws.readyState === ws.CONNECTING) {\n ws.once('open', function open() {\n duplex._write(chunk, encoding, callback);\n });\n return;\n }\n\n ws.send(chunk, callback);\n };\n\n duplex.on('end', duplexOnEnd);\n duplex.on('error', duplexOnError);\n return duplex;\n}\n\nmodule.exports = createWebSocketStream;\n","/* eslint no-unused-vars: [\"error\", { \"varsIgnorePattern\": \"^net|tls|https$\" }] */\n\n'use strict';\n\nconst EventEmitter = require('events');\nconst http = require('http');\nconst https = require('https');\nconst net = require('net');\nconst tls = require('tls');\nconst { createHash } = require('crypto');\n\nconst PerMessageDeflate = require('./permessage-deflate');\nconst WebSocket = require('./websocket');\nconst { format, parse } = require('./extension');\nconst { GUID, kWebSocket } = require('./constants');\n\nconst keyRegex = /^[+/0-9A-Za-z]{22}==$/;\n\nconst RUNNING = 0;\nconst CLOSING = 1;\nconst CLOSED = 2;\n\n/**\n * Class representing a WebSocket server.\n *\n * @extends EventEmitter\n */\nclass WebSocketServer extends EventEmitter {\n /**\n * Create a `WebSocketServer` instance.\n *\n * @param {Object} options Configuration options\n * @param {Number} [options.backlog=511] The maximum length of the queue of\n * pending connections\n * @param {Boolean} [options.clientTracking=true] Specifies whether or not to\n * track clients\n * @param {Function} [options.handleProtocols] A hook to handle protocols\n * @param {String} [options.host] The hostname where to bind the server\n * @param {Number} [options.maxPayload=104857600] The maximum allowed message\n * size\n * @param {Boolean} [options.noServer=false] Enable no server mode\n * @param {String} [options.path] Accept only connections matching this path\n * @param {(Boolean|Object)} [options.perMessageDeflate=false] Enable/disable\n * permessage-deflate\n * @param {Number} [options.port] The port where to bind the server\n * @param {(http.Server|https.Server)} [options.server] A pre-created HTTP/S\n * server to use\n * @param {Function} [options.verifyClient] A hook to reject connections\n * @param {Function} [callback] A listener for the `listening` event\n */\n constructor(options, callback) {\n super();\n\n options = {\n maxPayload: 100 * 1024 * 1024,\n perMessageDeflate: false,\n handleProtocols: null,\n clientTracking: true,\n verifyClient: null,\n noServer: false,\n backlog: null, // use default (511 as implemented in net.js)\n server: null,\n host: null,\n path: null,\n port: null,\n ...options\n };\n\n if (\n (options.port == null && !options.server && !options.noServer) ||\n (options.port != null && (options.server || options.noServer)) ||\n (options.server && options.noServer)\n ) {\n throw new TypeError(\n 'One and only one of the \"port\", \"server\", or \"noServer\" options ' +\n 'must be specified'\n );\n }\n\n if (options.port != null) {\n this._server = http.createServer((req, res) => {\n const body = http.STATUS_CODES[426];\n\n res.writeHead(426, {\n 'Content-Length': body.length,\n 'Content-Type': 'text/plain'\n });\n res.end(body);\n });\n this._server.listen(\n options.port,\n options.host,\n options.backlog,\n callback\n );\n } else if (options.server) {\n this._server = options.server;\n }\n\n if (this._server) {\n const emitConnection = this.emit.bind(this, 'connection');\n\n this._removeListeners = addListeners(this._server, {\n listening: this.emit.bind(this, 'listening'),\n error: this.emit.bind(this, 'error'),\n upgrade: (req, socket, head) => {\n this.handleUpgrade(req, socket, head, emitConnection);\n }\n });\n }\n\n if (options.perMessageDeflate === true) options.perMessageDeflate = {};\n if (options.clientTracking) this.clients = new Set();\n this.options = options;\n this._state = RUNNING;\n }\n\n /**\n * Returns the bound address, the address family name, and port of the server\n * as reported by the operating system if listening on an IP socket.\n * If the server is listening on a pipe or UNIX domain socket, the name is\n * returned as a string.\n *\n * @return {(Object|String|null)} The address of the server\n * @public\n */\n address() {\n if (this.options.noServer) {\n throw new Error('The server is operating in \"noServer\" mode');\n }\n\n if (!this._server) return null;\n return this._server.address();\n }\n\n /**\n * Close the server.\n *\n * @param {Function} [cb] Callback\n * @public\n */\n close(cb) {\n if (cb) this.once('close', cb);\n\n if (this._state === CLOSED) {\n process.nextTick(emitClose, this);\n return;\n }\n\n if (this._state === CLOSING) return;\n this._state = CLOSING;\n\n //\n // Terminate all associated clients.\n //\n if (this.clients) {\n for (const client of this.clients) client.terminate();\n }\n\n const server = this._server;\n\n if (server) {\n this._removeListeners();\n this._removeListeners = this._server = null;\n\n //\n // Close the http server if it was internally created.\n //\n if (this.options.port != null) {\n server.close(emitClose.bind(undefined, this));\n return;\n }\n }\n\n process.nextTick(emitClose, this);\n }\n\n /**\n * See if a given request should be handled by this server instance.\n *\n * @param {http.IncomingMessage} req Request object to inspect\n * @return {Boolean} `true` if the request is valid, else `false`\n * @public\n */\n shouldHandle(req) {\n if (this.options.path) {\n const index = req.url.indexOf('?');\n const pathname = index !== -1 ? req.url.slice(0, index) : req.url;\n\n if (pathname !== this.options.path) return false;\n }\n\n return true;\n }\n\n /**\n * Handle a HTTP Upgrade request.\n *\n * @param {http.IncomingMessage} req The request object\n * @param {(net.Socket|tls.Socket)} socket The network socket between the\n * server and client\n * @param {Buffer} head The first packet of the upgraded stream\n * @param {Function} cb Callback\n * @public\n */\n handleUpgrade(req, socket, head, cb) {\n socket.on('error', socketOnError);\n\n const key =\n req.headers['sec-websocket-key'] !== undefined\n ? req.headers['sec-websocket-key'].trim()\n : false;\n const upgrade = req.headers.upgrade;\n const version = +req.headers['sec-websocket-version'];\n const extensions = {};\n\n if (\n req.method !== 'GET' ||\n upgrade === undefined ||\n upgrade.toLowerCase() !== 'websocket' ||\n !key ||\n !keyRegex.test(key) ||\n (version !== 8 && version !== 13) ||\n !this.shouldHandle(req)\n ) {\n return abortHandshake(socket, 400);\n }\n\n if (this.options.perMessageDeflate) {\n const perMessageDeflate = new PerMessageDeflate(\n this.options.perMessageDeflate,\n true,\n this.options.maxPayload\n );\n\n try {\n const offers = parse(req.headers['sec-websocket-extensions']);\n\n if (offers[PerMessageDeflate.extensionName]) {\n perMessageDeflate.accept(offers[PerMessageDeflate.extensionName]);\n extensions[PerMessageDeflate.extensionName] = perMessageDeflate;\n }\n } catch (err) {\n return abortHandshake(socket, 400);\n }\n }\n\n //\n // Optionally call external client verification handler.\n //\n if (this.options.verifyClient) {\n const info = {\n origin:\n req.headers[`${version === 8 ? 'sec-websocket-origin' : 'origin'}`],\n secure: !!(req.socket.authorized || req.socket.encrypted),\n req\n };\n\n if (this.options.verifyClient.length === 2) {\n this.options.verifyClient(info, (verified, code, message, headers) => {\n if (!verified) {\n return abortHandshake(socket, code || 401, message, headers);\n }\n\n this.completeUpgrade(key, extensions, req, socket, head, cb);\n });\n return;\n }\n\n if (!this.options.verifyClient(info)) return abortHandshake(socket, 401);\n }\n\n this.completeUpgrade(key, extensions, req, socket, head, cb);\n }\n\n /**\n * Upgrade the connection to WebSocket.\n *\n * @param {String} key The value of the `Sec-WebSocket-Key` header\n * @param {Object} extensions The accepted extensions\n * @param {http.IncomingMessage} req The request object\n * @param {(net.Socket|tls.Socket)} socket The network socket between the\n * server and client\n * @param {Buffer} head The first packet of the upgraded stream\n * @param {Function} cb Callback\n * @throws {Error} If called more than once with the same socket\n * @private\n */\n completeUpgrade(key, extensions, req, socket, head, cb) {\n //\n // Destroy the socket if the client has already sent a FIN packet.\n //\n if (!socket.readable || !socket.writable) return socket.destroy();\n\n if (socket[kWebSocket]) {\n throw new Error(\n 'server.handleUpgrade() was called more than once with the same ' +\n 'socket, possibly due to a misconfiguration'\n );\n }\n\n if (this._state > RUNNING) return abortHandshake(socket, 503);\n\n const digest = createHash('sha1')\n .update(key + GUID)\n .digest('base64');\n\n const headers = [\n 'HTTP/1.1 101 Switching Protocols',\n 'Upgrade: websocket',\n 'Connection: Upgrade',\n `Sec-WebSocket-Accept: ${digest}`\n ];\n\n const ws = new WebSocket(null);\n let protocol = req.headers['sec-websocket-protocol'];\n\n if (protocol) {\n protocol = protocol.split(',').map(trim);\n\n //\n // Optionally call external protocol selection handler.\n //\n if (this.options.handleProtocols) {\n protocol = this.options.handleProtocols(protocol, req);\n } else {\n protocol = protocol[0];\n }\n\n if (protocol) {\n headers.push(`Sec-WebSocket-Protocol: ${protocol}`);\n ws._protocol = protocol;\n }\n }\n\n if (extensions[PerMessageDeflate.extensionName]) {\n const params = extensions[PerMessageDeflate.extensionName].params;\n const value = format({\n [PerMessageDeflate.extensionName]: [params]\n });\n headers.push(`Sec-WebSocket-Extensions: ${value}`);\n ws._extensions = extensions;\n }\n\n //\n // Allow external modification/inspection of handshake headers.\n //\n this.emit('headers', headers, req);\n\n socket.write(headers.concat('\\r\\n').join('\\r\\n'));\n socket.removeListener('error', socketOnError);\n\n ws.setSocket(socket, head, this.options.maxPayload);\n\n if (this.clients) {\n this.clients.add(ws);\n ws.on('close', () => this.clients.delete(ws));\n }\n\n cb(ws, req);\n }\n}\n\nmodule.exports = WebSocketServer;\n\n/**\n * Add event listeners on an `EventEmitter` using a map of <event, listener>\n * pairs.\n *\n * @param {EventEmitter} server The event emitter\n * @param {Object.<String, Function>} map The listeners to add\n * @return {Function} A function that will remove the added listeners when\n * called\n * @private\n */\nfunction addListeners(server, map) {\n for (const event of Object.keys(map)) server.on(event, map[event]);\n\n return function removeListeners() {\n for (const event of Object.keys(map)) {\n server.removeListener(event, map[event]);\n }\n };\n}\n\n/**\n * Emit a `'close'` event on an `EventEmitter`.\n *\n * @param {EventEmitter} server The event emitter\n * @private\n */\nfunction emitClose(server) {\n server._state = CLOSED;\n server.emit('close');\n}\n\n/**\n * Handle premature socket errors.\n *\n * @private\n */\nfunction socketOnError() {\n this.destroy();\n}\n\n/**\n * Close the connection when preconditions are not fulfilled.\n *\n * @param {(net.Socket|tls.Socket)} socket The socket of the upgrade request\n * @param {Number} code The HTTP response status code\n * @param {String} [message] The HTTP response body\n * @param {Object} [headers] Additional HTTP response headers\n * @private\n */\nfunction abortHandshake(socket, code, message, headers) {\n if (socket.writable) {\n message = message || http.STATUS_CODES[code];\n headers = {\n Connection: 'close',\n 'Content-Type': 'text/html',\n 'Content-Length': Buffer.byteLength(message),\n ...headers\n };\n\n socket.write(\n `HTTP/1.1 ${code} ${http.STATUS_CODES[code]}\\r\\n` +\n Object.keys(headers)\n .map((h) => `${h}: ${headers[h]}`)\n .join('\\r\\n') +\n '\\r\\n\\r\\n' +\n message\n );\n }\n\n socket.removeListener('error', socketOnError);\n socket.destroy();\n}\n\n/**\n * Remove whitespace characters from both ends of a string.\n *\n * @param {String} str The string\n * @return {String} A new string representing `str` stripped of whitespace\n * characters from both its beginning and end\n * @private\n */\nfunction trim(str) {\n return str.trim();\n}\n","'use strict';\n\nconst WebSocket = require('./lib/websocket');\n\nWebSocket.createWebSocketStream = require('./lib/stream');\nWebSocket.Server = require('./lib/websocket-server');\nWebSocket.Receiver = require('./lib/receiver');\nWebSocket.Sender = require('./lib/sender');\n\nmodule.exports = WebSocket;\n","\"use strict\";\n\nmodule.exports = require('ws');","\"use strict\";\nvar __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n if (typeof b !== \"function\" && b !== null)\n throw new TypeError(\"Class extends value \" + String(b) + \" is not a constructor or null\");\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __assign = (this && this.__assign) || function () {\n __assign = Object.assign || function(t) {\n for (var s, i = 1, n = arguments.length; i < n; i++) {\n s = arguments[i];\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))\n t[p] = s[p];\n }\n return t;\n };\n return __assign.apply(this, arguments);\n};\nvar __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n var desc = Object.getOwnPropertyDescriptor(m, k);\n if (!desc || (\"get\" in desc ? !m.__esModule : desc.writable || desc.configurable)) {\n desc = { enumerable: true, get: function() { return m[k]; } };\n }\n Object.defineProperty(o, k2, desc);\n}) : (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n o[k2] = m[k];\n}));\nvar __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {\n Object.defineProperty(o, \"default\", { enumerable: true, value: v });\n}) : function(o, v) {\n o[\"default\"] = v;\n});\nvar __importStar = (this && this.__importStar) || (function () {\n var ownKeys = function(o) {\n ownKeys = Object.getOwnPropertyNames || function (o) {\n var ar = [];\n for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;\n return ar;\n };\n return ownKeys(o);\n };\n return function (mod) {\n if (mod && mod.__esModule) return mod;\n var result = {};\n if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== \"default\") __createBinding(result, mod, k[i]);\n __setModuleDefault(result, mod);\n return result;\n };\n})();\nvar __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\n return new (P || (P = Promise))(function (resolve, reject) {\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\n step((generator = generator.apply(thisArg, _arguments || [])).next());\n });\n};\nvar __generator = (this && this.__generator) || function (thisArg, body) {\n var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g = Object.create((typeof Iterator === \"function\" ? Iterator : Object).prototype);\n return g.next = verb(0), g[\"throw\"] = verb(1), g[\"return\"] = verb(2), typeof Symbol === \"function\" && (g[Symbol.iterator] = function() { return this; }), g;\n function verb(n) { return function (v) { return step([n, v]); }; }\n function step(op) {\n if (f) throw new TypeError(\"Generator is already executing.\");\n while (g && (g = 0, op[0] && (_ = 0)), _) try {\n if (f = 1, y && (t = op[0] & 2 ? y[\"return\"] : op[0] ? y[\"throw\"] || ((t = y[\"return\"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;\n if (y = 0, t) op = [op[0] & 2, t.value];\n switch (op[0]) {\n case 0: case 1: t = op; break;\n case 4: _.label++; return { value: op[1], done: false };\n case 5: _.label++; y = op[1]; op = [0]; continue;\n case 7: op = _.ops.pop(); _.trys.pop(); continue;\n default:\n if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }\n if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }\n if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }\n if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }\n if (t[2]) _.ops.pop();\n _.trys.pop(); continue;\n }\n op = body.call(thisArg, _);\n } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }\n if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };\n }\n};\nvar __importDefault = (this && this.__importDefault) || function (mod) {\n return (mod && mod.__esModule) ? mod : { \"default\": mod };\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.Ledger = exports.WsState = exports.UserRightHelper = void 0;\nexports.assert = assert;\n// Copyright (c) 2025 Digital Asset (Switzerland) GmbH and/or its affiliates. All rights reserved.\n// SPDX-License-Identifier: Apache-2.0\nvar types_1 = require(\"@daml/types\");\nvar jtv = __importStar(require(\"@mojotech/json-type-validation\"));\nvar cross_fetch_1 = __importDefault(require(\"cross-fetch\"));\nvar events_1 = require(\"events\");\nvar isomorphic_ws_1 = __importDefault(require(\"isomorphic-ws\"));\nvar lodash_1 = __importStar(require(\"lodash\"));\nvar partyInfoDecoder = jtv.object({\n identifier: jtv.string(),\n isLocal: jtv.boolean(),\n});\nvar userDecoder = jtv.object({\n userId: jtv.string(),\n primaryParty: jtv.optional(jtv.string()),\n});\nvar UserRightHelper = /** @class */ (function () {\n function UserRightHelper() {\n }\n UserRightHelper.canActAs = function (party) {\n return { type: \"CanActAs\", party: party };\n };\n UserRightHelper.canReadAs = function (party) {\n return { type: \"CanReadAs\", party: party };\n };\n UserRightHelper.participantAdmin = {\n type: \"ParticipantAdmin\",\n };\n return UserRightHelper;\n}());\nexports.UserRightHelper = UserRightHelper;\nvar userRightDecoder = jtv.oneOf(jtv.object({\n type: jtv.constant(\"CanActAs\"),\n party: jtv.string(),\n}), jtv.object({\n type: jtv.constant(\"CanReadAs\"),\n party: jtv.string(),\n}), jtv.object({\n type: jtv.constant(\"ParticipantAdmin\"),\n}));\nvar decode = function (decoder, data) {\n return jtv.Result.withException(decoder.run(data));\n};\nfunction lookupTemplateOrUnknownInterface(templateId) {\n try {\n return (0, types_1.lookupTemplate)(templateId);\n }\n catch (e) {\n if (e instanceof Error)\n return {\n templateId: templateId,\n sdkVersion: \"3.3.0-snapshot.20250528.13806.0.v3cd439fb\",\n // there is no way to properly decode in this case, so we\n // discard the data instead. #15042\n decoder: jtv.succeed({}),\n keyDecoder: jtv.succeed(undefined),\n };\n else\n throw e;\n }\n}\nvar decodeTemplateId = function () {\n return jtv.string();\n};\n/**\n * Decoder for a [[CreateEvent]].\n */\nvar decodeCreateEvent = function (template) {\n return jtv.object({\n templateId: decodeTemplateId(),\n contractId: (0, types_1.ContractId)(template).decoder,\n signatories: (0, types_1.List)(types_1.Party).decoder,\n observers: (0, types_1.List)(types_1.Party).decoder,\n key: template.keyDecoder,\n payload: template.decoder,\n });\n};\n/**\n * Decoder for a [[CreateEvent]] of unknown contract template.\n */\nvar decodeCreateEventUnknown = jtv\n .valueAt([\"templateId\"], jtv.string())\n .andThen(function (templateId) {\n return decodeCreateEvent(lookupTemplateOrUnknownInterface(templateId));\n});\n/**\n * Decoder for an [[ArchiveEvent]].\n */\nvar decodeArchiveEvent = function (template) {\n return jtv.object({\n templateId: decodeTemplateId(),\n contractId: (0, types_1.ContractId)(template).decoder,\n });\n};\n/**\n * Decoder for an [[ArchiveEvent]] of unknown contract template.\n */\nvar decodeArchiveEventUnknown = jtv\n .valueAt([\"templateId\"], jtv.string())\n .andThen(function (templateId) {\n return decodeArchiveEvent(lookupTemplateOrUnknownInterface(templateId));\n});\n/**\n * Decoder for an [[Event]].\n */\nvar decodeEvent = function (template) {\n return jtv.oneOf(jtv.object({\n created: decodeCreateEvent(template),\n matchedQueries: jtv.array(jtv.number()),\n }), jtv.object({ created: decodeCreateEvent(template) }), jtv.object({ archived: decodeArchiveEvent(template) }));\n};\n/**\n * Decoder for an [[Event]] with unknown contract template.\n */\nvar decodeEventUnknown = jtv.oneOf(jtv.object({\n created: decodeCreateEventUnknown,\n matchedQueries: jtv.array(jtv.number()),\n}), jtv.object({ created: decodeCreateEventUnknown }), jtv.object({ archived: decodeArchiveEventUnknown }));\n/**\n * @internal\n */\nfunction stripPackage(templateId) {\n return templateId.split(\":\").slice(1).join(\":\");\n}\n/**\n * @internal\n */\nfunction decodeArchiveResponse(template, archiveMethod, \n// eslint-disable-next-line @typescript-eslint/ban-types\narchiveCommand) {\n return __awaiter(this, void 0, void 0, function () {\n var _a, _b, events;\n return __generator(this, function (_c) {\n switch (_c.label) {\n case 0: return [4 /*yield*/, archiveCommand()];\n case 1:\n _a = _c.sent(), _b = _a[0], events = _a[1];\n if (events.length === 1 &&\n \"archived\" in events[0] &&\n stripPackage(events[0].archived.templateId) ===\n stripPackage(template.templateId)) {\n return [2 /*return*/, events[0].archived];\n }\n else {\n throw Error(\"Ledger.\".concat(archiveMethod, \" is expected to cause one archive event for template \").concat(template.templateId, \" but caused \").concat(JSON.stringify(events), \".\"));\n }\n return [2 /*return*/];\n }\n });\n });\n}\n/**\n * @internal\n */\nfunction isRecordWith(field, x) {\n return typeof x === \"object\" && x !== null && field in x;\n}\n/**\n *\n * @internal\n */\nfunction isCreateWithMatchedQueries(event) {\n return isRecordWith(\"created\", event);\n}\n/** @internal\n * exported for testing only\n */\nfunction assert(b, m) {\n if (!b) {\n throw m;\n }\n}\n// TODO(MH): Support comparison queries.\n/** @internal\n *\n * Official documentation (docs/source/json-api/search-query-language.rst)\n * currently explicitly forbids the use of lists, textmaps and genmaps in\n * queries. As long as that restriction stays, there is no need for any kind of\n * encoding here.\n */\nfunction encodeQuery(_template, query) {\n return query;\n}\n/**\n * @internal\n */\nvar decodeLedgerResponse = jtv.object({\n status: jtv.number(),\n result: jtv.unknownJson(),\n warnings: jtv.optional(jtv.unknownJson()),\n});\n/**\n * @internal\n */\nvar decodeLedgerError = jtv.object({\n status: jtv.number(),\n errors: jtv.array(jtv.string()),\n warnings: jtv.optional(jtv.unknownJson()),\n});\nvar StreamEventEmitter = /** @class */ (function (_super) {\n __extends(StreamEventEmitter, _super);\n function StreamEventEmitter(_a) {\n var beforeClosing = _a.beforeClosing;\n var _this = _super.call(this) || this;\n _this.beforeClosing = beforeClosing;\n return _this;\n }\n StreamEventEmitter.prototype.close = function () {\n this.beforeClosing();\n this.emit(\"close\", { code: 4000, reason: \"called .close()\" });\n this.removeAllListeners();\n };\n return StreamEventEmitter;\n}(events_1.EventEmitter));\nvar NoOffsetReceivedYet = Symbol(\"NoOffsetReceivedYet\");\nvar NullOffsetReceived = Symbol(\"NullOffsetReceived\");\nfunction append(map, key, value) {\n var _a;\n if (map.has(key)) {\n (_a = map.get(key)) === null || _a === void 0 ? void 0 : _a.push(value);\n }\n else {\n map.set(key, [value]);\n }\n}\n/**\n * @deprecated All usages of this function should be replaced by just\n * iterating over the iterator. For this to happen, the TS\n * compiler requires the --downlevelIteration flag, which\n * however does not play nicely with Jest when running the\n * tests.\n *\n * TODO Moving the compilation target to ES6 probably would solve this, investigate.\n */\nfunction materialize(iterator) {\n return Array.from(iterator);\n}\nvar WsState;\n(function (WsState) {\n WsState[WsState[\"Connecting\"] = 0] = \"Connecting\";\n WsState[WsState[\"Open\"] = 1] = \"Open\";\n WsState[WsState[\"Closing\"] = 2] = \"Closing\";\n WsState[WsState[\"Closed\"] = 3] = \"Closed\";\n})(WsState || (exports.WsState = WsState = {}));\n/**\n * @internal\n *\n * A special handler for stream requests to the /v1/stream/query endpoint.\n * The query endpoint supports providing offsets on a per-query basis.\n * This class leverages this feature by multiplexing virtual streaming requests to a single web socket.\n */\nvar QueryStreamsManager = /** @class */ (function () {\n function QueryStreamsManager(_a) {\n var token = _a.token, wsBaseUrl = _a.wsBaseUrl, reconnectThreshold = _a.reconnectThreshold;\n // Mutable state BEGIN\n // Ongoing streaming queries that will be the downstream consumers of web socket messages\n this.queries = new Set();\n // Lookup tables used to route events to the relevant consumers:\n // - consumers for create events can be looked up based on their match index\n // - store the offset by which a match indexes needs to be shifted before the event is passed to the consumer\n // - archive events can be lookup up by template identifier\n // - this causes the consumer to observe what is known as \"phantom archives\", which are known and documented\n this.matchIndexLookupTable = [];\n this.templateIdsLookupTable = {};\n // Accumulates each query in a flattened form to be sent as a single request to the JSON API\n this.request = [];\n // to track changes on web socket queries\n this.wsQueriesChange = false;\n this.protocols = [\"jwt.token.\" + token, \"daml.ws.auth\"];\n this.url = wsBaseUrl + QueryStreamsManager.ENDPOINT;\n this.reconnectThresholdMs = reconnectThreshold;\n }\n QueryStreamsManager.toRequest = function (query) {\n var request = query.queries.length == 0\n ? [{ templateIds: [query.template.templateId] }]\n : query.queries.map(function (q) { return ({\n templateIds: [query.template.templateId],\n query: encodeQuery(query.template, q),\n }); });\n if (typeof query.offset === \"string\") {\n for (var _i = 0, request_1 = request; _i < request_1.length; _i++) {\n var r = request_1[_i];\n r.offset = query.offset;\n }\n }\n return request;\n };\n QueryStreamsManager.prototype.resetAllState = function () {\n // close ws if defined\n if (this.ws !== undefined) {\n this.ws.close();\n }\n this.queries.clear();\n this.matchIndexLookupTable = [];\n this.templateIdsLookupTable = {};\n this.request = [];\n this.ws = undefined;\n this.wsLiveSince = undefined;\n this.wsQueriesChange = false;\n };\n QueryStreamsManager.prototype.handleQueriesChange = function () {\n //eslint-disable-next-line @typescript-eslint/no-this-alias\n var manager = this; // stable self-reference for callbacks\n if (manager.queries.size > 0) {\n if (manager.ws !== undefined) {\n //set the queries change flag to true, this should eventually get reset once the ws is closed.\n manager.wsQueriesChange = true;\n manager.wsLiveSince = undefined;\n manager.ws.close();\n manager.ws = undefined;\n }\n var ws = new isomorphic_ws_1.default(manager.url, manager.protocols);\n var onWsMessage_1 = function (ws) {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n return function (_a) {\n var data = _a.data;\n if (ws.readyState === WsState.Open) {\n var json = JSON.parse(data.toString());\n if (isRecordWith(\"events\", json)) {\n var events = jtv.Result.withException(jtv.array(decodeEventUnknown).run(json.events));\n var multiplexer = new Map();\n for (var _i = 0, events_2 = events; _i < events_2.length; _i++) {\n var event_1 = events_2[_i];\n if (isCreateWithMatchedQueries(event_1)) {\n var consumersToMatchedQueries = new Map();\n for (var _b = 0, _c = event_1.matchedQueries; _b < _c.length; _b++) {\n var matchIndex = _c[_b];\n var _d = manager.matchIndexLookupTable[matchIndex], consumer = _d[0], matchIndexOffset = _d[1];\n append(consumersToMatchedQueries, consumer, matchIndexOffset);\n }\n for (var _e = 0, _f = materialize(consumersToMatchedQueries.entries()); _e < _f.length; _e++) {\n var _g = _f[_e], consumer = _g[0], matchedQueries = _g[1];\n // Create a new copy of the event for each consumer to freely mangle the matched queries and avoid sharing mutable state\n append(multiplexer, consumer, __assign(__assign({}, event_1), { matchedQueries: matchedQueries }));\n }\n }\n else if (\"archived\" in event_1) {\n var consumers = manager.templateIdsLookupTable[event_1.archived.templateId];\n for (var _h = 0, _j = materialize(consumers.values()); _h < _j.length; _h++) {\n var consumer = _j[_h];\n // Create a new copy of the event for each consumer to avoid sharing mutable state\n append(multiplexer, consumer, __assign({}, event_1));\n }\n }\n else {\n console.error(\"\".concat(event_1, \" unknown event type received, expected created with matchedQueries or archived\"), json);\n }\n }\n for (var _k = 0, _m = materialize(multiplexer.entries()); _k < _m.length; _k++) {\n var _o = _m[_k], consumer = _o[0], events_4 = _o[1];\n for (var _p = 0, events_3 = events_4; _p < events_3.length; _p++) {\n var event_2 = events_3[_p];\n if (isCreateWithMatchedQueries(event_2)) {\n consumer.state.set(event_2.created.contractId, event_2.created);\n }\n else if (\"archived\" in event_2) {\n consumer.state.delete(event_2.archived.contractId);\n }\n }\n consumer.stream.emit(\"change\", Array.from(consumer.state.values()), events_4);\n }\n if (isRecordWith(\"offset\", json)) {\n var offset = jtv.Result.withException(jtv.oneOf(jtv.constant(null), jtv.string()).run(json.offset));\n if (manager.wsLiveSince === undefined) {\n //on receiving the first offset event we consider the web socket to be live.\n manager.wsLiveSince = Date.now();\n }\n for (var _q = 0, _r = materialize(manager.queries.values()); _q < _r.length; _q++) {\n var consumer = _r[_q];\n if (!(typeof consumer.offset === \"string\")) {\n // Rebuilding the state array from scratch to make sure mutable state is not shared between the 'change' and 'live' event\n consumer.stream.emit(\"live\", Array.from(consumer.state.values()));\n }\n if (typeof offset === \"string\") {\n consumer.offset = offset;\n }\n else {\n consumer.offset = NullOffsetReceived;\n }\n }\n }\n }\n else if (isRecordWith(\"warnings\", json)) {\n for (var _s = 0, _u = materialize(manager.queries.values()); _s < _u.length; _s++) {\n var query = _u[_s];\n console.warn(\"\".concat(query.caller, \" warnings\"), json);\n }\n }\n else if (isRecordWith(\"errors\", json)) {\n for (var _v = 0, _w = materialize(manager.queries.values()); _v < _w.length; _v++) {\n var query = _w[_v];\n console.warn(\"\".concat(query.caller, \" errors\"), json);\n }\n }\n else {\n for (var _x = 0, _y = materialize(manager.queries.values()); _x < _y.length; _x++) {\n var query = _y[_x];\n console.error(\"\".concat(query.caller, \" unknown message\"), json);\n }\n }\n }\n };\n };\n var onWsOpen_1 = function () {\n var _a;\n // only make a new websocket request if we have registered queries\n if (manager.queries.size > 0) {\n var newRequests = [];\n var newMatchIndexLookupTable = [];\n for (var _i = 0, _b = materialize(manager.queries.values()); _i < _b.length; _i++) {\n var query = _b[_i];\n var request = QueryStreamsManager.toRequest(query);\n // Add entries to the lookup table for create events\n var matchIndexOffset = newMatchIndexLookupTable.length;\n var matchIndexLookupTableEntries = new Array(request.length).fill([query, matchIndexOffset]);\n newMatchIndexLookupTable = newMatchIndexLookupTable.concat(matchIndexLookupTableEntries);\n // Add entries to the lookup table for archive events\n for (var _c = 0, request_2 = request; _c < request_2.length; _c++) {\n var templateIds = request_2[_c].templateIds;\n for (var _d = 0, templateIds_1 = templateIds; _d < templateIds_1.length; _d++) {\n var templateId = templateIds_1[_d];\n manager.templateIdsLookupTable[templateId] =\n manager.templateIdsLookupTable[templateId] || new Set();\n manager.templateIdsLookupTable[templateId].add(query);\n }\n }\n //since we go through all queries on the manager, we should be safely able to rebuild the whole request\n newRequests = newRequests.concat(request);\n }\n manager.request = newRequests;\n manager.matchIndexLookupTable = newMatchIndexLookupTable;\n (_a = manager.ws) === null || _a === void 0 ? void 0 : _a.send(JSON.stringify(Array.from(manager.request.values())));\n }\n };\n var onWsClose_1 = function () {\n //if not a web socket queries change then we need to initiate reconnect logic.\n if (!manager.wsQueriesChange) {\n // The web socket has been closed due to an error\n // If the conditions are met, attempt to reconnect and/or inform downstream consumers\n var now = Date.now();\n if (manager.wsLiveSince !== undefined &&\n now - manager.wsLiveSince >= manager.reconnectThresholdMs) {\n console.log(\"Reconnecting ws, previously liveSince: \".concat(manager.wsLiveSince, \" and reconnectThresholdMs: \").concat(manager.reconnectThresholdMs));\n manager.wsLiveSince = undefined;\n var ws_1 = new isomorphic_ws_1.default(manager.url, manager.protocols);\n ws_1.addEventListener(\"open\", onWsOpen_1);\n ws_1.addEventListener(\"message\", onWsMessage_1(ws_1));\n ws_1.addEventListener(\"close\", onWsClose_1);\n manager.ws = ws_1;\n }\n else {\n // ws has closed too quickly / never managed to connect: we give up\n for (var _i = 0, _a = materialize(manager.queries.values()); _i < _a.length; _i++) {\n var consumer = _a[_i];\n consumer.stream.emit(\"close\", {\n code: 4001,\n reason: \"ws connection failed\",\n });\n consumer.stream.removeAllListeners();\n }\n manager.resetAllState();\n }\n }\n else {\n //this was triggered due to queries change , reset the flag\n manager.wsQueriesChange = false;\n }\n };\n // Purposefully ignoring 'error' events; they are always followed by a 'close' event, which needs to be handled anyway\n ws.addEventListener(\"open\", onWsOpen_1);\n ws.addEventListener(\"message\", onWsMessage_1(ws));\n ws.addEventListener(\"close\", onWsClose_1);\n //eslint-disable-next-line @typescript-eslint/no-this-alias\n manager.ws = ws;\n }\n };\n QueryStreamsManager.prototype.streamSubmit = function (template, queries, caller) {\n //eslint-disable-next-line @typescript-eslint/no-this-alias\n var manager = this;\n var query = {\n template: template,\n queries: queries,\n stream: new StreamEventEmitter({\n beforeClosing: function () {\n manager.queries.delete(query);\n // if no more queries then just let it go\n if (manager.queries.size > 0) {\n manager.handleQueriesChange();\n }\n },\n }),\n state: new Map(),\n offset: NoOffsetReceivedYet,\n caller: caller,\n };\n manager.queries.add(query);\n manager.handleQueriesChange();\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n var on = function (type, listener) {\n var _a, _b;\n if (((_a = manager.ws) === null || _a === void 0 ? void 0 : _a.readyState) === WsState.Open ||\n ((_b = manager.ws) === null || _b === void 0 ? void 0 : _b.readyState) === WsState.Connecting) {\n query.stream.on(type, listener);\n }\n else {\n console.error(\"Trying to add a listener to a closed stream.\");\n }\n };\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n var off = function (type, listener) {\n var _a, _b;\n if (((_a = manager.ws) === null || _a === void 0 ? void 0 : _a.readyState) === WsState.Open ||\n ((_b = manager.ws) === null || _b === void 0 ? void 0 : _b.readyState) === WsState.Connecting) {\n query.stream.off(type, listener);\n }\n else {\n console.error(\"Trying to remove a listener from a closed stream.\");\n }\n };\n var close = function () {\n query.stream.close();\n };\n return { on: on, off: off, close: close };\n };\n QueryStreamsManager.ENDPOINT = \"v1/stream/query\";\n return QueryStreamsManager;\n}());\n/**\n * An object of type `Ledger` represents a handle to a Daml ledger.\n */\nvar Ledger = /** @class */ (function () {\n /**\n * Construct a new `Ledger` object. See [[LedgerOptions]] for the constructor arguments.\n */\n function Ledger(_a) {\n var token = _a.token, httpBaseUrl = _a.httpBaseUrl, wsBaseUrl = _a.wsBaseUrl, _b = _a.reconnectThreshold, reconnectThreshold = _b === void 0 ? 30000 : _b, _c = _a.multiplexQueryStreams, multiplexQueryStreams = _c === void 0 ? false : _c;\n if (!httpBaseUrl) {\n httpBaseUrl = \"\".concat(window.location.protocol, \"//\").concat(window.location.host, \"/\");\n }\n if (!(httpBaseUrl.startsWith(\"http://\") || httpBaseUrl.startsWith(\"https://\"))) {\n throw Error(\"Ledger: httpBaseUrl must start with 'http://' or 'https://'. (\".concat(httpBaseUrl, \")\"));\n }\n if (!httpBaseUrl.endsWith(\"/\")) {\n throw Error(\"Ledger: httpBaseUrl must end with '/'. (\".concat(httpBaseUrl, \")\"));\n }\n if (!wsBaseUrl) {\n wsBaseUrl = \"ws\" + httpBaseUrl.slice(4);\n }\n if (!(wsBaseUrl.startsWith(\"ws://\") || wsBaseUrl.startsWith(\"wss://\"))) {\n throw Error(\"Ledger: wsBaseUrl must start with 'ws://' or 'wss://'. (\".concat(wsBaseUrl, \")\"));\n }\n if (!wsBaseUrl.endsWith(\"/\")) {\n throw Error(\"Ledger: wsBaseUrl must end with '/'. (\".concat(wsBaseUrl, \")\"));\n }\n this.token = token;\n this.httpBaseUrl = httpBaseUrl;\n this.wsBaseUrl = wsBaseUrl;\n this.reconnectThreshold = reconnectThreshold;\n this.multiplexQueryStreams = multiplexQueryStreams;\n this.queryStreamsManager = new QueryStreamsManager({\n token: token,\n wsBaseUrl: wsBaseUrl,\n reconnectThreshold: reconnectThreshold,\n });\n }\n /**\n * @internal\n */\n Ledger.prototype.auth = function () {\n return { Authorization: \"Bearer \" + this.token };\n };\n /**\n * @internal\n */\n Ledger.prototype.throwOnError = function (r) {\n return __awaiter(this, void 0, void 0, function () {\n var json;\n return __generator(this, function (_a) {\n switch (_a.label) {\n case 0:\n if (!!r.ok) return [3 /*break*/, 2];\n return [4 /*yield*/, r.json()];\n case 1:\n json = _a.sent();\n console.log(json);\n throw decode(decodeLedgerError, json);\n case 2: return [2 /*return*/];\n }\n });\n });\n };\n /**\n * @internal\n *\n * Internal function to submit a command to the JSON API.\n */\n Ledger.prototype.submit = function (endpoint_1, payload_1) {\n return __awaiter(this, arguments, void 0, function (endpoint, payload, method) {\n var httpResponse, json, ledgerResponse;\n if (method === void 0) { method = \"post\"; }\n return __generator(this, function (_a) {\n switch (_a.label) {\n case 0: return [4 /*yield*/, (0, cross_fetch_1.default)(this.httpBaseUrl + endpoint, {\n body: JSON.stringify(payload),\n headers: __assign(__assign({}, this.auth()), { \"Content-type\": \"application/json\" }),\n method: method,\n })];\n case 1:\n httpResponse = _a.sent();\n return [4 /*yield*/, this.throwOnError(httpResponse)];\n case 2:\n _a.sent();\n return [4 /*yield*/, httpResponse.json()];\n case 3:\n json = _a.sent();\n ledgerResponse = jtv.Result.withException(decodeLedgerResponse.run(json));\n if (!(ledgerResponse.status >= 200 && ledgerResponse.status <= 299)) {\n console.log(\"Request to \".concat(endpoint, \" returned status \").concat(ledgerResponse.status, \" with response body: \").concat(JSON.stringify(json), \".\"));\n throw decode(decodeLedgerError, json);\n }\n if (ledgerResponse.warnings) {\n console.warn(ledgerResponse.warnings);\n }\n return [2 /*return*/, ledgerResponse.result];\n }\n });\n });\n };\n /***\n * Internal\n *\n * Retrieve the readiness status from the JSON API.\n */\n Ledger.prototype.checkIfReady = function () {\n return __awaiter(this, void 0, void 0, function () {\n var endpoint, httpResponse, text, json, ledgerResponse;\n return __generator(this, function (_a) {\n switch (_a.label) {\n case 0:\n endpoint = \"readyz\";\n return [4 /*yield*/, (0, cross_fetch_1.default)(this.httpBaseUrl + endpoint, {\n headers: __assign(__assign({}, this.auth()), { \"Content-type\": \"application/json\" }),\n method: \"get\",\n })];\n case 1:\n httpResponse = _a.sent();\n return [4 /*yield*/, this.throwOnError(httpResponse)];\n case 2:\n _a.sent();\n return [4 /*yield*/, httpResponse.text()];\n case 3:\n text = _a.sent();\n if (!text.includes(\"readyz check passed\")) return [3 /*break*/, 4];\n return [2 /*return*/, httpResponse];\n case 4:\n if (!text.includes(\"readyz check failed\")) return [3 /*break*/, 5];\n throw decode(decodeLedgerError, httpResponse);\n case 5: return [4 /*yield*/, httpResponse.json()];\n case 6:\n json = _a.sent();\n ledgerResponse = jtv.Result.withException(decodeLedgerResponse.run(json));\n if (!(ledgerResponse.status >= 200 && ledgerResponse.status <= 299)) {\n console.log(\"Request to \".concat(endpoint, \" returned status \").concat(ledgerResponse.status, \" with response body: \").concat(JSON.stringify(json), \".\"));\n throw decode(decodeLedgerError, json);\n }\n if (ledgerResponse.warnings) {\n console.warn(ledgerResponse.warnings);\n }\n return [2 /*return*/, ledgerResponse.result];\n }\n });\n });\n };\n /***\n * Retrieve the readiness status from the JSON API with retries every 1s.\n */\n Ledger.prototype.ready = function (maxAttempts) {\n return __awaiter(this, void 0, void 0, function () {\n var execute, delay;\n var _this = this;\n return __generator(this, function (_a) {\n execute = function (attempt) { return __awaiter(_this, void 0, void 0, function () {\n var err_1;\n return __generator(this, function (_a) {\n switch (_a.label) {\n case 0:\n _a.trys.push([0, 2, , 3]);\n return [4 /*yield*/, this.checkIfReady()];\n case 1: return [2 /*return*/, _a.sent()];\n case 2:\n err_1 = _a.sent();\n if (attempt <= maxAttempts) {\n return [2 /*return*/, delay(function () { return execute(attempt + 1); }, 1000)];\n }\n else {\n throw err_1;\n }\n return [3 /*break*/, 3];\n case 3: return [2 /*return*/];\n }\n });\n }); };\n delay = function (fn, ms) { return __awaiter(_this, void 0, void 0, function () {\n return __generator(this, function (_a) {\n return [2 /*return*/, new Promise(function (resolve) { return setTimeout(function () { return resolve(fn()); }, ms); })];\n });\n }); };\n return [2 /*return*/, execute(1)];\n });\n });\n };\n /**\n * Retrieve contracts for a given template.\n *\n * When no `query` argument is given, all contracts visible to the submitting party are returned.\n * When a `query` argument is given, only those contracts matching the query are returned. See\n * https://docs.daml.com/json-api/search-query-language.html for a description of the query\n * language.\n *\n * @param template The contract template of the contracts to be matched against.\n * @param query The contract query for the contracts to be matched against.\n *\n * @typeparam T The contract template type.\n * @typeparam K The contract key type.\n * @typeparam I The contract id type.\n *\n */\n Ledger.prototype.query = function (template, query) {\n return __awaiter(this, void 0, void 0, function () {\n var payload, json;\n return __generator(this, function (_a) {\n switch (_a.label) {\n case 0:\n payload = {\n templateIds: [template.templateId],\n query: encodeQuery(template, query),\n };\n return [4 /*yield*/, this.submit(\"v1/query\", payload)];\n case 1:\n json = _a.sent();\n return [2 /*return*/, jtv.Result.withException(jtv.array(decodeCreateEvent(template)).run(json))];\n }\n });\n });\n };\n /**\n * Fetch a contract identified by its contract ID.\n *\n * @param template The template of the contract to be fetched.\n * @param contractId The contract id of the contract to be fetched.\n *\n * @typeparam T The contract template type.\n * @typeparam K The contract key type.\n * @typeparam I The contract id type.\n *\n */\n Ledger.prototype.fetch = function (template, contractId) {\n return __awaiter(this, void 0, void 0, function () {\n var payload, json;\n return __generator(this, function (_a) {\n switch (_a.label) {\n case 0:\n payload = {\n templateId: template.templateId,\n contractId: (0, types_1.ContractId)(template).encode(contractId),\n };\n return [4 /*yield*/, this.submit(\"v1/fetch\", payload)];\n case 1:\n json = _a.sent();\n return [2 /*return*/, jtv.Result.withException(jtv.oneOf(jtv.constant(null), decodeCreateEvent(template)).run(json))];\n }\n });\n });\n };\n /**\n * Fetch a contract identified by its contract key.\n *\n * Same as [[fetch]], but the contract to be fetched is identified by its contract key instead of\n * its contract id.\n *\n * @param template The template of the contract to be fetched.\n * @param key The contract key of the contract to be fetched.\n *\n * @typeparam T The contract template type.\n * @typeparam K The contract key type.\n * @typeparam I The contract id type.\n */\n Ledger.prototype.fetchByKey = function (template, key) {\n return __awaiter(this, void 0, void 0, function () {\n var payload, json;\n return __generator(this, function (_a) {\n switch (_a.label) {\n case 0:\n if (key === undefined) {\n throw Error(\"Cannot lookup by key on template \".concat(template.templateId, \" because it does not define a key.\"));\n }\n payload = {\n templateId: template.templateId,\n key: template.keyEncode(key),\n };\n return [4 /*yield*/, this.submit(\"v1/fetch\", payload)];\n case 1:\n json = _a.sent();\n return [2 /*return*/, jtv.Result.withException(jtv.oneOf(jtv.constant(null), decodeCreateEvent(template)).run(json))];\n }\n });\n });\n };\n /**\n * Create a contract for a given template.\n *\n * @param template The template of the contract to be created.\n * @param payload The template arguments for the contract to be created.\n * @param meta Optional meta fields to specify additional data on a command submission.\n *\n * @typeparam T The contract template type.\n * @typeparam K The contract key type.\n * @typeparam I The contract id type.\n *\n */\n Ledger.prototype.create = function (template, payload, meta) {\n return __awaiter(this, void 0, void 0, function () {\n var command, json;\n return __generator(this, function (_a) {\n switch (_a.label) {\n case 0:\n command = {\n templateId: template.templateId,\n payload: template.encode(payload),\n meta: meta,\n };\n return [4 /*yield*/, this.submit(\"v1/create\", command)];\n case 1:\n json = _a.sent();\n return [2 /*return*/, jtv.Result.withException(decodeCreateEvent(template).run(json))];\n }\n });\n });\n };\n /**\n * Exercise a choice on a contract identified by its contract ID.\n *\n * @param choice The choice to exercise.\n * @param contractId The contract id of the contract to exercise.\n * @param argument The choice arguments.\n * @param meta Optional meta fields to specify additional data on a command submission.\n *\n * @typeparam T The contract template type.\n * @typeparam C The type of the contract choice.\n * @typeparam R The return type of the choice.\n *\n * @returns The return value of the choice together with a list of\n * [[event]]'s that were created as a result of exercising the choice.\n */\n Ledger.prototype.exercise = function (choice, contractId, argument, meta) {\n return __awaiter(this, void 0, void 0, function () {\n var payload, json, responseDecoder, _a, exerciseResult, events;\n return __generator(this, function (_b) {\n switch (_b.label) {\n case 0:\n payload = {\n templateId: choice.template().templateId,\n contractId: (0, types_1.ContractId)(choice.template()).encode(contractId),\n choice: choice.choiceName,\n argument: choice.argumentEncode(argument),\n meta: meta,\n };\n return [4 /*yield*/, this.submit(\"v1/exercise\", payload)];\n case 1:\n json = _b.sent();\n responseDecoder = jtv.object({\n exerciseResult: choice.resultDecoder,\n events: jtv.array(decodeEventUnknown),\n });\n _a = jtv.Result.withException(responseDecoder.run(json)), exerciseResult = _a.exerciseResult, events = _a.events;\n return [2 /*return*/, [exerciseResult, events]];\n }\n });\n });\n };\n /**\n * Exercse a choice on a newly-created contract, in a single transaction.\n *\n * @param choice The choice to exercise.\n * @param payload The template arguments for the newly-created contract.\n * @param argument The choice arguments.\n * @param meta Optional meta fields to specify additional data on a command submission.\n *\n * @typeparam T The contract template type.\n * @typeparam C The type of the contract choice.\n * @typeparam R The return type of the choice.\n *\n * @returns The return value of the choice together with a list of\n * [[event]]'s that includes the creation event for the created contract as\n * well as all the events that were created as a result of exercising the\n * choice, including the archive event for the created contract if the choice\n * is consuming (or otherwise archives it as part of its execution).\n *\n */\n Ledger.prototype.createAndExercise = function (choice, payload, argument, meta) {\n return __awaiter(this, void 0, void 0, function () {\n var command, json, responseDecoder, _a, exerciseResult, events;\n return __generator(this, function (_b) {\n switch (_b.label) {\n case 0:\n command = {\n templateId: choice.template().templateId,\n payload: choice.template().encode(payload),\n choice: choice.choiceName,\n argument: choice.argumentEncode(argument),\n meta: meta,\n };\n return [4 /*yield*/, this.submit(\"v1/create-and-exercise\", command)];\n case 1:\n json = _b.sent();\n responseDecoder = jtv.object({\n exerciseResult: choice.resultDecoder,\n events: jtv.array(decodeEventUnknown),\n });\n _a = jtv.Result.withException(responseDecoder.run(json)), exerciseResult = _a.exerciseResult, events = _a.events;\n return [2 /*return*/, [exerciseResult, events]];\n }\n });\n });\n };\n /**\n * Exercise a choice on a contract identified by its contract key.\n *\n * Same as [[exercise]], but the contract is identified by its contract key instead of its\n * contract id.\n *\n * @param choice The choice to exercise.\n * @param key The contract key of the contract to exercise.\n * @param argument The choice arguments.\n * @param meta Optional meta fields to specify additional data on a command submission.\n *\n * @typeparam T The contract template type.\n * @typeparam C The type of the contract choice.\n * @typeparam R The return type of the choice.\n * @typeparam K The type of the contract key.\n *\n * @returns The return value of the choice together with a list of [[event]]'s that where created\n * as a result of exercising the choice.\n */\n Ledger.prototype.exerciseByKey = function (choice, key, argument, meta) {\n return __awaiter(this, void 0, void 0, function () {\n var payload, json, responseDecoder, _a, exerciseResult, events;\n return __generator(this, function (_b) {\n switch (_b.label) {\n case 0:\n if (key === undefined) {\n throw Error(\"Cannot exercise by key on template \".concat(choice.template().templateId, \" because it does not define a key.\"));\n }\n payload = {\n templateId: choice.template().templateId,\n key: choice.template().keyEncode(key),\n choice: choice.choiceName,\n argument: choice.argumentEncode(argument),\n meta: meta,\n };\n return [4 /*yield*/, this.submit(\"v1/exercise\", payload)];\n case 1:\n json = _b.sent();\n responseDecoder = jtv.object({\n exerciseResult: choice.resultDecoder,\n events: jtv.array(decodeEventUnknown),\n });\n _a = jtv.Result.withException(responseDecoder.run(json)), exerciseResult = _a.exerciseResult, events = _a.events;\n return [2 /*return*/, [exerciseResult, events]];\n }\n });\n });\n };\n /**\n * Archive a contract identified by its contract ID.\n *\n * @param template The template of the contract to archive.\n * @param contractId The contract id of the contract to archive.\n * @param meta Optional meta fields to specify additional data on a command submission.\n *\n * @typeparam T The contract template type.\n * @typeparam K The contract key type.\n * @typeparam I The contract id type.\n *\n */\n Ledger.prototype.archive = function (template, contractId, meta) {\n return __awaiter(this, void 0, void 0, function () {\n var _this = this;\n return __generator(this, function (_a) {\n return [2 /*return*/, decodeArchiveResponse(template, \"archive\", function () {\n return _this.exercise(template.Archive, contractId, {}, meta);\n })];\n });\n });\n };\n /**\n * Archive a contract identified by its contract key.\n * Same as [[archive]], but the contract to be archived is identified by its contract key.\n *\n * @param template The template of the contract to be archived.\n * @param key The contract key of the contract to be archived.\n * @param meta Optional meta fields to specify additional data on a command submission.\n *\n * @typeparam T The contract template type.\n * @typeparam K The contract key type.\n * @typeparam I The contract id type.\n *\n */\n Ledger.prototype.archiveByKey = function (template, key, meta) {\n return __awaiter(this, void 0, void 0, function () {\n var _this = this;\n return __generator(this, function (_a) {\n return [2 /*return*/, decodeArchiveResponse(template, \"archiveByKey\", function () {\n return _this.exerciseByKey(template.Archive, key, {}, meta);\n })];\n });\n });\n };\n /**\n * @internal\n *\n * Internal command to submit a request to a streaming endpoint of the\n * JSON API. Returns a stream consisting of accumulated state together with\n * the events that produced the latest state change. The `change` function\n * must be an operation of the monoid `Event<T, K, I>[]` on the set `State`,\n * i.e., for all `s: State` and `x, y: Event<T, K, I>[]` we\n * must have the structural equalities\n * ```\n * change(s, []) == s\n * change(s, x.concat(y)) == change(change(s, x), y)\n * ```\n * Also, `change` must never change its arguments.\n */\n Ledger.prototype.streamSubmit = function (callerName, template, endpoint, request, reconnectRequest, init, change) {\n var _this = this;\n var protocols = [\"jwt.token.\" + this.token, \"daml.ws.auth\"];\n var ws = new isomorphic_ws_1.default(this.wsBaseUrl + endpoint, protocols);\n var isLiveSince = undefined;\n var lastOffset = undefined;\n var state = init;\n var isReconnecting = false;\n var streamClosed = false;\n var emitter = new events_1.EventEmitter();\n var onWsOpen = function () {\n if (isReconnecting) {\n // the JSON API server can't handle null offsets, even though it sends them out under\n // special conditions when there are no transactions yet. Not sending the `offset` message\n // will start the stream from the very beginning of the transaction log.\n if (lastOffset !== null)\n ws.send(JSON.stringify({ offset: lastOffset }));\n ws.send(JSON.stringify(reconnectRequest()));\n }\n else {\n ws.send(JSON.stringify(request));\n }\n };\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n var onWsMessage = function (event) {\n var json = JSON.parse(event.data.toString());\n if (isRecordWith(\"events\", json)) {\n var events = jtv.Result.withException(jtv.array(decodeEvent(template)).run(json.events));\n if (events.length > 0) {\n state = change(state, events);\n emitter.emit(\"change\", state, events);\n }\n if (isRecordWith(\"offset\", json)) {\n lastOffset = jtv.Result.withException(jtv.oneOf(jtv.constant(null), jtv.string()).run(json.offset));\n if (isLiveSince === undefined) {\n isLiveSince = Date.now();\n emitter.emit(\"live\", state);\n }\n }\n }\n else if (isRecordWith(\"warnings\", json)) {\n console.warn(\"\".concat(callerName, \" warnings\"), json);\n }\n else if (isRecordWith(\"errors\", json)) {\n console.error(\"\".concat(callerName, \" errors\"), json);\n }\n else {\n console.error(\"\".concat(callerName, \" unknown message\"), json);\n }\n };\n var closeStream = function (status) {\n streamClosed = true;\n emitter.emit(\"close\", status);\n emitter.removeAllListeners();\n };\n var onWsClose = function () {\n if (streamClosed === false) {\n var now = new Date().getTime();\n // we want to try and keep the stream open, so we try to reconnect\n // the underlying ws\n if (lastOffset !== undefined &&\n isLiveSince !== undefined &&\n now - isLiveSince >= _this.reconnectThreshold) {\n isLiveSince = undefined;\n isReconnecting = true;\n ws = new isomorphic_ws_1.default(_this.wsBaseUrl + endpoint, protocols);\n ws.addEventListener(\"open\", onWsOpen);\n ws.addEventListener(\"message\", onWsMessage);\n ws.addEventListener(\"close\", onWsClose);\n }\n else {\n // ws has closed too quickly / never managed to connect: we give up\n closeStream({ code: 4001, reason: \"ws connection failed\" });\n }\n } // no else: if the stream is closed we don't need to keep a ws\n };\n ws.addEventListener(\"open\", onWsOpen);\n ws.addEventListener(\"message\", onWsMessage);\n // NOTE(MH): We ignore the 'error' event since it is always followed by a\n // 'close' event, which we need to handle anyway.\n ws.addEventListener(\"close\", onWsClose);\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n var on = function (type, listener) {\n if (streamClosed === false) {\n void emitter.on(type, listener);\n }\n else {\n console.error(\"Trying to add a listener to a closed stream.\");\n }\n };\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n var off = function (type, listener) {\n if (streamClosed === false) {\n void emitter.off(type, listener);\n }\n else {\n console.error(\"Trying to remove a listener from a closed stream.\");\n }\n };\n var close = function () {\n // Note: ws.close will trigger the onClose handlers of the WebSocket\n // (here onWsClose), but they execute as a separate event after the\n // current event in the JS event loop, i.e. in particular after the call\n // to closeStream and thus, in this case, the onWsClose handler will see\n // streamClosed as true.\n ws.close();\n closeStream({ code: 4000, reason: \"called .close()\" });\n };\n return { on: on, off: off, close: close };\n };\n /**\n * Retrieve a consolidated stream of events for a given template and query.\n *\n * The accumulated state is the current set of active contracts matching the query. When no\n * `query` argument is given, all events visible to the submitting party are returned. When a\n * `query` argument is given, only those create events matching the query are returned. See\n * https://docs.daml.com/json-api/search-query-language.html for a description of the query\n * language.\n *\n * @deprecated Prefer `streamQueries`.\n *\n * @param template The contract template to match contracts against.\n * @param query The query to match contracts agains.\n *\n * @typeparam T The contract template type.\n * @typeparam K The contract key type.\n * @typeparam I The contract id type.\n *\n */\n Ledger.prototype.streamQuery = function (template, query) {\n if (query === undefined) {\n return this.streamQueryCommon(template, [], \"Ledger.streamQuery\");\n }\n else {\n return this.streamQueryCommon(template, [query], \"Ledger.streamQuery\");\n }\n };\n /**\n * @internal\n *\n */\n Ledger.prototype.streamQueryCommon = function (template, queries, name) {\n if (this.multiplexQueryStreams) {\n return this.queryStreamsManager.streamSubmit(template, queries, name);\n }\n else {\n var request_3 = queries.length == 0\n ? [{ templateIds: [template.templateId] }]\n : queries.map(function (q) { return ({\n templateIds: [template.templateId],\n query: encodeQuery(template, q),\n }); });\n var reconnectRequest = function () { return request_3; };\n var change = function (contracts, events) {\n var archiveEvents = new Set();\n var createEvents = [];\n for (var _i = 0, events_5 = events; _i < events_5.length; _i++) {\n var event_3 = events_5[_i];\n if (\"created\" in event_3) {\n createEvents.push(event_3.created);\n }\n else if (\"archived\" in event_3) {\n archiveEvents.add(event_3.archived.contractId);\n }\n }\n return contracts\n .concat(createEvents)\n .filter(function (contract) { return !archiveEvents.has(contract.contractId); });\n };\n return this.streamSubmit(name, template, \"v1/stream/query\", request_3, reconnectRequest, [], change);\n }\n };\n /**\n * Retrieve a consolidated stream of events for a given template and queries.\n *\n * If the given list is empty, the accumulated state is the set of all active\n * contracts for the given template. Otherwise, the accumulated state is the\n * set of all contracts that match at least one of the given queries.\n *\n * See https://docs.daml.com/json-api/search-query-language.html for a\n * description of the query language.\n *\n * @param template The contract template to match contracts against.\n * @param queries A query to match contracts against.\n *\n * @typeparam T The contract template type.\n * @typeparam K The contract key type.\n * @typeparam I The contract id type.\n */\n Ledger.prototype.streamQueries = function (template, queries) {\n return this.streamQueryCommon(template, queries, \"Ledger.streamQueries\");\n };\n /**\n * Retrieve a consolidated stream of events for a given template and contract key.\n *\n * The accumulated state is either the current active contract for the given\n * key, or null if there is no active contract for the given key.\n *\n * @deprecated Prefer `streamFetchByKeys`.\n *\n * @typeparam T The contract template type.\n * @typeparam K The contract key type.\n * @typeparam I The contract id type.\n *\n */\n Ledger.prototype.streamFetchByKey = function (template, key) {\n // Note: this implementation is deliberately not unified with that of\n // `streamFetchByKeys`, because doing so would add the requirement that the\n // given key be in output format, whereas existing implementation supports\n // input format.\n var lastContractId = null;\n var request = [\n { templateId: template.templateId, key: template.keyEncode(key) },\n ];\n var reconnectRequest = function () { return [\n __assign(__assign({}, request[0]), { contractIdAtOffset: lastContractId && (0, types_1.ContractId)(template).encode(lastContractId) }),\n ]; };\n var change = function (contract, events) {\n for (var _i = 0, events_6 = events; _i < events_6.length; _i++) {\n var event_4 = events_6[_i];\n if (\"created\" in event_4) {\n contract = event_4.created;\n }\n else {\n // i.e. 'archived' event\n if (contract && contract.contractId === event_4.archived.contractId) {\n contract = null;\n }\n }\n }\n lastContractId = contract ? contract.contractId : null;\n return contract;\n };\n return this.streamSubmit(\"Ledger.streamFetchByKey\", template, \"v1/stream/fetch\", request, reconnectRequest, null, change);\n };\n /**\n * @internal\n *\n * Returns the same API as [[streamSubmit]] but does not, in fact, establish\n * any socket connection. Instead, this is a stream that always has the given\n * value as its accumulated state.\n */\n Ledger.prototype.constantStream = function (value) {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n function on(type, listener) {\n if (type === \"live\") {\n listener(value);\n }\n if (type === \"change\") {\n listener(value, []);\n }\n }\n // eslint-disable-next-line @typescript-eslint/no-explicit-any, @typescript-eslint/no-unused-vars, @typescript-eslint/no-empty-function\n function off(_t, _l) { }\n // eslint-disable-next-line @typescript-eslint/no-empty-function\n return { on: on, off: off, close: function () { } };\n };\n /**\n * Retrieve a consolidated stream of events for a list of keys and a single\n * template.\n *\n * The accumulated state is an array of the same length as the given list of\n * keys, with positional correspondence. Each element in the array represents\n * the current contract for the given key, or is explicitly null if there is\n * currently no active contract matching that key.\n *\n * Note: the given `key` objects will be compared for (deep) equality with\n * the values returned by the API. As such, they have to be given in the\n * \"output\" format of the API, including the values of\n * `encodeDecimalAsString` and `encodeInt64AsString`. See [the JSON API docs\n * for details](https://docs.daml.com/json-api/lf-value-specification.html).\n *\n * @typeparam T The contract template type.\n * @typeparam K The contract key type.\n * @typeparam I The contract id type.\n */\n Ledger.prototype.streamFetchByKeys = function (template, keys) {\n // We support zero-length key so clients can more easily manage a dynamic\n // list, without having to special-case 0-length on their side.\n if (keys.length == 0) {\n return this.constantStream([]);\n }\n var lastContractIds = Array(keys.length).fill(null);\n var keysCopy = lodash_1.default.cloneDeep(keys);\n var initState = Array(keys.length).fill(null);\n var request = keys.map(function (k) { return ({\n templateId: template.templateId,\n key: template.keyEncode(k),\n }); });\n var reconnectRequest = function () {\n return request.map(function (r, idx) {\n var lastId = lastContractIds[idx];\n return __assign(__assign({}, r), { contractIdAtOffset: lastId && (0, types_1.ContractId)(template).encode(lastId) });\n });\n };\n var change = function (state, events) {\n var newState = Array.from(state);\n var _loop_1 = function (event_5) {\n if (\"created\" in event_5) {\n var k_1 = event_5.created.key;\n keysCopy.forEach(function (requestKey, idx) {\n if (lodash_1.default.isEqual(requestKey, k_1)) {\n newState[idx] = event_5.created;\n }\n });\n }\n else {\n // i.e. 'archived' in event\n var id_1 = event_5.archived.contractId;\n newState.forEach(function (contract, idx) {\n if (contract && contract.contractId === id_1) {\n newState[idx] = null;\n }\n });\n }\n };\n for (var _i = 0, events_7 = events; _i < events_7.length; _i++) {\n var event_5 = events_7[_i];\n _loop_1(event_5);\n }\n newState.forEach(function (c, idx) {\n lastContractIds[idx] = c ? c.contractId : null;\n });\n return newState;\n };\n return this.streamSubmit(\"streamFetchByKeys\", template, \"v1/stream/fetch\", request, reconnectRequest, initState, change);\n };\n /**\n * Fetch parties by identifier.\n *\n * @param parties An array of Party identifiers.\n *\n * @returns An array of the same length, where each element corresponds to\n * the same-index element of the given parties, ans is either a PartyInfo\n * object if the party exists or null if it does not.\n *\n */\n Ledger.prototype.getParties = function (parties) {\n return __awaiter(this, void 0, void 0, function () {\n var json, resp, mapping, _i, resp_1, p, ret, idx;\n return __generator(this, function (_a) {\n switch (_a.label) {\n case 0:\n if (parties.length === 0) {\n return [2 /*return*/, []];\n }\n return [4 /*yield*/, this.submit(\"v1/parties\", parties)];\n case 1:\n json = _a.sent();\n resp = decode(jtv.array(partyInfoDecoder), json);\n mapping = {};\n for (_i = 0, resp_1 = resp; _i < resp_1.length; _i++) {\n p = resp_1[_i];\n mapping[p.identifier] = p;\n }\n ret = Array(parties.length).fill(null);\n for (idx = 0; idx < parties.length; idx++) {\n ret[idx] = mapping[parties[idx]] || null;\n }\n return [2 /*return*/, ret];\n }\n });\n });\n };\n /**\n * Fetch all parties on the ledger.\n *\n * @returns All parties on the ledger, in no particular order.\n *\n */\n Ledger.prototype.listKnownParties = function () {\n return __awaiter(this, void 0, void 0, function () {\n var json;\n return __generator(this, function (_a) {\n switch (_a.label) {\n case 0: return [4 /*yield*/, this.submit(\"v1/parties\", undefined, \"get\")];\n case 1:\n json = _a.sent();\n return [2 /*return*/, decode(jtv.array(partyInfoDecoder), json)];\n }\n });\n });\n };\n /**\n * Get the current user details obtained by the currently used JWT.\n *\n * @param userId The user id\n *\n * @returns User details\n *\n */\n Ledger.prototype.getUser = function (userId) {\n return __awaiter(this, void 0, void 0, function () {\n var json, _a;\n return __generator(this, function (_b) {\n switch (_b.label) {\n case 0:\n if (!(0, lodash_1.isUndefined)(userId)) return [3 /*break*/, 2];\n return [4 /*yield*/, this.submit(\"v1/user\", undefined, \"get\")];\n case 1:\n _a = _b.sent();\n return [3 /*break*/, 4];\n case 2: return [4 /*yield*/, this.submit(\"v1/user\", { userId: userId }, \"post\")];\n case 3:\n _a = _b.sent();\n _b.label = 4;\n case 4:\n json = _a;\n return [2 /*return*/, decode(userDecoder, json)];\n }\n });\n });\n };\n /**\n * Lists the users on the ledger\n *\n * @returns user list\n *\n */\n Ledger.prototype.listUsers = function () {\n return __awaiter(this, void 0, void 0, function () {\n var json;\n return __generator(this, function (_a) {\n switch (_a.label) {\n case 0: return [4 /*yield*/, this.submit(\"v1/users\", undefined, \"get\")];\n case 1:\n json = _a.sent();\n return [2 /*return*/, decode(jtv.array(userDecoder), json)];\n }\n });\n });\n };\n /**\n * Lists the rights associated with the given user id\n *\n * @param userId, if empty then the user id will obtained by the currently used JWT.\n *\n * @returns list of user rights\n */\n Ledger.prototype.listUserRights = function (userId) {\n return __awaiter(this, void 0, void 0, function () {\n var json, _a;\n return __generator(this, function (_b) {\n switch (_b.label) {\n case 0:\n if (!(0, lodash_1.isUndefined)(userId)) return [3 /*break*/, 2];\n return [4 /*yield*/, this.submit(\"v1/user/rights\", undefined, \"get\")];\n case 1:\n _a = _b.sent();\n return [3 /*break*/, 4];\n case 2: return [4 /*yield*/, this.submit(\"v1/user/rights\", { userId: userId })];\n case 3:\n _a = _b.sent();\n _b.label = 4;\n case 4:\n json = _a;\n return [2 /*return*/, decode(jtv.array(userRightDecoder), json)];\n }\n });\n });\n };\n /**\n * Grants rights to a user\n *\n * @param userId The user to which rights shall be granted\n *\n * @param rights The rights which shall be granted\n *\n * @returns The rights which actually were granted (if a right was already granted, then it will not be in the return list)\n */\n Ledger.prototype.grantUserRights = function (userId, rights) {\n return __awaiter(this, void 0, void 0, function () {\n var json;\n return __generator(this, function (_a) {\n switch (_a.label) {\n case 0: return [4 /*yield*/, this.submit(\"v1/user/rights/grant\", {\n userId: userId,\n rights: rights,\n })];\n case 1:\n json = _a.sent();\n return [2 /*return*/, decode(jtv.array(userRightDecoder), json)];\n }\n });\n });\n };\n /**\n * Revokes rights from a user\n *\n * @param userId The user from which rights shall be revoked\n *\n * @param rights The rights which shall be revoked\n *\n * @returns The rights which actually were revoked (if a right was already revoked, then it will not be in the return list)\n */\n Ledger.prototype.revokeUserRights = function (userId, rights) {\n return __awaiter(this, void 0, void 0, function () {\n var json;\n return __generator(this, function (_a) {\n switch (_a.label) {\n case 0: return [4 /*yield*/, this.submit(\"v1/user/rights/revoke\", {\n userId: userId,\n rights: rights,\n })];\n case 1:\n json = _a.sent();\n return [2 /*return*/, decode(jtv.array(userRightDecoder), json)];\n }\n });\n });\n };\n /**\n * Creates a user\n *\n * @param userId The user ID\n * @param rights The initial rights the user should have\n * @param primaryParty The primary party the user should have\n *\n */\n Ledger.prototype.createUser = function (userId, rights, primaryParty) {\n return __awaiter(this, void 0, void 0, function () {\n return __generator(this, function (_a) {\n switch (_a.label) {\n case 0: return [4 /*yield*/, this.submit(\"v1/user/create\", {\n userId: userId,\n rights: rights,\n primaryParty: primaryParty,\n })];\n case 1:\n _a.sent();\n return [2 /*return*/];\n }\n });\n });\n };\n /**\n * Deletes a user\n *\n * @param userId The user ID\n * @param rights The initial rights the user should have\n * @param primaryParty The primary party the user should have\n *\n */\n Ledger.prototype.deleteUser = function (userId) {\n return __awaiter(this, void 0, void 0, function () {\n return __generator(this, function (_a) {\n switch (_a.label) {\n case 0: return [4 /*yield*/, this.submit(\"v1/user/delete\", { userId: userId })];\n case 1:\n _a.sent();\n return [2 /*return*/];\n }\n });\n });\n };\n /**\n * Allocate a new party.\n *\n * @param partyOpt Parameters for party allocation.\n *\n * @returns PartyInfo for the newly created party.\n *\n */\n Ledger.prototype.allocateParty = function (partyOpt) {\n return __awaiter(this, void 0, void 0, function () {\n var json;\n return __generator(this, function (_a) {\n switch (_a.label) {\n case 0: return [4 /*yield*/, this.submit(\"v1/parties/allocate\", partyOpt)];\n case 1:\n json = _a.sent();\n return [2 /*return*/, decode(partyInfoDecoder, json)];\n }\n });\n });\n };\n /**\n * Fetch a list of all package IDs from the ledger.\n *\n * @returns List of package IDs.\n *\n */\n Ledger.prototype.listPackages = function () {\n return __awaiter(this, void 0, void 0, function () {\n var json;\n return __generator(this, function (_a) {\n switch (_a.label) {\n case 0: return [4 /*yield*/, this.submit(\"v1/packages\", undefined, \"get\")];\n case 1:\n json = _a.sent();\n return [2 /*return*/, decode(jtv.array(jtv.string()), json)];\n }\n });\n });\n };\n /**\n * Fetch a binary package.\n *\n * @returns The content of the package as a raw ArrayBuffer.\n *\n */\n Ledger.prototype.getPackage = function (id) {\n return __awaiter(this, void 0, void 0, function () {\n var httpResponse;\n return __generator(this, function (_a) {\n switch (_a.label) {\n case 0: return [4 /*yield*/, (0, cross_fetch_1.default)(this.httpBaseUrl + \"v1/packages/\" + id, {\n headers: this.auth(),\n method: \"get\",\n })];\n case 1:\n httpResponse = _a.sent();\n return [4 /*yield*/, this.throwOnError(httpResponse)];\n case 2:\n _a.sent();\n return [4 /*yield*/, httpResponse.arrayBuffer()];\n case 3: return [2 /*return*/, _a.sent()];\n }\n });\n });\n };\n /**\n * Upload a binary archive. Note that this requires admin privileges.\n *\n * @returns No return value on success; throws on error.\n *\n */\n Ledger.prototype.uploadDarFile = function (abuf) {\n return __awaiter(this, void 0, void 0, function () {\n var httpResponse;\n return __generator(this, function (_a) {\n switch (_a.label) {\n case 0: return [4 /*yield*/, (0, cross_fetch_1.default)(this.httpBaseUrl + \"v1/packages\", {\n body: abuf,\n headers: __assign(__assign({}, this.auth()), { \"Content-type\": \"application/octet-stream\" }),\n method: \"post\",\n })];\n case 1:\n httpResponse = _a.sent();\n return [4 /*yield*/, this.throwOnError(httpResponse)];\n case 2:\n _a.sent();\n return [2 /*return*/];\n }\n });\n });\n };\n return Ledger;\n}());\nexports.Ledger = Ledger;\nexports.default = Ledger;\n//# sourceMappingURL=index.js.map","'use strict'\n/* eslint-disable-next-line no-unused-vars */\nfunction __export(m) {\n /* eslint-disable-next-line no-prototype-builtins */\n for (var p in m) if (!exports.hasOwnProperty(p)) exports[p] = m[p]\n}\nObject.defineProperty(exports, '__esModule', { value: true })\n/* eslint-disable-next-line no-unused-vars */\nvar jtv = require('@mojotech/json-type-validation')\n/* eslint-disable-next-line no-unused-vars */\nvar damlTypes = require('@daml/types')\n/* eslint-disable-next-line no-unused-vars */\nvar damlLedger = require('@daml/ledger')\n\nexports.Archive = {\n decoder: damlTypes.lazyMemo(function () {\n return jtv.object({})\n }),\n encode: function (__typed__) {\n return {}\n },\n}\n","'use strict'\n/* eslint-disable-next-line no-unused-vars */\nfunction __export(m) {\n /* eslint-disable-next-line no-prototype-builtins */\n for (var p in m) if (!exports.hasOwnProperty(p)) exports[p] = m[p]\n}\nObject.defineProperty(exports, '__esModule', { value: true })\n__export(require('./module'))\n","'use strict'\n/* eslint-disable-next-line no-unused-vars */\nfunction __export(m) {\n /* eslint-disable-next-line no-prototype-builtins */\n for (var p in m) if (!exports.hasOwnProperty(p)) exports[p] = m[p]\n}\nObject.defineProperty(exports, '__esModule', { value: true })\nvar Template = require('./Template')\nexports.Template = Template\n","'use strict'\n/* eslint-disable-next-line no-unused-vars */\nfunction __export(m) {\n /* eslint-disable-next-line no-prototype-builtins */\n for (var p in m) if (!exports.hasOwnProperty(p)) exports[p] = m[p]\n}\nObject.defineProperty(exports, '__esModule', { value: true })\nvar Internal = require('./Internal')\nexports.Internal = Internal\n","'use strict'\n/* eslint-disable-next-line no-unused-vars */\nfunction __export(m) {\n /* eslint-disable-next-line no-prototype-builtins */\n for (var p in m) if (!exports.hasOwnProperty(p)) exports[p] = m[p]\n}\nObject.defineProperty(exports, '__esModule', { value: true })\nvar DA = require('./DA')\nexports.DA = DA\nexports.packageId =\n '9e70a8b3510d617f8a136213f33d6a903a10ca0eeec76bb06ba55d1ed9680f69'\n","'use strict'\n/* eslint-disable-next-line no-unused-vars */\nfunction __export(m) {\n /* eslint-disable-next-line no-prototype-builtins */\n for (var p in m) if (!exports.hasOwnProperty(p)) exports[p] = m[p]\n}\nObject.defineProperty(exports, '__esModule', { value: true })\n/* eslint-disable-next-line no-unused-vars */\nvar jtv = require('@mojotech/json-type-validation')\n/* eslint-disable-next-line no-unused-vars */\nvar damlTypes = require('@daml/types')\n/* eslint-disable-next-line no-unused-vars */\nvar damlLedger = require('@daml/ledger')\n\nexports.RelTime = {\n decoder: damlTypes.lazyMemo(function () {\n return jtv.object({ microseconds: damlTypes.Int.decoder })\n }),\n encode: function (__typed__) {\n return {\n microseconds: damlTypes.Int.encode(__typed__.microseconds),\n }\n },\n}\n","'use strict'\n/* eslint-disable-next-line no-unused-vars */\nfunction __export(m) {\n /* eslint-disable-next-line no-prototype-builtins */\n for (var p in m) if (!exports.hasOwnProperty(p)) exports[p] = m[p]\n}\nObject.defineProperty(exports, '__esModule', { value: true })\n__export(require('./module'))\n","'use strict'\n/* eslint-disable-next-line no-unused-vars */\nfunction __export(m) {\n /* eslint-disable-next-line no-prototype-builtins */\n for (var p in m) if (!exports.hasOwnProperty(p)) exports[p] = m[p]\n}\nObject.defineProperty(exports, '__esModule', { value: true })\nvar Types = require('./Types')\nexports.Types = Types\n","'use strict'\n/* eslint-disable-next-line no-unused-vars */\nfunction __export(m) {\n /* eslint-disable-next-line no-prototype-builtins */\n for (var p in m) if (!exports.hasOwnProperty(p)) exports[p] = m[p]\n}\nObject.defineProperty(exports, '__esModule', { value: true })\nvar Time = require('./Time')\nexports.Time = Time\n","'use strict'\n/* eslint-disable-next-line no-unused-vars */\nfunction __export(m) {\n /* eslint-disable-next-line no-prototype-builtins */\n for (var p in m) if (!exports.hasOwnProperty(p)) exports[p] = m[p]\n}\nObject.defineProperty(exports, '__esModule', { value: true })\nvar DA = require('./DA')\nexports.DA = DA\nexports.packageId =\n 'b70db8369e1c461d5c70f1c86f526a29e9776c655e6ffc2560f95b05ccb8b946'\n","'use strict'\n/* eslint-disable-next-line no-unused-vars */\nfunction __export(m) {\n /* eslint-disable-next-line no-prototype-builtins */\n for (var p in m) if (!exports.hasOwnProperty(p)) exports[p] = m[p]\n}\nObject.defineProperty(exports, '__esModule', { value: true })\n/* eslint-disable-next-line no-unused-vars */\nvar jtv = require('@mojotech/json-type-validation')\n/* eslint-disable-next-line no-unused-vars */\nvar damlTypes = require('@daml/types')\n/* eslint-disable-next-line no-unused-vars */\nvar damlLedger = require('@daml/ledger')\n\nvar pkg9e70a8b3510d617f8a136213f33d6a903a10ca0eeec76bb06ba55d1ed9680f69 = require('@daml.js/ghc-stdlib-DA-Internal-Template-1.0.0')\nvar pkgb70db8369e1c461d5c70f1c86f526a29e9776c655e6ffc2560f95b05ccb8b946 = require('@daml.js/daml-stdlib-DA-Time-Types-1.0.0')\n\nexports.AnyContract = damlTypes.assembleInterface(\n 'a132be8b23c8515da6c828dd97519a73d9c8b1aa6f9cddd3c7acc206e4b41f8c:Splice.Api.Token.MetadataV1:AnyContract',\n function () {\n return exports.AnyContractView\n },\n {\n Archive: {\n template: function () {\n return exports.AnyContract\n },\n choiceName: 'Archive',\n argumentDecoder: damlTypes.lazyMemo(function () {\n return pkg9e70a8b3510d617f8a136213f33d6a903a10ca0eeec76bb06ba55d1ed9680f69\n .DA.Internal.Template.Archive.decoder\n }),\n argumentEncode: function (__typed__) {\n return pkg9e70a8b3510d617f8a136213f33d6a903a10ca0eeec76bb06ba55d1ed9680f69.DA.Internal.Template.Archive.encode(\n __typed__\n )\n },\n resultDecoder: damlTypes.lazyMemo(function () {\n return damlTypes.Unit.decoder\n }),\n resultEncode: function (__typed__) {\n return damlTypes.Unit.encode(__typed__)\n },\n },\n }\n)\n\nexports.ChoiceExecutionMetadata = {\n decoder: damlTypes.lazyMemo(function () {\n return jtv.object({ meta: exports.Metadata.decoder })\n }),\n encode: function (__typed__) {\n return {\n meta: exports.Metadata.encode(__typed__.meta),\n }\n },\n}\n\nexports.ExtraArgs = {\n decoder: damlTypes.lazyMemo(function () {\n return jtv.object({\n context: exports.ChoiceContext.decoder,\n meta: exports.Metadata.decoder,\n })\n }),\n encode: function (__typed__) {\n return {\n context: exports.ChoiceContext.encode(__typed__.context),\n meta: exports.Metadata.encode(__typed__.meta),\n }\n },\n}\n\nexports.Metadata = {\n decoder: damlTypes.lazyMemo(function () {\n return jtv.object({ values: damlTypes.TextMap(damlTypes.Text).decoder })\n }),\n encode: function (__typed__) {\n return {\n values: damlTypes.TextMap(damlTypes.Text).encode(__typed__.values),\n }\n },\n}\n\nexports.ChoiceContext = {\n decoder: damlTypes.lazyMemo(function () {\n return jtv.object({\n values: damlTypes.TextMap(exports.AnyValue).decoder,\n })\n }),\n encode: function (__typed__) {\n return {\n values: damlTypes\n .TextMap(exports.AnyValue)\n .encode(__typed__.values),\n }\n },\n}\n\nexports.AnyContractView = {\n decoder: damlTypes.lazyMemo(function () {\n return jtv.object({})\n }),\n encode: function (__typed__) {\n return {}\n },\n}\n\nexports.AnyValue = {\n decoder: damlTypes.lazyMemo(function () {\n return jtv.oneOf(\n jtv.object({\n tag: jtv.constant('AV_Text'),\n value: damlTypes.Text.decoder,\n }),\n jtv.object({\n tag: jtv.constant('AV_Int'),\n value: damlTypes.Int.decoder,\n }),\n jtv.object({\n tag: jtv.constant('AV_Decimal'),\n value: damlTypes.Numeric(10).decoder,\n }),\n jtv.object({\n tag: jtv.constant('AV_Bool'),\n value: damlTypes.Bool.decoder,\n }),\n jtv.object({\n tag: jtv.constant('AV_Date'),\n value: damlTypes.Date.decoder,\n }),\n jtv.object({\n tag: jtv.constant('AV_Time'),\n value: damlTypes.Time.decoder,\n }),\n jtv.object({\n tag: jtv.constant('AV_RelTime'),\n value: pkgb70db8369e1c461d5c70f1c86f526a29e9776c655e6ffc2560f95b05ccb8b946\n .DA.Time.Types.RelTime.decoder,\n }),\n jtv.object({\n tag: jtv.constant('AV_Party'),\n value: damlTypes.Party.decoder,\n }),\n jtv.object({\n tag: jtv.constant('AV_ContractId'),\n value: damlTypes.ContractId(exports.AnyContract).decoder,\n }),\n jtv.object({\n tag: jtv.constant('AV_List'),\n value: damlTypes.List(exports.AnyValue).decoder,\n }),\n jtv.object({\n tag: jtv.constant('AV_Map'),\n value: damlTypes.TextMap(exports.AnyValue).decoder,\n })\n )\n }),\n encode: function (__typed__) {\n switch (__typed__.tag) {\n case 'AV_Text':\n return {\n tag: __typed__.tag,\n value: damlTypes.Text.encode(__typed__.value),\n }\n case 'AV_Int':\n return {\n tag: __typed__.tag,\n value: damlTypes.Int.encode(__typed__.value),\n }\n case 'AV_Decimal':\n return {\n tag: __typed__.tag,\n value: damlTypes.Numeric(10).encode(__typed__.value),\n }\n case 'AV_Bool':\n return {\n tag: __typed__.tag,\n value: damlTypes.Bool.encode(__typed__.value),\n }\n case 'AV_Date':\n return {\n tag: __typed__.tag,\n value: damlTypes.Date.encode(__typed__.value),\n }\n case 'AV_Time':\n return {\n tag: __typed__.tag,\n value: damlTypes.Time.encode(__typed__.value),\n }\n case 'AV_RelTime':\n return {\n tag: __typed__.tag,\n value: pkgb70db8369e1c461d5c70f1c86f526a29e9776c655e6ffc2560f95b05ccb8b946.DA.Time.Types.RelTime.encode(\n __typed__.value\n ),\n }\n case 'AV_Party':\n return {\n tag: __typed__.tag,\n value: damlTypes.Party.encode(__typed__.value),\n }\n case 'AV_ContractId':\n return {\n tag: __typed__.tag,\n value: damlTypes\n .ContractId(exports.AnyContract)\n .encode(__typed__.value),\n }\n case 'AV_List':\n return {\n tag: __typed__.tag,\n value: damlTypes\n .List(exports.AnyValue)\n .encode(__typed__.value),\n }\n case 'AV_Map':\n return {\n tag: __typed__.tag,\n value: damlTypes\n .TextMap(exports.AnyValue)\n .encode(__typed__.value),\n }\n default:\n throw (\n 'unrecognized type tag: ' +\n __typed__.tag +\n ' while serializing a value of type AnyValue'\n )\n }\n },\n}\n","'use strict'\n/* eslint-disable-next-line no-unused-vars */\nfunction __export(m) {\n /* eslint-disable-next-line no-prototype-builtins */\n for (var p in m) if (!exports.hasOwnProperty(p)) exports[p] = m[p]\n}\nObject.defineProperty(exports, '__esModule', { value: true })\n/* eslint-disable-next-line no-unused-vars */\nvar jtv = require('@mojotech/json-type-validation')\n/* eslint-disable-next-line no-unused-vars */\nvar damlTypes = require('@daml/types')\n/* eslint-disable-next-line no-unused-vars */\nvar damlLedger = require('@daml/ledger')\n\nvar pkg9e70a8b3510d617f8a136213f33d6a903a10ca0eeec76bb06ba55d1ed9680f69 = require('@daml.js/ghc-stdlib-DA-Internal-Template-1.0.0')\nvar pkgb70db8369e1c461d5c70f1c86f526a29e9776c655e6ffc2560f95b05ccb8b946 = require('@daml.js/daml-stdlib-DA-Time-Types-1.0.0')\n\nvar Splice_Api_Token_MetadataV1 = require('../../../../Splice/Api/Token/MetadataV1/module')\n\nexports.Holding = damlTypes.assembleInterface(\n 'a132be8b23c8515da6c828dd97519a73d9c8b1aa6f9cddd3c7acc206e4b41f8c:Splice.Api.Token.HoldingV1:Holding',\n function () {\n return exports.HoldingView\n },\n {\n Archive: {\n template: function () {\n return exports.Holding\n },\n choiceName: 'Archive',\n argumentDecoder: damlTypes.lazyMemo(function () {\n return pkg9e70a8b3510d617f8a136213f33d6a903a10ca0eeec76bb06ba55d1ed9680f69\n .DA.Internal.Template.Archive.decoder\n }),\n argumentEncode: function (__typed__) {\n return pkg9e70a8b3510d617f8a136213f33d6a903a10ca0eeec76bb06ba55d1ed9680f69.DA.Internal.Template.Archive.encode(\n __typed__\n )\n },\n resultDecoder: damlTypes.lazyMemo(function () {\n return damlTypes.Unit.decoder\n }),\n resultEncode: function (__typed__) {\n return damlTypes.Unit.encode(__typed__)\n },\n },\n }\n)\n\nexports.HoldingView = {\n decoder: damlTypes.lazyMemo(function () {\n return jtv.object({\n owner: damlTypes.Party.decoder,\n instrumentId: exports.InstrumentId.decoder,\n amount: damlTypes.Numeric(10).decoder,\n lock: jtv.Decoder.withDefault(\n null,\n damlTypes.Optional(exports.Lock).decoder\n ),\n meta: Splice_Api_Token_MetadataV1.Metadata.decoder,\n })\n }),\n encode: function (__typed__) {\n return {\n owner: damlTypes.Party.encode(__typed__.owner),\n instrumentId: exports.InstrumentId.encode(__typed__.instrumentId),\n amount: damlTypes.Numeric(10).encode(__typed__.amount),\n lock: damlTypes.Optional(exports.Lock).encode(__typed__.lock),\n meta: Splice_Api_Token_MetadataV1.Metadata.encode(__typed__.meta),\n }\n },\n}\n\nexports.Lock = {\n decoder: damlTypes.lazyMemo(function () {\n return jtv.object({\n holders: damlTypes.List(damlTypes.Party).decoder,\n expiresAt: jtv.Decoder.withDefault(\n null,\n damlTypes.Optional(damlTypes.Time).decoder\n ),\n expiresAfter: jtv.Decoder.withDefault(\n null,\n damlTypes.Optional(\n pkgb70db8369e1c461d5c70f1c86f526a29e9776c655e6ffc2560f95b05ccb8b946\n .DA.Time.Types.RelTime\n ).decoder\n ),\n context: jtv.Decoder.withDefault(\n null,\n damlTypes.Optional(damlTypes.Text).decoder\n ),\n })\n }),\n encode: function (__typed__) {\n return {\n holders: damlTypes.List(damlTypes.Party).encode(__typed__.holders),\n expiresAt: damlTypes\n .Optional(damlTypes.Time)\n .encode(__typed__.expiresAt),\n expiresAfter: damlTypes\n .Optional(\n pkgb70db8369e1c461d5c70f1c86f526a29e9776c655e6ffc2560f95b05ccb8b946\n .DA.Time.Types.RelTime\n )\n .encode(__typed__.expiresAfter),\n context: damlTypes\n .Optional(damlTypes.Text)\n .encode(__typed__.context),\n }\n },\n}\n\nexports.InstrumentId = {\n decoder: damlTypes.lazyMemo(function () {\n return jtv.object({\n admin: damlTypes.Party.decoder,\n id: damlTypes.Text.decoder,\n })\n }),\n encode: function (__typed__) {\n return {\n admin: damlTypes.Party.encode(__typed__.admin),\n id: damlTypes.Text.encode(__typed__.id),\n }\n },\n}\n","'use strict'\n/* eslint-disable-next-line no-unused-vars */\nfunction __export(m) {\n /* eslint-disable-next-line no-prototype-builtins */\n for (var p in m) if (!exports.hasOwnProperty(p)) exports[p] = m[p]\n}\nObject.defineProperty(exports, '__esModule', { value: true })\n/* eslint-disable-next-line no-unused-vars */\nvar jtv = require('@mojotech/json-type-validation')\n/* eslint-disable-next-line no-unused-vars */\nvar damlTypes = require('@daml/types')\n/* eslint-disable-next-line no-unused-vars */\nvar damlLedger = require('@daml/ledger')\n\nvar pkg9e70a8b3510d617f8a136213f33d6a903a10ca0eeec76bb06ba55d1ed9680f69 = require('@daml.js/ghc-stdlib-DA-Internal-Template-1.0.0')\n\nvar Splice_Api_Token_HoldingV1 = require('../../../../Splice/Api/Token/HoldingV1/module')\nvar Splice_Api_Token_MetadataV1 = require('../../../../Splice/Api/Token/MetadataV1/module')\n\nexports.Allocation = damlTypes.assembleInterface(\n 'a132be8b23c8515da6c828dd97519a73d9c8b1aa6f9cddd3c7acc206e4b41f8c:Splice.Api.Token.AllocationV1:Allocation',\n function () {\n return exports.AllocationView\n },\n {\n Archive: {\n template: function () {\n return exports.Allocation\n },\n choiceName: 'Archive',\n argumentDecoder: damlTypes.lazyMemo(function () {\n return pkg9e70a8b3510d617f8a136213f33d6a903a10ca0eeec76bb06ba55d1ed9680f69\n .DA.Internal.Template.Archive.decoder\n }),\n argumentEncode: function (__typed__) {\n return pkg9e70a8b3510d617f8a136213f33d6a903a10ca0eeec76bb06ba55d1ed9680f69.DA.Internal.Template.Archive.encode(\n __typed__\n )\n },\n resultDecoder: damlTypes.lazyMemo(function () {\n return damlTypes.Unit.decoder\n }),\n resultEncode: function (__typed__) {\n return damlTypes.Unit.encode(__typed__)\n },\n },\n Allocation_Withdraw: {\n template: function () {\n return exports.Allocation\n },\n choiceName: 'Allocation_Withdraw',\n argumentDecoder: damlTypes.lazyMemo(function () {\n return exports.Allocation_Withdraw.decoder\n }),\n argumentEncode: function (__typed__) {\n return exports.Allocation_Withdraw.encode(__typed__)\n },\n resultDecoder: damlTypes.lazyMemo(function () {\n return exports.Allocation_WithdrawResult.decoder\n }),\n resultEncode: function (__typed__) {\n return exports.Allocation_WithdrawResult.encode(__typed__)\n },\n },\n Allocation_Cancel: {\n template: function () {\n return exports.Allocation\n },\n choiceName: 'Allocation_Cancel',\n argumentDecoder: damlTypes.lazyMemo(function () {\n return exports.Allocation_Cancel.decoder\n }),\n argumentEncode: function (__typed__) {\n return exports.Allocation_Cancel.encode(__typed__)\n },\n resultDecoder: damlTypes.lazyMemo(function () {\n return exports.Allocation_CancelResult.decoder\n }),\n resultEncode: function (__typed__) {\n return exports.Allocation_CancelResult.encode(__typed__)\n },\n },\n Allocation_ExecuteTransfer: {\n template: function () {\n return exports.Allocation\n },\n choiceName: 'Allocation_ExecuteTransfer',\n argumentDecoder: damlTypes.lazyMemo(function () {\n return exports.Allocation_ExecuteTransfer.decoder\n }),\n argumentEncode: function (__typed__) {\n return exports.Allocation_ExecuteTransfer.encode(__typed__)\n },\n resultDecoder: damlTypes.lazyMemo(function () {\n return exports.Allocation_ExecuteTransferResult.decoder\n }),\n resultEncode: function (__typed__) {\n return exports.Allocation_ExecuteTransferResult.encode(\n __typed__\n )\n },\n },\n }\n)\n\nexports.Allocation_WithdrawResult = {\n decoder: damlTypes.lazyMemo(function () {\n return jtv.object({\n senderHoldingCids: damlTypes.List(\n damlTypes.ContractId(Splice_Api_Token_HoldingV1.Holding)\n ).decoder,\n meta: Splice_Api_Token_MetadataV1.Metadata.decoder,\n })\n }),\n encode: function (__typed__) {\n return {\n senderHoldingCids: damlTypes\n .List(damlTypes.ContractId(Splice_Api_Token_HoldingV1.Holding))\n .encode(__typed__.senderHoldingCids),\n meta: Splice_Api_Token_MetadataV1.Metadata.encode(__typed__.meta),\n }\n },\n}\n\nexports.Allocation_CancelResult = {\n decoder: damlTypes.lazyMemo(function () {\n return jtv.object({\n senderHoldingCids: damlTypes.List(\n damlTypes.ContractId(Splice_Api_Token_HoldingV1.Holding)\n ).decoder,\n meta: Splice_Api_Token_MetadataV1.Metadata.decoder,\n })\n }),\n encode: function (__typed__) {\n return {\n senderHoldingCids: damlTypes\n .List(damlTypes.ContractId(Splice_Api_Token_HoldingV1.Holding))\n .encode(__typed__.senderHoldingCids),\n meta: Splice_Api_Token_MetadataV1.Metadata.encode(__typed__.meta),\n }\n },\n}\n\nexports.Allocation_ExecuteTransferResult = {\n decoder: damlTypes.lazyMemo(function () {\n return jtv.object({\n senderHoldingCids: damlTypes.List(\n damlTypes.ContractId(Splice_Api_Token_HoldingV1.Holding)\n ).decoder,\n receiverHoldingCids: damlTypes.List(\n damlTypes.ContractId(Splice_Api_Token_HoldingV1.Holding)\n ).decoder,\n meta: Splice_Api_Token_MetadataV1.Metadata.decoder,\n })\n }),\n encode: function (__typed__) {\n return {\n senderHoldingCids: damlTypes\n .List(damlTypes.ContractId(Splice_Api_Token_HoldingV1.Holding))\n .encode(__typed__.senderHoldingCids),\n receiverHoldingCids: damlTypes\n .List(damlTypes.ContractId(Splice_Api_Token_HoldingV1.Holding))\n .encode(__typed__.receiverHoldingCids),\n meta: Splice_Api_Token_MetadataV1.Metadata.encode(__typed__.meta),\n }\n },\n}\n\nexports.Allocation_Withdraw = {\n decoder: damlTypes.lazyMemo(function () {\n return jtv.object({\n extraArgs: Splice_Api_Token_MetadataV1.ExtraArgs.decoder,\n })\n }),\n encode: function (__typed__) {\n return {\n extraArgs: Splice_Api_Token_MetadataV1.ExtraArgs.encode(\n __typed__.extraArgs\n ),\n }\n },\n}\n\nexports.Allocation_Cancel = {\n decoder: damlTypes.lazyMemo(function () {\n return jtv.object({\n extraArgs: Splice_Api_Token_MetadataV1.ExtraArgs.decoder,\n })\n }),\n encode: function (__typed__) {\n return {\n extraArgs: Splice_Api_Token_MetadataV1.ExtraArgs.encode(\n __typed__.extraArgs\n ),\n }\n },\n}\n\nexports.Allocation_ExecuteTransfer = {\n decoder: damlTypes.lazyMemo(function () {\n return jtv.object({\n extraArgs: Splice_Api_Token_MetadataV1.ExtraArgs.decoder,\n })\n }),\n encode: function (__typed__) {\n return {\n extraArgs: Splice_Api_Token_MetadataV1.ExtraArgs.encode(\n __typed__.extraArgs\n ),\n }\n },\n}\n\nexports.AllocationView = {\n decoder: damlTypes.lazyMemo(function () {\n return jtv.object({\n allocation: exports.AllocationSpecification.decoder,\n holdingCids: damlTypes.List(\n damlTypes.ContractId(Splice_Api_Token_HoldingV1.Holding)\n ).decoder,\n meta: Splice_Api_Token_MetadataV1.Metadata.decoder,\n })\n }),\n encode: function (__typed__) {\n return {\n allocation: exports.AllocationSpecification.encode(\n __typed__.allocation\n ),\n holdingCids: damlTypes\n .List(damlTypes.ContractId(Splice_Api_Token_HoldingV1.Holding))\n .encode(__typed__.holdingCids),\n meta: Splice_Api_Token_MetadataV1.Metadata.encode(__typed__.meta),\n }\n },\n}\n\nexports.AllocationSpecification = {\n decoder: damlTypes.lazyMemo(function () {\n return jtv.object({\n settlement: exports.SettlementInfo.decoder,\n transferLegId: damlTypes.Text.decoder,\n transferLeg: exports.TransferLeg.decoder,\n })\n }),\n encode: function (__typed__) {\n return {\n settlement: exports.SettlementInfo.encode(__typed__.settlement),\n transferLegId: damlTypes.Text.encode(__typed__.transferLegId),\n transferLeg: exports.TransferLeg.encode(__typed__.transferLeg),\n }\n },\n}\n\nexports.TransferLeg = {\n decoder: damlTypes.lazyMemo(function () {\n return jtv.object({\n sender: damlTypes.Party.decoder,\n receiver: damlTypes.Party.decoder,\n amount: damlTypes.Numeric(10).decoder,\n instrumentId: Splice_Api_Token_HoldingV1.InstrumentId.decoder,\n meta: Splice_Api_Token_MetadataV1.Metadata.decoder,\n })\n }),\n encode: function (__typed__) {\n return {\n sender: damlTypes.Party.encode(__typed__.sender),\n receiver: damlTypes.Party.encode(__typed__.receiver),\n amount: damlTypes.Numeric(10).encode(__typed__.amount),\n instrumentId: Splice_Api_Token_HoldingV1.InstrumentId.encode(\n __typed__.instrumentId\n ),\n meta: Splice_Api_Token_MetadataV1.Metadata.encode(__typed__.meta),\n }\n },\n}\n\nexports.SettlementInfo = {\n decoder: damlTypes.lazyMemo(function () {\n return jtv.object({\n executor: damlTypes.Party.decoder,\n settlementRef: exports.Reference.decoder,\n requestedAt: damlTypes.Time.decoder,\n allocateBefore: damlTypes.Time.decoder,\n settleBefore: damlTypes.Time.decoder,\n meta: Splice_Api_Token_MetadataV1.Metadata.decoder,\n })\n }),\n encode: function (__typed__) {\n return {\n executor: damlTypes.Party.encode(__typed__.executor),\n settlementRef: exports.Reference.encode(__typed__.settlementRef),\n requestedAt: damlTypes.Time.encode(__typed__.requestedAt),\n allocateBefore: damlTypes.Time.encode(__typed__.allocateBefore),\n settleBefore: damlTypes.Time.encode(__typed__.settleBefore),\n meta: Splice_Api_Token_MetadataV1.Metadata.encode(__typed__.meta),\n }\n },\n}\n\nexports.Reference = {\n decoder: damlTypes.lazyMemo(function () {\n return jtv.object({\n id: damlTypes.Text.decoder,\n cid: jtv.Decoder.withDefault(\n null,\n damlTypes.Optional(\n damlTypes.ContractId(\n Splice_Api_Token_MetadataV1.AnyContract\n )\n ).decoder\n ),\n })\n }),\n encode: function (__typed__) {\n return {\n id: damlTypes.Text.encode(__typed__.id),\n cid: damlTypes\n .Optional(\n damlTypes.ContractId(\n Splice_Api_Token_MetadataV1.AnyContract\n )\n )\n .encode(__typed__.cid),\n }\n },\n}\n","'use strict'\n/* eslint-disable-next-line no-unused-vars */\nfunction __export(m) {\n /* eslint-disable-next-line no-prototype-builtins */\n for (var p in m) if (!exports.hasOwnProperty(p)) exports[p] = m[p]\n}\nObject.defineProperty(exports, '__esModule', { value: true })\n/* eslint-disable-next-line no-unused-vars */\nvar jtv = require('@mojotech/json-type-validation')\n/* eslint-disable-next-line no-unused-vars */\nvar damlTypes = require('@daml/types')\n/* eslint-disable-next-line no-unused-vars */\nvar damlLedger = require('@daml/ledger')\n\nvar pkg9e70a8b3510d617f8a136213f33d6a903a10ca0eeec76bb06ba55d1ed9680f69 = require('@daml.js/ghc-stdlib-DA-Internal-Template-1.0.0')\n\nvar Splice_Api_Token_AllocationV1 = require('../../../../Splice/Api/Token/AllocationV1/module')\nvar Splice_Api_Token_HoldingV1 = require('../../../../Splice/Api/Token/HoldingV1/module')\nvar Splice_Api_Token_MetadataV1 = require('../../../../Splice/Api/Token/MetadataV1/module')\n\nexports.AllocationFactory = damlTypes.assembleInterface(\n 'a132be8b23c8515da6c828dd97519a73d9c8b1aa6f9cddd3c7acc206e4b41f8c:Splice.Api.Token.AllocationInstructionV1:AllocationFactory',\n function () {\n return exports.AllocationFactoryView\n },\n {\n Archive: {\n template: function () {\n return exports.AllocationFactory\n },\n choiceName: 'Archive',\n argumentDecoder: damlTypes.lazyMemo(function () {\n return pkg9e70a8b3510d617f8a136213f33d6a903a10ca0eeec76bb06ba55d1ed9680f69\n .DA.Internal.Template.Archive.decoder\n }),\n argumentEncode: function (__typed__) {\n return pkg9e70a8b3510d617f8a136213f33d6a903a10ca0eeec76bb06ba55d1ed9680f69.DA.Internal.Template.Archive.encode(\n __typed__\n )\n },\n resultDecoder: damlTypes.lazyMemo(function () {\n return damlTypes.Unit.decoder\n }),\n resultEncode: function (__typed__) {\n return damlTypes.Unit.encode(__typed__)\n },\n },\n AllocationFactory_Allocate: {\n template: function () {\n return exports.AllocationFactory\n },\n choiceName: 'AllocationFactory_Allocate',\n argumentDecoder: damlTypes.lazyMemo(function () {\n return exports.AllocationFactory_Allocate.decoder\n }),\n argumentEncode: function (__typed__) {\n return exports.AllocationFactory_Allocate.encode(__typed__)\n },\n resultDecoder: damlTypes.lazyMemo(function () {\n return exports.AllocationInstructionResult.decoder\n }),\n resultEncode: function (__typed__) {\n return exports.AllocationInstructionResult.encode(__typed__)\n },\n },\n AllocationFactory_PublicFetch: {\n template: function () {\n return exports.AllocationFactory\n },\n choiceName: 'AllocationFactory_PublicFetch',\n argumentDecoder: damlTypes.lazyMemo(function () {\n return exports.AllocationFactory_PublicFetch.decoder\n }),\n argumentEncode: function (__typed__) {\n return exports.AllocationFactory_PublicFetch.encode(__typed__)\n },\n resultDecoder: damlTypes.lazyMemo(function () {\n return exports.AllocationFactoryView.decoder\n }),\n resultEncode: function (__typed__) {\n return exports.AllocationFactoryView.encode(__typed__)\n },\n },\n }\n)\n\nexports.AllocationInstruction = damlTypes.assembleInterface(\n 'a132be8b23c8515da6c828dd97519a73d9c8b1aa6f9cddd3c7acc206e4b41f8c:Splice.Api.Token.AllocationInstructionV1:AllocationInstruction',\n function () {\n return exports.AllocationInstructionView\n },\n {\n Archive: {\n template: function () {\n return exports.AllocationInstruction\n },\n choiceName: 'Archive',\n argumentDecoder: damlTypes.lazyMemo(function () {\n return pkg9e70a8b3510d617f8a136213f33d6a903a10ca0eeec76bb06ba55d1ed9680f69\n .DA.Internal.Template.Archive.decoder\n }),\n argumentEncode: function (__typed__) {\n return pkg9e70a8b3510d617f8a136213f33d6a903a10ca0eeec76bb06ba55d1ed9680f69.DA.Internal.Template.Archive.encode(\n __typed__\n )\n },\n resultDecoder: damlTypes.lazyMemo(function () {\n return damlTypes.Unit.decoder\n }),\n resultEncode: function (__typed__) {\n return damlTypes.Unit.encode(__typed__)\n },\n },\n AllocationInstruction_Withdraw: {\n template: function () {\n return exports.AllocationInstruction\n },\n choiceName: 'AllocationInstruction_Withdraw',\n argumentDecoder: damlTypes.lazyMemo(function () {\n return exports.AllocationInstruction_Withdraw.decoder\n }),\n argumentEncode: function (__typed__) {\n return exports.AllocationInstruction_Withdraw.encode(__typed__)\n },\n resultDecoder: damlTypes.lazyMemo(function () {\n return exports.AllocationInstructionResult.decoder\n }),\n resultEncode: function (__typed__) {\n return exports.AllocationInstructionResult.encode(__typed__)\n },\n },\n AllocationInstruction_Update: {\n template: function () {\n return exports.AllocationInstruction\n },\n choiceName: 'AllocationInstruction_Update',\n argumentDecoder: damlTypes.lazyMemo(function () {\n return exports.AllocationInstruction_Update.decoder\n }),\n argumentEncode: function (__typed__) {\n return exports.AllocationInstruction_Update.encode(__typed__)\n },\n resultDecoder: damlTypes.lazyMemo(function () {\n return exports.AllocationInstructionResult.decoder\n }),\n resultEncode: function (__typed__) {\n return exports.AllocationInstructionResult.encode(__typed__)\n },\n },\n }\n)\n\nexports.AllocationInstructionResult_Output = {\n decoder: damlTypes.lazyMemo(function () {\n return jtv.oneOf(\n jtv.object({\n tag: jtv.constant('AllocationInstructionResult_Pending'),\n value: exports.AllocationInstructionResult_Output\n .AllocationInstructionResult_Pending.decoder,\n }),\n jtv.object({\n tag: jtv.constant('AllocationInstructionResult_Completed'),\n value: exports.AllocationInstructionResult_Output\n .AllocationInstructionResult_Completed.decoder,\n }),\n jtv.object({\n tag: jtv.constant('AllocationInstructionResult_Failed'),\n value: damlTypes.Unit.decoder,\n })\n )\n }),\n encode: function (__typed__) {\n switch (__typed__.tag) {\n case 'AllocationInstructionResult_Pending':\n return {\n tag: __typed__.tag,\n value: exports.AllocationInstructionResult_Output.AllocationInstructionResult_Pending.encode(\n __typed__.value\n ),\n }\n case 'AllocationInstructionResult_Completed':\n return {\n tag: __typed__.tag,\n value: exports.AllocationInstructionResult_Output.AllocationInstructionResult_Completed.encode(\n __typed__.value\n ),\n }\n case 'AllocationInstructionResult_Failed':\n return {\n tag: __typed__.tag,\n value: damlTypes.Unit.encode(__typed__.value),\n }\n default:\n throw (\n 'unrecognized type tag: ' +\n __typed__.tag +\n ' while serializing a value of type AllocationInstructionResult_Output'\n )\n }\n },\n AllocationInstructionResult_Pending: {\n decoder: damlTypes.lazyMemo(function () {\n return jtv.object({\n allocationInstructionCid: damlTypes.ContractId(\n exports.AllocationInstruction\n ).decoder,\n })\n }),\n encode: function (__typed__) {\n return {\n allocationInstructionCid: damlTypes\n .ContractId(exports.AllocationInstruction)\n .encode(__typed__.allocationInstructionCid),\n }\n },\n },\n AllocationInstructionResult_Completed: {\n decoder: damlTypes.lazyMemo(function () {\n return jtv.object({\n allocationCid: damlTypes.ContractId(\n Splice_Api_Token_AllocationV1.Allocation\n ).decoder,\n })\n }),\n encode: function (__typed__) {\n return {\n allocationCid: damlTypes\n .ContractId(Splice_Api_Token_AllocationV1.Allocation)\n .encode(__typed__.allocationCid),\n }\n },\n },\n}\n\nexports.AllocationInstructionResult = {\n decoder: damlTypes.lazyMemo(function () {\n return jtv.object({\n output: exports.AllocationInstructionResult_Output.decoder,\n senderChangeCids: damlTypes.List(\n damlTypes.ContractId(Splice_Api_Token_HoldingV1.Holding)\n ).decoder,\n meta: Splice_Api_Token_MetadataV1.Metadata.decoder,\n })\n }),\n encode: function (__typed__) {\n return {\n output: exports.AllocationInstructionResult_Output.encode(\n __typed__.output\n ),\n senderChangeCids: damlTypes\n .List(damlTypes.ContractId(Splice_Api_Token_HoldingV1.Holding))\n .encode(__typed__.senderChangeCids),\n meta: Splice_Api_Token_MetadataV1.Metadata.encode(__typed__.meta),\n }\n },\n}\n\nexports.AllocationFactory_PublicFetch = {\n decoder: damlTypes.lazyMemo(function () {\n return jtv.object({\n expectedAdmin: damlTypes.Party.decoder,\n actor: damlTypes.Party.decoder,\n })\n }),\n encode: function (__typed__) {\n return {\n expectedAdmin: damlTypes.Party.encode(__typed__.expectedAdmin),\n actor: damlTypes.Party.encode(__typed__.actor),\n }\n },\n}\n\nexports.AllocationFactory_Allocate = {\n decoder: damlTypes.lazyMemo(function () {\n return jtv.object({\n expectedAdmin: damlTypes.Party.decoder,\n allocation:\n Splice_Api_Token_AllocationV1.AllocationSpecification.decoder,\n requestedAt: damlTypes.Time.decoder,\n inputHoldingCids: damlTypes.List(\n damlTypes.ContractId(Splice_Api_Token_HoldingV1.Holding)\n ).decoder,\n extraArgs: Splice_Api_Token_MetadataV1.ExtraArgs.decoder,\n })\n }),\n encode: function (__typed__) {\n return {\n expectedAdmin: damlTypes.Party.encode(__typed__.expectedAdmin),\n allocation:\n Splice_Api_Token_AllocationV1.AllocationSpecification.encode(\n __typed__.allocation\n ),\n requestedAt: damlTypes.Time.encode(__typed__.requestedAt),\n inputHoldingCids: damlTypes\n .List(damlTypes.ContractId(Splice_Api_Token_HoldingV1.Holding))\n .encode(__typed__.inputHoldingCids),\n extraArgs: Splice_Api_Token_MetadataV1.ExtraArgs.encode(\n __typed__.extraArgs\n ),\n }\n },\n}\n\nexports.AllocationFactoryView = {\n decoder: damlTypes.lazyMemo(function () {\n return jtv.object({\n admin: damlTypes.Party.decoder,\n meta: Splice_Api_Token_MetadataV1.Metadata.decoder,\n })\n }),\n encode: function (__typed__) {\n return {\n admin: damlTypes.Party.encode(__typed__.admin),\n meta: Splice_Api_Token_MetadataV1.Metadata.encode(__typed__.meta),\n }\n },\n}\n\nexports.AllocationInstruction_Update = {\n decoder: damlTypes.lazyMemo(function () {\n return jtv.object({\n extraActors: damlTypes.List(damlTypes.Party).decoder,\n extraArgs: Splice_Api_Token_MetadataV1.ExtraArgs.decoder,\n })\n }),\n encode: function (__typed__) {\n return {\n extraActors: damlTypes\n .List(damlTypes.Party)\n .encode(__typed__.extraActors),\n extraArgs: Splice_Api_Token_MetadataV1.ExtraArgs.encode(\n __typed__.extraArgs\n ),\n }\n },\n}\n\nexports.AllocationInstruction_Withdraw = {\n decoder: damlTypes.lazyMemo(function () {\n return jtv.object({\n extraArgs: Splice_Api_Token_MetadataV1.ExtraArgs.decoder,\n })\n }),\n encode: function (__typed__) {\n return {\n extraArgs: Splice_Api_Token_MetadataV1.ExtraArgs.encode(\n __typed__.extraArgs\n ),\n }\n },\n}\n\nexports.AllocationInstructionView = {\n decoder: damlTypes.lazyMemo(function () {\n return jtv.object({\n originalInstructionCid: jtv.Decoder.withDefault(\n null,\n damlTypes.Optional(\n damlTypes.ContractId(exports.AllocationInstruction)\n ).decoder\n ),\n allocation:\n Splice_Api_Token_AllocationV1.AllocationSpecification.decoder,\n pendingActions: damlTypes.Map(damlTypes.Party, damlTypes.Text)\n .decoder,\n requestedAt: damlTypes.Time.decoder,\n inputHoldingCids: damlTypes.List(\n damlTypes.ContractId(Splice_Api_Token_HoldingV1.Holding)\n ).decoder,\n meta: Splice_Api_Token_MetadataV1.Metadata.decoder,\n })\n }),\n encode: function (__typed__) {\n return {\n originalInstructionCid: damlTypes\n .Optional(damlTypes.ContractId(exports.AllocationInstruction))\n .encode(__typed__.originalInstructionCid),\n allocation:\n Splice_Api_Token_AllocationV1.AllocationSpecification.encode(\n __typed__.allocation\n ),\n pendingActions: damlTypes\n .Map(damlTypes.Party, damlTypes.Text)\n .encode(__typed__.pendingActions),\n requestedAt: damlTypes.Time.encode(__typed__.requestedAt),\n inputHoldingCids: damlTypes\n .List(damlTypes.ContractId(Splice_Api_Token_HoldingV1.Holding))\n .encode(__typed__.inputHoldingCids),\n meta: Splice_Api_Token_MetadataV1.Metadata.encode(__typed__.meta),\n }\n },\n}\n","'use strict'\n/* eslint-disable-next-line no-unused-vars */\nfunction __export(m) {\n /* eslint-disable-next-line no-prototype-builtins */\n for (var p in m) if (!exports.hasOwnProperty(p)) exports[p] = m[p]\n}\nObject.defineProperty(exports, '__esModule', { value: true })\n__export(require('./module'))\n","'use strict'\n/* eslint-disable-next-line no-unused-vars */\nfunction __export(m) {\n /* eslint-disable-next-line no-prototype-builtins */\n for (var p in m) if (!exports.hasOwnProperty(p)) exports[p] = m[p]\n}\nObject.defineProperty(exports, '__esModule', { value: true })\n/* eslint-disable-next-line no-unused-vars */\nvar jtv = require('@mojotech/json-type-validation')\n/* eslint-disable-next-line no-unused-vars */\nvar damlTypes = require('@daml/types')\n/* eslint-disable-next-line no-unused-vars */\nvar damlLedger = require('@daml/ledger')\n\nvar pkg9e70a8b3510d617f8a136213f33d6a903a10ca0eeec76bb06ba55d1ed9680f69 = require('@daml.js/ghc-stdlib-DA-Internal-Template-1.0.0')\n\nvar Splice_Api_Token_AllocationV1 = require('../../../../Splice/Api/Token/AllocationV1/module')\nvar Splice_Api_Token_MetadataV1 = require('../../../../Splice/Api/Token/MetadataV1/module')\n\nexports.AllocationRequest = damlTypes.assembleInterface(\n 'a132be8b23c8515da6c828dd97519a73d9c8b1aa6f9cddd3c7acc206e4b41f8c:Splice.Api.Token.AllocationRequestV1:AllocationRequest',\n function () {\n return exports.AllocationRequestView\n },\n {\n Archive: {\n template: function () {\n return exports.AllocationRequest\n },\n choiceName: 'Archive',\n argumentDecoder: damlTypes.lazyMemo(function () {\n return pkg9e70a8b3510d617f8a136213f33d6a903a10ca0eeec76bb06ba55d1ed9680f69\n .DA.Internal.Template.Archive.decoder\n }),\n argumentEncode: function (__typed__) {\n return pkg9e70a8b3510d617f8a136213f33d6a903a10ca0eeec76bb06ba55d1ed9680f69.DA.Internal.Template.Archive.encode(\n __typed__\n )\n },\n resultDecoder: damlTypes.lazyMemo(function () {\n return damlTypes.Unit.decoder\n }),\n resultEncode: function (__typed__) {\n return damlTypes.Unit.encode(__typed__)\n },\n },\n AllocationRequest_Reject: {\n template: function () {\n return exports.AllocationRequest\n },\n choiceName: 'AllocationRequest_Reject',\n argumentDecoder: damlTypes.lazyMemo(function () {\n return exports.AllocationRequest_Reject.decoder\n }),\n argumentEncode: function (__typed__) {\n return exports.AllocationRequest_Reject.encode(__typed__)\n },\n resultDecoder: damlTypes.lazyMemo(function () {\n return Splice_Api_Token_MetadataV1.ChoiceExecutionMetadata\n .decoder\n }),\n resultEncode: function (__typed__) {\n return Splice_Api_Token_MetadataV1.ChoiceExecutionMetadata.encode(\n __typed__\n )\n },\n },\n AllocationRequest_Withdraw: {\n template: function () {\n return exports.AllocationRequest\n },\n choiceName: 'AllocationRequest_Withdraw',\n argumentDecoder: damlTypes.lazyMemo(function () {\n return exports.AllocationRequest_Withdraw.decoder\n }),\n argumentEncode: function (__typed__) {\n return exports.AllocationRequest_Withdraw.encode(__typed__)\n },\n resultDecoder: damlTypes.lazyMemo(function () {\n return Splice_Api_Token_MetadataV1.ChoiceExecutionMetadata\n .decoder\n }),\n resultEncode: function (__typed__) {\n return Splice_Api_Token_MetadataV1.ChoiceExecutionMetadata.encode(\n __typed__\n )\n },\n },\n }\n)\n\nexports.AllocationRequestView = {\n decoder: damlTypes.lazyMemo(function () {\n return jtv.object({\n settlement: Splice_Api_Token_AllocationV1.SettlementInfo.decoder,\n transferLegs: damlTypes.TextMap(\n Splice_Api_Token_AllocationV1.TransferLeg\n ).decoder,\n meta: Splice_Api_Token_MetadataV1.Metadata.decoder,\n })\n }),\n encode: function (__typed__) {\n return {\n settlement: Splice_Api_Token_AllocationV1.SettlementInfo.encode(\n __typed__.settlement\n ),\n transferLegs: damlTypes\n .TextMap(Splice_Api_Token_AllocationV1.TransferLeg)\n .encode(__typed__.transferLegs),\n meta: Splice_Api_Token_MetadataV1.Metadata.encode(__typed__.meta),\n }\n },\n}\n\nexports.AllocationRequest_Withdraw = {\n decoder: damlTypes.lazyMemo(function () {\n return jtv.object({\n extraArgs: Splice_Api_Token_MetadataV1.ExtraArgs.decoder,\n })\n }),\n encode: function (__typed__) {\n return {\n extraArgs: Splice_Api_Token_MetadataV1.ExtraArgs.encode(\n __typed__.extraArgs\n ),\n }\n },\n}\n\nexports.AllocationRequest_Reject = {\n decoder: damlTypes.lazyMemo(function () {\n return jtv.object({\n actor: damlTypes.Party.decoder,\n extraArgs: Splice_Api_Token_MetadataV1.ExtraArgs.decoder,\n })\n }),\n encode: function (__typed__) {\n return {\n actor: damlTypes.Party.encode(__typed__.actor),\n extraArgs: Splice_Api_Token_MetadataV1.ExtraArgs.encode(\n __typed__.extraArgs\n ),\n }\n },\n}\n","'use strict'\n/* eslint-disable-next-line no-unused-vars */\nfunction __export(m) {\n /* eslint-disable-next-line no-prototype-builtins */\n for (var p in m) if (!exports.hasOwnProperty(p)) exports[p] = m[p]\n}\nObject.defineProperty(exports, '__esModule', { value: true })\n__export(require('./module'))\n","'use strict'\n/* eslint-disable-next-line no-unused-vars */\nfunction __export(m) {\n /* eslint-disable-next-line no-prototype-builtins */\n for (var p in m) if (!exports.hasOwnProperty(p)) exports[p] = m[p]\n}\nObject.defineProperty(exports, '__esModule', { value: true })\n__export(require('./module'))\n","'use strict'\n/* eslint-disable-next-line no-unused-vars */\nfunction __export(m) {\n /* eslint-disable-next-line no-prototype-builtins */\n for (var p in m) if (!exports.hasOwnProperty(p)) exports[p] = m[p]\n}\nObject.defineProperty(exports, '__esModule', { value: true })\n__export(require('./module'))\n","'use strict'\n/* eslint-disable-next-line no-unused-vars */\nfunction __export(m) {\n /* eslint-disable-next-line no-prototype-builtins */\n for (var p in m) if (!exports.hasOwnProperty(p)) exports[p] = m[p]\n}\nObject.defineProperty(exports, '__esModule', { value: true })\n__export(require('./module'))\n","'use strict'\n/* eslint-disable-next-line no-unused-vars */\nfunction __export(m) {\n /* eslint-disable-next-line no-prototype-builtins */\n for (var p in m) if (!exports.hasOwnProperty(p)) exports[p] = m[p]\n}\nObject.defineProperty(exports, '__esModule', { value: true })\n/* eslint-disable-next-line no-unused-vars */\nvar jtv = require('@mojotech/json-type-validation')\n/* eslint-disable-next-line no-unused-vars */\nvar damlTypes = require('@daml/types')\n/* eslint-disable-next-line no-unused-vars */\nvar damlLedger = require('@daml/ledger')\n\nvar pkg9e70a8b3510d617f8a136213f33d6a903a10ca0eeec76bb06ba55d1ed9680f69 = require('@daml.js/ghc-stdlib-DA-Internal-Template-1.0.0')\n\nvar Splice_Api_Token_HoldingV1 = require('../../../../Splice/Api/Token/HoldingV1/module')\nvar Splice_Api_Token_MetadataV1 = require('../../../../Splice/Api/Token/MetadataV1/module')\n\nexports.TransferFactory = damlTypes.assembleInterface(\n 'a132be8b23c8515da6c828dd97519a73d9c8b1aa6f9cddd3c7acc206e4b41f8c:Splice.Api.Token.TransferInstructionV1:TransferFactory',\n function () {\n return exports.TransferFactoryView\n },\n {\n Archive: {\n template: function () {\n return exports.TransferFactory\n },\n choiceName: 'Archive',\n argumentDecoder: damlTypes.lazyMemo(function () {\n return pkg9e70a8b3510d617f8a136213f33d6a903a10ca0eeec76bb06ba55d1ed9680f69\n .DA.Internal.Template.Archive.decoder\n }),\n argumentEncode: function (__typed__) {\n return pkg9e70a8b3510d617f8a136213f33d6a903a10ca0eeec76bb06ba55d1ed9680f69.DA.Internal.Template.Archive.encode(\n __typed__\n )\n },\n resultDecoder: damlTypes.lazyMemo(function () {\n return damlTypes.Unit.decoder\n }),\n resultEncode: function (__typed__) {\n return damlTypes.Unit.encode(__typed__)\n },\n },\n TransferFactory_Transfer: {\n template: function () {\n return exports.TransferFactory\n },\n choiceName: 'TransferFactory_Transfer',\n argumentDecoder: damlTypes.lazyMemo(function () {\n return exports.TransferFactory_Transfer.decoder\n }),\n argumentEncode: function (__typed__) {\n return exports.TransferFactory_Transfer.encode(__typed__)\n },\n resultDecoder: damlTypes.lazyMemo(function () {\n return exports.TransferInstructionResult.decoder\n }),\n resultEncode: function (__typed__) {\n return exports.TransferInstructionResult.encode(__typed__)\n },\n },\n TransferFactory_PublicFetch: {\n template: function () {\n return exports.TransferFactory\n },\n choiceName: 'TransferFactory_PublicFetch',\n argumentDecoder: damlTypes.lazyMemo(function () {\n return exports.TransferFactory_PublicFetch.decoder\n }),\n argumentEncode: function (__typed__) {\n return exports.TransferFactory_PublicFetch.encode(__typed__)\n },\n resultDecoder: damlTypes.lazyMemo(function () {\n return exports.TransferFactoryView.decoder\n }),\n resultEncode: function (__typed__) {\n return exports.TransferFactoryView.encode(__typed__)\n },\n },\n }\n)\n\nexports.TransferInstruction = damlTypes.assembleInterface(\n 'a132be8b23c8515da6c828dd97519a73d9c8b1aa6f9cddd3c7acc206e4b41f8c:Splice.Api.Token.TransferInstructionV1:TransferInstruction',\n function () {\n return exports.TransferInstructionView\n },\n {\n Archive: {\n template: function () {\n return exports.TransferInstruction\n },\n choiceName: 'Archive',\n argumentDecoder: damlTypes.lazyMemo(function () {\n return pkg9e70a8b3510d617f8a136213f33d6a903a10ca0eeec76bb06ba55d1ed9680f69\n .DA.Internal.Template.Archive.decoder\n }),\n argumentEncode: function (__typed__) {\n return pkg9e70a8b3510d617f8a136213f33d6a903a10ca0eeec76bb06ba55d1ed9680f69.DA.Internal.Template.Archive.encode(\n __typed__\n )\n },\n resultDecoder: damlTypes.lazyMemo(function () {\n return damlTypes.Unit.decoder\n }),\n resultEncode: function (__typed__) {\n return damlTypes.Unit.encode(__typed__)\n },\n },\n TransferInstruction_Accept: {\n template: function () {\n return exports.TransferInstruction\n },\n choiceName: 'TransferInstruction_Accept',\n argumentDecoder: damlTypes.lazyMemo(function () {\n return exports.TransferInstruction_Accept.decoder\n }),\n argumentEncode: function (__typed__) {\n return exports.TransferInstruction_Accept.encode(__typed__)\n },\n resultDecoder: damlTypes.lazyMemo(function () {\n return exports.TransferInstructionResult.decoder\n }),\n resultEncode: function (__typed__) {\n return exports.TransferInstructionResult.encode(__typed__)\n },\n },\n TransferInstruction_Reject: {\n template: function () {\n return exports.TransferInstruction\n },\n choiceName: 'TransferInstruction_Reject',\n argumentDecoder: damlTypes.lazyMemo(function () {\n return exports.TransferInstruction_Reject.decoder\n }),\n argumentEncode: function (__typed__) {\n return exports.TransferInstruction_Reject.encode(__typed__)\n },\n resultDecoder: damlTypes.lazyMemo(function () {\n return exports.TransferInstructionResult.decoder\n }),\n resultEncode: function (__typed__) {\n return exports.TransferInstructionResult.encode(__typed__)\n },\n },\n TransferInstruction_Withdraw: {\n template: function () {\n return exports.TransferInstruction\n },\n choiceName: 'TransferInstruction_Withdraw',\n argumentDecoder: damlTypes.lazyMemo(function () {\n return exports.TransferInstruction_Withdraw.decoder\n }),\n argumentEncode: function (__typed__) {\n return exports.TransferInstruction_Withdraw.encode(__typed__)\n },\n resultDecoder: damlTypes.lazyMemo(function () {\n return exports.TransferInstructionResult.decoder\n }),\n resultEncode: function (__typed__) {\n return exports.TransferInstructionResult.encode(__typed__)\n },\n },\n TransferInstruction_Update: {\n template: function () {\n return exports.TransferInstruction\n },\n choiceName: 'TransferInstruction_Update',\n argumentDecoder: damlTypes.lazyMemo(function () {\n return exports.TransferInstruction_Update.decoder\n }),\n argumentEncode: function (__typed__) {\n return exports.TransferInstruction_Update.encode(__typed__)\n },\n resultDecoder: damlTypes.lazyMemo(function () {\n return exports.TransferInstructionResult.decoder\n }),\n resultEncode: function (__typed__) {\n return exports.TransferInstructionResult.encode(__typed__)\n },\n },\n }\n)\n\nexports.TransferFactoryView = {\n decoder: damlTypes.lazyMemo(function () {\n return jtv.object({\n admin: damlTypes.Party.decoder,\n meta: Splice_Api_Token_MetadataV1.Metadata.decoder,\n })\n }),\n encode: function (__typed__) {\n return {\n admin: damlTypes.Party.encode(__typed__.admin),\n meta: Splice_Api_Token_MetadataV1.Metadata.encode(__typed__.meta),\n }\n },\n}\n\nexports.TransferFactory_PublicFetch = {\n decoder: damlTypes.lazyMemo(function () {\n return jtv.object({\n expectedAdmin: damlTypes.Party.decoder,\n actor: damlTypes.Party.decoder,\n })\n }),\n encode: function (__typed__) {\n return {\n expectedAdmin: damlTypes.Party.encode(__typed__.expectedAdmin),\n actor: damlTypes.Party.encode(__typed__.actor),\n }\n },\n}\n\nexports.TransferFactory_Transfer = {\n decoder: damlTypes.lazyMemo(function () {\n return jtv.object({\n expectedAdmin: damlTypes.Party.decoder,\n transfer: exports.Transfer.decoder,\n extraArgs: Splice_Api_Token_MetadataV1.ExtraArgs.decoder,\n })\n }),\n encode: function (__typed__) {\n return {\n expectedAdmin: damlTypes.Party.encode(__typed__.expectedAdmin),\n transfer: exports.Transfer.encode(__typed__.transfer),\n extraArgs: Splice_Api_Token_MetadataV1.ExtraArgs.encode(\n __typed__.extraArgs\n ),\n }\n },\n}\n\nexports.TransferInstruction_Update = {\n decoder: damlTypes.lazyMemo(function () {\n return jtv.object({\n extraActors: damlTypes.List(damlTypes.Party).decoder,\n extraArgs: Splice_Api_Token_MetadataV1.ExtraArgs.decoder,\n })\n }),\n encode: function (__typed__) {\n return {\n extraActors: damlTypes\n .List(damlTypes.Party)\n .encode(__typed__.extraActors),\n extraArgs: Splice_Api_Token_MetadataV1.ExtraArgs.encode(\n __typed__.extraArgs\n ),\n }\n },\n}\n\nexports.TransferInstruction_Withdraw = {\n decoder: damlTypes.lazyMemo(function () {\n return jtv.object({\n extraArgs: Splice_Api_Token_MetadataV1.ExtraArgs.decoder,\n })\n }),\n encode: function (__typed__) {\n return {\n extraArgs: Splice_Api_Token_MetadataV1.ExtraArgs.encode(\n __typed__.extraArgs\n ),\n }\n },\n}\n\nexports.TransferInstruction_Reject = {\n decoder: damlTypes.lazyMemo(function () {\n return jtv.object({\n extraArgs: Splice_Api_Token_MetadataV1.ExtraArgs.decoder,\n })\n }),\n encode: function (__typed__) {\n return {\n extraArgs: Splice_Api_Token_MetadataV1.ExtraArgs.encode(\n __typed__.extraArgs\n ),\n }\n },\n}\n\nexports.TransferInstruction_Accept = {\n decoder: damlTypes.lazyMemo(function () {\n return jtv.object({\n extraArgs: Splice_Api_Token_MetadataV1.ExtraArgs.decoder,\n })\n }),\n encode: function (__typed__) {\n return {\n extraArgs: Splice_Api_Token_MetadataV1.ExtraArgs.encode(\n __typed__.extraArgs\n ),\n }\n },\n}\n\nexports.TransferInstructionView = {\n decoder: damlTypes.lazyMemo(function () {\n return jtv.object({\n originalInstructionCid: jtv.Decoder.withDefault(\n null,\n damlTypes.Optional(\n damlTypes.ContractId(exports.TransferInstruction)\n ).decoder\n ),\n transfer: exports.Transfer.decoder,\n status: exports.TransferInstructionStatus.decoder,\n meta: Splice_Api_Token_MetadataV1.Metadata.decoder,\n })\n }),\n encode: function (__typed__) {\n return {\n originalInstructionCid: damlTypes\n .Optional(damlTypes.ContractId(exports.TransferInstruction))\n .encode(__typed__.originalInstructionCid),\n transfer: exports.Transfer.encode(__typed__.transfer),\n status: exports.TransferInstructionStatus.encode(__typed__.status),\n meta: Splice_Api_Token_MetadataV1.Metadata.encode(__typed__.meta),\n }\n },\n}\n\nexports.TransferInstructionStatus = {\n decoder: damlTypes.lazyMemo(function () {\n return jtv.oneOf(\n jtv.object({\n tag: jtv.constant('TransferPendingReceiverAcceptance'),\n value: damlTypes.Unit.decoder,\n }),\n jtv.object({\n tag: jtv.constant('TransferPendingInternalWorkflow'),\n value: exports.TransferInstructionStatus\n .TransferPendingInternalWorkflow.decoder,\n })\n )\n }),\n encode: function (__typed__) {\n switch (__typed__.tag) {\n case 'TransferPendingReceiverAcceptance':\n return {\n tag: __typed__.tag,\n value: damlTypes.Unit.encode(__typed__.value),\n }\n case 'TransferPendingInternalWorkflow':\n return {\n tag: __typed__.tag,\n value: exports.TransferInstructionStatus.TransferPendingInternalWorkflow.encode(\n __typed__.value\n ),\n }\n default:\n throw (\n 'unrecognized type tag: ' +\n __typed__.tag +\n ' while serializing a value of type TransferInstructionStatus'\n )\n }\n },\n TransferPendingInternalWorkflow: {\n decoder: damlTypes.lazyMemo(function () {\n return jtv.object({\n pendingActions: damlTypes.Map(damlTypes.Party, damlTypes.Text)\n .decoder,\n })\n }),\n encode: function (__typed__) {\n return {\n pendingActions: damlTypes\n .Map(damlTypes.Party, damlTypes.Text)\n .encode(__typed__.pendingActions),\n }\n },\n },\n}\n\nexports.TransferInstructionResult_Output = {\n decoder: damlTypes.lazyMemo(function () {\n return jtv.oneOf(\n jtv.object({\n tag: jtv.constant('TransferInstructionResult_Pending'),\n value: exports.TransferInstructionResult_Output\n .TransferInstructionResult_Pending.decoder,\n }),\n jtv.object({\n tag: jtv.constant('TransferInstructionResult_Completed'),\n value: exports.TransferInstructionResult_Output\n .TransferInstructionResult_Completed.decoder,\n }),\n jtv.object({\n tag: jtv.constant('TransferInstructionResult_Failed'),\n value: damlTypes.Unit.decoder,\n })\n )\n }),\n encode: function (__typed__) {\n switch (__typed__.tag) {\n case 'TransferInstructionResult_Pending':\n return {\n tag: __typed__.tag,\n value: exports.TransferInstructionResult_Output.TransferInstructionResult_Pending.encode(\n __typed__.value\n ),\n }\n case 'TransferInstructionResult_Completed':\n return {\n tag: __typed__.tag,\n value: exports.TransferInstructionResult_Output.TransferInstructionResult_Completed.encode(\n __typed__.value\n ),\n }\n case 'TransferInstructionResult_Failed':\n return {\n tag: __typed__.tag,\n value: damlTypes.Unit.encode(__typed__.value),\n }\n default:\n throw (\n 'unrecognized type tag: ' +\n __typed__.tag +\n ' while serializing a value of type TransferInstructionResult_Output'\n )\n }\n },\n TransferInstructionResult_Pending: {\n decoder: damlTypes.lazyMemo(function () {\n return jtv.object({\n transferInstructionCid: damlTypes.ContractId(\n exports.TransferInstruction\n ).decoder,\n })\n }),\n encode: function (__typed__) {\n return {\n transferInstructionCid: damlTypes\n .ContractId(exports.TransferInstruction)\n .encode(__typed__.transferInstructionCid),\n }\n },\n },\n TransferInstructionResult_Completed: {\n decoder: damlTypes.lazyMemo(function () {\n return jtv.object({\n receiverHoldingCids: damlTypes.List(\n damlTypes.ContractId(Splice_Api_Token_HoldingV1.Holding)\n ).decoder,\n })\n }),\n encode: function (__typed__) {\n return {\n receiverHoldingCids: damlTypes\n .List(\n damlTypes.ContractId(Splice_Api_Token_HoldingV1.Holding)\n )\n .encode(__typed__.receiverHoldingCids),\n }\n },\n },\n}\n\nexports.TransferInstructionResult = {\n decoder: damlTypes.lazyMemo(function () {\n return jtv.object({\n output: exports.TransferInstructionResult_Output.decoder,\n senderChangeCids: damlTypes.List(\n damlTypes.ContractId(Splice_Api_Token_HoldingV1.Holding)\n ).decoder,\n meta: Splice_Api_Token_MetadataV1.Metadata.decoder,\n })\n }),\n encode: function (__typed__) {\n return {\n output: exports.TransferInstructionResult_Output.encode(\n __typed__.output\n ),\n senderChangeCids: damlTypes\n .List(damlTypes.ContractId(Splice_Api_Token_HoldingV1.Holding))\n .encode(__typed__.senderChangeCids),\n meta: Splice_Api_Token_MetadataV1.Metadata.encode(__typed__.meta),\n }\n },\n}\n\nexports.Transfer = {\n decoder: damlTypes.lazyMemo(function () {\n return jtv.object({\n sender: damlTypes.Party.decoder,\n receiver: damlTypes.Party.decoder,\n amount: damlTypes.Numeric(10).decoder,\n instrumentId: Splice_Api_Token_HoldingV1.InstrumentId.decoder,\n requestedAt: damlTypes.Time.decoder,\n executeBefore: damlTypes.Time.decoder,\n inputHoldingCids: damlTypes.List(\n damlTypes.ContractId(Splice_Api_Token_HoldingV1.Holding)\n ).decoder,\n meta: Splice_Api_Token_MetadataV1.Metadata.decoder,\n })\n }),\n encode: function (__typed__) {\n return {\n sender: damlTypes.Party.encode(__typed__.sender),\n receiver: damlTypes.Party.encode(__typed__.receiver),\n amount: damlTypes.Numeric(10).encode(__typed__.amount),\n instrumentId: Splice_Api_Token_HoldingV1.InstrumentId.encode(\n __typed__.instrumentId\n ),\n requestedAt: damlTypes.Time.encode(__typed__.requestedAt),\n executeBefore: damlTypes.Time.encode(__typed__.executeBefore),\n inputHoldingCids: damlTypes\n .List(damlTypes.ContractId(Splice_Api_Token_HoldingV1.Holding))\n .encode(__typed__.inputHoldingCids),\n meta: Splice_Api_Token_MetadataV1.Metadata.encode(__typed__.meta),\n }\n },\n}\n","'use strict'\n/* eslint-disable-next-line no-unused-vars */\nfunction __export(m) {\n /* eslint-disable-next-line no-prototype-builtins */\n for (var p in m) if (!exports.hasOwnProperty(p)) exports[p] = m[p]\n}\nObject.defineProperty(exports, '__esModule', { value: true })\n__export(require('./module'))\n","'use strict'\n/* eslint-disable-next-line no-unused-vars */\nfunction __export(m) {\n /* eslint-disable-next-line no-prototype-builtins */\n for (var p in m) if (!exports.hasOwnProperty(p)) exports[p] = m[p]\n}\nObject.defineProperty(exports, '__esModule', { value: true })\nvar AllocationInstructionV1 = require('./AllocationInstructionV1')\nexports.AllocationInstructionV1 = AllocationInstructionV1\nvar AllocationRequestV1 = require('./AllocationRequestV1')\nexports.AllocationRequestV1 = AllocationRequestV1\nvar AllocationV1 = require('./AllocationV1')\nexports.AllocationV1 = AllocationV1\nvar HoldingV1 = require('./HoldingV1')\nexports.HoldingV1 = HoldingV1\nvar MetadataV1 = require('./MetadataV1')\nexports.MetadataV1 = MetadataV1\nvar TransferInstructionV1 = require('./TransferInstructionV1')\nexports.TransferInstructionV1 = TransferInstructionV1\n","'use strict'\n/* eslint-disable-next-line no-unused-vars */\nfunction __export(m) {\n /* eslint-disable-next-line no-prototype-builtins */\n for (var p in m) if (!exports.hasOwnProperty(p)) exports[p] = m[p]\n}\nObject.defineProperty(exports, '__esModule', { value: true })\nvar Token = require('./Token')\nexports.Token = Token\n","'use strict'\n/* eslint-disable-next-line no-unused-vars */\nfunction __export(m) {\n /* eslint-disable-next-line no-prototype-builtins */\n for (var p in m) if (!exports.hasOwnProperty(p)) exports[p] = m[p]\n}\nObject.defineProperty(exports, '__esModule', { value: true })\nvar Api = require('./Api')\nexports.Api = Api\n","'use strict'\n/* eslint-disable-next-line no-unused-vars */\nfunction __export(m) {\n /* eslint-disable-next-line no-prototype-builtins */\n for (var p in m) if (!exports.hasOwnProperty(p)) exports[p] = m[p]\n}\nObject.defineProperty(exports, '__esModule', { value: true })\nvar Splice = require('./Splice')\nexports.Splice = Splice\nexports.packageId =\n 'a132be8b23c8515da6c828dd97519a73d9c8b1aa6f9cddd3c7acc206e4b41f8c'\n","// Copyright (c) 2025 Digital Asset (Switzerland) GmbH and/or its affiliates. All rights reserved.\n// SPDX-License-Identifier: Apache-2.0\n\nimport { Splice } from '@daml.js/token-standard-models-1.0.0'\nimport { PartyId } from '@canton-network/core-types'\n\nexport * from './interface-ids.const.js'\n\nexport const TransferInstructionV1 = Splice.Api.Token.TransferInstructionV1\nexport const AllocationInstructionV1 = Splice.Api.Token.AllocationInstructionV1\nexport const AllocationRequestV1 = Splice.Api.Token.AllocationRequestV1\nexport const AllocationV1 = Splice.Api.Token.AllocationV1\nexport const HoldingV1 = Splice.Api.Token.HoldingV1\nexport const MetadataV1 = Splice.Api.Token.MetadataV1\n\nexport type {\n Holding,\n HoldingView,\n Lock,\n InstrumentId,\n HoldingInterface,\n} from '@daml.js/token-standard-models-1.0.0/lib/Splice/Api/Token/HoldingV1/module.js'\n\nexport type {\n Transfer,\n TransferInstruction,\n TransferInstructionView,\n TransferInstruction_Accept,\n TransferInstruction_Reject,\n TransferInstruction_Withdraw,\n TransferInstruction_Update,\n TransferFactory,\n TransferFactoryView,\n TransferFactory_PublicFetch,\n TransferFactory_Transfer,\n TransferInstructionResult,\n TransferInstructionResult_Output,\n TransferInstructionStatus,\n TransferFactoryInterface,\n TransferInstructionInterface,\n} from '@daml.js/token-standard-models-1.0.0/lib/Splice/Api/Token/TransferInstructionV1/module.js'\n\nexport type {\n AllocationFactory_Allocate,\n AllocationFactoryView,\n AllocationFactory_PublicFetch,\n AllocationInstruction_Update,\n AllocationInstruction_Withdraw,\n AllocationInstructionView,\n AllocationInstructionResult,\n AllocationInstructionResult_Output,\n AllocationFactory,\n AllocationFactoryInterface,\n AllocationInstruction,\n AllocationInstructionInterface,\n} from '@daml.js/token-standard-models-1.0.0/lib/Splice/Api/Token/AllocationInstructionV1/module.js'\n\nexport type {\n AllocationRequest,\n AllocationRequestView,\n AllocationRequest_Reject,\n AllocationRequest_Withdraw,\n AllocationRequestInterface,\n} from '@daml.js/token-standard-models-1.0.0/lib/Splice/Api/Token/AllocationRequestV1/module.js'\n\nexport type {\n AllocationSpecification,\n TransferLeg,\n SettlementInfo,\n Reference,\n AllocationView,\n Allocation,\n AllocationInterface,\n Allocation_Withdraw,\n Allocation_Cancel,\n Allocation_ExecuteTransfer,\n Allocation_WithdrawResult,\n Allocation_CancelResult,\n Allocation_ExecuteTransferResult,\n} from '@daml.js/token-standard-models-1.0.0/lib/Splice/Api/Token/AllocationV1/module.js'\n\nexport type {\n ExtraArgs,\n Metadata,\n ChoiceExecutionMetadata,\n AnyContract,\n AnyContractInterface,\n AnyContractView,\n ChoiceContext,\n AnyValue,\n} from '@daml.js/token-standard-models-1.0.0/lib/Splice/Api/Token/MetadataV1/module.js'\n\nexport type {\n ContractId,\n Party,\n Time,\n Date,\n Numeric,\n Int,\n Map,\n Optional,\n Serializable,\n} from '@daml/types'\n\nexport type Beneficiaries = {\n beneficiary: PartyId\n weight: number\n}\n"],"names":["createClient","global","require$$0","this","require$$1","lib","URLImpl_1","require$$2","Stream","http","Url","fetch","https","zlib","bufferUtil","bufferUtilModule","require$$3","validationModule","require$$4","require$$5","require$$6","require$$7","require$$8","require$$9","require$$10","require$$11","require$$12","require$$13","require$$14","Splice"],"mappings":"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;AACA;AACA;AACA,EAAA,IAAI,WAAW,GAAG,eAAe,CAAC,WAAW,EAAE,OAAO,SAAS,CAAC,CAAA,CAAE,EAAE,CAAC,GAAG,eAAe,GAAG,SAAS,KAAK,EAAE;AAC1G,IAAE,OAAO,YAAY,CAAC,KAAK,CAAC,IAAI,cAAc,CAAC,IAAI,CAAC,KAAK,EAAE,QAAQ,CAAC;MAChE,CAAC,oBAAoB,CAAC,IAAI,CAAC,KAAK,EAAE,QAAQ,CAAC;EAC/C,CAAC;;AAED;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,EAAA,IAAI,OAAO,GAAG,KAAK,CAAC,OAAO;;AAE3B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;EACA,SAAS,WAAW,CAAC,KAAK,EAAE;AAC5B,IAAE,OAAO,KAAK,IAAI,IAAI,IAAI,QAAQ,CAAC,KAAK,CAAC,MAAM,CAAC,IAAI,CAAC,UAAU,CAAC,KAAK,CAAC;AACtE,EAAA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,EAAA,IAAI,QAAQ,GAAG,cAAc,IAAI,SAAS;;AAE1C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,EAAA,SAAS,OAAO,CAAC,KAAK,EAAE,KAAK,EAAE;AAC/B,IAAE,OAAO,WAAW,CAAC,KAAK,EAAE,KAAK,CAAC;AAClC,EAAA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;EACA,SAAS,UAAU,CAAC,KAAK,EAAE;AAC3B,IAAE,IAAI,CAAC,QAAQ,CA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;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CChBD,IAAI,QAAQ,GAAG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","x_google_ignoreList":[2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38]}
|