{"version":3,"sources":["webpack:///./node_modules/@ledgerhq/hw-transport-web-ble/lib-es/monitorCharacteristic.js","webpack:///./node_modules/@ledgerhq/devices/lib/ble/sendAPDU.js","webpack:///./node_modules/@ledgerhq/hw-transport-web-ble/lib-es/TransportWebBLE.js","webpack:///./node_modules/@ledgerhq/devices/lib/ble/receiveAPDU.js","webpack:///./node_modules/@ledgerhq/logs/lib/index.js","webpack:///./node_modules/@ledgerhq/hw-transport-webhid/node_modules/@ledgerhq/devices/lib/index.js","webpack:///./node_modules/@ledgerhq/hw-transport-webhid/lib/TransportWebHID.js","webpack:///./node_modules/@ledgerhq/devices/lib-es/index.js","webpack:///./node_modules/@ledgerhq/errors/lib-es/helpers.js","webpack:///./node_modules/@ledgerhq/errors/lib-es/index.js","webpack:///./node_modules/@ledgerhq/hw-transport-web-ble/node_modules/@ledgerhq/logs/lib-es/index.js","webpack:///./node_modules/@ledgerhq/hw-transport-webhid/node_modules/@ledgerhq/errors/lib/index.js","webpack:///./node_modules/@ledgerhq/hw-transport-webhid/node_modules/@ledgerhq/devices/lib/hid-framing.js","webpack:///./node_modules/@ledgerhq/hw-transport-webhid/node_modules/@ledgerhq/hw-transport/lib/Transport.js","webpack:///./node_modules/@ledgerhq/devices/node_modules/@ledgerhq/logs/lib-es/index.js","webpack:///./node_modules/@ledgerhq/hw-transport/lib-es/Transport.js","webpack:///./node_modules/@ledgerhq/hw-transport-webhid/node_modules/@ledgerhq/errors/lib/helpers.js"],"names":["monitorCharacteristic","characteristic","create","o","onCharacteristicValueChanged","event","target","value","next","Buffer","from","buffer","uuid","startNotifications","then","addEventListener","stopNotifications","__awaiter","this","thisArg","_arguments","P","generator","adopt","resolve","Promise","reject","fulfilled","step","e","rejected","result","done","apply","__generator","body","f","y","t","g","_","label","sent","trys","ops","verb","Symbol","iterator","n","v","op","TypeError","call","pop","length","push","__values","s","m","i","exports","__esModule","sendAPDU","rxjs_1","logs_1","TagId","chunkBuffer","sizeForIndex","chunks","size","slice","write","apdu","mtuSize","map","head","alloc","writeUInt8","writeUInt16BE","concat","Observable","terminated","main","chunks_1","chunks_1_1","chunk","e_1_1","e_1","_a","_b","error","complete","log","String","unsubscribe","__extends","extendStatics","d","b","Object","setPrototypeOf","__proto__","Array","p","prototype","hasOwnProperty","__","constructor","__read","r","ar","requiresBluetooth","bluetooth","navigator","Error","availability","observer","onAvailabilityChanged","unsubscribed","getAvailability","available","removeEventListener","transportsCache","requestDeviceParam","filters","services","retrieveService","device","service","infos","gatt","getPrimaryServices","open","deviceOrId","needsReconnect","deviceModel","writeUuid","notifyUuid","writeC","notifyC","notifyObservable","notif","transport","onDisconnect","beforeMTUTime","afterMTUTime","_c","requestDevice","connected","connect","all","getCharacteristic","pipe","toString","subscribe","BluetoothTransport","id","console","notYetDisconnected","emit","Date","now","inferMTU","disconnect","setTimeout","_super","writeCharacteristic","_this","writeValue","listen","type","descriptor","message","mtu","exchangeAtomicImpl","readUInt8","toPromise","exchange","msgIn","data","msgOut","e_2","setScrambleKey","close","exchangeBusyPromise","isSupported","observeAvailability","list","receiveAPDU","errors_1","rawStream","notifiedIndex","notifiedDataLength","notifiedData","sub","DisconnectedDevice","tag","index","readUInt16BE","TransportError","defineProperty","subscribers","obj","date","dispatch","cb","indexOf","global","__ledgerLogsListen","_extends","assign","arguments","source","key","devices","IIGenericHID","IIKeyboardHID","IIU2F","IICCID","IIWebUSB","blue","productName","productIdMM","legacyUsbProductId","usbOnly","memorySize","blockSize","nanoS","nanoX","bluetoothSpec","serviceUuid","productMap","Blue","devicesList","values","bluetoothServices","ledgerUSBVendorId","getDeviceModel","info","identifyUSBProductId","usbProductId","legacy","find","mm","identifyProductName","productId","serviceUuidToInfos","_id","_deviceModel","_bluetoothSpec","spec","replace","getBluetoothServiceUuids","getInfosForServiceUuid","toLowerCase","_createClass","defineProperties","props","enumerable","configurable","writable","Constructor","protoProps","staticProps","requestLedgerDevice","_ref","_asyncToGenerator","regeneratorRuntime","mark","_callee","wrap","_context","prev","getHID","ledgerDevices","abrupt","stop","getLedgerDevices","_ref2","_callee2","_context2","getDevices","filter","vendorId","_devices","getFirstLedgerDevice","_ref3","_callee3","existingDevices","_context3","_hwTransport","_hwTransport2","_interopRequireDefault","_hidFraming","_hidFraming2","_logs","_errors","default","_classCallCheck","instance","_possibleConstructorReturn","self","ReferenceError","_inherits","subClass","superClass","fn","gen","arg","err","hid","_navigator","TransportWebHID","_Transport","getPrototypeOf","_initialiseProps","onInputReport","_ref4","_callee4","_context4","_ref5","_callee5","_context5","request","_ref6","_callee6","_context6","openConnected","_ref7","_callee7","_context7","_emitDisconnect","_x","TransportOpenUserCancelled","_this2","channel","Math","floor","random","packetSize","inputs","read","shift","success","inputCallback","_disconnectEmitted","_callee8","framing","blocks","acc","_context8","makeBlocks","sendReport","getReducedResult","reduceResponse","catch","includes","DisconnectedDeviceDuringOperation","DeviceModelId","__assign","masks","getBlockSize","_firwareVersion","firmwareVersion","lt","coerce","nanoSP","_firmwareVersion","errorClasses","deserializers","addCustomErrorDeserializer","name","deserializer","createCustomErrorClass","C","fields","stack","deserializeError","object","msg","JSON","parse","name_1","des","warn","prop","captureStackTrace","serializeError","destroyCircular","seen","to","keys","AccountNameRequiredError","AccountNotSupported","AmountRequired","BluetoothRequired","BtcUnmatchedApp","CantOpenDevice","CashAddrNotSupported","CurrencyNotSupported","DeviceAppVerifyNotSupported","DeviceGenuineSocketEarlyClose","DeviceNotGenuineError","DeviceOnDashboardExpected","DeviceOnDashboardUnexpected","DeviceInOSUExpected","DeviceHalted","DeviceNameInvalid","DeviceSocketFail","DeviceSocketNoBulkStatus","EnpointConfigError","EthAppPleaseEnableContractData","FeeEstimationFailed","FirmwareNotRecognized","HardResetFail","InvalidXRPTag","InvalidAddress","InvalidAddressBecauseDestinationIsAlsoSource","LatestMCUInstalledError","UnknownMCU","LedgerAPIError","LedgerAPIErrorWithMessage","LedgerAPINotAvailable","ManagerAppAlreadyInstalledError","ManagerAppRelyOnBTCError","ManagerAppDepInstallRequired","ManagerAppDepUninstallRequired","ManagerDeviceLockedError","ManagerFirmwareNotEnoughSpaceError","ManagerNotEnoughSpaceError","ManagerUninstallBTCDep","NetworkDown","NoAddressesFound","NotEnoughBalance","NotEnoughBalanceToDelegate","NotEnoughBalanceInParentAccount","NotEnoughSpendableBalance","NotEnoughBalanceBecauseDestinationNotCreated","NoAccessToCamera","NotEnoughGas","NotSupportedLegacyAddress","GasLessThanEstimate","PasswordsDontMatchError","PasswordIncorrectError","RecommendSubAccountsToEmpty","RecommendUndelegation","TimeoutTagged","UnexpectedBootloader","MCUNotGenuineToDashboard","RecipientRequired","UnavailableTezosOriginatedAccountReceive","UnavailableTezosOriginatedAccountSend","UpdateFetchFileFail","UpdateIncorrectHash","UpdateIncorrectSig","UpdateYourApp","UserRefusedDeviceNameChange","UserRefusedAddress","UserRefusedFirmwareUpdate","UserRefusedAllowManager","UserRefusedOnDevice","TransportInterfaceNotAvailable","TransportRaceCondition","TransportWebUSBGestureRequired","DeviceShouldStayInApp","WebsocketConnectionError","WebsocketConnectionFailed","WrongDeviceForAccount","WrongAppForCurrency","ETHAddressNonEIP","CantScanQRCode","FeeNotLoaded","FeeRequired","FeeTooHigh","SyncError","PairingFailed","GenuineCheckFailed","LedgerAPI4xx","LedgerAPI5xx","FirmwareOrAppUpdateRequired","NoDBPathGiven","DBWrongPassword","DBNotReset","StatusCodes","PIN_REMAINING_ATTEMPTS","INCORRECT_LENGTH","MISSING_CRITICAL_PARAMETER","COMMAND_INCOMPATIBLE_FILE_STRUCTURE","SECURITY_STATUS_NOT_SATISFIED","CONDITIONS_OF_USE_NOT_SATISFIED","INCORRECT_DATA","NOT_ENOUGH_MEMORY_SPACE","REFERENCED_DATA_NOT_FOUND","FILE_ALREADY_EXISTS","INCORRECT_P1_P2","INS_NOT_SUPPORTED","CLA_NOT_SUPPORTED","TECHNICAL_PROBLEM","OK","MEMORY_PROBLEM","NO_EF_SELECTED","INVALID_OFFSET","FILE_NOT_FOUND","INCONSISTENT_FILE","ALGORITHM_NOT_SUPPORTED","INVALID_KCV","CODE_NOT_INITIALIZED","ACCESS_CONDITION_NOT_FULFILLED","CONTRADICTION_SECRET_CODE_STATUS","CONTRADICTION_INVALIDATION","CODE_BLOCKED","MAX_VALUE_REACHED","GP_AUTH_FAILED","LICENSING","HALTED","getAltStatusMessage","code","TransportStatusError","statusCode","statusText","k","smsg","statusCodeStr","window","undefined","_helpers","Tag","asUInt16BE","initialAcc","dataLength","sequence","createHIDframing","nbBlocks","ceil","fill","chunkData","_events2","_events3","_toConsumableArray","arr","isArray","arr2","Transport","exchangeTimeout","_events","send","cla","ins","p1","p2","response","sw","statusList","some","_x2","_x3","_x4","resolveBusy","busyPromise","res","finish","_x7","_appAPIlock","eventName","on","removeListener","_len","args","_key","methods","scrambleKey","_iteratorNormalCompletion","_didIteratorError","_iteratorError","_step","_iterator","methodName","decorateAppAPIMethod","return","ctx","_len2","_key2","_this3","openTimeout","listenTimeout","found","listenTimeoutId","clearTimeout","ErrorMessage_NoDeviceFound","ErrorMessage_ListenTimeout","__spreadArray","pack","l","unresponsiveTimeout","unresponsiveReached","timeout","_apdu","off","_i","setDebugMode","setExchangeTimeout","setExchangeUnresponsiveTimeout","decorateAppAPIMethods","methods_1","methods_1_1","_typeof","_object","_constructor"],"mappings":"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","file":"js/npm.ledgerhq~2e47309a.a1fbbc22.js","sourcesContent":["import { Observable } from \"rxjs\";\nimport { log } from \"@ledgerhq/logs\";\nexport var monitorCharacteristic = function (characteristic) {\n return Observable.create(function (o) {\n log(\"ble-verbose\", \"start monitor \" + characteristic.uuid);\n function onCharacteristicValueChanged(event) {\n var characteristic = event.target;\n if (characteristic.value) {\n o.next(Buffer.from(characteristic.value.buffer));\n }\n }\n characteristic.startNotifications().then(function () {\n characteristic.addEventListener(\"characteristicvaluechanged\", onCharacteristicValueChanged);\n });\n return function () {\n log(\"ble-verbose\", \"end monitor \" + characteristic.uuid);\n characteristic.stopNotifications();\n };\n });\n};\n//# sourceMappingURL=monitorCharacteristic.js.map","\"use strict\";\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;\n return g = { next: verb(0), \"throw\": verb(1), \"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 (_) 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 __values = (this && this.__values) || function(o) {\n var s = typeof Symbol === \"function\" && Symbol.iterator, m = s && o[s], i = 0;\n if (m) return m.call(o);\n if (o && typeof o.length === \"number\") return {\n next: function () {\n if (o && i >= o.length) o = void 0;\n return { value: o && o[i++], done: !o };\n }\n };\n throw new TypeError(s ? \"Object is not iterable.\" : \"Symbol.iterator is not defined.\");\n};\nexports.__esModule = true;\nexports.sendAPDU = void 0;\nvar rxjs_1 = require(\"rxjs\");\nvar logs_1 = require(\"@ledgerhq/logs\");\nvar TagId = 0x05;\nfunction chunkBuffer(buffer, sizeForIndex) {\n var chunks = [];\n for (var i = 0, size = sizeForIndex(0); i < buffer.length; i += size, size = sizeForIndex(i)) {\n chunks.push(buffer.slice(i, i + size));\n }\n return chunks;\n}\nvar sendAPDU = function (write, apdu, mtuSize) {\n var chunks = chunkBuffer(apdu, function (i) { return mtuSize - (i === 0 ? 5 : 3); }).map(function (buffer, i) {\n var head = Buffer.alloc(i === 0 ? 5 : 3);\n head.writeUInt8(TagId, 0);\n head.writeUInt16BE(i, 1);\n if (i === 0) {\n head.writeUInt16BE(apdu.length, 3);\n }\n return Buffer.concat([head, buffer]);\n });\n return new rxjs_1.Observable(function (o) {\n var terminated = false;\n function main() {\n return __awaiter(this, void 0, void 0, function () {\n var chunks_1, chunks_1_1, chunk, e_1_1;\n var e_1, _a;\n return __generator(this, function (_b) {\n switch (_b.label) {\n case 0:\n _b.trys.push([0, 5, 6, 7]);\n chunks_1 = __values(chunks), chunks_1_1 = chunks_1.next();\n _b.label = 1;\n case 1:\n if (!!chunks_1_1.done) return [3 /*break*/, 4];\n chunk = chunks_1_1.value;\n if (terminated)\n return [2 /*return*/];\n return [4 /*yield*/, write(chunk)];\n case 2:\n _b.sent();\n _b.label = 3;\n case 3:\n chunks_1_1 = chunks_1.next();\n return [3 /*break*/, 1];\n case 4: return [3 /*break*/, 7];\n case 5:\n e_1_1 = _b.sent();\n e_1 = { error: e_1_1 };\n return [3 /*break*/, 7];\n case 6:\n try {\n if (chunks_1_1 && !chunks_1_1.done && (_a = chunks_1[\"return\"])) _a.call(chunks_1);\n }\n finally { if (e_1) throw e_1.error; }\n return [7 /*endfinally*/];\n case 7: return [2 /*return*/];\n }\n });\n });\n }\n main().then(function () {\n terminated = true;\n o.complete();\n }, function (e) {\n terminated = true;\n (0, logs_1.log)(\"ble-error\", \"sendAPDU failure \" + String(e));\n o.error(e);\n });\n var unsubscribe = function () {\n if (!terminated) {\n (0, logs_1.log)(\"ble-verbose\", \"sendAPDU interruption\");\n terminated = true;\n }\n };\n return unsubscribe;\n });\n};\nexports.sendAPDU = sendAPDU;\n//# sourceMappingURL=sendAPDU.js.map","var __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 __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;\n return g = { next: verb(0), \"throw\": verb(1), \"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 (_) 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 __read = (this && this.__read) || function (o, n) {\n var m = typeof Symbol === \"function\" && o[Symbol.iterator];\n if (!m) return o;\n var i = m.call(o), r, ar = [], e;\n try {\n while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);\n }\n catch (error) { e = { error: error }; }\n finally {\n try {\n if (r && !r.done && (m = i[\"return\"])) m.call(i);\n }\n finally { if (e) throw e.error; }\n }\n return ar;\n};\n/* eslint-disable prefer-template */\nimport Transport from \"@ledgerhq/hw-transport\";\nimport { DisconnectedDevice, TransportOpenUserCancelled, } from \"@ledgerhq/errors\";\nimport { getBluetoothServiceUuids, getInfosForServiceUuid, } from \"@ledgerhq/devices\";\nimport { sendAPDU } from \"@ledgerhq/devices/lib/ble/sendAPDU\";\nimport { receiveAPDU } from \"@ledgerhq/devices/lib/ble/receiveAPDU\";\nimport { log } from \"@ledgerhq/logs\";\nimport { Observable, defer, merge, from } from \"rxjs\";\nimport { share, ignoreElements, first, map, tap } from \"rxjs/operators\";\nimport { monitorCharacteristic } from \"./monitorCharacteristic\";\nvar requiresBluetooth = function () {\n // $FlowFixMe\n var bluetooth = navigator.bluetooth;\n if (typeof bluetooth === \"undefined\") {\n throw new Error(\"web bluetooth not supported\");\n }\n return bluetooth;\n};\nvar availability = function () {\n return Observable.create(function (observer) {\n var bluetooth = requiresBluetooth();\n var onAvailabilityChanged = function (e) {\n observer.next(e.value);\n };\n bluetooth.addEventListener(\"availabilitychanged\", onAvailabilityChanged);\n var unsubscribed = false;\n bluetooth.getAvailability().then(function (available) {\n if (!unsubscribed) {\n observer.next(available);\n }\n });\n return function () {\n unsubscribed = true;\n bluetooth.removeEventListener(\"availabilitychanged\", onAvailabilityChanged);\n };\n });\n};\nvar transportsCache = {};\nvar requestDeviceParam = function () { return ({\n filters: getBluetoothServiceUuids().map(function (uuid) { return ({\n services: [uuid]\n }); })\n}); };\nvar retrieveService = function (device) { return __awaiter(void 0, void 0, void 0, function () {\n var _a, service, infos;\n return __generator(this, function (_b) {\n switch (_b.label) {\n case 0:\n if (!device.gatt)\n throw new Error(\"bluetooth gatt not found\");\n return [4 /*yield*/, device.gatt.getPrimaryServices()];\n case 1:\n _a = __read.apply(void 0, [_b.sent(), 1]), service = _a[0];\n if (!service)\n throw new Error(\"bluetooth service not found\");\n infos = getInfosForServiceUuid(service.uuid);\n if (!infos)\n throw new Error(\"bluetooth service infos not found\");\n return [2 /*return*/, [service, infos]];\n }\n });\n}); };\nfunction open(deviceOrId, needsReconnect) {\n return __awaiter(this, void 0, void 0, function () {\n var device, bluetooth, _a, service, infos, deviceModel, writeUuid, notifyUuid, _b, writeC, notifyC, notifyObservable, notif, transport, onDisconnect, beforeMTUTime, afterMTUTime;\n return __generator(this, function (_c) {\n switch (_c.label) {\n case 0:\n if (!(typeof deviceOrId === \"string\")) return [3 /*break*/, 2];\n if (transportsCache[deviceOrId]) {\n log(\"ble-verbose\", \"Transport in cache, using that.\");\n return [2 /*return*/, transportsCache[deviceOrId]];\n }\n bluetooth = requiresBluetooth();\n return [4 /*yield*/, bluetooth.requestDevice(requestDeviceParam())];\n case 1:\n // TODO instead we should \"query\" the device by its ID\n device = _c.sent();\n return [3 /*break*/, 3];\n case 2:\n device = deviceOrId;\n _c.label = 3;\n case 3:\n if (!!device.gatt.connected) return [3 /*break*/, 5];\n log(\"ble-verbose\", \"not connected. connecting...\");\n return [4 /*yield*/, device.gatt.connect()];\n case 4:\n _c.sent();\n _c.label = 5;\n case 5: return [4 /*yield*/, retrieveService(device)];\n case 6:\n _a = __read.apply(void 0, [_c.sent(), 2]), service = _a[0], infos = _a[1];\n deviceModel = infos.deviceModel, writeUuid = infos.writeUuid, notifyUuid = infos.notifyUuid;\n return [4 /*yield*/, Promise.all([\n service.getCharacteristic(writeUuid),\n service.getCharacteristic(notifyUuid),\n ])];\n case 7:\n _b = __read.apply(void 0, [_c.sent(), 2]), writeC = _b[0], notifyC = _b[1];\n notifyObservable = monitorCharacteristic(notifyC).pipe(tap(function (value) {\n log(\"ble-frame\", \"<= \" + value.toString(\"hex\"));\n }), share());\n notif = notifyObservable.subscribe();\n transport = new BluetoothTransport(device, writeC, notifyObservable, deviceModel);\n if (!device.gatt.connected) {\n throw new DisconnectedDevice();\n }\n // eslint-disable-next-line require-atomic-updates\n transportsCache[transport.id] = transport;\n onDisconnect = function (e) {\n console.log(\"onDisconnect!\", e);\n delete transportsCache[transport.id];\n transport.notYetDisconnected = false;\n notif.unsubscribe();\n device.removeEventListener(\"gattserverdisconnected\", onDisconnect);\n log(\"ble-verbose\", \"BleTransport(\" + transport.id + \") disconnected\");\n transport.emit(\"disconnect\", e);\n };\n device.addEventListener(\"gattserverdisconnected\", onDisconnect);\n beforeMTUTime = Date.now();\n _c.label = 8;\n case 8:\n _c.trys.push([8, , 10, 14]);\n return [4 /*yield*/, transport.inferMTU()];\n case 9:\n _c.sent();\n return [3 /*break*/, 14];\n case 10:\n afterMTUTime = Date.now();\n // workaround for #279: we need to open() again if we come the first time here,\n // to make sure we do a disconnect() after the first pairing time\n // because of a firmware bug\n if (afterMTUTime - beforeMTUTime < 1000) {\n needsReconnect = false; // (optim) there is likely no new pairing done because mtu answer was fast.\n }\n if (!needsReconnect) return [3 /*break*/, 13];\n return [4 /*yield*/, device.gatt.disconnect()];\n case 11:\n _c.sent();\n // necessary time for the bonding workaround\n return [4 /*yield*/, new Promise(function (s) { return setTimeout(s, 4000); })];\n case 12:\n // necessary time for the bonding workaround\n _c.sent();\n _c.label = 13;\n case 13: return [7 /*endfinally*/];\n case 14:\n if (needsReconnect) {\n return [2 /*return*/, open(device, false)];\n }\n return [2 /*return*/, transport];\n }\n });\n });\n}\n/**\n * react-native bluetooth BLE implementation\n * @example\n * import BluetoothTransport from \"@ledgerhq/hw-transport-web-ble\";\n */\nvar BluetoothTransport = /** @class */ (function (_super) {\n __extends(BluetoothTransport, _super);\n function BluetoothTransport(device, writeCharacteristic, notifyObservable, deviceModel) {\n var _this = _super.call(this) || this;\n _this.mtuSize = 20;\n _this.notYetDisconnected = true;\n _this.write = function (buffer) { return __awaiter(_this, void 0, void 0, function () {\n return __generator(this, function (_b) {\n switch (_b.label) {\n case 0:\n log(\"ble-frame\", \"=> \" + buffer.toString(\"hex\"));\n return [4 /*yield*/, this.writeCharacteristic.writeValue(buffer)];\n case 1:\n _b.sent();\n return [2 /*return*/];\n }\n });\n }); };\n _this.id = device.id;\n _this.device = device;\n _this.writeCharacteristic = writeCharacteristic;\n _this.notifyObservable = notifyObservable;\n _this.deviceModel = deviceModel;\n log(\"ble-verbose\", \"BleTransport(\" + String(_this.id) + \") new instance\");\n return _this;\n }\n /**\n * Scan for Ledger Bluetooth devices.\n * On this web implementation, it only emits ONE device, the one that was selected in the UI (if any).\n */\n BluetoothTransport.listen = function (observer) {\n log(\"ble-verbose\", \"listen...\");\n var unsubscribed;\n var bluetooth = requiresBluetooth();\n bluetooth.requestDevice(requestDeviceParam()).then(function (device) {\n if (!unsubscribed) {\n observer.next({\n type: \"add\",\n descriptor: device\n });\n observer.complete();\n }\n }, function (error) {\n observer.error(new TransportOpenUserCancelled(error.message));\n });\n function unsubscribe() {\n unsubscribed = true;\n }\n return {\n unsubscribe: unsubscribe\n };\n };\n /**\n * open a bluetooth device.\n */\n BluetoothTransport.open = function (deviceOrId) {\n return __awaiter(this, void 0, void 0, function () {\n return __generator(this, function (_b) {\n return [2 /*return*/, open(deviceOrId, true)];\n });\n });\n };\n BluetoothTransport.prototype.inferMTU = function () {\n return __awaiter(this, void 0, void 0, function () {\n var mtu, mtuSize;\n var _this = this;\n return __generator(this, function (_b) {\n switch (_b.label) {\n case 0:\n mtu = 23;\n return [4 /*yield*/, this.exchangeAtomicImpl(function () { return __awaiter(_this, void 0, void 0, function () {\n var e_1;\n var _this = this;\n return __generator(this, function (_b) {\n switch (_b.label) {\n case 0:\n _b.trys.push([0, 2, , 3]);\n return [4 /*yield*/, merge(this.notifyObservable.pipe(first(function (buffer) { return buffer.readUInt8(0) === 0x08; }), map(function (buffer) { return buffer.readUInt8(5); })), defer(function () { return from(_this.write(Buffer.from([0x08, 0, 0, 0, 0]))); }).pipe(ignoreElements())).toPromise()];\n case 1:\n mtu =\n (_b.sent()) + 3;\n return [3 /*break*/, 3];\n case 2:\n e_1 = _b.sent();\n log(\"ble-error\", \"inferMTU got \" + String(e_1));\n this.device.gatt.disconnect();\n throw e_1;\n case 3: return [2 /*return*/];\n }\n });\n }); })];\n case 1:\n _b.sent();\n if (mtu > 23) {\n mtuSize = mtu - 3;\n log(\"ble-verbose\", \"BleTransport(\" + String(this.id) + \") mtu set to \" + String(mtuSize));\n this.mtuSize = mtuSize;\n }\n return [2 /*return*/, this.mtuSize];\n }\n });\n });\n };\n /**\n * Exchange with the device using APDU protocol.\n * @param apdu\n * @returns a promise of apdu response\n */\n BluetoothTransport.prototype.exchange = function (apdu) {\n return __awaiter(this, void 0, void 0, function () {\n var b;\n var _this = this;\n return __generator(this, function (_b) {\n switch (_b.label) {\n case 0: return [4 /*yield*/, this.exchangeAtomicImpl(function () { return __awaiter(_this, void 0, void 0, function () {\n var msgIn, data, msgOut, e_2;\n return __generator(this, function (_b) {\n switch (_b.label) {\n case 0:\n _b.trys.push([0, 2, , 3]);\n msgIn = apdu.toString(\"hex\");\n log(\"apdu\", \"=> \" + msgIn);\n return [4 /*yield*/, merge(this.notifyObservable.pipe(receiveAPDU), sendAPDU(this.write, apdu, this.mtuSize)).toPromise()];\n case 1:\n data = _b.sent();\n msgOut = data.toString(\"hex\");\n log(\"apdu\", \"<= \" + msgOut);\n return [2 /*return*/, data];\n case 2:\n e_2 = _b.sent();\n log(\"ble-error\", \"exchange got \" + String(e_2));\n if (this.notYetDisconnected) {\n // in such case we will always disconnect because something is bad.\n this.device.gatt.disconnect();\n }\n throw e_2;\n case 3: return [2 /*return*/];\n }\n });\n }); })];\n case 1:\n b = _b.sent();\n return [2 /*return*/, b];\n }\n });\n });\n };\n BluetoothTransport.prototype.setScrambleKey = function () { };\n BluetoothTransport.prototype.close = function () {\n return __awaiter(this, void 0, void 0, function () {\n return __generator(this, function (_b) {\n switch (_b.label) {\n case 0:\n if (!this.exchangeBusyPromise) return [3 /*break*/, 2];\n return [4 /*yield*/, this.exchangeBusyPromise];\n case 1:\n _b.sent();\n _b.label = 2;\n case 2: return [2 /*return*/];\n }\n });\n });\n };\n var _a;\n _a = BluetoothTransport;\n BluetoothTransport.isSupported = function () {\n return Promise.resolve()\n .then(requiresBluetooth)\n .then(function () { return true; }, function () { return false; });\n };\n /**\n * observe event with { available: bool, type: string }\n * (available is generic, type is specific)\n * an event is emit once and then each time it changes\n */\n BluetoothTransport.observeAvailability = function (observer) {\n return availability().subscribe(observer);\n };\n BluetoothTransport.list = function () { return Promise.resolve([]); };\n /**\n * globally disconnect a bluetooth device by its id.\n */\n BluetoothTransport.disconnect = function (id) { return __awaiter(void 0, void 0, void 0, function () {\n var transport;\n return __generator(_a, function (_b) {\n log(\"ble-verbose\", \"user disconnect(\" + id + \")\");\n transport = transportsCache[id];\n if (transport) {\n transport.device.gatt.disconnect();\n }\n return [2 /*return*/];\n });\n }); };\n return BluetoothTransport;\n}(Transport));\nexport default BluetoothTransport;\n//# sourceMappingURL=TransportWebBLE.js.map","\"use strict\";\nexports.__esModule = true;\nexports.receiveAPDU = void 0;\nvar errors_1 = require(\"@ledgerhq/errors\");\nvar rxjs_1 = require(\"rxjs\");\nvar logs_1 = require(\"@ledgerhq/logs\");\nvar TagId = 0x05;\n// operator that transform the input raw stream into one apdu response and finishes\nvar receiveAPDU = function (rawStream) {\n return rxjs_1.Observable.create(function (o) {\n var notifiedIndex = 0;\n var notifiedDataLength = 0;\n var notifiedData = Buffer.alloc(0);\n var sub = rawStream.subscribe({\n complete: function () {\n o.error(new errors_1.DisconnectedDevice());\n sub.unsubscribe();\n },\n error: function (e) {\n (0, logs_1.log)(\"ble-error\", \"in receiveAPDU \" + String(e));\n o.error(e);\n sub.unsubscribe();\n },\n next: function (value) {\n var tag = value.readUInt8(0);\n var index = value.readUInt16BE(1);\n var data = value.slice(3);\n if (tag !== TagId) {\n o.error(new errors_1.TransportError(\"Invalid tag \" + tag.toString(16), \"InvalidTag\"));\n return;\n }\n if (notifiedIndex !== index) {\n o.error(new errors_1.TransportError(\"BLE: Invalid sequence number. discontinued chunk. Received \" +\n index +\n \" but expected \" +\n notifiedIndex, \"InvalidSequence\"));\n return;\n }\n if (index === 0) {\n notifiedDataLength = data.readUInt16BE(0);\n data = data.slice(2);\n }\n notifiedIndex++;\n notifiedData = Buffer.concat([notifiedData, data]);\n if (notifiedData.length > notifiedDataLength) {\n o.error(new errors_1.TransportError(\"BLE: received too much data. discontinued chunk. Received \" +\n notifiedData.length +\n \" but expected \" +\n notifiedDataLength, \"BLETooMuchData\"));\n return;\n }\n if (notifiedData.length === notifiedDataLength) {\n o.next(notifiedData);\n o.complete();\n sub.unsubscribe();\n }\n }\n });\n return function () {\n sub.unsubscribe();\n };\n });\n};\nexports.receiveAPDU = receiveAPDU;\n//# sourceMappingURL=receiveAPDU.js.map","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\n\n/**\n * A Log object\n */\nvar id = 0;\nvar subscribers = [];\n\n/**\n * log something\n * @param type a namespaced identifier of the log (it is not a level like \"debug\", \"error\" but more like \"apdu-in\", \"apdu-out\", etc...)\n * @param message a clear message of the log associated to the type\n */\nvar log = exports.log = function log(type, message, data) {\n var obj = { type: type, id: String(++id), date: new Date() };\n if (message) obj.message = message;\n if (data) obj.data = data;\n dispatch(obj);\n};\n\n/**\n * listen to logs.\n * @param cb that is called for each future log() with the Log object\n * @return a function that can be called to unsubscribe the listener\n */\nvar listen = exports.listen = function listen(cb) {\n subscribers.push(cb);\n return function () {\n var i = subscribers.indexOf(cb);\n if (i !== -1) {\n // equivalent of subscribers.splice(i, 1) // https://twitter.com/Rich_Harris/status/1125850391155965952\n subscribers[i] = subscribers[subscribers.length - 1];\n subscribers.pop();\n }\n };\n};\n\nfunction dispatch(log) {\n for (var i = 0; i < subscribers.length; i++) {\n try {\n subscribers[i](log);\n } catch (e) {\n console.error(e);\n }\n }\n}\n\n// for debug purpose\nglobal.__ledgerLogsListen = listen;\n//# sourceMappingURL=index.js.map","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; };\n\n/**\n * The USB product IDs will be defined as MMII, encoding a model (MM) and an interface bitfield (II)\n *\n ** Model\n * Ledger Nano S : 0x10\n * Ledger Blue : 0x00\n * Ledger Nano X : 0x40\n *\n ** Interface support bitfield\n * Generic HID : 0x01\n * Keyboard HID : 0x02\n * U2F : 0x04\n * CCID : 0x08\n * WebUSB : 0x10\n */\n\nvar IIGenericHID = exports.IIGenericHID = 0x01;\nvar IIKeyboardHID = exports.IIKeyboardHID = 0x02;\nvar IIU2F = exports.IIU2F = 0x04;\nvar IICCID = exports.IICCID = 0x08;\nvar IIWebUSB = exports.IIWebUSB = 0x10;\n\nvar devices = {\n blue: {\n id: \"blue\",\n productName: \"Ledger Blue\",\n productIdMM: 0x00,\n legacyUsbProductId: 0x0000,\n usbOnly: true,\n memorySize: 480 * 1024,\n blockSize: 4 * 1024\n },\n nanoS: {\n id: \"nanoS\",\n productName: \"Ledger Nano S\",\n productIdMM: 0x10,\n legacyUsbProductId: 0x0001,\n usbOnly: true,\n memorySize: 320 * 1024,\n blockSize: 4 * 1024\n },\n nanoX: {\n id: \"nanoX\",\n productName: \"Ledger Nano X\",\n productIdMM: 0x40,\n legacyUsbProductId: 0x0004,\n usbOnly: false,\n memorySize: 2 * 1024 * 1024,\n blockSize: 4 * 1024,\n bluetoothSpec: [{\n // this is the legacy one (prototype version). we will eventually drop it.\n serviceUuid: \"d973f2e0-b19e-11e2-9e96-0800200c9a66\",\n notifyUuid: \"d973f2e1-b19e-11e2-9e96-0800200c9a66\",\n writeUuid: \"d973f2e2-b19e-11e2-9e96-0800200c9a66\"\n }, {\n serviceUuid: \"13d63400-2c97-0004-0000-4c6564676572\",\n notifyUuid: \"13d63400-2c97-0004-0001-4c6564676572\",\n writeUuid: \"13d63400-2c97-0004-0002-4c6564676572\"\n }]\n }\n};\n\nvar productMap = {\n Blue: \"blue\",\n \"Nano S\": \"nanoS\",\n \"Nano X\": \"nanoX\"\n};\n\n// $FlowFixMe\nvar devicesList = Object.values(devices);\n\n/**\n *\n */\nvar ledgerUSBVendorId = exports.ledgerUSBVendorId = 0x2c97;\n\n/**\n *\n */\nvar getDeviceModel = exports.getDeviceModel = function getDeviceModel(id) {\n var info = devices[id];\n if (!info) throw new Error(\"device '\" + id + \"' does not exist\");\n return info;\n};\n\n/**\n *\n */\nvar identifyUSBProductId = exports.identifyUSBProductId = function identifyUSBProductId(usbProductId) {\n var legacy = devicesList.find(function (d) {\n return d.legacyUsbProductId === usbProductId;\n });\n if (legacy) return legacy;\n\n var mm = usbProductId >> 8;\n var deviceModel = devicesList.find(function (d) {\n return d.productIdMM === mm;\n });\n return deviceModel;\n};\n\nvar identifyProductName = exports.identifyProductName = function identifyProductName(productName) {\n var productId = productMap[productName];\n var deviceModel = devicesList.find(function (d) {\n return d.id === productId;\n });\n\n return deviceModel;\n};\n\nvar bluetoothServices = [];\nvar serviceUuidToInfos = {};\n\nfor (var _id in devices) {\n var _deviceModel = devices[_id];\n var _bluetoothSpec = _deviceModel.bluetoothSpec;\n\n if (_bluetoothSpec) {\n for (var i = 0; i < _bluetoothSpec.length; i++) {\n var spec = _bluetoothSpec[i];\n bluetoothServices.push(spec.serviceUuid);\n serviceUuidToInfos[spec.serviceUuid] = serviceUuidToInfos[spec.serviceUuid.replace(/-/g, \"\")] = _extends({ deviceModel: _deviceModel }, spec);\n }\n }\n}\n\n/**\n *\n */\nvar getBluetoothServiceUuids = exports.getBluetoothServiceUuids = function getBluetoothServiceUuids() {\n return bluetoothServices;\n};\n\n/**\n *\n */\nvar getInfosForServiceUuid = exports.getInfosForServiceUuid = function getInfosForServiceUuid(uuid) {\n return serviceUuidToInfos[uuid.toLowerCase()];\n};\n\n/**\n *\n */\n\n\n/**\n *\n */\n\n\n/**\n *\n */\n//# sourceMappingURL=index.js.map","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();\n\nvar requestLedgerDevice = function () {\n var _ref = _asyncToGenerator( /*#__PURE__*/regeneratorRuntime.mark(function _callee() {\n var device;\n return regeneratorRuntime.wrap(function _callee$(_context) {\n while (1) {\n switch (_context.prev = _context.next) {\n case 0:\n _context.next = 2;\n return getHID().requestDevice({ filters: ledgerDevices });\n\n case 2:\n device = _context.sent;\n return _context.abrupt(\"return\", device);\n\n case 4:\n case \"end\":\n return _context.stop();\n }\n }\n }, _callee, this);\n }));\n\n return function requestLedgerDevice() {\n return _ref.apply(this, arguments);\n };\n}();\n\nvar getLedgerDevices = function () {\n var _ref2 = _asyncToGenerator( /*#__PURE__*/regeneratorRuntime.mark(function _callee2() {\n var devices;\n return regeneratorRuntime.wrap(function _callee2$(_context2) {\n while (1) {\n switch (_context2.prev = _context2.next) {\n case 0:\n _context2.next = 2;\n return getHID().getDevices();\n\n case 2:\n devices = _context2.sent;\n return _context2.abrupt(\"return\", devices.filter(function (d) {\n return d.vendorId === _devices.ledgerUSBVendorId;\n }));\n\n case 4:\n case \"end\":\n return _context2.stop();\n }\n }\n }, _callee2, this);\n }));\n\n return function getLedgerDevices() {\n return _ref2.apply(this, arguments);\n };\n}();\n\nvar getFirstLedgerDevice = function () {\n var _ref3 = _asyncToGenerator( /*#__PURE__*/regeneratorRuntime.mark(function _callee3() {\n var existingDevices;\n return regeneratorRuntime.wrap(function _callee3$(_context3) {\n while (1) {\n switch (_context3.prev = _context3.next) {\n case 0:\n _context3.next = 2;\n return getLedgerDevices();\n\n case 2:\n existingDevices = _context3.sent;\n\n if (!(existingDevices.length > 0)) {\n _context3.next = 5;\n break;\n }\n\n return _context3.abrupt(\"return\", existingDevices[0]);\n\n case 5:\n return _context3.abrupt(\"return\", requestLedgerDevice());\n\n case 6:\n case \"end\":\n return _context3.stop();\n }\n }\n }, _callee3, this);\n }));\n\n return function getFirstLedgerDevice() {\n return _ref3.apply(this, arguments);\n };\n}();\n\n/**\n * WebHID Transport implementation\n * @example\n * import TransportWebHID from \"@ledgerhq/hw-transport-webhid\";\n * ...\n * TransportWebHID.create().then(transport => ...)\n */\n\n\nvar _hwTransport = require(\"@ledgerhq/hw-transport\");\n\nvar _hwTransport2 = _interopRequireDefault(_hwTransport);\n\nvar _hidFraming = require(\"@ledgerhq/devices/lib/hid-framing\");\n\nvar _hidFraming2 = _interopRequireDefault(_hidFraming);\n\nvar _devices = require(\"@ledgerhq/devices\");\n\nvar _logs = require(\"@ledgerhq/logs\");\n\nvar _errors = require(\"@ledgerhq/errors\");\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return call && (typeof call === \"object\" || typeof call === \"function\") ? call : self; }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function, not \" + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }\n\nfunction _asyncToGenerator(fn) { return function () { var gen = fn.apply(this, arguments); return new Promise(function (resolve, reject) { function step(key, arg) { try { var info = gen[key](arg); var value = info.value; } catch (error) { reject(error); return; } if (info.done) { resolve(value); } else { return Promise.resolve(value).then(function (value) { step(\"next\", value); }, function (err) { step(\"throw\", err); }); } } return step(\"next\"); }); }; }\n\nvar ledgerDevices = [{ vendorId: _devices.ledgerUSBVendorId }];\n\nvar isSupported = function isSupported() {\n return Promise.resolve(!!(global.navigator && global.navigator.hid));\n};\n\nvar getHID = function getHID() {\n // $FlowFixMe\n var _navigator = navigator,\n hid = _navigator.hid;\n\n if (!hid) throw new _errors.TransportError(\"navigator.hid is not supported\", \"HIDNotSupported\");\n return hid;\n};\n\nvar TransportWebHID = function (_Transport) {\n _inherits(TransportWebHID, _Transport);\n\n function TransportWebHID(device) {\n _classCallCheck(this, TransportWebHID);\n\n var _this = _possibleConstructorReturn(this, (TransportWebHID.__proto__ || Object.getPrototypeOf(TransportWebHID)).call(this));\n\n _initialiseProps.call(_this);\n\n _this.device = device;\n _this.deviceModel = (0, _devices.identifyUSBProductId)(device.productId);\n device.addEventListener(\"inputreport\", _this.onInputReport);\n return _this;\n }\n\n /**\n * Check if WebUSB transport is supported.\n */\n\n\n /**\n * List the WebUSB devices that was previously authorized by the user.\n */\n\n\n /**\n * Actively listen to WebUSB devices and emit ONE device\n * that was either accepted before, if not it will trigger the native permission UI.\n *\n * Important: it must be called in the context of a UI click!\n */\n\n\n _createClass(TransportWebHID, [{\n key: \"close\",\n\n\n /**\n * Release the transport device\n */\n value: function () {\n var _ref4 = _asyncToGenerator( /*#__PURE__*/regeneratorRuntime.mark(function _callee4() {\n return regeneratorRuntime.wrap(function _callee4$(_context4) {\n while (1) {\n switch (_context4.prev = _context4.next) {\n case 0:\n _context4.next = 2;\n return this.exchangeBusyPromise;\n\n case 2:\n this.device.removeEventListener(\"inputreport\", this.onInputReport);\n _context4.next = 5;\n return this.device.close();\n\n case 5:\n case \"end\":\n return _context4.stop();\n }\n }\n }, _callee4, this);\n }));\n\n function close() {\n return _ref4.apply(this, arguments);\n }\n\n return close;\n }()\n\n /**\n * Exchange with the device using APDU protocol.\n * @param apdu\n * @returns a promise of apdu response\n */\n\n }, {\n key: \"setScrambleKey\",\n value: function setScrambleKey() {}\n }], [{\n key: \"request\",\n\n\n /**\n * Similar to create() except it will always display the device permission (even if some devices are already accepted).\n */\n value: function () {\n var _ref5 = _asyncToGenerator( /*#__PURE__*/regeneratorRuntime.mark(function _callee5() {\n var device;\n return regeneratorRuntime.wrap(function _callee5$(_context5) {\n while (1) {\n switch (_context5.prev = _context5.next) {\n case 0:\n _context5.next = 2;\n return requestLedgerDevice();\n\n case 2:\n device = _context5.sent;\n return _context5.abrupt(\"return\", TransportWebHID.open(device));\n\n case 4:\n case \"end\":\n return _context5.stop();\n }\n }\n }, _callee5, this);\n }));\n\n function request() {\n return _ref5.apply(this, arguments);\n }\n\n return request;\n }()\n\n /**\n * Similar to create() except it will never display the device permission (it returns a Promise, null if it fails to find a device).\n */\n\n }, {\n key: \"openConnected\",\n value: function () {\n var _ref6 = _asyncToGenerator( /*#__PURE__*/regeneratorRuntime.mark(function _callee6() {\n var devices;\n return regeneratorRuntime.wrap(function _callee6$(_context6) {\n while (1) {\n switch (_context6.prev = _context6.next) {\n case 0:\n _context6.next = 2;\n return getLedgerDevices();\n\n case 2:\n devices = _context6.sent;\n\n if (!(devices.length === 0)) {\n _context6.next = 5;\n break;\n }\n\n return _context6.abrupt(\"return\", null);\n\n case 5:\n return _context6.abrupt(\"return\", TransportWebHID.open(devices[0]));\n\n case 6:\n case \"end\":\n return _context6.stop();\n }\n }\n }, _callee6, this);\n }));\n\n function openConnected() {\n return _ref6.apply(this, arguments);\n }\n\n return openConnected;\n }()\n\n /**\n * Create a Ledger transport with a HIDDevice\n */\n\n }, {\n key: \"open\",\n value: function () {\n var _ref7 = _asyncToGenerator( /*#__PURE__*/regeneratorRuntime.mark(function _callee7(device) {\n var transport, onDisconnect;\n return regeneratorRuntime.wrap(function _callee7$(_context7) {\n while (1) {\n switch (_context7.prev = _context7.next) {\n case 0:\n _context7.next = 2;\n return device.open();\n\n case 2:\n transport = new TransportWebHID(device);\n\n onDisconnect = function onDisconnect(e) {\n if (device === e.device) {\n getHID().removeEventListener(\"disconnect\", onDisconnect);\n transport._emitDisconnect(new _errors.DisconnectedDevice());\n }\n };\n\n getHID().addEventListener(\"disconnect\", onDisconnect);\n return _context7.abrupt(\"return\", transport);\n\n case 6:\n case \"end\":\n return _context7.stop();\n }\n }\n }, _callee7, this);\n }));\n\n function open(_x) {\n return _ref7.apply(this, arguments);\n }\n\n return open;\n }()\n }]);\n\n return TransportWebHID;\n}(_hwTransport2.default);\n\nTransportWebHID.isSupported = isSupported;\nTransportWebHID.list = getLedgerDevices;\n\nTransportWebHID.listen = function (observer) {\n var unsubscribed = false;\n getFirstLedgerDevice().then(function (device) {\n if (!unsubscribed) {\n var deviceModel = (0, _devices.identifyUSBProductId)(device.productId);\n observer.next({ type: \"add\", descriptor: device, deviceModel: deviceModel });\n observer.complete();\n }\n }, function (error) {\n observer.error(new _errors.TransportOpenUserCancelled(error.message));\n });\n function unsubscribe() {\n unsubscribed = true;\n }\n return { unsubscribe: unsubscribe };\n};\n\nvar _initialiseProps = function _initialiseProps() {\n var _this2 = this;\n\n this.channel = Math.floor(Math.random() * 0xffff);\n this.packetSize = 64;\n this.inputs = [];\n\n this.read = function () {\n if (_this2.inputs.length) {\n return Promise.resolve(_this2.inputs.shift());\n }\n return new Promise(function (success) {\n _this2.inputCallback = success;\n });\n };\n\n this.onInputReport = function (e) {\n var buffer = new Buffer(e.data.buffer);\n if (_this2.inputCallback) {\n _this2.inputCallback(buffer);\n _this2.inputCallback = null;\n } else {\n _this2.inputs.push(buffer);\n }\n };\n\n this._disconnectEmitted = false;\n\n this._emitDisconnect = function (e) {\n if (_this2._disconnectEmitted) return;\n _this2._disconnectEmitted = true;\n _this2.emit(\"disconnect\", e);\n };\n\n this.exchange = function (apdu) {\n return _this2.exchangeAtomicImpl(_asyncToGenerator( /*#__PURE__*/regeneratorRuntime.mark(function _callee8() {\n var channel, packetSize, framing, blocks, i, result, acc, buffer;\n return regeneratorRuntime.wrap(function _callee8$(_context8) {\n while (1) {\n switch (_context8.prev = _context8.next) {\n case 0:\n channel = _this2.channel, packetSize = _this2.packetSize;\n\n (0, _logs.log)(\"apdu\", \"=> \" + apdu.toString(\"hex\"));\n\n framing = (0, _hidFraming2.default)(channel, packetSize);\n\n // Write...\n\n blocks = framing.makeBlocks(apdu);\n i = 0;\n\n case 5:\n if (!(i < blocks.length)) {\n _context8.next = 12;\n break;\n }\n\n (0, _logs.log)(\"hid-frame\", \"=> \" + blocks[i].toString(\"hex\"));\n _context8.next = 9;\n return _this2.device.sendReport(0, blocks[i]);\n\n case 9:\n i++;\n _context8.next = 5;\n break;\n\n case 12:\n\n // Read...\n result = void 0;\n acc = void 0;\n\n case 14:\n if (result = framing.getReducedResult(acc)) {\n _context8.next = 22;\n break;\n }\n\n _context8.next = 17;\n return _this2.read();\n\n case 17:\n buffer = _context8.sent;\n\n (0, _logs.log)(\"hid-frame\", \"<= \" + buffer.toString(\"hex\"));\n acc = framing.reduceResponse(acc, buffer);\n _context8.next = 14;\n break;\n\n case 22:\n\n (0, _logs.log)(\"apdu\", \"<= \" + result.toString(\"hex\"));\n return _context8.abrupt(\"return\", result);\n\n case 24:\n case \"end\":\n return _context8.stop();\n }\n }\n }, _callee8, _this2);\n }))).catch(function (e) {\n if (e && e.message && e.message.includes(\"write\")) {\n _this2._emitDisconnect(e);\n throw new _errors.DisconnectedDeviceDuringOperation(e.message);\n }\n throw e;\n });\n };\n};\n\nexports.default = TransportWebHID;\n//# sourceMappingURL=TransportWebHID.js.map","var __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 _a;\nimport semver from \"semver\";\n/**\n * The USB product IDs will be defined as MMII, encoding a model (MM) and an interface bitfield (II)\n *\n ** Model\n * Ledger Nano S : 0x10\n * Ledger Blue : 0x00\n * Ledger Nano X : 0x40\n *\n ** Interface support bitfield\n * Generic HID : 0x01\n * Keyboard HID : 0x02\n * U2F : 0x04\n * CCID : 0x08\n * WebUSB : 0x10\n */\nexport var IIGenericHID = 0x01;\nexport var IIKeyboardHID = 0x02;\nexport var IIU2F = 0x04;\nexport var IICCID = 0x08;\nexport var IIWebUSB = 0x10;\nexport var DeviceModelId;\n(function (DeviceModelId) {\n DeviceModelId[\"blue\"] = \"blue\";\n DeviceModelId[\"nanoS\"] = \"nanoS\";\n DeviceModelId[\"nanoSP\"] = \"nanoSP\";\n DeviceModelId[\"nanoX\"] = \"nanoX\";\n})(DeviceModelId || (DeviceModelId = {}));\nvar devices = (_a = {},\n _a[DeviceModelId.blue] = {\n id: DeviceModelId.blue,\n productName: \"Ledger Blue\",\n productIdMM: 0x00,\n legacyUsbProductId: 0x0000,\n usbOnly: true,\n memorySize: 480 * 1024,\n masks: [0x31000000, 0x31010000],\n getBlockSize: function (_firwareVersion) { return 4 * 1024; }\n },\n _a[DeviceModelId.nanoS] = {\n id: DeviceModelId.nanoS,\n productName: \"Ledger Nano S\",\n productIdMM: 0x10,\n legacyUsbProductId: 0x0001,\n usbOnly: true,\n memorySize: 320 * 1024,\n masks: [0x31100000],\n getBlockSize: function (firmwareVersion) {\n var _a;\n return semver.lt((_a = semver.coerce(firmwareVersion)) !== null && _a !== void 0 ? _a : \"\", \"2.0.0\")\n ? 4 * 1024\n : 2 * 1024;\n }\n },\n _a[DeviceModelId.nanoSP] = {\n id: DeviceModelId.nanoSP,\n productName: \"Ledger Nano SP\",\n productIdMM: 0x50,\n legacyUsbProductId: 0x0005,\n usbOnly: true,\n memorySize: 1533 * 1024,\n masks: [0x33100000],\n getBlockSize: function (_firmwareVersion) { return 512; }\n },\n _a[DeviceModelId.nanoX] = {\n id: DeviceModelId.nanoX,\n productName: \"Ledger Nano X\",\n productIdMM: 0x40,\n legacyUsbProductId: 0x0004,\n usbOnly: false,\n memorySize: 2 * 1024 * 1024,\n masks: [0x33000000],\n getBlockSize: function (_firwareVersion) { return 4 * 1024; },\n bluetoothSpec: [\n {\n // this is the legacy one (prototype version). we will eventually drop it.\n serviceUuid: \"d973f2e0-b19e-11e2-9e96-0800200c9a66\",\n notifyUuid: \"d973f2e1-b19e-11e2-9e96-0800200c9a66\",\n writeUuid: \"d973f2e2-b19e-11e2-9e96-0800200c9a66\"\n },\n {\n serviceUuid: \"13d63400-2c97-0004-0000-4c6564676572\",\n notifyUuid: \"13d63400-2c97-0004-0001-4c6564676572\",\n writeUuid: \"13d63400-2c97-0004-0002-4c6564676572\"\n },\n ]\n },\n _a);\nvar productMap = {\n Blue: DeviceModelId.blue,\n \"Nano S\": DeviceModelId.nanoS,\n \"Nano X\": DeviceModelId.nanoX\n};\nvar devicesList = Object.values(devices);\n/**\n *\n */\nexport var ledgerUSBVendorId = 0x2c97;\n/**\n *\n */\nexport var getDeviceModel = function (id) {\n var info = devices[id];\n if (!info)\n throw new Error(\"device '\" + id + \"' does not exist\");\n return info;\n};\n/**\n * Given a `targetId`, return the deviceModel associated to it,\n * based on the first two bytes.\n */\nexport var identifyTargetId = function (targetId) {\n var deviceModel = devicesList.find(function (_a) {\n var masks = _a.masks;\n return masks.find(function (mask) { return (targetId & 0xffff0000) === mask; });\n });\n return deviceModel;\n};\n/**\n *\n */\nexport var identifyUSBProductId = function (usbProductId) {\n var legacy = devicesList.find(function (d) { return d.legacyUsbProductId === usbProductId; });\n if (legacy)\n return legacy;\n var mm = usbProductId >> 8;\n var deviceModel = devicesList.find(function (d) { return d.productIdMM === mm; });\n return deviceModel;\n};\nexport var identifyProductName = function (productName) {\n var productId = productMap[productName];\n if (!productId && productName.startsWith(\"Nano S\")) {\n productId = DeviceModelId.nanoSP;\n }\n var deviceModel = devicesList.find(function (d) { return d.id === productId; });\n return deviceModel;\n};\nvar bluetoothServices = [];\nvar serviceUuidToInfos = {};\nfor (var id in devices) {\n var deviceModel = devices[id];\n var bluetoothSpec = deviceModel.bluetoothSpec;\n if (bluetoothSpec) {\n for (var i = 0; i < bluetoothSpec.length; i++) {\n var spec = bluetoothSpec[i];\n bluetoothServices.push(spec.serviceUuid);\n serviceUuidToInfos[spec.serviceUuid] = serviceUuidToInfos[spec.serviceUuid.replace(/-/g, \"\")] = __assign({ deviceModel: deviceModel }, spec);\n }\n }\n}\n/**\n *\n */\nexport var getBluetoothServiceUuids = function () { return bluetoothServices; };\n/**\n *\n */\nexport var getInfosForServiceUuid = function (uuid) { return serviceUuidToInfos[uuid.toLowerCase()]; };\n//# sourceMappingURL=index.js.map","/* eslint-disable no-continue */\n/* eslint-disable no-unused-vars */\n/* eslint-disable no-param-reassign */\n/* eslint-disable no-prototype-builtins */\nvar __values = (this && this.__values) || function(o) {\n var s = typeof Symbol === \"function\" && Symbol.iterator, m = s && o[s], i = 0;\n if (m) return m.call(o);\n if (o && typeof o.length === \"number\") return {\n next: function () {\n if (o && i >= o.length) o = void 0;\n return { value: o && o[i++], done: !o };\n }\n };\n throw new TypeError(s ? \"Object is not iterable.\" : \"Symbol.iterator is not defined.\");\n};\nvar errorClasses = {};\nvar deserializers = {};\nexport var addCustomErrorDeserializer = function (name, deserializer) {\n deserializers[name] = deserializer;\n};\nexport var createCustomErrorClass = function (name) {\n var C = function CustomError(message, fields) {\n Object.assign(this, fields);\n this.name = name;\n this.message = message || name;\n this.stack = new Error().stack;\n };\n C.prototype = new Error();\n errorClasses[name] = C;\n return C;\n};\n// inspired from https://github.com/programble/errio/blob/master/index.js\nexport var deserializeError = function (object) {\n if (typeof object === \"object\" && object) {\n try {\n // $FlowFixMe FIXME HACK\n var msg = JSON.parse(object.message);\n if (msg.message && msg.name) {\n object = msg;\n }\n }\n catch (e) {\n // nothing\n }\n var error = void 0;\n if (typeof object.name === \"string\") {\n var name_1 = object.name;\n var des = deserializers[name_1];\n if (des) {\n error = des(object);\n }\n else {\n var constructor = name_1 === \"Error\" ? Error : errorClasses[name_1];\n if (!constructor) {\n console.warn(\"deserializing an unknown class '\" + name_1 + \"'\");\n constructor = createCustomErrorClass(name_1);\n }\n error = Object.create(constructor.prototype);\n try {\n for (var prop in object) {\n if (object.hasOwnProperty(prop)) {\n error[prop] = object[prop];\n }\n }\n }\n catch (e) {\n // sometimes setting a property can fail (e.g. .name)\n }\n }\n }\n else {\n error = new Error(object.message);\n }\n if (!error.stack && Error.captureStackTrace) {\n Error.captureStackTrace(error, deserializeError);\n }\n return error;\n }\n return new Error(String(object));\n};\n// inspired from https://github.com/sindresorhus/serialize-error/blob/master/index.js\nexport var serializeError = function (value) {\n if (!value)\n return value;\n if (typeof value === \"object\") {\n return destroyCircular(value, []);\n }\n if (typeof value === \"function\") {\n return \"[Function: \" + (value.name || \"anonymous\") + \"]\";\n }\n return value;\n};\n// https://www.npmjs.com/package/destroy-circular\nfunction destroyCircular(from, seen) {\n var e_1, _a;\n var to = {};\n seen.push(from);\n try {\n for (var _b = __values(Object.keys(from)), _c = _b.next(); !_c.done; _c = _b.next()) {\n var key = _c.value;\n var value = from[key];\n if (typeof value === \"function\") {\n continue;\n }\n if (!value || typeof value !== \"object\") {\n to[key] = value;\n continue;\n }\n if (seen.indexOf(from[key]) === -1) {\n to[key] = destroyCircular(from[key], seen.slice(0));\n continue;\n }\n to[key] = \"[Circular]\";\n }\n }\n catch (e_1_1) { e_1 = { error: e_1_1 }; }\n finally {\n try {\n if (_c && !_c.done && (_a = _b[\"return\"])) _a.call(_b);\n }\n finally { if (e_1) throw e_1.error; }\n }\n if (typeof from.name === \"string\") {\n to.name = from.name;\n }\n if (typeof from.message === \"string\") {\n to.message = from.message;\n }\n if (typeof from.stack === \"string\") {\n to.stack = from.stack;\n }\n return to;\n}\n//# sourceMappingURL=helpers.js.map","import { serializeError, deserializeError, createCustomErrorClass, addCustomErrorDeserializer, } from \"./helpers\";\nexport { serializeError, deserializeError, createCustomErrorClass, addCustomErrorDeserializer, };\nexport var AccountNameRequiredError = createCustomErrorClass(\"AccountNameRequired\");\nexport var AccountNotSupported = createCustomErrorClass(\"AccountNotSupported\");\nexport var AmountRequired = createCustomErrorClass(\"AmountRequired\");\nexport var BluetoothRequired = createCustomErrorClass(\"BluetoothRequired\");\nexport var BtcUnmatchedApp = createCustomErrorClass(\"BtcUnmatchedApp\");\nexport var CantOpenDevice = createCustomErrorClass(\"CantOpenDevice\");\nexport var CashAddrNotSupported = createCustomErrorClass(\"CashAddrNotSupported\");\nexport var CurrencyNotSupported = createCustomErrorClass(\"CurrencyNotSupported\");\nexport var DeviceAppVerifyNotSupported = createCustomErrorClass(\"DeviceAppVerifyNotSupported\");\nexport var DeviceGenuineSocketEarlyClose = createCustomErrorClass(\"DeviceGenuineSocketEarlyClose\");\nexport var DeviceNotGenuineError = createCustomErrorClass(\"DeviceNotGenuine\");\nexport var DeviceOnDashboardExpected = createCustomErrorClass(\"DeviceOnDashboardExpected\");\nexport var DeviceOnDashboardUnexpected = createCustomErrorClass(\"DeviceOnDashboardUnexpected\");\nexport var DeviceInOSUExpected = createCustomErrorClass(\"DeviceInOSUExpected\");\nexport var DeviceHalted = createCustomErrorClass(\"DeviceHalted\");\nexport var DeviceNameInvalid = createCustomErrorClass(\"DeviceNameInvalid\");\nexport var DeviceSocketFail = createCustomErrorClass(\"DeviceSocketFail\");\nexport var DeviceSocketNoBulkStatus = createCustomErrorClass(\"DeviceSocketNoBulkStatus\");\nexport var DisconnectedDevice = createCustomErrorClass(\"DisconnectedDevice\");\nexport var DisconnectedDeviceDuringOperation = createCustomErrorClass(\"DisconnectedDeviceDuringOperation\");\nexport var EnpointConfigError = createCustomErrorClass(\"EnpointConfig\");\nexport var EthAppPleaseEnableContractData = createCustomErrorClass(\"EthAppPleaseEnableContractData\");\nexport var FeeEstimationFailed = createCustomErrorClass(\"FeeEstimationFailed\");\nexport var FirmwareNotRecognized = createCustomErrorClass(\"FirmwareNotRecognized\");\nexport var HardResetFail = createCustomErrorClass(\"HardResetFail\");\nexport var InvalidXRPTag = createCustomErrorClass(\"InvalidXRPTag\");\nexport var InvalidAddress = createCustomErrorClass(\"InvalidAddress\");\nexport var InvalidAddressBecauseDestinationIsAlsoSource = createCustomErrorClass(\"InvalidAddressBecauseDestinationIsAlsoSource\");\nexport var LatestMCUInstalledError = createCustomErrorClass(\"LatestMCUInstalledError\");\nexport var UnknownMCU = createCustomErrorClass(\"UnknownMCU\");\nexport var LedgerAPIError = createCustomErrorClass(\"LedgerAPIError\");\nexport var LedgerAPIErrorWithMessage = createCustomErrorClass(\"LedgerAPIErrorWithMessage\");\nexport var LedgerAPINotAvailable = createCustomErrorClass(\"LedgerAPINotAvailable\");\nexport var ManagerAppAlreadyInstalledError = createCustomErrorClass(\"ManagerAppAlreadyInstalled\");\nexport var ManagerAppRelyOnBTCError = createCustomErrorClass(\"ManagerAppRelyOnBTC\");\nexport var ManagerAppDepInstallRequired = createCustomErrorClass(\"ManagerAppDepInstallRequired\");\nexport var ManagerAppDepUninstallRequired = createCustomErrorClass(\"ManagerAppDepUninstallRequired\");\nexport var ManagerDeviceLockedError = createCustomErrorClass(\"ManagerDeviceLocked\");\nexport var ManagerFirmwareNotEnoughSpaceError = createCustomErrorClass(\"ManagerFirmwareNotEnoughSpace\");\nexport var ManagerNotEnoughSpaceError = createCustomErrorClass(\"ManagerNotEnoughSpace\");\nexport var ManagerUninstallBTCDep = createCustomErrorClass(\"ManagerUninstallBTCDep\");\nexport var NetworkDown = createCustomErrorClass(\"NetworkDown\");\nexport var NoAddressesFound = createCustomErrorClass(\"NoAddressesFound\");\nexport var NotEnoughBalance = createCustomErrorClass(\"NotEnoughBalance\");\nexport var NotEnoughBalanceToDelegate = createCustomErrorClass(\"NotEnoughBalanceToDelegate\");\nexport var NotEnoughBalanceInParentAccount = createCustomErrorClass(\"NotEnoughBalanceInParentAccount\");\nexport var NotEnoughSpendableBalance = createCustomErrorClass(\"NotEnoughSpendableBalance\");\nexport var NotEnoughBalanceBecauseDestinationNotCreated = createCustomErrorClass(\"NotEnoughBalanceBecauseDestinationNotCreated\");\nexport var NoAccessToCamera = createCustomErrorClass(\"NoAccessToCamera\");\nexport var NotEnoughGas = createCustomErrorClass(\"NotEnoughGas\");\nexport var NotSupportedLegacyAddress = createCustomErrorClass(\"NotSupportedLegacyAddress\");\nexport var GasLessThanEstimate = createCustomErrorClass(\"GasLessThanEstimate\");\nexport var PasswordsDontMatchError = createCustomErrorClass(\"PasswordsDontMatch\");\nexport var PasswordIncorrectError = createCustomErrorClass(\"PasswordIncorrect\");\nexport var RecommendSubAccountsToEmpty = createCustomErrorClass(\"RecommendSubAccountsToEmpty\");\nexport var RecommendUndelegation = createCustomErrorClass(\"RecommendUndelegation\");\nexport var TimeoutTagged = createCustomErrorClass(\"TimeoutTagged\");\nexport var UnexpectedBootloader = createCustomErrorClass(\"UnexpectedBootloader\");\nexport var MCUNotGenuineToDashboard = createCustomErrorClass(\"MCUNotGenuineToDashboard\");\nexport var RecipientRequired = createCustomErrorClass(\"RecipientRequired\");\nexport var UnavailableTezosOriginatedAccountReceive = createCustomErrorClass(\"UnavailableTezosOriginatedAccountReceive\");\nexport var UnavailableTezosOriginatedAccountSend = createCustomErrorClass(\"UnavailableTezosOriginatedAccountSend\");\nexport var UpdateFetchFileFail = createCustomErrorClass(\"UpdateFetchFileFail\");\nexport var UpdateIncorrectHash = createCustomErrorClass(\"UpdateIncorrectHash\");\nexport var UpdateIncorrectSig = createCustomErrorClass(\"UpdateIncorrectSig\");\nexport var UpdateYourApp = createCustomErrorClass(\"UpdateYourApp\");\nexport var UserRefusedDeviceNameChange = createCustomErrorClass(\"UserRefusedDeviceNameChange\");\nexport var UserRefusedAddress = createCustomErrorClass(\"UserRefusedAddress\");\nexport var UserRefusedFirmwareUpdate = createCustomErrorClass(\"UserRefusedFirmwareUpdate\");\nexport var UserRefusedAllowManager = createCustomErrorClass(\"UserRefusedAllowManager\");\nexport var UserRefusedOnDevice = createCustomErrorClass(\"UserRefusedOnDevice\"); // TODO rename because it's just for transaction refusal\nexport var TransportOpenUserCancelled = createCustomErrorClass(\"TransportOpenUserCancelled\");\nexport var TransportInterfaceNotAvailable = createCustomErrorClass(\"TransportInterfaceNotAvailable\");\nexport var TransportRaceCondition = createCustomErrorClass(\"TransportRaceCondition\");\nexport var TransportWebUSBGestureRequired = createCustomErrorClass(\"TransportWebUSBGestureRequired\");\nexport var DeviceShouldStayInApp = createCustomErrorClass(\"DeviceShouldStayInApp\");\nexport var WebsocketConnectionError = createCustomErrorClass(\"WebsocketConnectionError\");\nexport var WebsocketConnectionFailed = createCustomErrorClass(\"WebsocketConnectionFailed\");\nexport var WrongDeviceForAccount = createCustomErrorClass(\"WrongDeviceForAccount\");\nexport var WrongAppForCurrency = createCustomErrorClass(\"WrongAppForCurrency\");\nexport var ETHAddressNonEIP = createCustomErrorClass(\"ETHAddressNonEIP\");\nexport var CantScanQRCode = createCustomErrorClass(\"CantScanQRCode\");\nexport var FeeNotLoaded = createCustomErrorClass(\"FeeNotLoaded\");\nexport var FeeRequired = createCustomErrorClass(\"FeeRequired\");\nexport var FeeTooHigh = createCustomErrorClass(\"FeeTooHigh\");\nexport var SyncError = createCustomErrorClass(\"SyncError\");\nexport var PairingFailed = createCustomErrorClass(\"PairingFailed\");\nexport var GenuineCheckFailed = createCustomErrorClass(\"GenuineCheckFailed\");\nexport var LedgerAPI4xx = createCustomErrorClass(\"LedgerAPI4xx\");\nexport var LedgerAPI5xx = createCustomErrorClass(\"LedgerAPI5xx\");\nexport var FirmwareOrAppUpdateRequired = createCustomErrorClass(\"FirmwareOrAppUpdateRequired\");\n// db stuff, no need to translate\nexport var NoDBPathGiven = createCustomErrorClass(\"NoDBPathGiven\");\nexport var DBWrongPassword = createCustomErrorClass(\"DBWrongPassword\");\nexport var DBNotReset = createCustomErrorClass(\"DBNotReset\");\n/**\n * TransportError is used for any generic transport errors.\n * e.g. Error thrown when data received by exchanges are incorrect or if exchanged failed to communicate with the device for various reason.\n */\nexport function TransportError(message, id) {\n this.name = \"TransportError\";\n this.message = message;\n this.stack = new Error().stack;\n this.id = id;\n}\nTransportError.prototype = new Error();\naddCustomErrorDeserializer(\"TransportError\", function (e) { return new TransportError(e.message, e.id); });\nexport var StatusCodes = {\n PIN_REMAINING_ATTEMPTS: 0x63c0,\n INCORRECT_LENGTH: 0x6700,\n MISSING_CRITICAL_PARAMETER: 0x6800,\n COMMAND_INCOMPATIBLE_FILE_STRUCTURE: 0x6981,\n SECURITY_STATUS_NOT_SATISFIED: 0x6982,\n CONDITIONS_OF_USE_NOT_SATISFIED: 0x6985,\n INCORRECT_DATA: 0x6a80,\n NOT_ENOUGH_MEMORY_SPACE: 0x6a84,\n REFERENCED_DATA_NOT_FOUND: 0x6a88,\n FILE_ALREADY_EXISTS: 0x6a89,\n INCORRECT_P1_P2: 0x6b00,\n INS_NOT_SUPPORTED: 0x6d00,\n CLA_NOT_SUPPORTED: 0x6e00,\n TECHNICAL_PROBLEM: 0x6f00,\n OK: 0x9000,\n MEMORY_PROBLEM: 0x9240,\n NO_EF_SELECTED: 0x9400,\n INVALID_OFFSET: 0x9402,\n FILE_NOT_FOUND: 0x9404,\n INCONSISTENT_FILE: 0x9408,\n ALGORITHM_NOT_SUPPORTED: 0x9484,\n INVALID_KCV: 0x9485,\n CODE_NOT_INITIALIZED: 0x9802,\n ACCESS_CONDITION_NOT_FULFILLED: 0x9804,\n CONTRADICTION_SECRET_CODE_STATUS: 0x9808,\n CONTRADICTION_INVALIDATION: 0x9810,\n CODE_BLOCKED: 0x9840,\n MAX_VALUE_REACHED: 0x9850,\n GP_AUTH_FAILED: 0x6300,\n LICENSING: 0x6f42,\n HALTED: 0x6faa\n};\nexport function getAltStatusMessage(code) {\n switch (code) {\n // improve text of most common errors\n case 0x6700:\n return \"Incorrect length\";\n case 0x6800:\n return \"Missing critical parameter\";\n case 0x6982:\n return \"Security not satisfied (dongle locked or have invalid access rights)\";\n case 0x6985:\n return \"Condition of use not satisfied (denied by the user?)\";\n case 0x6a80:\n return \"Invalid data received\";\n case 0x6b00:\n return \"Invalid parameter received\";\n }\n if (0x6f00 <= code && code <= 0x6fff) {\n return \"Internal error, please report\";\n }\n}\n/**\n * Error thrown when a device returned a non success status.\n * the error.statusCode is one of the `StatusCodes` exported by this library.\n */\nexport function TransportStatusError(statusCode) {\n this.name = \"TransportStatusError\";\n var statusText = Object.keys(StatusCodes).find(function (k) { return StatusCodes[k] === statusCode; }) ||\n \"UNKNOWN_ERROR\";\n var smsg = getAltStatusMessage(statusCode) || statusText;\n var statusCodeStr = statusCode.toString(16);\n this.message = \"Ledger device: \" + smsg + \" (0x\" + statusCodeStr + \")\";\n this.stack = new Error().stack;\n this.statusCode = statusCode;\n this.statusText = statusText;\n}\nTransportStatusError.prototype = new Error();\naddCustomErrorDeserializer(\"TransportStatusError\", function (e) { return new TransportStatusError(e.statusCode); });\n//# sourceMappingURL=index.js.map","var id = 0;\nvar subscribers = [];\n/**\n * log something\n * @param type a namespaced identifier of the log (it is not a level like \"debug\", \"error\" but more like \"apdu-in\", \"apdu-out\", etc...)\n * @param message a clear message of the log associated to the type\n */\nexport var log = function (type, message, data) {\n var obj = {\n type: type,\n id: String(++id),\n date: new Date()\n };\n if (message)\n obj.message = message;\n if (data)\n obj.data = data;\n dispatch(obj);\n};\n/**\n * listen to logs.\n * @param cb that is called for each future log() with the Log object\n * @return a function that can be called to unsubscribe the listener\n */\nexport var listen = function (cb) {\n subscribers.push(cb);\n return function () {\n var i = subscribers.indexOf(cb);\n if (i !== -1) {\n // equivalent of subscribers.splice(i, 1) // https://twitter.com/Rich_Harris/status/1125850391155965952\n subscribers[i] = subscribers[subscribers.length - 1];\n subscribers.pop();\n }\n };\n};\nfunction dispatch(log) {\n for (var i = 0; i < subscribers.length; i++) {\n try {\n subscribers[i](log);\n }\n catch (e) {\n console.error(e);\n }\n }\n}\nif (typeof window !== \"undefined\") {\n window.__ledgerLogsListen = listen;\n}\n//# sourceMappingURL=index.js.map","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.StatusCodes = exports.DBNotReset = exports.DBWrongPassword = exports.NoDBPathGiven = exports.FirmwareOrAppUpdateRequired = exports.LedgerAPI5xx = exports.LedgerAPI4xx = exports.GenuineCheckFailed = exports.PairingFailed = exports.SyncError = exports.FeeTooHigh = exports.FeeRequired = exports.FeeNotLoaded = exports.CantScanQRCode = exports.ETHAddressNonEIP = exports.WrongAppForCurrency = exports.WrongDeviceForAccount = exports.WebsocketConnectionFailed = exports.WebsocketConnectionError = exports.DeviceShouldStayInApp = exports.TransportWebUSBGestureRequired = exports.TransportInterfaceNotAvailable = exports.TransportOpenUserCancelled = exports.UserRefusedOnDevice = exports.UserRefusedAllowManager = exports.UserRefusedFirmwareUpdate = exports.UserRefusedAddress = exports.UserRefusedDeviceNameChange = exports.UpdateYourApp = exports.UnavailableTezosOriginatedAccountSend = exports.UnavailableTezosOriginatedAccountReceive = exports.RecipientRequired = exports.MCUNotGenuineToDashboard = exports.UnexpectedBootloader = exports.TimeoutTagged = exports.RecommendUndelegation = exports.RecommendSubAccountsToEmpty = exports.PasswordIncorrectError = exports.PasswordsDontMatchError = exports.GasLessThanEstimate = exports.NotSupportedLegacyAddress = exports.NotEnoughGas = exports.NoAccessToCamera = exports.NotEnoughBalanceBecauseDestinationNotCreated = exports.NotEnoughSpendableBalance = exports.NotEnoughBalanceInParentAccount = exports.NotEnoughBalanceToDelegate = exports.NotEnoughBalance = exports.NoAddressesFound = exports.NetworkDown = exports.ManagerUninstallBTCDep = exports.ManagerNotEnoughSpaceError = exports.ManagerFirmwareNotEnoughSpaceError = exports.ManagerDeviceLockedError = exports.ManagerAppDepUninstallRequired = exports.ManagerAppDepInstallRequired = exports.ManagerAppRelyOnBTCError = exports.ManagerAppAlreadyInstalledError = exports.LedgerAPINotAvailable = exports.LedgerAPIErrorWithMessage = exports.LedgerAPIError = exports.UnknownMCU = exports.LatestMCUInstalledError = exports.InvalidAddressBecauseDestinationIsAlsoSource = exports.InvalidAddress = exports.InvalidXRPTag = exports.HardResetFail = exports.FeeEstimationFailed = exports.EthAppPleaseEnableContractData = exports.EnpointConfigError = exports.DisconnectedDeviceDuringOperation = exports.DisconnectedDevice = exports.DeviceSocketNoBulkStatus = exports.DeviceSocketFail = exports.DeviceNameInvalid = exports.DeviceHalted = exports.DeviceInOSUExpected = exports.DeviceOnDashboardUnexpected = exports.DeviceOnDashboardExpected = exports.DeviceNotGenuineError = exports.DeviceGenuineSocketEarlyClose = exports.DeviceAppVerifyNotSupported = exports.CurrencyNotSupported = exports.CashAddrNotSupported = exports.CantOpenDevice = exports.BtcUnmatchedApp = exports.BluetoothRequired = exports.AmountRequired = exports.AccountNotSupported = exports.AccountNameRequiredError = exports.addCustomErrorDeserializer = exports.createCustomErrorClass = exports.deserializeError = exports.serializeError = undefined;\nexports.TransportError = TransportError;\nexports.getAltStatusMessage = getAltStatusMessage;\nexports.TransportStatusError = TransportStatusError;\n\nvar _helpers = require(\"./helpers\");\n\nexports.serializeError = _helpers.serializeError;\nexports.deserializeError = _helpers.deserializeError;\nexports.createCustomErrorClass = _helpers.createCustomErrorClass;\nexports.addCustomErrorDeserializer = _helpers.addCustomErrorDeserializer;\nvar AccountNameRequiredError = exports.AccountNameRequiredError = (0, _helpers.createCustomErrorClass)(\"AccountNameRequired\");\nvar AccountNotSupported = exports.AccountNotSupported = (0, _helpers.createCustomErrorClass)(\"AccountNotSupported\");\nvar AmountRequired = exports.AmountRequired = (0, _helpers.createCustomErrorClass)(\"AmountRequired\");\nvar BluetoothRequired = exports.BluetoothRequired = (0, _helpers.createCustomErrorClass)(\"BluetoothRequired\");\nvar BtcUnmatchedApp = exports.BtcUnmatchedApp = (0, _helpers.createCustomErrorClass)(\"BtcUnmatchedApp\");\nvar CantOpenDevice = exports.CantOpenDevice = (0, _helpers.createCustomErrorClass)(\"CantOpenDevice\");\nvar CashAddrNotSupported = exports.CashAddrNotSupported = (0, _helpers.createCustomErrorClass)(\"CashAddrNotSupported\");\nvar CurrencyNotSupported = exports.CurrencyNotSupported = (0, _helpers.createCustomErrorClass)(\"CurrencyNotSupported\");\nvar DeviceAppVerifyNotSupported = exports.DeviceAppVerifyNotSupported = (0, _helpers.createCustomErrorClass)(\"DeviceAppVerifyNotSupported\");\nvar DeviceGenuineSocketEarlyClose = exports.DeviceGenuineSocketEarlyClose = (0, _helpers.createCustomErrorClass)(\"DeviceGenuineSocketEarlyClose\");\nvar DeviceNotGenuineError = exports.DeviceNotGenuineError = (0, _helpers.createCustomErrorClass)(\"DeviceNotGenuine\");\nvar DeviceOnDashboardExpected = exports.DeviceOnDashboardExpected = (0, _helpers.createCustomErrorClass)(\"DeviceOnDashboardExpected\");\nvar DeviceOnDashboardUnexpected = exports.DeviceOnDashboardUnexpected = (0, _helpers.createCustomErrorClass)(\"DeviceOnDashboardUnexpected\");\nvar DeviceInOSUExpected = exports.DeviceInOSUExpected = (0, _helpers.createCustomErrorClass)(\"DeviceInOSUExpected\");\nvar DeviceHalted = exports.DeviceHalted = (0, _helpers.createCustomErrorClass)(\"DeviceHalted\");\nvar DeviceNameInvalid = exports.DeviceNameInvalid = (0, _helpers.createCustomErrorClass)(\"DeviceNameInvalid\");\nvar DeviceSocketFail = exports.DeviceSocketFail = (0, _helpers.createCustomErrorClass)(\"DeviceSocketFail\");\nvar DeviceSocketNoBulkStatus = exports.DeviceSocketNoBulkStatus = (0, _helpers.createCustomErrorClass)(\"DeviceSocketNoBulkStatus\");\nvar DisconnectedDevice = exports.DisconnectedDevice = (0, _helpers.createCustomErrorClass)(\"DisconnectedDevice\");\nvar DisconnectedDeviceDuringOperation = exports.DisconnectedDeviceDuringOperation = (0, _helpers.createCustomErrorClass)(\"DisconnectedDeviceDuringOperation\");\nvar EnpointConfigError = exports.EnpointConfigError = (0, _helpers.createCustomErrorClass)(\"EnpointConfig\");\nvar EthAppPleaseEnableContractData = exports.EthAppPleaseEnableContractData = (0, _helpers.createCustomErrorClass)(\"EthAppPleaseEnableContractData\");\nvar FeeEstimationFailed = exports.FeeEstimationFailed = (0, _helpers.createCustomErrorClass)(\"FeeEstimationFailed\");\nvar HardResetFail = exports.HardResetFail = (0, _helpers.createCustomErrorClass)(\"HardResetFail\");\nvar InvalidXRPTag = exports.InvalidXRPTag = (0, _helpers.createCustomErrorClass)(\"InvalidXRPTag\");\nvar InvalidAddress = exports.InvalidAddress = (0, _helpers.createCustomErrorClass)(\"InvalidAddress\");\nvar InvalidAddressBecauseDestinationIsAlsoSource = exports.InvalidAddressBecauseDestinationIsAlsoSource = (0, _helpers.createCustomErrorClass)(\"InvalidAddressBecauseDestinationIsAlsoSource\");\nvar LatestMCUInstalledError = exports.LatestMCUInstalledError = (0, _helpers.createCustomErrorClass)(\"LatestMCUInstalledError\");\nvar UnknownMCU = exports.UnknownMCU = (0, _helpers.createCustomErrorClass)(\"UnknownMCU\");\nvar LedgerAPIError = exports.LedgerAPIError = (0, _helpers.createCustomErrorClass)(\"LedgerAPIError\");\nvar LedgerAPIErrorWithMessage = exports.LedgerAPIErrorWithMessage = (0, _helpers.createCustomErrorClass)(\"LedgerAPIErrorWithMessage\");\nvar LedgerAPINotAvailable = exports.LedgerAPINotAvailable = (0, _helpers.createCustomErrorClass)(\"LedgerAPINotAvailable\");\nvar ManagerAppAlreadyInstalledError = exports.ManagerAppAlreadyInstalledError = (0, _helpers.createCustomErrorClass)(\"ManagerAppAlreadyInstalled\");\nvar ManagerAppRelyOnBTCError = exports.ManagerAppRelyOnBTCError = (0, _helpers.createCustomErrorClass)(\"ManagerAppRelyOnBTC\");\nvar ManagerAppDepInstallRequired = exports.ManagerAppDepInstallRequired = (0, _helpers.createCustomErrorClass)(\"ManagerAppDepInstallRequired\");\nvar ManagerAppDepUninstallRequired = exports.ManagerAppDepUninstallRequired = (0, _helpers.createCustomErrorClass)(\"ManagerAppDepUninstallRequired\");\nvar ManagerDeviceLockedError = exports.ManagerDeviceLockedError = (0, _helpers.createCustomErrorClass)(\"ManagerDeviceLocked\");\nvar ManagerFirmwareNotEnoughSpaceError = exports.ManagerFirmwareNotEnoughSpaceError = (0, _helpers.createCustomErrorClass)(\"ManagerFirmwareNotEnoughSpace\");\nvar ManagerNotEnoughSpaceError = exports.ManagerNotEnoughSpaceError = (0, _helpers.createCustomErrorClass)(\"ManagerNotEnoughSpace\");\nvar ManagerUninstallBTCDep = exports.ManagerUninstallBTCDep = (0, _helpers.createCustomErrorClass)(\"ManagerUninstallBTCDep\");\nvar NetworkDown = exports.NetworkDown = (0, _helpers.createCustomErrorClass)(\"NetworkDown\");\nvar NoAddressesFound = exports.NoAddressesFound = (0, _helpers.createCustomErrorClass)(\"NoAddressesFound\");\nvar NotEnoughBalance = exports.NotEnoughBalance = (0, _helpers.createCustomErrorClass)(\"NotEnoughBalance\");\nvar NotEnoughBalanceToDelegate = exports.NotEnoughBalanceToDelegate = (0, _helpers.createCustomErrorClass)(\"NotEnoughBalanceToDelegate\");\nvar NotEnoughBalanceInParentAccount = exports.NotEnoughBalanceInParentAccount = (0, _helpers.createCustomErrorClass)(\"NotEnoughBalanceInParentAccount\");\nvar NotEnoughSpendableBalance = exports.NotEnoughSpendableBalance = (0, _helpers.createCustomErrorClass)(\"NotEnoughSpendableBalance\");\nvar NotEnoughBalanceBecauseDestinationNotCreated = exports.NotEnoughBalanceBecauseDestinationNotCreated = (0, _helpers.createCustomErrorClass)(\"NotEnoughBalanceBecauseDestinationNotCreated\");\nvar NoAccessToCamera = exports.NoAccessToCamera = (0, _helpers.createCustomErrorClass)(\"NoAccessToCamera\");\nvar NotEnoughGas = exports.NotEnoughGas = (0, _helpers.createCustomErrorClass)(\"NotEnoughGas\");\nvar NotSupportedLegacyAddress = exports.NotSupportedLegacyAddress = (0, _helpers.createCustomErrorClass)(\"NotSupportedLegacyAddress\");\nvar GasLessThanEstimate = exports.GasLessThanEstimate = (0, _helpers.createCustomErrorClass)(\"GasLessThanEstimate\");\nvar PasswordsDontMatchError = exports.PasswordsDontMatchError = (0, _helpers.createCustomErrorClass)(\"PasswordsDontMatch\");\nvar PasswordIncorrectError = exports.PasswordIncorrectError = (0, _helpers.createCustomErrorClass)(\"PasswordIncorrect\");\nvar RecommendSubAccountsToEmpty = exports.RecommendSubAccountsToEmpty = (0, _helpers.createCustomErrorClass)(\"RecommendSubAccountsToEmpty\");\nvar RecommendUndelegation = exports.RecommendUndelegation = (0, _helpers.createCustomErrorClass)(\"RecommendUndelegation\");\nvar TimeoutTagged = exports.TimeoutTagged = (0, _helpers.createCustomErrorClass)(\"TimeoutTagged\");\nvar UnexpectedBootloader = exports.UnexpectedBootloader = (0, _helpers.createCustomErrorClass)(\"UnexpectedBootloader\");\nvar MCUNotGenuineToDashboard = exports.MCUNotGenuineToDashboard = (0, _helpers.createCustomErrorClass)(\"MCUNotGenuineToDashboard\");\nvar RecipientRequired = exports.RecipientRequired = (0, _helpers.createCustomErrorClass)(\"RecipientRequired\");\nvar UnavailableTezosOriginatedAccountReceive = exports.UnavailableTezosOriginatedAccountReceive = (0, _helpers.createCustomErrorClass)(\"UnavailableTezosOriginatedAccountReceive\");\nvar UnavailableTezosOriginatedAccountSend = exports.UnavailableTezosOriginatedAccountSend = (0, _helpers.createCustomErrorClass)(\"UnavailableTezosOriginatedAccountSend\");\nvar UpdateYourApp = exports.UpdateYourApp = (0, _helpers.createCustomErrorClass)(\"UpdateYourApp\");\nvar UserRefusedDeviceNameChange = exports.UserRefusedDeviceNameChange = (0, _helpers.createCustomErrorClass)(\"UserRefusedDeviceNameChange\");\nvar UserRefusedAddress = exports.UserRefusedAddress = (0, _helpers.createCustomErrorClass)(\"UserRefusedAddress\");\nvar UserRefusedFirmwareUpdate = exports.UserRefusedFirmwareUpdate = (0, _helpers.createCustomErrorClass)(\"UserRefusedFirmwareUpdate\");\nvar UserRefusedAllowManager = exports.UserRefusedAllowManager = (0, _helpers.createCustomErrorClass)(\"UserRefusedAllowManager\");\nvar UserRefusedOnDevice = exports.UserRefusedOnDevice = (0, _helpers.createCustomErrorClass)(\"UserRefusedOnDevice\"); // TODO rename because it's just for transaction refusal\nvar TransportOpenUserCancelled = exports.TransportOpenUserCancelled = (0, _helpers.createCustomErrorClass)(\"TransportOpenUserCancelled\");\nvar TransportInterfaceNotAvailable = exports.TransportInterfaceNotAvailable = (0, _helpers.createCustomErrorClass)(\"TransportInterfaceNotAvailable\");\nvar TransportWebUSBGestureRequired = exports.TransportWebUSBGestureRequired = (0, _helpers.createCustomErrorClass)(\"TransportWebUSBGestureRequired\");\nvar DeviceShouldStayInApp = exports.DeviceShouldStayInApp = (0, _helpers.createCustomErrorClass)(\"DeviceShouldStayInApp\");\nvar WebsocketConnectionError = exports.WebsocketConnectionError = (0, _helpers.createCustomErrorClass)(\"WebsocketConnectionError\");\nvar WebsocketConnectionFailed = exports.WebsocketConnectionFailed = (0, _helpers.createCustomErrorClass)(\"WebsocketConnectionFailed\");\nvar WrongDeviceForAccount = exports.WrongDeviceForAccount = (0, _helpers.createCustomErrorClass)(\"WrongDeviceForAccount\");\nvar WrongAppForCurrency = exports.WrongAppForCurrency = (0, _helpers.createCustomErrorClass)(\"WrongAppForCurrency\");\nvar ETHAddressNonEIP = exports.ETHAddressNonEIP = (0, _helpers.createCustomErrorClass)(\"ETHAddressNonEIP\");\nvar CantScanQRCode = exports.CantScanQRCode = (0, _helpers.createCustomErrorClass)(\"CantScanQRCode\");\nvar FeeNotLoaded = exports.FeeNotLoaded = (0, _helpers.createCustomErrorClass)(\"FeeNotLoaded\");\nvar FeeRequired = exports.FeeRequired = (0, _helpers.createCustomErrorClass)(\"FeeRequired\");\nvar FeeTooHigh = exports.FeeTooHigh = (0, _helpers.createCustomErrorClass)(\"FeeTooHigh\");\nvar SyncError = exports.SyncError = (0, _helpers.createCustomErrorClass)(\"SyncError\");\nvar PairingFailed = exports.PairingFailed = (0, _helpers.createCustomErrorClass)(\"PairingFailed\");\nvar GenuineCheckFailed = exports.GenuineCheckFailed = (0, _helpers.createCustomErrorClass)(\"GenuineCheckFailed\");\nvar LedgerAPI4xx = exports.LedgerAPI4xx = (0, _helpers.createCustomErrorClass)(\"LedgerAPI4xx\");\nvar LedgerAPI5xx = exports.LedgerAPI5xx = (0, _helpers.createCustomErrorClass)(\"LedgerAPI5xx\");\nvar FirmwareOrAppUpdateRequired = exports.FirmwareOrAppUpdateRequired = (0, _helpers.createCustomErrorClass)(\"FirmwareOrAppUpdateRequired\");\n\n// db stuff, no need to translate\nvar NoDBPathGiven = exports.NoDBPathGiven = (0, _helpers.createCustomErrorClass)(\"NoDBPathGiven\");\nvar DBWrongPassword = exports.DBWrongPassword = (0, _helpers.createCustomErrorClass)(\"DBWrongPassword\");\nvar DBNotReset = exports.DBNotReset = (0, _helpers.createCustomErrorClass)(\"DBNotReset\");\n\n/**\n * TransportError is used for any generic transport errors.\n * e.g. Error thrown when data received by exchanges are incorrect or if exchanged failed to communicate with the device for various reason.\n */\nfunction TransportError(message, id) {\n this.name = \"TransportError\";\n this.message = message;\n this.stack = new Error().stack;\n this.id = id;\n}\n//$FlowFixMe\nTransportError.prototype = new Error();\n\n(0, _helpers.addCustomErrorDeserializer)(\"TransportError\", function (e) {\n return new TransportError(e.message, e.id);\n});\n\nvar StatusCodes = exports.StatusCodes = {\n PIN_REMAINING_ATTEMPTS: 0x63c0,\n INCORRECT_LENGTH: 0x6700,\n COMMAND_INCOMPATIBLE_FILE_STRUCTURE: 0x6981,\n SECURITY_STATUS_NOT_SATISFIED: 0x6982,\n CONDITIONS_OF_USE_NOT_SATISFIED: 0x6985,\n INCORRECT_DATA: 0x6a80,\n NOT_ENOUGH_MEMORY_SPACE: 0x6a84,\n REFERENCED_DATA_NOT_FOUND: 0x6a88,\n FILE_ALREADY_EXISTS: 0x6a89,\n INCORRECT_P1_P2: 0x6b00,\n INS_NOT_SUPPORTED: 0x6d00,\n CLA_NOT_SUPPORTED: 0x6e00,\n TECHNICAL_PROBLEM: 0x6f00,\n OK: 0x9000,\n MEMORY_PROBLEM: 0x9240,\n NO_EF_SELECTED: 0x9400,\n INVALID_OFFSET: 0x9402,\n FILE_NOT_FOUND: 0x9404,\n INCONSISTENT_FILE: 0x9408,\n ALGORITHM_NOT_SUPPORTED: 0x9484,\n INVALID_KCV: 0x9485,\n CODE_NOT_INITIALIZED: 0x9802,\n ACCESS_CONDITION_NOT_FULFILLED: 0x9804,\n CONTRADICTION_SECRET_CODE_STATUS: 0x9808,\n CONTRADICTION_INVALIDATION: 0x9810,\n CODE_BLOCKED: 0x9840,\n MAX_VALUE_REACHED: 0x9850,\n GP_AUTH_FAILED: 0x6300,\n LICENSING: 0x6f42,\n HALTED: 0x6faa\n};\n\nfunction getAltStatusMessage(code) {\n switch (code) {\n // improve text of most common errors\n case 0x6700:\n return \"Incorrect length\";\n case 0x6982:\n return \"Security not satisfied (dongle locked or have invalid access rights)\";\n case 0x6985:\n return \"Condition of use not satisfied (denied by the user?)\";\n case 0x6a80:\n return \"Invalid data received\";\n case 0x6b00:\n return \"Invalid parameter received\";\n }\n if (0x6f00 <= code && code <= 0x6fff) {\n return \"Internal error, please report\";\n }\n}\n\n/**\n * Error thrown when a device returned a non success status.\n * the error.statusCode is one of the `StatusCodes` exported by this library.\n */\nfunction TransportStatusError(statusCode) {\n this.name = \"TransportStatusError\";\n var statusText = Object.keys(StatusCodes).find(function (k) {\n return StatusCodes[k] === statusCode;\n }) || \"UNKNOWN_ERROR\";\n var smsg = getAltStatusMessage(statusCode) || statusText;\n var statusCodeStr = statusCode.toString(16);\n this.message = \"Ledger device: \" + smsg + \" (0x\" + statusCodeStr + \")\";\n this.stack = new Error().stack;\n this.statusCode = statusCode;\n this.statusText = statusText;\n}\n//$FlowFixMe\nTransportStatusError.prototype = new Error();\n\n(0, _helpers.addCustomErrorDeserializer)(\"TransportStatusError\", function (e) {\n return new TransportStatusError(e.statusCode);\n});\n//# sourceMappingURL=index.js.map","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _errors = require(\"@ledgerhq/errors\");\n\nvar Tag = 0x05;\n\nfunction asUInt16BE(value) {\n var b = Buffer.alloc(2);\n b.writeUInt16BE(value, 0);\n return b;\n}\n\nvar initialAcc = {\n data: Buffer.alloc(0),\n dataLength: 0,\n sequence: 0\n};\n\n/**\n *\n */\nvar createHIDframing = function createHIDframing(channel, packetSize) {\n return {\n makeBlocks: function makeBlocks(apdu) {\n var data = Buffer.concat([asUInt16BE(apdu.length), apdu]);\n var blockSize = packetSize - 5;\n var nbBlocks = Math.ceil(data.length / blockSize);\n data = Buffer.concat([data, // fill data with padding\n Buffer.alloc(nbBlocks * blockSize - data.length + 1).fill(0)]);\n\n var blocks = [];\n for (var i = 0; i < nbBlocks; i++) {\n var head = Buffer.alloc(5);\n head.writeUInt16BE(channel, 0);\n head.writeUInt8(Tag, 2);\n head.writeUInt16BE(i, 3);\n var chunk = data.slice(i * blockSize, (i + 1) * blockSize);\n blocks.push(Buffer.concat([head, chunk]));\n }\n return blocks;\n },\n reduceResponse: function reduceResponse(acc, chunk) {\n var _ref = acc || initialAcc,\n data = _ref.data,\n dataLength = _ref.dataLength,\n sequence = _ref.sequence;\n\n if (chunk.readUInt16BE(0) !== channel) {\n throw new _errors.TransportError(\"Invalid channel\", \"InvalidChannel\");\n }\n if (chunk.readUInt8(2) !== Tag) {\n throw new _errors.TransportError(\"Invalid tag\", \"InvalidTag\");\n }\n if (chunk.readUInt16BE(3) !== sequence) {\n throw new _errors.TransportError(\"Invalid sequence\", \"InvalidSequence\");\n }\n\n if (!acc) {\n dataLength = chunk.readUInt16BE(5);\n }\n sequence++;\n var chunkData = chunk.slice(acc ? 5 : 7);\n data = Buffer.concat([data, chunkData]);\n if (data.length > dataLength) {\n data = data.slice(0, dataLength);\n }\n\n return {\n data: data,\n dataLength: dataLength,\n sequence: sequence\n };\n },\n getReducedResult: function getReducedResult(acc) {\n if (acc && acc.dataLength === acc.data.length) {\n return acc.data;\n }\n }\n };\n};\n\nexports.default = createHIDframing;\n//# sourceMappingURL=hid-framing.js.map","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.getAltStatusMessage = exports.StatusCodes = exports.TransportStatusError = exports.TransportError = undefined;\n\nvar _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();\n\nvar _events2 = require(\"events\");\n\nvar _events3 = _interopRequireDefault(_events2);\n\nvar _errors = require(\"@ledgerhq/errors\");\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction _toConsumableArray(arr) { if (Array.isArray(arr)) { for (var i = 0, arr2 = Array(arr.length); i < arr.length; i++) { arr2[i] = arr[i]; } return arr2; } else { return Array.from(arr); } }\n\nfunction _asyncToGenerator(fn) { return function () { var gen = fn.apply(this, arguments); return new Promise(function (resolve, reject) { function step(key, arg) { try { var info = gen[key](arg); var value = info.value; } catch (error) { reject(error); return; } if (info.done) { resolve(value); } else { return Promise.resolve(value).then(function (value) { step(\"next\", value); }, function (err) { step(\"throw\", err); }); } } return step(\"next\"); }); }; }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nexports.TransportError = _errors.TransportError;\nexports.TransportStatusError = _errors.TransportStatusError;\nexports.StatusCodes = _errors.StatusCodes;\nexports.getAltStatusMessage = _errors.getAltStatusMessage;\n\n/**\n */\n\n\n/**\n */\n\n\n/**\n * type: add or remove event\n * descriptor: a parameter that can be passed to open(descriptor)\n * deviceModel: device info on the model (is it a nano s, nano x, ...)\n * device: transport specific device info\n */\n\n/**\n */\n\n/**\n * Transport defines the generic interface to share between node/u2f impl\n * A **Descriptor** is a parametric type that is up to be determined for the implementation.\n * it can be for instance an ID, an file path, a URL,...\n */\nvar Transport = function () {\n function Transport() {\n var _this = this;\n\n _classCallCheck(this, Transport);\n\n this.exchangeTimeout = 30000;\n this._events = new _events3.default();\n\n this.send = function () {\n var _ref = _asyncToGenerator( /*#__PURE__*/regeneratorRuntime.mark(function _callee(cla, ins, p1, p2) {\n var data = arguments.length > 4 && arguments[4] !== undefined ? arguments[4] : Buffer.alloc(0);\n var statusList = arguments.length > 5 && arguments[5] !== undefined ? arguments[5] : [_errors.StatusCodes.OK];\n var response, sw;\n return regeneratorRuntime.wrap(function _callee$(_context) {\n while (1) {\n switch (_context.prev = _context.next) {\n case 0:\n if (!(data.length >= 256)) {\n _context.next = 2;\n break;\n }\n\n throw new _errors.TransportError(\"data.length exceed 256 bytes limit. Got: \" + data.length, \"DataLengthTooBig\");\n\n case 2:\n _context.next = 4;\n return _this.exchange(Buffer.concat([Buffer.from([cla, ins, p1, p2]), Buffer.from([data.length]), data]));\n\n case 4:\n response = _context.sent;\n sw = response.readUInt16BE(response.length - 2);\n\n if (statusList.some(function (s) {\n return s === sw;\n })) {\n _context.next = 8;\n break;\n }\n\n throw new _errors.TransportStatusError(sw);\n\n case 8:\n return _context.abrupt(\"return\", response);\n\n case 9:\n case \"end\":\n return _context.stop();\n }\n }\n }, _callee, _this);\n }));\n\n return function (_x, _x2, _x3, _x4) {\n return _ref.apply(this, arguments);\n };\n }();\n\n this.exchangeAtomicImpl = function () {\n var _ref2 = _asyncToGenerator( /*#__PURE__*/regeneratorRuntime.mark(function _callee2(f) {\n var resolveBusy, busyPromise, res;\n return regeneratorRuntime.wrap(function _callee2$(_context2) {\n while (1) {\n switch (_context2.prev = _context2.next) {\n case 0:\n if (!_this.exchangeBusyPromise) {\n _context2.next = 2;\n break;\n }\n\n throw new _errors.TransportError(\"Transport race condition\", \"RaceCondition\");\n\n case 2:\n resolveBusy = void 0;\n busyPromise = new Promise(function (r) {\n resolveBusy = r;\n });\n\n _this.exchangeBusyPromise = busyPromise;\n _context2.prev = 5;\n _context2.next = 8;\n return f();\n\n case 8:\n res = _context2.sent;\n return _context2.abrupt(\"return\", res);\n\n case 10:\n _context2.prev = 10;\n\n if (resolveBusy) resolveBusy();\n _this.exchangeBusyPromise = null;\n return _context2.finish(10);\n\n case 14:\n case \"end\":\n return _context2.stop();\n }\n }\n }, _callee2, _this, [[5,, 10, 14]]);\n }));\n\n return function (_x7) {\n return _ref2.apply(this, arguments);\n };\n }();\n\n this._appAPIlock = null;\n }\n\n /**\n * Statically check if a transport is supported on the user's platform/browser.\n */\n\n\n /**\n * List once all available descriptors. For a better granularity, checkout `listen()`.\n * @return a promise of descriptors\n * @example\n * TransportFoo.list().then(descriptors => ...)\n */\n\n\n /**\n * Listen all device events for a given Transport. The method takes an Obverver of DescriptorEvent and returns a Subscription (according to Observable paradigm https://github.com/tc39/proposal-observable )\n * a DescriptorEvent is a `{ descriptor, type }` object. type can be `\"add\"` or `\"remove\"` and descriptor is a value you can pass to `open(descriptor)`.\n * each listen() call will first emit all potential device already connected and then will emit events can come over times,\n * for instance if you plug a USB device after listen() or a bluetooth device become discoverable.\n * @param observer is an object with a next, error and complete function (compatible with observer pattern)\n * @return a Subscription object on which you can `.unsubscribe()` to stop listening descriptors.\n * @example\n const sub = TransportFoo.listen({\n next: e => {\n if (e.type===\"add\") {\n sub.unsubscribe();\n const transport = await TransportFoo.open(e.descriptor);\n ...\n }\n },\n error: error => {},\n complete: () => {}\n })\n */\n\n\n /**\n * attempt to create a Transport instance with potentially a descriptor.\n * @param descriptor: the descriptor to open the transport with.\n * @param timeout: an optional timeout\n * @return a Promise of Transport instance\n * @example\n TransportFoo.open(descriptor).then(transport => ...)\n */\n\n\n /**\n * low level api to communicate with the device\n * This method is for implementations to implement but should not be directly called.\n * Instead, the recommanded way is to use send() method\n * @param apdu the data to send\n * @return a Promise of response data\n */\n\n\n /**\n * set the \"scramble key\" for the next exchanges with the device.\n * Each App can have a different scramble key and they internally will set it at instanciation.\n * @param key the scramble key\n */\n\n\n /**\n * close the exchange with the device.\n * @return a Promise that ends when the transport is closed.\n */\n\n\n _createClass(Transport, [{\n key: \"on\",\n\n\n /**\n * Listen to an event on an instance of transport.\n * Transport implementation can have specific events. Here is the common events:\n * * `\"disconnect\"` : triggered if Transport is disconnected\n */\n value: function on(eventName, cb) {\n this._events.on(eventName, cb);\n }\n\n /**\n * Stop listening to an event on an instance of transport.\n */\n\n }, {\n key: \"off\",\n value: function off(eventName, cb) {\n this._events.removeListener(eventName, cb);\n }\n }, {\n key: \"emit\",\n value: function emit(event) {\n var _events;\n\n for (var _len = arguments.length, args = Array(_len > 1 ? _len - 1 : 0), _key = 1; _key < _len; _key++) {\n args[_key - 1] = arguments[_key];\n }\n\n (_events = this._events).emit.apply(_events, [event].concat(_toConsumableArray(args)));\n }\n\n /**\n * Enable or not logs of the binary exchange\n */\n\n }, {\n key: \"setDebugMode\",\n value: function setDebugMode() {\n console.warn(\"setDebugMode is deprecated. use @ledgerhq/logs instead. No logs are emitted in this anymore.\");\n }\n\n /**\n * Set a timeout (in milliseconds) for the exchange call. Only some transport might implement it. (e.g. U2F)\n */\n\n }, {\n key: \"setExchangeTimeout\",\n value: function setExchangeTimeout(exchangeTimeout) {\n this.exchangeTimeout = exchangeTimeout;\n }\n\n /**\n * wrapper on top of exchange to simplify work of the implementation.\n * @param cla\n * @param ins\n * @param p1\n * @param p2\n * @param data\n * @param statusList is a list of accepted status code (shorts). [0x9000] by default\n * @return a Promise of response buffer\n */\n\n }, {\n key: \"decorateAppAPIMethods\",\n value: function decorateAppAPIMethods(self, methods, scrambleKey) {\n var _iteratorNormalCompletion = true;\n var _didIteratorError = false;\n var _iteratorError = undefined;\n\n try {\n for (var _iterator = methods[Symbol.iterator](), _step; !(_iteratorNormalCompletion = (_step = _iterator.next()).done); _iteratorNormalCompletion = true) {\n var methodName = _step.value;\n\n self[methodName] = this.decorateAppAPIMethod(methodName, self[methodName], self, scrambleKey);\n }\n } catch (err) {\n _didIteratorError = true;\n _iteratorError = err;\n } finally {\n try {\n if (!_iteratorNormalCompletion && _iterator.return) {\n _iterator.return();\n }\n } finally {\n if (_didIteratorError) {\n throw _iteratorError;\n }\n }\n }\n }\n }, {\n key: \"decorateAppAPIMethod\",\n value: function decorateAppAPIMethod(methodName, f, ctx, scrambleKey) {\n var _this2 = this;\n\n return function () {\n var _ref3 = _asyncToGenerator( /*#__PURE__*/regeneratorRuntime.mark(function _callee3() {\n for (var _len2 = arguments.length, args = Array(_len2), _key2 = 0; _key2 < _len2; _key2++) {\n args[_key2] = arguments[_key2];\n }\n\n var _appAPIlock;\n\n return regeneratorRuntime.wrap(function _callee3$(_context3) {\n while (1) {\n switch (_context3.prev = _context3.next) {\n case 0:\n _appAPIlock = _this2._appAPIlock;\n\n if (!_appAPIlock) {\n _context3.next = 3;\n break;\n }\n\n return _context3.abrupt(\"return\", Promise.reject(new _errors.TransportError(\"Ledger Device is busy (lock \" + _appAPIlock + \")\", \"TransportLocked\")));\n\n case 3:\n _context3.prev = 3;\n\n _this2._appAPIlock = methodName;\n _this2.setScrambleKey(scrambleKey);\n _context3.next = 8;\n return f.apply(ctx, args);\n\n case 8:\n return _context3.abrupt(\"return\", _context3.sent);\n\n case 9:\n _context3.prev = 9;\n\n _this2._appAPIlock = null;\n return _context3.finish(9);\n\n case 12:\n case \"end\":\n return _context3.stop();\n }\n }\n }, _callee3, _this2, [[3,, 9, 12]]);\n }));\n\n return function () {\n return _ref3.apply(this, arguments);\n };\n }();\n }\n }], [{\n key: \"create\",\n\n\n /**\n * create() allows to open the first descriptor available or\n * throw if there is none or if timeout is reached.\n * This is a light helper, alternative to using listen() and open() (that you may need for any more advanced usecase)\n * @example\n TransportFoo.create().then(transport => ...)\n */\n value: function create() {\n var _this3 = this;\n\n var openTimeout = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : 3000;\n var listenTimeout = arguments[1];\n\n return new Promise(function (resolve, reject) {\n var found = false;\n var sub = _this3.listen({\n next: function next(e) {\n found = true;\n if (sub) sub.unsubscribe();\n if (listenTimeoutId) clearTimeout(listenTimeoutId);\n _this3.open(e.descriptor, openTimeout).then(resolve, reject);\n },\n error: function error(e) {\n if (listenTimeoutId) clearTimeout(listenTimeoutId);\n reject(e);\n },\n complete: function complete() {\n if (listenTimeoutId) clearTimeout(listenTimeoutId);\n if (!found) {\n reject(new _errors.TransportError(_this3.ErrorMessage_NoDeviceFound, \"NoDeviceFound\"));\n }\n }\n });\n var listenTimeoutId = listenTimeout ? setTimeout(function () {\n sub.unsubscribe();\n reject(new _errors.TransportError(_this3.ErrorMessage_ListenTimeout, \"ListenTimeout\"));\n }, listenTimeout) : null;\n });\n }\n\n // $FlowFixMe\n\n }]);\n\n return Transport;\n}();\n\nTransport.ErrorMessage_ListenTimeout = \"No Ledger device found (timeout)\";\nTransport.ErrorMessage_NoDeviceFound = \"No Ledger device found\";\nexports.default = Transport;\n//# sourceMappingURL=Transport.js.map","var id = 0;\nvar subscribers = [];\n/**\n * log something\n * @param type a namespaced identifier of the log (it is not a level like \"debug\", \"error\" but more like \"apdu-in\", \"apdu-out\", etc...)\n * @param message a clear message of the log associated to the type\n */\nexport var log = function (type, message, data) {\n var obj = {\n type: type,\n id: String(++id),\n date: new Date()\n };\n if (message)\n obj.message = message;\n if (data)\n obj.data = data;\n dispatch(obj);\n};\n/**\n * listen to logs.\n * @param cb that is called for each future log() with the Log object\n * @return a function that can be called to unsubscribe the listener\n */\nexport var listen = function (cb) {\n subscribers.push(cb);\n return function () {\n var i = subscribers.indexOf(cb);\n if (i !== -1) {\n // equivalent of subscribers.splice(i, 1) // https://twitter.com/Rich_Harris/status/1125850391155965952\n subscribers[i] = subscribers[subscribers.length - 1];\n subscribers.pop();\n }\n };\n};\nfunction dispatch(log) {\n for (var i = 0; i < subscribers.length; i++) {\n try {\n subscribers[i](log);\n }\n catch (e) {\n console.error(e);\n }\n }\n}\nif (typeof window !== \"undefined\") {\n window.__ledgerLogsListen = listen;\n}\n//# sourceMappingURL=index.js.map","var __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;\n return g = { next: verb(0), \"throw\": verb(1), \"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 (_) 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 __read = (this && this.__read) || function (o, n) {\n var m = typeof Symbol === \"function\" && o[Symbol.iterator];\n if (!m) return o;\n var i = m.call(o), r, ar = [], e;\n try {\n while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);\n }\n catch (error) { e = { error: error }; }\n finally {\n try {\n if (r && !r.done && (m = i[\"return\"])) m.call(i);\n }\n finally { if (e) throw e.error; }\n }\n return ar;\n};\nvar __spreadArray = (this && this.__spreadArray) || function (to, from, pack) {\n if (pack || arguments.length === 2) for (var i = 0, l = from.length, ar; i < l; i++) {\n if (ar || !(i in from)) {\n if (!ar) ar = Array.prototype.slice.call(from, 0, i);\n ar[i] = from[i];\n }\n }\n return to.concat(ar || Array.prototype.slice.call(from));\n};\nvar __values = (this && this.__values) || function(o) {\n var s = typeof Symbol === \"function\" && Symbol.iterator, m = s && o[s], i = 0;\n if (m) return m.call(o);\n if (o && typeof o.length === \"number\") return {\n next: function () {\n if (o && i >= o.length) o = void 0;\n return { value: o && o[i++], done: !o };\n }\n };\n throw new TypeError(s ? \"Object is not iterable.\" : \"Symbol.iterator is not defined.\");\n};\nimport EventEmitter from \"events\";\nimport { TransportRaceCondition, TransportError, StatusCodes, getAltStatusMessage, TransportStatusError, } from \"@ledgerhq/errors\";\nexport { TransportError, TransportStatusError, StatusCodes, getAltStatusMessage, };\n/**\n * Transport defines the generic interface to share between node/u2f impl\n * A **Descriptor** is a parametric type that is up to be determined for the implementation.\n * it can be for instance an ID, an file path, a URL,...\n */\nvar Transport = /** @class */ (function () {\n function Transport() {\n var _this = this;\n this.exchangeTimeout = 30000;\n this.unresponsiveTimeout = 15000;\n this.deviceModel = null;\n this._events = new EventEmitter();\n /**\n * wrapper on top of exchange to simplify work of the implementation.\n * @param cla\n * @param ins\n * @param p1\n * @param p2\n * @param data\n * @param statusList is a list of accepted status code (shorts). [0x9000] by default\n * @return a Promise of response buffer\n */\n this.send = function (cla, ins, p1, p2, data, statusList) {\n if (data === void 0) { data = Buffer.alloc(0); }\n if (statusList === void 0) { statusList = [StatusCodes.OK]; }\n return __awaiter(_this, void 0, void 0, function () {\n var response, sw;\n return __generator(this, function (_a) {\n switch (_a.label) {\n case 0:\n if (data.length >= 256) {\n throw new TransportError(\"data.length exceed 256 bytes limit. Got: \" + data.length, \"DataLengthTooBig\");\n }\n return [4 /*yield*/, this.exchange(Buffer.concat([\n Buffer.from([cla, ins, p1, p2]),\n Buffer.from([data.length]),\n data,\n ]))];\n case 1:\n response = _a.sent();\n sw = response.readUInt16BE(response.length - 2);\n if (!statusList.some(function (s) { return s === sw; })) {\n throw new TransportStatusError(sw);\n }\n return [2 /*return*/, response];\n }\n });\n });\n };\n this.exchangeAtomicImpl = function (f) { return __awaiter(_this, void 0, void 0, function () {\n var resolveBusy, busyPromise, unresponsiveReached, timeout, res;\n var _this = this;\n return __generator(this, function (_a) {\n switch (_a.label) {\n case 0:\n if (this.exchangeBusyPromise) {\n throw new TransportRaceCondition(\"An action was already pending on the Ledger device. Please deny or reconnect.\");\n }\n busyPromise = new Promise(function (r) {\n resolveBusy = r;\n });\n this.exchangeBusyPromise = busyPromise;\n unresponsiveReached = false;\n timeout = setTimeout(function () {\n unresponsiveReached = true;\n _this.emit(\"unresponsive\");\n }, this.unresponsiveTimeout);\n _a.label = 1;\n case 1:\n _a.trys.push([1, , 3, 4]);\n return [4 /*yield*/, f()];\n case 2:\n res = _a.sent();\n if (unresponsiveReached) {\n this.emit(\"responsive\");\n }\n return [2 /*return*/, res];\n case 3:\n clearTimeout(timeout);\n if (resolveBusy)\n resolveBusy();\n this.exchangeBusyPromise = null;\n return [7 /*endfinally*/];\n case 4: return [2 /*return*/];\n }\n });\n }); };\n this._appAPIlock = null;\n }\n /**\n * low level api to communicate with the device\n * This method is for implementations to implement but should not be directly called.\n * Instead, the recommanded way is to use send() method\n * @param apdu the data to send\n * @return a Promise of response data\n */\n Transport.prototype.exchange = function (_apdu) {\n throw new Error(\"exchange not implemented\");\n };\n /**\n * set the \"scramble key\" for the next exchanges with the device.\n * Each App can have a different scramble key and they internally will set it at instanciation.\n * @param key the scramble key\n */\n Transport.prototype.setScrambleKey = function (_key) { };\n /**\n * close the exchange with the device.\n * @return a Promise that ends when the transport is closed.\n */\n Transport.prototype.close = function () {\n return Promise.resolve();\n };\n /**\n * Listen to an event on an instance of transport.\n * Transport implementation can have specific events. Here is the common events:\n * * `\"disconnect\"` : triggered if Transport is disconnected\n */\n Transport.prototype.on = function (eventName, cb) {\n this._events.on(eventName, cb);\n };\n /**\n * Stop listening to an event on an instance of transport.\n */\n Transport.prototype.off = function (eventName, cb) {\n this._events.removeListener(eventName, cb);\n };\n Transport.prototype.emit = function (event) {\n var _a;\n var args = [];\n for (var _i = 1; _i < arguments.length; _i++) {\n args[_i - 1] = arguments[_i];\n }\n (_a = this._events).emit.apply(_a, __spreadArray([event], __read(args), false));\n };\n /**\n * Enable or not logs of the binary exchange\n */\n Transport.prototype.setDebugMode = function () {\n console.warn(\"setDebugMode is deprecated. use @ledgerhq/logs instead. No logs are emitted in this anymore.\");\n };\n /**\n * Set a timeout (in milliseconds) for the exchange call. Only some transport might implement it. (e.g. U2F)\n */\n Transport.prototype.setExchangeTimeout = function (exchangeTimeout) {\n this.exchangeTimeout = exchangeTimeout;\n };\n /**\n * Define the delay before emitting \"unresponsive\" on an exchange that does not respond\n */\n Transport.prototype.setExchangeUnresponsiveTimeout = function (unresponsiveTimeout) {\n this.unresponsiveTimeout = unresponsiveTimeout;\n };\n /**\n * create() allows to open the first descriptor available or\n * throw if there is none or if timeout is reached.\n * This is a light helper, alternative to using listen() and open() (that you may need for any more advanced usecase)\n * @example\n TransportFoo.create().then(transport => ...)\n */\n Transport.create = function (openTimeout, listenTimeout) {\n var _this = this;\n if (openTimeout === void 0) { openTimeout = 3000; }\n return new Promise(function (resolve, reject) {\n var found = false;\n var sub = _this.listen({\n next: function (e) {\n found = true;\n if (sub)\n sub.unsubscribe();\n if (listenTimeoutId)\n clearTimeout(listenTimeoutId);\n _this.open(e.descriptor, openTimeout).then(resolve, reject);\n },\n error: function (e) {\n if (listenTimeoutId)\n clearTimeout(listenTimeoutId);\n reject(e);\n },\n complete: function () {\n if (listenTimeoutId)\n clearTimeout(listenTimeoutId);\n if (!found) {\n reject(new TransportError(_this.ErrorMessage_NoDeviceFound, \"NoDeviceFound\"));\n }\n }\n });\n var listenTimeoutId = listenTimeout\n ? setTimeout(function () {\n sub.unsubscribe();\n reject(new TransportError(_this.ErrorMessage_ListenTimeout, \"ListenTimeout\"));\n }, listenTimeout)\n : null;\n });\n };\n Transport.prototype.decorateAppAPIMethods = function (self, methods, scrambleKey) {\n var e_1, _a;\n try {\n for (var methods_1 = __values(methods), methods_1_1 = methods_1.next(); !methods_1_1.done; methods_1_1 = methods_1.next()) {\n var methodName = methods_1_1.value;\n self[methodName] = this.decorateAppAPIMethod(methodName, self[methodName], self, scrambleKey);\n }\n }\n catch (e_1_1) { e_1 = { error: e_1_1 }; }\n finally {\n try {\n if (methods_1_1 && !methods_1_1.done && (_a = methods_1[\"return\"])) _a.call(methods_1);\n }\n finally { if (e_1) throw e_1.error; }\n }\n };\n Transport.prototype.decorateAppAPIMethod = function (methodName, f, ctx, scrambleKey) {\n var _this = this;\n return function () {\n var args = [];\n for (var _i = 0; _i < arguments.length; _i++) {\n args[_i] = arguments[_i];\n }\n return __awaiter(_this, void 0, void 0, function () {\n var _appAPIlock;\n return __generator(this, function (_a) {\n switch (_a.label) {\n case 0:\n _appAPIlock = this._appAPIlock;\n if (_appAPIlock) {\n return [2 /*return*/, Promise.reject(new TransportError(\"Ledger Device is busy (lock \" + _appAPIlock + \")\", \"TransportLocked\"))];\n }\n _a.label = 1;\n case 1:\n _a.trys.push([1, , 3, 4]);\n this._appAPIlock = methodName;\n this.setScrambleKey(scrambleKey);\n return [4 /*yield*/, f.apply(ctx, args)];\n case 2: return [2 /*return*/, _a.sent()];\n case 3:\n this._appAPIlock = null;\n return [7 /*endfinally*/];\n case 4: return [2 /*return*/];\n }\n });\n });\n };\n };\n Transport.ErrorMessage_ListenTimeout = \"No Ledger device found (timeout)\";\n Transport.ErrorMessage_NoDeviceFound = \"No Ledger device found\";\n return Transport;\n}());\nexport default Transport;\n//# sourceMappingURL=Transport.js.map","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _typeof = typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\" ? function (obj) { return typeof obj; } : function (obj) { return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; };\n\n/* eslint-disable no-continue */\n/* eslint-disable no-param-reassign */\n/* eslint-disable no-prototype-builtins */\n\nvar errorClasses = {};\nvar deserializers = {};\n\nvar addCustomErrorDeserializer = exports.addCustomErrorDeserializer = function addCustomErrorDeserializer(name, deserializer) {\n deserializers[name] = deserializer;\n};\n\nvar createCustomErrorClass = exports.createCustomErrorClass = function createCustomErrorClass(name) {\n var C = function CustomError(message, fields) {\n Object.assign(this, fields);\n this.name = name;\n this.message = message || name;\n this.stack = new Error().stack;\n };\n // $FlowFixMe\n C.prototype = new Error();\n\n errorClasses[name] = C;\n // $FlowFixMe we can't easily type a subset of Error for now...\n return C;\n};\n\n// inspired from https://github.com/programble/errio/blob/master/index.js\nvar deserializeError = exports.deserializeError = function deserializeError(object) {\n if ((typeof object === \"undefined\" ? \"undefined\" : _typeof(object)) === \"object\" && object) {\n try {\n // $FlowFixMe FIXME HACK\n var msg = JSON.parse(object.message);\n if (msg.message && msg.name) {\n object = msg;\n }\n } catch (e) {\n // nothing\n }\n\n var error = void 0;\n if (typeof object.name === \"string\") {\n var _object = object,\n name = _object.name;\n\n var des = deserializers[name];\n if (des) {\n error = des(object);\n } else {\n var _constructor = name === \"Error\" ? Error : errorClasses[name];\n\n if (!_constructor) {\n console.warn(\"deserializing an unknown class '\" + name + \"'\");\n _constructor = createCustomErrorClass(name);\n }\n\n error = Object.create(_constructor.prototype);\n try {\n for (var prop in object) {\n if (object.hasOwnProperty(prop)) {\n error[prop] = object[prop];\n }\n }\n } catch (e) {\n // sometimes setting a property can fail (e.g. .name)\n }\n }\n } else {\n error = new Error(object.message);\n }\n\n if (!error.stack && Error.captureStackTrace) {\n Error.captureStackTrace(error, deserializeError);\n }\n return error;\n }\n return new Error(String(object));\n};\n\n// inspired from https://github.com/sindresorhus/serialize-error/blob/master/index.js\nvar serializeError = exports.serializeError = function serializeError(value) {\n if (!value) return value;\n if ((typeof value === \"undefined\" ? \"undefined\" : _typeof(value)) === \"object\") {\n return destroyCircular(value, []);\n }\n if (typeof value === \"function\") {\n return \"[Function: \" + (value.name || \"anonymous\") + \"]\";\n }\n return value;\n};\n\n// https://www.npmjs.com/package/destroy-circular\nfunction destroyCircular(from, seen) {\n var to = {};\n seen.push(from);\n var _iteratorNormalCompletion = true;\n var _didIteratorError = false;\n var _iteratorError = undefined;\n\n try {\n for (var _iterator = Object.keys(from)[Symbol.iterator](), _step; !(_iteratorNormalCompletion = (_step = _iterator.next()).done); _iteratorNormalCompletion = true) {\n var key = _step.value;\n\n var value = from[key];\n if (typeof value === \"function\") {\n continue;\n }\n if (!value || (typeof value === \"undefined\" ? \"undefined\" : _typeof(value)) !== \"object\") {\n to[key] = value;\n continue;\n }\n if (seen.indexOf(from[key]) === -1) {\n to[key] = destroyCircular(from[key], seen.slice(0));\n continue;\n }\n to[key] = \"[Circular]\";\n }\n } catch (err) {\n _didIteratorError = true;\n _iteratorError = err;\n } finally {\n try {\n if (!_iteratorNormalCompletion && _iterator.return) {\n _iterator.return();\n }\n } finally {\n if (_didIteratorError) {\n throw _iteratorError;\n }\n }\n }\n\n if (typeof from.name === \"string\") {\n to.name = from.name;\n }\n if (typeof from.message === \"string\") {\n to.message = from.message;\n }\n if (typeof from.stack === \"string\") {\n to.stack = from.stack;\n }\n return to;\n}\n//# sourceMappingURL=helpers.js.map"],"sourceRoot":""}