1135 lines
4.2 MiB
1135 lines
4.2 MiB
!function(e){var t={};function n(r){if(t[r])return t[r].exports;var a=t[r]={i:r,l:!1,exports:{}};return e[r].call(a.exports,a,a.exports,n),a.l=!0,a.exports}n.m=e,n.c=t,n.d=function(e,t,r){n.o(e,t)||Object.defineProperty(e,t,{enumerable:!0,get:r})},n.r=function(e){"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})},n.t=function(e,t){if(1&t&&(e=n(e)),8&t)return e;if(4&t&&"object"==typeof e&&e&&e.__esModule)return e;var r=Object.create(null);if(n.r(r),Object.defineProperty(r,"default",{enumerable:!0,value:e}),2&t&&"string"!=typeof e)for(var a in e)n.d(r,a,function(t){return e[t]}.bind(null,a));return r},n.n=function(e){var t=e&&e.__esModule?function(){return e.default}:function(){return e};return n.d(t,"a",t),t},n.o=function(e,t){return Object.prototype.hasOwnProperty.call(e,t)},n.p="",n(n.s=211)}([function(module,exports,__webpack_require__){var factory;window,factory=function(){return function(e){var t={};function n(r){if(t[r])return t[r].exports;var a=t[r]={i:r,l:!1,exports:{}};return e[r].call(a.exports,a,a.exports,n),a.l=!0,a.exports}return n.m=e,n.c=t,n.d=function(e,t,r){n.o(e,t)||Object.defineProperty(e,t,{enumerable:!0,get:r})},n.r=function(e){"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})},n.t=function(e,t){if(1&t&&(e=n(e)),8&t)return e;if(4&t&&"object"==typeof e&&e&&e.__esModule)return e;var r=Object.create(null);if(n.r(r),Object.defineProperty(r,"default",{enumerable:!0,value:e}),2&t&&"string"!=typeof e)for(var a in e)n.d(r,a,function(t){return e[t]}.bind(null,a));return r},n.n=function(e){var t=e&&e.__esModule?function(){return e.default}:function(){return e};return n.d(t,"a",t),t},n.o=function(e,t){return Object.prototype.hasOwnProperty.call(e,t)},n.p="/dist/",n(n.s="./lib/index.ts")}({"./lib/application.ts":
|
||
/*!****************************!*\
|
||
!*** ./lib/application.ts ***!
|
||
\****************************/
|
||
/*! exports provided: SNApplication */function(module,__webpack_exports__,__webpack_require__){"use strict";eval('__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "SNApplication", function() { return SNApplication; });\n/* harmony import */ var _babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @babel/runtime/regenerator */ "./node_modules/@babel/runtime/regenerator/index.js");\n/* harmony import */ var _babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var _Models_functions__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! @Models/functions */ "./lib/models/functions.ts");\n/* harmony import */ var _Lib_stages__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! @Lib/stages */ "./lib/stages.ts");\n/* harmony import */ var _Lib_events__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! @Lib/events */ "./lib/events.ts");\n/* harmony import */ var _Lib_uuid__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! @Lib/uuid */ "./lib/uuid.ts");\n/* harmony import */ var _Models_core_item__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! @Models/core/item */ "./lib/models/core/item.ts");\n/* harmony import */ var _challenges__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ./challenges */ "./lib/challenges.ts");\n/* harmony import */ var _Lib_utils__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! @Lib/utils */ "./lib/utils.ts");\n/* harmony import */ var _Models_content_types__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! @Models/content_types */ "./lib/models/content_types.ts");\n/* harmony import */ var _Payloads_generator__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(/*! @Payloads/generator */ "./lib/protocol/payloads/generator.ts");\n/* harmony import */ var _Payloads_sources__WEBPACK_IMPORTED_MODULE_10__ = __webpack_require__(/*! @Payloads/sources */ "./lib/protocol/payloads/sources.ts");\n/* harmony import */ var _Models_generator__WEBPACK_IMPORTED_MODULE_11__ = __webpack_require__(/*! @Models/generator */ "./lib/models/generator.ts");\n/* harmony import */ var _Services_storage_service__WEBPACK_IMPORTED_MODULE_12__ = __webpack_require__(/*! @Services/storage_service */ "./lib/services/storage_service.ts");\n/* harmony import */ var _services__WEBPACK_IMPORTED_MODULE_13__ = __webpack_require__(/*! ./services */ "./lib/services/index.ts");\n/* harmony import */ var _services_api_messages__WEBPACK_IMPORTED_MODULE_14__ = __webpack_require__(/*! ./services/api/messages */ "./lib/services/api/messages.ts");\n/* harmony import */ var _services_api_session_manager__WEBPACK_IMPORTED_MODULE_15__ = __webpack_require__(/*! ./services/api/session_manager */ "./lib/services/api/session_manager.ts");\n\n\nfunction _slicedToArray(arr, i) { return _arrayWithHoles(arr) || _iterableToArrayLimit(arr, i) || _nonIterableRest(); }\n\nfunction _nonIterableRest() { throw new TypeError("Invalid attempt to destructure non-iterable instance"); }\n\nfunction _iterableToArrayLimit(arr, i) { if (!(Symbol.iterator in Object(arr) || Object.prototype.toString.call(arr) === "[object Arguments]")) { return; } var _arr = []; var _n = true; var _d = false; var _e = undefined; try { for (var _i = arr[Symbol.iterator](), _s; !(_n = (_s = _i.next()).done); _n = true) { _arr.push(_s.value); if (i && _arr.length === i) break; } } catch (err) { _d = true; _e = err; } finally { try { if (!_n && _i["return"] != null) _i["return"](); } finally { if (_d) throw _e; } } return _arr; }\n\nfunction _arrayWithHoles(arr) { if (Array.isArray(arr)) return arr; }\n\nfunction ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly) symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); keys.push.apply(keys, symbols); } return keys; }\n\nfunction _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; if (i % 2) { ownKeys(Object(source), true).forEach(function (key) { _defineProperty(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } } return target; }\n\nfunction _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\n\nfunction asyncGeneratorStep(gen, resolve, reject, _next, _throw, key, arg) { try { var info = gen[key](arg); var value = info.value; } catch (error) { reject(error); return; } if (info.done) { resolve(value); } else { Promise.resolve(value).then(_next, _throw); } }\n\nfunction _asyncToGenerator(fn) { return function () { var self = this, args = arguments; return new Promise(function (resolve, reject) { var gen = fn.apply(self, args); function _next(value) { asyncGeneratorStep(gen, resolve, reject, _next, _throw, "next", value); } function _throw(err) { asyncGeneratorStep(gen, resolve, reject, _next, _throw, "throw", err); } _next(undefined); }); }; }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } }\n\nfunction _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); } }\n\nfunction _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; }\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n/** How often to automatically sync, in milliseconds */\n\nvar DEFAULT_AUTO_SYNC_INTERVAL = 30000;\n/** The main entrypoint of an application. */\n\nvar SNApplication = /*#__PURE__*/function () {\n /**\n * @param environment The Environment that identifies your application.\n * @param platform The Platform that identifies your application.\n * @param namespace A unique identifier to namespace storage and\n * other persistent properties. Defaults to empty string.\n * @param crypto The platform-dependent implementation of SNPureCrypto to use.\n * Web uses SNWebCrypto, mobile uses SNReactNativeCrypto.\n * @param swapClasses Gives consumers the ability to provide their own custom\n * subclass for a service. swapClasses should be an array of key/value pairs\n * consisting of keys \'swap\' and \'with\'. \'swap\' is the base class you wish to replace,\n * and \'with\' is the custom subclass to use.\n * @param skipClasses An array of classes to skip making services for.\n */\n function SNApplication(environment, platform, deviceInterface, crypto, namespace, swapClasses, skipClasses) {\n _classCallCheck(this, SNApplication);\n\n this.eventHandlers = [];\n this.services = [];\n this.streamRemovers = [];\n this.serviceObservers = [];\n this.managedSubscribers = [];\n /** True if the result of deviceInterface.openDatabase yields a new database being created */\n\n this.createdNewDatabase = false;\n /** True if the application has started (but not necessarily launched) */\n\n this.started = false;\n /** True if the application has launched */\n\n this.launched = false;\n /** Whether the application has been destroyed via .deinit() */\n\n this.dealloced = false;\n\n if (!deviceInterface) {\n throw \'Device Interface must be supplied.\';\n }\n\n if (!environment) {\n throw \'Environment must be supplied when creating an application.\';\n }\n\n if (!platform) {\n throw \'Platform must be supplied when creating an application.\';\n }\n\n if (!crypto) {\n throw \'Crypto has to be supplied when creating an application.\';\n }\n\n this.environment = environment;\n this.platform = platform;\n this.namespace = namespace || \'\';\n this.deviceInterface = deviceInterface;\n this.crypto = crypto;\n this.swapClasses = swapClasses;\n this.skipClasses = skipClasses;\n this.constructServices();\n }\n /**\n * The first thing consumers should call when starting their app.\n * This function will load all services in their correct order.\n */\n\n\n _createClass(SNApplication, [{\n key: "prepareForLaunch",\n value: function () {\n var _prepareForLaunch = _asyncToGenerator( /*#__PURE__*/_babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0___default.a.mark(function _callee(callback) {\n var _this = this;\n\n var databaseResult;\n return _babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0___default.a.wrap(function _callee$(_context) {\n while (1) {\n switch (_context.prev = _context.next) {\n case 0:\n this.setLaunchCallback(callback);\n _context.next = 3;\n return this.deviceInterface.openDatabase().catch(function (error) {\n _this.notifyEvent(_Lib_events__WEBPACK_IMPORTED_MODULE_3__["ApplicationEvent"].LocalDatabaseReadError, error);\n\n return undefined;\n });\n\n case 3:\n databaseResult = _context.sent;\n this.createdNewDatabase = (databaseResult === null || databaseResult === void 0 ? void 0 : databaseResult.isNewDatabase) || false;\n _context.next = 7;\n return this.migrationService.initialize();\n\n case 7:\n _context.next = 9;\n return this.handleStage(_Lib_stages__WEBPACK_IMPORTED_MODULE_2__["ApplicationStage"].PreparingForLaunch_0);\n\n case 9:\n _context.next = 11;\n return this.storageService.initializeFromDisk();\n\n case 11:\n _context.next = 13;\n return this.protocolService.initialize();\n\n case 13:\n _context.next = 15;\n return this.handleStage(_Lib_stages__WEBPACK_IMPORTED_MODULE_2__["ApplicationStage"].ReadyForLaunch_05);\n\n case 15:\n this.started = true;\n _context.next = 18;\n return this.notifyEvent(_Lib_events__WEBPACK_IMPORTED_MODULE_3__["ApplicationEvent"].Started);\n\n case 18:\n case "end":\n return _context.stop();\n }\n }\n }, _callee, this);\n }));\n\n function prepareForLaunch(_x) {\n return _prepareForLaunch.apply(this, arguments);\n }\n\n return prepareForLaunch;\n }()\n }, {\n key: "setLaunchCallback",\n value: function setLaunchCallback(callback) {\n this.challengeService.sendChallenge = callback.receiveChallenge;\n }\n /**\n * Runs migrations, handles device authentication, unlocks application, and\n * issues a callback if a device activation requires user input\n * (i.e local passcode or fingerprint).\n * @param awaitDatabaseLoad\n * Option to await database load before marking the app as ready.\n */\n\n }, {\n key: "launch",\n value: function () {\n var _launch = _asyncToGenerator( /*#__PURE__*/_babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0___default.a.mark(function _callee3() {\n var _this2 = this;\n\n var awaitDatabaseLoad,\n launchChallenge,\n response,\n databasePayloads,\n loadPromise,\n _args3 = arguments;\n return _babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0___default.a.wrap(function _callee3$(_context3) {\n while (1) {\n switch (_context3.prev = _context3.next) {\n case 0:\n awaitDatabaseLoad = _args3.length > 0 && _args3[0] !== undefined ? _args3[0] : false;\n this.launched = false;\n _context3.next = 4;\n return this.challengeService.getLaunchChallenge();\n\n case 4:\n launchChallenge = _context3.sent;\n\n if (!launchChallenge) {\n _context3.next = 13;\n break;\n }\n\n _context3.next = 8;\n return this.challengeService.promptForChallengeResponse(launchChallenge);\n\n case 8:\n response = _context3.sent;\n\n if (response) {\n _context3.next = 11;\n break;\n }\n\n throw Error(\'Launch challenge was cancelled.\');\n\n case 11:\n _context3.next = 13;\n return this.handleLaunchChallengeResponse(response);\n\n case 13:\n if (!this.storageService.isStorageWrapped()) {\n _context3.next = 16;\n break;\n }\n\n _context3.next = 16;\n return this.storageService.decryptStorage();\n\n case 16:\n _context3.next = 18;\n return this.handleStage(_Lib_stages__WEBPACK_IMPORTED_MODULE_2__["ApplicationStage"].StorageDecrypted_09);\n\n case 18:\n _context3.next = 20;\n return this.apiService.loadHost();\n\n case 20:\n _context3.next = 22;\n return this.sessionManager.initializeFromDisk();\n\n case 22:\n this.historyManager.initializeFromDisk();\n this.launched = true;\n _context3.next = 26;\n return this.notifyEvent(_Lib_events__WEBPACK_IMPORTED_MODULE_3__["ApplicationEvent"].Launched);\n\n case 26:\n _context3.next = 28;\n return this.handleStage(_Lib_stages__WEBPACK_IMPORTED_MODULE_2__["ApplicationStage"].Launched_10);\n\n case 28:\n _context3.next = 30;\n return this.syncService.getDatabasePayloads();\n\n case 30:\n databasePayloads = _context3.sent;\n _context3.next = 33;\n return this.handleStage(_Lib_stages__WEBPACK_IMPORTED_MODULE_2__["ApplicationStage"].LoadingDatabase_11);\n\n case 33:\n if (!this.createdNewDatabase) {\n _context3.next = 36;\n break;\n }\n\n _context3.next = 36;\n return this.syncService.onNewDatabaseCreated();\n\n case 36:\n /**\n * We don\'t want to await this, as we want to begin allowing the app to function\n * before local data has been loaded fully. We await only initial\n * `getDatabasePayloads` to lock in on database state.\n */\n loadPromise = this.syncService.loadDatabasePayloads(databasePayloads).then( /*#__PURE__*/_asyncToGenerator( /*#__PURE__*/_babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0___default.a.mark(function _callee2() {\n return _babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0___default.a.wrap(function _callee2$(_context2) {\n while (1) {\n switch (_context2.prev = _context2.next) {\n case 0:\n if (!_this2.dealloced) {\n _context2.next = 2;\n break;\n }\n\n throw \'Application has been destroyed.\';\n\n case 2:\n _context2.next = 4;\n return _this2.handleStage(_Lib_stages__WEBPACK_IMPORTED_MODULE_2__["ApplicationStage"].LoadedDatabase_12);\n\n case 4:\n _this2.beginAutoSyncTimer();\n\n return _context2.abrupt("return", _this2.syncService.sync({\n mode: _services__WEBPACK_IMPORTED_MODULE_13__["SyncModes"].DownloadFirst\n }));\n\n case 6:\n case "end":\n return _context2.stop();\n }\n }\n }, _callee2);\n })));\n\n if (!awaitDatabaseLoad) {\n _context3.next = 40;\n break;\n }\n\n _context3.next = 40;\n return loadPromise;\n\n case 40:\n case "end":\n return _context3.stop();\n }\n }\n }, _callee3, this);\n }));\n\n function launch() {\n return _launch.apply(this, arguments);\n }\n\n return launch;\n }()\n }, {\n key: "handleLaunchChallengeResponse",\n value: function () {\n var _handleLaunchChallengeResponse = _asyncToGenerator( /*#__PURE__*/_babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0___default.a.mark(function _callee4(response) {\n var wrappingKey, value;\n return _babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0___default.a.wrap(function _callee4$(_context4) {\n while (1) {\n switch (_context4.prev = _context4.next) {\n case 0:\n if (!response.challenge.types.includes(_challenges__WEBPACK_IMPORTED_MODULE_6__["ChallengeType"].LocalPasscode)) {\n _context4.next = 9;\n break;\n }\n\n wrappingKey = response.artifacts.wrappingKey;\n\n if (wrappingKey) {\n _context4.next = 7;\n break;\n }\n\n value = response.getValueForType(_challenges__WEBPACK_IMPORTED_MODULE_6__["ChallengeType"].LocalPasscode);\n _context4.next = 6;\n return this.protocolService.computeWrappingKey(value.value);\n\n case 6:\n wrappingKey = _context4.sent;\n\n case 7:\n _context4.next = 9;\n return this.protocolService.unwrapRootKey(wrappingKey);\n\n case 9:\n case "end":\n return _context4.stop();\n }\n }\n }, _callee4, this);\n }));\n\n function handleLaunchChallengeResponse(_x2) {\n return _handleLaunchChallengeResponse.apply(this, arguments);\n }\n\n return handleLaunchChallengeResponse;\n }()\n }, {\n key: "beginAutoSyncTimer",\n value: function beginAutoSyncTimer() {\n var _this3 = this;\n\n this.autoSyncInterval = this.deviceInterface.interval(function () {\n _this3.syncService.log(\'Syncing from autosync\');\n\n _this3.sync();\n }, DEFAULT_AUTO_SYNC_INTERVAL);\n }\n }, {\n key: "handleStage",\n value: function () {\n var _handleStage = _asyncToGenerator( /*#__PURE__*/_babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0___default.a.mark(function _callee5(stage) {\n var _iteratorNormalCompletion, _didIteratorError, _iteratorError, _iterator, _step, service;\n\n return _babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0___default.a.wrap(function _callee5$(_context5) {\n while (1) {\n switch (_context5.prev = _context5.next) {\n case 0:\n _iteratorNormalCompletion = true;\n _didIteratorError = false;\n _iteratorError = undefined;\n _context5.prev = 3;\n _iterator = this.services[Symbol.iterator]();\n\n case 5:\n if (_iteratorNormalCompletion = (_step = _iterator.next()).done) {\n _context5.next = 12;\n break;\n }\n\n service = _step.value;\n _context5.next = 9;\n return service.handleApplicationStage(stage);\n\n case 9:\n _iteratorNormalCompletion = true;\n _context5.next = 5;\n break;\n\n case 12:\n _context5.next = 18;\n break;\n\n case 14:\n _context5.prev = 14;\n _context5.t0 = _context5["catch"](3);\n _didIteratorError = true;\n _iteratorError = _context5.t0;\n\n case 18:\n _context5.prev = 18;\n _context5.prev = 19;\n\n if (!_iteratorNormalCompletion && _iterator.return != null) {\n _iterator.return();\n }\n\n case 21:\n _context5.prev = 21;\n\n if (!_didIteratorError) {\n _context5.next = 24;\n break;\n }\n\n throw _iteratorError;\n\n case 24:\n return _context5.finish(21);\n\n case 25:\n return _context5.finish(18);\n\n case 26:\n case "end":\n return _context5.stop();\n }\n }\n }, _callee5, this, [[3, 14, 18, 26], [19,, 21, 25]]);\n }));\n\n function handleStage(_x3) {\n return _handleStage.apply(this, arguments);\n }\n\n return handleStage;\n }()\n /**\n * @param singleEvent Whether to only listen for a particular event.\n */\n\n }, {\n key: "addEventObserver",\n value: function addEventObserver(callback, singleEvent) {\n var _this4 = this;\n\n var observer = {\n callback: callback,\n singleEvent: singleEvent\n };\n this.eventHandlers.push(observer);\n return function () {\n Object(_Lib_utils__WEBPACK_IMPORTED_MODULE_7__["removeFromArray"])(_this4.eventHandlers, observer);\n };\n }\n }, {\n key: "addSingleEventObserver",\n value: function addSingleEventObserver(event, callback) {\n var filteredCallback = /*#__PURE__*/function () {\n var _ref2 = _asyncToGenerator( /*#__PURE__*/_babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0___default.a.mark(function _callee6(firedEvent) {\n return _babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0___default.a.wrap(function _callee6$(_context6) {\n while (1) {\n switch (_context6.prev = _context6.next) {\n case 0:\n if (firedEvent === event) {\n callback(event);\n }\n\n case 1:\n case "end":\n return _context6.stop();\n }\n }\n }, _callee6);\n }));\n\n return function filteredCallback(_x4) {\n return _ref2.apply(this, arguments);\n };\n }();\n\n return this.addEventObserver(filteredCallback, event);\n }\n }, {\n key: "notifyEvent",\n value: function () {\n var _notifyEvent = _asyncToGenerator( /*#__PURE__*/_babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0___default.a.mark(function _callee7(event, data) {\n var _iteratorNormalCompletion2, _didIteratorError2, _iteratorError2, _iterator2, _step2, observer;\n\n return _babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0___default.a.wrap(function _callee7$(_context7) {\n while (1) {\n switch (_context7.prev = _context7.next) {\n case 0:\n _iteratorNormalCompletion2 = true;\n _didIteratorError2 = false;\n _iteratorError2 = undefined;\n _context7.prev = 3;\n _iterator2 = this.eventHandlers.slice()[Symbol.iterator]();\n\n case 5:\n if (_iteratorNormalCompletion2 = (_step2 = _iterator2.next()).done) {\n _context7.next = 18;\n break;\n }\n\n observer = _step2.value;\n\n if (!(observer.singleEvent && observer.singleEvent === event)) {\n _context7.next = 12;\n break;\n }\n\n _context7.next = 10;\n return observer.callback(event, data || {});\n\n case 10:\n _context7.next = 15;\n break;\n\n case 12:\n if (observer.singleEvent) {\n _context7.next = 15;\n break;\n }\n\n _context7.next = 15;\n return observer.callback(event, data || {});\n\n case 15:\n _iteratorNormalCompletion2 = true;\n _context7.next = 5;\n break;\n\n case 18:\n _context7.next = 24;\n break;\n\n case 20:\n _context7.prev = 20;\n _context7.t0 = _context7["catch"](3);\n _didIteratorError2 = true;\n _iteratorError2 = _context7.t0;\n\n case 24:\n _context7.prev = 24;\n _context7.prev = 25;\n\n if (!_iteratorNormalCompletion2 && _iterator2.return != null) {\n _iterator2.return();\n }\n\n case 27:\n _context7.prev = 27;\n\n if (!_didIteratorError2) {\n _context7.next = 30;\n break;\n }\n\n throw _iteratorError2;\n\n case 30:\n return _context7.finish(27);\n\n case 31:\n return _context7.finish(24);\n\n case 32:\n this.migrationService.handleApplicationEvent(event);\n\n case 33:\n case "end":\n return _context7.stop();\n }\n }\n }, _callee7, this, [[3, 20, 24, 32], [25,, 27, 31]]);\n }));\n\n function notifyEvent(_x5, _x6) {\n return _notifyEvent.apply(this, arguments);\n }\n\n return notifyEvent;\n }()\n /**\n * Whether the local database has completed loading local items.\n */\n\n }, {\n key: "isDatabaseLoaded",\n value: function isDatabaseLoaded() {\n return this.syncService.isDatabaseLoaded();\n }\n }, {\n key: "savePayload",\n value: function () {\n var _savePayload = _asyncToGenerator( /*#__PURE__*/_babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0___default.a.mark(function _callee8(payload) {\n var dirtied;\n return _babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0___default.a.wrap(function _callee8$(_context8) {\n while (1) {\n switch (_context8.prev = _context8.next) {\n case 0:\n dirtied = Object(_Payloads_generator__WEBPACK_IMPORTED_MODULE_9__["CopyPayload"])(payload, {\n dirty: true,\n dirtiedDate: new Date()\n });\n _context8.next = 3;\n return this.modelManager.emitPayload(dirtied, _Payloads_sources__WEBPACK_IMPORTED_MODULE_10__["PayloadSource"].LocalChanged);\n\n case 3:\n _context8.next = 5;\n return this.syncService.sync();\n\n case 5:\n case "end":\n return _context8.stop();\n }\n }\n }, _callee8, this);\n }));\n\n function savePayload(_x7) {\n return _savePayload.apply(this, arguments);\n }\n\n return savePayload;\n }()\n /**\n * Finds an item by UUID.\n */\n\n }, {\n key: "findItem",\n value: function findItem(uuid) {\n return this.itemManager.findItem(uuid);\n }\n /**\n * Returns all items.\n */\n\n }, {\n key: "allItems",\n value: function allItems() {\n return this.itemManager.items;\n }\n /**\n * Finds an item by predicate.\n */\n\n }, {\n key: "findItems",\n value: function findItems(predicate) {\n return this.itemManager.itemsMatchingPredicate(predicate);\n }\n /**\n * Finds an item by predicate.\n */\n\n }, {\n key: "getAll",\n value: function getAll(uuids) {\n return this.itemManager.findItems(uuids);\n }\n /**\n * Takes the values of the input item and emits it onto global state.\n */\n\n }, {\n key: "mergeItem",\n value: function () {\n var _mergeItem = _asyncToGenerator( /*#__PURE__*/_babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0___default.a.mark(function _callee9(item, source) {\n return _babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0___default.a.wrap(function _callee9$(_context9) {\n while (1) {\n switch (_context9.prev = _context9.next) {\n case 0:\n return _context9.abrupt("return", this.itemManager.emitItemFromPayload(item.payloadRepresentation(), source));\n\n case 1:\n case "end":\n return _context9.stop();\n }\n }\n }, _callee9, this);\n }));\n\n function mergeItem(_x8, _x9) {\n return _mergeItem.apply(this, arguments);\n }\n\n return mergeItem;\n }()\n /**\n * Creates a managed item.\n * @param needsSync Whether to mark the item as needing sync. `add` must also be true.\n */\n\n }, {\n key: "createManagedItem",\n value: function () {\n var _createManagedItem = _asyncToGenerator( /*#__PURE__*/_babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0___default.a.mark(function _callee10(contentType, content) {\n var needsSync,\n override,\n item,\n _args10 = arguments;\n return _babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0___default.a.wrap(function _callee10$(_context10) {\n while (1) {\n switch (_context10.prev = _context10.next) {\n case 0:\n needsSync = _args10.length > 2 && _args10[2] !== undefined ? _args10[2] : false;\n override = _args10.length > 3 ? _args10[3] : undefined;\n _context10.next = 4;\n return this.itemManager.createItem(contentType, content, needsSync, override);\n\n case 4:\n item = _context10.sent;\n return _context10.abrupt("return", item);\n\n case 6:\n case "end":\n return _context10.stop();\n }\n }\n }, _callee10, this);\n }));\n\n function createManagedItem(_x10, _x11) {\n return _createManagedItem.apply(this, arguments);\n }\n\n return createManagedItem;\n }()\n /**\n * Creates an unmanaged item that can be added later.\n * @param needsSync Whether to mark the item as needing sync. `add` must also be true.\n */\n\n }, {\n key: "createTemplateItem",\n value: function () {\n var _createTemplateItem = _asyncToGenerator( /*#__PURE__*/_babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0___default.a.mark(function _callee11(contentType, content) {\n var item;\n return _babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0___default.a.wrap(function _callee11$(_context11) {\n while (1) {\n switch (_context11.prev = _context11.next) {\n case 0:\n _context11.next = 2;\n return this.itemManager.createTemplateItem(contentType, content);\n\n case 2:\n item = _context11.sent;\n return _context11.abrupt("return", item);\n\n case 4:\n case "end":\n return _context11.stop();\n }\n }\n }, _callee11, this);\n }));\n\n function createTemplateItem(_x12, _x13) {\n return _createTemplateItem.apply(this, arguments);\n }\n\n return createTemplateItem;\n }()\n /**\n * Creates an unmanaged item from a payload.\n */\n\n }, {\n key: "createItemFromPayload",\n value: function createItemFromPayload(payload) {\n return Object(_Models_generator__WEBPACK_IMPORTED_MODULE_11__["CreateItemFromPayload"])(payload);\n }\n /**\n * Creates an unmanaged payload from any object, where the raw object\n * represents the same data a payload would.\n */\n\n }, {\n key: "createPayloadFromObject",\n value: function createPayloadFromObject(object) {\n return Object(_Payloads_generator__WEBPACK_IMPORTED_MODULE_9__["CreateMaxPayloadFromAnyObject"])(object);\n }\n /**\n * @returns The date of last sync\n */\n\n }, {\n key: "getLastSyncDate",\n value: function getLastSyncDate() {\n return this.syncService.getLastSyncDate();\n }\n }, {\n key: "getSyncStatus",\n value: function getSyncStatus() {\n return this.syncService.getStatus();\n }\n /**\n * @param isUserModified Whether to change the modified date the user\n * sees of the item.\n */\n\n }, {\n key: "setItemNeedsSync",\n value: function () {\n var _setItemNeedsSync = _asyncToGenerator( /*#__PURE__*/_babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0___default.a.mark(function _callee12(item) {\n var isUserModified,\n _args12 = arguments;\n return _babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0___default.a.wrap(function _callee12$(_context12) {\n while (1) {\n switch (_context12.prev = _context12.next) {\n case 0:\n isUserModified = _args12.length > 1 && _args12[1] !== undefined ? _args12[1] : false;\n return _context12.abrupt("return", this.itemManager.setItemDirty(item.uuid, isUserModified));\n\n case 2:\n case "end":\n return _context12.stop();\n }\n }\n }, _callee12, this);\n }));\n\n function setItemNeedsSync(_x14) {\n return _setItemNeedsSync.apply(this, arguments);\n }\n\n return setItemNeedsSync;\n }()\n }, {\n key: "setItemsNeedsSync",\n value: function () {\n var _setItemsNeedsSync = _asyncToGenerator( /*#__PURE__*/_babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0___default.a.mark(function _callee13(items) {\n return _babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0___default.a.wrap(function _callee13$(_context13) {\n while (1) {\n switch (_context13.prev = _context13.next) {\n case 0:\n return _context13.abrupt("return", this.itemManager.setItemsDirty(Object(_Models_functions__WEBPACK_IMPORTED_MODULE_1__["Uuids"])(items)));\n\n case 1:\n case "end":\n return _context13.stop();\n }\n }\n }, _callee13, this);\n }));\n\n function setItemsNeedsSync(_x15) {\n return _setItemsNeedsSync.apply(this, arguments);\n }\n\n return setItemsNeedsSync;\n }()\n }, {\n key: "deleteItem",\n value: function () {\n var _deleteItem = _asyncToGenerator( /*#__PURE__*/_babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0___default.a.mark(function _callee14(item) {\n return _babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0___default.a.wrap(function _callee14$(_context14) {\n while (1) {\n switch (_context14.prev = _context14.next) {\n case 0:\n _context14.next = 2;\n return this.itemManager.setItemToBeDeleted(item.uuid);\n\n case 2:\n return _context14.abrupt("return", this.sync());\n\n case 3:\n case "end":\n return _context14.stop();\n }\n }\n }, _callee14, this);\n }));\n\n function deleteItem(_x16) {\n return _deleteItem.apply(this, arguments);\n }\n\n return deleteItem;\n }()\n }, {\n key: "deleteItemLocally",\n value: function () {\n var _deleteItemLocally = _asyncToGenerator( /*#__PURE__*/_babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0___default.a.mark(function _callee15(item) {\n return _babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0___default.a.wrap(function _callee15$(_context15) {\n while (1) {\n switch (_context15.prev = _context15.next) {\n case 0:\n this.itemManager.removeItemLocally(item);\n\n case 1:\n case "end":\n return _context15.stop();\n }\n }\n }, _callee15, this);\n }));\n\n function deleteItemLocally(_x17) {\n return _deleteItemLocally.apply(this, arguments);\n }\n\n return deleteItemLocally;\n }()\n }, {\n key: "emptyTrash",\n value: function () {\n var _emptyTrash = _asyncToGenerator( /*#__PURE__*/_babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0___default.a.mark(function _callee16() {\n return _babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0___default.a.wrap(function _callee16$(_context16) {\n while (1) {\n switch (_context16.prev = _context16.next) {\n case 0:\n _context16.next = 2;\n return this.itemManager.emptyTrash();\n\n case 2:\n return _context16.abrupt("return", this.sync());\n\n case 3:\n case "end":\n return _context16.stop();\n }\n }\n }, _callee16, this);\n }));\n\n function emptyTrash() {\n return _emptyTrash.apply(this, arguments);\n }\n\n return emptyTrash;\n }()\n }, {\n key: "getTrashedItems",\n value: function getTrashedItems() {\n return this.itemManager.trashedItems;\n }\n }, {\n key: "setDisplayOptions",\n value: function setDisplayOptions(contentType, sortBy, direction, filter) {\n this.itemManager.setDisplayOptions(contentType, sortBy, direction, filter);\n }\n }, {\n key: "getDisplayableItems",\n value: function getDisplayableItems(contentType) {\n return this.itemManager.getDisplayableItems(contentType);\n }\n /**\n * Inserts the input item by its payload properties, and marks the item as dirty.\n * A sync is not performed after an item is inserted. This must be handled by the caller.\n */\n\n }, {\n key: "insertItem",\n value: function () {\n var _insertItem = _asyncToGenerator( /*#__PURE__*/_babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0___default.a.mark(function _callee17(item) {\n var insertedItem;\n return _babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0___default.a.wrap(function _callee17$(_context17) {\n while (1) {\n switch (_context17.prev = _context17.next) {\n case 0:\n _context17.next = 2;\n return this.itemManager.insertItem(item);\n\n case 2:\n insertedItem = _context17.sent;\n _context17.next = 5;\n return this.itemManager.changeItems([insertedItem.uuid]);\n\n case 5:\n return _context17.abrupt("return", this.findItem(item.uuid));\n\n case 6:\n case "end":\n return _context17.stop();\n }\n }\n }, _callee17, this);\n }));\n\n function insertItem(_x18) {\n return _insertItem.apply(this, arguments);\n }\n\n return insertItem;\n }()\n /**\n * Saves the item by uuid by finding it, setting it as dirty if its not already,\n * and performing a sync request.\n */\n\n }, {\n key: "saveItem",\n value: function () {\n var _saveItem = _asyncToGenerator( /*#__PURE__*/_babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0___default.a.mark(function _callee18(uuid) {\n var item;\n return _babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0___default.a.wrap(function _callee18$(_context18) {\n while (1) {\n switch (_context18.prev = _context18.next) {\n case 0:\n item = this.itemManager.findItem(uuid);\n\n if (item) {\n _context18.next = 3;\n break;\n }\n\n throw Error(\'Attempting to save non-inserted item\');\n\n case 3:\n if (item.dirty) {\n _context18.next = 6;\n break;\n }\n\n _context18.next = 6;\n return this.itemManager.changeItem(uuid);\n\n case 6:\n _context18.next = 8;\n return this.syncService.sync();\n\n case 8:\n case "end":\n return _context18.stop();\n }\n }\n }, _callee18, this);\n }));\n\n function saveItem(_x19) {\n return _saveItem.apply(this, arguments);\n }\n\n return saveItem;\n }()\n /**\n * Mutates a pre-existing item, marks it as dirty, and syncs it\n */\n\n }, {\n key: "changeAndSaveItem",\n value: function () {\n var _changeAndSaveItem = _asyncToGenerator( /*#__PURE__*/_babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0___default.a.mark(function _callee19(uuid, mutate) {\n var isUserModified,\n payloadSource,\n syncOptions,\n _args19 = arguments;\n return _babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0___default.a.wrap(function _callee19$(_context19) {\n while (1) {\n switch (_context19.prev = _context19.next) {\n case 0:\n isUserModified = _args19.length > 2 && _args19[2] !== undefined ? _args19[2] : false;\n payloadSource = _args19.length > 3 ? _args19[3] : undefined;\n syncOptions = _args19.length > 4 ? _args19[4] : undefined;\n\n if (Object(_Lib_utils__WEBPACK_IMPORTED_MODULE_7__["isString"])(uuid)) {\n _context19.next = 5;\n break;\n }\n\n throw Error(\'Must use uuid to change item\');\n\n case 5:\n _context19.next = 7;\n return this.itemManager.changeItems([uuid], mutate, isUserModified ? _Models_core_item__WEBPACK_IMPORTED_MODULE_5__["MutationType"].UserInteraction : undefined, payloadSource);\n\n case 7:\n _context19.next = 9;\n return this.syncService.sync(syncOptions);\n\n case 9:\n return _context19.abrupt("return", this.findItem(uuid));\n\n case 10:\n case "end":\n return _context19.stop();\n }\n }\n }, _callee19, this);\n }));\n\n function changeAndSaveItem(_x20, _x21) {\n return _changeAndSaveItem.apply(this, arguments);\n }\n\n return changeAndSaveItem;\n }()\n /**\n * Mutates pre-existing items, marks them as dirty, and syncs\n */\n\n }, {\n key: "changeAndSaveItems",\n value: function () {\n var _changeAndSaveItems = _asyncToGenerator( /*#__PURE__*/_babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0___default.a.mark(function _callee20(uuids, mutate) {\n var isUserModified,\n payloadSource,\n syncOptions,\n _args20 = arguments;\n return _babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0___default.a.wrap(function _callee20$(_context20) {\n while (1) {\n switch (_context20.prev = _context20.next) {\n case 0:\n isUserModified = _args20.length > 2 && _args20[2] !== undefined ? _args20[2] : false;\n payloadSource = _args20.length > 3 ? _args20[3] : undefined;\n syncOptions = _args20.length > 4 ? _args20[4] : undefined;\n _context20.next = 5;\n return this.itemManager.changeItems(uuids, mutate, isUserModified ? _Models_core_item__WEBPACK_IMPORTED_MODULE_5__["MutationType"].UserInteraction : undefined, payloadSource);\n\n case 5:\n _context20.next = 7;\n return this.syncService.sync(syncOptions);\n\n case 7:\n case "end":\n return _context20.stop();\n }\n }\n }, _callee20, this);\n }));\n\n function changeAndSaveItems(_x22, _x23) {\n return _changeAndSaveItems.apply(this, arguments);\n }\n\n return changeAndSaveItems;\n }()\n /**\n * Mutates a pre-existing item and marks it as dirty. Does not sync changes.\n */\n\n }, {\n key: "changeItem",\n value: function () {\n var _changeItem = _asyncToGenerator( /*#__PURE__*/_babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0___default.a.mark(function _callee21(uuid, mutate) {\n var isUserModified,\n _args21 = arguments;\n return _babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0___default.a.wrap(function _callee21$(_context21) {\n while (1) {\n switch (_context21.prev = _context21.next) {\n case 0:\n isUserModified = _args21.length > 2 && _args21[2] !== undefined ? _args21[2] : false;\n\n if (Object(_Lib_utils__WEBPACK_IMPORTED_MODULE_7__["isString"])(uuid)) {\n _context21.next = 3;\n break;\n }\n\n throw Error(\'Must use uuid to change item\');\n\n case 3:\n _context21.next = 5;\n return this.itemManager.changeItems([uuid], mutate, isUserModified ? _Models_core_item__WEBPACK_IMPORTED_MODULE_5__["MutationType"].UserInteraction : undefined);\n\n case 5:\n return _context21.abrupt("return", this.findItem(uuid));\n\n case 6:\n case "end":\n return _context21.stop();\n }\n }\n }, _callee21, this);\n }));\n\n function changeItem(_x24, _x25) {\n return _changeItem.apply(this, arguments);\n }\n\n return changeItem;\n }()\n /**\n * Mutates a pre-existing items and marks them as dirty. Does not sync changes.\n */\n\n }, {\n key: "changeItems",\n value: function () {\n var _changeItems = _asyncToGenerator( /*#__PURE__*/_babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0___default.a.mark(function _callee22(uuids, mutate) {\n var isUserModified,\n _args22 = arguments;\n return _babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0___default.a.wrap(function _callee22$(_context22) {\n while (1) {\n switch (_context22.prev = _context22.next) {\n case 0:\n isUserModified = _args22.length > 2 && _args22[2] !== undefined ? _args22[2] : false;\n return _context22.abrupt("return", this.itemManager.changeItems(uuids, mutate, isUserModified ? _Models_core_item__WEBPACK_IMPORTED_MODULE_5__["MutationType"].UserInteraction : undefined));\n\n case 2:\n case "end":\n return _context22.stop();\n }\n }\n }, _callee22, this);\n }));\n\n function changeItems(_x26, _x27) {\n return _changeItems.apply(this, arguments);\n }\n\n return changeItems;\n }()\n }, {\n key: "getItems",\n value: function getItems(contentType) {\n return this.itemManager.getItems(contentType);\n }\n }, {\n key: "notesMatchingSmartTag",\n value: function notesMatchingSmartTag(smartTag) {\n return this.itemManager.notesMatchingSmartTag(smartTag);\n }\n /** Returns an item\'s direct references */\n\n }, {\n key: "referencesForItem",\n value: function referencesForItem(item, contentType) {\n var references = this.itemManager.referencesForItem(item.uuid);\n\n if (contentType) {\n references = references.filter(function (ref) {\n return (ref === null || ref === void 0 ? void 0 : ref.content_type) === contentType;\n });\n }\n\n return references;\n }\n /** Returns items referencing an item */\n\n }, {\n key: "referencingForItem",\n value: function referencingForItem(item, contentType) {\n var references = this.itemManager.itemsReferencingItem(item.uuid);\n\n if (contentType) {\n references = references.filter(function (ref) {\n return (ref === null || ref === void 0 ? void 0 : ref.content_type) === contentType;\n });\n }\n\n return references;\n }\n }, {\n key: "findTagByTitle",\n value: function findTagByTitle(title) {\n return this.itemManager.findTagByTitle(title);\n }\n }, {\n key: "findOrCreateTag",\n value: function () {\n var _findOrCreateTag = _asyncToGenerator( /*#__PURE__*/_babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0___default.a.mark(function _callee23(title) {\n return _babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0___default.a.wrap(function _callee23$(_context23) {\n while (1) {\n switch (_context23.prev = _context23.next) {\n case 0:\n return _context23.abrupt("return", this.itemManager.findOrCreateTagByTitle(title));\n\n case 1:\n case "end":\n return _context23.stop();\n }\n }\n }, _callee23, this);\n }));\n\n function findOrCreateTag(_x28) {\n return _findOrCreateTag.apply(this, arguments);\n }\n\n return findOrCreateTag;\n }()\n }, {\n key: "getSmartTags",\n value: function getSmartTags() {\n return this.itemManager.getSmartTags();\n }\n }, {\n key: "getNoteCount",\n value: function getNoteCount() {\n return this.itemManager.noteCount;\n }\n /**\n * Begin streaming items to display in the UI. The stream callback will be called\n * immediately with the present items that match the constraint, and over time whenever\n * items matching the constraint are added, changed, or deleted.\n */\n\n }, {\n key: "streamItems",\n value: function streamItems(contentType, stream) {\n var _this5 = this;\n\n var observer = this.itemManager.addObserver(contentType, function (changed, inserted, discarded, source) {\n var all = changed.concat(inserted).concat(discarded);\n stream(all, source);\n });\n /** Push current values now */\n\n var matches = this.itemManager.getItems(contentType);\n\n if (matches.length > 0) {\n stream(matches);\n }\n\n this.streamRemovers.push(observer);\n return function () {\n observer();\n Object(_Lib_utils__WEBPACK_IMPORTED_MODULE_7__["removeFromArray"])(_this5.streamRemovers, observer);\n };\n }\n /**\n * Set the server\'s URL\n */\n\n }, {\n key: "setHost",\n value: function () {\n var _setHost = _asyncToGenerator( /*#__PURE__*/_babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0___default.a.mark(function _callee24(host) {\n return _babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0___default.a.wrap(function _callee24$(_context24) {\n while (1) {\n switch (_context24.prev = _context24.next) {\n case 0:\n return _context24.abrupt("return", this.apiService.setHost(host));\n\n case 1:\n case "end":\n return _context24.stop();\n }\n }\n }, _callee24, this);\n }));\n\n function setHost(_x29) {\n return _setHost.apply(this, arguments);\n }\n\n return setHost;\n }()\n }, {\n key: "getHost",\n value: function () {\n var _getHost = _asyncToGenerator( /*#__PURE__*/_babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0___default.a.mark(function _callee25() {\n return _babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0___default.a.wrap(function _callee25$(_context25) {\n while (1) {\n switch (_context25.prev = _context25.next) {\n case 0:\n return _context25.abrupt("return", this.apiService.getHost());\n\n case 1:\n case "end":\n return _context25.stop();\n }\n }\n }, _callee25, this);\n }));\n\n function getHost() {\n return _getHost.apply(this, arguments);\n }\n\n return getHost;\n }()\n }, {\n key: "getUser",\n value: function getUser() {\n if (!this.launched) {\n throw \'Attempting to access user before application unlocked\';\n }\n\n return this.sessionManager.getUser();\n }\n }, {\n key: "getUserVersion",\n value: function () {\n var _getUserVersion = _asyncToGenerator( /*#__PURE__*/_babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0___default.a.mark(function _callee26() {\n return _babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0___default.a.wrap(function _callee26$(_context26) {\n while (1) {\n switch (_context26.prev = _context26.next) {\n case 0:\n return _context26.abrupt("return", this.protocolService.getUserVersion());\n\n case 1:\n case "end":\n return _context26.stop();\n }\n }\n }, _callee26, this);\n }));\n\n function getUserVersion() {\n return _getUserVersion.apply(this, arguments);\n }\n\n return getUserVersion;\n }()\n /**\n * Returns true if there is an upgrade available for the account or passcode\n */\n\n }, {\n key: "protocolUpgradeAvailable",\n value: function () {\n var _protocolUpgradeAvailable = _asyncToGenerator( /*#__PURE__*/_babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0___default.a.mark(function _callee27() {\n return _babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0___default.a.wrap(function _callee27$(_context27) {\n while (1) {\n switch (_context27.prev = _context27.next) {\n case 0:\n return _context27.abrupt("return", this.protocolService.upgradeAvailable());\n\n case 1:\n case "end":\n return _context27.stop();\n }\n }\n }, _callee27, this);\n }));\n\n function protocolUpgradeAvailable() {\n return _protocolUpgradeAvailable.apply(this, arguments);\n }\n\n return protocolUpgradeAvailable;\n }()\n /**\n * Returns true if there is an encryption source available\n */\n\n }, {\n key: "isEncryptionAvailable",\n value: function () {\n var _isEncryptionAvailable = _asyncToGenerator( /*#__PURE__*/_babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0___default.a.mark(function _callee28() {\n return _babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0___default.a.wrap(function _callee28$(_context28) {\n while (1) {\n switch (_context28.prev = _context28.next) {\n case 0:\n return _context28.abrupt("return", !Object(_Lib_utils__WEBPACK_IMPORTED_MODULE_7__["isNullOrUndefined"])(this.getUser()) || this.hasPasscode());\n\n case 1:\n case "end":\n return _context28.stop();\n }\n }\n }, _callee28, this);\n }));\n\n function isEncryptionAvailable() {\n return _isEncryptionAvailable.apply(this, arguments);\n }\n\n return isEncryptionAvailable;\n }()\n /**\n * @returns An array of errors, if any.\n */\n\n }, {\n key: "upgradeProtocolVersion",\n value: function () {\n var _upgradeProtocolVersion = _asyncToGenerator( /*#__PURE__*/_babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0___default.a.mark(function _callee29() {\n var hasPasscode, hasAccount, types, challenge, response, passcode, value, _value, password, changeResponse;\n\n return _babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0___default.a.wrap(function _callee29$(_context29) {\n while (1) {\n switch (_context29.prev = _context29.next) {\n case 0:\n hasPasscode = this.hasPasscode();\n hasAccount = !this.noAccount();\n types = [];\n\n if (hasPasscode) {\n types.push(_challenges__WEBPACK_IMPORTED_MODULE_6__["ChallengeType"].LocalPasscode);\n }\n\n if (hasAccount) {\n types.push(_challenges__WEBPACK_IMPORTED_MODULE_6__["ChallengeType"].AccountPassword);\n }\n\n challenge = new _challenges__WEBPACK_IMPORTED_MODULE_6__["Challenge"](types, _challenges__WEBPACK_IMPORTED_MODULE_6__["ChallengeReason"].ProtocolUpgrade);\n _context29.next = 8;\n return this.challengeService.promptForChallengeResponse(challenge);\n\n case 8:\n response = _context29.sent;\n\n if (response) {\n _context29.next = 11;\n break;\n }\n\n return _context29.abrupt("return");\n\n case 11:\n if (hasPasscode) {\n /* Upgrade passcode version */\n value = response.getValueForType(_challenges__WEBPACK_IMPORTED_MODULE_6__["ChallengeType"].LocalPasscode);\n passcode = value.value;\n }\n\n if (!hasAccount) {\n _context29.next = 23;\n break;\n }\n\n /* Upgrade account version */\n _value = response.getValueForType(_challenges__WEBPACK_IMPORTED_MODULE_6__["ChallengeType"].AccountPassword);\n password = _value.value;\n _context29.next = 17;\n return this.changePassword(password, password, passcode, {\n validatePasswordStrength: false\n });\n\n case 17:\n changeResponse = _context29.sent;\n\n if (!(changeResponse === null || changeResponse === void 0 ? void 0 : changeResponse.error)) {\n _context29.next = 20;\n break;\n }\n\n return _context29.abrupt("return", [changeResponse.error]);\n\n case 20:\n if (!passcode) {\n _context29.next = 23;\n break;\n }\n\n _context29.next = 23;\n return this.changePasscode(passcode);\n\n case 23:\n case "end":\n return _context29.stop();\n }\n }\n }, _callee29, this);\n }));\n\n function upgradeProtocolVersion() {\n return _upgradeProtocolVersion.apply(this, arguments);\n }\n\n return upgradeProtocolVersion;\n }()\n }, {\n key: "noAccount",\n value: function noAccount() {\n var user = this.getUser();\n return Object(_Lib_utils__WEBPACK_IMPORTED_MODULE_7__["isNullOrUndefined"])(user);\n }\n /**\n * @returns\n * .affectedItems: Items that were either created or dirtied by this import\n * .errorCount: The number of items that were not imported due to failure to decrypt.\n */\n\n }, {\n key: "importData",\n value: function () {\n var _importData = _asyncToGenerator( /*#__PURE__*/_babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0___default.a.mark(function _callee30(data, password) {\n var awaitSync,\n decryptedPayloads,\n validPayloads,\n affectedUuids,\n promise,\n affectedItems,\n _args30 = arguments;\n return _babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0___default.a.wrap(function _callee30$(_context30) {\n while (1) {\n switch (_context30.prev = _context30.next) {\n case 0:\n awaitSync = _args30.length > 2 && _args30[2] !== undefined ? _args30[2] : false;\n _context30.next = 3;\n return this.protocolService.payloadsByDecryptingBackupFile(data, password);\n\n case 3:\n decryptedPayloads = _context30.sent;\n validPayloads = decryptedPayloads.filter(function (payload) {\n return !payload.errorDecrypting;\n }).map(function (payload) {\n /* Don\'t want to activate any components during import process in\n * case of exceptions breaking up the import proccess */\n if (payload.content_type === _Models_content_types__WEBPACK_IMPORTED_MODULE_8__["ContentType"].Component && payload.safeContent.active) {\n return Object(_Payloads_generator__WEBPACK_IMPORTED_MODULE_9__["CopyPayload"])(payload, {\n content: _objectSpread({}, payload.safeContent, {\n active: false\n })\n });\n } else {\n return payload;\n }\n });\n _context30.next = 7;\n return this.modelManager.importPayloads(validPayloads);\n\n case 7:\n affectedUuids = _context30.sent;\n promise = this.sync();\n\n if (!awaitSync) {\n _context30.next = 12;\n break;\n }\n\n _context30.next = 12;\n return promise;\n\n case 12:\n affectedItems = this.getAll(affectedUuids);\n return _context30.abrupt("return", {\n affectedItems: affectedItems,\n errorCount: decryptedPayloads.length - validPayloads.length\n });\n\n case 14:\n case "end":\n return _context30.stop();\n }\n }\n }, _callee30, this);\n }));\n\n function importData(_x30, _x31) {\n return _importData.apply(this, arguments);\n }\n\n return importData;\n }()\n /**\n * Creates a JSON string representing the backup format of all items, or just subItems\n * if supplied.\n */\n\n }, {\n key: "createBackupFile",\n value: function () {\n var _createBackupFile = _asyncToGenerator( /*#__PURE__*/_babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0___default.a.mark(function _callee31(subItems, intent) {\n var returnIfEmpty,\n _args31 = arguments;\n return _babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0___default.a.wrap(function _callee31$(_context31) {\n while (1) {\n switch (_context31.prev = _context31.next) {\n case 0:\n returnIfEmpty = _args31.length > 2 && _args31[2] !== undefined ? _args31[2] : false;\n return _context31.abrupt("return", this.protocolService.createBackupFile(subItems, intent, returnIfEmpty));\n\n case 2:\n case "end":\n return _context31.stop();\n }\n }\n }, _callee31, this);\n }));\n\n function createBackupFile(_x32, _x33) {\n return _createBackupFile.apply(this, arguments);\n }\n\n return createBackupFile;\n }()\n }, {\n key: "isEphemeralSession",\n value: function isEphemeralSession() {\n return this.storageService.isEphemeralSession();\n }\n }, {\n key: "lockSyncing",\n value: function lockSyncing() {\n this.syncService.lockSyncing();\n }\n }, {\n key: "unlockSyncing",\n value: function unlockSyncing() {\n this.syncService.unlockSyncing();\n }\n }, {\n key: "sync",\n value: function () {\n var _sync = _asyncToGenerator( /*#__PURE__*/_babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0___default.a.mark(function _callee32(options) {\n return _babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0___default.a.wrap(function _callee32$(_context32) {\n while (1) {\n switch (_context32.prev = _context32.next) {\n case 0:\n return _context32.abrupt("return", this.syncService.sync(options));\n\n case 1:\n case "end":\n return _context32.stop();\n }\n }\n }, _callee32, this);\n }));\n\n function sync(_x34) {\n return _sync.apply(this, arguments);\n }\n\n return sync;\n }()\n }, {\n key: "isOutOfSync",\n value: function () {\n var _isOutOfSync = _asyncToGenerator( /*#__PURE__*/_babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0___default.a.mark(function _callee33() {\n return _babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0___default.a.wrap(function _callee33$(_context33) {\n while (1) {\n switch (_context33.prev = _context33.next) {\n case 0:\n return _context33.abrupt("return", this.syncService.isOutOfSync());\n\n case 1:\n case "end":\n return _context33.stop();\n }\n }\n }, _callee33, this);\n }));\n\n function isOutOfSync() {\n return _isOutOfSync.apply(this, arguments);\n }\n\n return isOutOfSync;\n }()\n }, {\n key: "resolveOutOfSync",\n value: function () {\n var _resolveOutOfSync = _asyncToGenerator( /*#__PURE__*/_babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0___default.a.mark(function _callee34() {\n return _babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0___default.a.wrap(function _callee34$(_context34) {\n while (1) {\n switch (_context34.prev = _context34.next) {\n case 0:\n return _context34.abrupt("return", this.syncService.resolveOutOfSync());\n\n case 1:\n case "end":\n return _context34.stop();\n }\n }\n }, _callee34, this);\n }));\n\n function resolveOutOfSync() {\n return _resolveOutOfSync.apply(this, arguments);\n }\n\n return resolveOutOfSync;\n }()\n }, {\n key: "setValue",\n value: function () {\n var _setValue = _asyncToGenerator( /*#__PURE__*/_babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0___default.a.mark(function _callee35(key, value, mode) {\n return _babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0___default.a.wrap(function _callee35$(_context35) {\n while (1) {\n switch (_context35.prev = _context35.next) {\n case 0:\n return _context35.abrupt("return", this.storageService.setValue(key, value, mode));\n\n case 1:\n case "end":\n return _context35.stop();\n }\n }\n }, _callee35, this);\n }));\n\n function setValue(_x35, _x36, _x37) {\n return _setValue.apply(this, arguments);\n }\n\n return setValue;\n }()\n }, {\n key: "getValue",\n value: function () {\n var _getValue = _asyncToGenerator( /*#__PURE__*/_babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0___default.a.mark(function _callee36(key, mode) {\n return _babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0___default.a.wrap(function _callee36$(_context36) {\n while (1) {\n switch (_context36.prev = _context36.next) {\n case 0:\n return _context36.abrupt("return", this.storageService.getValue(key, mode));\n\n case 1:\n case "end":\n return _context36.stop();\n }\n }\n }, _callee36, this);\n }));\n\n function getValue(_x38, _x39) {\n return _getValue.apply(this, arguments);\n }\n\n return getValue;\n }()\n }, {\n key: "removeValue",\n value: function () {\n var _removeValue = _asyncToGenerator( /*#__PURE__*/_babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0___default.a.mark(function _callee37(key, mode) {\n return _babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0___default.a.wrap(function _callee37$(_context37) {\n while (1) {\n switch (_context37.prev = _context37.next) {\n case 0:\n return _context37.abrupt("return", this.storageService.removeValue(key, mode));\n\n case 1:\n case "end":\n return _context37.stop();\n }\n }\n }, _callee37, this);\n }));\n\n function removeValue(_x40, _x41) {\n return _removeValue.apply(this, arguments);\n }\n\n return removeValue;\n }()\n /**\n * Deletes all payloads from storage.\n */\n\n }, {\n key: "clearDatabase",\n value: function () {\n var _clearDatabase = _asyncToGenerator( /*#__PURE__*/_babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0___default.a.mark(function _callee38() {\n return _babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0___default.a.wrap(function _callee38$(_context38) {\n while (1) {\n switch (_context38.prev = _context38.next) {\n case 0:\n return _context38.abrupt("return", this.storageService.clearAllPayloads());\n\n case 1:\n case "end":\n return _context38.stop();\n }\n }\n }, _callee38, this);\n }));\n\n function clearDatabase() {\n return _clearDatabase.apply(this, arguments);\n }\n\n return clearDatabase;\n }()\n /**\n * Allows items keys to be rewritten to local db on local credential status change,\n * such as if passcode is added, changed, or removed.\n * This allows IndexedDB unencrypted logs to be deleted\n * `deletePayloads` will remove data from backing store,\n * but not from working memory See:\n * https://github.com/standardnotes/desktop/issues/131\n */\n\n }, {\n key: "rewriteItemsKeys",\n value: function () {\n var _rewriteItemsKeys = _asyncToGenerator( /*#__PURE__*/_babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0___default.a.mark(function _callee39() {\n var itemsKeys, payloads;\n return _babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0___default.a.wrap(function _callee39$(_context39) {\n while (1) {\n switch (_context39.prev = _context39.next) {\n case 0:\n itemsKeys = this.itemManager.itemsKeys();\n payloads = itemsKeys.map(function (key) {\n return key.payloadRepresentation();\n });\n _context39.next = 4;\n return this.storageService.deletePayloads(payloads);\n\n case 4:\n _context39.next = 6;\n return this.syncService.persistPayloads(payloads);\n\n case 6:\n case "end":\n return _context39.stop();\n }\n }\n }, _callee39, this);\n }));\n\n function rewriteItemsKeys() {\n return _rewriteItemsKeys.apply(this, arguments);\n }\n\n return rewriteItemsKeys;\n }()\n /**\n * Gives services a chance to complete any sensitive operations before yielding\n * @param maxWait The maximum number of milliseconds to wait for services\n * to finish tasks. 0 means no limit.\n */\n\n }, {\n key: "prepareForDeinit",\n value: function () {\n var _prepareForDeinit = _asyncToGenerator( /*#__PURE__*/_babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0___default.a.mark(function _callee40() {\n var maxWait,\n promise,\n _args40 = arguments;\n return _babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0___default.a.wrap(function _callee40$(_context40) {\n while (1) {\n switch (_context40.prev = _context40.next) {\n case 0:\n maxWait = _args40.length > 0 && _args40[0] !== undefined ? _args40[0] : 0;\n promise = Promise.all(this.services.map(function (service) {\n return service.blockDeinit();\n }));\n\n if (!(maxWait === 0)) {\n _context40.next = 7;\n break;\n }\n\n _context40.next = 5;\n return promise;\n\n case 5:\n _context40.next = 9;\n break;\n\n case 7:\n _context40.next = 9;\n return Promise.race([promise, Object(_Lib_utils__WEBPACK_IMPORTED_MODULE_7__["sleep"])(maxWait)]);\n\n case 9:\n case "end":\n return _context40.stop();\n }\n }\n }, _callee40, this);\n }));\n\n function prepareForDeinit() {\n return _prepareForDeinit.apply(this, arguments);\n }\n\n return prepareForDeinit;\n }()\n }, {\n key: "submitValuesForChallenge",\n value: function submitValuesForChallenge(challenge, values) {\n return this.challengeService.submitValuesForChallenge(challenge, values);\n }\n }, {\n key: "setChallengeCallbacks",\n value: function setChallengeCallbacks(_ref3) {\n var challenge = _ref3.challenge,\n onValidValue = _ref3.onValidValue,\n onInvalidValue = _ref3.onInvalidValue,\n onComplete = _ref3.onComplete,\n onCancel = _ref3.onCancel;\n return this.challengeService.setChallengeCallbacks(challenge, onValidValue, onInvalidValue, onComplete, onCancel);\n }\n }, {\n key: "cancelChallenge",\n value: function cancelChallenge(challenge) {\n this.challengeService.cancelChallenge(challenge);\n }\n /**\n * Destroys the application instance.\n */\n\n }, {\n key: "deinit",\n value: function deinit() {\n clearInterval(this.autoSyncInterval);\n var _iteratorNormalCompletion3 = true;\n var _didIteratorError3 = false;\n var _iteratorError3 = undefined;\n\n try {\n for (var _iterator3 = this.serviceObservers[Symbol.iterator](), _step3; !(_iteratorNormalCompletion3 = (_step3 = _iterator3.next()).done); _iteratorNormalCompletion3 = true) {\n var uninstallObserver = _step3.value;\n uninstallObserver();\n }\n } catch (err) {\n _didIteratorError3 = true;\n _iteratorError3 = err;\n } finally {\n try {\n if (!_iteratorNormalCompletion3 && _iterator3.return != null) {\n _iterator3.return();\n }\n } finally {\n if (_didIteratorError3) {\n throw _iteratorError3;\n }\n }\n }\n\n var _iteratorNormalCompletion4 = true;\n var _didIteratorError4 = false;\n var _iteratorError4 = undefined;\n\n try {\n for (var _iterator4 = this.managedSubscribers[Symbol.iterator](), _step4; !(_iteratorNormalCompletion4 = (_step4 = _iterator4.next()).done); _iteratorNormalCompletion4 = true) {\n var uninstallSubscriber = _step4.value;\n uninstallSubscriber();\n }\n } catch (err) {\n _didIteratorError4 = true;\n _iteratorError4 = err;\n } finally {\n try {\n if (!_iteratorNormalCompletion4 && _iterator4.return != null) {\n _iterator4.return();\n }\n } finally {\n if (_didIteratorError4) {\n throw _iteratorError4;\n }\n }\n }\n\n var _iteratorNormalCompletion5 = true;\n var _didIteratorError5 = false;\n var _iteratorError5 = undefined;\n\n try {\n for (var _iterator5 = this.services[Symbol.iterator](), _step5; !(_iteratorNormalCompletion5 = (_step5 = _iterator5.next()).done); _iteratorNormalCompletion5 = true) {\n var service = _step5.value;\n service.deinit();\n }\n } catch (err) {\n _didIteratorError5 = true;\n _iteratorError5 = err;\n } finally {\n try {\n if (!_iteratorNormalCompletion5 && _iterator5.return != null) {\n _iterator5.return();\n }\n } finally {\n if (_didIteratorError5) {\n throw _iteratorError5;\n }\n }\n }\n\n this.deviceInterface.deinit();\n this.deviceInterface = undefined;\n this.crypto = undefined;\n this.createdNewDatabase = false;\n this.services.length = 0;\n this.serviceObservers.length = 0;\n this.managedSubscribers.length = 0;\n this.streamRemovers.length = 0;\n this.clearServices();\n this.dealloced = true;\n this.started = false;\n }\n /**\n * Returns the wrapping key for operations that require resaving the root key\n * (changing the account password, signing in, registering, or upgrading protocol)\n * Returns empty object if no passcode is configured.\n * Otherwise returns {cancled: true} if the operation is canceled, or\n * {wrappingKey} with the result.\n * @param passcode - If the consumer already has access to the passcode,\n * they can pass it here so that the user is not prompted again.\n */\n\n }, {\n key: "getWrappingKeyIfNecessary",\n value: function () {\n var _getWrappingKeyIfNecessary = _asyncToGenerator( /*#__PURE__*/_babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0___default.a.mark(function _callee41(passcode) {\n var challenge, response, value, wrappingKey;\n return _babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0___default.a.wrap(function _callee41$(_context41) {\n while (1) {\n switch (_context41.prev = _context41.next) {\n case 0:\n if (this.hasPasscode()) {\n _context41.next = 2;\n break;\n }\n\n return _context41.abrupt("return", {});\n\n case 2:\n if (passcode) {\n _context41.next = 11;\n break;\n }\n\n challenge = new _challenges__WEBPACK_IMPORTED_MODULE_6__["Challenge"]([_challenges__WEBPACK_IMPORTED_MODULE_6__["ChallengeType"].LocalPasscode], _challenges__WEBPACK_IMPORTED_MODULE_6__["ChallengeReason"].ResaveRootKey);\n _context41.next = 6;\n return this.challengeService.promptForChallengeResponse(challenge);\n\n case 6:\n response = _context41.sent;\n\n if (response) {\n _context41.next = 9;\n break;\n }\n\n return _context41.abrupt("return", {\n canceled: true\n });\n\n case 9:\n value = response.getValueForType(_challenges__WEBPACK_IMPORTED_MODULE_6__["ChallengeType"].LocalPasscode);\n passcode = value.value;\n\n case 11:\n _context41.next = 13;\n return this.protocolService.computeWrappingKey(passcode);\n\n case 13:\n wrappingKey = _context41.sent;\n return _context41.abrupt("return", {\n wrappingKey: wrappingKey\n });\n\n case 15:\n case "end":\n return _context41.stop();\n }\n }\n }, _callee41, this);\n }));\n\n function getWrappingKeyIfNecessary(_x42) {\n return _getWrappingKeyIfNecessary.apply(this, arguments);\n }\n\n return getWrappingKeyIfNecessary;\n }()\n /**\n * @param mergeLocal Whether to merge existing offline data into account. If false,\n * any pre-existing data will be fully deleted upon success.\n */\n\n }, {\n key: "register",\n value: function () {\n var _register = _asyncToGenerator( /*#__PURE__*/_babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0___default.a.mark(function _callee42(email, password) {\n var ephemeral,\n mergeLocal,\n _ref4,\n wrappingKey,\n canceled,\n result,\n _args42 = arguments;\n\n return _babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0___default.a.wrap(function _callee42$(_context42) {\n while (1) {\n switch (_context42.prev = _context42.next) {\n case 0:\n ephemeral = _args42.length > 2 && _args42[2] !== undefined ? _args42[2] : false;\n mergeLocal = _args42.length > 3 && _args42[3] !== undefined ? _args42[3] : true;\n _context42.next = 4;\n return this.getWrappingKeyIfNecessary();\n\n case 4:\n _ref4 = _context42.sent;\n wrappingKey = _ref4.wrappingKey;\n canceled = _ref4.canceled;\n\n if (!canceled) {\n _context42.next = 9;\n break;\n }\n\n return _context42.abrupt("return");\n\n case 9:\n this.lockSyncing();\n _context42.next = 12;\n return this.sessionManager.register(email, password);\n\n case 12:\n result = _context42.sent;\n\n if (result.response.error) {\n _context42.next = 35;\n break;\n }\n\n _context42.next = 16;\n return this.protocolService.setNewRootKey(result.rootKey, result.keyParams, wrappingKey);\n\n case 16:\n this.syncService.resetSyncState();\n _context42.next = 19;\n return this.storageService.setPersistencePolicy(ephemeral ? _Services_storage_service__WEBPACK_IMPORTED_MODULE_12__["StoragePersistencePolicies"].Ephemeral : _Services_storage_service__WEBPACK_IMPORTED_MODULE_12__["StoragePersistencePolicies"].Default);\n\n case 19:\n if (!mergeLocal) {\n _context42.next = 24;\n break;\n }\n\n _context42.next = 22;\n return this.syncService.markAllItemsAsNeedingSync(true);\n\n case 22:\n _context42.next = 27;\n break;\n\n case 24:\n this.itemManager.removeAllItemsFromMemory();\n _context42.next = 27;\n return this.clearDatabase();\n\n case 27:\n _context42.next = 29;\n return this.notifyEvent(_Lib_events__WEBPACK_IMPORTED_MODULE_3__["ApplicationEvent"].SignedIn);\n\n case 29:\n this.unlockSyncing();\n _context42.next = 32;\n return this.syncService.sync({\n mode: _services__WEBPACK_IMPORTED_MODULE_13__["SyncModes"].DownloadFirst,\n queueStrategy: _services__WEBPACK_IMPORTED_MODULE_13__["SyncQueueStrategy"].ForceSpawnNew\n });\n\n case 32:\n this.protocolService.decryptErroredItems();\n _context42.next = 36;\n break;\n\n case 35:\n this.unlockSyncing();\n\n case 36:\n return _context42.abrupt("return", result.response);\n\n case 37:\n case "end":\n return _context42.stop();\n }\n }\n }, _callee42, this);\n }));\n\n function register(_x43, _x44) {\n return _register.apply(this, arguments);\n }\n\n return register;\n }()\n /**\n * @param mergeLocal Whether to merge existing offline data into account.\n * If false, any pre-existing data will be fully deleted upon success.\n */\n\n }, {\n key: "signIn",\n value: function () {\n var _signIn = _asyncToGenerator( /*#__PURE__*/_babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0___default.a.mark(function _callee43(email, password) {\n var strict,\n ephemeral,\n mfaKeyPath,\n mfaCode,\n mergeLocal,\n awaitSync,\n _ref5,\n wrappingKey,\n canceled,\n result,\n syncPromise,\n _args43 = arguments;\n\n return _babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0___default.a.wrap(function _callee43$(_context43) {\n while (1) {\n switch (_context43.prev = _context43.next) {\n case 0:\n strict = _args43.length > 2 && _args43[2] !== undefined ? _args43[2] : false;\n ephemeral = _args43.length > 3 && _args43[3] !== undefined ? _args43[3] : false;\n mfaKeyPath = _args43.length > 4 ? _args43[4] : undefined;\n mfaCode = _args43.length > 5 ? _args43[5] : undefined;\n mergeLocal = _args43.length > 6 && _args43[6] !== undefined ? _args43[6] : true;\n awaitSync = _args43.length > 7 && _args43[7] !== undefined ? _args43[7] : false;\n _context43.next = 8;\n return this.getWrappingKeyIfNecessary();\n\n case 8:\n _ref5 = _context43.sent;\n wrappingKey = _ref5.wrappingKey;\n canceled = _ref5.canceled;\n\n if (!canceled) {\n _context43.next = 13;\n break;\n }\n\n return _context43.abrupt("return");\n\n case 13:\n /** Prevent a timed sync from occuring while signing in. */\n this.lockSyncing();\n _context43.next = 16;\n return this.sessionManager.signIn(email, password, strict, mfaKeyPath, mfaCode);\n\n case 16:\n result = _context43.sent;\n\n if (result.response.error) {\n _context43.next = 45;\n break;\n }\n\n _context43.next = 20;\n return this.protocolService.setNewRootKey(result.rootKey, result.keyParams, wrappingKey);\n\n case 20:\n this.syncService.resetSyncState();\n _context43.next = 23;\n return this.storageService.setPersistencePolicy(ephemeral ? _Services_storage_service__WEBPACK_IMPORTED_MODULE_12__["StoragePersistencePolicies"].Ephemeral : _Services_storage_service__WEBPACK_IMPORTED_MODULE_12__["StoragePersistencePolicies"].Default);\n\n case 23:\n if (!mergeLocal) {\n _context43.next = 28;\n break;\n }\n\n _context43.next = 26;\n return this.syncService.markAllItemsAsNeedingSync(true);\n\n case 26:\n _context43.next = 31;\n break;\n\n case 28:\n this.itemManager.removeAllItemsFromMemory();\n _context43.next = 31;\n return this.clearDatabase();\n\n case 31:\n _context43.next = 33;\n return this.notifyEvent(_Lib_events__WEBPACK_IMPORTED_MODULE_3__["ApplicationEvent"].SignedIn);\n\n case 33:\n this.unlockSyncing();\n syncPromise = this.syncService.sync({\n mode: _services__WEBPACK_IMPORTED_MODULE_13__["SyncModes"].DownloadFirst,\n checkIntegrity: true,\n queueStrategy: _services__WEBPACK_IMPORTED_MODULE_13__["SyncQueueStrategy"].ForceSpawnNew,\n awaitAll: awaitSync\n });\n\n if (!awaitSync) {\n _context43.next = 42;\n break;\n }\n\n _context43.next = 38;\n return syncPromise;\n\n case 38:\n _context43.next = 40;\n return this.protocolService.decryptErroredItems();\n\n case 40:\n _context43.next = 43;\n break;\n\n case 42:\n this.protocolService.decryptErroredItems();\n\n case 43:\n _context43.next = 46;\n break;\n\n case 45:\n this.unlockSyncing();\n\n case 46:\n return _context43.abrupt("return", result.response);\n\n case 47:\n case "end":\n return _context43.stop();\n }\n }\n }, _callee43, this);\n }));\n\n function signIn(_x45, _x46) {\n return _signIn.apply(this, arguments);\n }\n\n return signIn;\n }()\n /**\n * @param passcode - Changing the account password requires the local\n * passcode if configured (to rewrap the account key with passcode). If the passcode\n * is not passed in, the user will be prompted for the passcode. However if the consumer\n * already has referene to the passcode, they can pass it in here so that the user\n * is not prompted again.\n */\n\n }, {\n key: "changePassword",\n value: function () {\n var _changePassword = _asyncToGenerator( /*#__PURE__*/_babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0___default.a.mark(function _callee44(currentPassword, newPassword, passcode) {\n var _ref6,\n _ref6$validatePasswor,\n validatePasswordStrength,\n _ref7,\n wrappingKey,\n canceled,\n _ref8,\n _ref9,\n error,\n changePasswordResult,\n previousRootKey,\n newRootKey,\n newKeyParams,\n rollbackPasswordChange,\n itemsKeyWasSynced,\n response,\n _args44 = arguments;\n\n return _babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0___default.a.wrap(function _callee44$(_context44) {\n while (1) {\n switch (_context44.prev = _context44.next) {\n case 0:\n _ref6 = _args44.length > 3 && _args44[3] !== undefined ? _args44[3] : {}, _ref6$validatePasswor = _ref6.validatePasswordStrength, validatePasswordStrength = _ref6$validatePasswor === void 0 ? true : _ref6$validatePasswor;\n\n if (!validatePasswordStrength) {\n _context44.next = 4;\n break;\n }\n\n if (!(newPassword.length < _services_api_session_manager__WEBPACK_IMPORTED_MODULE_15__["MINIMUM_PASSWORD_LENGTH"])) {\n _context44.next = 4;\n break;\n }\n\n return _context44.abrupt("return", {\n error: Error(Object(_services_api_messages__WEBPACK_IMPORTED_MODULE_14__["InsufficientPasswordMessage"])(_services_api_session_manager__WEBPACK_IMPORTED_MODULE_15__["MINIMUM_PASSWORD_LENGTH"]))\n });\n\n case 4:\n _context44.next = 6;\n return this.getWrappingKeyIfNecessary(passcode);\n\n case 6:\n _ref7 = _context44.sent;\n wrappingKey = _ref7.wrappingKey;\n canceled = _ref7.canceled;\n\n if (!canceled) {\n _context44.next = 11;\n break;\n }\n\n return _context44.abrupt("return", {});\n\n case 11:\n _context44.next = 13;\n return this.protocolService.changePassword(this.getUser().email, currentPassword, newPassword, wrappingKey);\n\n case 13:\n _ref8 = _context44.sent;\n _ref9 = _slicedToArray(_ref8, 2);\n error = _ref9[0];\n changePasswordResult = _ref9[1];\n\n if (!error) {\n _context44.next = 19;\n break;\n }\n\n return _context44.abrupt("return", {\n error: error\n });\n\n case 19:\n previousRootKey = changePasswordResult.previousRootKey, newRootKey = changePasswordResult.newRootKey, newKeyParams = changePasswordResult.newKeyParams, rollbackPasswordChange = changePasswordResult.rollback;\n /** Sync the newly created items key. Roll back on failure */\n\n _context44.next = 22;\n return this.syncService.sync({\n awaitAll: true\n });\n\n case 22:\n itemsKeyWasSynced = this.protocolService.getDefaultItemsKey().updated_at.getTime() > 0;\n\n if (itemsKeyWasSynced) {\n _context44.next = 29;\n break;\n }\n\n _context44.next = 26;\n return rollbackPasswordChange();\n\n case 26:\n _context44.next = 28;\n return this.syncService.sync({\n awaitAll: true\n });\n\n case 28:\n return _context44.abrupt("return", {\n error: Error(_services_api_messages__WEBPACK_IMPORTED_MODULE_14__["API_MESSAGE_GENERIC_SYNC_FAIL"])\n });\n\n case 29:\n this.lockSyncing();\n /** Now, change the password on the server. Roll back on failure */\n\n _context44.next = 32;\n return this.sessionManager.changePassword(previousRootKey.serverPassword, newRootKey.serverPassword, newKeyParams);\n\n case 32:\n response = _context44.sent;\n\n if (!response.error) {\n _context44.next = 38;\n break;\n }\n\n _context44.next = 36;\n return rollbackPasswordChange();\n\n case 36:\n _context44.next = 38;\n return this.syncService.sync({\n awaitAll: true\n });\n\n case 38:\n this.unlockSyncing();\n return _context44.abrupt("return", response);\n\n case 40:\n case "end":\n return _context44.stop();\n }\n }\n }, _callee44, this);\n }));\n\n function changePassword(_x47, _x48, _x49) {\n return _changePassword.apply(this, arguments);\n }\n\n return changePassword;\n }()\n }, {\n key: "signOut",\n value: function () {\n var _signOut = _asyncToGenerator( /*#__PURE__*/_babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0___default.a.mark(function _callee45() {\n return _babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0___default.a.wrap(function _callee45$(_context45) {\n while (1) {\n switch (_context45.prev = _context45.next) {\n case 0:\n _context45.next = 2;\n return this.sessionManager.signOut();\n\n case 2:\n _context45.next = 4;\n return this.protocolService.clearLocalKeyState();\n\n case 4:\n _context45.next = 6;\n return this.storageService.clearAllData();\n\n case 6:\n _context45.next = 8;\n return this.notifyEvent(_Lib_events__WEBPACK_IMPORTED_MODULE_3__["ApplicationEvent"].SignedOut);\n\n case 8:\n _context45.next = 10;\n return this.prepareForDeinit();\n\n case 10:\n this.deinit();\n\n case 11:\n case "end":\n return _context45.stop();\n }\n }\n }, _callee45, this);\n }));\n\n function signOut() {\n return _signOut.apply(this, arguments);\n }\n\n return signOut;\n }()\n }, {\n key: "validateAccountPassword",\n value: function () {\n var _validateAccountPassword = _asyncToGenerator( /*#__PURE__*/_babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0___default.a.mark(function _callee46(password) {\n var _ref10, valid;\n\n return _babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0___default.a.wrap(function _callee46$(_context46) {\n while (1) {\n switch (_context46.prev = _context46.next) {\n case 0:\n _context46.next = 2;\n return this.protocolService.validateAccountPassword(password);\n\n case 2:\n _ref10 = _context46.sent;\n valid = _ref10.valid;\n return _context46.abrupt("return", valid);\n\n case 5:\n case "end":\n return _context46.stop();\n }\n }\n }, _callee46, this);\n }));\n\n function validateAccountPassword(_x50) {\n return _validateAccountPassword.apply(this, arguments);\n }\n\n return validateAccountPassword;\n }()\n }, {\n key: "isStarted",\n value: function isStarted() {\n return this.started;\n }\n }, {\n key: "isLaunched",\n value: function isLaunched() {\n return this.launched;\n }\n }, {\n key: "hasPasscode",\n value: function hasPasscode() {\n return this.protocolService.hasPasscode();\n }\n }, {\n key: "isLocked",\n value: function () {\n var _isLocked = _asyncToGenerator( /*#__PURE__*/_babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0___default.a.mark(function _callee47() {\n return _babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0___default.a.wrap(function _callee47$(_context47) {\n while (1) {\n switch (_context47.prev = _context47.next) {\n case 0:\n if (this.started) {\n _context47.next = 2;\n break;\n }\n\n return _context47.abrupt("return", true);\n\n case 2:\n return _context47.abrupt("return", this.challengeService.isPasscodeLocked());\n\n case 3:\n case "end":\n return _context47.stop();\n }\n }\n }, _callee47, this);\n }));\n\n function isLocked() {\n return _isLocked.apply(this, arguments);\n }\n\n return isLocked;\n }()\n }, {\n key: "lock",\n value: function () {\n var _lock = _asyncToGenerator( /*#__PURE__*/_babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0___default.a.mark(function _callee48() {\n var MaximumWaitTime;\n return _babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0___default.a.wrap(function _callee48$(_context48) {\n while (1) {\n switch (_context48.prev = _context48.next) {\n case 0:\n /** Because locking is a critical operation, we want to try to do it safely,\n * but only up to a certain limit. */\n MaximumWaitTime = 500;\n _context48.next = 3;\n return this.prepareForDeinit(MaximumWaitTime);\n\n case 3:\n return _context48.abrupt("return", this.deinit());\n\n case 4:\n case "end":\n return _context48.stop();\n }\n }\n }, _callee48, this);\n }));\n\n function lock() {\n return _lock.apply(this, arguments);\n }\n\n return lock;\n }()\n }, {\n key: "setPasscode",\n value: function () {\n var _setPasscode = _asyncToGenerator( /*#__PURE__*/_babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0___default.a.mark(function _callee49(passcode) {\n var identifier, _ref11, key, keyParams;\n\n return _babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0___default.a.wrap(function _callee49$(_context49) {\n while (1) {\n switch (_context49.prev = _context49.next) {\n case 0:\n _context49.next = 2;\n return this.generateUuid();\n\n case 2:\n identifier = _context49.sent;\n _context49.next = 5;\n return this.protocolService.createRootKey(identifier, passcode);\n\n case 5:\n _ref11 = _context49.sent;\n key = _ref11.key;\n keyParams = _ref11.keyParams;\n _context49.next = 10;\n return this.protocolService.setNewRootKeyWrapper(key, keyParams);\n\n case 10:\n _context49.next = 12;\n return this.rewriteItemsKeys();\n\n case 12:\n _context49.next = 14;\n return this.syncService.sync();\n\n case 14:\n case "end":\n return _context49.stop();\n }\n }\n }, _callee49, this);\n }));\n\n function setPasscode(_x51) {\n return _setPasscode.apply(this, arguments);\n }\n\n return setPasscode;\n }()\n }, {\n key: "removePasscode",\n value: function () {\n var _removePasscode = _asyncToGenerator( /*#__PURE__*/_babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0___default.a.mark(function _callee50() {\n return _babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0___default.a.wrap(function _callee50$(_context50) {\n while (1) {\n switch (_context50.prev = _context50.next) {\n case 0:\n _context50.next = 2;\n return this.protocolService.removeRootKeyWrapper();\n\n case 2:\n _context50.next = 4;\n return this.rewriteItemsKeys();\n\n case 4:\n case "end":\n return _context50.stop();\n }\n }\n }, _callee50, this);\n }));\n\n function removePasscode() {\n return _removePasscode.apply(this, arguments);\n }\n\n return removePasscode;\n }()\n }, {\n key: "changePasscode",\n value: function () {\n var _changePasscode = _asyncToGenerator( /*#__PURE__*/_babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0___default.a.mark(function _callee51(passcode) {\n return _babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0___default.a.wrap(function _callee51$(_context51) {\n while (1) {\n switch (_context51.prev = _context51.next) {\n case 0:\n _context51.next = 2;\n return this.removePasscode();\n\n case 2:\n return _context51.abrupt("return", this.setPasscode(passcode));\n\n case 3:\n case "end":\n return _context51.stop();\n }\n }\n }, _callee51, this);\n }));\n\n function changePasscode(_x52) {\n return _changePasscode.apply(this, arguments);\n }\n\n return changePasscode;\n }()\n }, {\n key: "setStorageEncryptionPolicy",\n value: function () {\n var _setStorageEncryptionPolicy = _asyncToGenerator( /*#__PURE__*/_babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0___default.a.mark(function _callee52(encryptionPolicy) {\n return _babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0___default.a.wrap(function _callee52$(_context52) {\n while (1) {\n switch (_context52.prev = _context52.next) {\n case 0:\n _context52.next = 2;\n return this.storageService.setEncryptionPolicy(encryptionPolicy);\n\n case 2:\n return _context52.abrupt("return", this.protocolService.repersistAllItems());\n\n case 3:\n case "end":\n return _context52.stop();\n }\n }\n }, _callee52, this);\n }));\n\n function setStorageEncryptionPolicy(_x53) {\n return _setStorageEncryptionPolicy.apply(this, arguments);\n }\n\n return setStorageEncryptionPolicy;\n }()\n }, {\n key: "generateUuid",\n value: function () {\n var _generateUuid = _asyncToGenerator( /*#__PURE__*/_babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0___default.a.mark(function _callee53() {\n return _babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0___default.a.wrap(function _callee53$(_context53) {\n while (1) {\n switch (_context53.prev = _context53.next) {\n case 0:\n return _context53.abrupt("return", _Lib_uuid__WEBPACK_IMPORTED_MODULE_4__["Uuid"].GenerateUuid());\n\n case 1:\n case "end":\n return _context53.stop();\n }\n }\n }, _callee53);\n }));\n\n function generateUuid() {\n return _generateUuid.apply(this, arguments);\n }\n\n return generateUuid;\n }()\n /**\n * Dynamically change the device interface, i.e when Desktop wants to override\n * default web interface.\n */\n\n }, {\n key: "changeDeviceInterface",\n value: function () {\n var _changeDeviceInterface = _asyncToGenerator( /*#__PURE__*/_babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0___default.a.mark(function _callee54(deviceInterface) {\n var _iteratorNormalCompletion6, _didIteratorError6, _iteratorError6, _iterator6, _step6, service;\n\n return _babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0___default.a.wrap(function _callee54$(_context54) {\n while (1) {\n switch (_context54.prev = _context54.next) {\n case 0:\n this.deviceInterface = deviceInterface;\n _iteratorNormalCompletion6 = true;\n _didIteratorError6 = false;\n _iteratorError6 = undefined;\n _context54.prev = 4;\n\n for (_iterator6 = this.services[Symbol.iterator](); !(_iteratorNormalCompletion6 = (_step6 = _iterator6.next()).done); _iteratorNormalCompletion6 = true) {\n service = _step6.value;\n\n if (service.deviceInterface) {\n service.deviceInterface = deviceInterface;\n }\n }\n\n _context54.next = 12;\n break;\n\n case 8:\n _context54.prev = 8;\n _context54.t0 = _context54["catch"](4);\n _didIteratorError6 = true;\n _iteratorError6 = _context54.t0;\n\n case 12:\n _context54.prev = 12;\n _context54.prev = 13;\n\n if (!_iteratorNormalCompletion6 && _iterator6.return != null) {\n _iterator6.return();\n }\n\n case 15:\n _context54.prev = 15;\n\n if (!_didIteratorError6) {\n _context54.next = 18;\n break;\n }\n\n throw _iteratorError6;\n\n case 18:\n return _context54.finish(15);\n\n case 19:\n return _context54.finish(12);\n\n case 20:\n case "end":\n return _context54.stop();\n }\n }\n }, _callee54, this, [[4, 8, 12, 20], [13,, 15, 19]]);\n }));\n\n function changeDeviceInterface(_x54) {\n return _changeDeviceInterface.apply(this, arguments);\n }\n\n return changeDeviceInterface;\n }()\n }, {\n key: "constructServices",\n value: function constructServices() {\n this.createModelManager();\n this.createItemManager();\n this.createStorageManager();\n this.createProtocolService();\n var encryptionDelegate = {\n payloadByEncryptingPayload: this.protocolService.payloadByEncryptingPayload.bind(this.protocolService),\n payloadByDecryptingPayload: this.protocolService.payloadByDecryptingPayload.bind(this.protocolService)\n };\n this.storageService.encryptionDelegate = encryptionDelegate;\n this.createChallengeService();\n this.createMigrationService();\n this.createAlertManager();\n this.createHttpManager();\n this.createApiService();\n this.createSessionManager();\n this.createSyncManager();\n this.createSingletonManager();\n this.createComponentManager();\n this.createPrivilegesService();\n this.createHistoryManager();\n this.createActionsManager();\n }\n }, {\n key: "clearServices",\n value: function clearServices() {\n this.migrationService = undefined;\n this.alertService = undefined;\n this.httpService = undefined;\n this.modelManager = undefined;\n this.protocolService = undefined;\n this.storageService = undefined;\n this.apiService = undefined;\n this.sessionManager = undefined;\n this.syncService = undefined;\n this.challengeService = undefined;\n this.singletonManager = undefined;\n this.componentManager = undefined;\n this.privilegesService = undefined;\n this.actionsManager = undefined;\n this.historyManager = undefined;\n this.itemManager = undefined;\n this.services = [];\n }\n }, {\n key: "createMigrationService",\n value: function createMigrationService() {\n this.migrationService = new _services__WEBPACK_IMPORTED_MODULE_13__["SNMigrationService"]({\n protocolService: this.protocolService,\n deviceInterface: this.deviceInterface,\n storageService: this.storageService,\n challengeService: this.challengeService,\n itemManager: this.itemManager,\n environment: this.environment,\n namespace: this.namespace\n });\n this.services.push(this.migrationService);\n }\n }, {\n key: "createAlertManager",\n value: function createAlertManager() {\n if (this.shouldSkipClass(_services__WEBPACK_IMPORTED_MODULE_13__["SNAlertService"])) {\n return;\n }\n\n this.alertService = new (this.getClass(_services__WEBPACK_IMPORTED_MODULE_13__["SNAlertService"]))(this.deviceInterface);\n this.services.push(this.alertService);\n }\n }, {\n key: "createApiService",\n value: function createApiService() {\n this.apiService = new _services__WEBPACK_IMPORTED_MODULE_13__["SNApiService"](this.httpService, this.storageService);\n this.services.push(this.apiService);\n }\n }, {\n key: "createItemManager",\n value: function createItemManager() {\n this.itemManager = new _services__WEBPACK_IMPORTED_MODULE_13__["ItemManager"](this.modelManager);\n this.services.push(this.itemManager);\n }\n }, {\n key: "createComponentManager",\n value: function createComponentManager() {\n if (this.shouldSkipClass(_services__WEBPACK_IMPORTED_MODULE_13__["SNComponentManager"])) {\n return;\n }\n\n this.componentManager = new _services__WEBPACK_IMPORTED_MODULE_13__["SNComponentManager"](this.itemManager, this.syncService, this.alertService, this.environment, this.platform, this.deviceInterface.timeout);\n this.services.push(this.componentManager);\n }\n }, {\n key: "createHttpManager",\n value: function createHttpManager() {\n this.httpService = new _services__WEBPACK_IMPORTED_MODULE_13__["SNHttpService"]();\n this.services.push(this.httpService);\n }\n }, {\n key: "createModelManager",\n value: function createModelManager() {\n this.modelManager = new _services__WEBPACK_IMPORTED_MODULE_13__["PayloadManager"]();\n this.services.push(this.modelManager);\n }\n }, {\n key: "createSingletonManager",\n value: function createSingletonManager() {\n this.singletonManager = new _services__WEBPACK_IMPORTED_MODULE_13__["SNSingletonManager"](this.itemManager, this.syncService);\n this.services.push(this.singletonManager);\n }\n }, {\n key: "createStorageManager",\n value: function createStorageManager() {\n this.storageService = new _services__WEBPACK_IMPORTED_MODULE_13__["SNStorageService"](this.deviceInterface, this.namespace);\n this.services.push(this.storageService);\n }\n }, {\n key: "createProtocolService",\n value: function createProtocolService() {\n var _this6 = this;\n\n this.protocolService = new _services__WEBPACK_IMPORTED_MODULE_13__["SNProtocolService"](this.itemManager, this.modelManager, this.deviceInterface, this.storageService, this.crypto);\n this.protocolService.onKeyStatusChange( /*#__PURE__*/_asyncToGenerator( /*#__PURE__*/_babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0___default.a.mark(function _callee55() {\n return _babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0___default.a.wrap(function _callee55$(_context55) {\n while (1) {\n switch (_context55.prev = _context55.next) {\n case 0:\n _context55.next = 2;\n return _this6.notifyEvent(_Lib_events__WEBPACK_IMPORTED_MODULE_3__["ApplicationEvent"].KeyStatusChanged);\n\n case 2:\n case "end":\n return _context55.stop();\n }\n }\n }, _callee55);\n })));\n this.services.push(this.protocolService);\n }\n }, {\n key: "createSessionManager",\n value: function createSessionManager() {\n this.sessionManager = new _services__WEBPACK_IMPORTED_MODULE_13__["SNSessionManager"](this.storageService, this.apiService, this.alertService, this.protocolService);\n this.services.push(this.sessionManager);\n }\n }, {\n key: "createSyncManager",\n value: function createSyncManager() {\n var _this7 = this;\n\n this.syncService = new _services__WEBPACK_IMPORTED_MODULE_13__["SNSyncService"](this.itemManager, this.sessionManager, this.protocolService, this.storageService, this.modelManager, this.apiService, this.deviceInterface.interval);\n\n var syncEventCallback = /*#__PURE__*/function () {\n var _ref13 = _asyncToGenerator( /*#__PURE__*/_babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0___default.a.mark(function _callee56(eventName) {\n var appEvent;\n return _babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0___default.a.wrap(function _callee56$(_context56) {\n while (1) {\n switch (_context56.prev = _context56.next) {\n case 0:\n appEvent = Object(_Lib_events__WEBPACK_IMPORTED_MODULE_3__["applicationEventForSyncEvent"])(eventName);\n\n if (!appEvent) {\n _context56.next = 4;\n break;\n }\n\n _context56.next = 4;\n return _this7.notifyEvent(appEvent);\n\n case 4:\n _context56.next = 6;\n return _this7.protocolService.onSyncEvent(eventName);\n\n case 6:\n case "end":\n return _context56.stop();\n }\n }\n }, _callee56);\n }));\n\n return function syncEventCallback(_x55) {\n return _ref13.apply(this, arguments);\n };\n }();\n\n var uninstall = this.syncService.addEventObserver(syncEventCallback);\n this.serviceObservers.push(uninstall);\n this.services.push(this.syncService);\n }\n }, {\n key: "createChallengeService",\n value: function createChallengeService() {\n this.challengeService = new _services__WEBPACK_IMPORTED_MODULE_13__["ChallengeService"](this.storageService, this.protocolService);\n this.services.push(this.challengeService);\n }\n }, {\n key: "createPrivilegesService",\n value: function createPrivilegesService() {\n this.privilegesService = new _services__WEBPACK_IMPORTED_MODULE_13__["SNPrivilegesService"](this.itemManager, this.syncService, this.singletonManager, this.protocolService, this.storageService, this.sessionManager);\n this.services.push(this.privilegesService);\n }\n }, {\n key: "createHistoryManager",\n value: function createHistoryManager() {\n this.historyManager = new _services__WEBPACK_IMPORTED_MODULE_13__["SNHistoryManager"](this.itemManager, this.storageService, [_Models_content_types__WEBPACK_IMPORTED_MODULE_8__["ContentType"].Note], this.deviceInterface.timeout);\n this.services.push(this.historyManager);\n }\n }, {\n key: "createActionsManager",\n value: function createActionsManager() {\n this.actionsManager = new _services__WEBPACK_IMPORTED_MODULE_13__["SNActionsService"](this.itemManager, this.alertService, this.deviceInterface, this.httpService, this.modelManager, this.protocolService, this.syncService);\n this.services.push(this.actionsManager);\n }\n }, {\n key: "shouldSkipClass",\n value: function shouldSkipClass(classCandidate) {\n return this.skipClasses && this.skipClasses.includes(classCandidate);\n }\n }, {\n key: "getClass",\n value: function getClass(base) {\n var swapClass = this.swapClasses && this.swapClasses.find(function (candidate) {\n return candidate.swap === base;\n });\n\n if (swapClass) {\n return swapClass.with;\n } else {\n return base;\n }\n }\n }]);\n\n return SNApplication;\n}();//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9saWIvYXBwbGljYXRpb24udHMuanMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly9TTkxpYnJhcnkvLi9saWIvYXBwbGljYXRpb24udHM/ZDliZSJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBVdWlkcyB9IGZyb20gJ0BNb2RlbHMvZnVuY3Rpb25zJztcbmltcG9ydCB7IEFwcGxpY2F0aW9uU3RhZ2UgfSBmcm9tICdATGliL3N0YWdlcyc7XG5pbXBvcnQgeyBBcHBsaWNhdGlvbkV2ZW50LCBhcHBsaWNhdGlvbkV2ZW50Rm9yU3luY0V2ZW50IH0gZnJvbSAnQExpYi9ldmVudHMnO1xuaW1wb3J0IHsgVXVpZCB9IGZyb20gJ0BMaWIvdXVpZCc7XG5pbXBvcnQgeyBNdXRhdGlvblR5cGUgfSBmcm9tICdATW9kZWxzL2NvcmUvaXRlbSc7XG5pbXBvcnQgeyBDaGFsbGVuZ2UsIENoYWxsZW5nZVR5cGUsIENoYWxsZW5nZVJlYXNvbiB9IGZyb20gJy4vY2hhbGxlbmdlcyc7XG5pbXBvcnQgeyByZW1vdmVGcm9tQXJyYXksIGlzTnVsbE9yVW5kZWZpbmVkLCBpc1N0cmluZywgc2xlZXAgfSBmcm9tICdATGliL3V0aWxzJztcbmltcG9ydCB7IENvbnRlbnRUeXBlIH0gZnJvbSAnQE1vZGVscy9jb250ZW50X3R5cGVzJztcbmltcG9ydCB7IENvcHlQYXlsb2FkLCBDcmVhdGVNYXhQYXlsb2FkRnJvbUFueU9iamVjdCB9IGZyb20gJ0BQYXlsb2Fkcy9nZW5lcmF0b3InO1xuaW1wb3J0IHsgUGF5bG9hZFNvdXJjZSB9IGZyb20gJ0BQYXlsb2Fkcy9zb3VyY2VzJztcbmltcG9ydCB7IENyZWF0ZUl0ZW1Gcm9tUGF5bG9hZCB9IGZyb20gJ0BNb2RlbHMvZ2VuZXJhdG9yJztcbmltcG9ydCB7IFN0b3JhZ2VQZXJzaXN0ZW5jZVBvbGljaWVzIH0gZnJvbSAnQFNlcnZpY2VzL3N0b3JhZ2Vfc2VydmljZSc7XG5pbXBvcnQgeyBTTk1pZ3JhdGlvblNlcnZpY2UsIFNOQWN0aW9uc1NlcnZpY2UsIFNOQXBpU2VydmljZSwgUGF5bG9hZE1hbmFnZXIsIFNOUHJvdG9jb2xTZXJ2aWNlLCBTTlByaXZpbGVnZXNTZXJ2aWNlLCBTTkhpc3RvcnlNYW5hZ2VyLCBTTkFsZXJ0U2VydmljZSwgU05TZXNzaW9uTWFuYWdlciwgU05Db21wb25lbnRNYW5hZ2VyLCBTTkh0dHBTZXJ2aWNlLCBTTlNpbmdsZXRvbk1hbmFnZXIsIFNOU3RvcmFnZVNlcnZpY2UsIFNOU3luY1NlcnZpY2UsIENoYWxsZW5nZVNlcnZpY2UsIFN5bmNNb2RlcywgU3luY1F1ZXVlU3RyYXRlZ3ksIEl0ZW1NYW5hZ2VyIH0gZnJvbSAnLi9zZXJ2aWNlcyc7XG5pbXBvcnQgeyBBUElfTUVTU0FHRV9HRU5FUklDX1NZTkNfRkFJTCwgSW5zdWZmaWNpZW50UGFzc3dvcmRNZXNzYWdlIH0gZnJvbSAnLi9zZXJ2aWNlcy9hcGkvbWVzc2FnZXMnO1xuaW1wb3J0IHsgTUlOSU1VTV9QQVNTV09SRF9MRU5HVEggfSBmcm9tICcuL3NlcnZpY2VzL2FwaS9zZXNzaW9uX21hbmFnZXInO1xuLyoqIEhvdyBvZnRlbiB0byBhdXRvbWF0aWNhbGx5IHN5bmMsIGluIG1pbGxpc2Vjb25kcyAqL1xuY29uc3QgREVGQVVMVF9BVVRPX1NZTkNfSU5URVJWQUwgPSAzMDAwMDtcbi8qKiBUaGUgbWFpbiBlbnRyeXBvaW50IG9mIGFuIGFwcGxpY2F0aW9uLiAqL1xuZXhwb3J0IGNsYXNzIFNOQXBwbGljYXRpb24ge1xuICAgIC8qKlxuICAgICAqIEBwYXJhbSBlbnZpcm9ubWVudCBUaGUgRW52aXJvbm1lbnQgdGhhdCBpZGVudGlmaWVzIHlvdXIgYXBwbGljYXRpb24uXG4gICAgICogQHBhcmFtIHBsYXRmb3JtIFRoZSBQbGF0Zm9ybSB0aGF0IGlkZW50aWZpZXMgeW91ciBhcHBsaWNhdGlvbi5cbiAgICAgKiBAcGFyYW0gbmFtZXNwYWNlIEEgdW5pcXVlIGlkZW50aWZpZXIgdG8gbmFtZXNwYWNlIHN0b3JhZ2UgYW5kXG4gICAgICogIG90aGVyIHBlcnNpc3RlbnQgcHJvcGVydGllcy4gRGVmYXVsdHMgdG8gZW1wdHkgc3RyaW5nLlxuICAgICAqIEBwYXJhbSBjcnlwdG8gVGhlIHBsYXRmb3JtLWRlcGVuZGVudCBpbXBsZW1lbnRhdGlvbiBvZiBTTlB1cmVDcnlwdG8gdG8gdXNlLlxuICAgICAqIFdlYiB1c2VzIFNOV2ViQ3J5cHRvLCBtb2JpbGUgdXNlcyBTTlJlYWN0TmF0aXZlQ3J5cHRvLlxuICAgICAqIEBwYXJhbSBzd2FwQ2xhc3NlcyBHaXZlcyBjb25zdW1lcnMgdGhlIGFiaWxpdHkgdG8gcHJvdmlkZSB0aGVpciBvd24gY3VzdG9tXG4gICAgICogc3ViY2xhc3MgZm9yIGEgc2VydmljZS4gc3dhcENsYXNzZXMgc2hvdWxkIGJlIGFuIGFycmF5ICBvZiBrZXkvdmFsdWUgcGFpcnNcbiAgICAgKiBjb25zaXN0aW5nIG9mIGtleXMgJ3N3YXAnIGFuZCAnd2l0aCcuICAnc3dhcCcgaXMgdGhlIGJhc2UgY2xhc3MgeW91IHdpc2ggdG8gcmVwbGFjZSxcbiAgICAgKiBhbmQgJ3dpdGgnICBpcyB0aGUgY3VzdG9tIHN1YmNsYXNzIHRvIHVzZS5cbiAgICAgKiBAcGFyYW0gc2tpcENsYXNzZXMgQW4gYXJyYXkgb2YgY2xhc3NlcyB0byBza2lwIG1ha2luZyBzZXJ2aWNlcyBmb3IuXG4gICAgICovXG4gICAgY29uc3RydWN0b3IoZW52aXJvbm1lbnQsIHBsYXRmb3JtLCBkZXZpY2VJbnRlcmZhY2UsIGNyeXB0bywgbmFtZXNwYWNlLCBzd2FwQ2xhc3Nlcywgc2tpcENsYXNzZXMpIHtcbiAgICAgICAgdGhpcy5ldmVudEhhbmRsZXJzID0gW107XG4gICAgICAgIHRoaXMuc2VydmljZXMgPSBbXTtcbiAgICAgICAgdGhpcy5zdHJlYW1SZW1vdmVycyA9IFtdO1xuICAgICAgICB0aGlzLnNlcnZpY2VPYnNlcnZlcnMgPSBbXTtcbiAgICAgICAgdGhpcy5tYW5hZ2VkU3Vic2NyaWJlcnMgPSBbXTtcbiAgICAgICAgLyoqIFRydWUgaWYgdGhlIHJlc3VsdCBvZiBkZXZpY2VJbnRlcmZhY2Uub3BlbkRhdGFiYXNlIHlpZWxkcyBhIG5ldyBkYXRhYmFzZSBiZWluZyBjcmVhdGVkICovXG4gICAgICAgIHRoaXMuY3JlYXRlZE5ld0RhdGFiYXNlID0gZmFsc2U7XG4gICAgICAgIC8qKiBUcnVlIGlmIHRoZSBhcHBsaWNhdGlvbiBoYXMgc3RhcnRlZCAoYnV0IG5vdCBuZWNlc3NhcmlseSBsYXVuY2hlZCkgKi9cbiAgICAgICAgdGhpcy5zdGFydGVkID0gZmFsc2U7XG4gICAgICAgIC8qKiBUcnVlIGlmIHRoZSBhcHBsaWNhdGlvbiBoYXMgbGF1bmNoZWQgKi9cbiAgICAgICAgdGhpcy5sYXVuY2hlZCA9IGZhbHNlO1xuICAgICAgICAvKiogV2hldGhlciB0aGUgYXBwbGljYXRpb24gaGFzIGJlZW4gZGVzdHJveWVkIHZpYSAuZGVpbml0KCkgKi9cbiAgICAgICAgdGhpcy5kZWFsbG9jZWQgPSBmYWxzZTtcbiAgICAgICAgaWYgKCFkZXZpY2VJbnRlcmZhY2UpIHtcbiAgICAgICAgICAgIHRocm93ICdEZXZpY2UgSW50ZXJmYWNlIG11c3QgYmUgc3VwcGxpZWQuJztcbiAgICAgICAgfVxuICAgICAgICBpZiAoIWVudmlyb25tZW50KSB7XG4gICAgICAgICAgICB0aHJvdyAnRW52aXJvbm1lbnQgbXVzdCBiZSBzdXBwbGllZCB3aGVuIGNyZWF0aW5nIGFuIGFwcGxpY2F0aW9uLic7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKCFwbGF0Zm9ybSkge1xuICAgICAgICAgICAgdGhyb3cgJ1BsYXRmb3JtIG11c3QgYmUgc3VwcGxpZWQgd2hlbiBjcmVhdGluZyBhbiBhcHBsaWNhdGlvbi4nO1xuICAgICAgICB9XG4gICAgICAgIGlmICghY3J5cHRvKSB7XG4gICAgICAgICAgICB0aHJvdyAnQ3J5cHRvIGhhcyB0byBiZSBzdXBwbGllZCB3aGVuIGNyZWF0aW5nIGFuIGFwcGxpY2F0aW9uLic7XG4gICAgICAgIH1cbiAgICAgICAgdGhpcy5lbnZpcm9ubWVudCA9IGVudmlyb25tZW50O1xuICAgICAgICB0aGlzLnBsYXRmb3JtID0gcGxhdGZvcm07XG4gICAgICAgIHRoaXMubmFtZXNwYWNlID0gbmFtZXNwYWNlIHx8ICcnO1xuICAgICAgICB0aGlzLmRldmljZUludGVyZmFjZSA9IGRldmljZUludGVyZmFjZTtcbiAgICAgICAgdGhpcy5jcnlwdG8gPSBjcnlwdG87XG4gICAgICAgIHRoaXMuc3dhcENsYXNzZXMgPSBzd2FwQ2xhc3NlcztcbiAgICAgICAgdGhpcy5za2lwQ2xhc3NlcyA9IHNraXBDbGFzc2VzO1xuICAgICAgICB0aGlzLmNvbnN0cnVjdFNlcnZpY2VzKCk7XG4gICAgfVxuICAgIC8qKlxuICAgICAqIFRoZSBmaXJzdCB0aGluZyBjb25zdW1lcnMgc2hvdWxkIGNhbGwgd2hlbiBzdGFydGluZyB0aGVpciBhcHAuXG4gICAgICogVGhpcyBmdW5jdGlvbiB3aWxsIGxvYWQgYWxsIHNlcnZpY2VzIGluIHRoZWlyIGNvcnJlY3Qgb3JkZXIuXG4gICAgICovXG4gICAgYXN5bmMgcHJlcGFyZUZvckxhdW5jaChjYWxsYmFjaykge1xuICAgICAgICB0aGlzLnNldExhdW5jaENhbGxiYWNrKGNhbGxiYWNrKTtcbiAgICAgICAgY29uc3QgZGF0YWJhc2VSZXN1bHQgPSBhd2FpdCB0aGlzLmRldmljZUludGVyZmFjZS5vcGVuRGF0YWJhc2UoKVxuICAgICAgICAgICAgLmNhdGNoKChlcnJvcikgPT4ge1xuICAgICAgICAgICAgdGhpcy5ub3RpZnlFdmVudChBcHBsaWNhdGlvbkV2ZW50LkxvY2FsRGF0YWJhc2VSZWFkRXJyb3IsIGVycm9yKTtcbiAgICAgICAgICAgIHJldHVybiB1bmRlZmluZWQ7XG4gICAgICAgIH0pO1xuICAgICAgICB0aGlzLmNyZWF0ZWROZXdEYXRhYmFzZSA9IGRhdGFiYXNlUmVzdWx0Py5pc05ld0RhdGFiYXNlIHx8IGZhbHNlO1xuICAgICAgICBhd2FpdCB0aGlzLm1pZ3JhdGlvblNlcnZpY2UuaW5pdGlhbGl6ZSgpO1xuICAgICAgICBhd2FpdCB0aGlzLmhhbmRsZVN0YWdlKEFwcGxpY2F0aW9uU3RhZ2UuUHJlcGFyaW5nRm9yTGF1bmNoXzApO1xuICAgICAgICBhd2FpdCB0aGlzLnN0b3JhZ2VTZXJ2aWNlLmluaXRpYWxpemVGcm9tRGlzaygpO1xuICAgICAgICBhd2FpdCB0aGlzLnByb3RvY29sU2VydmljZS5pbml0aWFsaXplKCk7XG4gICAgICAgIGF3YWl0IHRoaXMuaGFuZGxlU3RhZ2UoQXBwbGljYXRpb25TdGFnZS5SZWFkeUZvckxhdW5jaF8wNSk7XG4gICAgICAgIHRoaXMuc3RhcnRlZCA9IHRydWU7XG4gICAgICAgIGF3YWl0IHRoaXMubm90aWZ5RXZlbnQoQXBwbGljYXRpb25FdmVudC5TdGFydGVkKTtcbiAgICB9XG4gICAgc2V0TGF1bmNoQ2FsbGJhY2soY2FsbGJhY2spIHtcbiAgICAgICAgdGhpcy5jaGFsbGVuZ2VTZXJ2aWNlLnNlbmRDaGFsbGVuZ2UgPSBjYWxsYmFjay5yZWNlaXZlQ2hhbGxlbmdlO1xuICAgIH1cbiAgICAvKipcbiAgICAgKiBSdW5zIG1pZ3JhdGlvbnMsIGhhbmRsZXMgZGV2aWNlIGF1dGhlbnRpY2F0aW9uLCB1bmxvY2tzIGFwcGxpY2F0aW9uLCBhbmRcbiAgICAgKiBpc3N1ZXMgYSBjYWxsYmFjayBpZiBhIGRldmljZSBhY3RpdmF0aW9uIHJlcXVpcmVzIHVzZXIgaW5wdXRcbiAgICAgKiAoaS5lIGxvY2FsIHBhc3Njb2RlIG9yIGZpbmdlcnByaW50KS5cbiAgICAgKiBAcGFyYW0gYXdhaXREYXRhYmFzZUxvYWRcbiAgICAgKiBPcHRpb24gdG8gYXdhaXQgZGF0YWJhc2UgbG9hZCBiZWZvcmUgbWFya2luZyB0aGUgYXBwIGFzIHJlYWR5LlxuICAgICAqL1xuICAgIGFzeW5jIGxhdW5jaChhd2FpdERhdGFiYXNlTG9hZCA9IGZhbHNlKSB7XG4gICAgICAgIHRoaXMubGF1bmNoZWQgPSBmYWxzZTtcbiAgICAgICAgY29uc3QgbGF1bmNoQ2hhbGxlbmdlID0gYXdhaXQgdGhpcy5jaGFsbGVuZ2VTZXJ2aWNlLmdldExhdW5jaENoYWxsZW5nZSgpO1xuICAgICAgICBpZiAobGF1bmNoQ2hhbGxlbmdlKSB7XG4gICAgICAgICAgICBjb25zdCByZXNwb25zZSA9IGF3YWl0IHRoaXMuY2hhbGxlbmdlU2VydmljZS5wcm9tcHRGb3JDaGFsbGVuZ2VSZXNwb25zZShsYXVuY2hDaGFsbGVuZ2UpO1xuICAgICAgICAgICAgaWYgKCFyZXNwb25zZSkge1xuICAgICAgICAgICAgICAgIHRocm93IEVycm9yKCdMYXVuY2ggY2hhbGxlbmdlIHdhcyBjYW5jZWxsZWQuJyk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBhd2FpdCB0aGlzLmhhbmRsZUxhdW5jaENoYWxsZW5nZVJlc3BvbnNlKHJlc3BvbnNlKTtcbiAgICAgICAgfVxuICAgICAgICBpZiAodGhpcy5zdG9yYWdlU2VydmljZS5pc1N0b3JhZ2VXcmFwcGVkKCkpIHtcbiAgICAgICAgICAgIGF3YWl0IHRoaXMuc3RvcmFnZVNlcnZpY2UuZGVjcnlwdFN0b3JhZ2UoKTtcbiAgICAgICAgfVxuICAgICAgICBhd2FpdCB0aGlzLmhhbmRsZVN0YWdlKEFwcGxpY2F0aW9uU3RhZ2UuU3RvcmFnZURlY3J5cHRlZF8wOSk7XG4gICAgICAgIGF3YWl0IHRoaXMuYXBpU2VydmljZS5sb2FkSG9zdCgpO1xuICAgICAgICBhd2FpdCB0aGlzLnNlc3Npb25NYW5hZ2VyLmluaXRpYWxpemVGcm9tRGlzaygpO1xuICAgICAgICB0aGlzLmhpc3RvcnlNYW5hZ2VyLmluaXRpYWxpemVGcm9tRGlzaygpO1xuICAgICAgICB0aGlzLmxhdW5jaGVkID0gdHJ1ZTtcbiAgICAgICAgYXdhaXQgdGhpcy5ub3RpZnlFdmVudChBcHBsaWNhdGlvbkV2ZW50LkxhdW5jaGVkKTtcbiAgICAgICAgYXdhaXQgdGhpcy5oYW5kbGVTdGFnZShBcHBsaWNhdGlvblN0YWdlLkxhdW5jaGVkXzEwKTtcbiAgICAgICAgY29uc3QgZGF0YWJhc2VQYXlsb2FkcyA9IGF3YWl0IHRoaXMuc3luY1NlcnZpY2UuZ2V0RGF0YWJhc2VQYXlsb2FkcygpO1xuICAgICAgICBhd2FpdCB0aGlzLmhhbmRsZVN0YWdlKEFwcGxpY2F0aW9uU3RhZ2UuTG9hZGluZ0RhdGFiYXNlXzExKTtcbiAgICAgICAgaWYgKHRoaXMuY3JlYXRlZE5ld0RhdGFiYXNlKSB7XG4gICAgICAgICAgICBhd2FpdCB0aGlzLnN5bmNTZXJ2aWNlLm9uTmV3RGF0YWJhc2VDcmVhdGVkKCk7XG4gICAgICAgIH1cbiAgICAgICAgLyoqXG4gICAgICAgICogV2UgZG9uJ3Qgd2FudCB0byBhd2FpdCB0aGlzLCBhcyB3ZSB3YW50IHRvIGJlZ2luIGFsbG93aW5nIHRoZSBhcHAgdG8gZnVuY3Rpb25cbiAgICAgICAgKiBiZWZvcmUgbG9jYWwgZGF0YSBoYXMgYmVlbiBsb2FkZWQgZnVsbHkuIFdlIGF3YWl0IG9ubHkgaW5pdGlhbFxuICAgICAgICAqIGBnZXREYXRhYmFzZVBheWxvYWRzYCB0byBsb2NrIGluIG9uIGRhdGFiYXNlIHN0YXRlLlxuICAgICAgICAqL1xuICAgICAgICBjb25zdCBsb2FkUHJvbWlzZSA9IHRoaXMuc3luY1NlcnZpY2UubG9hZERhdGFiYXNlUGF5bG9hZHMoZGF0YWJhc2VQYXlsb2FkcylcbiAgICAgICAgICAgIC50aGVuKGFzeW5jICgpID0+IHtcbiAgICAgICAgICAgIGlmICh0aGlzLmRlYWxsb2NlZCkge1xuICAgICAgICAgICAgICAgIHRocm93ICdBcHBsaWNhdGlvbiBoYXMgYmVlbiBkZXN0cm95ZWQuJztcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGF3YWl0IHRoaXMuaGFuZGxlU3RhZ2UoQXBwbGljYXRpb25TdGFnZS5Mb2FkZWREYXRhYmFzZV8xMik7XG4gICAgICAgICAgICB0aGlzLmJlZ2luQXV0b1N5bmNUaW1lcigpO1xuICAgICAgICAgICAgcmV0dXJuIHRoaXMuc3luY1NlcnZpY2Uuc3luYyh7XG4gICAgICAgICAgICAgICAgbW9kZTogU3luY01vZGVzLkRvd25sb2FkRmlyc3RcbiAgICAgICAgICAgIH0pO1xuICAgICAgICB9KTtcbiAgICAgICAgaWYgKGF3YWl0RGF0YWJhc2VMb2FkKSB7XG4gICAgICAgICAgICBhd2FpdCBsb2FkUHJvbWlzZTtcbiAgICAgICAgfVxuICAgIH1cbiAgICBhc3luYyBoYW5kbGVMYXVuY2hDaGFsbGVuZ2VSZXNwb25zZShyZXNwb25zZSkge1xuICAgICAgICBpZiAocmVzcG9uc2UuY2hhbGxlbmdlLnR5cGVzLmluY2x1ZGVzKENoYWxsZW5nZVR5cGUuTG9jYWxQYXNzY29kZSkpIHtcbiAgICAgICAgICAgIGxldCB3cmFwcGluZ0tleSA9IHJlc3BvbnNlLmFydGlmYWN0cy53cmFwcGluZ0tleTtcbiAgICAgICAgICAgIGlmICghd3JhcHBpbmdLZXkpIHtcbiAgICAgICAgICAgICAgICBjb25zdCB2YWx1ZSA9IHJlc3BvbnNlLmdldFZhbHVlRm9yVHlwZShDaGFsbGVuZ2VUeXBlLkxvY2FsUGFzc2NvZGUpO1xuICAgICAgICAgICAgICAgIHdyYXBwaW5nS2V5ID0gYXdhaXQgdGhpcy5wcm90b2NvbFNlcnZpY2UuY29tcHV0ZVdyYXBwaW5nS2V5KHZhbHVlLnZhbHVlKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGF3YWl0IHRoaXMucHJvdG9jb2xTZXJ2aWNlLnVud3JhcFJvb3RLZXkod3JhcHBpbmdLZXkpO1xuICAgICAgICB9XG4gICAgfVxuICAgIGJlZ2luQXV0b1N5bmNUaW1lcigpIHtcbiAgICAgICAgdGhpcy5hdXRvU3luY0ludGVydmFsID0gdGhpcy5kZXZpY2VJbnRlcmZhY2UuaW50ZXJ2YWwoKCkgPT4ge1xuICAgICAgICAgICAgdGhpcy5zeW5jU2VydmljZS5sb2coJ1N5bmNpbmcgZnJvbSBhdXRvc3luYycpO1xuICAgICAgICAgICAgdGhpcy5zeW5jKCk7XG4gICAgICAgIH0sIERFRkFVTFRfQVVUT19TWU5DX0lOVEVSVkFMKTtcbiAgICB9XG4gICAgYXN5bmMgaGFuZGxlU3RhZ2Uoc3RhZ2UpIHtcbiAgICAgICAgZm9yIChjb25zdCBzZXJ2aWNlIG9mIHRoaXMuc2VydmljZXMpIHtcbiAgICAgICAgICAgIGF3YWl0IHNlcnZpY2UuaGFuZGxlQXBwbGljYXRpb25TdGFnZShzdGFnZSk7XG4gICAgICAgIH1cbiAgICB9XG4gICAgLyoqXG4gICAgICogQHBhcmFtIHNpbmdsZUV2ZW50IFdoZXRoZXIgdG8gb25seSBsaXN0ZW4gZm9yIGEgcGFydGljdWxhciBldmVudC5cbiAgICAgKi9cbiAgICBhZGRFdmVudE9ic2VydmVyKGNhbGxiYWNrLCBzaW5nbGVFdmVudCkge1xuICAgICAgICBjb25zdCBvYnNlcnZlciA9IHsgY2FsbGJhY2ssIHNpbmdsZUV2ZW50IH07XG4gICAgICAgIHRoaXMuZXZlbnRIYW5kbGVycy5wdXNoKG9ic2VydmVyKTtcbiAgICAgICAgcmV0dXJuICgpID0+IHtcbiAgICAgICAgICAgIHJlbW92ZUZyb21BcnJheSh0aGlzLmV2ZW50SGFuZGxlcnMsIG9ic2VydmVyKTtcbiAgICAgICAgfTtcbiAgICB9XG4gICAgYWRkU2luZ2xlRXZlbnRPYnNlcnZlcihldmVudCwgY2FsbGJhY2spIHtcbiAgICAgICAgY29uc3QgZmlsdGVyZWRDYWxsYmFjayA9IGFzeW5jIChmaXJlZEV2ZW50KSA9PiB7XG4gICAgICAgICAgICBpZiAoZmlyZWRFdmVudCA9PT0gZXZlbnQpIHtcbiAgICAgICAgICAgICAgICBjYWxsYmFjayhldmVudCk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH07XG4gICAgICAgIHJldHVybiB0aGlzLmFkZEV2ZW50T2JzZXJ2ZXIoZmlsdGVyZWRDYWxsYmFjaywgZXZlbnQpO1xuICAgIH1cbiAgICBhc3luYyBub3RpZnlFdmVudChldmVudCwgZGF0YSkge1xuICAgICAgICBmb3IgKGNvbnN0IG9ic2VydmVyIG9mIHRoaXMuZXZlbnRIYW5kbGVycy5zbGljZSgpKSB7XG4gICAgICAgICAgICBpZiAob2JzZXJ2ZXIuc2luZ2xlRXZlbnQgJiYgb2JzZXJ2ZXIuc2luZ2xlRXZlbnQgPT09IGV2ZW50KSB7XG4gICAgICAgICAgICAgICAgYXdhaXQgb2JzZXJ2ZXIuY2FsbGJhY2soZXZlbnQsIGRhdGEgfHwge30pO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgZWxzZSBpZiAoIW9ic2VydmVyLnNpbmdsZUV2ZW50KSB7XG4gICAgICAgICAgICAgICAgYXdhaXQgb2JzZXJ2ZXIuY2FsbGJhY2soZXZlbnQsIGRhdGEgfHwge30pO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIHRoaXMubWlncmF0aW9uU2VydmljZS5oYW5kbGVBcHBsaWNhdGlvbkV2ZW50KGV2ZW50KTtcbiAgICB9XG4gICAgLyoqXG4gICAgICogV2hldGhlciB0aGUgbG9jYWwgZGF0YWJhc2UgaGFzIGNvbXBsZXRlZCBsb2FkaW5nIGxvY2FsIGl0ZW1zLlxuICAgICAqL1xuICAgIGlzRGF0YWJhc2VMb2FkZWQoKSB7XG4gICAgICAgIHJldHVybiB0aGlzLnN5bmNTZXJ2aWNlLmlzRGF0YWJhc2VMb2FkZWQoKTtcbiAgICB9XG4gICAgYXN5bmMgc2F2ZVBheWxvYWQocGF5bG9hZCkge1xuICAgICAgICBjb25zdCBkaXJ0aWVkID0gQ29weVBheWxvYWQocGF5bG9hZCwge1xuICAgICAgICAgICAgZGlydHk6IHRydWUsXG4gICAgICAgICAgICBkaXJ0aWVkRGF0ZTogbmV3IERhdGUoKVxuICAgICAgICB9KTtcbiAgICAgICAgYXdhaXQgdGhpcy5tb2RlbE1hbmFnZXIuZW1pdFBheWxvYWQoZGlydGllZCwgUGF5bG9hZFNvdXJjZS5Mb2NhbENoYW5nZWQpO1xuICAgICAgICBhd2FpdCB0aGlzLnN5bmNTZXJ2aWNlLnN5bmMoKTtcbiAgICB9XG4gICAgLyoqXG4gICAgICogRmluZHMgYW4gaXRlbSBieSBVVUlELlxuICAgICAqL1xuICAgIGZpbmRJdGVtKHV1aWQpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuaXRlbU1hbmFnZXIuZmluZEl0ZW0odXVpZCk7XG4gICAgfVxuICAgIC8qKlxuICAgICAqIFJldHVybnMgYWxsIGl0ZW1zLlxuICAgICAqL1xuICAgIGFsbEl0ZW1zKCkge1xuICAgICAgICByZXR1cm4gdGhpcy5pdGVtTWFuYWdlci5pdGVtcztcbiAgICB9XG4gICAgLyoqXG4gICAgICogRmluZHMgYW4gaXRlbSBieSBwcmVkaWNhdGUuXG4gICAgKi9cbiAgICBmaW5kSXRlbXMocHJlZGljYXRlKSB7XG4gICAgICAgIHJldHVybiB0aGlzLml0ZW1NYW5hZ2VyLml0ZW1zTWF0Y2hpbmdQcmVkaWNhdGUocHJlZGljYXRlKTtcbiAgICB9XG4gICAgLyoqXG4gICAgICogRmluZHMgYW4gaXRlbSBieSBwcmVkaWNhdGUuXG4gICAgICovXG4gICAgZ2V0QWxsKHV1aWRzKSB7XG4gICAgICAgIHJldHVybiB0aGlzLml0ZW1NYW5hZ2VyLmZpbmRJdGVtcyh1dWlkcyk7XG4gICAgfVxuICAgIC8qKlxuICAgICAqIFRha2VzIHRoZSB2YWx1ZXMgb2YgdGhlIGlucHV0IGl0ZW0gYW5kIGVtaXRzIGl0IG9udG8gZ2xvYmFsIHN0YXRlLlxuICAgICAqL1xuICAgIGFzeW5jIG1lcmdlSXRlbShpdGVtLCBzb3VyY2UpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuaXRlbU1hbmFnZXIuZW1pdEl0ZW1Gcm9tUGF5bG9hZChpdGVtLnBheWxvYWRSZXByZXNlbnRhdGlvbigpLCBzb3VyY2UpO1xuICAgIH1cbiAgICAvKipcbiAgICAgKiBDcmVhdGVzIGEgbWFuYWdlZCBpdGVtLlxuICAgICAqIEBwYXJhbSBuZWVkc1N5bmMgIFdoZXRoZXIgdG8gbWFyayB0aGUgaXRlbSBhcyBuZWVkaW5nIHN5bmMuIGBhZGRgIG11c3QgYWxzbyBiZSB0cnVlLlxuICAgICAqL1xuICAgIGFzeW5jIGNyZWF0ZU1hbmFnZWRJdGVtKGNvbnRlbnRUeXBlLCBjb250ZW50LCBuZWVkc1N5bmMgPSBmYWxzZSwgb3ZlcnJpZGUpIHtcbiAgICAgICAgY29uc3QgaXRlbSA9IGF3YWl0IHRoaXMuaXRlbU1hbmFnZXIuY3JlYXRlSXRlbShjb250ZW50VHlwZSwgY29udGVudCwgbmVlZHNTeW5jLCBvdmVycmlkZSk7XG4gICAgICAgIHJldHVybiBpdGVtO1xuICAgIH1cbiAgICAvKipcbiAgICAgKiBDcmVhdGVzIGFuIHVubWFuYWdlZCBpdGVtIHRoYXQgY2FuIGJlIGFkZGVkIGxhdGVyLlxuICAgICAqIEBwYXJhbSBuZWVkc1N5bmMgIFdoZXRoZXIgdG8gbWFyayB0aGUgaXRlbSBhcyBuZWVkaW5nIHN5bmMuIGBhZGRgIG11c3QgYWxzbyBiZSB0cnVlLlxuICAgICAqL1xuICAgIGFzeW5jIGNyZWF0ZVRlbXBsYXRlSXRlbShjb250ZW50VHlwZSwgY29udGVudCkge1xuICAgICAgICBjb25zdCBpdGVtID0gYXdhaXQgdGhpcy5pdGVtTWFuYWdlci5jcmVhdGVUZW1wbGF0ZUl0ZW0oY29udGVudFR5cGUsIGNvbnRlbnQpO1xuICAgICAgICByZXR1cm4gaXRlbTtcbiAgICB9XG4gICAgLyoqXG4gICAgICogQ3JlYXRlcyBhbiB1bm1hbmFnZWQgaXRlbSBmcm9tIGEgcGF5bG9hZC5cbiAgICAgKi9cbiAgICBjcmVhdGVJdGVtRnJvbVBheWxvYWQocGF5bG9hZCkge1xuICAgICAgICByZXR1cm4gQ3JlYXRlSXRlbUZyb21QYXlsb2FkKHBheWxvYWQpO1xuICAgIH1cbiAgICAvKipcbiAgICAgKiBDcmVhdGVzIGFuIHVubWFuYWdlZCBwYXlsb2FkIGZyb20gYW55IG9iamVjdCwgd2hlcmUgdGhlIHJhdyBvYmplY3RcbiAgICAgKiByZXByZXNlbnRzIHRoZSBzYW1lIGRhdGEgYSBwYXlsb2FkIHdvdWxkLlxuICAgICAqL1xuICAgIGNyZWF0ZVBheWxvYWRGcm9tT2JqZWN0KG9iamVjdCkge1xuICAgICAgICByZXR1cm4gQ3JlYXRlTWF4UGF5bG9hZEZyb21BbnlPYmplY3Qob2JqZWN0KTtcbiAgICB9XG4gICAgLyoqXG4gICAgICogQHJldHVybnMgVGhlIGRhdGUgb2YgbGFzdCBzeW5jXG4gICAgICovXG4gICAgZ2V0TGFzdFN5bmNEYXRlKCkge1xuICAgICAgICByZXR1cm4gdGhpcy5zeW5jU2VydmljZS5nZXRMYXN0U3luY0RhdGUoKTtcbiAgICB9XG4gICAgZ2V0U3luY1N0YXR1cygpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuc3luY1NlcnZpY2UuZ2V0U3RhdHVzKCk7XG4gICAgfVxuICAgIC8qKlxuICAgICAqIEBwYXJhbSBpc1VzZXJNb2RpZmllZCAgV2hldGhlciB0byBjaGFuZ2UgdGhlIG1vZGlmaWVkIGRhdGUgdGhlIHVzZXJcbiAgICAgKiBzZWVzIG9mIHRoZSBpdGVtLlxuICAgICAqL1xuICAgIGFzeW5jIHNldEl0ZW1OZWVkc1N5bmMoaXRlbSwgaXNVc2VyTW9kaWZpZWQgPSBmYWxzZSkge1xuICAgICAgICByZXR1cm4gdGhpcy5pdGVtTWFuYWdlci5zZXRJdGVtRGlydHkoaXRlbS51dWlkLCBpc1VzZXJNb2RpZmllZCk7XG4gICAgfVxuICAgIGFzeW5jIHNldEl0ZW1zTmVlZHNTeW5jKGl0ZW1zKSB7XG4gICAgICAgIHJldHVybiB0aGlzLml0ZW1NYW5hZ2VyLnNldEl0ZW1zRGlydHkoVXVpZHMoaXRlbXMpKTtcbiAgICB9XG4gICAgYXN5bmMgZGVsZXRlSXRlbShpdGVtKSB7XG4gICAgICAgIGF3YWl0IHRoaXMuaXRlbU1hbmFnZXIuc2V0SXRlbVRvQmVEZWxldGVkKGl0ZW0udXVpZCk7XG4gICAgICAgIHJldHVybiB0aGlzLnN5bmMoKTtcbiAgICB9XG4gICAgYXN5bmMgZGVsZXRlSXRlbUxvY2FsbHkoaXRlbSkge1xuICAgICAgICB0aGlzLml0ZW1NYW5hZ2VyLnJlbW92ZUl0ZW1Mb2NhbGx5KGl0ZW0pO1xuICAgIH1cbiAgICBhc3luYyBlbXB0eVRyYXNoKCkge1xuICAgICAgICBhd2FpdCB0aGlzLml0ZW1NYW5hZ2VyLmVtcHR5VHJhc2goKTtcbiAgICAgICAgcmV0dXJuIHRoaXMuc3luYygpO1xuICAgIH1cbiAgICBnZXRUcmFzaGVkSXRlbXMoKSB7XG4gICAgICAgIHJldHVybiB0aGlzLml0ZW1NYW5hZ2VyLnRyYXNoZWRJdGVtcztcbiAgICB9XG4gICAgc2V0RGlzcGxheU9wdGlvbnMoY29udGVudFR5cGUsIHNvcnRCeSwgZGlyZWN0aW9uLCBmaWx0ZXIpIHtcbiAgICAgICAgdGhpcy5pdGVtTWFuYWdlci5zZXREaXNwbGF5T3B0aW9ucyhjb250ZW50VHlwZSwgc29ydEJ5LCBkaXJlY3Rpb24sIGZpbHRlcik7XG4gICAgfVxuICAgIGdldERpc3BsYXlhYmxlSXRlbXMoY29udGVudFR5cGUpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuaXRlbU1hbmFnZXIuZ2V0RGlzcGxheWFibGVJdGVtcyhjb250ZW50VHlwZSk7XG4gICAgfVxuICAgIC8qKlxuICAgICAqIEluc2VydHMgdGhlIGlucHV0IGl0ZW0gYnkgaXRzIHBheWxvYWQgcHJvcGVydGllcywgYW5kIG1hcmtzIHRoZSBpdGVtIGFzIGRpcnR5LlxuICAgICAqIEEgc3luYyBpcyBub3QgcGVyZm9ybWVkIGFmdGVyIGFuIGl0ZW0gaXMgaW5zZXJ0ZWQuIFRoaXMgbXVzdCBiZSBoYW5kbGVkIGJ5IHRoZSBjYWxsZXIuXG4gICAgICovXG4gICAgYXN5bmMgaW5zZXJ0SXRlbShpdGVtKSB7XG4gICAgICAgIC8qIEZpcnN0IGluc2VydCB0aGUgaXRlbSAqL1xuICAgICAgICBjb25zdCBpbnNlcnRlZEl0ZW0gPSBhd2FpdCB0aGlzLml0ZW1NYW5hZ2VyLmluc2VydEl0ZW0oaXRlbSk7XG4gICAgICAgIC8qIE5vdyBjaGFuZ2UgdGhlIGl0ZW0gc28gdGhhdCBpdCdzIG1hcmtlZCBhcyBkaXJ0eSAqL1xuICAgICAgICBhd2FpdCB0aGlzLml0ZW1NYW5hZ2VyLmNoYW5nZUl0ZW1zKFtpbnNlcnRlZEl0ZW0udXVpZF0pO1xuICAgICAgICByZXR1cm4gdGhpcy5maW5kSXRlbShpdGVtLnV1aWQpO1xuICAgIH1cbiAgICAvKipcbiAgICAgKiBTYXZlcyB0aGUgaXRlbSBieSB1dWlkIGJ5IGZpbmRpbmcgaXQsIHNldHRpbmcgaXQgYXMgZGlydHkgaWYgaXRzIG5vdCBhbHJlYWR5LFxuICAgICAqIGFuZCBwZXJmb3JtaW5nIGEgc3luYyByZXF1ZXN0LlxuICAgICAqL1xuICAgIGFzeW5jIHNhdmVJdGVtKHV1aWQpIHtcbiAgICAgICAgY29uc3QgaXRlbSA9IHRoaXMuaXRlbU1hbmFnZXIuZmluZEl0ZW0odXVpZCk7XG4gICAgICAgIGlmICghaXRlbSkge1xuICAgICAgICAgICAgdGhyb3cgRXJyb3IoJ0F0dGVtcHRpbmcgdG8gc2F2ZSBub24taW5zZXJ0ZWQgaXRlbScpO1xuICAgICAgICB9XG4gICAgICAgIGlmICghaXRlbS5kaXJ0eSkge1xuICAgICAgICAgICAgYXdhaXQgdGhpcy5pdGVtTWFuYWdlci5jaGFuZ2VJdGVtKHV1aWQpO1xuICAgICAgICB9XG4gICAgICAgIGF3YWl0IHRoaXMuc3luY1NlcnZpY2Uuc3luYygpO1xuICAgIH1cbiAgICAvKipcbiAgICAgKiBNdXRhdGVzIGEgcHJlLWV4aXN0aW5nIGl0ZW0sIG1hcmtzIGl0IGFzIGRpcnR5LCBhbmQgc3luY3MgaXRcbiAgICAgKi9cbiAgICBhc3luYyBjaGFuZ2VBbmRTYXZlSXRlbSh1dWlkLCBtdXRhdGUsIGlzVXNlck1vZGlmaWVkID0gZmFsc2UsIHBheWxvYWRTb3VyY2UsIHN5bmNPcHRpb25zKSB7XG4gICAgICAgIGlmICghaXNTdHJpbmcodXVpZCkpIHtcbiAgICAgICAgICAgIHRocm93IEVycm9yKCdNdXN0IHVzZSB1dWlkIHRvIGNoYW5nZSBpdGVtJyk7XG4gICAgICAgIH1cbiAgICAgICAgYXdhaXQgdGhpcy5pdGVtTWFuYWdlci5jaGFuZ2VJdGVtcyhbdXVpZF0sIG11dGF0ZSwgaXNVc2VyTW9kaWZpZWQgPyBNdXRhdGlvblR5cGUuVXNlckludGVyYWN0aW9uIDogdW5kZWZpbmVkLCBwYXlsb2FkU291cmNlKTtcbiAgICAgICAgYXdhaXQgdGhpcy5zeW5jU2VydmljZS5zeW5jKHN5bmNPcHRpb25zKTtcbiAgICAgICAgcmV0dXJuIHRoaXMuZmluZEl0ZW0odXVpZCk7XG4gICAgfVxuICAgIC8qKlxuICAgICogTXV0YXRlcyBwcmUtZXhpc3RpbmcgaXRlbXMsIG1hcmtzIHRoZW0gYXMgZGlydHksIGFuZCBzeW5jc1xuICAgICovXG4gICAgYXN5bmMgY2hhbmdlQW5kU2F2ZUl0ZW1zKHV1aWRzLCBtdXRhdGUsIGlzVXNlck1vZGlmaWVkID0gZmFsc2UsIHBheWxvYWRTb3VyY2UsIHN5bmNPcHRpb25zKSB7XG4gICAgICAgIGF3YWl0IHRoaXMuaXRlbU1hbmFnZXIuY2hhbmdlSXRlbXModXVpZHMsIG11dGF0ZSwgaXNVc2VyTW9kaWZpZWQgPyBNdXRhdGlvblR5cGUuVXNlckludGVyYWN0aW9uIDogdW5kZWZpbmVkLCBwYXlsb2FkU291cmNlKTtcbiAgICAgICAgYXdhaXQgdGhpcy5zeW5jU2VydmljZS5zeW5jKHN5bmNPcHRpb25zKTtcbiAgICB9XG4gICAgLyoqXG4gICAgKiBNdXRhdGVzIGEgcHJlLWV4aXN0aW5nIGl0ZW0gYW5kIG1hcmtzIGl0IGFzIGRpcnR5LiBEb2VzIG5vdCBzeW5jIGNoYW5nZXMuXG4gICAgKi9cbiAgICBhc3luYyBjaGFuZ2VJdGVtKHV1aWQsIG11dGF0ZSwgaXNVc2VyTW9kaWZpZWQgPSBmYWxzZSkge1xuICAgICAgICBpZiAoIWlzU3RyaW5nKHV1aWQpKSB7XG4gICAgICAgICAgICB0aHJvdyBFcnJvcignTXVzdCB1c2UgdXVpZCB0byBjaGFuZ2UgaXRlbScpO1xuICAgICAgICB9XG4gICAgICAgIGF3YWl0IHRoaXMuaXRlbU1hbmFnZXIuY2hhbmdlSXRlbXMoW3V1aWRdLCBtdXRhdGUsIGlzVXNlck1vZGlmaWVkID8gTXV0YXRpb25UeXBlLlVzZXJJbnRlcmFjdGlvbiA6IHVuZGVmaW5lZCk7XG4gICAgICAgIHJldHVybiB0aGlzLmZpbmRJdGVtKHV1aWQpO1xuICAgIH1cbiAgICAvKipcbiAgICAgKiBNdXRhdGVzIGEgcHJlLWV4aXN0aW5nIGl0ZW1zIGFuZCBtYXJrcyB0aGVtIGFzIGRpcnR5LiBEb2VzIG5vdCBzeW5jIGNoYW5nZXMuXG4gICAgICovXG4gICAgYXN5bmMgY2hhbmdlSXRlbXModXVpZHMsIG11dGF0ZSwgaXNVc2VyTW9kaWZpZWQgPSBmYWxzZSkge1xuICAgICAgICByZXR1cm4gdGhpcy5pdGVtTWFuYWdlci5jaGFuZ2VJdGVtcyh1dWlkcywgbXV0YXRlLCBpc1VzZXJNb2RpZmllZCA/IE11dGF0aW9uVHlwZS5Vc2VySW50ZXJhY3Rpb24gOiB1bmRlZmluZWQpO1xuICAgIH1cbiAgICBnZXRJdGVtcyhjb250ZW50VHlwZSkge1xuICAgICAgICByZXR1cm4gdGhpcy5pdGVtTWFuYWdlci5nZXRJdGVtcyhjb250ZW50VHlwZSk7XG4gICAgfVxuICAgIG5vdGVzTWF0Y2hpbmdTbWFydFRhZyhzbWFydFRhZykge1xuICAgICAgICByZXR1cm4gdGhpcy5pdGVtTWFuYWdlci5ub3Rlc01hdGNoaW5nU21hcnRUYWcoc21hcnRUYWcpO1xuICAgIH1cbiAgICAvKiogUmV0dXJucyBhbiBpdGVtJ3MgZGlyZWN0IHJlZmVyZW5jZXMgKi9cbiAgICByZWZlcmVuY2VzRm9ySXRlbShpdGVtLCBjb250ZW50VHlwZSkge1xuICAgICAgICBsZXQgcmVmZXJlbmNlcyA9IHRoaXMuaXRlbU1hbmFnZXIucmVmZXJlbmNlc0Zvckl0ZW0oaXRlbS51dWlkKTtcbiAgICAgICAgaWYgKGNvbnRlbnRUeXBlKSB7XG4gICAgICAgICAgICByZWZlcmVuY2VzID0gcmVmZXJlbmNlcy5maWx0ZXIoKHJlZikgPT4ge1xuICAgICAgICAgICAgICAgIHJldHVybiByZWY/LmNvbnRlbnRfdHlwZSA9PT0gY29udGVudFR5cGU7XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gcmVmZXJlbmNlcztcbiAgICB9XG4gICAgLyoqIFJldHVybnMgaXRlbXMgcmVmZXJlbmNpbmcgYW4gaXRlbSAqL1xuICAgIHJlZmVyZW5jaW5nRm9ySXRlbShpdGVtLCBjb250ZW50VHlwZSkge1xuICAgICAgICBsZXQgcmVmZXJlbmNlcyA9IHRoaXMuaXRlbU1hbmFnZXIuaXRlbXNSZWZlcmVuY2luZ0l0ZW0oaXRlbS51dWlkKTtcbiAgICAgICAgaWYgKGNvbnRlbnRUeXBlKSB7XG4gICAgICAgICAgICByZWZlcmVuY2VzID0gcmVmZXJlbmNlcy5maWx0ZXIoKHJlZikgPT4ge1xuICAgICAgICAgICAgICAgIHJldHVybiByZWY/LmNvbnRlbnRfdHlwZSA9PT0gY29udGVudFR5cGU7XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gcmVmZXJlbmNlcztcbiAgICB9XG4gICAgZmluZFRhZ0J5VGl0bGUodGl0bGUpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuaXRlbU1hbmFnZXIuZmluZFRhZ0J5VGl0bGUodGl0bGUpO1xuICAgIH1cbiAgICBhc3luYyBmaW5kT3JDcmVhdGVUYWcodGl0bGUpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuaXRlbU1hbmFnZXIuZmluZE9yQ3JlYXRlVGFnQnlUaXRsZSh0aXRsZSk7XG4gICAgfVxuICAgIGdldFNtYXJ0VGFncygpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuaXRlbU1hbmFnZXIuZ2V0U21hcnRUYWdzKCk7XG4gICAgfVxuICAgIGdldE5vdGVDb3VudCgpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuaXRlbU1hbmFnZXIubm90ZUNvdW50O1xuICAgIH1cbiAgICAvKipcbiAgICAgKiBCZWdpbiBzdHJlYW1pbmcgaXRlbXMgdG8gZGlzcGxheSBpbiB0aGUgVUkuIFRoZSBzdHJlYW0gY2FsbGJhY2sgd2lsbCBiZSBjYWxsZWRcbiAgICAgKiBpbW1lZGlhdGVseSB3aXRoIHRoZSBwcmVzZW50IGl0ZW1zIHRoYXQgbWF0Y2ggdGhlIGNvbnN0cmFpbnQsIGFuZCBvdmVyIHRpbWUgd2hlbmV2ZXJcbiAgICAgKiBpdGVtcyBtYXRjaGluZyB0aGUgY29uc3RyYWludCBhcmUgYWRkZWQsIGNoYW5nZWQsIG9yIGRlbGV0ZWQuXG4gICAgICovXG4gICAgc3RyZWFtSXRlbXMoY29udGVudFR5cGUsIHN0cmVhbSkge1xuICAgICAgICBjb25zdCBvYnNlcnZlciA9IHRoaXMuaXRlbU1hbmFnZXIuYWRkT2JzZXJ2ZXIoY29udGVudFR5cGUsIChjaGFuZ2VkLCBpbnNlcnRlZCwgZGlzY2FyZGVkLCBzb3VyY2UpID0+IHtcbiAgICAgICAgICAgIGNvbnN0IGFsbCA9IGNoYW5nZWQuY29uY2F0KGluc2VydGVkKS5jb25jYXQoZGlzY2FyZGVkKTtcbiAgICAgICAgICAgIHN0cmVhbShhbGwsIHNvdXJjZSk7XG4gICAgICAgIH0pO1xuICAgICAgICAvKiogUHVzaCBjdXJyZW50IHZhbHVlcyBub3cgKi9cbiAgICAgICAgY29uc3QgbWF0Y2hlcyA9IHRoaXMuaXRlbU1hbmFnZXIuZ2V0SXRlbXMoY29udGVudFR5cGUpO1xuICAgICAgICBpZiAobWF0Y2hlcy5sZW5ndGggPiAwKSB7XG4gICAgICAgICAgICBzdHJlYW0obWF0Y2hlcyk7XG4gICAgICAgIH1cbiAgICAgICAgdGhpcy5zdHJlYW1SZW1vdmVycy5wdXNoKG9ic2VydmVyKTtcbiAgICAgICAgcmV0dXJuICgpID0+IHtcbiAgICAgICAgICAgIG9ic2VydmVyKCk7XG4gICAgICAgICAgICByZW1vdmVGcm9tQXJyYXkodGhpcy5zdHJlYW1SZW1vdmVycywgb2JzZXJ2ZXIpO1xuICAgICAgICB9O1xuICAgIH1cbiAgICAvKipcbiAgICAgKiBTZXQgdGhlIHNlcnZlcidzIFVSTFxuICAgICAqL1xuICAgIGFzeW5jIHNldEhvc3QoaG9zdCkge1xuICAgICAgICByZXR1cm4gdGhpcy5hcGlTZXJ2aWNlLnNldEhvc3QoaG9zdCk7XG4gICAgfVxuICAgIGFzeW5jIGdldEhvc3QoKSB7XG4gICAgICAgIHJldHVybiB0aGlzLmFwaVNlcnZpY2UuZ2V0SG9zdCgpO1xuICAgIH1cbiAgICBnZXRVc2VyKCkge1xuICAgICAgICBpZiAoIXRoaXMubGF1bmNoZWQpIHtcbiAgICAgICAgICAgIHRocm93ICdBdHRlbXB0aW5nIHRvIGFjY2VzcyB1c2VyIGJlZm9yZSBhcHBsaWNhdGlvbiB1bmxvY2tlZCc7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHRoaXMuc2Vzc2lvbk1hbmFnZXIuZ2V0VXNlcigpO1xuICAgIH1cbiAgICBhc3luYyBnZXRVc2VyVmVyc2lvbigpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMucHJvdG9jb2xTZXJ2aWNlLmdldFVzZXJWZXJzaW9uKCk7XG4gICAgfVxuICAgIC8qKlxuICAgICAqIFJldHVybnMgdHJ1ZSBpZiB0aGVyZSBpcyBhbiB1cGdyYWRlIGF2YWlsYWJsZSBmb3IgdGhlIGFjY291bnQgb3IgcGFzc2NvZGVcbiAgICAgKi9cbiAgICBhc3luYyBwcm90b2NvbFVwZ3JhZGVBdmFpbGFibGUoKSB7XG4gICAgICAgIHJldHVybiB0aGlzLnByb3RvY29sU2VydmljZS51cGdyYWRlQXZhaWxhYmxlKCk7XG4gICAgfVxuICAgIC8qKlxuICAgICAqIFJldHVybnMgdHJ1ZSBpZiB0aGVyZSBpcyBhbiBlbmNyeXB0aW9uIHNvdXJjZSBhdmFpbGFibGVcbiAgICAgKi9cbiAgICBhc3luYyBpc0VuY3J5cHRpb25BdmFpbGFibGUoKSB7XG4gICAgICAgIHJldHVybiAhaXNOdWxsT3JVbmRlZmluZWQodGhpcy5nZXRVc2VyKCkpIHx8IHRoaXMuaGFzUGFzc2NvZGUoKTtcbiAgICB9XG4gICAgLyoqXG4gICAgICogQHJldHVybnMgQW4gYXJyYXkgb2YgZXJyb3JzLCBpZiBhbnkuXG4gICAgICovXG4gICAgYXN5bmMgdXBncmFkZVByb3RvY29sVmVyc2lvbigpIHtcbiAgICAgICAgY29uc3QgaGFzUGFzc2NvZGUgPSB0aGlzLmhhc1Bhc3Njb2RlKCk7XG4gICAgICAgIGNvbnN0IGhhc0FjY291bnQgPSAhdGhpcy5ub0FjY291bnQoKTtcbiAgICAgICAgY29uc3QgdHlwZXMgPSBbXTtcbiAgICAgICAgaWYgKGhhc1Bhc3Njb2RlKSB7XG4gICAgICAgICAgICB0eXBlcy5wdXNoKENoYWxsZW5nZVR5cGUuTG9jYWxQYXNzY29kZSk7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKGhhc0FjY291bnQpIHtcbiAgICAgICAgICAgIHR5cGVzLnB1c2goQ2hhbGxlbmdlVHlwZS5BY2NvdW50UGFzc3dvcmQpO1xuICAgICAgICB9XG4gICAgICAgIGNvbnN0IGNoYWxsZW5nZSA9IG5ldyBDaGFsbGVuZ2UodHlwZXMsIENoYWxsZW5nZVJlYXNvbi5Qcm90b2NvbFVwZ3JhZGUpO1xuICAgICAgICBjb25zdCByZXNwb25zZSA9IGF3YWl0IHRoaXMuY2hhbGxlbmdlU2VydmljZS5wcm9tcHRGb3JDaGFsbGVuZ2VSZXNwb25zZShjaGFsbGVuZ2UpO1xuICAgICAgICBpZiAoIXJlc3BvbnNlKSB7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cbiAgICAgICAgbGV0IHBhc3Njb2RlO1xuICAgICAgICBpZiAoaGFzUGFzc2NvZGUpIHtcbiAgICAgICAgICAgIC8qIFVwZ3JhZGUgcGFzc2NvZGUgdmVyc2lvbiAqL1xuICAgICAgICAgICAgY29uc3QgdmFsdWUgPSByZXNwb25zZS5nZXRWYWx1ZUZvclR5cGUoQ2hhbGxlbmdlVHlwZS5Mb2NhbFBhc3Njb2RlKTtcbiAgICAgICAgICAgIHBhc3Njb2RlID0gdmFsdWUudmFsdWU7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKGhhc0FjY291bnQpIHtcbiAgICAgICAgICAgIC8qIFVwZ3JhZGUgYWNjb3VudCB2ZXJzaW9uICovXG4gICAgICAgICAgICBjb25zdCB2YWx1ZSA9IHJlc3BvbnNlLmdldFZhbHVlRm9yVHlwZShDaGFsbGVuZ2VUeXBlLkFjY291bnRQYXNzd29yZCk7XG4gICAgICAgICAgICBjb25zdCBwYXNzd29yZCA9IHZhbHVlLnZhbHVlO1xuICAgICAgICAgICAgY29uc3QgY2hhbmdlUmVzcG9uc2UgPSBhd2FpdCB0aGlzLmNoYW5nZVBhc3N3b3JkKHBhc3N3b3JkLCBwYXNzd29yZCwgcGFzc2NvZGUsIHsgdmFsaWRhdGVQYXNzd29yZFN0cmVuZ3RoOiBmYWxzZSB9KTtcbiAgICAgICAgICAgIGlmIChjaGFuZ2VSZXNwb25zZT8uZXJyb3IpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gW2NoYW5nZVJlc3BvbnNlLmVycm9yXTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGlmIChwYXNzY29kZSkge1xuICAgICAgICAgICAgICAgIGF3YWl0IHRoaXMuY2hhbmdlUGFzc2NvZGUocGFzc2NvZGUpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfVxuICAgIG5vQWNjb3VudCgpIHtcbiAgICAgICAgY29uc3QgdXNlciA9IHRoaXMuZ2V0VXNlcigpO1xuICAgICAgICByZXR1cm4gaXNOdWxsT3JVbmRlZmluZWQodXNlcik7XG4gICAgfVxuICAgIC8qKlxuICBcbiAgICAgKiBAcmV0dXJuc1xuICAgICAqIC5hZmZlY3RlZEl0ZW1zOiBJdGVtcyB0aGF0IHdlcmUgZWl0aGVyIGNyZWF0ZWQgb3IgZGlydGllZCBieSB0aGlzIGltcG9ydFxuICAgICAqIC5lcnJvckNvdW50OiBUaGUgbnVtYmVyIG9mIGl0ZW1zIHRoYXQgd2VyZSBub3QgaW1wb3J0ZWQgZHVlIHRvIGZhaWx1cmUgdG8gZGVjcnlwdC5cbiAgICAgKi9cbiAgICBhc3luYyBpbXBvcnREYXRhKGRhdGEsIHBhc3N3b3JkLCBhd2FpdFN5bmMgPSBmYWxzZSkge1xuICAgICAgICBjb25zdCBkZWNyeXB0ZWRQYXlsb2FkcyA9IGF3YWl0IHRoaXMucHJvdG9jb2xTZXJ2aWNlLnBheWxvYWRzQnlEZWNyeXB0aW5nQmFja3VwRmlsZShkYXRhLCBwYXNzd29yZCk7XG4gICAgICAgIGNvbnN0IHZhbGlkUGF5bG9hZHMgPSBkZWNyeXB0ZWRQYXlsb2Fkcy5maWx0ZXIoKHBheWxvYWQpID0+IHtcbiAgICAgICAgICAgIHJldHVybiAhcGF5bG9hZC5lcnJvckRlY3J5cHRpbmc7XG4gICAgICAgIH0pLm1hcCgocGF5bG9hZCkgPT4ge1xuICAgICAgICAgICAgLyogRG9uJ3Qgd2FudCB0byBhY3RpdmF0ZSBhbnkgY29tcG9uZW50cyBkdXJpbmcgaW1wb3J0IHByb2Nlc3MgaW5cbiAgICAgICAgICAgICAqIGNhc2Ugb2YgZXhjZXB0aW9ucyBicmVha2luZyB1cCB0aGUgaW1wb3J0IHByb2NjZXNzICovXG4gICAgICAgICAgICBpZiAocGF5bG9hZC5jb250ZW50X3R5cGUgPT09IENvbnRlbnRUeXBlLkNvbXBvbmVudCAmJiBwYXlsb2FkLnNhZmVDb250ZW50LmFjdGl2ZSkge1xuICAgICAgICAgICAgICAgIHJldHVybiBDb3B5UGF5bG9hZChwYXlsb2FkLCB7XG4gICAgICAgICAgICAgICAgICAgIGNvbnRlbnQ6IHtcbiAgICAgICAgICAgICAgICAgICAgICAgIC4uLnBheWxvYWQuc2FmZUNvbnRlbnQsXG4gICAgICAgICAgICAgICAgICAgICAgICBhY3RpdmU6IGZhbHNlXG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgICAgIHJldHVybiBwYXlsb2FkO1xuICAgICAgICAgICAgfVxuICAgICAgICB9KTtcbiAgICAgICAgY29uc3QgYWZmZWN0ZWRVdWlkcyA9IGF3YWl0IHRoaXMubW9kZWxNYW5hZ2VyLmltcG9ydFBheWxvYWRzKHZhbGlkUGF5bG9hZHMpO1xuICAgICAgICBjb25zdCBwcm9taXNlID0gdGhpcy5zeW5jKCk7XG4gICAgICAgIGlmIChhd2FpdFN5bmMpIHtcbiAgICAgICAgICAgIGF3YWl0IHByb21pc2U7XG4gICAgICAgIH1cbiAgICAgICAgY29uc3QgYWZmZWN0ZWRJdGVtcyA9IHRoaXMuZ2V0QWxsKGFmZmVjdGVkVXVpZHMpO1xuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgYWZmZWN0ZWRJdGVtczogYWZmZWN0ZWRJdGVtcyxcbiAgICAgICAgICAgIGVycm9yQ291bnQ6IGRlY3J5cHRlZFBheWxvYWRzLmxlbmd0aCAtIHZhbGlkUGF5bG9hZHMubGVuZ3RoXG4gICAgICAgIH07XG4gICAgfVxuICAgIC8qKlxuICAgICAqIENyZWF0ZXMgYSBKU09OIHN0cmluZyByZXByZXNlbnRpbmcgdGhlIGJhY2t1cCBmb3JtYXQgb2YgYWxsIGl0ZW1zLCBvciBqdXN0IHN1Ykl0ZW1zXG4gICAgICogaWYgc3VwcGxpZWQuXG4gICAgICovXG4gICAgYXN5bmMgY3JlYXRlQmFja3VwRmlsZShzdWJJdGVtcywgaW50ZW50LCByZXR1cm5JZkVtcHR5ID0gZmFsc2UpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMucHJvdG9jb2xTZXJ2aWNlLmNyZWF0ZUJhY2t1cEZpbGUoc3ViSXRlbXMsIGludGVudCwgcmV0dXJuSWZFbXB0eSk7XG4gICAgfVxuICAgIGlzRXBoZW1lcmFsU2Vzc2lvbigpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuc3RvcmFnZVNlcnZpY2UuaXNFcGhlbWVyYWxTZXNzaW9uKCk7XG4gICAgfVxuICAgIGxvY2tTeW5jaW5nKCkge1xuICAgICAgICB0aGlzLnN5bmNTZXJ2aWNlLmxvY2tTeW5jaW5nKCk7XG4gICAgfVxuICAgIHVubG9ja1N5bmNpbmcoKSB7XG4gICAgICAgIHRoaXMuc3luY1NlcnZpY2UudW5sb2NrU3luY2luZygpO1xuICAgIH1cbiAgICBhc3luYyBzeW5jKG9wdGlvbnMpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuc3luY1NlcnZpY2Uuc3luYyhvcHRpb25zKTtcbiAgICB9XG4gICAgYXN5bmMgaXNPdXRPZlN5bmMoKSB7XG4gICAgICAgIHJldHVybiB0aGlzLnN5bmNTZXJ2aWNlLmlzT3V0T2ZTeW5jKCk7XG4gICAgfVxuICAgIGFzeW5jIHJlc29sdmVPdXRPZlN5bmMoKSB7XG4gICAgICAgIHJldHVybiB0aGlzLnN5bmNTZXJ2aWNlLnJlc29sdmVPdXRPZlN5bmMoKTtcbiAgICB9XG4gICAgYXN5bmMgc2V0VmFsdWUoa2V5LCB2YWx1ZSwgbW9kZSkge1xuICAgICAgICByZXR1cm4gdGhpcy5zdG9yYWdlU2VydmljZS5zZXRWYWx1ZShrZXksIHZhbHVlLCBtb2RlKTtcbiAgICB9XG4gICAgYXN5bmMgZ2V0VmFsdWUoa2V5LCBtb2RlKSB7XG4gICAgICAgIHJldHVybiB0aGlzLnN0b3JhZ2VTZXJ2aWNlLmdldFZhbHVlKGtleSwgbW9kZSk7XG4gICAgfVxuICAgIGFzeW5jIHJlbW92ZVZhbHVlKGtleSwgbW9kZSkge1xuICAgICAgICByZXR1cm4gdGhpcy5zdG9yYWdlU2VydmljZS5yZW1vdmVWYWx1ZShrZXksIG1vZGUpO1xuICAgIH1cbiAgICAvKipcbiAgICAgKiBEZWxldGVzIGFsbCBwYXlsb2FkcyBmcm9tIHN0b3JhZ2UuXG4gICAgICovXG4gICAgYXN5bmMgY2xlYXJEYXRhYmFzZSgpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuc3RvcmFnZVNlcnZpY2UuY2xlYXJBbGxQYXlsb2FkcygpO1xuICAgIH1cbiAgICAvKipcbiAgICAgKiBBbGxvd3MgaXRlbXMga2V5cyB0byBiZSByZXdyaXR0ZW4gdG8gbG9jYWwgZGIgb24gbG9jYWwgY3JlZGVudGlhbCBzdGF0dXMgY2hhbmdlLFxuICAgICAqIHN1Y2ggYXMgaWYgcGFzc2NvZGUgaXMgYWRkZWQsIGNoYW5nZWQsIG9yIHJlbW92ZWQuXG4gICAgICogVGhpcyBhbGxvd3MgSW5kZXhlZERCIHVuZW5jcnlwdGVkIGxvZ3MgdG8gYmUgZGVsZXRlZFxuICAgICAqIGBkZWxldGVQYXlsb2Fkc2Agd2lsbCByZW1vdmUgZGF0YSBmcm9tIGJhY2tpbmcgc3RvcmUsXG4gICAgICogYnV0IG5vdCBmcm9tIHdvcmtpbmcgbWVtb3J5IFNlZTpcbiAgICAgKiBodHRwczovL2dpdGh1Yi5jb20vc3RhbmRhcmRub3Rlcy9kZXNrdG9wL2lzc3Vlcy8xMzFcbiAgICAgKi9cbiAgICBhc3luYyByZXdyaXRlSXRlbXNLZXlzKCkge1xuICAgICAgICBjb25zdCBpdGVtc0tleXMgPSB0aGlzLml0ZW1NYW5hZ2VyLml0ZW1zS2V5cygpO1xuICAgICAgICBjb25zdCBwYXlsb2FkcyA9IGl0ZW1zS2V5cy5tYXAoKGtleSkgPT4ga2V5LnBheWxvYWRSZXByZXNlbnRhdGlvbigpKTtcbiAgICAgICAgYXdhaXQgdGhpcy5zdG9yYWdlU2VydmljZS5kZWxldGVQYXlsb2FkcyhwYXlsb2Fkcyk7XG4gICAgICAgIGF3YWl0IHRoaXMuc3luY1NlcnZpY2UucGVyc2lzdFBheWxvYWRzKHBheWxvYWRzKTtcbiAgICB9XG4gICAgLyoqXG4gICAgICogR2l2ZXMgc2VydmljZXMgYSBjaGFuY2UgdG8gY29tcGxldGUgYW55IHNlbnNpdGl2ZSBvcGVyYXRpb25zIGJlZm9yZSB5aWVsZGluZ1xuICAgICAqIEBwYXJhbSBtYXhXYWl0IFRoZSBtYXhpbXVtIG51bWJlciBvZiBtaWxsaXNlY29uZHMgdG8gd2FpdCBmb3Igc2VydmljZXNcbiAgICAgKiB0byBmaW5pc2ggdGFza3MuIDAgbWVhbnMgbm8gbGltaXQuXG4gICAgICovXG4gICAgYXN5bmMgcHJlcGFyZUZvckRlaW5pdChtYXhXYWl0ID0gMCkge1xuICAgICAgICBjb25zdCBwcm9taXNlID0gUHJvbWlzZS5hbGwodGhpcy5zZXJ2aWNlcy5tYXAoKHNlcnZpY2UpID0+IHNlcnZpY2UuYmxvY2tEZWluaXQoKSkpO1xuICAgICAgICBpZiAobWF4V2FpdCA9PT0gMCkge1xuICAgICAgICAgICAgYXdhaXQgcHJvbWlzZTtcbiAgICAgICAgfVxuICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgIC8qKiBBd2FpdCB1cCB0byBtYXhXYWl0LiBJZiBub3QgcmVzb2x2ZWQgYnkgdGhlbiwgcmV0dXJuLiAqL1xuICAgICAgICAgICAgYXdhaXQgUHJvbWlzZS5yYWNlKFtcbiAgICAgICAgICAgICAgICBwcm9taXNlLFxuICAgICAgICAgICAgICAgIHNsZWVwKG1heFdhaXQpXG4gICAgICAgICAgICBdKTtcbiAgICAgICAgfVxuICAgIH1cbiAgICBzdWJtaXRWYWx1ZXNGb3JDaGFsbGVuZ2UoY2hhbGxlbmdlLCB2YWx1ZXMpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuY2hhbGxlbmdlU2VydmljZS5zdWJtaXRWYWx1ZXNGb3JDaGFsbGVuZ2UoY2hhbGxlbmdlLCB2YWx1ZXMpO1xuICAgIH1cbiAgICBzZXRDaGFsbGVuZ2VDYWxsYmFja3MoeyBjaGFsbGVuZ2UsIG9uVmFsaWRWYWx1ZSwgb25JbnZhbGlkVmFsdWUsIG9uQ29tcGxldGUsIG9uQ2FuY2VsIH0pIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuY2hhbGxlbmdlU2VydmljZS5zZXRDaGFsbGVuZ2VDYWxsYmFja3MoY2hhbGxlbmdlLCBvblZhbGlkVmFsdWUsIG9uSW52YWxpZFZhbHVlLCBvbkNvbXBsZXRlLCBvbkNhbmNlbCk7XG4gICAgfVxuICAgIGNhbmNlbENoYWxsZW5nZShjaGFsbGVuZ2UpIHtcbiAgICAgICAgdGhpcy5jaGFsbGVuZ2VTZXJ2aWNlLmNhbmNlbENoYWxsZW5nZShjaGFsbGVuZ2UpO1xuICAgIH1cbiAgICAvKipcbiAgICAgKiBEZXN0cm95cyB0aGUgYXBwbGljYXRpb24gaW5zdGFuY2UuXG4gICAgICovXG4gICAgZGVpbml0KCkge1xuICAgICAgICBjbGVhckludGVydmFsKHRoaXMuYXV0b1N5bmNJbnRlcnZhbCk7XG4gICAgICAgIGZvciAoY29uc3QgdW5pbnN0YWxsT2JzZXJ2ZXIgb2YgdGhpcy5zZXJ2aWNlT2JzZXJ2ZXJzKSB7XG4gICAgICAgICAgICB1bmluc3RhbGxPYnNlcnZlcigpO1xuICAgICAgICB9XG4gICAgICAgIGZvciAoY29uc3QgdW5pbnN0YWxsU3Vic2NyaWJlciBvZiB0aGlzLm1hbmFnZWRTdWJzY3JpYmVycykge1xuICAgICAgICAgICAgdW5pbnN0YWxsU3Vic2NyaWJlcigpO1xuICAgICAgICB9XG4gICAgICAgIGZvciAoY29uc3Qgc2VydmljZSBvZiB0aGlzLnNlcnZpY2VzKSB7XG4gICAgICAgICAgICBzZXJ2aWNlLmRlaW5pdCgpO1xuICAgICAgICB9XG4gICAgICAgIHRoaXMuZGV2aWNlSW50ZXJmYWNlLmRlaW5pdCgpO1xuICAgICAgICB0aGlzLmRldmljZUludGVyZmFjZSA9IHVuZGVmaW5lZDtcbiAgICAgICAgdGhpcy5jcnlwdG8gPSB1bmRlZmluZWQ7XG4gICAgICAgIHRoaXMuY3JlYXRlZE5ld0RhdGFiYXNlID0gZmFsc2U7XG4gICAgICAgIHRoaXMuc2VydmljZXMubGVuZ3RoID0gMDtcbiAgICAgICAgdGhpcy5zZXJ2aWNlT2JzZXJ2ZXJzLmxlbmd0aCA9IDA7XG4gICAgICAgIHRoaXMubWFuYWdlZFN1YnNjcmliZXJzLmxlbmd0aCA9IDA7XG4gICAgICAgIHRoaXMuc3RyZWFtUmVtb3ZlcnMubGVuZ3RoID0gMDtcbiAgICAgICAgdGhpcy5jbGVhclNlcnZpY2VzKCk7XG4gICAgICAgIHRoaXMuZGVhbGxvY2VkID0gdHJ1ZTtcbiAgICAgICAgdGhpcy5zdGFydGVkID0gZmFsc2U7XG4gICAgfVxuICAgIC8qKlxuICAgICAqIFJldHVybnMgdGhlIHdyYXBwaW5nIGtleSBmb3Igb3BlcmF0aW9ucyB0aGF0IHJlcXVpcmUgcmVzYXZpbmcgdGhlIHJvb3Qga2V5XG4gICAgICogKGNoYW5naW5nIHRoZSBhY2NvdW50IHBhc3N3b3JkLCBzaWduaW5nIGluLCByZWdpc3RlcmluZywgb3IgdXBncmFkaW5nIHByb3RvY29sKVxuICAgICAqIFJldHVybnMgZW1wdHkgb2JqZWN0IGlmIG5vIHBhc3Njb2RlIGlzIGNvbmZpZ3VyZWQuXG4gICAgICogT3RoZXJ3aXNlIHJldHVybnMge2NhbmNsZWQ6IHRydWV9IGlmIHRoZSBvcGVyYXRpb24gaXMgY2FuY2VsZWQsIG9yXG4gICAgICoge3dyYXBwaW5nS2V5fSB3aXRoIHRoZSByZXN1bHQuXG4gICAgICogQHBhcmFtIHBhc3Njb2RlIC0gSWYgdGhlIGNvbnN1bWVyIGFscmVhZHkgaGFzIGFjY2VzcyB0byB0aGUgcGFzc2NvZGUsXG4gICAgICogdGhleSBjYW4gcGFzcyBpdCBoZXJlIHNvIHRoYXQgdGhlIHVzZXIgaXMgbm90IHByb21wdGVkIGFnYWluLlxuICAgICAqL1xuICAgIGFzeW5jIGdldFdyYXBwaW5nS2V5SWZOZWNlc3NhcnkocGFzc2NvZGUpIHtcbiAgICAgICAgaWYgKCF0aGlzLmhhc1Bhc3Njb2RlKCkpIHtcbiAgICAgICAgICAgIHJldHVybiB7fTtcbiAgICAgICAgfVxuICAgICAgICBpZiAoIXBhc3Njb2RlKSB7XG4gICAgICAgICAgICBjb25zdCBjaGFsbGVuZ2UgPSBuZXcgQ2hhbGxlbmdlKFtDaGFsbGVuZ2VUeXBlLkxvY2FsUGFzc2NvZGVdLCBDaGFsbGVuZ2VSZWFzb24uUmVzYXZlUm9vdEtleSk7XG4gICAgICAgICAgICBjb25zdCByZXNwb25zZSA9IGF3YWl0IHRoaXMuY2hhbGxlbmdlU2VydmljZS5wcm9tcHRGb3JDaGFsbGVuZ2VSZXNwb25zZShjaGFsbGVuZ2UpO1xuICAgICAgICAgICAgaWYgKCFyZXNwb25zZSkge1xuICAgICAgICAgICAgICAgIHJldHVybiB7IGNhbmNlbGVkOiB0cnVlIH07XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBjb25zdCB2YWx1ZSA9IHJlc3BvbnNlLmdldFZhbHVlRm9yVHlwZShDaGFsbGVuZ2VUeXBlLkxvY2FsUGFzc2NvZGUpO1xuICAgICAgICAgICAgcGFzc2NvZGUgPSB2YWx1ZS52YWx1ZTtcbiAgICAgICAgfVxuICAgICAgICBjb25zdCB3cmFwcGluZ0tleSA9IGF3YWl0IHRoaXMucHJvdG9jb2xTZXJ2aWNlLmNvbXB1dGVXcmFwcGluZ0tleShwYXNzY29kZSk7XG4gICAgICAgIHJldHVybiB7IHdyYXBwaW5nS2V5IH07XG4gICAgfVxuICAgIC8qKlxuICAgICAqICBAcGFyYW0gbWVyZ2VMb2NhbCAgV2hldGhlciB0byBtZXJnZSBleGlzdGluZyBvZmZsaW5lIGRhdGEgaW50byBhY2NvdW50LiBJZiBmYWxzZSxcbiAgICAgKiAgICAgICAgICAgICAgICAgICAgIGFueSBwcmUtZXhpc3RpbmcgZGF0YSB3aWxsIGJlIGZ1bGx5IGRlbGV0ZWQgdXBvbiBzdWNjZXNzLlxuICAgICAqL1xuICAgIGFzeW5jIHJlZ2lzdGVyKGVtYWlsLCBwYXNzd29yZCwgZXBoZW1lcmFsID0gZmFsc2UsIG1lcmdlTG9jYWwgPSB0cnVlKSB7XG4gICAgICAgIGNvbnN0IHsgd3JhcHBpbmdLZXksIGNhbmNlbGVkIH0gPSBhd2FpdCB0aGlzLmdldFdyYXBwaW5nS2V5SWZOZWNlc3NhcnkoKTtcbiAgICAgICAgaWYgKGNhbmNlbGVkKSB7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cbiAgICAgICAgdGhpcy5sb2NrU3luY2luZygpO1xuICAgICAgICBjb25zdCByZXN1bHQgPSBhd2FpdCB0aGlzLnNlc3Npb25NYW5hZ2VyLnJlZ2lzdGVyKGVtYWlsLCBwYXNzd29yZCk7XG4gICAgICAgIGlmICghcmVzdWx0LnJlc3BvbnNlLmVycm9yKSB7XG4gICAgICAgICAgICBhd2FpdCB0aGlzLnByb3RvY29sU2VydmljZS5zZXROZXdSb290S2V5KHJlc3VsdC5yb290S2V5LCByZXN1bHQua2V5UGFyYW1zLCB3cmFwcGluZ0tleSk7XG4gICAgICAgICAgICB0aGlzLnN5bmNTZXJ2aWNlLnJlc2V0U3luY1N0YXRlKCk7XG4gICAgICAgICAgICBhd2FpdCB0aGlzLnN0b3JhZ2VTZXJ2aWNlLnNldFBlcnNpc3RlbmNlUG9saWN5KGVwaGVtZXJhbFxuICAgICAgICAgICAgICAgID8gU3RvcmFnZVBlcnNpc3RlbmNlUG9saWNpZXMuRXBoZW1lcmFsXG4gICAgICAgICAgICAgICAgOiBTdG9yYWdlUGVyc2lzdGVuY2VQb2xpY2llcy5EZWZhdWx0KTtcbiAgICAgICAgICAgIGlmIChtZXJnZUxvY2FsKSB7XG4gICAgICAgICAgICAgICAgYXdhaXQgdGhpcy5zeW5jU2VydmljZS5tYXJrQWxsSXRlbXNBc05lZWRpbmdTeW5jKHRydWUpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICAgICAgdGhpcy5pdGVtTWFuYWdlci5yZW1vdmVBbGxJdGVtc0Zyb21NZW1vcnkoKTtcbiAgICAgICAgICAgICAgICBhd2FpdCB0aGlzLmNsZWFyRGF0YWJhc2UoKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGF3YWl0IHRoaXMubm90aWZ5RXZlbnQoQXBwbGljYXRpb25FdmVudC5TaWduZWRJbik7XG4gICAgICAgICAgICB0aGlzLnVubG9ja1N5bmNpbmcoKTtcbiAgICAgICAgICAgIGF3YWl0IHRoaXMuc3luY1NlcnZpY2Uuc3luYyh7XG4gICAgICAgICAgICAgICAgbW9kZTogU3luY01vZGVzLkRvd25sb2FkRmlyc3QsXG4gICAgICAgICAgICAgICAgcXVldWVTdHJhdGVneTogU3luY1F1ZXVlU3RyYXRlZ3kuRm9yY2VTcGF3bk5ld1xuICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICB0aGlzLnByb3RvY29sU2VydmljZS5kZWNyeXB0RXJyb3JlZEl0ZW1zKCk7XG4gICAgICAgIH1cbiAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICB0aGlzLnVubG9ja1N5bmNpbmcoKTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gcmVzdWx0LnJlc3BvbnNlO1xuICAgIH1cbiAgICAvKipcbiAgICAgKiBAcGFyYW0gbWVyZ2VMb2NhbCAgV2hldGhlciB0byBtZXJnZSBleGlzdGluZyBvZmZsaW5lIGRhdGEgaW50byBhY2NvdW50LlxuICAgICAqIElmIGZhbHNlLCBhbnkgcHJlLWV4aXN0aW5nIGRhdGEgd2lsbCBiZSBmdWxseSBkZWxldGVkIHVwb24gc3VjY2Vzcy5cbiAgICAgKi9cbiAgICBhc3luYyBzaWduSW4oZW1haWwsIHBhc3N3b3JkLCBzdHJpY3QgPSBmYWxzZSwgZXBoZW1lcmFsID0gZmFsc2UsIG1mYUtleVBhdGgsIG1mYUNvZGUsIG1lcmdlTG9jYWwgPSB0cnVlLCBhd2FpdFN5bmMgPSBmYWxzZSkge1xuICAgICAgICBjb25zdCB7IHdyYXBwaW5nS2V5LCBjYW5jZWxlZCB9ID0gYXdhaXQgdGhpcy5nZXRXcmFwcGluZ0tleUlmTmVjZXNzYXJ5KCk7XG4gICAgICAgIGlmIChjYW5jZWxlZCkge1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG4gICAgICAgIC8qKiBQcmV2ZW50IGEgdGltZWQgc3luYyBmcm9tIG9jY3VyaW5nIHdoaWxlIHNpZ25pbmcgaW4uICovXG4gICAgICAgIHRoaXMubG9ja1N5bmNpbmcoKTtcbiAgICAgICAgY29uc3QgcmVzdWx0ID0gYXdhaXQgdGhpcy5zZXNzaW9uTWFuYWdlci5zaWduSW4oZW1haWwsIHBhc3N3b3JkLCBzdHJpY3QsIG1mYUtleVBhdGgsIG1mYUNvZGUpO1xuICAgICAgICBpZiAoIXJlc3VsdC5yZXNwb25zZS5lcnJvcikge1xuICAgICAgICAgICAgYXdhaXQgdGhpcy5wcm90b2NvbFNlcnZpY2Uuc2V0TmV3Um9vdEtleShyZXN1bHQucm9vdEtleSwgcmVzdWx0LmtleVBhcmFtcywgd3JhcHBpbmdLZXkpO1xuICAgICAgICAgICAgdGhpcy5zeW5jU2VydmljZS5yZXNldFN5bmNTdGF0ZSgpO1xuICAgICAgICAgICAgYXdhaXQgdGhpcy5zdG9yYWdlU2VydmljZS5zZXRQZXJzaXN0ZW5jZVBvbGljeShlcGhlbWVyYWxcbiAgICAgICAgICAgICAgICA/IFN0b3JhZ2VQZXJzaXN0ZW5jZVBvbGljaWVzLkVwaGVtZXJhbFxuICAgICAgICAgICAgICAgIDogU3RvcmFnZVBlcnNpc3RlbmNlUG9saWNpZXMuRGVmYXVsdCk7XG4gICAgICAgICAgICBpZiAobWVyZ2VMb2NhbCkge1xuICAgICAgICAgICAgICAgIGF3YWl0IHRoaXMuc3luY1NlcnZpY2UubWFya0FsbEl0ZW1zQXNOZWVkaW5nU3luYyh0cnVlKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgICAgIHRoaXMuaXRlbU1hbmFnZXIucmVtb3ZlQWxsSXRlbXNGcm9tTWVtb3J5KCk7XG4gICAgICAgICAgICAgICAgYXdhaXQgdGhpcy5jbGVhckRhdGFiYXNlKCk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBhd2FpdCB0aGlzLm5vdGlmeUV2ZW50KEFwcGxpY2F0aW9uRXZlbnQuU2lnbmVkSW4pO1xuICAgICAgICAgICAgdGhpcy51bmxvY2tTeW5jaW5nKCk7XG4gICAgICAgICAgICBjb25zdCBzeW5jUHJvbWlzZSA9IHRoaXMuc3luY1NlcnZpY2Uuc3luYyh7XG4gICAgICAgICAgICAgICAgbW9kZTogU3luY01vZGVzLkRvd25sb2FkRmlyc3QsXG4gICAgICAgICAgICAgICAgY2hlY2tJbnRlZ3JpdHk6IHRydWUsXG4gICAgICAgICAgICAgICAgcXVldWVTdHJhdGVneTogU3luY1F1ZXVlU3RyYXRlZ3kuRm9yY2VTcGF3bk5ldyxcbiAgICAgICAgICAgICAgICBhd2FpdEFsbDogYXdhaXRTeW5jLFxuICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICBpZiAoYXdhaXRTeW5jKSB7XG4gICAgICAgICAgICAgICAgYXdhaXQgc3luY1Byb21pc2U7XG4gICAgICAgICAgICAgICAgYXdhaXQgdGhpcy5wcm90b2NvbFNlcnZpY2UuZGVjcnlwdEVycm9yZWRJdGVtcygpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICAgICAgdGhpcy5wcm90b2NvbFNlcnZpY2UuZGVjcnlwdEVycm9yZWRJdGVtcygpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgdGhpcy51bmxvY2tTeW5jaW5nKCk7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHJlc3VsdC5yZXNwb25zZTtcbiAgICB9XG4gICAgLyoqXG4gICAgICogQHBhcmFtIHBhc3Njb2RlIC0gQ2hhbmdpbmcgdGhlIGFjY291bnQgcGFzc3dvcmQgcmVxdWlyZXMgdGhlIGxvY2FsXG4gICAgICogcGFzc2NvZGUgaWYgY29uZmlndXJlZCAodG8gcmV3cmFwIHRoZSBhY2NvdW50IGtleSB3aXRoIHBhc3Njb2RlKS4gSWYgdGhlIHBhc3Njb2RlXG4gICAgICogaXMgbm90IHBhc3NlZCBpbiwgdGhlIHVzZXIgd2lsbCBiZSBwcm9tcHRlZCBmb3IgdGhlIHBhc3Njb2RlLiBIb3dldmVyIGlmIHRoZSBjb25zdW1lclxuICAgICAqIGFscmVhZHkgaGFzIHJlZmVyZW5lIHRvIHRoZSBwYXNzY29kZSwgdGhleSBjYW4gcGFzcyBpdCBpbiBoZXJlIHNvIHRoYXQgdGhlIHVzZXJcbiAgICAgKiBpcyBub3QgcHJvbXB0ZWQgYWdhaW4uXG4gICAgICovXG4gICAgYXN5bmMgY2hhbmdlUGFzc3dvcmQoY3VycmVudFBhc3N3b3JkLCBuZXdQYXNzd29yZCwgcGFzc2NvZGUsIHsgdmFsaWRhdGVQYXNzd29yZFN0cmVuZ3RoID0gdHJ1ZSB9ID0ge30pIHtcbiAgICAgICAgaWYgKHZhbGlkYXRlUGFzc3dvcmRTdHJlbmd0aCkge1xuICAgICAgICAgICAgaWYgKG5ld1Bhc3N3b3JkLmxlbmd0aCA8IE1JTklNVU1fUEFTU1dPUkRfTEVOR1RIKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIHsgZXJyb3I6IEVycm9yKEluc3VmZmljaWVudFBhc3N3b3JkTWVzc2FnZShNSU5JTVVNX1BBU1NXT1JEX0xFTkdUSCkpIH07XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgY29uc3QgeyB3cmFwcGluZ0tleSwgY2FuY2VsZWQgfSA9IGF3YWl0IHRoaXMuZ2V0V3JhcHBpbmdLZXlJZk5lY2Vzc2FyeShwYXNzY29kZSk7XG4gICAgICAgIGlmIChjYW5jZWxlZCkge1xuICAgICAgICAgICAgcmV0dXJuIHt9O1xuICAgICAgICB9XG4gICAgICAgIC8qKiBDaGFuZ2UgdGhlIHBhc3N3b3JkIGxvY2FsbHkgKi9cbiAgICAgICAgY29uc3QgW2Vycm9yLCBjaGFuZ2VQYXNzd29yZFJlc3VsdF0gPSBhd2FpdCB0aGlzLnByb3RvY29sU2VydmljZS5jaGFuZ2VQYXNzd29yZCh0aGlzLmdldFVzZXIoKS5lbWFpbCwgY3VycmVudFBhc3N3b3JkLCBuZXdQYXNzd29yZCwgd3JhcHBpbmdLZXkpO1xuICAgICAgICBpZiAoZXJyb3IpXG4gICAgICAgICAgICByZXR1cm4geyBlcnJvciB9O1xuICAgICAgICBjb25zdCB7IHByZXZpb3VzUm9vdEtleSwgbmV3Um9vdEtleSwgbmV3S2V5UGFyYW1zLCByb2xsYmFjazogcm9sbGJhY2tQYXNzd29yZENoYW5nZSB9ID0gY2hhbmdlUGFzc3dvcmRSZXN1bHQ7XG4gICAgICAgIC8qKiBTeW5jIHRoZSBuZXdseSBjcmVhdGVkIGl0ZW1zIGtleS4gUm9sbCBiYWNrIG9uIGZhaWx1cmUgKi9cbiAgICAgICAgYXdhaXQgdGhpcy5zeW5jU2VydmljZS5zeW5jKHsgYXdhaXRBbGw6IHRydWUgfSk7XG4gICAgICAgIGNvbnN0IGl0ZW1zS2V5V2FzU3luY2VkID0gdGhpcy5wcm90b2NvbFNlcnZpY2UuZ2V0RGVmYXVsdEl0ZW1zS2V5KCkudXBkYXRlZF9hdC5nZXRUaW1lKCkgPiAwO1xuICAgICAgICBpZiAoIWl0ZW1zS2V5V2FzU3luY2VkKSB7XG4gICAgICAgICAgICBhd2FpdCByb2xsYmFja1Bhc3N3b3JkQ2hhbmdlKCk7XG4gICAgICAgICAgICBhd2FpdCB0aGlzLnN5bmNTZXJ2aWNlLnN5bmMoeyBhd2FpdEFsbDogdHJ1ZSB9KTtcbiAgICAgICAgICAgIHJldHVybiB7IGVycm9yOiBFcnJvcihBUElfTUVTU0FHRV9HRU5FUklDX1NZTkNfRkFJTCkgfTtcbiAgICAgICAgfVxuICAgICAgICB0aGlzLmxvY2tTeW5jaW5nKCk7XG4gICAgICAgIC8qKiBOb3csIGNoYW5nZSB0aGUgcGFzc3dvcmQgb24gdGhlIHNlcnZlci4gUm9sbCBiYWNrIG9uIGZhaWx1cmUgKi9cbiAgICAgICAgY29uc3QgcmVzcG9uc2UgPSBhd2FpdCB0aGlzLnNlc3Npb25NYW5hZ2VyLmNoYW5nZVBhc3N3b3JkKHByZXZpb3VzUm9vdEtleS5zZXJ2ZXJQYXNzd29yZCwgbmV3Um9vdEtleS5zZXJ2ZXJQYXNzd29yZCwgbmV3S2V5UGFyYW1zKTtcbiAgICAgICAgaWYgKHJlc3BvbnNlLmVycm9yKSB7XG4gICAgICAgICAgICBhd2FpdCByb2xsYmFja1Bhc3N3b3JkQ2hhbmdlKCk7XG4gICAgICAgICAgICBhd2FpdCB0aGlzLnN5bmNTZXJ2aWNlLnN5bmMoeyBhd2FpdEFsbDogdHJ1ZSB9KTtcbiAgICAgICAgfVxuICAgICAgICB0aGlzLnVubG9ja1N5bmNpbmcoKTtcbiAgICAgICAgcmV0dXJuIHJlc3BvbnNlO1xuICAgIH1cbiAgICBhc3luYyBzaWduT3V0KCkge1xuICAgICAgICBhd2FpdCB0aGlzLnNlc3Npb25NYW5hZ2VyLnNpZ25PdXQoKTtcbiAgICAgICAgYXdhaXQgdGhpcy5wcm90b2NvbFNlcnZpY2UuY2xlYXJMb2NhbEtleVN0YXRlKCk7XG4gICAgICAgIGF3YWl0IHRoaXMuc3RvcmFnZVNlcnZpY2UuY2xlYXJBbGxEYXRhKCk7XG4gICAgICAgIGF3YWl0IHRoaXMubm90aWZ5RXZlbnQoQXBwbGljYXRpb25FdmVudC5TaWduZWRPdXQpO1xuICAgICAgICBhd2FpdCB0aGlzLnByZXBhcmVGb3JEZWluaXQoKTtcbiAgICAgICAgdGhpcy5kZWluaXQoKTtcbiAgICB9XG4gICAgYXN5bmMgdmFsaWRhdGVBY2NvdW50UGFzc3dvcmQocGFzc3dvcmQpIHtcbiAgICAgICAgY29uc3QgeyB2YWxpZCB9ID0gYXdhaXQgdGhpcy5wcm90b2NvbFNlcnZpY2UudmFsaWRhdGVBY2NvdW50UGFzc3dvcmQocGFzc3dvcmQpO1xuICAgICAgICByZXR1cm4gdmFsaWQ7XG4gICAgfVxuICAgIGlzU3RhcnRlZCgpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuc3RhcnRlZDtcbiAgICB9XG4gICAgaXNMYXVuY2hlZCgpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMubGF1bmNoZWQ7XG4gICAgfVxuICAgIGhhc1Bhc3Njb2RlKCkge1xuICAgICAgICByZXR1cm4gdGhpcy5wcm90b2NvbFNlcnZpY2UuaGFzUGFzc2NvZGUoKTtcbiAgICB9XG4gICAgYXN5bmMgaXNMb2NrZWQoKSB7XG4gICAgICAgIGlmICghdGhpcy5zdGFydGVkKSB7XG4gICAgICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gdGhpcy5jaGFsbGVuZ2VTZXJ2aWNlLmlzUGFzc2NvZGVMb2NrZWQoKTtcbiAgICB9XG4gICAgYXN5bmMgbG9jaygpIHtcbiAgICAgICAgLyoqIEJlY2F1c2UgbG9ja2luZyBpcyBhIGNyaXRpY2FsIG9wZXJhdGlvbiwgd2Ugd2FudCB0byB0cnkgdG8gZG8gaXQgc2FmZWx5LFxuICAgICAgICAgKiBidXQgb25seSB1cCB0byBhIGNlcnRhaW4gbGltaXQuICovXG4gICAgICAgIGNvbnN0IE1heGltdW1XYWl0VGltZSA9IDUwMDtcbiAgICAgICAgYXdhaXQgdGhpcy5wcmVwYXJlRm9yRGVpbml0KE1heGltdW1XYWl0VGltZSk7XG4gICAgICAgIHJldHVybiB0aGlzLmRlaW5pdCgpO1xuICAgIH1cbiAgICBhc3luYyBzZXRQYXNzY29kZShwYXNzY29kZSkge1xuICAgICAgICBjb25zdCBpZGVudGlmaWVyID0gYXdhaXQgdGhpcy5nZW5lcmF0ZVV1aWQoKTtcbiAgICAgICAgY29uc3QgeyBrZXksIGtleVBhcmFtcyB9ID0gYXdhaXQgdGhpcy5wcm90b2NvbFNlcnZpY2UuY3JlYXRlUm9vdEtleShpZGVudGlmaWVyLCBwYXNzY29kZSk7XG4gICAgICAgIGF3YWl0IHRoaXMucHJvdG9jb2xTZXJ2aWNlLnNldE5ld1Jvb3RLZXlXcmFwcGVyKGtleSwga2V5UGFyYW1zKTtcbiAgICAgICAgYXdhaXQgdGhpcy5yZXdyaXRlSXRlbXNLZXlzKCk7XG4gICAgICAgIGF3YWl0IHRoaXMuc3luY1NlcnZpY2Uuc3luYygpO1xuICAgIH1cbiAgICBhc3luYyByZW1vdmVQYXNzY29kZSgpIHtcbiAgICAgICAgYXdhaXQgdGhpcy5wcm90b2NvbFNlcnZpY2UucmVtb3ZlUm9vdEtleVdyYXBwZXIoKTtcbiAgICAgICAgYXdhaXQgdGhpcy5yZXdyaXRlSXRlbXNLZXlzKCk7XG4gICAgfVxuICAgIGFzeW5jIGNoYW5nZVBhc3Njb2RlKHBhc3Njb2RlKSB7XG4gICAgICAgIGF3YWl0IHRoaXMucmVtb3ZlUGFzc2NvZGUoKTtcbiAgICAgICAgcmV0dXJuIHRoaXMuc2V0UGFzc2NvZGUocGFzc2NvZGUpO1xuICAgIH1cbiAgICBhc3luYyBzZXRTdG9yYWdlRW5jcnlwdGlvblBvbGljeShlbmNyeXB0aW9uUG9saWN5KSB7XG4gICAgICAgIGF3YWl0IHRoaXMuc3RvcmFnZVNlcnZpY2Uuc2V0RW5jcnlwdGlvblBvbGljeShlbmNyeXB0aW9uUG9saWN5KTtcbiAgICAgICAgcmV0dXJuIHRoaXMucHJvdG9jb2xTZXJ2aWNlLnJlcGVyc2lzdEFsbEl0ZW1zKCk7XG4gICAgfVxuICAgIGFzeW5jIGdlbmVyYXRlVXVpZCgpIHtcbiAgICAgICAgcmV0dXJuIFV1aWQuR2VuZXJhdGVVdWlkKCk7XG4gICAgfVxuICAgIC8qKlxuICAgICAqIER5bmFtaWNhbGx5IGNoYW5nZSB0aGUgZGV2aWNlIGludGVyZmFjZSwgaS5lIHdoZW4gRGVza3RvcCB3YW50cyB0byBvdmVycmlkZVxuICAgICAqIGRlZmF1bHQgd2ViIGludGVyZmFjZS5cbiAgICAgKi9cbiAgICBhc3luYyBjaGFuZ2VEZXZpY2VJbnRlcmZhY2UoZGV2aWNlSW50ZXJmYWNlKSB7XG4gICAgICAgIHRoaXMuZGV2aWNlSW50ZXJmYWNlID0gZGV2aWNlSW50ZXJmYWNlO1xuICAgICAgICBmb3IgKGNvbnN0IHNlcnZpY2Ugb2YgdGhpcy5zZXJ2aWNlcykge1xuICAgICAgICAgICAgaWYgKHNlcnZpY2UuZGV2aWNlSW50ZXJmYWNlKSB7XG4gICAgICAgICAgICAgICAgc2VydmljZS5kZXZpY2VJbnRlcmZhY2UgPSBkZXZpY2VJbnRlcmZhY2U7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICB9XG4gICAgY29uc3RydWN0U2VydmljZXMoKSB7XG4gICAgICAgIHRoaXMuY3JlYXRlTW9kZWxNYW5hZ2VyKCk7XG4gICAgICAgIHRoaXMuY3JlYXRlSXRlbU1hbmFnZXIoKTtcbiAgICAgICAgdGhpcy5jcmVhdGVTdG9yYWdlTWFuYWdlcigpO1xuICAgICAgICB0aGlzLmNyZWF0ZVByb3RvY29sU2VydmljZSgpO1xuICAgICAgICBjb25zdCBlbmNyeXB0aW9uRGVsZWdhdGUgPSB7XG4gICAgICAgICAgICBwYXlsb2FkQnlFbmNyeXB0aW5nUGF5bG9hZDogdGhpcy5wcm90b2NvbFNlcnZpY2UucGF5bG9hZEJ5RW5jcnlwdGluZ1BheWxvYWQuYmluZCh0aGlzLnByb3RvY29sU2VydmljZSksXG4gICAgICAgICAgICBwYXlsb2FkQnlEZWNyeXB0aW5nUGF5bG9hZDogdGhpcy5wcm90b2NvbFNlcnZpY2UucGF5bG9hZEJ5RGVjcnlwdGluZ1BheWxvYWQuYmluZCh0aGlzLnByb3RvY29sU2VydmljZSlcbiAgICAgICAgfTtcbiAgICAgICAgdGhpcy5zdG9yYWdlU2VydmljZS5lbmNyeXB0aW9uRGVsZWdhdGUgPSBlbmNyeXB0aW9uRGVsZWdhdGU7XG4gICAgICAgIHRoaXMuY3JlYXRlQ2hhbGxlbmdlU2VydmljZSgpO1xuICAgICAgICB0aGlzLmNyZWF0ZU1pZ3JhdGlvblNlcnZpY2UoKTtcbiAgICAgICAgdGhpcy5jcmVhdGVBbGVydE1hbmFnZXIoKTtcbiAgICAgICAgdGhpcy5jcmVhdGVIdHRwTWFuYWdlcigpO1xuICAgICAgICB0aGlzLmNyZWF0ZUFwaVNlcnZpY2UoKTtcbiAgICAgICAgdGhpcy5jcmVhdGVTZXNzaW9uTWFuYWdlcigpO1xuICAgICAgICB0aGlzLmNyZWF0ZVN5bmNNYW5hZ2VyKCk7XG4gICAgICAgIHRoaXMuY3JlYXRlU2luZ2xldG9uTWFuYWdlcigpO1xuICAgICAgICB0aGlzLmNyZWF0ZUNvbXBvbmVudE1hbmFnZXIoKTtcbiAgICAgICAgdGhpcy5jcmVhdGVQcml2aWxlZ2VzU2VydmljZSgpO1xuICAgICAgICB0aGlzLmNyZWF0ZUhpc3RvcnlNYW5hZ2VyKCk7XG4gICAgICAgIHRoaXMuY3JlYXRlQWN0aW9uc01hbmFnZXIoKTtcbiAgICB9XG4gICAgY2xlYXJTZXJ2aWNlcygpIHtcbiAgICAgICAgdGhpcy5taWdyYXRpb25TZXJ2aWNlID0gdW5kZWZpbmVkO1xuICAgICAgICB0aGlzLmFsZXJ0U2VydmljZSA9IHVuZGVmaW5lZDtcbiAgICAgICAgdGhpcy5odHRwU2VydmljZSA9IHVuZGVmaW5lZDtcbiAgICAgICAgdGhpcy5tb2RlbE1hbmFnZXIgPSB1bmRlZmluZWQ7XG4gICAgICAgIHRoaXMucHJvdG9jb2xTZXJ2aWNlID0gdW5kZWZpbmVkO1xuICAgICAgICB0aGlzLnN0b3JhZ2VTZXJ2aWNlID0gdW5kZWZpbmVkO1xuICAgICAgICB0aGlzLmFwaVNlcnZpY2UgPSB1bmRlZmluZWQ7XG4gICAgICAgIHRoaXMuc2Vzc2lvbk1hbmFnZXIgPSB1bmRlZmluZWQ7XG4gICAgICAgIHRoaXMuc3luY1NlcnZpY2UgPSB1bmRlZmluZWQ7XG4gICAgICAgIHRoaXMuY2hhbGxlbmdlU2VydmljZSA9IHVuZGVmaW5lZDtcbiAgICAgICAgdGhpcy5zaW5nbGV0b25NYW5hZ2VyID0gdW5kZWZpbmVkO1xuICAgICAgICB0aGlzLmNvbXBvbmVudE1hbmFnZXIgPSB1bmRlZmluZWQ7XG4gICAgICAgIHRoaXMucHJpdmlsZWdlc1NlcnZpY2UgPSB1bmRlZmluZWQ7XG4gICAgICAgIHRoaXMuYWN0aW9uc01hbmFnZXIgPSB1bmRlZmluZWQ7XG4gICAgICAgIHRoaXMuaGlzdG9yeU1hbmFnZXIgPSB1bmRlZmluZWQ7XG4gICAgICAgIHRoaXMuaXRlbU1hbmFnZXIgPSB1bmRlZmluZWQ7XG4gICAgICAgIHRoaXMuc2VydmljZXMgPSBbXTtcbiAgICB9XG4gICAgY3JlYXRlTWlncmF0aW9uU2VydmljZSgpIHtcbiAgICAgICAgdGhpcy5taWdyYXRpb25TZXJ2aWNlID0gbmV3IFNOTWlncmF0aW9uU2VydmljZSh7XG4gICAgICAgICAgICBwcm90b2NvbFNlcnZpY2U6IHRoaXMucHJvdG9jb2xTZXJ2aWNlLFxuICAgICAgICAgICAgZGV2aWNlSW50ZXJmYWNlOiB0aGlzLmRldmljZUludGVyZmFjZSxcbiAgICAgICAgICAgIHN0b3JhZ2VTZXJ2aWNlOiB0aGlzLnN0b3JhZ2VTZXJ2aWNlLFxuICAgICAgICAgICAgY2hhbGxlbmdlU2VydmljZTogdGhpcy5jaGFsbGVuZ2VTZXJ2aWNlLFxuICAgICAgICAgICAgaXRlbU1hbmFnZXI6IHRoaXMuaXRlbU1hbmFnZXIsXG4gICAgICAgICAgICBlbnZpcm9ubWVudDogdGhpcy5lbnZpcm9ubWVudCxcbiAgICAgICAgICAgIG5hbWVzcGFjZTogdGhpcy5uYW1lc3BhY2VcbiAgICAgICAgfSk7XG4gICAgICAgIHRoaXMuc2VydmljZXMucHVzaCh0aGlzLm1pZ3JhdGlvblNlcnZpY2UpO1xuICAgIH1cbiAgICBjcmVhdGVBbGVydE1hbmFnZXIoKSB7XG4gICAgICAgIGlmICh0aGlzLnNob3VsZFNraXBDbGFzcyhTTkFsZXJ0U2VydmljZSkpIHtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuICAgICAgICB0aGlzLmFsZXJ0U2VydmljZSA9IG5ldyAodGhpcy5nZXRDbGFzcyhTTkFsZXJ0U2VydmljZSkpKHRoaXMuZGV2aWNlSW50ZXJmYWNlKTtcbiAgICAgICAgdGhpcy5zZXJ2aWNlcy5wdXNoKHRoaXMuYWxlcnRTZXJ2aWNlKTtcbiAgICB9XG4gICAgY3JlYXRlQXBpU2VydmljZSgpIHtcbiAgICAgICAgdGhpcy5hcGlTZXJ2aWNlID0gbmV3IFNOQXBpU2VydmljZSh0aGlzLmh0dHBTZXJ2aWNlLCB0aGlzLnN0b3JhZ2VTZXJ2aWNlKTtcbiAgICAgICAgdGhpcy5zZXJ2aWNlcy5wdXNoKHRoaXMuYXBpU2VydmljZSk7XG4gICAgfVxuICAgIGNyZWF0ZUl0ZW1NYW5hZ2VyKCkge1xuICAgICAgICB0aGlzLml0ZW1NYW5hZ2VyID0gbmV3IEl0ZW1NYW5hZ2VyKHRoaXMubW9kZWxNYW5hZ2VyKTtcbiAgICAgICAgdGhpcy5zZXJ2aWNlcy5wdXNoKHRoaXMuaXRlbU1hbmFnZXIpO1xuICAgIH1cbiAgICBjcmVhdGVDb21wb25lbnRNYW5hZ2VyKCkge1xuICAgICAgICBpZiAodGhpcy5zaG91bGRTa2lwQ2xhc3MoU05Db21wb25lbnRNYW5hZ2VyKSkge1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG4gICAgICAgIHRoaXMuY29tcG9uZW50TWFuYWdlciA9IG5ldyBTTkNvbXBvbmVudE1hbmFnZXIodGhpcy5pdGVtTWFuYWdlciwgdGhpcy5zeW5jU2VydmljZSwgdGhpcy5hbGVydFNlcnZpY2UsIHRoaXMuZW52aXJvbm1lbnQsIHRoaXMucGxhdGZvcm0sIHRoaXMuZGV2aWNlSW50ZXJmYWNlLnRpbWVvdXQpO1xuICAgICAgICB0aGlzLnNlcnZpY2VzLnB1c2godGhpcy5jb21wb25lbnRNYW5hZ2VyKTtcbiAgICB9XG4gICAgY3JlYXRlSHR0cE1hbmFnZXIoKSB7XG4gICAgICAgIHRoaXMuaHR0cFNlcnZpY2UgPSBuZXcgU05IdHRwU2VydmljZSgpO1xuICAgICAgICB0aGlzLnNlcnZpY2VzLnB1c2godGhpcy5odHRwU2VydmljZSk7XG4gICAgfVxuICAgIGNyZWF0ZU1vZGVsTWFuYWdlcigpIHtcbiAgICAgICAgdGhpcy5tb2RlbE1hbmFnZXIgPSBuZXcgUGF5bG9hZE1hbmFnZXIoKTtcbiAgICAgICAgdGhpcy5zZXJ2aWNlcy5wdXNoKHRoaXMubW9kZWxNYW5hZ2VyKTtcbiAgICB9XG4gICAgY3JlYXRlU2luZ2xldG9uTWFuYWdlcigpIHtcbiAgICAgICAgdGhpcy5zaW5nbGV0b25NYW5hZ2VyID0gbmV3IFNOU2luZ2xldG9uTWFuYWdlcih0aGlzLml0ZW1NYW5hZ2VyLCB0aGlzLnN5bmNTZXJ2aWNlKTtcbiAgICAgICAgdGhpcy5zZXJ2aWNlcy5wdXNoKHRoaXMuc2luZ2xldG9uTWFuYWdlcik7XG4gICAgfVxuICAgIGNyZWF0ZVN0b3JhZ2VNYW5hZ2VyKCkge1xuICAgICAgICB0aGlzLnN0b3JhZ2VTZXJ2aWNlID0gbmV3IFNOU3RvcmFnZVNlcnZpY2UodGhpcy5kZXZpY2VJbnRlcmZhY2UsIHRoaXMubmFtZXNwYWNlKTtcbiAgICAgICAgdGhpcy5zZXJ2aWNlcy5wdXNoKHRoaXMuc3RvcmFnZVNlcnZpY2UpO1xuICAgIH1cbiAgICBjcmVhdGVQcm90b2NvbFNlcnZpY2UoKSB7XG4gICAgICAgIHRoaXMucHJvdG9jb2xTZXJ2aWNlID0gbmV3IFNOUHJvdG9jb2xTZXJ2aWNlKHRoaXMuaXRlbU1hbmFnZXIsIHRoaXMubW9kZWxNYW5hZ2VyLCB0aGlzLmRldmljZUludGVyZmFjZSwgdGhpcy5zdG9yYWdlU2VydmljZSwgdGhpcy5jcnlwdG8pO1xuICAgICAgICB0aGlzLnByb3RvY29sU2VydmljZS5vbktleVN0YXR1c0NoYW5nZShhc3luYyAoKSA9PiB7XG4gICAgICAgICAgICBhd2FpdCB0aGlzLm5vdGlmeUV2ZW50KEFwcGxpY2F0aW9uRXZlbnQuS2V5U3RhdHVzQ2hhbmdlZCk7XG4gICAgICAgIH0pO1xuICAgICAgICB0aGlzLnNlcnZpY2VzLnB1c2godGhpcy5wcm90b2NvbFNlcnZpY2UpO1xuICAgIH1cbiAgICBjcmVhdGVTZXNzaW9uTWFuYWdlcigpIHtcbiAgICAgICAgdGhpcy5zZXNzaW9uTWFuYWdlciA9IG5ldyBTTlNlc3Npb25NYW5hZ2VyKHRoaXMuc3RvcmFnZVNlcnZpY2UsIHRoaXMuYXBpU2VydmljZSwgdGhpcy5hbGVydFNlcnZpY2UsIHRoaXMucHJvdG9jb2xTZXJ2aWNlKTtcbiAgICAgICAgdGhpcy5zZXJ2aWNlcy5wdXNoKHRoaXMuc2Vzc2lvbk1hbmFnZXIpO1xuICAgIH1cbiAgICBjcmVhdGVTeW5jTWFuYWdlcigpIHtcbiAgICAgICAgdGhpcy5zeW5jU2VydmljZSA9IG5ldyBTTlN5bmNTZXJ2aWNlKHRoaXMuaXRlbU1hbmFnZXIsIHRoaXMuc2Vzc2lvbk1hbmFnZXIsIHRoaXMucHJvdG9jb2xTZXJ2aWNlLCB0aGlzLnN0b3JhZ2VTZXJ2aWNlLCB0aGlzLm1vZGVsTWFuYWdlciwgdGhpcy5hcGlTZXJ2aWNlLCB0aGlzLmRldmljZUludGVyZmFjZS5pbnRlcnZhbCk7XG4gICAgICAgIGNvbnN0IHN5bmNFdmVudENhbGxiYWNrID0gYXN5bmMgKGV2ZW50TmFtZSkgPT4ge1xuICAgICAgICAgICAgY29uc3QgYXBwRXZlbnQgPSBhcHBsaWNhdGlvbkV2ZW50Rm9yU3luY0V2ZW50KGV2ZW50TmFtZSk7XG4gICAgICAgICAgICBpZiAoYXBwRXZlbnQpIHtcbiAgICAgICAgICAgICAgICBhd2FpdCB0aGlzLm5vdGlmeUV2ZW50KGFwcEV2ZW50KTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGF3YWl0IHRoaXMucHJvdG9jb2xTZXJ2aWNlLm9uU3luY0V2ZW50KGV2ZW50TmFtZSk7XG4gICAgICAgIH07XG4gICAgICAgIGNvbnN0IHVuaW5zdGFsbCA9IHRoaXMuc3luY1NlcnZpY2UuYWRkRXZlbnRPYnNlcnZlcihzeW5jRXZlbnRDYWxsYmFjayk7XG4gICAgICAgIHRoaXMuc2VydmljZU9ic2VydmVycy5wdXNoKHVuaW5zdGFsbCk7XG4gICAgICAgIHRoaXMuc2VydmljZXMucHVzaCh0aGlzLnN5bmNTZXJ2aWNlKTtcbiAgICB9XG4gICAgY3JlYXRlQ2hhbGxlbmdlU2VydmljZSgpIHtcbiAgICAgICAgdGhpcy5jaGFsbGVuZ2VTZXJ2aWNlID0gbmV3IENoYWxsZW5nZVNlcnZpY2UodGhpcy5zdG9yYWdlU2VydmljZSwgdGhpcy5wcm90b2NvbFNlcnZpY2UpO1xuICAgICAgICB0aGlzLnNlcnZpY2VzLnB1c2godGhpcy5jaGFsbGVuZ2VTZXJ2aWNlKTtcbiAgICB9XG4gICAgY3JlYXRlUHJpdmlsZWdlc1NlcnZpY2UoKSB7XG4gICAgICAgIHRoaXMucHJpdmlsZWdlc1NlcnZpY2UgPSBuZXcgU05Qcml2aWxlZ2VzU2VydmljZSh0aGlzLml0ZW1NYW5hZ2VyLCB0aGlzLnN5bmNTZXJ2aWNlLCB0aGlzLnNpbmdsZXRvbk1hbmFnZXIsIHRoaXMucHJvdG9jb2xTZXJ2aWNlLCB0aGlzLnN0b3JhZ2VTZXJ2aWNlLCB0aGlzLnNlc3Npb25NYW5hZ2VyKTtcbiAgICAgICAgdGhpcy5zZXJ2aWNlcy5wdXNoKHRoaXMucHJpdmlsZWdlc1NlcnZpY2UpO1xuICAgIH1cbiAgICBjcmVhdGVIaXN0b3J5TWFuYWdlcigpIHtcbiAgICAgICAgdGhpcy5oaXN0b3J5TWFuYWdlciA9IG5ldyBTTkhpc3RvcnlNYW5hZ2VyKHRoaXMuaXRlbU1hbmFnZXIsIHRoaXMuc3RvcmFnZVNlcnZpY2UsIFtDb250ZW50VHlwZS5Ob3RlXSwgdGhpcy5kZXZpY2VJbnRlcmZhY2UudGltZW91dCk7XG4gICAgICAgIHRoaXMuc2VydmljZXMucHVzaCh0aGlzLmhpc3RvcnlNYW5hZ2VyKTtcbiAgICB9XG4gICAgY3JlYXRlQWN0aW9uc01hbmFnZXIoKSB7XG4gICAgICAgIHRoaXMuYWN0aW9uc01hbmFnZXIgPSBuZXcgU05BY3Rpb25zU2VydmljZSh0aGlzLml0ZW1NYW5hZ2VyLCB0aGlzLmFsZXJ0U2VydmljZSwgdGhpcy5kZXZpY2VJbnRlcmZhY2UsIHRoaXMuaHR0cFNlcnZpY2UsIHRoaXMubW9kZWxNYW5hZ2VyLCB0aGlzLnByb3RvY29sU2VydmljZSwgdGhpcy5zeW5jU2VydmljZSk7XG4gICAgICAgIHRoaXMuc2VydmljZXMucHVzaCh0aGlzLmFjdGlvbnNNYW5hZ2VyKTtcbiAgICB9XG4gICAgc2hvdWxkU2tpcENsYXNzKGNsYXNzQ2FuZGlkYXRlKSB7XG4gICAgICAgIHJldHVybiB0aGlzLnNraXBDbGFzc2VzICYmIHRoaXMuc2tpcENsYXNzZXMuaW5jbHVkZXMoY2xhc3NDYW5kaWRhdGUpO1xuICAgIH1cbiAgICBnZXRDbGFzcyhiYXNlKSB7XG4gICAgICAgIGNvbnN0IHN3YXBDbGFzcyA9IHRoaXMuc3dhcENsYXNzZXMgJiYgdGhpcy5zd2FwQ2xhc3Nlcy5maW5kKChjYW5kaWRhdGUpID0+IGNhbmRpZGF0ZS5zd2FwID09PSBiYXNlKTtcbiAgICAgICAgaWYgKHN3YXBDbGFzcykge1xuICAgICAgICAgICAgcmV0dXJuIHN3YXBDbGFzcy53aXRoO1xuICAgICAgICB9XG4gICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgcmV0dXJuIGJhc2U7XG4gICAgICAgIH1cbiAgICB9XG59XG4iXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFBQTtBQUNBOzs7Ozs7Ozs7Ozs7O0FBYUE7QUFBQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7Ozs7O0FBakRBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFDQTtBQURBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFzREE7QUF0REE7QUFBQTtBQXlEQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBNURBO0FBdURBO0FBS0E7QUE1REE7QUFBQTtBQUNBO0FBREE7QUFBQTtBQUFBO0FBQ0E7QUFEQTtBQUFBO0FBQUE7QUFDQTtBQURBO0FBQUE7QUFBQTtBQUNBO0FBREE7QUFBQTtBQUFBO0FBQ0E7QUFEQTtBQWtFQTtBQWxFQTtBQUFBO0FBQ0E7QUFEQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUNBO0FBREE7QUFBQTtBQUFBO0FBQ0E7QUFEQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBc0VBO0FBQ0E7QUFDQTs7Ozs7Ozs7QUF4RUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUNBO0FBREE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUErRUE7QUFDQTtBQWhGQTtBQUFBO0FBQ0E7QUFEQTtBQWlGQTtBQUNBO0FBbEZBO0FBQUE7QUFBQTtBQUFBO0FBQ0E7QUFEQTtBQUFBO0FBQ0E7QUFEQTtBQW1GQTtBQUNBO0FBcEZBO0FBQUE7QUFBQTtBQUFBO0FBQ0E7QUFEQTtBQUNBO0FBREE7QUFBQTtBQUFBO0FBQ0E7QUFEQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQ0E7QUFEQTtBQUFBO0FBQ0E7QUFEQTtBQUFBO0FBQUE7QUFDQTtBQURBO0FBQUE7QUFBQTtBQUNBO0FBREE7QUFBQTtBQUFBO0FBQ0E7QUFEQTtBQStGQTtBQUNBO0FBaEdBO0FBQUE7QUFDQTtBQURBO0FBQUE7QUFBQTtBQUNBO0FBREE7QUFBQTtBQUFBO0FBQ0E7QUFEQTtBQW1HQTtBQW5HQTtBQUFBO0FBQ0E7QUFEQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQ0E7QUFEQTtBQUFBO0FBQ0E7QUFEQTtBQXdHQTs7Ozs7QUFLQTtBQUNBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFDQTtBQURBO0FBQ0E7QUFEQTtBQUFBO0FBQUE7QUFDQTtBQURBO0FBS0E7QUFDQTtBQU5BO0FBT0E7QUFEQTtBQUNBO0FBUEE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFDQTtBQS9HQTtBQUFBO0FBQUE7QUFBQTtBQUNBO0FBREE7QUFBQTtBQUNBO0FBREE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFDQTtBQURBO0FBQUE7QUFBQTtBQUNBO0FBREE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQ0E7QUE2SEE7QUFDQTtBQS9IQTtBQUFBO0FBQUE7QUFBQTtBQUNBO0FBK0hBO0FBaElBO0FBQUE7QUFDQTtBQURBO0FBaUlBO0FBQ0E7QUFsSUE7QUFBQTtBQUFBO0FBQ0E7QUFEQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUNBO0FBREE7QUFBQTtBQUFBO0FBQ0E7QUFEQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBc0lBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUEzSUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUNBO0FBREE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQ0E7QUFEQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQ0E7QUE0SUE7QUE3SUE7QUFBQTtBQUNBO0FBREE7QUFBQTtBQUFBO0FBQUE7QUFDQTtBQURBO0FBQUE7QUFBQTtBQUNBO0FBREE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUNBO0FBREE7QUFBQTtBQUFBO0FBQ0E7QUFEQTtBQUFBO0FBQUE7QUFDQTtBQURBO0FBQUE7QUFDQTtBQURBO0FBQUE7QUFBQTtBQUFBO0FBQ0E7QUFEQTtBQUNBO0FBREE7QUFBQTtBQUNBO0FBREE7QUFBQTtBQUNBO0FBREE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFDQTtBQURBO0FBQUE7QUFBQTtBQUNBO0FBREE7QUFBQTtBQWlKQTs7OztBQWpKQTtBQUFBO0FBQUE7QUFvSkE7QUFDQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQTFKQTtBQUFBO0FBQUE7QUE0SkE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFKQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUNBO0FBREE7QUFBQTtBQUFBO0FBQUE7QUFDQTtBQUlBO0FBQ0E7QUFsS0E7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUNBO0FBREE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQ0E7QUFEQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQ0E7QUFtS0E7QUFDQTtBQXJLQTtBQUFBO0FBQUE7QUFBQTtBQUNBO0FBREE7QUFBQTtBQUNBO0FBREE7QUFBQTtBQUFBO0FBQ0E7QUFEQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQ0E7QUFEQTtBQUFBO0FBQ0E7QUFEQTtBQUFBO0FBQUE7QUFBQTtBQUNBO0FBREE7QUFBQTtBQUFBO0FBQ0E7QUFEQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQ0E7QUFEQTtBQUFBO0FBQUE7QUFDQTtBQURBO0FBQUE7QUFBQTtBQUNBO0FBREE7QUFBQTtBQUNBO0FBREE7QUFBQTtBQUFBO0FBQUE7QUFDQTtBQURBO0FBQ0E7QUFEQTtBQUFBO0FBQ0E7QUFEQTtBQUFBO0FBQ0E7QUFEQTtBQTRLQTtBQUNBO0FBN0tBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQ0E7QUFEQTtBQUFBO0FBQUE7QUFDQTtBQURBO0FBQUE7QUE4S0E7Ozs7QUE5S0E7QUFBQTtBQUFBO0FBa0xBO0FBQ0E7QUFuTEE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBcUxBO0FBQ0E7QUFDQTtBQUZBO0FBckxBO0FBQUE7QUFDQTtBQURBO0FBQUE7QUFBQTtBQUNBO0FBREE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFDQTtBQURBO0FBQUE7QUFBQTtBQUNBO0FBREE7QUFBQTtBQTRMQTs7OztBQTVMQTtBQUFBO0FBQUE7QUFnTUE7QUFDQTtBQUNBOzs7O0FBbE1BO0FBQUE7QUFBQTtBQXNNQTtBQUNBO0FBQ0E7Ozs7QUF4TUE7QUFBQTtBQUFBO0FBNE1BO0FBQ0E7QUFDQTs7OztBQTlNQTtBQUFBO0FBQUE7QUFrTkE7QUFDQTtBQUNBOzs7O0FBcE5BO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUNBO0FBREE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFDQTtBQURBO0FBQUE7QUFBQTtBQUNBO0FBREE7QUFBQTtBQTBOQTs7Ozs7QUExTkE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBOE5BO0FBQUE7QUE5TkE7QUFBQTtBQUNBO0FBREE7QUErTkE7QUEvTkE7QUFDQTtBQURBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQ0E7QUFEQTtBQUFBO0FBQUE7QUFDQTtBQURBO0FBQUE7QUFrT0E7Ozs7O0FBbE9BO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFDQTtBQURBO0FBdU9BO0FBdk9BO0FBQ0E7QUFEQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUNBO0FBREE7QUFBQTtBQUFBO0FBQ0E7QUFEQTtBQUFBO0FBME9BOzs7O0FBMU9BO0FBQUE7QUFBQTtBQThPQTtBQUNBO0FBQ0E7Ozs7O0FBaFBBO0FBQUE7QUFBQTtBQXFQQTtBQUNBO0FBQ0E7Ozs7QUF2UEE7QUFBQTtBQUFBO0FBMlBBO0FBQ0E7QUE1UEE7QUFBQTtBQUFBO0FBOFBBO0FBQ0E7QUFDQTs7Ozs7QUFoUUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFvUUE7QUFwUUE7QUFDQTtBQURBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQ0E7QUFEQTtBQUFBO0FBQUE7QUFDQTtBQURBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFDQTtBQURBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQ0E7QUFEQTtBQUFBO0FBQUE7QUFDQTtBQURBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUNBO0FBREE7QUFBQTtBQUNBO0FBREE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFDQTtBQURBO0FBQUE7QUFBQTtBQUNBO0FBREE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUErUUE7QUFDQTtBQWhSQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUNBO0FBREE7QUFBQTtBQUFBO0FBQ0E7QUFEQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFDQTtBQURBO0FBQUE7QUFDQTtBQURBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQ0E7QUFEQTtBQUFBO0FBQUE7QUFDQTtBQURBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFzUkE7QUFDQTtBQXZSQTtBQUFBO0FBQUE7QUF5UkE7QUFDQTtBQTFSQTtBQUFBO0FBQUE7QUE0UkE7QUFDQTtBQUNBOzs7OztBQTlSQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQ0E7QUFEQTtBQW9TQTtBQXBTQTtBQUFBO0FBQ0E7QUFEQTtBQUFBO0FBQ0E7QUFEQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUNBO0FBREE7QUFBQTtBQUFBO0FBQ0E7QUFEQTtBQUFBO0FBeVNBOzs7OztBQXpTQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUE4U0E7QUFDQTtBQS9TQTtBQUFBO0FBQUE7QUFBQTtBQUNBO0FBREE7QUFDQTtBQURBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFDQTtBQURBO0FBQUE7QUFDQTtBQURBO0FBQUE7QUFBQTtBQUNBO0FBREE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFDQTtBQURBO0FBQUE7QUFBQTtBQUNBO0FBREE7QUFBQTtBQXVUQTs7OztBQXZUQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUEwVEE7QUFBQTtBQUFBO0FBQ0E7QUEzVEE7QUFBQTtBQUFBO0FBQUE7QUFDQTtBQURBO0FBQ0E7QUFEQTtBQUFBO0FBQUE7QUFDQTtBQURBO0FBQUE7QUFBQTtBQUNBO0FBREE7QUFBQTtBQUNBO0FBREE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFDQTtBQURBO0FBQUE7QUFBQTtBQUNBO0FBREE7QUFBQTtBQWtVQTs7OztBQWxVQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFxVUE7QUFBQTtBQUFBO0FBclVBO0FBQUE7QUFDQTtBQURBO0FBQUE7QUFBQTtBQUNBO0FBREE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFDQTtBQURBO0FBQUE7QUFBQTtBQUNBO0FBREE7QUFBQTtBQXlVQTs7OztBQXpVQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQTRVQTtBQUNBO0FBN1VBO0FBQUE7QUFBQTtBQUFBO0FBQ0E7QUFEQTtBQUNBO0FBREE7QUFBQTtBQUFBO0FBQ0E7QUFEQTtBQUFBO0FBQ0E7QUFEQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUNBO0FBREE7QUFBQTtBQUFBO0FBQ0E7QUFEQTtBQUFBO0FBbVZBOzs7O0FBblZBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBc1ZBO0FBdFZBO0FBQ0E7QUFEQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUNBO0FBREE7QUFBQTtBQUFBO0FBQ0E7QUFEQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBMFZBO0FBQ0E7QUEzVkE7QUFBQTtBQUFBO0FBNlZBO0FBQ0E7QUFDQTtBQUNBO0FBaFdBO0FBQUE7QUFBQTtBQWlXQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUExV0E7QUFBQTtBQUFBO0FBMldBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBbFhBO0FBQUE7QUFBQTtBQW9YQTtBQUNBO0FBclhBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUNBO0FBREE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFDQTtBQURBO0FBQUE7QUFBQTtBQUNBO0FBREE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQTBYQTtBQUNBO0FBM1hBO0FBQUE7QUFBQTtBQTZYQTtBQUNBO0FBQ0E7Ozs7OztBQS9YQTtBQUFBO0FBQUE7QUFvWUE7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOzs7O0FBcFpBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUNBO0FBREE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFDQTtBQURBO0FBQUE7QUFBQTtBQUNBO0FBREE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUNBO0FBREE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFDQTtBQURBO0FBQUE7QUFBQTtBQUNBO0FBREE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQThaQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFsYUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQ0E7QUFEQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUNBO0FBREE7QUFBQTtBQUFBO0FBQ0E7QUFEQTtBQUFBO0FBc2FBOzs7O0FBdGFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUNBO0FBREE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFDQTtBQURBO0FBQUE7QUFBQTtBQUNBO0FBREE7QUFBQTtBQTRhQTs7OztBQTVhQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFDQTtBQURBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQ0E7QUFEQTtBQUFBO0FBQUE7QUFDQTtBQURBO0FBQUE7QUFrYkE7Ozs7QUFsYkE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUNBO0FBREE7QUFBQTtBQUFBO0FBQUE7QUFzYkE7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUEvYkE7QUFBQTtBQUNBO0FBREE7QUFnY0E7QUFDQTtBQWpjQTtBQUFBO0FBQUE7QUFBQTtBQUNBO0FBREE7QUFDQTtBQURBO0FBcWNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQTFjQTtBQUFBO0FBQUE7QUFBQTtBQUNBO0FBMGNBO0FBQ0E7QUFDQTtBQTdjQTtBQUFBO0FBOGNBO0FBQUE7QUFDQTtBQS9jQTtBQThjQTtBQUNBO0FBL2NBO0FBQUE7QUFBQTtBQUFBO0FBQ0E7QUFEQTtBQUNBO0FBREE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUNBO0FBREE7QUFBQTtBQUNBO0FBREE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFDQTtBQURBO0FBQUE7QUFBQTtBQUNBO0FBREE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQXdkQTtBQUNBO0FBQ0E7QUFDQTs7Ozs7O0FBM2RBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQWllQTtBQWplQTtBQUFBO0FBQ0E7QUFEQTtBQWtlQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUVBO0FBRkE7QUFEQTtBQU1BO0FBRUE7QUFDQTtBQUNBO0FBbmZBO0FBQUE7QUFDQTtBQURBO0FBb2ZBO0FBQ0E7QUFDQTtBQXRmQTtBQUFBO0FBQUE7QUFBQTtBQUNBO0FBREE7QUFBQTtBQUNBO0FBREE7QUF5ZkE7QUF6ZkE7QUEyZkE7QUFDQTtBQUZBO0FBQ0E7QUEzZkE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFDQTtBQURBO0FBQUE7QUFBQTtBQUNBO0FBREE7QUFBQTtBQStmQTs7Ozs7QUEvZkE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFtZ0JBO0FBbmdCQTtBQUNBO0FBREE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFDQTtBQURBO0FBQUE7QUFBQTtBQUNBO0FBREE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQXVnQkE7QUFDQTtBQXhnQkE7QUFBQTtBQUFBO0FBMGdCQTtBQUNBO0FBM2dCQTtBQUFBO0FBQUE7QUE2Z0JBO0FBQ0E7QUE5Z0JBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUNBO0FBREE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFDQTtBQURBO0FBQUE7QUFBQTtBQUNBO0FBREE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUNBO0FBREE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFDQTtBQURBO0FBQUE7QUFBQTtBQUNBO0FBREE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUNBO0FBREE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFDQTtBQURBO0FBQUE7QUFBQTtBQUNBO0FBREE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUNBO0FBREE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFDQTtBQURBO0FBQUE7QUFBQTtBQUNBO0FBREE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUNBO0FBREE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFDQTtBQURBO0FBQUE7QUFBQTtBQUNBO0FBREE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUNBO0FBREE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFDQTtBQURBO0FBQUE7QUFBQTtBQUNBO0FBREE7QUFBQTtBQWlpQkE7Ozs7QUFqaUJBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUNBO0FBREE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFDQTtBQURBO0FBQUE7QUFBQTtBQUNBO0FBREE7QUFBQTtBQXVpQkE7Ozs7Ozs7OztBQXZpQkE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBZ2pCQTtBQUNBO0FBQUE7QUFBQTtBQWpqQkE7QUFBQTtBQUNBO0FBREE7QUFBQTtBQUFBO0FBQ0E7QUFEQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUNBO0FBREE7QUFBQTtBQUFBO0FBQ0E7QUFEQTtBQUFBO0FBcWpCQTs7Ozs7O0FBcmpCQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBMGpCQTtBQUNBO0FBQUE7QUFBQTtBQUNBO0FBNWpCQTtBQUFBO0FBQUE7QUFBQTtBQUNBO0FBREE7QUFBQTtBQUNBO0FBREE7QUFBQTtBQUFBO0FBQ0E7QUFEQTtBQUFBO0FBQUE7QUFDQTtBQURBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQ0E7QUFEQTtBQUFBO0FBQUE7QUFDQTtBQURBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUF3a0JBO0FBQ0E7QUF6a0JBO0FBQUE7QUFBQTtBQTBrQkE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUNBO0FBQ0E7QUE1a0JBO0FBQUE7QUFBQTtBQThrQkE7QUFDQTtBQUNBOzs7O0FBaGxCQTtBQUFBO0FBQUE7QUFvbEJBO0FBREE7QUFBQTtBQUFBO0FBQ0E7QUFEQTtBQUVBO0FBQUE7QUFDQTtBQUNBO0FBSkE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUNBO0FBREE7QUFBQTtBQUFBO0FBQ0E7QUFEQTtBQUtBO0FBQUE7QUFDQTtBQUNBO0FBUEE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUNBO0FBREE7QUFBQTtBQUFBO0FBQ0E7QUFEQTtBQVFBO0FBQUE7QUFDQTtBQUNBO0FBVkE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUNBO0FBVUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7Ozs7Ozs7Ozs7QUExbUJBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQ0E7QUFEQTtBQUNBO0FBREE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUNBO0FBdW5CQTtBQXhuQkE7QUFBQTtBQUNBO0FBREE7QUF5bkJBO0FBQ0E7QUExbkJBO0FBQUE7QUFBQTtBQUFBO0FBQ0E7QUFEQTtBQTJuQkE7QUFBQTtBQUNBO0FBNW5CQTtBQTZuQkE7QUFDQTtBQUNBO0FBL25CQTtBQUFBO0FBQUE7QUFDQTtBQURBO0FBZ29CQTtBQWhvQkE7QUFpb0JBO0FBQUE7QUFDQTtBQWxvQkE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFDQTtBQURBO0FBQUE7QUFBQTtBQUNBO0FBREE7QUFBQTtBQW1vQkE7Ozs7O0FBbm9CQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQ0E7QUFEQTtBQUFBO0FBQUE7QUFBQTtBQXVvQkE7QUFBQTtBQXZvQkE7QUFBQTtBQUNBO0FBREE7QUFBQTtBQXdvQkE7QUFBQTtBQUNBO0FBem9CQTtBQUFBO0FBQUE7QUFBQTtBQUNBO0FBREE7QUFDQTtBQURBO0FBNG9CQTtBQTVvQkE7QUFBQTtBQUNBO0FBREE7QUE2b0JBO0FBQ0E7QUE5b0JBO0FBQUE7QUFBQTtBQUFBO0FBQ0E7QUFEQTtBQUFBO0FBQ0E7QUFEQTtBQWdwQkE7QUFocEJBO0FBQUE7QUFDQTtBQURBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFDQTtBQURBO0FBQUE7QUFDQTtBQURBO0FBQUE7QUFBQTtBQUNBO0FBREE7QUF3cEJBO0FBeHBCQTtBQUFBO0FBQ0E7QUFEQTtBQUFBO0FBQUE7QUFDQTtBQURBO0FBNHBCQTtBQTVwQkE7QUFBQTtBQThwQkE7QUFDQTtBQUZBO0FBQ0E7QUE5cEJBO0FBaXFCQTtBQWpxQkE7QUFBQTtBQUNBO0FBREE7QUFvcUJBO0FBQ0E7QUFycUJBO0FBQUE7QUFDQTtBQURBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQ0E7QUFEQTtBQUFBO0FBQUE7QUFDQTtBQURBO0FBQUE7QUF3cUJBOzs7OztBQXhxQkE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFDQTtBQURBO0FBQUE7QUFBQTtBQUFBO0FBNHFCQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUE1cUJBO0FBQUE7QUFDQTtBQURBO0FBQUE7QUE2cUJBO0FBQUE7QUFDQTtBQTlxQkE7QUFBQTtBQUFBO0FBQUE7QUFDQTtBQURBO0FBQ0E7QUFEQTtBQWlyQkE7QUFDQTtBQWxyQkE7QUFBQTtBQUNBO0FBREE7QUFtckJBO0FBQ0E7QUFwckJBO0FBQUE7QUFBQTtBQUFBO0FBQ0E7QUFEQTtBQUFBO0FBQ0E7QUFEQTtBQXNyQkE7QUF0ckJBO0FBQUE7QUFDQTtBQURBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFDQTtBQURBO0FBQUE7QUFDQTtBQURBO0FBQUE7QUFBQTtBQUNBO0FBREE7QUE4ckJBO0FBOXJCQTtBQUFBO0FBQ0E7QUFEQTtBQUFBO0FBQUE7QUFDQTtBQURBO0FBa3NCQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFKQTtBQUNBO0FBcHNCQTtBQUFBO0FBQUE7QUFBQTtBQUNBO0FBREE7QUFBQTtBQUNBO0FBREE7QUFBQTtBQUFBO0FBQ0E7QUFEQTtBQUFBO0FBQUE7QUFDQTtBQURBO0FBOHNCQTtBQUNBO0FBL3NCQTtBQUFBO0FBQUE7QUFDQTtBQURBO0FBa3RCQTtBQUNBO0FBbnRCQTtBQUFBO0FBQ0E7QUFEQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUNBO0FBREE7QUFBQTtBQUFBO0FBQ0E7QUFEQTtBQUFBO0FBc3RCQTs7Ozs7Ozs7QUF0dEJBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUNBO0FBREE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUNBO0FBREE7QUFBQTtBQUFBO0FBQUE7QUFDQTtBQURBO0FBQUE7QUFBQTtBQUFBO0FBQ0E7QUFEQTtBQWd1QkE7QUFBQTtBQUNBO0FBanVCQTtBQUFBO0FBQUE7QUFDQTtBQURBO0FBQUE7QUFtdUJBO0FBQUE7QUFDQTtBQXB1QkE7QUFBQTtBQUFBO0FBQUE7QUFDQTtBQURBO0FBQ0E7QUFEQTtBQUFBO0FBQUE7QUFDQTtBQURBO0FBQUE7QUFBQTtBQXd1QkE7QUFBQTtBQUNBO0FBenVCQTtBQUFBO0FBQUE7QUFBQTtBQUNBO0FBREE7QUEwdUJBO0FBQUE7QUFDQTtBQTN1QkE7QUEydUJBO0FBQ0E7QUFDQTtBQTd1QkE7QUFBQTtBQTZ1QkE7QUFBQTtBQUNBO0FBOXVCQTtBQTh1QkE7QUFDQTtBQS91QkE7QUFBQTtBQUFBO0FBQUE7QUFDQTtBQURBO0FBQUE7QUFDQTtBQURBO0FBQUE7QUFBQTtBQWl2QkE7QUFBQTtBQUNBO0FBbHZCQTtBQUFBO0FBa3ZCQTtBQUFBO0FBQ0E7QUFudkJBO0FBb3ZCQTtBQUNBO0FBQ0E7QUF0dkJBO0FBQUE7QUFDQTtBQURBO0FBc3ZCQTtBQUNBO0FBdnZCQTtBQUFBO0FBQUE7QUFBQTtBQUNBO0FBREE7QUFBQTtBQUNBO0FBREE7QUFBQTtBQUFBO0FBeXZCQTtBQUFBO0FBQ0E7QUExdkJBO0FBMnZCQTtBQTN2QkE7QUFDQTtBQURBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQ0E7QUFEQTtBQUFBO0FBQUE7QUFDQTtBQURBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUNBO0FBREE7QUFBQTtBQUFBO0FBQ0E7QUFEQTtBQUFBO0FBQUE7QUFDQTtBQURBO0FBQUE7QUFBQTtBQUNBO0FBREE7QUFBQTtBQUFBO0FBQ0E7QUFEQTtBQW93QkE7QUFDQTtBQXJ3QkE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFDQTtBQURBO0FBQUE7QUFBQTtBQUNBO0FBREE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFDQTtBQURBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUNBO0FBREE7QUFBQTtBQXV3QkE7QUF2d0JBO0FBQ0E7QUFEQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUNBO0FBREE7QUFBQTtBQUFBO0FBQ0E7QUFEQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBMndCQTtBQUNBO0FBNXdCQTtBQUFBO0FBQUE7QUE4d0JBO0FBQ0E7QUEvd0JBO0FBQUE7QUFBQTtBQWl4QkE7QUFDQTtBQWx4QkE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQ0E7QUFEQTtBQUNBO0FBREE7QUFBQTtBQUNBO0FBREE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFDQTtBQURBO0FBQUE7QUFBQTtBQUNBO0FBREE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQTB4QkE7O0FBRUE7QUE1eEJBO0FBQUE7QUFDQTtBQURBO0FBQUE7QUFDQTtBQURBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQ0E7QUFEQTtBQUFBO0FBQUE7QUFDQTtBQURBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQ0E7QUFEQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFDQTtBQURBO0FBaXlCQTtBQWp5QkE7QUFBQTtBQUNBO0FBREE7QUFBQTtBQWt5QkE7QUFBQTtBQWx5QkE7QUFBQTtBQUNBO0FBREE7QUFBQTtBQUFBO0FBQ0E7QUFEQTtBQUFBO0FBQUE7QUFDQTtBQURBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQ0E7QUFEQTtBQUFBO0FBQUE7QUFDQTtBQURBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUNBO0FBREE7QUFBQTtBQUFBO0FBQ0E7QUFEQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUNBO0FBREE7QUFBQTtBQUFBO0FBQ0E7QUFEQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFDQTtBQURBO0FBQUE7QUFDQTtBQURBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQ0E7QUFEQTtBQUFBO0FBQUE7QUFDQTtBQURBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUNBO0FBREE7QUFBQTtBQUNBO0FBREE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFDQTtBQURBO0FBQUE7QUFBQTtBQUNBO0FBREE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUNBO0FBREE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFDQTtBQURBO0FBQUE7QUFBQTtBQUNBO0FBREE7QUFBQTtBQXN6QkE7Ozs7O0FBdHpCQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQ0E7QUFEQTtBQUFBO0FBQUE7QUFBQTtBQTJ6QkE7QUEzekJBO0FBQUE7QUFBQTtBQUFBO0FBQ0E7QUEyekJBO0FBQUE7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFqMEJBO0FBQUE7QUFDQTtBQURBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFDQTtBQURBO0FBQUE7QUFBQTtBQUNBO0FBREE7QUFBQTtBQUFBO0FBQ0E7QUFEQTtBQUFBO0FBQ0E7QUFEQTtBQUFBO0FBQUE7QUFBQTtBQUNBO0FBREE7QUFDQTtBQURBO0FBQUE7QUFDQTtBQURBO0FBQUE7QUFDQTtBQURBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQ0E7QUFEQTtBQUFBO0FBQUE7QUFDQTtBQURBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFtMEJBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBRkE7QUFJQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBeDFCQTtBQUFBO0FBQUE7QUEwMUJBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQTMyQkE7QUFBQTtBQUFBO0FBNjJCQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBUEE7QUFTQTtBQUNBO0FBdjNCQTtBQUFBO0FBQUE7QUF5M0JBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBOTNCQTtBQUFBO0FBQUE7QUFnNEJBO0FBQ0E7QUFDQTtBQWw0QkE7QUFBQTtBQUFBO0FBbzRCQTtBQUNBO0FBQ0E7QUF0NEJBO0FBQUE7QUFBQTtBQXc0QkE7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUE3NEJBO0FBQUE7QUFBQTtBQSs0QkE7QUFDQTtBQUNBO0FBajVCQTtBQUFBO0FBQUE7QUFtNUJBO0FBQ0E7QUFDQTtBQXI1QkE7QUFBQTtBQUFBO0FBdTVCQTtBQUNBO0FBQ0E7QUF6NUJBO0FBQUE7QUFBQTtBQTI1QkE7QUFDQTtBQUNBO0FBNzVCQTtBQUFBO0FBQUE7QUE4NUJBO0FBQ0E7QUFBQTtBQUNBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQ0E7QUFEQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUdBO0FBQ0E7QUFwNkJBO0FBQUE7QUFBQTtBQXM2QkE7QUFDQTtBQUNBO0FBeDZCQTtBQUFBO0FBQUE7QUF5NkJBO0FBQ0E7QUFBQTtBQUNBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFDQTtBQUNBO0FBRkE7QUFBQTtBQUFBO0FBQUE7QUFDQTtBQURBO0FBQUE7QUFDQTtBQURBO0FBQUE7QUFBQTtBQUNBO0FBREE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFDQTtBQURBO0FBQUE7QUFBQTtBQUFBO0FBQ0E7QUFNQTtBQUNBO0FBQ0E7QUFDQTtBQXI3QkE7QUFBQTtBQUFBO0FBdTdCQTtBQUNBO0FBQ0E7QUF6N0JBO0FBQUE7QUFBQTtBQTI3QkE7QUFDQTtBQUNBO0FBNzdCQTtBQUFBO0FBQUE7QUErN0JBO0FBQ0E7QUFDQTtBQWo4QkE7QUFBQTtBQUFBO0FBbThCQTtBQUNBO0FBQ0E7QUFyOEJBO0FBQUE7QUFBQTtBQXU4QkE7QUFDQTtBQXg4QkE7QUFBQTtBQUFBO0FBMDhCQTtBQUFBO0FBQUE7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUVBO0FBQ0E7QUFDQTtBQWo5QkE7QUFDQTtBQURBO0FBQUEiLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./lib/application.ts\n')},"./lib/challenges.ts":
|
||
/*!***************************!*\
|
||
!*** ./lib/challenges.ts ***!
|
||
\***************************/
|
||
/*! exports provided: ChallengeType, ChallengeReason, Challenge, ChallengeValue, ChallengeResponse, challengeTypeToString */function(module,__webpack_exports__,__webpack_require__){"use strict";eval('__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "ChallengeType", function() { return ChallengeType; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "ChallengeReason", function() { return ChallengeReason; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "Challenge", function() { return Challenge; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "ChallengeValue", function() { return ChallengeValue; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "ChallengeResponse", function() { return ChallengeResponse; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "challengeTypeToString", function() { return challengeTypeToString; });\nfunction _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\n\nfunction _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); } }\n\nfunction _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } }\n\nvar ChallengeType;\n\n(function (ChallengeType) {\n ChallengeType[ChallengeType["LocalPasscode"] = 1] = "LocalPasscode";\n ChallengeType[ChallengeType["AccountPassword"] = 2] = "AccountPassword";\n ChallengeType[ChallengeType["Biometric"] = 3] = "Biometric";\n})(ChallengeType || (ChallengeType = {}));\n\n;\n/** The source of the challenge */\n\nvar ChallengeReason;\n\n(function (ChallengeReason) {\n ChallengeReason[ChallengeReason["ApplicationUnlock"] = 1] = "ApplicationUnlock";\n ChallengeReason[ChallengeReason["ResaveRootKey"] = 2] = "ResaveRootKey";\n ChallengeReason[ChallengeReason["ProtocolUpgrade"] = 3] = "ProtocolUpgrade";\n ChallengeReason[ChallengeReason["Migration"] = 4] = "Migration";\n})(ChallengeReason || (ChallengeReason = {}));\n\n;\nvar Challenge = function Challenge(types, reason) {\n _classCallCheck(this, Challenge);\n\n this.types = types;\n this.reason = reason;\n this.id = new Date().getTime();\n Object.freeze(this);\n};\nvar ChallengeValue = function ChallengeValue(type, value) {\n _classCallCheck(this, ChallengeValue);\n\n this.type = type;\n this.value = value;\n Object.freeze(this);\n};\nvar ChallengeResponse = /*#__PURE__*/function () {\n function ChallengeResponse(challenge, values, artifacts) {\n _classCallCheck(this, ChallengeResponse);\n\n this.challenge = challenge;\n this.values = values;\n this.artifacts = artifacts;\n Object.freeze(this);\n }\n\n _createClass(ChallengeResponse, [{\n key: "getValueForType",\n value: function getValueForType(type) {\n return this.values.find(function (value) {\n return value.type === type;\n });\n }\n }]);\n\n return ChallengeResponse;\n}();\n/**\n * @returns The UI-friendly title for this challenge\n */\n\nfunction challengeTypeToString(type) {\n var _mapping;\n\n var mapping = (_mapping = {}, _defineProperty(_mapping, ChallengeType.LocalPasscode, \'application passcode\'), _defineProperty(_mapping, ChallengeType.AccountPassword, \'account password\'), _defineProperty(_mapping, ChallengeType.Biometric, \'biometrics\'), _mapping);\n return mapping[type];\n}//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9saWIvY2hhbGxlbmdlcy50cy5qcyIsInNvdXJjZXMiOlsid2VicGFjazovL1NOTGlicmFyeS8uL2xpYi9jaGFsbGVuZ2VzLnRzPzk1NzAiXSwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0IHZhciBDaGFsbGVuZ2VUeXBlO1xuKGZ1bmN0aW9uIChDaGFsbGVuZ2VUeXBlKSB7XG4gICAgQ2hhbGxlbmdlVHlwZVtDaGFsbGVuZ2VUeXBlW1wiTG9jYWxQYXNzY29kZVwiXSA9IDFdID0gXCJMb2NhbFBhc3Njb2RlXCI7XG4gICAgQ2hhbGxlbmdlVHlwZVtDaGFsbGVuZ2VUeXBlW1wiQWNjb3VudFBhc3N3b3JkXCJdID0gMl0gPSBcIkFjY291bnRQYXNzd29yZFwiO1xuICAgIENoYWxsZW5nZVR5cGVbQ2hhbGxlbmdlVHlwZVtcIkJpb21ldHJpY1wiXSA9IDNdID0gXCJCaW9tZXRyaWNcIjtcbn0pKENoYWxsZW5nZVR5cGUgfHwgKENoYWxsZW5nZVR5cGUgPSB7fSkpO1xuO1xuLyoqIFRoZSBzb3VyY2Ugb2YgdGhlIGNoYWxsZW5nZSAqL1xuZXhwb3J0IHZhciBDaGFsbGVuZ2VSZWFzb247XG4oZnVuY3Rpb24gKENoYWxsZW5nZVJlYXNvbikge1xuICAgIENoYWxsZW5nZVJlYXNvbltDaGFsbGVuZ2VSZWFzb25bXCJBcHBsaWNhdGlvblVubG9ja1wiXSA9IDFdID0gXCJBcHBsaWNhdGlvblVubG9ja1wiO1xuICAgIENoYWxsZW5nZVJlYXNvbltDaGFsbGVuZ2VSZWFzb25bXCJSZXNhdmVSb290S2V5XCJdID0gMl0gPSBcIlJlc2F2ZVJvb3RLZXlcIjtcbiAgICBDaGFsbGVuZ2VSZWFzb25bQ2hhbGxlbmdlUmVhc29uW1wiUHJvdG9jb2xVcGdyYWRlXCJdID0gM10gPSBcIlByb3RvY29sVXBncmFkZVwiO1xuICAgIENoYWxsZW5nZVJlYXNvbltDaGFsbGVuZ2VSZWFzb25bXCJNaWdyYXRpb25cIl0gPSA0XSA9IFwiTWlncmF0aW9uXCI7XG59KShDaGFsbGVuZ2VSZWFzb24gfHwgKENoYWxsZW5nZVJlYXNvbiA9IHt9KSk7XG47XG5leHBvcnQgY2xhc3MgQ2hhbGxlbmdlIHtcbiAgICBjb25zdHJ1Y3Rvcih0eXBlcywgcmVhc29uKSB7XG4gICAgICAgIHRoaXMudHlwZXMgPSB0eXBlcztcbiAgICAgICAgdGhpcy5yZWFzb24gPSByZWFzb247XG4gICAgICAgIHRoaXMuaWQgPSBuZXcgRGF0ZSgpLmdldFRpbWUoKTtcbiAgICAgICAgT2JqZWN0LmZyZWV6ZSh0aGlzKTtcbiAgICB9XG59XG5leHBvcnQgY2xhc3MgQ2hhbGxlbmdlVmFsdWUge1xuICAgIGNvbnN0cnVjdG9yKHR5cGUsIHZhbHVlKSB7XG4gICAgICAgIHRoaXMudHlwZSA9IHR5cGU7XG4gICAgICAgIHRoaXMudmFsdWUgPSB2YWx1ZTtcbiAgICAgICAgT2JqZWN0LmZyZWV6ZSh0aGlzKTtcbiAgICB9XG59XG5leHBvcnQgY2xhc3MgQ2hhbGxlbmdlUmVzcG9uc2Uge1xuICAgIGNvbnN0cnVjdG9yKGNoYWxsZW5nZSwgdmFsdWVzLCBhcnRpZmFjdHMpIHtcbiAgICAgICAgdGhpcy5jaGFsbGVuZ2UgPSBjaGFsbGVuZ2U7XG4gICAgICAgIHRoaXMudmFsdWVzID0gdmFsdWVzO1xuICAgICAgICB0aGlzLmFydGlmYWN0cyA9IGFydGlmYWN0cztcbiAgICAgICAgT2JqZWN0LmZyZWV6ZSh0aGlzKTtcbiAgICB9XG4gICAgZ2V0VmFsdWVGb3JUeXBlKHR5cGUpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMudmFsdWVzLmZpbmQoKHZhbHVlKSA9PiB2YWx1ZS50eXBlID09PSB0eXBlKTtcbiAgICB9XG59XG4vKipcbiAqIEByZXR1cm5zIFRoZSBVSS1mcmllbmRseSB0aXRsZSBmb3IgdGhpcyBjaGFsbGVuZ2VcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGNoYWxsZW5nZVR5cGVUb1N0cmluZyh0eXBlKSB7XG4gICAgY29uc3QgbWFwcGluZyA9IHtcbiAgICAgICAgW0NoYWxsZW5nZVR5cGUuTG9jYWxQYXNzY29kZV06ICdhcHBsaWNhdGlvbiBwYXNzY29kZScsXG4gICAgICAgIFtDaGFsbGVuZ2VUeXBlLkFjY291bnRQYXNzd29yZF06ICdhY2NvdW50IHBhc3N3b3JkJyxcbiAgICAgICAgW0NoYWxsZW5nZVR5cGUuQmlvbWV0cmljXTogJ2Jpb21ldHJpY3MnLFxuICAgIH07XG4gICAgcmV0dXJuIG1hcHBpbmdbdHlwZV07XG59XG4iXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7OztBQUFBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFFQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUVBO0FBQ0E7QUFBQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBUEE7QUFBQTtBQUFBO0FBUUE7QUFBQTtBQUFBO0FBQ0E7QUFUQTtBQUNBO0FBREE7QUFBQTtBQVdBOzs7O0FBR0E7QUFBQTtBQUNBO0FBQUE7QUFLQTtBQUNBIiwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./lib/challenges.ts\n')},"./lib/device_interface.ts":
|
||
/*!*********************************!*\
|
||
!*** ./lib/device_interface.ts ***!
|
||
\*********************************/
|
||
/*! exports provided: DeviceInterface */function(module,__webpack_exports__,__webpack_require__){"use strict";eval('__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "DeviceInterface", function() { return DeviceInterface; });\n/* harmony import */ var _babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @babel/runtime/regenerator */ "./node_modules/@babel/runtime/regenerator/index.js");\n/* harmony import */ var _babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var _Lib_utils__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! @Lib/utils */ "./lib/utils.ts");\n\n\nfunction asyncGeneratorStep(gen, resolve, reject, _next, _throw, key, arg) { try { var info = gen[key](arg); var value = info.value; } catch (error) { reject(error); return; } if (info.done) { resolve(value); } else { Promise.resolve(value).then(_next, _throw); } }\n\nfunction _asyncToGenerator(fn) { return function () { var self = this, args = arguments; return new Promise(function (resolve, reject) { var gen = fn.apply(self, args); function _next(value) { asyncGeneratorStep(gen, resolve, reject, _next, _throw, "next", value); } function _throw(err) { asyncGeneratorStep(gen, resolve, reject, _next, _throw, "throw", err); } _next(undefined); }); }; }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } }\n\nfunction _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); } }\n\nfunction _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; }\n\n\n/**\n * Platforms must override this class to provide platform specific utilities\n * and access to the migration service, such as exposing an interface to read\n * raw values from the database or value storage.\n * This avoids the need for platforms to override migrations directly.\n */\n\nvar DeviceInterface = /*#__PURE__*/function () {\n /**\n * @param {function} timeout\n A platform-specific function that is fed functions to run\n when other operations have completed. This is similar to\n setImmediate on the web, or setTimeout(fn, 0).\n * @param {function} interval\n A platform-specific function that is fed functions to\n perform repeatedly. Similar to setInterval.\n */\n function DeviceInterface(namespace, timeout, interval) {\n _classCallCheck(this, DeviceInterface);\n\n this.namespace = namespace;\n this.timeout = timeout || setTimeout.bind(Object(_Lib_utils__WEBPACK_IMPORTED_MODULE_1__["getGlobalScope"])());\n this.interval = interval || setInterval.bind(Object(_Lib_utils__WEBPACK_IMPORTED_MODULE_1__["getGlobalScope"])());\n }\n\n _createClass(DeviceInterface, [{\n key: "deinit",\n value: function deinit() {\n this.timeout = null;\n this.interval = null;\n }\n }, {\n key: "getJsonParsedStorageValue",\n value: function () {\n var _getJsonParsedStorageValue = _asyncToGenerator( /*#__PURE__*/_babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0___default.a.mark(function _callee(key) {\n var value;\n return _babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0___default.a.wrap(function _callee$(_context) {\n while (1) {\n switch (_context.prev = _context.next) {\n case 0:\n _context.next = 2;\n return this.getRawStorageValue(key);\n\n case 2:\n value = _context.sent;\n return _context.abrupt("return", value ? JSON.parse(value) : value);\n\n case 4:\n case "end":\n return _context.stop();\n }\n }\n }, _callee, this);\n }));\n\n function getJsonParsedStorageValue(_x) {\n return _getJsonParsedStorageValue.apply(this, arguments);\n }\n\n return getJsonParsedStorageValue;\n }()\n }]);\n\n return DeviceInterface;\n}();//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9saWIvZGV2aWNlX2ludGVyZmFjZS50cy5qcyIsInNvdXJjZXMiOlsid2VicGFjazovL1NOTGlicmFyeS8uL2xpYi9kZXZpY2VfaW50ZXJmYWNlLnRzPzI3OTYiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgZ2V0R2xvYmFsU2NvcGUgfSBmcm9tICdATGliL3V0aWxzJztcbi8qKlxuICogUGxhdGZvcm1zIG11c3Qgb3ZlcnJpZGUgdGhpcyBjbGFzcyB0byBwcm92aWRlIHBsYXRmb3JtIHNwZWNpZmljIHV0aWxpdGllc1xuICogYW5kIGFjY2VzcyB0byB0aGUgbWlncmF0aW9uIHNlcnZpY2UsIHN1Y2ggYXMgZXhwb3NpbmcgYW4gaW50ZXJmYWNlIHRvIHJlYWRcbiAqIHJhdyB2YWx1ZXMgZnJvbSB0aGUgZGF0YWJhc2Ugb3IgdmFsdWUgc3RvcmFnZS5cbiAqIFRoaXMgYXZvaWRzIHRoZSBuZWVkIGZvciBwbGF0Zm9ybXMgdG8gb3ZlcnJpZGUgbWlncmF0aW9ucyBkaXJlY3RseS5cbiAqL1xuZXhwb3J0IGNsYXNzIERldmljZUludGVyZmFjZSB7XG4gICAgLyoqXG4gICAgICAqIEBwYXJhbSB7ZnVuY3Rpb259IHRpbWVvdXRcbiAgICAgICAgIEEgcGxhdGZvcm0tc3BlY2lmaWMgZnVuY3Rpb24gdGhhdCBpcyBmZWQgZnVuY3Rpb25zIHRvIHJ1blxuICAgICAgICAgd2hlbiBvdGhlciBvcGVyYXRpb25zIGhhdmUgY29tcGxldGVkLiBUaGlzIGlzIHNpbWlsYXIgdG9cbiAgICAgICAgIHNldEltbWVkaWF0ZSBvbiB0aGUgd2ViLCBvciBzZXRUaW1lb3V0KGZuLCAwKS5cbiAgICAgICogQHBhcmFtIHtmdW5jdGlvbn0gaW50ZXJ2YWxcbiAgICAgICAgIEEgcGxhdGZvcm0tc3BlY2lmaWMgZnVuY3Rpb24gdGhhdCBpcyBmZWQgZnVuY3Rpb25zIHRvXG4gICAgICAgICBwZXJmb3JtIHJlcGVhdGVkbHkuIFNpbWlsYXIgdG8gc2V0SW50ZXJ2YWwuXG4gICAgKi9cbiAgICBjb25zdHJ1Y3RvcihuYW1lc3BhY2UsIHRpbWVvdXQsIGludGVydmFsKSB7XG4gICAgICAgIHRoaXMubmFtZXNwYWNlID0gbmFtZXNwYWNlO1xuICAgICAgICB0aGlzLnRpbWVvdXQgPSB0aW1lb3V0IHx8IHNldFRpbWVvdXQuYmluZChnZXRHbG9iYWxTY29wZSgpKTtcbiAgICAgICAgdGhpcy5pbnRlcnZhbCA9IGludGVydmFsIHx8IHNldEludGVydmFsLmJpbmQoZ2V0R2xvYmFsU2NvcGUoKSk7XG4gICAgfVxuICAgIGRlaW5pdCgpIHtcbiAgICAgICAgdGhpcy50aW1lb3V0ID0gbnVsbDtcbiAgICAgICAgdGhpcy5pbnRlcnZhbCA9IG51bGw7XG4gICAgfVxuICAgIGFzeW5jIGdldEpzb25QYXJzZWRTdG9yYWdlVmFsdWUoa2V5KSB7XG4gICAgICAgIGNvbnN0IHZhbHVlID0gYXdhaXQgdGhpcy5nZXRSYXdTdG9yYWdlVmFsdWUoa2V5KTtcbiAgICAgICAgcmV0dXJuIHZhbHVlID8gSlNPTi5wYXJzZSh2YWx1ZSkgOiB2YWx1ZTtcbiAgICB9XG59XG4iXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBQUE7QUFDQTs7Ozs7OztBQU1BO0FBQ0E7Ozs7Ozs7OztBQVNBO0FBQUE7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFmQTtBQUFBO0FBQUE7QUFnQkE7QUFDQTtBQUNBO0FBbEJBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFDQTtBQURBO0FBb0JBO0FBcEJBO0FBQ0E7QUFEQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUNBO0FBREE7QUFBQTtBQUFBO0FBQ0E7QUFEQTtBQUFBO0FBQUE7QUFDQTtBQURBO0FBQUEiLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./lib/device_interface.ts\n')},"./lib/events.ts":
|
||
/*!***********************!*\
|
||
!*** ./lib/events.ts ***!
|
||
\***********************/
|
||
/*! exports provided: SyncEvent, ApplicationEvent, applicationEventForSyncEvent */function(module,__webpack_exports__,__webpack_require__){"use strict";eval('__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "ApplicationEvent", function() { return ApplicationEvent; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "applicationEventForSyncEvent", function() { return applicationEventForSyncEvent; });\n/* harmony import */ var _Services_sync_events__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @Services/sync/events */ "./lib/services/sync/events.ts");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "SyncEvent", function() { return _Services_sync_events__WEBPACK_IMPORTED_MODULE_0__["SyncEvent"]; });\n\nfunction _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\n\n\n\nvar ApplicationEvent;\n\n(function (ApplicationEvent) {\n ApplicationEvent[ApplicationEvent["SignedIn"] = 2] = "SignedIn";\n ApplicationEvent[ApplicationEvent["SignedOut"] = 3] = "SignedOut";\n /** When a full, potentially multi-page sync completes */\n\n ApplicationEvent[ApplicationEvent["CompletedFullSync"] = 5] = "CompletedFullSync";\n ApplicationEvent[ApplicationEvent["FailedSync"] = 6] = "FailedSync";\n ApplicationEvent[ApplicationEvent["HighLatencySync"] = 7] = "HighLatencySync";\n ApplicationEvent[ApplicationEvent["EnteredOutOfSync"] = 8] = "EnteredOutOfSync";\n ApplicationEvent[ApplicationEvent["ExitedOutOfSync"] = 9] = "ExitedOutOfSync";\n /**\n * The application has finished it `prepareForLaunch` state and is now ready for unlock\n * Called when the application has initialized and is ready for launch, but before\n * the application has been unlocked, if applicable. Use this to do pre-launch\n * configuration, but do not attempt to access user data like notes or tags.\n */\n\n ApplicationEvent[ApplicationEvent["Started"] = 10] = "Started";\n /**\n * The applicaiton is fully unlocked and ready for i/o\n * Called when the application has been fully decrypted and unlocked. Use this to\n * to begin streaming data like notes and tags.\n */\n\n ApplicationEvent[ApplicationEvent["Launched"] = 11] = "Launched";\n ApplicationEvent[ApplicationEvent["LocalDataLoaded"] = 12] = "LocalDataLoaded";\n /**\n * When the root key or root key wrapper changes. Includes events like account state\n * changes (registering, signing in, changing pw, logging out) and passcode state\n * changes (adding, removing, changing).\n */\n\n ApplicationEvent[ApplicationEvent["KeyStatusChanged"] = 13] = "KeyStatusChanged";\n ApplicationEvent[ApplicationEvent["MajorDataChange"] = 14] = "MajorDataChange";\n ApplicationEvent[ApplicationEvent["CompletedRestart"] = 15] = "CompletedRestart";\n ApplicationEvent[ApplicationEvent["LocalDataIncrementalLoad"] = 16] = "LocalDataIncrementalLoad";\n ApplicationEvent[ApplicationEvent["SyncStatusChanged"] = 17] = "SyncStatusChanged";\n ApplicationEvent[ApplicationEvent["WillSync"] = 18] = "WillSync";\n ApplicationEvent[ApplicationEvent["InvalidSyncSession"] = 19] = "InvalidSyncSession";\n ApplicationEvent[ApplicationEvent["LocalDatabaseReadError"] = 20] = "LocalDatabaseReadError";\n ApplicationEvent[ApplicationEvent["LocalDatabaseWriteError"] = 21] = "LocalDatabaseWriteError";\n /** When a single roundtrip completes with sync, in a potentially multi-page sync request.\n * If just a single roundtrip, this event will be triggered, along with CompletedFullSync */\n\n ApplicationEvent[ApplicationEvent["CompletedIncrementalSync"] = 22] = "CompletedIncrementalSync";\n})(ApplicationEvent || (ApplicationEvent = {}));\n\n;\nfunction applicationEventForSyncEvent(syncEvent) {\n var _SyncEvent$FullSyncCo;\n\n return (_SyncEvent$FullSyncCo = {}, _defineProperty(_SyncEvent$FullSyncCo, _Services_sync_events__WEBPACK_IMPORTED_MODULE_0__["SyncEvent"].FullSyncCompleted, ApplicationEvent.CompletedFullSync), _defineProperty(_SyncEvent$FullSyncCo, _Services_sync_events__WEBPACK_IMPORTED_MODULE_0__["SyncEvent"].SingleSyncCompleted, ApplicationEvent.CompletedIncrementalSync), _defineProperty(_SyncEvent$FullSyncCo, _Services_sync_events__WEBPACK_IMPORTED_MODULE_0__["SyncEvent"].SyncError, ApplicationEvent.FailedSync), _defineProperty(_SyncEvent$FullSyncCo, _Services_sync_events__WEBPACK_IMPORTED_MODULE_0__["SyncEvent"].SyncTakingTooLong, ApplicationEvent.HighLatencySync), _defineProperty(_SyncEvent$FullSyncCo, _Services_sync_events__WEBPACK_IMPORTED_MODULE_0__["SyncEvent"].EnterOutOfSync, ApplicationEvent.EnteredOutOfSync), _defineProperty(_SyncEvent$FullSyncCo, _Services_sync_events__WEBPACK_IMPORTED_MODULE_0__["SyncEvent"].ExitOutOfSync, ApplicationEvent.ExitedOutOfSync), _defineProperty(_SyncEvent$FullSyncCo, _Services_sync_events__WEBPACK_IMPORTED_MODULE_0__["SyncEvent"].LocalDataLoaded, ApplicationEvent.LocalDataLoaded), _defineProperty(_SyncEvent$FullSyncCo, _Services_sync_events__WEBPACK_IMPORTED_MODULE_0__["SyncEvent"].MajorDataChange, ApplicationEvent.MajorDataChange), _defineProperty(_SyncEvent$FullSyncCo, _Services_sync_events__WEBPACK_IMPORTED_MODULE_0__["SyncEvent"].LocalDataIncrementalLoad, ApplicationEvent.LocalDataIncrementalLoad), _defineProperty(_SyncEvent$FullSyncCo, _Services_sync_events__WEBPACK_IMPORTED_MODULE_0__["SyncEvent"].StatusChanged, ApplicationEvent.SyncStatusChanged), _defineProperty(_SyncEvent$FullSyncCo, _Services_sync_events__WEBPACK_IMPORTED_MODULE_0__["SyncEvent"].SyncWillBegin, ApplicationEvent.WillSync), _defineProperty(_SyncEvent$FullSyncCo, _Services_sync_events__WEBPACK_IMPORTED_MODULE_0__["SyncEvent"].InvalidSession, ApplicationEvent.InvalidSyncSession), _defineProperty(_SyncEvent$FullSyncCo, _Services_sync_events__WEBPACK_IMPORTED_MODULE_0__["SyncEvent"].DatabaseReadError, ApplicationEvent.LocalDatabaseReadError), _defineProperty(_SyncEvent$FullSyncCo, _Services_sync_events__WEBPACK_IMPORTED_MODULE_0__["SyncEvent"].DatabaseWriteError, ApplicationEvent.LocalDatabaseWriteError), _SyncEvent$FullSyncCo)[syncEvent];\n}//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9saWIvZXZlbnRzLnRzLmpzIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vU05MaWJyYXJ5Ly4vbGliL2V2ZW50cy50cz9lMWNjIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IFN5bmNFdmVudCB9IGZyb20gJ0BTZXJ2aWNlcy9zeW5jL2V2ZW50cyc7XG5leHBvcnQgeyBTeW5jRXZlbnQgfTtcbmV4cG9ydCB2YXIgQXBwbGljYXRpb25FdmVudDtcbihmdW5jdGlvbiAoQXBwbGljYXRpb25FdmVudCkge1xuICAgIEFwcGxpY2F0aW9uRXZlbnRbQXBwbGljYXRpb25FdmVudFtcIlNpZ25lZEluXCJdID0gMl0gPSBcIlNpZ25lZEluXCI7XG4gICAgQXBwbGljYXRpb25FdmVudFtBcHBsaWNhdGlvbkV2ZW50W1wiU2lnbmVkT3V0XCJdID0gM10gPSBcIlNpZ25lZE91dFwiO1xuICAgIC8qKiBXaGVuIGEgZnVsbCwgcG90ZW50aWFsbHkgbXVsdGktcGFnZSBzeW5jIGNvbXBsZXRlcyAqL1xuICAgIEFwcGxpY2F0aW9uRXZlbnRbQXBwbGljYXRpb25FdmVudFtcIkNvbXBsZXRlZEZ1bGxTeW5jXCJdID0gNV0gPSBcIkNvbXBsZXRlZEZ1bGxTeW5jXCI7XG4gICAgQXBwbGljYXRpb25FdmVudFtBcHBsaWNhdGlvbkV2ZW50W1wiRmFpbGVkU3luY1wiXSA9IDZdID0gXCJGYWlsZWRTeW5jXCI7XG4gICAgQXBwbGljYXRpb25FdmVudFtBcHBsaWNhdGlvbkV2ZW50W1wiSGlnaExhdGVuY3lTeW5jXCJdID0gN10gPSBcIkhpZ2hMYXRlbmN5U3luY1wiO1xuICAgIEFwcGxpY2F0aW9uRXZlbnRbQXBwbGljYXRpb25FdmVudFtcIkVudGVyZWRPdXRPZlN5bmNcIl0gPSA4XSA9IFwiRW50ZXJlZE91dE9mU3luY1wiO1xuICAgIEFwcGxpY2F0aW9uRXZlbnRbQXBwbGljYXRpb25FdmVudFtcIkV4aXRlZE91dE9mU3luY1wiXSA9IDldID0gXCJFeGl0ZWRPdXRPZlN5bmNcIjtcbiAgICAvKipcbiAgICAgKiBUaGUgYXBwbGljYXRpb24gaGFzIGZpbmlzaGVkIGl0IGBwcmVwYXJlRm9yTGF1bmNoYCBzdGF0ZSBhbmQgaXMgbm93IHJlYWR5IGZvciB1bmxvY2tcbiAgICAgKiBDYWxsZWQgd2hlbiB0aGUgYXBwbGljYXRpb24gaGFzIGluaXRpYWxpemVkIGFuZCBpcyByZWFkeSBmb3IgbGF1bmNoLCBidXQgYmVmb3JlXG4gICAgICogdGhlIGFwcGxpY2F0aW9uIGhhcyBiZWVuIHVubG9ja2VkLCBpZiBhcHBsaWNhYmxlLiBVc2UgdGhpcyB0byBkbyBwcmUtbGF1bmNoXG4gICAgICogY29uZmlndXJhdGlvbiwgYnV0IGRvIG5vdCBhdHRlbXB0IHRvIGFjY2VzcyB1c2VyIGRhdGEgbGlrZSBub3RlcyBvciB0YWdzLlxuICAgICAqL1xuICAgIEFwcGxpY2F0aW9uRXZlbnRbQXBwbGljYXRpb25FdmVudFtcIlN0YXJ0ZWRcIl0gPSAxMF0gPSBcIlN0YXJ0ZWRcIjtcbiAgICAvKipcbiAgICAgKiBUaGUgYXBwbGljYWl0b24gaXMgZnVsbHkgdW5sb2NrZWQgYW5kIHJlYWR5IGZvciBpL29cbiAgICAgKiBDYWxsZWQgd2hlbiB0aGUgYXBwbGljYXRpb24gaGFzIGJlZW4gZnVsbHkgZGVjcnlwdGVkIGFuZCB1bmxvY2tlZC4gVXNlIHRoaXMgdG9cbiAgICAgKiB0byBiZWdpbiBzdHJlYW1pbmcgZGF0YSBsaWtlIG5vdGVzIGFuZCB0YWdzLlxuICAgICAqL1xuICAgIEFwcGxpY2F0aW9uRXZlbnRbQXBwbGljYXRpb25FdmVudFtcIkxhdW5jaGVkXCJdID0gMTFdID0gXCJMYXVuY2hlZFwiO1xuICAgIEFwcGxpY2F0aW9uRXZlbnRbQXBwbGljYXRpb25FdmVudFtcIkxvY2FsRGF0YUxvYWRlZFwiXSA9IDEyXSA9IFwiTG9jYWxEYXRhTG9hZGVkXCI7XG4gICAgLyoqXG4gICAgICogV2hlbiB0aGUgcm9vdCBrZXkgb3Igcm9vdCBrZXkgd3JhcHBlciBjaGFuZ2VzLiBJbmNsdWRlcyBldmVudHMgbGlrZSBhY2NvdW50IHN0YXRlXG4gICAgICogY2hhbmdlcyAocmVnaXN0ZXJpbmcsIHNpZ25pbmcgaW4sIGNoYW5naW5nIHB3LCBsb2dnaW5nIG91dCkgYW5kIHBhc3Njb2RlIHN0YXRlXG4gICAgICogY2hhbmdlcyAoYWRkaW5nLCByZW1vdmluZywgY2hhbmdpbmcpLlxuICAgICAqL1xuICAgIEFwcGxpY2F0aW9uRXZlbnRbQXBwbGljYXRpb25FdmVudFtcIktleVN0YXR1c0NoYW5nZWRcIl0gPSAxM10gPSBcIktleVN0YXR1c0NoYW5nZWRcIjtcbiAgICBBcHBsaWNhdGlvbkV2ZW50W0FwcGxpY2F0aW9uRXZlbnRbXCJNYWpvckRhdGFDaGFuZ2VcIl0gPSAxNF0gPSBcIk1ham9yRGF0YUNoYW5nZVwiO1xuICAgIEFwcGxpY2F0aW9uRXZlbnRbQXBwbGljYXRpb25FdmVudFtcIkNvbXBsZXRlZFJlc3RhcnRcIl0gPSAxNV0gPSBcIkNvbXBsZXRlZFJlc3RhcnRcIjtcbiAgICBBcHBsaWNhdGlvbkV2ZW50W0FwcGxpY2F0aW9uRXZlbnRbXCJMb2NhbERhdGFJbmNyZW1lbnRhbExvYWRcIl0gPSAxNl0gPSBcIkxvY2FsRGF0YUluY3JlbWVudGFsTG9hZFwiO1xuICAgIEFwcGxpY2F0aW9uRXZlbnRbQXBwbGljYXRpb25FdmVudFtcIlN5bmNTdGF0dXNDaGFuZ2VkXCJdID0gMTddID0gXCJTeW5jU3RhdHVzQ2hhbmdlZFwiO1xuICAgIEFwcGxpY2F0aW9uRXZlbnRbQXBwbGljYXRpb25FdmVudFtcIldpbGxTeW5jXCJdID0gMThdID0gXCJXaWxsU3luY1wiO1xuICAgIEFwcGxpY2F0aW9uRXZlbnRbQXBwbGljYXRpb25FdmVudFtcIkludmFsaWRTeW5jU2Vzc2lvblwiXSA9IDE5XSA9IFwiSW52YWxpZFN5bmNTZXNzaW9uXCI7XG4gICAgQXBwbGljYXRpb25FdmVudFtBcHBsaWNhdGlvbkV2ZW50W1wiTG9jYWxEYXRhYmFzZVJlYWRFcnJvclwiXSA9IDIwXSA9IFwiTG9jYWxEYXRhYmFzZVJlYWRFcnJvclwiO1xuICAgIEFwcGxpY2F0aW9uRXZlbnRbQXBwbGljYXRpb25FdmVudFtcIkxvY2FsRGF0YWJhc2VXcml0ZUVycm9yXCJdID0gMjFdID0gXCJMb2NhbERhdGFiYXNlV3JpdGVFcnJvclwiO1xuICAgIC8qKiBXaGVuIGEgc2luZ2xlIHJvdW5kdHJpcCBjb21wbGV0ZXMgd2l0aCBzeW5jLCBpbiBhIHBvdGVudGlhbGx5IG11bHRpLXBhZ2Ugc3luYyByZXF1ZXN0LlxuICAgICAqIElmIGp1c3QgYSBzaW5nbGUgcm91bmR0cmlwLCB0aGlzIGV2ZW50IHdpbGwgYmUgdHJpZ2dlcmVkLCBhbG9uZyB3aXRoIENvbXBsZXRlZEZ1bGxTeW5jICovXG4gICAgQXBwbGljYXRpb25FdmVudFtBcHBsaWNhdGlvbkV2ZW50W1wiQ29tcGxldGVkSW5jcmVtZW50YWxTeW5jXCJdID0gMjJdID0gXCJDb21wbGV0ZWRJbmNyZW1lbnRhbFN5bmNcIjtcbn0pKEFwcGxpY2F0aW9uRXZlbnQgfHwgKEFwcGxpY2F0aW9uRXZlbnQgPSB7fSkpO1xuO1xuZXhwb3J0IGZ1bmN0aW9uIGFwcGxpY2F0aW9uRXZlbnRGb3JTeW5jRXZlbnQoc3luY0V2ZW50KSB7XG4gICAgcmV0dXJuIHtcbiAgICAgICAgW1N5bmNFdmVudC5GdWxsU3luY0NvbXBsZXRlZF06IEFwcGxpY2F0aW9uRXZlbnQuQ29tcGxldGVkRnVsbFN5bmMsXG4gICAgICAgIFtTeW5jRXZlbnQuU2luZ2xlU3luY0NvbXBsZXRlZF06IEFwcGxpY2F0aW9uRXZlbnQuQ29tcGxldGVkSW5jcmVtZW50YWxTeW5jLFxuICAgICAgICBbU3luY0V2ZW50LlN5bmNFcnJvcl06IEFwcGxpY2F0aW9uRXZlbnQuRmFpbGVkU3luYyxcbiAgICAgICAgW1N5bmNFdmVudC5TeW5jVGFraW5nVG9vTG9uZ106IEFwcGxpY2F0aW9uRXZlbnQuSGlnaExhdGVuY3lTeW5jLFxuICAgICAgICBbU3luY0V2ZW50LkVudGVyT3V0T2ZTeW5jXTogQXBwbGljYXRpb25FdmVudC5FbnRlcmVkT3V0T2ZTeW5jLFxuICAgICAgICBbU3luY0V2ZW50LkV4aXRPdXRPZlN5bmNdOiBBcHBsaWNhdGlvbkV2ZW50LkV4aXRlZE91dE9mU3luYyxcbiAgICAgICAgW1N5bmNFdmVudC5Mb2NhbERhdGFMb2FkZWRdOiBBcHBsaWNhdGlvbkV2ZW50LkxvY2FsRGF0YUxvYWRlZCxcbiAgICAgICAgW1N5bmNFdmVudC5NYWpvckRhdGFDaGFuZ2VdOiBBcHBsaWNhdGlvbkV2ZW50Lk1ham9yRGF0YUNoYW5nZSxcbiAgICAgICAgW1N5bmNFdmVudC5Mb2NhbERhdGFJbmNyZW1lbnRhbExvYWRdOiBBcHBsaWNhdGlvbkV2ZW50LkxvY2FsRGF0YUluY3JlbWVudGFsTG9hZCxcbiAgICAgICAgW1N5bmNFdmVudC5TdGF0dXNDaGFuZ2VkXTogQXBwbGljYXRpb25FdmVudC5TeW5jU3RhdHVzQ2hhbmdlZCxcbiAgICAgICAgW1N5bmNFdmVudC5TeW5jV2lsbEJlZ2luXTogQXBwbGljYXRpb25FdmVudC5XaWxsU3luYyxcbiAgICAgICAgW1N5bmNFdmVudC5JbnZhbGlkU2Vzc2lvbl06IEFwcGxpY2F0aW9uRXZlbnQuSW52YWxpZFN5bmNTZXNzaW9uLFxuICAgICAgICBbU3luY0V2ZW50LkRhdGFiYXNlUmVhZEVycm9yXTogQXBwbGljYXRpb25FdmVudC5Mb2NhbERhdGFiYXNlUmVhZEVycm9yLFxuICAgICAgICBbU3luY0V2ZW50LkRhdGFiYXNlV3JpdGVFcnJvcl06IEFwcGxpY2F0aW9uRXZlbnQuTG9jYWxEYXRhYmFzZVdyaXRlRXJyb3JcbiAgICB9W3N5bmNFdmVudF07XG59XG4iXSwibWFwcGluZ3MiOiI7Ozs7Ozs7O0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOzs7Ozs7O0FBTUE7QUFDQTs7Ozs7O0FBS0E7QUFDQTtBQUNBOzs7Ozs7QUFLQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7O0FBRUE7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUFBO0FBQ0E7QUFBQTtBQWdCQSIsInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./lib/events.ts\n')},"./lib/index.ts":
|
||
/*!**********************!*\
|
||
!*** ./lib/index.ts ***!
|
||
\**********************/
|
||
/*! exports provided: SNApplication, SNProtocolService, KeyMode, SNProtocolOperator001, SNProtocolOperator002, SNProtocolOperator003, SNProtocolOperator004, DeviceInterface, SNItem, ItemMutator, AppDataField, SNItemsKey, SNPredicate, SNNote, NoteMutator, SNTag, SNSmartTag, SNActionsExtension, Action, SNTheme, SNComponent, ComponentAction, ComponentMutator, SNEditor, SNUserPrefs, UserPrefsMutator, WebPrefKey, MutationType, ComponentArea, LiveItem, SNComponentManager, HistorySession, ItemHistory, ItemHistoryEntry, SNPrivileges, ProtectedAction, PrivilegeCredential, PayloadManager, ItemManager, SNHttpService, ChallengeService, PureService, ApplicationService, SNStorageService, StoragePersistencePolicies, StorageEncryptionPolicies, StorageValueModes, ValueModesKeys, Challenge, ChallengeReason, ChallengeResponse, ChallengeType, challengeTypeToString, ChallengeValue, SNSyncService, SyncSources, SyncModes, SyncQueueStrategy, SortPayloadsByRecentAndContentPriority, SNSessionManager, SNMigrationService, SNAlertService, SNHistoryManager, SNPrivilegesService, SNSingletonManager, SNApiService, Copy, findInArray, isNullOrUndefined, deepMerge, extendArray, removeFromIndex, subtractFromArray, arrayByDifference, uniqCombineObjArrays, greaterOfTwoDates, getGlobalScope, removeFromArray, addIfUnique, dictToArray, truncateHexString, jsonParseEmbeddedKeys, topLevelCompare, Uuid, EncryptionIntent, isLocalStorageIntent, isFileIntent, isDecryptedIntent, intentRequiresEncryption, ContentType, CreateItemFromPayload, Uuids, FillItemContent, ApplicationEvent, Environment, Platform, isEnvironmentWebOrDesktop, isEnvironmentMobile, platformFromString, SyncEvent, MutableCollection, ImmutablePayloadCollection, ItemCollection, CollectionSort, CreateMaxPayloadFromAnyObject, CreateSourcedPayloadFromObject, CreateIntentPayloadFromObject, CreateEncryptionParameters, PayloadByMerging, CopyPayload, PayloadSource, isPayloadSourceRetrieved, ProtocolVersion, PayloadFormat, PurePayload, PayloadField, StorageKey, BaseMigration, PrivilegeSessionLength */function(module,__webpack_exports__,__webpack_require__){"use strict";eval('__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _Lib_application__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @Lib/application */ "./lib/application.ts");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "SNApplication", function() { return _Lib_application__WEBPACK_IMPORTED_MODULE_0__["SNApplication"]; });\n\n/* harmony import */ var _Services_protocol_service__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! @Services/protocol_service */ "./lib/services/protocol_service.ts");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "SNProtocolService", function() { return _Services_protocol_service__WEBPACK_IMPORTED_MODULE_1__["SNProtocolService"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "KeyMode", function() { return _Services_protocol_service__WEBPACK_IMPORTED_MODULE_1__["KeyMode"]; });\n\n/* harmony import */ var _Protocol_operator_001_operator_001__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! @Protocol/operator/001/operator_001 */ "./lib/protocol/operator/001/operator_001.ts");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "SNProtocolOperator001", function() { return _Protocol_operator_001_operator_001__WEBPACK_IMPORTED_MODULE_2__["SNProtocolOperator001"]; });\n\n/* harmony import */ var _Protocol_operator_002_operator_002__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! @Protocol/operator/002/operator_002 */ "./lib/protocol/operator/002/operator_002.ts");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "SNProtocolOperator002", function() { return _Protocol_operator_002_operator_002__WEBPACK_IMPORTED_MODULE_3__["SNProtocolOperator002"]; });\n\n/* harmony import */ var _Protocol_operator_003_operator_003__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! @Protocol/operator/003/operator_003 */ "./lib/protocol/operator/003/operator_003.ts");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "SNProtocolOperator003", function() { return _Protocol_operator_003_operator_003__WEBPACK_IMPORTED_MODULE_4__["SNProtocolOperator003"]; });\n\n/* harmony import */ var _Protocol_operator_004_operator_004__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! @Protocol/operator/004/operator_004 */ "./lib/protocol/operator/004/operator_004.ts");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "SNProtocolOperator004", function() { return _Protocol_operator_004_operator_004__WEBPACK_IMPORTED_MODULE_5__["SNProtocolOperator004"]; });\n\n/* harmony import */ var _Lib_device_interface__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! @Lib/device_interface */ "./lib/device_interface.ts");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "DeviceInterface", function() { return _Lib_device_interface__WEBPACK_IMPORTED_MODULE_6__["DeviceInterface"]; });\n\n/* harmony import */ var _models__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! ./models */ "./lib/models/index.ts");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "SNItem", function() { return _models__WEBPACK_IMPORTED_MODULE_7__["SNItem"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "ItemMutator", function() { return _models__WEBPACK_IMPORTED_MODULE_7__["ItemMutator"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "AppDataField", function() { return _models__WEBPACK_IMPORTED_MODULE_7__["AppDataField"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "SNItemsKey", function() { return _models__WEBPACK_IMPORTED_MODULE_7__["SNItemsKey"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "SNPredicate", function() { return _models__WEBPACK_IMPORTED_MODULE_7__["SNPredicate"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "SNNote", function() { return _models__WEBPACK_IMPORTED_MODULE_7__["SNNote"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "NoteMutator", function() { return _models__WEBPACK_IMPORTED_MODULE_7__["NoteMutator"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "SNTag", function() { return _models__WEBPACK_IMPORTED_MODULE_7__["SNTag"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "SNSmartTag", function() { return _models__WEBPACK_IMPORTED_MODULE_7__["SNSmartTag"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "SNActionsExtension", function() { return _models__WEBPACK_IMPORTED_MODULE_7__["SNActionsExtension"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "Action", function() { return _models__WEBPACK_IMPORTED_MODULE_7__["Action"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "SNTheme", function() { return _models__WEBPACK_IMPORTED_MODULE_7__["SNTheme"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "SNComponent", function() { return _models__WEBPACK_IMPORTED_MODULE_7__["SNComponent"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "ComponentAction", function() { return _models__WEBPACK_IMPORTED_MODULE_7__["ComponentAction"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "ComponentMutator", function() { return _models__WEBPACK_IMPORTED_MODULE_7__["ComponentMutator"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "SNEditor", function() { return _models__WEBPACK_IMPORTED_MODULE_7__["SNEditor"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "SNUserPrefs", function() { return _models__WEBPACK_IMPORTED_MODULE_7__["SNUserPrefs"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "UserPrefsMutator", function() { return _models__WEBPACK_IMPORTED_MODULE_7__["UserPrefsMutator"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "WebPrefKey", function() { return _models__WEBPACK_IMPORTED_MODULE_7__["WebPrefKey"]; });\n\n/* harmony import */ var _Models_core_item__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! @Models/core/item */ "./lib/models/core/item.ts");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "MutationType", function() { return _Models_core_item__WEBPACK_IMPORTED_MODULE_8__["MutationType"]; });\n\n/* harmony import */ var _models_app_component__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(/*! ./models/app/component */ "./lib/models/app/component.ts");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "ComponentArea", function() { return _models_app_component__WEBPACK_IMPORTED_MODULE_9__["ComponentArea"]; });\n\n/* harmony import */ var _models_live_item__WEBPACK_IMPORTED_MODULE_10__ = __webpack_require__(/*! ./models/live_item */ "./lib/models/live_item.ts");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "LiveItem", function() { return _models_live_item__WEBPACK_IMPORTED_MODULE_10__["LiveItem"]; });\n\n/* harmony import */ var _services_component_manager__WEBPACK_IMPORTED_MODULE_11__ = __webpack_require__(/*! ./services/component_manager */ "./lib/services/component_manager.ts");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "SNComponentManager", function() { return _services_component_manager__WEBPACK_IMPORTED_MODULE_11__["SNComponentManager"]; });\n\n/* harmony import */ var _Services_history_history_session__WEBPACK_IMPORTED_MODULE_12__ = __webpack_require__(/*! @Services/history/history_session */ "./lib/services/history/history_session.ts");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "HistorySession", function() { return _Services_history_history_session__WEBPACK_IMPORTED_MODULE_12__["HistorySession"]; });\n\n/* harmony import */ var _Services_history_item_history__WEBPACK_IMPORTED_MODULE_13__ = __webpack_require__(/*! @Services/history/item_history */ "./lib/services/history/item_history.ts");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "ItemHistory", function() { return _Services_history_item_history__WEBPACK_IMPORTED_MODULE_13__["ItemHistory"]; });\n\n/* harmony import */ var _Services_history_item_history_entry__WEBPACK_IMPORTED_MODULE_14__ = __webpack_require__(/*! @Services/history/item_history_entry */ "./lib/services/history/item_history_entry.ts");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "ItemHistoryEntry", function() { return _Services_history_item_history_entry__WEBPACK_IMPORTED_MODULE_14__["ItemHistoryEntry"]; });\n\n/* harmony import */ var _models_app_privileges__WEBPACK_IMPORTED_MODULE_15__ = __webpack_require__(/*! ./models/app/privileges */ "./lib/models/app/privileges.ts");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "SNPrivileges", function() { return _models_app_privileges__WEBPACK_IMPORTED_MODULE_15__["SNPrivileges"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "ProtectedAction", function() { return _models_app_privileges__WEBPACK_IMPORTED_MODULE_15__["ProtectedAction"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "PrivilegeCredential", function() { return _models_app_privileges__WEBPACK_IMPORTED_MODULE_15__["PrivilegeCredential"]; });\n\n/* harmony import */ var _services_model_manager__WEBPACK_IMPORTED_MODULE_16__ = __webpack_require__(/*! ./services/model_manager */ "./lib/services/model_manager.ts");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "PayloadManager", function() { return _services_model_manager__WEBPACK_IMPORTED_MODULE_16__["PayloadManager"]; });\n\n/* harmony import */ var _services_item_manager__WEBPACK_IMPORTED_MODULE_17__ = __webpack_require__(/*! ./services/item_manager */ "./lib/services/item_manager.ts");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "ItemManager", function() { return _services_item_manager__WEBPACK_IMPORTED_MODULE_17__["ItemManager"]; });\n\n/* harmony import */ var _services_api_http_service__WEBPACK_IMPORTED_MODULE_18__ = __webpack_require__(/*! ./services/api/http_service */ "./lib/services/api/http_service.ts");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "SNHttpService", function() { return _services_api_http_service__WEBPACK_IMPORTED_MODULE_18__["SNHttpService"]; });\n\n/* harmony import */ var _services_challenge_challenge_service__WEBPACK_IMPORTED_MODULE_19__ = __webpack_require__(/*! ./services/challenge/challenge_service */ "./lib/services/challenge/challenge_service.ts");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "ChallengeService", function() { return _services_challenge_challenge_service__WEBPACK_IMPORTED_MODULE_19__["ChallengeService"]; });\n\n/* harmony import */ var _Services_pure_service__WEBPACK_IMPORTED_MODULE_20__ = __webpack_require__(/*! @Services/pure_service */ "./lib/services/pure_service.ts");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "PureService", function() { return _Services_pure_service__WEBPACK_IMPORTED_MODULE_20__["PureService"]; });\n\n/* harmony import */ var _Services_application_service__WEBPACK_IMPORTED_MODULE_21__ = __webpack_require__(/*! @Services/application_service */ "./lib/services/application_service.ts");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "ApplicationService", function() { return _Services_application_service__WEBPACK_IMPORTED_MODULE_21__["ApplicationService"]; });\n\n/* harmony import */ var _services_storage_service__WEBPACK_IMPORTED_MODULE_22__ = __webpack_require__(/*! ./services/storage_service */ "./lib/services/storage_service.ts");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "SNStorageService", function() { return _services_storage_service__WEBPACK_IMPORTED_MODULE_22__["SNStorageService"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "StoragePersistencePolicies", function() { return _services_storage_service__WEBPACK_IMPORTED_MODULE_22__["StoragePersistencePolicies"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "StorageEncryptionPolicies", function() { return _services_storage_service__WEBPACK_IMPORTED_MODULE_22__["StorageEncryptionPolicies"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "StorageValueModes", function() { return _services_storage_service__WEBPACK_IMPORTED_MODULE_22__["StorageValueModes"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "ValueModesKeys", function() { return _services_storage_service__WEBPACK_IMPORTED_MODULE_22__["ValueModesKeys"]; });\n\n/* harmony import */ var _Lib_challenges__WEBPACK_IMPORTED_MODULE_23__ = __webpack_require__(/*! @Lib/challenges */ "./lib/challenges.ts");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "Challenge", function() { return _Lib_challenges__WEBPACK_IMPORTED_MODULE_23__["Challenge"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "ChallengeReason", function() { return _Lib_challenges__WEBPACK_IMPORTED_MODULE_23__["ChallengeReason"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "ChallengeResponse", function() { return _Lib_challenges__WEBPACK_IMPORTED_MODULE_23__["ChallengeResponse"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "ChallengeType", function() { return _Lib_challenges__WEBPACK_IMPORTED_MODULE_23__["ChallengeType"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "challengeTypeToString", function() { return _Lib_challenges__WEBPACK_IMPORTED_MODULE_23__["challengeTypeToString"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "ChallengeValue", function() { return _Lib_challenges__WEBPACK_IMPORTED_MODULE_23__["ChallengeValue"]; });\n\n/* harmony import */ var _services_sync_sync_service__WEBPACK_IMPORTED_MODULE_24__ = __webpack_require__(/*! ./services/sync/sync_service */ "./lib/services/sync/sync_service.ts");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "SNSyncService", function() { return _services_sync_sync_service__WEBPACK_IMPORTED_MODULE_24__["SNSyncService"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "SyncSources", function() { return _services_sync_sync_service__WEBPACK_IMPORTED_MODULE_24__["SyncSources"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "SyncModes", function() { return _services_sync_sync_service__WEBPACK_IMPORTED_MODULE_24__["SyncModes"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "SyncQueueStrategy", function() { return _services_sync_sync_service__WEBPACK_IMPORTED_MODULE_24__["SyncQueueStrategy"]; });\n\n/* harmony import */ var _services_sync_utils__WEBPACK_IMPORTED_MODULE_25__ = __webpack_require__(/*! ./services/sync/utils */ "./lib/services/sync/utils.ts");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "SortPayloadsByRecentAndContentPriority", function() { return _services_sync_utils__WEBPACK_IMPORTED_MODULE_25__["SortPayloadsByRecentAndContentPriority"]; });\n\n/* harmony import */ var _services_api_session_manager__WEBPACK_IMPORTED_MODULE_26__ = __webpack_require__(/*! ./services/api/session_manager */ "./lib/services/api/session_manager.ts");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "SNSessionManager", function() { return _services_api_session_manager__WEBPACK_IMPORTED_MODULE_26__["SNSessionManager"]; });\n\n/* harmony import */ var _services_migration_service__WEBPACK_IMPORTED_MODULE_27__ = __webpack_require__(/*! ./services/migration_service */ "./lib/services/migration_service.ts");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "SNMigrationService", function() { return _services_migration_service__WEBPACK_IMPORTED_MODULE_27__["SNMigrationService"]; });\n\n/* harmony import */ var _services_alert_service__WEBPACK_IMPORTED_MODULE_28__ = __webpack_require__(/*! ./services/alert_service */ "./lib/services/alert_service.ts");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "SNAlertService", function() { return _services_alert_service__WEBPACK_IMPORTED_MODULE_28__["SNAlertService"]; });\n\n/* harmony import */ var _services_history_history_manager__WEBPACK_IMPORTED_MODULE_29__ = __webpack_require__(/*! ./services/history/history_manager */ "./lib/services/history/history_manager.ts");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "SNHistoryManager", function() { return _services_history_history_manager__WEBPACK_IMPORTED_MODULE_29__["SNHistoryManager"]; });\n\n/* harmony import */ var _services_privileges_service__WEBPACK_IMPORTED_MODULE_30__ = __webpack_require__(/*! ./services/privileges_service */ "./lib/services/privileges_service.ts");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "SNPrivilegesService", function() { return _services_privileges_service__WEBPACK_IMPORTED_MODULE_30__["SNPrivilegesService"]; });\n\n/* harmony import */ var _services_singleton_manager__WEBPACK_IMPORTED_MODULE_31__ = __webpack_require__(/*! ./services/singleton_manager */ "./lib/services/singleton_manager.ts");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "SNSingletonManager", function() { return _services_singleton_manager__WEBPACK_IMPORTED_MODULE_31__["SNSingletonManager"]; });\n\n/* harmony import */ var _services_api_api_service__WEBPACK_IMPORTED_MODULE_32__ = __webpack_require__(/*! ./services/api/api_service */ "./lib/services/api/api_service.ts");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "SNApiService", function() { return _services_api_api_service__WEBPACK_IMPORTED_MODULE_32__["SNApiService"]; });\n\n/* harmony import */ var _utils__WEBPACK_IMPORTED_MODULE_33__ = __webpack_require__(/*! ./utils */ "./lib/utils.ts");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "Copy", function() { return _utils__WEBPACK_IMPORTED_MODULE_33__["Copy"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "findInArray", function() { return _utils__WEBPACK_IMPORTED_MODULE_33__["findInArray"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "isNullOrUndefined", function() { return _utils__WEBPACK_IMPORTED_MODULE_33__["isNullOrUndefined"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "deepMerge", function() { return _utils__WEBPACK_IMPORTED_MODULE_33__["deepMerge"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "extendArray", function() { return _utils__WEBPACK_IMPORTED_MODULE_33__["extendArray"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "removeFromIndex", function() { return _utils__WEBPACK_IMPORTED_MODULE_33__["removeFromIndex"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "subtractFromArray", function() { return _utils__WEBPACK_IMPORTED_MODULE_33__["subtractFromArray"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "arrayByDifference", function() { return _utils__WEBPACK_IMPORTED_MODULE_33__["arrayByDifference"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "uniqCombineObjArrays", function() { return _utils__WEBPACK_IMPORTED_MODULE_33__["uniqCombineObjArrays"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "greaterOfTwoDates", function() { return _utils__WEBPACK_IMPORTED_MODULE_33__["greaterOfTwoDates"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "getGlobalScope", function() { return _utils__WEBPACK_IMPORTED_MODULE_33__["getGlobalScope"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "removeFromArray", function() { return _utils__WEBPACK_IMPORTED_MODULE_33__["removeFromArray"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "addIfUnique", function() { return _utils__WEBPACK_IMPORTED_MODULE_33__["addIfUnique"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "dictToArray", function() { return _utils__WEBPACK_IMPORTED_MODULE_33__["dictToArray"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "truncateHexString", function() { return _utils__WEBPACK_IMPORTED_MODULE_33__["truncateHexString"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "jsonParseEmbeddedKeys", function() { return _utils__WEBPACK_IMPORTED_MODULE_33__["jsonParseEmbeddedKeys"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "topLevelCompare", function() { return _utils__WEBPACK_IMPORTED_MODULE_33__["topLevelCompare"]; });\n\n/* harmony import */ var _Lib_uuid__WEBPACK_IMPORTED_MODULE_34__ = __webpack_require__(/*! @Lib/uuid */ "./lib/uuid.ts");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "Uuid", function() { return _Lib_uuid__WEBPACK_IMPORTED_MODULE_34__["Uuid"]; });\n\n/* harmony import */ var _Protocol_intents__WEBPACK_IMPORTED_MODULE_35__ = __webpack_require__(/*! @Protocol/intents */ "./lib/protocol/intents.ts");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "EncryptionIntent", function() { return _Protocol_intents__WEBPACK_IMPORTED_MODULE_35__["EncryptionIntent"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "isLocalStorageIntent", function() { return _Protocol_intents__WEBPACK_IMPORTED_MODULE_35__["isLocalStorageIntent"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "isFileIntent", function() { return _Protocol_intents__WEBPACK_IMPORTED_MODULE_35__["isFileIntent"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "isDecryptedIntent", function() { return _Protocol_intents__WEBPACK_IMPORTED_MODULE_35__["isDecryptedIntent"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "intentRequiresEncryption", function() { return _Protocol_intents__WEBPACK_IMPORTED_MODULE_35__["intentRequiresEncryption"]; });\n\n/* harmony import */ var _Models_content_types__WEBPACK_IMPORTED_MODULE_36__ = __webpack_require__(/*! @Models/content_types */ "./lib/models/content_types.ts");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "ContentType", function() { return _Models_content_types__WEBPACK_IMPORTED_MODULE_36__["ContentType"]; });\n\n/* harmony import */ var _Models_generator__WEBPACK_IMPORTED_MODULE_37__ = __webpack_require__(/*! @Models/generator */ "./lib/models/generator.ts");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "CreateItemFromPayload", function() { return _Models_generator__WEBPACK_IMPORTED_MODULE_37__["CreateItemFromPayload"]; });\n\n/* harmony import */ var _Models_functions__WEBPACK_IMPORTED_MODULE_38__ = __webpack_require__(/*! @Models/functions */ "./lib/models/functions.ts");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "Uuids", function() { return _Models_functions__WEBPACK_IMPORTED_MODULE_38__["Uuids"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "FillItemContent", function() { return _Models_functions__WEBPACK_IMPORTED_MODULE_38__["FillItemContent"]; });\n\n/* harmony import */ var _Lib_events__WEBPACK_IMPORTED_MODULE_39__ = __webpack_require__(/*! @Lib/events */ "./lib/events.ts");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "ApplicationEvent", function() { return _Lib_events__WEBPACK_IMPORTED_MODULE_39__["ApplicationEvent"]; });\n\n/* harmony import */ var _Lib_platforms__WEBPACK_IMPORTED_MODULE_40__ = __webpack_require__(/*! @Lib/platforms */ "./lib/platforms.ts");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "Environment", function() { return _Lib_platforms__WEBPACK_IMPORTED_MODULE_40__["Environment"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "Platform", function() { return _Lib_platforms__WEBPACK_IMPORTED_MODULE_40__["Platform"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "isEnvironmentWebOrDesktop", function() { return _Lib_platforms__WEBPACK_IMPORTED_MODULE_40__["isEnvironmentWebOrDesktop"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "isEnvironmentMobile", function() { return _Lib_platforms__WEBPACK_IMPORTED_MODULE_40__["isEnvironmentMobile"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "platformFromString", function() { return _Lib_platforms__WEBPACK_IMPORTED_MODULE_40__["platformFromString"]; });\n\n/* harmony import */ var _Lib_services_sync_events__WEBPACK_IMPORTED_MODULE_41__ = __webpack_require__(/*! @Lib/services/sync/events */ "./lib/services/sync/events.ts");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "SyncEvent", function() { return _Lib_services_sync_events__WEBPACK_IMPORTED_MODULE_41__["SyncEvent"]; });\n\n/* harmony import */ var _Protocol_collection_collection__WEBPACK_IMPORTED_MODULE_42__ = __webpack_require__(/*! @Protocol/collection/collection */ "./lib/protocol/collection/collection.ts");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "MutableCollection", function() { return _Protocol_collection_collection__WEBPACK_IMPORTED_MODULE_42__["MutableCollection"]; });\n\n/* harmony import */ var _Protocol_collection_payload_collection__WEBPACK_IMPORTED_MODULE_43__ = __webpack_require__(/*! @Protocol/collection/payload_collection */ "./lib/protocol/collection/payload_collection.ts");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "ImmutablePayloadCollection", function() { return _Protocol_collection_payload_collection__WEBPACK_IMPORTED_MODULE_43__["ImmutablePayloadCollection"]; });\n\n/* harmony import */ var _Protocol_collection_item_collection__WEBPACK_IMPORTED_MODULE_44__ = __webpack_require__(/*! @Protocol/collection/item_collection */ "./lib/protocol/collection/item_collection.ts");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "ItemCollection", function() { return _Protocol_collection_item_collection__WEBPACK_IMPORTED_MODULE_44__["ItemCollection"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "CollectionSort", function() { return _Protocol_collection_item_collection__WEBPACK_IMPORTED_MODULE_44__["CollectionSort"]; });\n\n/* harmony import */ var _Payloads_generator__WEBPACK_IMPORTED_MODULE_45__ = __webpack_require__(/*! @Payloads/generator */ "./lib/protocol/payloads/generator.ts");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "CreateMaxPayloadFromAnyObject", function() { return _Payloads_generator__WEBPACK_IMPORTED_MODULE_45__["CreateMaxPayloadFromAnyObject"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "CreateSourcedPayloadFromObject", function() { return _Payloads_generator__WEBPACK_IMPORTED_MODULE_45__["CreateSourcedPayloadFromObject"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "CreateIntentPayloadFromObject", function() { return _Payloads_generator__WEBPACK_IMPORTED_MODULE_45__["CreateIntentPayloadFromObject"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "CreateEncryptionParameters", function() { return _Payloads_generator__WEBPACK_IMPORTED_MODULE_45__["CreateEncryptionParameters"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "PayloadByMerging", function() { return _Payloads_generator__WEBPACK_IMPORTED_MODULE_45__["PayloadByMerging"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "CopyPayload", function() { return _Payloads_generator__WEBPACK_IMPORTED_MODULE_45__["CopyPayload"]; });\n\n/* harmony import */ var _Lib_protocol_payloads_sources__WEBPACK_IMPORTED_MODULE_46__ = __webpack_require__(/*! @Lib/protocol/payloads/sources */ "./lib/protocol/payloads/sources.ts");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "PayloadSource", function() { return _Lib_protocol_payloads_sources__WEBPACK_IMPORTED_MODULE_46__["PayloadSource"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "isPayloadSourceRetrieved", function() { return _Lib_protocol_payloads_sources__WEBPACK_IMPORTED_MODULE_46__["isPayloadSourceRetrieved"]; });\n\n/* harmony import */ var _Lib_protocol_versions__WEBPACK_IMPORTED_MODULE_47__ = __webpack_require__(/*! @Lib/protocol/versions */ "./lib/protocol/versions.ts");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "ProtocolVersion", function() { return _Lib_protocol_versions__WEBPACK_IMPORTED_MODULE_47__["ProtocolVersion"]; });\n\n/* harmony import */ var _Payloads_formats__WEBPACK_IMPORTED_MODULE_48__ = __webpack_require__(/*! @Payloads/formats */ "./lib/protocol/payloads/formats.ts");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "PayloadFormat", function() { return _Payloads_formats__WEBPACK_IMPORTED_MODULE_48__["PayloadFormat"]; });\n\n/* harmony import */ var _Payloads_pure_payload__WEBPACK_IMPORTED_MODULE_49__ = __webpack_require__(/*! @Payloads/pure_payload */ "./lib/protocol/payloads/pure_payload.ts");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "PurePayload", function() { return _Payloads_pure_payload__WEBPACK_IMPORTED_MODULE_49__["PurePayload"]; });\n\n/* harmony import */ var _Payloads_fields__WEBPACK_IMPORTED_MODULE_50__ = __webpack_require__(/*! @Payloads/fields */ "./lib/protocol/payloads/fields.ts");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "PayloadField", function() { return _Payloads_fields__WEBPACK_IMPORTED_MODULE_50__["PayloadField"]; });\n\n/* harmony import */ var _Lib_storage_keys__WEBPACK_IMPORTED_MODULE_51__ = __webpack_require__(/*! @Lib/storage_keys */ "./lib/storage_keys.ts");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "StorageKey", function() { return _Lib_storage_keys__WEBPACK_IMPORTED_MODULE_51__["StorageKey"]; });\n\n/* harmony import */ var _Lib_migrations_2020_01_01_base__WEBPACK_IMPORTED_MODULE_52__ = __webpack_require__(/*! @Lib/migrations/2020-01-01-base */ "./lib/migrations/2020-01-01-base.ts");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "BaseMigration", function() { return _Lib_migrations_2020_01_01_base__WEBPACK_IMPORTED_MODULE_52__["BaseMigration"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "PrivilegeSessionLength", function() { return _services_privileges_service__WEBPACK_IMPORTED_MODULE_30__["PrivilegeSessionLength"]; });\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n/** Payloads */\n\n\n\n\n\n\n\n\n\n\n\n/** Migrations */\n\n\n/** Privileges */\n\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9saWIvaW5kZXgudHMuanMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly9TTkxpYnJhcnkvLi9saWIvaW5kZXgudHM/NGQ4NSJdLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgeyBTTkFwcGxpY2F0aW9uIH0gZnJvbSAnQExpYi9hcHBsaWNhdGlvbic7XG5leHBvcnQgeyBTTlByb3RvY29sU2VydmljZSwgS2V5TW9kZSB9IGZyb20gJ0BTZXJ2aWNlcy9wcm90b2NvbF9zZXJ2aWNlJztcbmV4cG9ydCB7IFNOUHJvdG9jb2xPcGVyYXRvcjAwMSB9IGZyb20gJ0BQcm90b2NvbC9vcGVyYXRvci8wMDEvb3BlcmF0b3JfMDAxJztcbmV4cG9ydCB7IFNOUHJvdG9jb2xPcGVyYXRvcjAwMiB9IGZyb20gJ0BQcm90b2NvbC9vcGVyYXRvci8wMDIvb3BlcmF0b3JfMDAyJztcbmV4cG9ydCB7IFNOUHJvdG9jb2xPcGVyYXRvcjAwMyB9IGZyb20gJ0BQcm90b2NvbC9vcGVyYXRvci8wMDMvb3BlcmF0b3JfMDAzJztcbmV4cG9ydCB7IFNOUHJvdG9jb2xPcGVyYXRvcjAwNCB9IGZyb20gJ0BQcm90b2NvbC9vcGVyYXRvci8wMDQvb3BlcmF0b3JfMDA0JztcbmV4cG9ydCB7IERldmljZUludGVyZmFjZSB9IGZyb20gJ0BMaWIvZGV2aWNlX2ludGVyZmFjZSc7XG5leHBvcnQgeyBTTkl0ZW0sIEl0ZW1NdXRhdG9yLCBBcHBEYXRhRmllbGQsIFNOSXRlbXNLZXksIFNOUHJlZGljYXRlLCBTTk5vdGUsIE5vdGVNdXRhdG9yLCBTTlRhZywgU05TbWFydFRhZywgU05BY3Rpb25zRXh0ZW5zaW9uLCBBY3Rpb24sIFNOVGhlbWUsIFNOQ29tcG9uZW50LCBDb21wb25lbnRBY3Rpb24sIENvbXBvbmVudE11dGF0b3IsIFNORWRpdG9yLCBTTlVzZXJQcmVmcywgVXNlclByZWZzTXV0YXRvciwgV2ViUHJlZktleSB9IGZyb20gJy4vbW9kZWxzJztcbmV4cG9ydCB7IE11dGF0aW9uVHlwZSB9IGZyb20gJ0BNb2RlbHMvY29yZS9pdGVtJztcbmV4cG9ydCB7IENvbXBvbmVudEFyZWEgfSBmcm9tICcuL21vZGVscy9hcHAvY29tcG9uZW50JztcbmV4cG9ydCB7IExpdmVJdGVtIH0gZnJvbSAnLi9tb2RlbHMvbGl2ZV9pdGVtJztcbmV4cG9ydCB7IFNOQ29tcG9uZW50TWFuYWdlciB9IGZyb20gJy4vc2VydmljZXMvY29tcG9uZW50X21hbmFnZXInO1xuZXhwb3J0IHsgSGlzdG9yeVNlc3Npb24gfSBmcm9tICdAU2VydmljZXMvaGlzdG9yeS9oaXN0b3J5X3Nlc3Npb24nO1xuZXhwb3J0IHsgSXRlbUhpc3RvcnkgfSBmcm9tICdAU2VydmljZXMvaGlzdG9yeS9pdGVtX2hpc3RvcnknO1xuZXhwb3J0IHsgSXRlbUhpc3RvcnlFbnRyeSB9IGZyb20gJ0BTZXJ2aWNlcy9oaXN0b3J5L2l0ZW1faGlzdG9yeV9lbnRyeSc7XG5leHBvcnQgeyBTTlByaXZpbGVnZXMsIFByb3RlY3RlZEFjdGlvbiwgUHJpdmlsZWdlQ3JlZGVudGlhbCB9IGZyb20gJy4vbW9kZWxzL2FwcC9wcml2aWxlZ2VzJztcbmV4cG9ydCB7IFBheWxvYWRNYW5hZ2VyIH0gZnJvbSAnLi9zZXJ2aWNlcy9tb2RlbF9tYW5hZ2VyJztcbmV4cG9ydCB7IEl0ZW1NYW5hZ2VyIH0gZnJvbSAnLi9zZXJ2aWNlcy9pdGVtX21hbmFnZXInO1xuZXhwb3J0IHsgU05IdHRwU2VydmljZSB9IGZyb20gJy4vc2VydmljZXMvYXBpL2h0dHBfc2VydmljZSc7XG5leHBvcnQgeyBDaGFsbGVuZ2VTZXJ2aWNlIH0gZnJvbSAnLi9zZXJ2aWNlcy9jaGFsbGVuZ2UvY2hhbGxlbmdlX3NlcnZpY2UnO1xuZXhwb3J0IHsgUHVyZVNlcnZpY2UgfSBmcm9tICdAU2VydmljZXMvcHVyZV9zZXJ2aWNlJztcbmV4cG9ydCB7IEFwcGxpY2F0aW9uU2VydmljZSB9IGZyb20gJ0BTZXJ2aWNlcy9hcHBsaWNhdGlvbl9zZXJ2aWNlJztcbmV4cG9ydCB7IFNOU3RvcmFnZVNlcnZpY2UsIFN0b3JhZ2VQZXJzaXN0ZW5jZVBvbGljaWVzLCBTdG9yYWdlRW5jcnlwdGlvblBvbGljaWVzLCBTdG9yYWdlVmFsdWVNb2RlcywgVmFsdWVNb2Rlc0tleXMgfSBmcm9tICcuL3NlcnZpY2VzL3N0b3JhZ2Vfc2VydmljZSc7XG5leHBvcnQgeyBDaGFsbGVuZ2UsIENoYWxsZW5nZVJlYXNvbiwgQ2hhbGxlbmdlUmVzcG9uc2UsIENoYWxsZW5nZVR5cGUsIGNoYWxsZW5nZVR5cGVUb1N0cmluZywgQ2hhbGxlbmdlVmFsdWUsIH0gZnJvbSAnQExpYi9jaGFsbGVuZ2VzJztcbmV4cG9ydCB7IFNOU3luY1NlcnZpY2UsIFN5bmNTb3VyY2VzLCBTeW5jTW9kZXMsIFN5bmNRdWV1ZVN0cmF0ZWd5LCB9IGZyb20gJy4vc2VydmljZXMvc3luYy9zeW5jX3NlcnZpY2UnO1xuZXhwb3J0IHsgU29ydFBheWxvYWRzQnlSZWNlbnRBbmRDb250ZW50UHJpb3JpdHkgfSBmcm9tICcuL3NlcnZpY2VzL3N5bmMvdXRpbHMnO1xuZXhwb3J0IHsgU05TZXNzaW9uTWFuYWdlciB9IGZyb20gJy4vc2VydmljZXMvYXBpL3Nlc3Npb25fbWFuYWdlcic7XG5leHBvcnQgeyBTTk1pZ3JhdGlvblNlcnZpY2UgfSBmcm9tICcuL3NlcnZpY2VzL21pZ3JhdGlvbl9zZXJ2aWNlJztcbmV4cG9ydCB7IFNOQWxlcnRTZXJ2aWNlIH0gZnJvbSAnLi9zZXJ2aWNlcy9hbGVydF9zZXJ2aWNlJztcbmV4cG9ydCB7IFNOSGlzdG9yeU1hbmFnZXIgfSBmcm9tICcuL3NlcnZpY2VzL2hpc3RvcnkvaGlzdG9yeV9tYW5hZ2VyJztcbmV4cG9ydCB7IFNOUHJpdmlsZWdlc1NlcnZpY2UgfSBmcm9tICcuL3NlcnZpY2VzL3ByaXZpbGVnZXNfc2VydmljZSc7XG5leHBvcnQgeyBTTlNpbmdsZXRvbk1hbmFnZXIgfSBmcm9tICcuL3NlcnZpY2VzL3NpbmdsZXRvbl9tYW5hZ2VyJztcbmV4cG9ydCB7IFNOQXBpU2VydmljZSB9IGZyb20gJy4vc2VydmljZXMvYXBpL2FwaV9zZXJ2aWNlJztcbmV4cG9ydCB7IENvcHksIGZpbmRJbkFycmF5LCBpc051bGxPclVuZGVmaW5lZCwgZGVlcE1lcmdlLCBleHRlbmRBcnJheSwgcmVtb3ZlRnJvbUluZGV4LCBzdWJ0cmFjdEZyb21BcnJheSwgYXJyYXlCeURpZmZlcmVuY2UsIHVuaXFDb21iaW5lT2JqQXJyYXlzLCBncmVhdGVyT2ZUd29EYXRlcywgZ2V0R2xvYmFsU2NvcGUsIHJlbW92ZUZyb21BcnJheSwgYWRkSWZVbmlxdWUsIGRpY3RUb0FycmF5LCB0cnVuY2F0ZUhleFN0cmluZywganNvblBhcnNlRW1iZWRkZWRLZXlzLCB0b3BMZXZlbENvbXBhcmUgfSBmcm9tICcuL3V0aWxzJztcbmV4cG9ydCB7IFV1aWQgfSBmcm9tICdATGliL3V1aWQnO1xuZXhwb3J0IHsgRW5jcnlwdGlvbkludGVudCwgaXNMb2NhbFN0b3JhZ2VJbnRlbnQsIGlzRmlsZUludGVudCwgaXNEZWNyeXB0ZWRJbnRlbnQsIGludGVudFJlcXVpcmVzRW5jcnlwdGlvbiB9IGZyb20gJ0BQcm90b2NvbC9pbnRlbnRzJztcbmV4cG9ydCB7IENvbnRlbnRUeXBlIH0gZnJvbSAnQE1vZGVscy9jb250ZW50X3R5cGVzJztcbmV4cG9ydCB7IENyZWF0ZUl0ZW1Gcm9tUGF5bG9hZCB9IGZyb20gJ0BNb2RlbHMvZ2VuZXJhdG9yJztcbmV4cG9ydCB7IFV1aWRzLCBGaWxsSXRlbUNvbnRlbnQgfSBmcm9tICdATW9kZWxzL2Z1bmN0aW9ucyc7XG5leHBvcnQgeyBBcHBsaWNhdGlvbkV2ZW50IH0gZnJvbSAnQExpYi9ldmVudHMnO1xuZXhwb3J0IHsgRW52aXJvbm1lbnQsIFBsYXRmb3JtLCBpc0Vudmlyb25tZW50V2ViT3JEZXNrdG9wLCBpc0Vudmlyb25tZW50TW9iaWxlLCBwbGF0Zm9ybUZyb21TdHJpbmcgfSBmcm9tICdATGliL3BsYXRmb3Jtcyc7XG5leHBvcnQgeyBTeW5jRXZlbnQgfSBmcm9tICdATGliL3NlcnZpY2VzL3N5bmMvZXZlbnRzJztcbi8qKiBQYXlsb2FkcyAqL1xuZXhwb3J0IHsgTXV0YWJsZUNvbGxlY3Rpb24gfSBmcm9tICdAUHJvdG9jb2wvY29sbGVjdGlvbi9jb2xsZWN0aW9uJztcbmV4cG9ydCB7IEltbXV0YWJsZVBheWxvYWRDb2xsZWN0aW9uIH0gZnJvbSAnQFByb3RvY29sL2NvbGxlY3Rpb24vcGF5bG9hZF9jb2xsZWN0aW9uJztcbmV4cG9ydCB7IEl0ZW1Db2xsZWN0aW9uLCBDb2xsZWN0aW9uU29ydCB9IGZyb20gJ0BQcm90b2NvbC9jb2xsZWN0aW9uL2l0ZW1fY29sbGVjdGlvbic7XG5leHBvcnQgeyBDcmVhdGVNYXhQYXlsb2FkRnJvbUFueU9iamVjdCwgQ3JlYXRlU291cmNlZFBheWxvYWRGcm9tT2JqZWN0LCBDcmVhdGVJbnRlbnRQYXlsb2FkRnJvbU9iamVjdCwgQ3JlYXRlRW5jcnlwdGlvblBhcmFtZXRlcnMsIFBheWxvYWRCeU1lcmdpbmcsIENvcHlQYXlsb2FkIH0gZnJvbSAnQFBheWxvYWRzL2dlbmVyYXRvcic7XG5leHBvcnQgeyBQYXlsb2FkU291cmNlLCBpc1BheWxvYWRTb3VyY2VSZXRyaWV2ZWQgfSBmcm9tICdATGliL3Byb3RvY29sL3BheWxvYWRzL3NvdXJjZXMnO1xuZXhwb3J0IHsgUHJvdG9jb2xWZXJzaW9uIH0gZnJvbSAnQExpYi9wcm90b2NvbC92ZXJzaW9ucyc7XG5leHBvcnQgeyBQYXlsb2FkRm9ybWF0IH0gZnJvbSAnQFBheWxvYWRzL2Zvcm1hdHMnO1xuZXhwb3J0IHsgUHVyZVBheWxvYWQgfSBmcm9tICdAUGF5bG9hZHMvcHVyZV9wYXlsb2FkJztcbmV4cG9ydCB7IFBheWxvYWRGaWVsZCB9IGZyb20gJ0BQYXlsb2Fkcy9maWVsZHMnO1xuZXhwb3J0IHsgU3RvcmFnZUtleSB9IGZyb20gJ0BMaWIvc3RvcmFnZV9rZXlzJztcbi8qKiBNaWdyYXRpb25zICovXG5leHBvcnQgeyBCYXNlTWlncmF0aW9uIH0gZnJvbSAnQExpYi9taWdyYXRpb25zLzIwMjAtMDEtMDEtYmFzZSc7XG4vKiogUHJpdmlsZWdlcyAqL1xuZXhwb3J0IHsgUHJpdmlsZWdlU2Vzc2lvbkxlbmd0aCB9IGZyb20gJ0BTZXJ2aWNlcy9wcml2aWxlZ2VzX3NlcnZpY2UnO1xuIl0sIm1hcHBpbmdzIjoiQUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7Iiwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./lib/index.ts\n')},"./lib/migrations/2020-01-01-base.ts":
|
||
/*!*******************************************!*\
|
||
!*** ./lib/migrations/2020-01-01-base.ts ***!
|
||
\*******************************************/
|
||
/*! exports provided: BaseMigration */function(module,__webpack_exports__,__webpack_require__){"use strict";eval('__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "BaseMigration", function() { return BaseMigration; });\n/* harmony import */ var _babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @babel/runtime/regenerator */ "./node_modules/@babel/runtime/regenerator/index.js");\n/* harmony import */ var _babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var _Lib_migrations_migration__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! @Lib/migrations/migration */ "./lib/migrations/migration.ts");\n/* harmony import */ var _Lib_storage_keys__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! @Lib/storage_keys */ "./lib/storage_keys.ts");\n/* harmony import */ var _Lib_stages__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! @Lib/stages */ "./lib/stages.ts");\n/* harmony import */ var _Lib_utils__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! @Lib/utils */ "./lib/utils.ts");\n\n\nfunction _typeof(obj) { "@babel/helpers - typeof"; if (typeof Symbol === "function" && typeof Symbol.iterator === "symbol") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }; } return _typeof(obj); }\n\nfunction asyncGeneratorStep(gen, resolve, reject, _next, _throw, key, arg) { try { var info = gen[key](arg); var value = info.value; } catch (error) { reject(error); return; } if (info.done) { resolve(value); } else { Promise.resolve(value).then(_next, _throw); } }\n\nfunction _asyncToGenerator(fn) { return function () { var self = this, args = arguments; return new Promise(function (resolve, reject) { var gen = fn.apply(self, args); function _next(value) { asyncGeneratorStep(gen, resolve, reject, _next, _throw, "next", value); } function _throw(err) { asyncGeneratorStep(gen, resolve, reject, _next, _throw, "throw", err); } _next(undefined); }); }; }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } }\n\nfunction _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); } }\n\nfunction _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; }\n\nfunction _possibleConstructorReturn(self, call) { if (call && (_typeof(call) === "object" || typeof call === "function")) { return call; } return _assertThisInitialized(self); }\n\nfunction _assertThisInitialized(self) { if (self === void 0) { throw new ReferenceError("this hasn\'t been initialised - super() hasn\'t been called"); } return self; }\n\nfunction _getPrototypeOf(o) { _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function _getPrototypeOf(o) { return o.__proto__ || Object.getPrototypeOf(o); }; return _getPrototypeOf(o); }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== "function" && superClass !== null) { throw new TypeError("Super expression must either be null or a function"); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, writable: true, configurable: true } }); if (superClass) _setPrototypeOf(subClass, superClass); }\n\nfunction _setPrototypeOf(o, p) { _setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) { o.__proto__ = p; return o; }; return _setPrototypeOf(o, p); }\n\n\n\n\n\nvar BaseMigration = /*#__PURE__*/function (_Migration) {\n _inherits(BaseMigration, _Migration);\n\n function BaseMigration() {\n _classCallCheck(this, BaseMigration);\n\n return _possibleConstructorReturn(this, _getPrototypeOf(BaseMigration).apply(this, arguments));\n }\n\n _createClass(BaseMigration, [{\n key: "registerStageHandlers",\n value: function registerStageHandlers() {\n var _this = this;\n\n this.registerStageHandler(_Lib_stages__WEBPACK_IMPORTED_MODULE_3__["ApplicationStage"].PreparingForLaunch_0, /*#__PURE__*/_asyncToGenerator( /*#__PURE__*/_babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0___default.a.mark(function _callee() {\n return _babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0___default.a.wrap(function _callee$(_context) {\n while (1) {\n switch (_context.prev = _context.next) {\n case 0:\n _context.next = 2;\n return _this.migrateMigrationTimestampAllPlatforms();\n\n case 2:\n _this.markDone();\n\n case 3:\n case "end":\n return _context.stop();\n }\n }\n }, _callee);\n })));\n }\n /**\n * Establish last_migration_date.\n * We need to determine if this is a new application download,\n * or if we\'re coming from an older, non-current client.\n *\n * If new application download, we expect last_migration_date\n * to be null. However, last_migration_date can also be null if you\n * haven\'t yet migration to using this system.\n *\n * So in addition to this date being null, we check if deviceInterface\n * has pre-existing storage values for old migration system.\n * If so, this means this is a legacy client making its first jump to\n * this new migration system.\n */\n\n }, {\n key: "migrateMigrationTimestampAllPlatforms",\n value: function () {\n var _migrateMigrationTimestampAllPlatforms = _asyncToGenerator( /*#__PURE__*/_babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0___default.a.mark(function _callee2() {\n var possibleLegacyKeys, hasLegacyValue, _i, _possibleLegacyKeys, legacyKey, value, newKey, lastDate, hasNewStructure, newLastMigrationDate, _newLastMigrationDate;\n\n return _babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0___default.a.wrap(function _callee2$(_context2) {\n while (1) {\n switch (_context2.prev = _context2.next) {\n case 0:\n /** If any of these keys exist in raw storage, we are coming from a previous application version */\n possibleLegacyKeys = [\'migrations\', \'ephemeral\', \'user\', \'cachedThemes\', \'syncToken\', \'encryptedStorage\'];\n hasLegacyValue = false;\n _i = 0, _possibleLegacyKeys = possibleLegacyKeys;\n\n case 3:\n if (!(_i < _possibleLegacyKeys.length)) {\n _context2.next = 14;\n break;\n }\n\n legacyKey = _possibleLegacyKeys[_i];\n _context2.next = 7;\n return this.services.deviceInterface.getRawStorageValue(legacyKey);\n\n case 7:\n value = _context2.sent;\n\n if (!value) {\n _context2.next = 11;\n break;\n }\n\n hasLegacyValue = true;\n return _context2.abrupt("break", 14);\n\n case 11:\n _i++;\n _context2.next = 3;\n break;\n\n case 14:\n newKey = Object(_Lib_storage_keys__WEBPACK_IMPORTED_MODULE_2__["namespacedKey"])(this.services.namespace, _Lib_storage_keys__WEBPACK_IMPORTED_MODULE_2__["RawStorageKey"].LastMigrationTimestamp);\n _context2.next = 17;\n return this.services.deviceInterface.getRawStorageValue(newKey);\n\n case 17:\n lastDate = _context2.sent;\n hasNewStructure = !Object(_Lib_utils__WEBPACK_IMPORTED_MODULE_4__["isNullOrUndefined"])(lastDate);\n\n if (!(!hasNewStructure && hasLegacyValue)) {\n _context2.next = 25;\n break;\n }\n\n /**\n * Old client updating for the first time. We need to run all migrations.\n * Set last migration date as epoch.\n */\n newLastMigrationDate = new Date(0).getTime();\n _context2.next = 23;\n return this.services.deviceInterface.setRawStorageValue(newKey, newLastMigrationDate);\n\n case 23:\n _context2.next = 32;\n break;\n\n case 25:\n if (!(!hasNewStructure && !hasLegacyValue)) {\n _context2.next = 31;\n break;\n }\n\n /** New application, dont run any migrations. Set last migration date as now. */\n _newLastMigrationDate = new Date().getTime();\n _context2.next = 29;\n return this.services.deviceInterface.setRawStorageValue(newKey, _newLastMigrationDate);\n\n case 29:\n _context2.next = 32;\n break;\n\n case 31:\n if (hasNewStructure) {\n /** Application which has already performed base migration. Keep date as is. */\n }\n\n case 32:\n case "end":\n return _context2.stop();\n }\n }\n }, _callee2, this);\n }));\n\n function migrateMigrationTimestampAllPlatforms() {\n return _migrateMigrationTimestampAllPlatforms.apply(this, arguments);\n }\n\n return migrateMigrationTimestampAllPlatforms;\n }()\n }], [{\n key: "timestamp",\n value: function timestamp() {\n return new Date(\'2020-01-01\').getTime();\n }\n }]);\n\n return BaseMigration;\n}(_Lib_migrations_migration__WEBPACK_IMPORTED_MODULE_1__["Migration"]);//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9saWIvbWlncmF0aW9ucy8yMDIwLTAxLTAxLWJhc2UudHMuanMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly9TTkxpYnJhcnkvLi9saWIvbWlncmF0aW9ucy8yMDIwLTAxLTAxLWJhc2UudHM/ZTJmOSJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBNaWdyYXRpb24gfSBmcm9tICdATGliL21pZ3JhdGlvbnMvbWlncmF0aW9uJztcbmltcG9ydCB7IG5hbWVzcGFjZWRLZXksIFJhd1N0b3JhZ2VLZXkgfSBmcm9tICdATGliL3N0b3JhZ2Vfa2V5cyc7XG5pbXBvcnQgeyBBcHBsaWNhdGlvblN0YWdlIH0gZnJvbSAnQExpYi9zdGFnZXMnO1xuaW1wb3J0IHsgaXNOdWxsT3JVbmRlZmluZWQgfSBmcm9tICdATGliL3V0aWxzJztcbmV4cG9ydCBjbGFzcyBCYXNlTWlncmF0aW9uIGV4dGVuZHMgTWlncmF0aW9uIHtcbiAgICBzdGF0aWMgdGltZXN0YW1wKCkge1xuICAgICAgICByZXR1cm4gKG5ldyBEYXRlKCcyMDIwLTAxLTAxJykuZ2V0VGltZSgpKTtcbiAgICB9XG4gICAgcmVnaXN0ZXJTdGFnZUhhbmRsZXJzKCkge1xuICAgICAgICB0aGlzLnJlZ2lzdGVyU3RhZ2VIYW5kbGVyKEFwcGxpY2F0aW9uU3RhZ2UuUHJlcGFyaW5nRm9yTGF1bmNoXzAsIGFzeW5jICgpID0+IHtcbiAgICAgICAgICAgIGF3YWl0IHRoaXMubWlncmF0ZU1pZ3JhdGlvblRpbWVzdGFtcEFsbFBsYXRmb3JtcygpO1xuICAgICAgICAgICAgdGhpcy5tYXJrRG9uZSgpO1xuICAgICAgICB9KTtcbiAgICB9XG4gICAgLyoqXG4gICAgICogRXN0YWJsaXNoIGxhc3RfbWlncmF0aW9uX2RhdGUuXG4gICAgICogV2UgbmVlZCB0byBkZXRlcm1pbmUgaWYgdGhpcyBpcyBhIG5ldyBhcHBsaWNhdGlvbiBkb3dubG9hZCxcbiAgICAgKiBvciBpZiB3ZSdyZSBjb21pbmcgZnJvbSBhbiBvbGRlciwgbm9uLWN1cnJlbnQgY2xpZW50LlxuICAgICAqXG4gICAgICogSWYgbmV3IGFwcGxpY2F0aW9uIGRvd25sb2FkLCB3ZSBleHBlY3QgbGFzdF9taWdyYXRpb25fZGF0ZVxuICAgICAqIHRvIGJlIG51bGwuIEhvd2V2ZXIsIGxhc3RfbWlncmF0aW9uX2RhdGUgY2FuIGFsc28gYmUgbnVsbCBpZiB5b3VcbiAgICAgKiBoYXZlbid0IHlldCBtaWdyYXRpb24gdG8gdXNpbmcgdGhpcyBzeXN0ZW0uXG4gICAgICpcbiAgICAgKiBTbyBpbiBhZGRpdGlvbiB0byB0aGlzIGRhdGUgYmVpbmcgbnVsbCwgd2UgY2hlY2sgaWYgZGV2aWNlSW50ZXJmYWNlXG4gICAgICogaGFzIHByZS1leGlzdGluZyBzdG9yYWdlIHZhbHVlcyBmb3Igb2xkIG1pZ3JhdGlvbiBzeXN0ZW0uXG4gICAgICogSWYgc28sIHRoaXMgbWVhbnMgdGhpcyBpcyBhIGxlZ2FjeSBjbGllbnQgbWFraW5nIGl0cyBmaXJzdCBqdW1wIHRvXG4gICAgICogdGhpcyBuZXcgbWlncmF0aW9uIHN5c3RlbS5cbiAgICAgKi9cbiAgICBhc3luYyBtaWdyYXRlTWlncmF0aW9uVGltZXN0YW1wQWxsUGxhdGZvcm1zKCkge1xuICAgICAgICAvKiogSWYgYW55IG9mIHRoZXNlIGtleXMgZXhpc3QgaW4gcmF3IHN0b3JhZ2UsIHdlIGFyZSBjb21pbmcgZnJvbSBhIHByZXZpb3VzIGFwcGxpY2F0aW9uIHZlcnNpb24gKi9cbiAgICAgICAgY29uc3QgcG9zc2libGVMZWdhY3lLZXlzID0gW1xuICAgICAgICAgICAgJ21pZ3JhdGlvbnMnLCAnZXBoZW1lcmFsJywgJ3VzZXInLCAnY2FjaGVkVGhlbWVzJywgJ3N5bmNUb2tlbicsICdlbmNyeXB0ZWRTdG9yYWdlJ1xuICAgICAgICBdO1xuICAgICAgICBsZXQgaGFzTGVnYWN5VmFsdWUgPSBmYWxzZTtcbiAgICAgICAgZm9yIChjb25zdCBsZWdhY3lLZXkgb2YgcG9zc2libGVMZWdhY3lLZXlzKSB7XG4gICAgICAgICAgICBjb25zdCB2YWx1ZSA9IGF3YWl0IHRoaXMuc2VydmljZXMuZGV2aWNlSW50ZXJmYWNlLmdldFJhd1N0b3JhZ2VWYWx1ZShsZWdhY3lLZXkpO1xuICAgICAgICAgICAgaWYgKHZhbHVlKSB7XG4gICAgICAgICAgICAgICAgaGFzTGVnYWN5VmFsdWUgPSB0cnVlO1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIGNvbnN0IG5ld0tleSA9IG5hbWVzcGFjZWRLZXkodGhpcy5zZXJ2aWNlcy5uYW1lc3BhY2UsIFJhd1N0b3JhZ2VLZXkuTGFzdE1pZ3JhdGlvblRpbWVzdGFtcCk7XG4gICAgICAgIGNvbnN0IGxhc3REYXRlID0gYXdhaXQgdGhpcy5zZXJ2aWNlcy5kZXZpY2VJbnRlcmZhY2UuZ2V0UmF3U3RvcmFnZVZhbHVlKG5ld0tleSk7XG4gICAgICAgIGNvbnN0IGhhc05ld1N0cnVjdHVyZSA9ICFpc051bGxPclVuZGVmaW5lZChsYXN0RGF0ZSk7XG4gICAgICAgIGlmICghaGFzTmV3U3RydWN0dXJlICYmIGhhc0xlZ2FjeVZhbHVlKSB7XG4gICAgICAgICAgICAvKipcbiAgICAgICAgICAgICAqIE9sZCBjbGllbnQgdXBkYXRpbmcgZm9yIHRoZSBmaXJzdCB0aW1lLiBXZSBuZWVkIHRvIHJ1biBhbGwgbWlncmF0aW9ucy5cbiAgICAgICAgICAgICAqIFNldCBsYXN0IG1pZ3JhdGlvbiBkYXRlIGFzIGVwb2NoLlxuICAgICAgICAgICAgICovXG4gICAgICAgICAgICBjb25zdCBuZXdMYXN0TWlncmF0aW9uRGF0ZSA9IG5ldyBEYXRlKDApLmdldFRpbWUoKTtcbiAgICAgICAgICAgIGF3YWl0IHRoaXMuc2VydmljZXMuZGV2aWNlSW50ZXJmYWNlLnNldFJhd1N0b3JhZ2VWYWx1ZShuZXdLZXksIG5ld0xhc3RNaWdyYXRpb25EYXRlKTtcbiAgICAgICAgfVxuICAgICAgICBlbHNlIGlmICghaGFzTmV3U3RydWN0dXJlICYmICFoYXNMZWdhY3lWYWx1ZSkge1xuICAgICAgICAgICAgLyoqIE5ldyBhcHBsaWNhdGlvbiwgZG9udCBydW4gYW55IG1pZ3JhdGlvbnMuIFNldCBsYXN0IG1pZ3JhdGlvbiBkYXRlIGFzIG5vdy4gKi9cbiAgICAgICAgICAgIGNvbnN0IG5ld0xhc3RNaWdyYXRpb25EYXRlID0gbmV3IERhdGUoKS5nZXRUaW1lKCk7XG4gICAgICAgICAgICBhd2FpdCB0aGlzLnNlcnZpY2VzLmRldmljZUludGVyZmFjZS5zZXRSYXdTdG9yYWdlVmFsdWUobmV3S2V5LCBuZXdMYXN0TWlncmF0aW9uRGF0ZSk7XG4gICAgICAgIH1cbiAgICAgICAgZWxzZSBpZiAoaGFzTmV3U3RydWN0dXJlKSB7XG4gICAgICAgICAgICAvKiogQXBwbGljYXRpb24gd2hpY2ggaGFzIGFscmVhZHkgcGVyZm9ybWVkIGJhc2UgbWlncmF0aW9uLiBLZWVwIGRhdGUgYXMgaXMuICovXG4gICAgICAgIH1cbiAgICB9XG59XG4iXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFEQTtBQUFBO0FBQ0E7QUFEQTtBQUFBO0FBQ0E7QUFEQTtBQUFBO0FBQUE7QUFJQTtBQUNBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFDQTtBQURBO0FBRUE7QUFDQTtBQUhBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBSUE7QUFDQTs7Ozs7Ozs7Ozs7Ozs7O0FBVkE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUNBO0FBREE7QUFBQTtBQUFBO0FBQUE7QUF5QkE7QUFDQTtBQUdBO0FBN0JBO0FBQ0E7QUFEQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQ0E7QUE2QkE7QUE5QkE7QUFBQTtBQUNBO0FBREE7QUErQkE7QUFDQTtBQWhDQTtBQUFBO0FBQUE7QUFBQTtBQUNBO0FBZ0NBO0FBakNBO0FBQ0E7QUFEQTtBQUFBO0FBQUE7QUFBQTtBQUNBO0FBREE7QUFxQ0E7QUFyQ0E7QUFBQTtBQUNBO0FBREE7QUFzQ0E7QUFDQTtBQUNBO0FBeENBO0FBQUE7QUFBQTtBQUFBO0FBQ0E7QUF3Q0E7Ozs7QUFJQTtBQTdDQTtBQUFBO0FBQ0E7QUFEQTtBQUFBO0FBQUE7QUFDQTtBQURBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFDQTtBQWdEQTtBQUNBO0FBbERBO0FBQUE7QUFDQTtBQURBO0FBQUE7QUFBQTtBQUNBO0FBREE7QUFxREE7QUFDQTtBQUNBO0FBQ0E7QUF4REE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFDQTtBQURBO0FBQUE7QUFBQTtBQUNBO0FBREE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUVBO0FBQ0E7QUFIQTtBQUNBO0FBREE7QUFBQSIsInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./lib/migrations/2020-01-01-base.ts\n')},"./lib/migrations/2020-01-15.ts":
|
||
/*!**************************************!*\
|
||
!*** ./lib/migrations/2020-01-15.ts ***!
|
||
\**************************************/
|
||
/*! exports provided: Migration20200115 */function(module,__webpack_exports__,__webpack_require__){"use strict";eval('__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "Migration20200115", function() { return Migration20200115; });\n/* harmony import */ var _babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @babel/runtime/regenerator */ "./node_modules/@babel/runtime/regenerator/index.js");\n/* harmony import */ var _babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var _models_content_types__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./../models/content_types */ "./lib/models/content_types.ts");\n/* harmony import */ var _protocol_root_key__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./../protocol/root_key */ "./lib/protocol/root_key.ts");\n/* harmony import */ var _protocol_intents__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./../protocol/intents */ "./lib/protocol/intents.ts");\n/* harmony import */ var _protocol_versions__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ./../protocol/versions */ "./lib/protocol/versions.ts");\n/* harmony import */ var _Lib_stages__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! @Lib/stages */ "./lib/stages.ts");\n/* harmony import */ var _Lib_storage_keys__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! @Lib/storage_keys */ "./lib/storage_keys.ts");\n/* harmony import */ var _challenges__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! ./../challenges */ "./lib/challenges.ts");\n/* harmony import */ var _Models_functions__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! @Models/functions */ "./lib/models/functions.ts");\n/* harmony import */ var _services_storage_service__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(/*! ./../services/storage_service */ "./lib/services/storage_service.ts");\n/* harmony import */ var _Lib_migrations_migration__WEBPACK_IMPORTED_MODULE_10__ = __webpack_require__(/*! @Lib/migrations/migration */ "./lib/migrations/migration.ts");\n/* harmony import */ var _Payloads_generator__WEBPACK_IMPORTED_MODULE_11__ = __webpack_require__(/*! @Payloads/generator */ "./lib/protocol/payloads/generator.ts");\n/* harmony import */ var _Payloads_sources__WEBPACK_IMPORTED_MODULE_12__ = __webpack_require__(/*! @Payloads/sources */ "./lib/protocol/payloads/sources.ts");\n/* harmony import */ var _Lib_utils__WEBPACK_IMPORTED_MODULE_13__ = __webpack_require__(/*! @Lib/utils */ "./lib/utils.ts");\n/* harmony import */ var _Lib_uuid__WEBPACK_IMPORTED_MODULE_14__ = __webpack_require__(/*! @Lib/uuid */ "./lib/uuid.ts");\n/* harmony import */ var _Services_api_session__WEBPACK_IMPORTED_MODULE_15__ = __webpack_require__(/*! @Services/api/session */ "./lib/services/api/session.ts");\n/* harmony import */ var _models__WEBPACK_IMPORTED_MODULE_16__ = __webpack_require__(/*! ../models */ "./lib/models/index.ts");\n/* harmony import */ var _Lib_platforms__WEBPACK_IMPORTED_MODULE_17__ = __webpack_require__(/*! @Lib/platforms */ "./lib/platforms.ts");\n\n\nfunction _typeof(obj) { "@babel/helpers - typeof"; if (typeof Symbol === "function" && typeof Symbol.iterator === "symbol") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }; } return _typeof(obj); }\n\nfunction _toConsumableArray(arr) { return _arrayWithoutHoles(arr) || _iterableToArray(arr) || _nonIterableSpread(); }\n\nfunction _nonIterableSpread() { throw new TypeError("Invalid attempt to spread non-iterable instance"); }\n\nfunction _iterableToArray(iter) { if (Symbol.iterator in Object(iter) || Object.prototype.toString.call(iter) === "[object Arguments]") return Array.from(iter); }\n\nfunction _arrayWithoutHoles(arr) { if (Array.isArray(arr)) { for (var i = 0, arr2 = new Array(arr.length); i < arr.length; i++) { arr2[i] = arr[i]; } return arr2; } }\n\nfunction _slicedToArray(arr, i) { return _arrayWithHoles(arr) || _iterableToArrayLimit(arr, i) || _nonIterableRest(); }\n\nfunction _nonIterableRest() { throw new TypeError("Invalid attempt to destructure non-iterable instance"); }\n\nfunction _iterableToArrayLimit(arr, i) { if (!(Symbol.iterator in Object(arr) || Object.prototype.toString.call(arr) === "[object Arguments]")) { return; } var _arr = []; var _n = true; var _d = false; var _e = undefined; try { for (var _i = arr[Symbol.iterator](), _s; !(_n = (_s = _i.next()).done); _n = true) { _arr.push(_s.value); if (i && _arr.length === i) break; } } catch (err) { _d = true; _e = err; } finally { try { if (!_n && _i["return"] != null) _i["return"](); } finally { if (_d) throw _e; } } return _arr; }\n\nfunction _arrayWithHoles(arr) { if (Array.isArray(arr)) return arr; }\n\nfunction _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\n\nfunction asyncGeneratorStep(gen, resolve, reject, _next, _throw, key, arg) { try { var info = gen[key](arg); var value = info.value; } catch (error) { reject(error); return; } if (info.done) { resolve(value); } else { Promise.resolve(value).then(_next, _throw); } }\n\nfunction _asyncToGenerator(fn) { return function () { var self = this, args = arguments; return new Promise(function (resolve, reject) { var gen = fn.apply(self, args); function _next(value) { asyncGeneratorStep(gen, resolve, reject, _next, _throw, "next", value); } function _throw(err) { asyncGeneratorStep(gen, resolve, reject, _next, _throw, "throw", err); } _next(undefined); }); }; }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } }\n\nfunction _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); } }\n\nfunction _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; }\n\nfunction _possibleConstructorReturn(self, call) { if (call && (_typeof(call) === "object" || typeof call === "function")) { return call; } return _assertThisInitialized(self); }\n\nfunction _assertThisInitialized(self) { if (self === void 0) { throw new ReferenceError("this hasn\'t been initialised - super() hasn\'t been called"); } return self; }\n\nfunction _getPrototypeOf(o) { _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function _getPrototypeOf(o) { return o.__proto__ || Object.getPrototypeOf(o); }; return _getPrototypeOf(o); }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== "function" && superClass !== null) { throw new TypeError("Super expression must either be null or a function"); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, writable: true, configurable: true } }); if (superClass) _setPrototypeOf(subClass, superClass); }\n\nfunction _setPrototypeOf(o, p) { _setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) { o.__proto__ = p; return o; }; return _setPrototypeOf(o, p); }\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\nvar LegacyKeys = {\n WebPasscodeParamsKey: \'offlineParams\',\n MobilePasscodeParamsKey: \'pc_params\',\n AllAccountKeyParamsKey: \'auth_params\',\n WebEncryptedStorageKey: \'encryptedStorage\',\n MobileWrappedRootKeyKey: \'encrypted_account_keys\',\n AllMigrations: \'migrations\'\n};\nvar Migration20200115 = /*#__PURE__*/function (_Migration) {\n _inherits(Migration20200115, _Migration);\n\n function Migration20200115() {\n _classCallCheck(this, Migration20200115);\n\n return _possibleConstructorReturn(this, _getPrototypeOf(Migration20200115).apply(this, arguments));\n }\n\n _createClass(Migration20200115, [{\n key: "registerStageHandlers",\n value: function registerStageHandlers() {\n var _this = this;\n\n this.registerStageHandler(_Lib_stages__WEBPACK_IMPORTED_MODULE_5__["ApplicationStage"].PreparingForLaunch_0, /*#__PURE__*/_asyncToGenerator( /*#__PURE__*/_babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0___default.a.mark(function _callee() {\n return _babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0___default.a.wrap(function _callee$(_context) {\n while (1) {\n switch (_context.prev = _context.next) {\n case 0:\n if (!Object(_Lib_platforms__WEBPACK_IMPORTED_MODULE_17__["isEnvironmentWebOrDesktop"])(_this.services.environment)) {\n _context.next = 4;\n break;\n }\n\n return _context.abrupt("return", _this.migrateStorageStructureForWebDesktop());\n\n case 4:\n if (!Object(_Lib_platforms__WEBPACK_IMPORTED_MODULE_17__["isEnvironmentMobile"])(_this.services.environment)) {\n _context.next = 6;\n break;\n }\n\n return _context.abrupt("return", _this.migrateStorageStructureForMobile());\n\n case 6:\n case "end":\n return _context.stop();\n }\n }\n }, _callee);\n })));\n this.registerStageHandler(_Lib_stages__WEBPACK_IMPORTED_MODULE_5__["ApplicationStage"].StorageDecrypted_09, /*#__PURE__*/_asyncToGenerator( /*#__PURE__*/_babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0___default.a.mark(function _callee2() {\n return _babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0___default.a.wrap(function _callee2$(_context2) {\n while (1) {\n switch (_context2.prev = _context2.next) {\n case 0:\n _context2.next = 2;\n return _this.migrateArbitraryRawStorageToManagedStorageAllPlatforms();\n\n case 2:\n _context2.next = 4;\n return _this.migrateSessionStorage();\n\n case 4:\n _context2.next = 6;\n return _this.deleteLegacyStorageValues();\n\n case 6:\n case "end":\n return _context2.stop();\n }\n }\n }, _callee2);\n })));\n this.registerStageHandler(_Lib_stages__WEBPACK_IMPORTED_MODULE_5__["ApplicationStage"].LoadingDatabase_11, /*#__PURE__*/_asyncToGenerator( /*#__PURE__*/_babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0___default.a.mark(function _callee3() {\n return _babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0___default.a.wrap(function _callee3$(_context3) {\n while (1) {\n switch (_context3.prev = _context3.next) {\n case 0:\n _context3.next = 2;\n return _this.createDefaultItemsKeyForAllPlatforms();\n\n case 2:\n _this.markDone();\n\n case 3:\n case "end":\n return _context3.stop();\n }\n }\n }, _callee3);\n })));\n }\n /**\n * Web\n * Migrates legacy storage structure into new managed format.\n * If encrypted storage exists, we need to first decrypt it with the passcode.\n * Then extract the account key from it. Then, encrypt storage with the\n * account key. Then encrypt the account key with the passcode and store it\n * within the new storage format.\n *\n * Generate note: We do not use the keychain if passcode is available.\n */\n\n }, {\n key: "migrateStorageStructureForWebDesktop",\n value: function () {\n var _migrateStorageStructureForWebDesktop = _asyncToGenerator( /*#__PURE__*/_babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0___default.a.mark(function _callee4() {\n var _newStorageRawStructu;\n\n var deviceInterface, newStorageRawStructure, rawAccountKeyParams, encryptedStorage, encryptedStoragePayload, passcodeResult, passcodeKey, decryptedStoragePayload, passcodeParams, rawStorageValueStore, storageValueStore, keyToEncryptStorageWith, hasAccountKeys, _ref4, accountKey, wrappedKey, ak, version, _accountKey;\n\n return _babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0___default.a.wrap(function _callee4$(_context4) {\n while (1) {\n switch (_context4.prev = _context4.next) {\n case 0:\n deviceInterface = this.services.deviceInterface;\n newStorageRawStructure = (_newStorageRawStructu = {}, _defineProperty(_newStorageRawStructu, _services_storage_service__WEBPACK_IMPORTED_MODULE_9__["ValueModesKeys"].Wrapped, {}), _defineProperty(_newStorageRawStructu, _services_storage_service__WEBPACK_IMPORTED_MODULE_9__["ValueModesKeys"].Unwrapped, {}), _defineProperty(_newStorageRawStructu, _services_storage_service__WEBPACK_IMPORTED_MODULE_9__["ValueModesKeys"].Nonwrapped, {}), _newStorageRawStructu);\n _context4.next = 4;\n return deviceInterface.getJsonParsedStorageValue(LegacyKeys.AllAccountKeyParamsKey);\n\n case 4:\n rawAccountKeyParams = _context4.sent;\n\n /** Could be null if no account, or if account and storage is encrypted */\n if (rawAccountKeyParams) {\n newStorageRawStructure.nonwrapped[_Lib_storage_keys__WEBPACK_IMPORTED_MODULE_6__["StorageKey"].RootKeyParams] = rawAccountKeyParams;\n }\n\n _context4.next = 8;\n return deviceInterface.getJsonParsedStorageValue(LegacyKeys.WebEncryptedStorageKey);\n\n case 8:\n encryptedStorage = _context4.sent;\n\n if (!encryptedStorage) {\n _context4.next = 36;\n break;\n }\n\n encryptedStoragePayload = Object(_Payloads_generator__WEBPACK_IMPORTED_MODULE_11__["CreateMaxPayloadFromAnyObject"])(encryptedStorage);\n _context4.next = 13;\n return this.webDesktopHelperGetPasscodeKeyAndDecryptEncryptedStorage(encryptedStoragePayload);\n\n case 13:\n passcodeResult = _context4.sent;\n passcodeKey = passcodeResult.key;\n decryptedStoragePayload = passcodeResult.decryptedStoragePayload;\n passcodeParams = passcodeResult.keyParams;\n newStorageRawStructure.nonwrapped[_Lib_storage_keys__WEBPACK_IMPORTED_MODULE_6__["StorageKey"].RootKeyWrapperKeyParams] = passcodeParams.getPortableValue();\n rawStorageValueStore = Object(_Lib_utils__WEBPACK_IMPORTED_MODULE_13__["Copy"])(decryptedStoragePayload.contentObject.storage);\n storageValueStore = Object(_Lib_utils__WEBPACK_IMPORTED_MODULE_13__["jsonParseEmbeddedKeys"])(rawStorageValueStore);\n /** Store previously encrypted auth_params into new nonwrapped value key */\n\n newStorageRawStructure.nonwrapped[_Lib_storage_keys__WEBPACK_IMPORTED_MODULE_6__["StorageKey"].RootKeyParams] = storageValueStore[LegacyKeys.AllAccountKeyParamsKey];\n keyToEncryptStorageWith = passcodeKey;\n /** Extract account key (mk, pw, ak) if it exists */\n\n hasAccountKeys = !Object(_Lib_utils__WEBPACK_IMPORTED_MODULE_13__["isNullOrUndefined"])(storageValueStore.mk);\n\n if (!hasAccountKeys) {\n _context4.next = 31;\n break;\n }\n\n _context4.next = 26;\n return this.webDesktopHelperExtractAndWrapAccountKeysFromValueStore(passcodeKey, storageValueStore);\n\n case 26:\n _ref4 = _context4.sent;\n accountKey = _ref4.accountKey;\n wrappedKey = _ref4.wrappedKey;\n keyToEncryptStorageWith = accountKey;\n newStorageRawStructure.nonwrapped[_Lib_storage_keys__WEBPACK_IMPORTED_MODULE_6__["StorageKey"].WrappedRootKey] = wrappedKey;\n\n case 31:\n _context4.next = 33;\n return this.webDesktopHelperEncryptStorage(keyToEncryptStorageWith, decryptedStoragePayload, storageValueStore);\n\n case 33:\n newStorageRawStructure.wrapped = _context4.sent;\n _context4.next = 55;\n break;\n\n case 36:\n _context4.next = 38;\n return this.services.deviceInterface.getRawStorageValue(\'ak\');\n\n case 38:\n ak = _context4.sent;\n version = !Object(_Lib_utils__WEBPACK_IMPORTED_MODULE_13__["isNullOrUndefined"])(ak) ? _protocol_versions__WEBPACK_IMPORTED_MODULE_4__["ProtocolVersion"].V003 : _protocol_versions__WEBPACK_IMPORTED_MODULE_4__["ProtocolVersion"].V002;\n _context4.t0 = _protocol_root_key__WEBPACK_IMPORTED_MODULE_2__["SNRootKey"];\n _context4.next = 43;\n return this.services.deviceInterface.getRawStorageValue(\'mk\');\n\n case 43:\n _context4.t1 = _context4.sent;\n _context4.next = 46;\n return this.services.deviceInterface.getRawStorageValue(\'pw\');\n\n case 46:\n _context4.t2 = _context4.sent;\n _context4.t3 = ak;\n _context4.t4 = version;\n _context4.t5 = {\n masterKey: _context4.t1,\n serverPassword: _context4.t2,\n dataAuthenticationKey: _context4.t3,\n version: _context4.t4\n };\n _context4.next = 52;\n return _context4.t0.Create.call(_context4.t0, _context4.t5);\n\n case 52:\n _accountKey = _context4.sent;\n _context4.next = 55;\n return this.services.deviceInterface.setKeychainValue(_accountKey.getPersistableValue());\n\n case 55:\n _context4.next = 57;\n return this.allPlatformHelperSetStorageStructure(newStorageRawStructure);\n\n case 57:\n case "end":\n return _context4.stop();\n }\n }\n }, _callee4, this);\n }));\n\n function migrateStorageStructureForWebDesktop() {\n return _migrateStorageStructureForWebDesktop.apply(this, arguments);\n }\n\n return migrateStorageStructureForWebDesktop;\n }()\n /**\n * Helper\n * All platforms\n */\n\n }, {\n key: "allPlatformHelperSetStorageStructure",\n value: function () {\n var _allPlatformHelperSetStorageStructure = _asyncToGenerator( /*#__PURE__*/_babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0___default.a.mark(function _callee5(rawStructure) {\n var newStructure;\n return _babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0___default.a.wrap(function _callee5$(_context5) {\n while (1) {\n switch (_context5.prev = _context5.next) {\n case 0:\n newStructure = _services_storage_service__WEBPACK_IMPORTED_MODULE_9__["SNStorageService"].defaultValuesObject(rawStructure.wrapped, rawStructure.unwrapped, rawStructure.nonwrapped);\n newStructure[_services_storage_service__WEBPACK_IMPORTED_MODULE_9__["ValueModesKeys"].Unwrapped] = undefined;\n _context5.next = 4;\n return this.services.deviceInterface.setRawStorageValue(Object(_Lib_storage_keys__WEBPACK_IMPORTED_MODULE_6__["namespacedKey"])(this.services.namespace, _Lib_storage_keys__WEBPACK_IMPORTED_MODULE_6__["RawStorageKey"].StorageObject), JSON.stringify(newStructure));\n\n case 4:\n case "end":\n return _context5.stop();\n }\n }\n }, _callee5, this);\n }));\n\n function allPlatformHelperSetStorageStructure(_x) {\n return _allPlatformHelperSetStorageStructure.apply(this, arguments);\n }\n\n return allPlatformHelperSetStorageStructure;\n }()\n /**\n * Helper\n * Web/desktop only\n */\n\n }, {\n key: "webDesktopHelperGetPasscodeKeyAndDecryptEncryptedStorage",\n value: function () {\n var _webDesktopHelperGetPasscodeKeyAndDecryptEncryptedStorage = _asyncToGenerator( /*#__PURE__*/_babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0___default.a.mark(function _callee6(encryptedPayload) {\n var rawPasscodeParams, passcodeParams, decryptedStoragePayload, errorDecrypting, passcodeKey, challenge, _ref5, _ref6, value, passcode;\n\n return _babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0___default.a.wrap(function _callee6$(_context6) {\n while (1) {\n switch (_context6.prev = _context6.next) {\n case 0:\n _context6.next = 2;\n return this.services.deviceInterface.getJsonParsedStorageValue(LegacyKeys.WebPasscodeParamsKey);\n\n case 2:\n rawPasscodeParams = _context6.sent;\n passcodeParams = this.services.protocolService.createKeyParams(rawPasscodeParams);\n /** Decrypt it with the passcode */\n\n errorDecrypting = true;\n challenge = new _challenges__WEBPACK_IMPORTED_MODULE_7__["Challenge"]([_challenges__WEBPACK_IMPORTED_MODULE_7__["ChallengeType"].LocalPasscode], _challenges__WEBPACK_IMPORTED_MODULE_7__["ChallengeReason"].Migration);\n\n case 6:\n if (!errorDecrypting) {\n _context6.next = 23;\n break;\n }\n\n _context6.next = 9;\n return this.services.challengeService.promptForChallengeResponseWithCustomValidation(challenge);\n\n case 9:\n _ref5 = _context6.sent;\n _ref6 = _slicedToArray(_ref5, 1);\n value = _ref6[0];\n passcode = value.value;\n _context6.next = 15;\n return this.services.protocolService.computeRootKey(passcode, passcodeParams);\n\n case 15:\n passcodeKey = _context6.sent;\n _context6.next = 18;\n return this.services.protocolService.payloadByDecryptingPayload(encryptedPayload, passcodeKey);\n\n case 18:\n decryptedStoragePayload = _context6.sent;\n errorDecrypting = decryptedStoragePayload.errorDecrypting;\n this.services.challengeService.setValidationStatusForChallenge(challenge, value, !decryptedStoragePayload.errorDecrypting);\n _context6.next = 6;\n break;\n\n case 23:\n return _context6.abrupt("return", {\n decryptedStoragePayload: decryptedStoragePayload,\n key: passcodeKey,\n keyParams: passcodeParams\n });\n\n case 24:\n case "end":\n return _context6.stop();\n }\n }\n }, _callee6, this);\n }));\n\n function webDesktopHelperGetPasscodeKeyAndDecryptEncryptedStorage(_x2) {\n return _webDesktopHelperGetPasscodeKeyAndDecryptEncryptedStorage.apply(this, arguments);\n }\n\n return webDesktopHelperGetPasscodeKeyAndDecryptEncryptedStorage;\n }()\n /**\n * Helper\n * Web/desktop only\n */\n\n }, {\n key: "webDesktopHelperExtractAndWrapAccountKeysFromValueStore",\n value: function () {\n var _webDesktopHelperExtractAndWrapAccountKeysFromValueStore = _asyncToGenerator( /*#__PURE__*/_babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0___default.a.mark(function _callee7(passcodeKey, storageValueStore) {\n var _encryptedAccountKey;\n\n var version, accountKey, accountKeyPayload, encryptedAccountKey;\n return _babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0___default.a.wrap(function _callee7$(_context7) {\n while (1) {\n switch (_context7.prev = _context7.next) {\n case 0:\n version = storageValueStore.ak ? _protocol_versions__WEBPACK_IMPORTED_MODULE_4__["ProtocolVersion"].V003 : _protocol_versions__WEBPACK_IMPORTED_MODULE_4__["ProtocolVersion"].V002;\n _context7.next = 3;\n return _protocol_root_key__WEBPACK_IMPORTED_MODULE_2__["SNRootKey"].Create({\n masterKey: storageValueStore.mk,\n serverPassword: storageValueStore.pw,\n dataAuthenticationKey: storageValueStore.ak,\n version: version\n });\n\n case 3:\n accountKey = _context7.sent;\n delete storageValueStore.mk;\n delete storageValueStore.pw;\n delete storageValueStore.ak;\n accountKeyPayload = Object(_Payloads_generator__WEBPACK_IMPORTED_MODULE_11__["CreateMaxPayloadFromAnyObject"])(accountKey);\n\n if (!passcodeKey) {\n _context7.next = 12;\n break;\n }\n\n _context7.next = 11;\n return this.services.protocolService.payloadByEncryptingPayload(accountKeyPayload, _protocol_intents__WEBPACK_IMPORTED_MODULE_3__["EncryptionIntent"].LocalStorageEncrypted, passcodeKey);\n\n case 11:\n encryptedAccountKey = _context7.sent;\n\n case 12:\n return _context7.abrupt("return", {\n accountKey: accountKey,\n wrappedKey: (_encryptedAccountKey = encryptedAccountKey) === null || _encryptedAccountKey === void 0 ? void 0 : _encryptedAccountKey.ejected()\n });\n\n case 13:\n case "end":\n return _context7.stop();\n }\n }\n }, _callee7, this);\n }));\n\n function webDesktopHelperExtractAndWrapAccountKeysFromValueStore(_x3, _x4) {\n return _webDesktopHelperExtractAndWrapAccountKeysFromValueStore.apply(this, arguments);\n }\n\n return webDesktopHelperExtractAndWrapAccountKeysFromValueStore;\n }()\n /**\n * Helper\n * Web/desktop only\n * Encrypt storage with account key\n */\n\n }, {\n key: "webDesktopHelperEncryptStorage",\n value: function () {\n var _webDesktopHelperEncryptStorage = _asyncToGenerator( /*#__PURE__*/_babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0___default.a.mark(function _callee8(key, decryptedStoragePayload, storageValueStore) {\n var wrapped;\n return _babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0___default.a.wrap(function _callee8$(_context8) {\n while (1) {\n switch (_context8.prev = _context8.next) {\n case 0:\n _context8.next = 2;\n return this.services.protocolService.payloadByEncryptingPayload(Object(_Payloads_generator__WEBPACK_IMPORTED_MODULE_11__["CopyPayload"])(decryptedStoragePayload, {\n content_type: _models_content_types__WEBPACK_IMPORTED_MODULE_1__["ContentType"].EncryptedStorage,\n content: storageValueStore\n }), _protocol_intents__WEBPACK_IMPORTED_MODULE_3__["EncryptionIntent"].LocalStoragePreferEncrypted, key);\n\n case 2:\n wrapped = _context8.sent;\n return _context8.abrupt("return", wrapped.ejected());\n\n case 4:\n case "end":\n return _context8.stop();\n }\n }\n }, _callee8, this);\n }));\n\n function webDesktopHelperEncryptStorage(_x5, _x6, _x7) {\n return _webDesktopHelperEncryptStorage.apply(this, arguments);\n }\n\n return webDesktopHelperEncryptStorage;\n }()\n /**\n * Mobile\n * On mobile legacy structure is mostly similar to new structure,\n * in that the account key is encrypted with the passcode. But mobile did\n * not have encrypted storage, so we simply need to transfer all existing\n * storage values into new managed structure.\n *\n * If no account but passcode only, the only thing we stored on mobile\n * previously was keys.offline.pw and keys.offline.timing in the keychain\n * that we compared against for valid decryption.\n * In the new version, we know a passcode is correct if it can decrypt storage.\n * As part of the migration, we’ll need to request the raw passcode from user,\n * compare it against the keychain offline.pw value, and if correct,\n * migrate storage to new structure, and encrypt with passcode key.\n *\n * If account only, take the value in the keychain, and rename the values\n * (i.e mk > masterKey).\n * @access private\n */\n\n }, {\n key: "migrateStorageStructureForMobile",\n value: function () {\n var _migrateStorageStructureForMobile = _asyncToGenerator( /*#__PURE__*/_babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0___default.a.mark(function _callee10() {\n var _ValueModesKeys$Nonwr,\n _rawStructure,\n _this2 = this;\n\n var wrappedAccountKey, rawAccountKeyParams, rawPasscodeParams, rawStructure, keychainValue, passcodeParams, getPasscodeKey, timing, passcodeKey, unwrappedAccountKey, accountKeyContent, defaultVersion, newAccountKey, newWrappedAccountKey, _passcodeKey, payload, wrapped, hasAccount, _defaultVersion, accountKey;\n\n return _babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0___default.a.wrap(function _callee10$(_context10) {\n while (1) {\n switch (_context10.prev = _context10.next) {\n case 0:\n _context10.next = 2;\n return this.services.deviceInterface.getJsonParsedStorageValue(LegacyKeys.MobileWrappedRootKeyKey);\n\n case 2:\n wrappedAccountKey = _context10.sent;\n _context10.next = 5;\n return this.services.deviceInterface.getJsonParsedStorageValue(LegacyKeys.AllAccountKeyParamsKey);\n\n case 5:\n rawAccountKeyParams = _context10.sent;\n _context10.next = 8;\n return this.services.deviceInterface.getJsonParsedStorageValue(LegacyKeys.MobilePasscodeParamsKey);\n\n case 8:\n rawPasscodeParams = _context10.sent;\n rawStructure = (_rawStructure = {}, _defineProperty(_rawStructure, _services_storage_service__WEBPACK_IMPORTED_MODULE_9__["ValueModesKeys"].Nonwrapped, (_ValueModesKeys$Nonwr = {}, _defineProperty(_ValueModesKeys$Nonwr, _Lib_storage_keys__WEBPACK_IMPORTED_MODULE_6__["StorageKey"].WrappedRootKey, wrappedAccountKey), _defineProperty(_ValueModesKeys$Nonwr, _Lib_storage_keys__WEBPACK_IMPORTED_MODULE_6__["StorageKey"].RootKeyWrapperKeyParams, rawPasscodeParams), _defineProperty(_ValueModesKeys$Nonwr, _Lib_storage_keys__WEBPACK_IMPORTED_MODULE_6__["StorageKey"].RootKeyParams, rawAccountKeyParams), _ValueModesKeys$Nonwr)), _defineProperty(_rawStructure, _services_storage_service__WEBPACK_IMPORTED_MODULE_9__["ValueModesKeys"].Unwrapped, {}), _defineProperty(_rawStructure, _services_storage_service__WEBPACK_IMPORTED_MODULE_9__["ValueModesKeys"].Wrapped, {}), _rawStructure);\n _context10.next = 12;\n return this.services.deviceInterface.getKeychainValue();\n\n case 12:\n keychainValue = _context10.sent;\n\n if (!rawPasscodeParams) {\n _context10.next = 56;\n break;\n }\n\n passcodeParams = this.services.protocolService.createKeyParams(rawPasscodeParams);\n\n getPasscodeKey = /*#__PURE__*/function () {\n var _ref7 = _asyncToGenerator( /*#__PURE__*/_babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0___default.a.mark(function _callee9() {\n var pwHash, passcodeKey, challenge, _ref8, _ref9, value, passcode;\n\n return _babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0___default.a.wrap(function _callee9$(_context9) {\n while (1) {\n switch (_context9.prev = _context9.next) {\n case 0:\n /** Validate current passcode by comparing against keychain offline.pw value */\n pwHash = keychainValue.offline.pw;\n challenge = new _challenges__WEBPACK_IMPORTED_MODULE_7__["Challenge"]([_challenges__WEBPACK_IMPORTED_MODULE_7__["ChallengeType"].LocalPasscode], _challenges__WEBPACK_IMPORTED_MODULE_7__["ChallengeReason"].Migration);\n\n case 2:\n if (!(!passcodeKey || passcodeKey.serverPassword !== pwHash)) {\n _context9.next = 15;\n break;\n }\n\n _context9.next = 5;\n return _this2.services.challengeService.promptForChallengeResponseWithCustomValidation(challenge);\n\n case 5:\n _ref8 = _context9.sent;\n _ref9 = _slicedToArray(_ref8, 1);\n value = _ref9[0];\n passcode = value.value;\n _context9.next = 11;\n return _this2.services.protocolService.computeRootKey(passcode, passcodeParams);\n\n case 11:\n passcodeKey = _context9.sent;\n\n _this2.services.challengeService.setValidationStatusForChallenge(challenge, value, passcodeKey.serverPassword === pwHash);\n\n _context9.next = 2;\n break;\n\n case 15:\n return _context9.abrupt("return", passcodeKey);\n\n case 16:\n case "end":\n return _context9.stop();\n }\n }\n }, _callee9);\n }));\n\n return function getPasscodeKey() {\n return _ref7.apply(this, arguments);\n };\n }();\n\n timing = keychainValue.offline.timing;\n rawStructure.unwrapped[_Lib_storage_keys__WEBPACK_IMPORTED_MODULE_6__["StorageKey"].MobilePasscodeTiming] = timing;\n\n if (!wrappedAccountKey) {\n _context10.next = 36;\n break;\n }\n\n _context10.next = 21;\n return getPasscodeKey();\n\n case 21:\n passcodeKey = _context10.sent;\n _context10.next = 24;\n return this.services.protocolService.payloadByDecryptingPayload(Object(_Payloads_generator__WEBPACK_IMPORTED_MODULE_11__["CreateMaxPayloadFromAnyObject"])(wrappedAccountKey), passcodeKey);\n\n case 24:\n unwrappedAccountKey = _context10.sent;\n accountKeyContent = unwrappedAccountKey.contentObject.accountKeys;\n defaultVersion = !Object(_Lib_utils__WEBPACK_IMPORTED_MODULE_13__["isNullOrUndefined"])(accountKeyContent.ak) ? _protocol_versions__WEBPACK_IMPORTED_MODULE_4__["ProtocolVersion"].V003 : _protocol_versions__WEBPACK_IMPORTED_MODULE_4__["ProtocolVersion"].V002;\n newAccountKey = Object(_Payloads_generator__WEBPACK_IMPORTED_MODULE_11__["CopyPayload"])(unwrappedAccountKey, {\n content: {\n masterKey: accountKeyContent.mk,\n serverPassword: accountKeyContent.pw,\n dataAuthenticationKey: accountKeyContent.ak,\n version: accountKeyContent.version || defaultVersion,\n accountKeys: null\n }\n });\n _context10.next = 30;\n return this.services.protocolService.payloadByEncryptingPayload(newAccountKey, _protocol_intents__WEBPACK_IMPORTED_MODULE_3__["EncryptionIntent"].LocalStoragePreferEncrypted, passcodeKey);\n\n case 30:\n newWrappedAccountKey = _context10.sent;\n rawStructure.nonwrapped[_Lib_storage_keys__WEBPACK_IMPORTED_MODULE_6__["StorageKey"].WrappedRootKey] = newWrappedAccountKey.ejected();\n _context10.next = 34;\n return this.services.deviceInterface.clearKeychainValue();\n\n case 34:\n _context10.next = 54;\n break;\n\n case 36:\n if (wrappedAccountKey) {\n _context10.next = 54;\n break;\n }\n\n _context10.next = 39;\n return getPasscodeKey();\n\n case 39:\n _passcodeKey = _context10.sent;\n _context10.t0 = _Payloads_generator__WEBPACK_IMPORTED_MODULE_11__["CreateMaxPayloadFromAnyObject"];\n _context10.next = 43;\n return _Lib_uuid__WEBPACK_IMPORTED_MODULE_14__["Uuid"].GenerateUuid();\n\n case 43:\n _context10.t1 = _context10.sent;\n _context10.t2 = Object(_Models_functions__WEBPACK_IMPORTED_MODULE_8__["FillItemContent"])(rawStructure.unwrapped);\n _context10.t3 = _models_content_types__WEBPACK_IMPORTED_MODULE_1__["ContentType"].EncryptedStorage;\n _context10.t4 = {\n uuid: _context10.t1,\n content: _context10.t2,\n content_type: _context10.t3\n };\n payload = (0, _context10.t0)(_context10.t4);\n _context10.next = 50;\n return this.services.protocolService.payloadByEncryptingPayload(payload, _protocol_intents__WEBPACK_IMPORTED_MODULE_3__["EncryptionIntent"].LocalStoragePreferEncrypted, _passcodeKey);\n\n case 50:\n wrapped = _context10.sent;\n rawStructure.wrapped = wrapped.ejected();\n _context10.next = 54;\n return this.services.deviceInterface.clearKeychainValue();\n\n case 54:\n _context10.next = 64;\n break;\n\n case 56:\n /** No passcode, potentially account. Migrate keychain property keys. */\n hasAccount = keychainValue && keychainValue.mk;\n\n if (!hasAccount) {\n _context10.next = 64;\n break;\n }\n\n _defaultVersion = !Object(_Lib_utils__WEBPACK_IMPORTED_MODULE_13__["isNullOrUndefined"])(keychainValue.ak) ? _protocol_versions__WEBPACK_IMPORTED_MODULE_4__["ProtocolVersion"].V003 : _protocol_versions__WEBPACK_IMPORTED_MODULE_4__["ProtocolVersion"].V002;\n _context10.next = 61;\n return _protocol_root_key__WEBPACK_IMPORTED_MODULE_2__["SNRootKey"].Create({\n masterKey: keychainValue.mk,\n serverPassword: keychainValue.pw,\n dataAuthenticationKey: keychainValue.ak,\n version: keychainValue.version || _defaultVersion\n });\n\n case 61:\n accountKey = _context10.sent;\n _context10.next = 64;\n return this.services.deviceInterface.setKeychainValue(accountKey.getPersistableValue());\n\n case 64:\n _context10.next = 66;\n return this.allPlatformHelperSetStorageStructure(rawStructure);\n\n case 66:\n case "end":\n return _context10.stop();\n }\n }\n }, _callee10, this);\n }));\n\n function migrateStorageStructureForMobile() {\n return _migrateStorageStructureForMobile.apply(this, arguments);\n }\n\n return migrateStorageStructureForMobile;\n }()\n /**\n * All platforms\n * Migrate all previously independently stored storage keys into new\n * managed approach. Also deletes any legacy values from raw storage.\n * @access private\n */\n\n }, {\n key: "migrateArbitraryRawStorageToManagedStorageAllPlatforms",\n value: function () {\n var _migrateArbitraryRawStorageToManagedStorageAllPlatforms = _asyncToGenerator( /*#__PURE__*/_babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0___default.a.mark(function _callee11() {\n var allKeyValues, legacyKeys, tryJsonParse, namespace, _iteratorNormalCompletion, _didIteratorError, _iteratorError, _iterator, _step, keyValuePair, key, value, isNameSpacedKey, newValue;\n\n return _babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0___default.a.wrap(function _callee11$(_context11) {\n while (1) {\n switch (_context11.prev = _context11.next) {\n case 0:\n _context11.next = 2;\n return this.services.deviceInterface.getAllRawStorageKeyValues();\n\n case 2:\n allKeyValues = _context11.sent;\n legacyKeys = Object(_Lib_utils__WEBPACK_IMPORTED_MODULE_13__["objectToValueArray"])(LegacyKeys);\n\n tryJsonParse = function tryJsonParse(value) {\n try {\n return JSON.parse(value);\n } catch (e) {\n return value;\n }\n };\n\n namespace = this.services.namespace;\n _iteratorNormalCompletion = true;\n _didIteratorError = false;\n _iteratorError = undefined;\n _context11.prev = 9;\n _iterator = allKeyValues[Symbol.iterator]();\n\n case 11:\n if (_iteratorNormalCompletion = (_step = _iterator.next()).done) {\n _context11.next = 25;\n break;\n }\n\n keyValuePair = _step.value;\n key = keyValuePair.key;\n value = keyValuePair.value;\n isNameSpacedKey = namespace && namespace.length > 0 && key.startsWith(namespace);\n\n if (!(legacyKeys.includes(key) || isNameSpacedKey)) {\n _context11.next = 18;\n break;\n }\n\n return _context11.abrupt("continue", 22);\n\n case 18:\n if (Object(_Lib_utils__WEBPACK_IMPORTED_MODULE_13__["isNullOrUndefined"])(value)) {\n _context11.next = 22;\n break;\n }\n\n /**\n * Raw values should always have been json stringified.\n * New values should always be objects/parsed.\n */\n newValue = tryJsonParse(value);\n _context11.next = 22;\n return this.services.storageService.setValue(key, newValue);\n\n case 22:\n _iteratorNormalCompletion = true;\n _context11.next = 11;\n break;\n\n case 25:\n _context11.next = 31;\n break;\n\n case 27:\n _context11.prev = 27;\n _context11.t0 = _context11["catch"](9);\n _didIteratorError = true;\n _iteratorError = _context11.t0;\n\n case 31:\n _context11.prev = 31;\n _context11.prev = 32;\n\n if (!_iteratorNormalCompletion && _iterator.return != null) {\n _iterator.return();\n }\n\n case 34:\n _context11.prev = 34;\n\n if (!_didIteratorError) {\n _context11.next = 37;\n break;\n }\n\n throw _iteratorError;\n\n case 37:\n return _context11.finish(34);\n\n case 38:\n return _context11.finish(31);\n\n case 39:\n case "end":\n return _context11.stop();\n }\n }\n }, _callee11, this, [[9, 27, 31, 39], [32,, 34, 38]]);\n }));\n\n function migrateArbitraryRawStorageToManagedStorageAllPlatforms() {\n return _migrateArbitraryRawStorageToManagedStorageAllPlatforms.apply(this, arguments);\n }\n\n return migrateArbitraryRawStorageToManagedStorageAllPlatforms;\n }()\n /**\n * All platforms\n * Deletes all StorageKey and LegacyKeys from root raw storage.\n * @access private\n */\n\n }, {\n key: "deleteLegacyStorageValues",\n value: function () {\n var _deleteLegacyStorageValues = _asyncToGenerator( /*#__PURE__*/_babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0___default.a.mark(function _callee12() {\n var miscKeys, managedKeys, _iteratorNormalCompletion2, _didIteratorError2, _iteratorError2, _iterator2, _step2, key;\n\n return _babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0___default.a.wrap(function _callee12$(_context12) {\n while (1) {\n switch (_context12.prev = _context12.next) {\n case 0:\n miscKeys = [\'mk\', \'ak\', \'jwt\', \'ephemeral\', \'cachedThemes\'];\n managedKeys = [].concat(_toConsumableArray(Object(_Lib_utils__WEBPACK_IMPORTED_MODULE_13__["objectToValueArray"])(_Lib_storage_keys__WEBPACK_IMPORTED_MODULE_6__["StorageKey"])), _toConsumableArray(Object(_Lib_utils__WEBPACK_IMPORTED_MODULE_13__["objectToValueArray"])(LegacyKeys)), miscKeys);\n _iteratorNormalCompletion2 = true;\n _didIteratorError2 = false;\n _iteratorError2 = undefined;\n _context12.prev = 5;\n _iterator2 = managedKeys[Symbol.iterator]();\n\n case 7:\n if (_iteratorNormalCompletion2 = (_step2 = _iterator2.next()).done) {\n _context12.next = 14;\n break;\n }\n\n key = _step2.value;\n _context12.next = 11;\n return this.services.deviceInterface.removeRawStorageValue(key);\n\n case 11:\n _iteratorNormalCompletion2 = true;\n _context12.next = 7;\n break;\n\n case 14:\n _context12.next = 20;\n break;\n\n case 16:\n _context12.prev = 16;\n _context12.t0 = _context12["catch"](5);\n _didIteratorError2 = true;\n _iteratorError2 = _context12.t0;\n\n case 20:\n _context12.prev = 20;\n _context12.prev = 21;\n\n if (!_iteratorNormalCompletion2 && _iterator2.return != null) {\n _iterator2.return();\n }\n\n case 23:\n _context12.prev = 23;\n\n if (!_didIteratorError2) {\n _context12.next = 26;\n break;\n }\n\n throw _iteratorError2;\n\n case 26:\n return _context12.finish(23);\n\n case 27:\n return _context12.finish(20);\n\n case 28:\n case "end":\n return _context12.stop();\n }\n }\n }, _callee12, this, [[5, 16, 20, 28], [21,, 23, 27]]);\n }));\n\n function deleteLegacyStorageValues() {\n return _deleteLegacyStorageValues.apply(this, arguments);\n }\n\n return deleteLegacyStorageValues;\n }()\n /**\n * All platforms\n * Migrate previously stored session string token into object\n * @access private\n */\n\n }, {\n key: "migrateSessionStorage",\n value: function () {\n var _migrateSessionStorage = _asyncToGenerator( /*#__PURE__*/_babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0___default.a.mark(function _callee13() {\n var LEGACY_SESSION_TOKEN_KEY, currentToken, session;\n return _babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0___default.a.wrap(function _callee13$(_context13) {\n while (1) {\n switch (_context13.prev = _context13.next) {\n case 0:\n LEGACY_SESSION_TOKEN_KEY = \'jwt\';\n _context13.next = 3;\n return this.services.storageService.getValue(LEGACY_SESSION_TOKEN_KEY);\n\n case 3:\n currentToken = _context13.sent;\n\n if (currentToken) {\n _context13.next = 6;\n break;\n }\n\n return _context13.abrupt("return");\n\n case 6:\n session = new _Services_api_session__WEBPACK_IMPORTED_MODULE_15__["Session"](currentToken);\n _context13.next = 9;\n return this.services.storageService.setValue(_Lib_storage_keys__WEBPACK_IMPORTED_MODULE_6__["StorageKey"].Session, session);\n\n case 9:\n case "end":\n return _context13.stop();\n }\n }\n }, _callee13, this);\n }));\n\n function migrateSessionStorage() {\n return _migrateSessionStorage.apply(this, arguments);\n }\n\n return migrateSessionStorage;\n }()\n /**\n * All platforms\n * Create new default SNItemsKey from root key.\n * Otherwise, when data is loaded, we won\'t be able to decrypt it\n * without existence of an item key. This will mean that if this migration\n * is run on two different platforms for the same user, they will create\n * two new items keys. Which one they use to decrypt past items and encrypt\n * future items doesn\'t really matter.\n * @access private\n */\n\n }, {\n key: "createDefaultItemsKeyForAllPlatforms",\n value: function () {\n var _createDefaultItemsKeyForAllPlatforms = _asyncToGenerator( /*#__PURE__*/_babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0___default.a.mark(function _callee14() {\n var rootKey, rootKeyParams, payload, itemsKey;\n return _babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0___default.a.wrap(function _callee14$(_context14) {\n while (1) {\n switch (_context14.prev = _context14.next) {\n case 0:\n _context14.next = 2;\n return this.services.protocolService.getRootKey();\n\n case 2:\n rootKey = _context14.sent;\n\n if (!rootKey) {\n _context14.next = 19;\n break;\n }\n\n _context14.next = 6;\n return this.services.protocolService.getRootKeyParams();\n\n case 6:\n rootKeyParams = _context14.sent;\n _context14.t0 = _Payloads_generator__WEBPACK_IMPORTED_MODULE_11__["CreateMaxPayloadFromAnyObject"];\n _context14.next = 10;\n return _Lib_uuid__WEBPACK_IMPORTED_MODULE_14__["Uuid"].GenerateUuid();\n\n case 10:\n _context14.t1 = _context14.sent;\n _context14.t2 = _models_content_types__WEBPACK_IMPORTED_MODULE_1__["ContentType"].ItemsKey;\n _context14.t3 = Object(_Models_functions__WEBPACK_IMPORTED_MODULE_8__["FillItemContent"])({\n itemsKey: rootKey.masterKey,\n dataAuthenticationKey: rootKey.dataAuthenticationKey,\n version: rootKeyParams.version\n });\n _context14.t4 = new Date();\n _context14.t5 = {\n uuid: _context14.t1,\n content_type: _context14.t2,\n content: _context14.t3,\n dirty: true,\n dirtiedDate: _context14.t4\n };\n payload = (0, _context14.t0)(_context14.t5);\n itemsKey = Object(_models__WEBPACK_IMPORTED_MODULE_16__["CreateItemFromPayload"])(payload);\n _context14.next = 19;\n return this.services.itemManager.emitItemFromPayload(itemsKey.payloadRepresentation(), _Payloads_sources__WEBPACK_IMPORTED_MODULE_12__["PayloadSource"].LocalChanged);\n\n case 19:\n case "end":\n return _context14.stop();\n }\n }\n }, _callee14, this);\n }));\n\n function createDefaultItemsKeyForAllPlatforms() {\n return _createDefaultItemsKeyForAllPlatforms.apply(this, arguments);\n }\n\n return createDefaultItemsKeyForAllPlatforms;\n }()\n }], [{\n key: "timestamp",\n value: function timestamp() {\n return new Date(\'2020-01-15\').getTime();\n }\n }]);\n\n return Migration20200115;\n}(_Lib_migrations_migration__WEBPACK_IMPORTED_MODULE_10__["Migration"]);//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9saWIvbWlncmF0aW9ucy8yMDIwLTAxLTE1LnRzLmpzIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vU05MaWJyYXJ5Ly4vbGliL21pZ3JhdGlvbnMvMjAyMC0wMS0xNS50cz9mNDM0Il0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbnRlbnRUeXBlIH0gZnJvbSAnLi8uLi9tb2RlbHMvY29udGVudF90eXBlcyc7XG5pbXBvcnQgeyBTTlJvb3RLZXkgfSBmcm9tICcuLy4uL3Byb3RvY29sL3Jvb3Rfa2V5JztcbmltcG9ydCB7IEVuY3J5cHRpb25JbnRlbnQgfSBmcm9tICcuLy4uL3Byb3RvY29sL2ludGVudHMnO1xuaW1wb3J0IHsgUHJvdG9jb2xWZXJzaW9uIH0gZnJvbSAnLi8uLi9wcm90b2NvbC92ZXJzaW9ucyc7XG5pbXBvcnQgeyBBcHBsaWNhdGlvblN0YWdlIH0gZnJvbSAnQExpYi9zdGFnZXMnO1xuaW1wb3J0IHsgU3RvcmFnZUtleSwgUmF3U3RvcmFnZUtleSwgbmFtZXNwYWNlZEtleSB9IGZyb20gJ0BMaWIvc3RvcmFnZV9rZXlzJztcbmltcG9ydCB7IENoYWxsZW5nZSwgQ2hhbGxlbmdlVHlwZSwgQ2hhbGxlbmdlUmVhc29uIH0gZnJvbSAnLi8uLi9jaGFsbGVuZ2VzJztcbmltcG9ydCB7IEZpbGxJdGVtQ29udGVudCB9IGZyb20gJ0BNb2RlbHMvZnVuY3Rpb25zJztcbmltcG9ydCB7IFNOU3RvcmFnZVNlcnZpY2UgfSBmcm9tICcuLy4uL3NlcnZpY2VzL3N0b3JhZ2Vfc2VydmljZSc7XG5pbXBvcnQgeyBNaWdyYXRpb24gfSBmcm9tICdATGliL21pZ3JhdGlvbnMvbWlncmF0aW9uJztcbmltcG9ydCB7IENvcHlQYXlsb2FkLCBDcmVhdGVNYXhQYXlsb2FkRnJvbUFueU9iamVjdCB9IGZyb20gJ0BQYXlsb2Fkcy9nZW5lcmF0b3InO1xuaW1wb3J0IHsgUGF5bG9hZFNvdXJjZSB9IGZyb20gJ0BQYXlsb2Fkcy9zb3VyY2VzJztcbmltcG9ydCB7IENvcHksIGlzTnVsbE9yVW5kZWZpbmVkLCBvYmplY3RUb1ZhbHVlQXJyYXksIGpzb25QYXJzZUVtYmVkZGVkS2V5cyB9IGZyb20gJ0BMaWIvdXRpbHMnO1xuaW1wb3J0IHsgVXVpZCB9IGZyb20gJ0BMaWIvdXVpZCc7XG5pbXBvcnQgeyBWYWx1ZU1vZGVzS2V5cyB9IGZyb20gJ0BTZXJ2aWNlcy9zdG9yYWdlX3NlcnZpY2UnO1xuaW1wb3J0IHsgU2Vzc2lvbiB9IGZyb20gJ0BTZXJ2aWNlcy9hcGkvc2Vzc2lvbic7XG5pbXBvcnQgeyBDcmVhdGVJdGVtRnJvbVBheWxvYWQgfSBmcm9tICcuLi9tb2RlbHMnO1xuaW1wb3J0IHsgaXNFbnZpcm9ubWVudFdlYk9yRGVza3RvcCwgaXNFbnZpcm9ubWVudE1vYmlsZSB9IGZyb20gJ0BMaWIvcGxhdGZvcm1zJztcbmNvbnN0IExlZ2FjeUtleXMgPSB7XG4gICAgV2ViUGFzc2NvZGVQYXJhbXNLZXk6ICdvZmZsaW5lUGFyYW1zJyxcbiAgICBNb2JpbGVQYXNzY29kZVBhcmFtc0tleTogJ3BjX3BhcmFtcycsXG4gICAgQWxsQWNjb3VudEtleVBhcmFtc0tleTogJ2F1dGhfcGFyYW1zJyxcbiAgICBXZWJFbmNyeXB0ZWRTdG9yYWdlS2V5OiAnZW5jcnlwdGVkU3RvcmFnZScsXG4gICAgTW9iaWxlV3JhcHBlZFJvb3RLZXlLZXk6ICdlbmNyeXB0ZWRfYWNjb3VudF9rZXlzJyxcbiAgICBBbGxNaWdyYXRpb25zOiAnbWlncmF0aW9ucydcbn07XG5leHBvcnQgY2xhc3MgTWlncmF0aW9uMjAyMDAxMTUgZXh0ZW5kcyBNaWdyYXRpb24ge1xuICAgIHN0YXRpYyB0aW1lc3RhbXAoKSB7XG4gICAgICAgIHJldHVybiAobmV3IERhdGUoJzIwMjAtMDEtMTUnKS5nZXRUaW1lKCkpO1xuICAgIH1cbiAgICByZWdpc3RlclN0YWdlSGFuZGxlcnMoKSB7XG4gICAgICAgIHRoaXMucmVnaXN0ZXJTdGFnZUhhbmRsZXIoQXBwbGljYXRpb25TdGFnZS5QcmVwYXJpbmdGb3JMYXVuY2hfMCwgYXN5bmMgKCkgPT4ge1xuICAgICAgICAgICAgaWYgKGlzRW52aXJvbm1lbnRXZWJPckRlc2t0b3AodGhpcy5zZXJ2aWNlcy5lbnZpcm9ubWVudCkpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gdGhpcy5taWdyYXRlU3RvcmFnZVN0cnVjdHVyZUZvcldlYkRlc2t0b3AoKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGVsc2UgaWYgKGlzRW52aXJvbm1lbnRNb2JpbGUodGhpcy5zZXJ2aWNlcy5lbnZpcm9ubWVudCkpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gdGhpcy5taWdyYXRlU3RvcmFnZVN0cnVjdHVyZUZvck1vYmlsZSgpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9KTtcbiAgICAgICAgdGhpcy5yZWdpc3RlclN0YWdlSGFuZGxlcihBcHBsaWNhdGlvblN0YWdlLlN0b3JhZ2VEZWNyeXB0ZWRfMDksIGFzeW5jICgpID0+IHtcbiAgICAgICAgICAgIGF3YWl0IHRoaXMubWlncmF0ZUFyYml0cmFyeVJhd1N0b3JhZ2VUb01hbmFnZWRTdG9yYWdlQWxsUGxhdGZvcm1zKCk7XG4gICAgICAgICAgICBhd2FpdCB0aGlzLm1pZ3JhdGVTZXNzaW9uU3RvcmFnZSgpO1xuICAgICAgICAgICAgYXdhaXQgdGhpcy5kZWxldGVMZWdhY3lTdG9yYWdlVmFsdWVzKCk7XG4gICAgICAgIH0pO1xuICAgICAgICB0aGlzLnJlZ2lzdGVyU3RhZ2VIYW5kbGVyKEFwcGxpY2F0aW9uU3RhZ2UuTG9hZGluZ0RhdGFiYXNlXzExLCBhc3luYyAoKSA9PiB7XG4gICAgICAgICAgICBhd2FpdCB0aGlzLmNyZWF0ZURlZmF1bHRJdGVtc0tleUZvckFsbFBsYXRmb3JtcygpO1xuICAgICAgICAgICAgdGhpcy5tYXJrRG9uZSgpO1xuICAgICAgICB9KTtcbiAgICB9XG4gICAgLyoqXG4gICAgICogV2ViXG4gICAgICogTWlncmF0ZXMgbGVnYWN5IHN0b3JhZ2Ugc3RydWN0dXJlIGludG8gbmV3IG1hbmFnZWQgZm9ybWF0LlxuICAgICAqIElmIGVuY3J5cHRlZCBzdG9yYWdlIGV4aXN0cywgd2UgbmVlZCB0byBmaXJzdCBkZWNyeXB0IGl0IHdpdGggdGhlIHBhc3Njb2RlLlxuICAgICAqIFRoZW4gZXh0cmFjdCB0aGUgYWNjb3VudCBrZXkgZnJvbSBpdC4gVGhlbiwgZW5jcnlwdCBzdG9yYWdlIHdpdGggdGhlXG4gICAgICogYWNjb3VudCBrZXkuIFRoZW4gZW5jcnlwdCB0aGUgYWNjb3VudCBrZXkgd2l0aCB0aGUgcGFzc2NvZGUgYW5kIHN0b3JlIGl0XG4gICAgICogd2l0aGluIHRoZSBuZXcgc3RvcmFnZSBmb3JtYXQuXG4gICAgICpcbiAgICAgKiBHZW5lcmF0ZSBub3RlOiBXZSBkbyBub3QgdXNlIHRoZSBrZXljaGFpbiBpZiBwYXNzY29kZSBpcyBhdmFpbGFibGUuXG4gICAgICovXG4gICAgYXN5bmMgbWlncmF0ZVN0b3JhZ2VTdHJ1Y3R1cmVGb3JXZWJEZXNrdG9wKCkge1xuICAgICAgICBjb25zdCBkZXZpY2VJbnRlcmZhY2UgPSB0aGlzLnNlcnZpY2VzLmRldmljZUludGVyZmFjZTtcbiAgICAgICAgY29uc3QgbmV3U3RvcmFnZVJhd1N0cnVjdHVyZSA9IHtcbiAgICAgICAgICAgIFtWYWx1ZU1vZGVzS2V5cy5XcmFwcGVkXToge30sXG4gICAgICAgICAgICBbVmFsdWVNb2Rlc0tleXMuVW53cmFwcGVkXToge30sXG4gICAgICAgICAgICBbVmFsdWVNb2Rlc0tleXMuTm9ud3JhcHBlZF06IHt9XG4gICAgICAgIH07XG4gICAgICAgIGNvbnN0IHJhd0FjY291bnRLZXlQYXJhbXMgPSBhd2FpdCBkZXZpY2VJbnRlcmZhY2UuZ2V0SnNvblBhcnNlZFN0b3JhZ2VWYWx1ZShMZWdhY3lLZXlzLkFsbEFjY291bnRLZXlQYXJhbXNLZXkpO1xuICAgICAgICAvKiogQ291bGQgYmUgbnVsbCBpZiBubyBhY2NvdW50LCBvciBpZiBhY2NvdW50IGFuZCBzdG9yYWdlIGlzIGVuY3J5cHRlZCAqL1xuICAgICAgICBpZiAocmF3QWNjb3VudEtleVBhcmFtcykge1xuICAgICAgICAgICAgbmV3U3RvcmFnZVJhd1N0cnVjdHVyZS5ub253cmFwcGVkW1N0b3JhZ2VLZXkuUm9vdEtleVBhcmFtc10gPSByYXdBY2NvdW50S2V5UGFyYW1zO1xuICAgICAgICB9XG4gICAgICAgIGNvbnN0IGVuY3J5cHRlZFN0b3JhZ2UgPSBhd2FpdCBkZXZpY2VJbnRlcmZhY2UuZ2V0SnNvblBhcnNlZFN0b3JhZ2VWYWx1ZShMZWdhY3lLZXlzLldlYkVuY3J5cHRlZFN0b3JhZ2VLZXkpO1xuICAgICAgICBpZiAoZW5jcnlwdGVkU3RvcmFnZSkge1xuICAgICAgICAgICAgY29uc3QgZW5jcnlwdGVkU3RvcmFnZVBheWxvYWQgPSBDcmVhdGVNYXhQYXlsb2FkRnJvbUFueU9iamVjdChlbmNyeXB0ZWRTdG9yYWdlKTtcbiAgICAgICAgICAgIGNvbnN0IHBhc3Njb2RlUmVzdWx0ID0gYXdhaXQgdGhpcy53ZWJEZXNrdG9wSGVscGVyR2V0UGFzc2NvZGVLZXlBbmREZWNyeXB0RW5jcnlwdGVkU3RvcmFnZShlbmNyeXB0ZWRTdG9yYWdlUGF5bG9hZCk7XG4gICAgICAgICAgICBjb25zdCBwYXNzY29kZUtleSA9IHBhc3Njb2RlUmVzdWx0LmtleTtcbiAgICAgICAgICAgIGNvbnN0IGRlY3J5cHRlZFN0b3JhZ2VQYXlsb2FkID0gcGFzc2NvZGVSZXN1bHQuZGVjcnlwdGVkU3RvcmFnZVBheWxvYWQ7XG4gICAgICAgICAgICBjb25zdCBwYXNzY29kZVBhcmFtcyA9IHBhc3Njb2RlUmVzdWx0LmtleVBhcmFtcztcbiAgICAgICAgICAgIG5ld1N0b3JhZ2VSYXdTdHJ1Y3R1cmUubm9ud3JhcHBlZFtTdG9yYWdlS2V5LlJvb3RLZXlXcmFwcGVyS2V5UGFyYW1zXSA9IHBhc3Njb2RlUGFyYW1zLmdldFBvcnRhYmxlVmFsdWUoKTtcbiAgICAgICAgICAgIGNvbnN0IHJhd1N0b3JhZ2VWYWx1ZVN0b3JlID0gQ29weShkZWNyeXB0ZWRTdG9yYWdlUGF5bG9hZC5jb250ZW50T2JqZWN0LnN0b3JhZ2UpO1xuICAgICAgICAgICAgY29uc3Qgc3RvcmFnZVZhbHVlU3RvcmUgPSBqc29uUGFyc2VFbWJlZGRlZEtleXMocmF3U3RvcmFnZVZhbHVlU3RvcmUpO1xuICAgICAgICAgICAgLyoqIFN0b3JlIHByZXZpb3VzbHkgZW5jcnlwdGVkIGF1dGhfcGFyYW1zIGludG8gbmV3IG5vbndyYXBwZWQgdmFsdWUga2V5ICovXG4gICAgICAgICAgICBuZXdTdG9yYWdlUmF3U3RydWN0dXJlLm5vbndyYXBwZWRbU3RvcmFnZUtleS5Sb290S2V5UGFyYW1zXVxuICAgICAgICAgICAgICAgID0gc3RvcmFnZVZhbHVlU3RvcmVbTGVnYWN5S2V5cy5BbGxBY2NvdW50S2V5UGFyYW1zS2V5XTtcbiAgICAgICAgICAgIGxldCBrZXlUb0VuY3J5cHRTdG9yYWdlV2l0aCA9IHBhc3Njb2RlS2V5O1xuICAgICAgICAgICAgLyoqIEV4dHJhY3QgYWNjb3VudCBrZXkgKG1rLCBwdywgYWspIGlmIGl0IGV4aXN0cyAqL1xuICAgICAgICAgICAgY29uc3QgaGFzQWNjb3VudEtleXMgPSAhaXNOdWxsT3JVbmRlZmluZWQoc3RvcmFnZVZhbHVlU3RvcmUubWspO1xuICAgICAgICAgICAgaWYgKGhhc0FjY291bnRLZXlzKSB7XG4gICAgICAgICAgICAgICAgY29uc3QgeyBhY2NvdW50S2V5LCB3cmFwcGVkS2V5IH0gPSBhd2FpdCB0aGlzLndlYkRlc2t0b3BIZWxwZXJFeHRyYWN0QW5kV3JhcEFjY291bnRLZXlzRnJvbVZhbHVlU3RvcmUocGFzc2NvZGVLZXksIHN0b3JhZ2VWYWx1ZVN0b3JlKTtcbiAgICAgICAgICAgICAgICBrZXlUb0VuY3J5cHRTdG9yYWdlV2l0aCA9IGFjY291bnRLZXk7XG4gICAgICAgICAgICAgICAgbmV3U3RvcmFnZVJhd1N0cnVjdHVyZS5ub253cmFwcGVkW1N0b3JhZ2VLZXkuV3JhcHBlZFJvb3RLZXldID0gd3JhcHBlZEtleTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIC8qKiBFbmNyeXB0IHN0b3JhZ2Ugd2l0aCBwcm9wZXIga2V5ICovXG4gICAgICAgICAgICBuZXdTdG9yYWdlUmF3U3RydWN0dXJlLndyYXBwZWQgPSBhd2FpdCB0aGlzLndlYkRlc2t0b3BIZWxwZXJFbmNyeXB0U3RvcmFnZShrZXlUb0VuY3J5cHRTdG9yYWdlV2l0aCwgZGVjcnlwdGVkU3RvcmFnZVBheWxvYWQsIHN0b3JhZ2VWYWx1ZVN0b3JlKTtcbiAgICAgICAgfVxuICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgIC8qKlxuICAgICAgICAgICAgICogTm8gZW5jcnlwdGVkIHN0b3JhZ2UsIHRha2UgYWNjb3VudCBrZXlzIG91dCBvZiByYXcgc3RvcmFnZVxuICAgICAgICAgICAgICogYW5kIHBsYWNlIHRoZW0gaW4gdGhlIGtleWNoYWluLiAqL1xuICAgICAgICAgICAgY29uc3QgYWsgPSBhd2FpdCB0aGlzLnNlcnZpY2VzLmRldmljZUludGVyZmFjZS5nZXRSYXdTdG9yYWdlVmFsdWUoJ2FrJyk7XG4gICAgICAgICAgICBjb25zdCB2ZXJzaW9uID0gIWlzTnVsbE9yVW5kZWZpbmVkKGFrKVxuICAgICAgICAgICAgICAgID8gUHJvdG9jb2xWZXJzaW9uLlYwMDNcbiAgICAgICAgICAgICAgICA6IFByb3RvY29sVmVyc2lvbi5WMDAyO1xuICAgICAgICAgICAgY29uc3QgYWNjb3VudEtleSA9IGF3YWl0IFNOUm9vdEtleS5DcmVhdGUoe1xuICAgICAgICAgICAgICAgIG1hc3RlcktleTogYXdhaXQgdGhpcy5zZXJ2aWNlcy5kZXZpY2VJbnRlcmZhY2UuZ2V0UmF3U3RvcmFnZVZhbHVlKCdtaycpLFxuICAgICAgICAgICAgICAgIHNlcnZlclBhc3N3b3JkOiBhd2FpdCB0aGlzLnNlcnZpY2VzLmRldmljZUludGVyZmFjZS5nZXRSYXdTdG9yYWdlVmFsdWUoJ3B3JyksXG4gICAgICAgICAgICAgICAgZGF0YUF1dGhlbnRpY2F0aW9uS2V5OiBhayxcbiAgICAgICAgICAgICAgICB2ZXJzaW9uOiB2ZXJzaW9uXG4gICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIGF3YWl0IHRoaXMuc2VydmljZXMuZGV2aWNlSW50ZXJmYWNlLnNldEtleWNoYWluVmFsdWUoYWNjb3VudEtleS5nZXRQZXJzaXN0YWJsZVZhbHVlKCkpO1xuICAgICAgICB9XG4gICAgICAgIC8qKiBQZXJzaXN0IHN0b3JhZ2UgdW5kZXIgbmV3IGtleSBhbmQgc3RydWN0dXJlICovXG4gICAgICAgIGF3YWl0IHRoaXMuYWxsUGxhdGZvcm1IZWxwZXJTZXRTdG9yYWdlU3RydWN0dXJlKG5ld1N0b3JhZ2VSYXdTdHJ1Y3R1cmUpO1xuICAgIH1cbiAgICAvKipcbiAgICAgKiBIZWxwZXJcbiAgICAgKiBBbGwgcGxhdGZvcm1zXG4gICAgICovXG4gICAgYXN5bmMgYWxsUGxhdGZvcm1IZWxwZXJTZXRTdG9yYWdlU3RydWN0dXJlKHJhd1N0cnVjdHVyZSkge1xuICAgICAgICBjb25zdCBuZXdTdHJ1Y3R1cmUgPSBTTlN0b3JhZ2VTZXJ2aWNlLmRlZmF1bHRWYWx1ZXNPYmplY3QocmF3U3RydWN0dXJlLndyYXBwZWQsIHJhd1N0cnVjdHVyZS51bndyYXBwZWQsIHJhd1N0cnVjdHVyZS5ub253cmFwcGVkKTtcbiAgICAgICAgbmV3U3RydWN0dXJlW1ZhbHVlTW9kZXNLZXlzLlVud3JhcHBlZF0gPSB1bmRlZmluZWQ7XG4gICAgICAgIGF3YWl0IHRoaXMuc2VydmljZXMuZGV2aWNlSW50ZXJmYWNlLnNldFJhd1N0b3JhZ2VWYWx1ZShuYW1lc3BhY2VkS2V5KHRoaXMuc2VydmljZXMubmFtZXNwYWNlLCBSYXdTdG9yYWdlS2V5LlN0b3JhZ2VPYmplY3QpLCBKU09OLnN0cmluZ2lmeShuZXdTdHJ1Y3R1cmUpKTtcbiAgICB9XG4gICAgLyoqXG4gICAgICogSGVscGVyXG4gICAgICogV2ViL2Rlc2t0b3Agb25seVxuICAgICAqL1xuICAgIGFzeW5jIHdlYkRlc2t0b3BIZWxwZXJHZXRQYXNzY29kZUtleUFuZERlY3J5cHRFbmNyeXB0ZWRTdG9yYWdlKGVuY3J5cHRlZFBheWxvYWQpIHtcbiAgICAgICAgY29uc3QgcmF3UGFzc2NvZGVQYXJhbXMgPSBhd2FpdCB0aGlzLnNlcnZpY2VzLmRldmljZUludGVyZmFjZVxuICAgICAgICAgICAgLmdldEpzb25QYXJzZWRTdG9yYWdlVmFsdWUoTGVnYWN5S2V5cy5XZWJQYXNzY29kZVBhcmFtc0tleSk7XG4gICAgICAgIGNvbnN0IHBhc3Njb2RlUGFyYW1zID0gdGhpcy5zZXJ2aWNlcy5wcm90b2NvbFNlcnZpY2UuY3JlYXRlS2V5UGFyYW1zKHJhd1Bhc3Njb2RlUGFyYW1zKTtcbiAgICAgICAgLyoqIERlY3J5cHQgaXQgd2l0aCB0aGUgcGFzc2NvZGUgKi9cbiAgICAgICAgbGV0IGRlY3J5cHRlZFN0b3JhZ2VQYXlsb2FkO1xuICAgICAgICBsZXQgZXJyb3JEZWNyeXB0aW5nID0gdHJ1ZTtcbiAgICAgICAgbGV0IHBhc3Njb2RlS2V5O1xuICAgICAgICBjb25zdCBjaGFsbGVuZ2UgPSBuZXcgQ2hhbGxlbmdlKFtDaGFsbGVuZ2VUeXBlLkxvY2FsUGFzc2NvZGVdLCBDaGFsbGVuZ2VSZWFzb24uTWlncmF0aW9uKTtcbiAgICAgICAgd2hpbGUgKGVycm9yRGVjcnlwdGluZykge1xuICAgICAgICAgICAgY29uc3QgW3ZhbHVlXSA9IGF3YWl0IHRoaXMuc2VydmljZXMuY2hhbGxlbmdlU2VydmljZVxuICAgICAgICAgICAgICAgIC5wcm9tcHRGb3JDaGFsbGVuZ2VSZXNwb25zZVdpdGhDdXN0b21WYWxpZGF0aW9uKGNoYWxsZW5nZSk7XG4gICAgICAgICAgICBjb25zdCBwYXNzY29kZSA9IHZhbHVlLnZhbHVlO1xuICAgICAgICAgICAgcGFzc2NvZGVLZXkgPSBhd2FpdCB0aGlzLnNlcnZpY2VzLnByb3RvY29sU2VydmljZS5jb21wdXRlUm9vdEtleShwYXNzY29kZSwgcGFzc2NvZGVQYXJhbXMpO1xuICAgICAgICAgICAgZGVjcnlwdGVkU3RvcmFnZVBheWxvYWQgPSBhd2FpdCB0aGlzLnNlcnZpY2VzLnByb3RvY29sU2VydmljZS5wYXlsb2FkQnlEZWNyeXB0aW5nUGF5bG9hZChlbmNyeXB0ZWRQYXlsb2FkLCBwYXNzY29kZUtleSk7XG4gICAgICAgICAgICBlcnJvckRlY3J5cHRpbmcgPSBkZWNyeXB0ZWRTdG9yYWdlUGF5bG9hZC5lcnJvckRlY3J5cHRpbmc7XG4gICAgICAgICAgICB0aGlzLnNlcnZpY2VzLmNoYWxsZW5nZVNlcnZpY2Uuc2V0VmFsaWRhdGlvblN0YXR1c0ZvckNoYWxsZW5nZShjaGFsbGVuZ2UsIHZhbHVlLCAhZGVjcnlwdGVkU3RvcmFnZVBheWxvYWQuZXJyb3JEZWNyeXB0aW5nKTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgZGVjcnlwdGVkU3RvcmFnZVBheWxvYWQsXG4gICAgICAgICAgICBrZXk6IHBhc3Njb2RlS2V5LFxuICAgICAgICAgICAga2V5UGFyYW1zOiBwYXNzY29kZVBhcmFtc1xuICAgICAgICB9O1xuICAgIH1cbiAgICAvKipcbiAgICAgKiBIZWxwZXJcbiAgICAgKiBXZWIvZGVza3RvcCBvbmx5XG4gICAgICovXG4gICAgYXN5bmMgd2ViRGVza3RvcEhlbHBlckV4dHJhY3RBbmRXcmFwQWNjb3VudEtleXNGcm9tVmFsdWVTdG9yZShwYXNzY29kZUtleSwgc3RvcmFnZVZhbHVlU3RvcmUpIHtcbiAgICAgICAgY29uc3QgdmVyc2lvbiA9IHN0b3JhZ2VWYWx1ZVN0b3JlLmFrXG4gICAgICAgICAgICA/IFByb3RvY29sVmVyc2lvbi5WMDAzXG4gICAgICAgICAgICA6IFByb3RvY29sVmVyc2lvbi5WMDAyO1xuICAgICAgICBjb25zdCBhY2NvdW50S2V5ID0gYXdhaXQgU05Sb290S2V5LkNyZWF0ZSh7XG4gICAgICAgICAgICBtYXN0ZXJLZXk6IHN0b3JhZ2VWYWx1ZVN0b3JlLm1rLFxuICAgICAgICAgICAgc2VydmVyUGFzc3dvcmQ6IHN0b3JhZ2VWYWx1ZVN0b3JlLnB3LFxuICAgICAgICAgICAgZGF0YUF1dGhlbnRpY2F0aW9uS2V5OiBzdG9yYWdlVmFsdWVTdG9yZS5hayxcbiAgICAgICAgICAgIHZlcnNpb246IHZlcnNpb25cbiAgICAgICAgfSk7XG4gICAgICAgIGRlbGV0ZSBzdG9yYWdlVmFsdWVTdG9yZS5taztcbiAgICAgICAgZGVsZXRlIHN0b3JhZ2VWYWx1ZVN0b3JlLnB3O1xuICAgICAgICBkZWxldGUgc3RvcmFnZVZhbHVlU3RvcmUuYWs7XG4gICAgICAgIGNvbnN0IGFjY291bnRLZXlQYXlsb2FkID0gQ3JlYXRlTWF4UGF5bG9hZEZyb21BbnlPYmplY3QoYWNjb3VudEtleSk7XG4gICAgICAgIGxldCBlbmNyeXB0ZWRBY2NvdW50S2V5O1xuICAgICAgICBpZiAocGFzc2NvZGVLZXkpIHtcbiAgICAgICAgICAgIC8qKiBFbmNyeXB0IGFjY291bnQga2V5IHdpdGggcGFzc2NvZGUgKi9cbiAgICAgICAgICAgIGVuY3J5cHRlZEFjY291bnRLZXkgPSBhd2FpdCB0aGlzLnNlcnZpY2VzLnByb3RvY29sU2VydmljZVxuICAgICAgICAgICAgICAgIC5wYXlsb2FkQnlFbmNyeXB0aW5nUGF5bG9hZChhY2NvdW50S2V5UGF5bG9hZCwgRW5jcnlwdGlvbkludGVudC5Mb2NhbFN0b3JhZ2VFbmNyeXB0ZWQsIHBhc3Njb2RlS2V5KTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgYWNjb3VudEtleTogYWNjb3VudEtleSxcbiAgICAgICAgICAgIHdyYXBwZWRLZXk6IGVuY3J5cHRlZEFjY291bnRLZXk/LmVqZWN0ZWQoKVxuICAgICAgICB9O1xuICAgIH1cbiAgICAvKipcbiAgICAgKiBIZWxwZXJcbiAgICAgKiBXZWIvZGVza3RvcCBvbmx5XG4gICAgICogRW5jcnlwdCBzdG9yYWdlIHdpdGggYWNjb3VudCBrZXlcbiAgICAgKi9cbiAgICBhc3luYyB3ZWJEZXNrdG9wSGVscGVyRW5jcnlwdFN0b3JhZ2Uoa2V5LCBkZWNyeXB0ZWRTdG9yYWdlUGF5bG9hZCwgc3RvcmFnZVZhbHVlU3RvcmUpIHtcbiAgICAgICAgY29uc3Qgd3JhcHBlZCA9IGF3YWl0IHRoaXMuc2VydmljZXMucHJvdG9jb2xTZXJ2aWNlLlxuICAgICAgICAgICAgcGF5bG9hZEJ5RW5jcnlwdGluZ1BheWxvYWQoQ29weVBheWxvYWQoZGVjcnlwdGVkU3RvcmFnZVBheWxvYWQsIHtcbiAgICAgICAgICAgIGNvbnRlbnRfdHlwZTogQ29udGVudFR5cGUuRW5jcnlwdGVkU3RvcmFnZSxcbiAgICAgICAgICAgIGNvbnRlbnQ6IHN0b3JhZ2VWYWx1ZVN0b3JlLFxuICAgICAgICB9KSwgRW5jcnlwdGlvbkludGVudC5Mb2NhbFN0b3JhZ2VQcmVmZXJFbmNyeXB0ZWQsIGtleSk7XG4gICAgICAgIHJldHVybiB3cmFwcGVkLmVqZWN0ZWQoKTtcbiAgICB9XG4gICAgLyoqXG4gICAgICogTW9iaWxlXG4gICAgICogT24gbW9iaWxlIGxlZ2FjeSBzdHJ1Y3R1cmUgaXMgbW9zdGx5IHNpbWlsYXIgdG8gbmV3IHN0cnVjdHVyZSxcbiAgICAgKiBpbiB0aGF0IHRoZSBhY2NvdW50IGtleSBpcyBlbmNyeXB0ZWQgd2l0aCB0aGUgcGFzc2NvZGUuIEJ1dCBtb2JpbGUgZGlkXG4gICAgICogbm90IGhhdmUgZW5jcnlwdGVkIHN0b3JhZ2UsIHNvIHdlIHNpbXBseSBuZWVkIHRvIHRyYW5zZmVyIGFsbCBleGlzdGluZ1xuICAgICAqIHN0b3JhZ2UgdmFsdWVzIGludG8gbmV3IG1hbmFnZWQgc3RydWN0dXJlLlxuICAgICAqXG4gICAgICogSWYgbm8gYWNjb3VudCBidXQgcGFzc2NvZGUgb25seSwgdGhlIG9ubHkgdGhpbmcgd2Ugc3RvcmVkIG9uIG1vYmlsZVxuICAgICAqIHByZXZpb3VzbHkgd2FzIGtleXMub2ZmbGluZS5wdyBhbmQga2V5cy5vZmZsaW5lLnRpbWluZyBpbiB0aGUga2V5Y2hhaW5cbiAgICAgKiB0aGF0IHdlIGNvbXBhcmVkIGFnYWluc3QgZm9yIHZhbGlkIGRlY3J5cHRpb24uXG4gICAgICogSW4gdGhlIG5ldyB2ZXJzaW9uLCB3ZSBrbm93IGEgcGFzc2NvZGUgaXMgY29ycmVjdCBpZiBpdCBjYW4gZGVjcnlwdCBzdG9yYWdlLlxuICAgICAqIEFzIHBhcnQgb2YgdGhlIG1pZ3JhdGlvbiwgd2XigJlsbCBuZWVkIHRvIHJlcXVlc3QgdGhlIHJhdyBwYXNzY29kZSBmcm9tIHVzZXIsXG4gICAgICogY29tcGFyZSBpdCBhZ2FpbnN0IHRoZSBrZXljaGFpbiBvZmZsaW5lLnB3IHZhbHVlLCBhbmQgaWYgY29ycmVjdCxcbiAgICAgKiBtaWdyYXRlIHN0b3JhZ2UgdG8gbmV3IHN0cnVjdHVyZSwgYW5kIGVuY3J5cHQgd2l0aCBwYXNzY29kZSBrZXkuXG4gICAgICpcbiAgICAgKiBJZiBhY2NvdW50IG9ubHksIHRha2UgdGhlIHZhbHVlIGluIHRoZSBrZXljaGFpbiwgYW5kIHJlbmFtZSB0aGUgdmFsdWVzXG4gICAgICogKGkuZSBtayA+IG1hc3RlcktleSkuXG4gICAgICogQGFjY2VzcyBwcml2YXRlXG4gICAgICovXG4gICAgYXN5bmMgbWlncmF0ZVN0b3JhZ2VTdHJ1Y3R1cmVGb3JNb2JpbGUoKSB7XG4gICAgICAgIGNvbnN0IHdyYXBwZWRBY2NvdW50S2V5ID0gYXdhaXQgdGhpcy5zZXJ2aWNlcy5kZXZpY2VJbnRlcmZhY2UuZ2V0SnNvblBhcnNlZFN0b3JhZ2VWYWx1ZShMZWdhY3lLZXlzLk1vYmlsZVdyYXBwZWRSb290S2V5S2V5KTtcbiAgICAgICAgY29uc3QgcmF3QWNjb3VudEtleVBhcmFtcyA9IGF3YWl0IHRoaXMuc2VydmljZXMuZGV2aWNlSW50ZXJmYWNlLmdldEpzb25QYXJzZWRTdG9yYWdlVmFsdWUoTGVnYWN5S2V5cy5BbGxBY2NvdW50S2V5UGFyYW1zS2V5KTtcbiAgICAgICAgY29uc3QgcmF3UGFzc2NvZGVQYXJhbXMgPSBhd2FpdCB0aGlzLnNlcnZpY2VzLmRldmljZUludGVyZmFjZS5nZXRKc29uUGFyc2VkU3RvcmFnZVZhbHVlKExlZ2FjeUtleXMuTW9iaWxlUGFzc2NvZGVQYXJhbXNLZXkpO1xuICAgICAgICBjb25zdCByYXdTdHJ1Y3R1cmUgPSB7XG4gICAgICAgICAgICBbVmFsdWVNb2Rlc0tleXMuTm9ud3JhcHBlZF06IHtcbiAgICAgICAgICAgICAgICBbU3RvcmFnZUtleS5XcmFwcGVkUm9vdEtleV06IHdyYXBwZWRBY2NvdW50S2V5LFxuICAgICAgICAgICAgICAgIFtTdG9yYWdlS2V5LlJvb3RLZXlXcmFwcGVyS2V5UGFyYW1zXTogcmF3UGFzc2NvZGVQYXJhbXMsXG4gICAgICAgICAgICAgICAgW1N0b3JhZ2VLZXkuUm9vdEtleVBhcmFtc106IHJhd0FjY291bnRLZXlQYXJhbXNcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICBbVmFsdWVNb2Rlc0tleXMuVW53cmFwcGVkXToge30sXG4gICAgICAgICAgICBbVmFsdWVNb2Rlc0tleXMuV3JhcHBlZF06IHt9LFxuICAgICAgICB9O1xuICAgICAgICBjb25zdCBrZXljaGFpblZhbHVlID0gYXdhaXQgdGhpcy5zZXJ2aWNlcy5kZXZpY2VJbnRlcmZhY2UuZ2V0S2V5Y2hhaW5WYWx1ZSgpO1xuICAgICAgICBpZiAocmF3UGFzc2NvZGVQYXJhbXMpIHtcbiAgICAgICAgICAgIGNvbnN0IHBhc3Njb2RlUGFyYW1zID0gdGhpcy5zZXJ2aWNlcy5wcm90b2NvbFNlcnZpY2UuY3JlYXRlS2V5UGFyYW1zKHJhd1Bhc3Njb2RlUGFyYW1zKTtcbiAgICAgICAgICAgIGNvbnN0IGdldFBhc3Njb2RlS2V5ID0gYXN5bmMgKCkgPT4ge1xuICAgICAgICAgICAgICAgIC8qKiBWYWxpZGF0ZSBjdXJyZW50IHBhc3Njb2RlIGJ5IGNvbXBhcmluZyBhZ2FpbnN0IGtleWNoYWluIG9mZmxpbmUucHcgdmFsdWUgKi9cbiAgICAgICAgICAgICAgICBjb25zdCBwd0hhc2ggPSBrZXljaGFpblZhbHVlLm9mZmxpbmUucHc7XG4gICAgICAgICAgICAgICAgbGV0IHBhc3Njb2RlS2V5O1xuICAgICAgICAgICAgICAgIGNvbnN0IGNoYWxsZW5nZSA9IG5ldyBDaGFsbGVuZ2UoW0NoYWxsZW5nZVR5cGUuTG9jYWxQYXNzY29kZV0sIENoYWxsZW5nZVJlYXNvbi5NaWdyYXRpb24pO1xuICAgICAgICAgICAgICAgIHdoaWxlICghcGFzc2NvZGVLZXkgfHwgcGFzc2NvZGVLZXkuc2VydmVyUGFzc3dvcmQgIT09IHB3SGFzaCkge1xuICAgICAgICAgICAgICAgICAgICBjb25zdCBbdmFsdWVdID0gYXdhaXQgdGhpcy5zZXJ2aWNlcy5jaGFsbGVuZ2VTZXJ2aWNlXG4gICAgICAgICAgICAgICAgICAgICAgICAucHJvbXB0Rm9yQ2hhbGxlbmdlUmVzcG9uc2VXaXRoQ3VzdG9tVmFsaWRhdGlvbihjaGFsbGVuZ2UpO1xuICAgICAgICAgICAgICAgICAgICBjb25zdCBwYXNzY29kZSA9IHZhbHVlLnZhbHVlO1xuICAgICAgICAgICAgICAgICAgICBwYXNzY29kZUtleSA9IGF3YWl0IHRoaXMuc2VydmljZXMucHJvdG9jb2xTZXJ2aWNlLmNvbXB1dGVSb290S2V5KHBhc3Njb2RlLCBwYXNzY29kZVBhcmFtcyk7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuc2VydmljZXMuY2hhbGxlbmdlU2VydmljZS5zZXRWYWxpZGF0aW9uU3RhdHVzRm9yQ2hhbGxlbmdlKGNoYWxsZW5nZSwgdmFsdWUsIHBhc3Njb2RlS2V5LnNlcnZlclBhc3N3b3JkID09PSBwd0hhc2gpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICByZXR1cm4gcGFzc2NvZGVLZXk7XG4gICAgICAgICAgICB9O1xuICAgICAgICAgICAgY29uc3QgdGltaW5nID0ga2V5Y2hhaW5WYWx1ZS5vZmZsaW5lLnRpbWluZztcbiAgICAgICAgICAgIHJhd1N0cnVjdHVyZS51bndyYXBwZWRbU3RvcmFnZUtleS5Nb2JpbGVQYXNzY29kZVRpbWluZ10gPSB0aW1pbmc7XG4gICAgICAgICAgICBpZiAod3JhcHBlZEFjY291bnRLZXkpIHtcbiAgICAgICAgICAgICAgICAvKipcbiAgICAgICAgICAgICAgICAgKiBBY2NvdW50IGtleSBpcyBlbmNyeXB0ZWQgd2l0aCBwYXNzY29kZS4gSW5zaWRlLCB0aGUgYWNjb3VudEtleSBpcyBsb2NhdGVkIGluc2lkZVxuICAgICAgICAgICAgICAgICAqIGNvbnRlbnQuYWNjb3VudEtleXMuIFdlIHdhbnQgdG8gdW5lbWJlZCB0aGVzZSB2YWx1ZXMgdG8gbWFpbiBjb250ZW50LCByZW5hbWVcbiAgICAgICAgICAgICAgICAgKiB3aXRoIHByb3BlciBwcm9wZXJ0eSBuYW1lcywgd3JhcCBhZ2FpbiwgYW5kIHN0b3JlIGluIG5ldyByYXdTdHJ1Y3R1cmUuXG4gICAgICAgICAgICAgICAgICovXG4gICAgICAgICAgICAgICAgY29uc3QgcGFzc2NvZGVLZXkgPSBhd2FpdCBnZXRQYXNzY29kZUtleSgpO1xuICAgICAgICAgICAgICAgIGNvbnN0IHVud3JhcHBlZEFjY291bnRLZXkgPSBhd2FpdCB0aGlzLnNlcnZpY2VzLnByb3RvY29sU2VydmljZS5wYXlsb2FkQnlEZWNyeXB0aW5nUGF5bG9hZChDcmVhdGVNYXhQYXlsb2FkRnJvbUFueU9iamVjdCh3cmFwcGVkQWNjb3VudEtleSksIHBhc3Njb2RlS2V5KTtcbiAgICAgICAgICAgICAgICBjb25zdCBhY2NvdW50S2V5Q29udGVudCA9IHVud3JhcHBlZEFjY291bnRLZXkuY29udGVudE9iamVjdC5hY2NvdW50S2V5cztcbiAgICAgICAgICAgICAgICBjb25zdCBkZWZhdWx0VmVyc2lvbiA9ICFpc051bGxPclVuZGVmaW5lZChhY2NvdW50S2V5Q29udGVudC5haylcbiAgICAgICAgICAgICAgICAgICAgPyBQcm90b2NvbFZlcnNpb24uVjAwM1xuICAgICAgICAgICAgICAgICAgICA6IFByb3RvY29sVmVyc2lvbi5WMDAyO1xuICAgICAgICAgICAgICAgIGNvbnN0IG5ld0FjY291bnRLZXkgPSBDb3B5UGF5bG9hZCh1bndyYXBwZWRBY2NvdW50S2V5LCB7XG4gICAgICAgICAgICAgICAgICAgIGNvbnRlbnQ6IHtcbiAgICAgICAgICAgICAgICAgICAgICAgIG1hc3RlcktleTogYWNjb3VudEtleUNvbnRlbnQubWssXG4gICAgICAgICAgICAgICAgICAgICAgICBzZXJ2ZXJQYXNzd29yZDogYWNjb3VudEtleUNvbnRlbnQucHcsXG4gICAgICAgICAgICAgICAgICAgICAgICBkYXRhQXV0aGVudGljYXRpb25LZXk6IGFjY291bnRLZXlDb250ZW50LmFrLFxuICAgICAgICAgICAgICAgICAgICAgICAgdmVyc2lvbjogYWNjb3VudEtleUNvbnRlbnQudmVyc2lvbiB8fCBkZWZhdWx0VmVyc2lvbixcbiAgICAgICAgICAgICAgICAgICAgICAgIGFjY291bnRLZXlzOiBudWxsXG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgICAgICBjb25zdCBuZXdXcmFwcGVkQWNjb3VudEtleSA9IGF3YWl0IHRoaXMuc2VydmljZXMucHJvdG9jb2xTZXJ2aWNlLnBheWxvYWRCeUVuY3J5cHRpbmdQYXlsb2FkKG5ld0FjY291bnRLZXksIEVuY3J5cHRpb25JbnRlbnQuTG9jYWxTdG9yYWdlUHJlZmVyRW5jcnlwdGVkLCBwYXNzY29kZUtleSk7XG4gICAgICAgICAgICAgICAgcmF3U3RydWN0dXJlLm5vbndyYXBwZWRbU3RvcmFnZUtleS5XcmFwcGVkUm9vdEtleV0gPSBuZXdXcmFwcGVkQWNjb3VudEtleS5lamVjdGVkKCk7XG4gICAgICAgICAgICAgICAgYXdhaXQgdGhpcy5zZXJ2aWNlcy5kZXZpY2VJbnRlcmZhY2UuY2xlYXJLZXljaGFpblZhbHVlKCk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBlbHNlIGlmICghd3JhcHBlZEFjY291bnRLZXkpIHtcbiAgICAgICAgICAgICAgICAvKiogUGFzc2NvZGUgb25seSwgbm8gYWNjb3VudCAqL1xuICAgICAgICAgICAgICAgIGNvbnN0IHBhc3Njb2RlS2V5ID0gYXdhaXQgZ2V0UGFzc2NvZGVLZXkoKTtcbiAgICAgICAgICAgICAgICBjb25zdCBwYXlsb2FkID0gQ3JlYXRlTWF4UGF5bG9hZEZyb21BbnlPYmplY3Qoe1xuICAgICAgICAgICAgICAgICAgICB1dWlkOiBhd2FpdCBVdWlkLkdlbmVyYXRlVXVpZCgpLFxuICAgICAgICAgICAgICAgICAgICBjb250ZW50OiBGaWxsSXRlbUNvbnRlbnQocmF3U3RydWN0dXJlLnVud3JhcHBlZCksXG4gICAgICAgICAgICAgICAgICAgIGNvbnRlbnRfdHlwZTogQ29udGVudFR5cGUuRW5jcnlwdGVkU3RvcmFnZVxuICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICAgIC8qKiBFbmNyeXB0IG5ldyBzdG9yYWdlLnVud3JhcHBlZCBzdHJ1Y3R1cmUgd2l0aCBwYXNzY29kZSAqL1xuICAgICAgICAgICAgICAgIGNvbnN0IHdyYXBwZWQgPSBhd2FpdCB0aGlzLnNlcnZpY2VzLnByb3RvY29sU2VydmljZS5wYXlsb2FkQnlFbmNyeXB0aW5nUGF5bG9hZChwYXlsb2FkLCBFbmNyeXB0aW9uSW50ZW50LkxvY2FsU3RvcmFnZVByZWZlckVuY3J5cHRlZCwgcGFzc2NvZGVLZXkpO1xuICAgICAgICAgICAgICAgIHJhd1N0cnVjdHVyZS53cmFwcGVkID0gd3JhcHBlZC5lamVjdGVkKCk7XG4gICAgICAgICAgICAgICAgYXdhaXQgdGhpcy5zZXJ2aWNlcy5kZXZpY2VJbnRlcmZhY2UuY2xlYXJLZXljaGFpblZhbHVlKCk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICAvKiogTm8gcGFzc2NvZGUsIHBvdGVudGlhbGx5IGFjY291bnQuIE1pZ3JhdGUga2V5Y2hhaW4gcHJvcGVydHkga2V5cy4gKi9cbiAgICAgICAgICAgIGNvbnN0IGhhc0FjY291bnQgPSBrZXljaGFpblZhbHVlICYmIGtleWNoYWluVmFsdWUubWs7XG4gICAgICAgICAgICBpZiAoaGFzQWNjb3VudCkge1xuICAgICAgICAgICAgICAgIGNvbnN0IGRlZmF1bHRWZXJzaW9uID0gIWlzTnVsbE9yVW5kZWZpbmVkKGtleWNoYWluVmFsdWUuYWspXG4gICAgICAgICAgICAgICAgICAgID8gUHJvdG9jb2xWZXJzaW9uLlYwMDNcbiAgICAgICAgICAgICAgICAgICAgOiBQcm90b2NvbFZlcnNpb24uVjAwMjtcbiAgICAgICAgICAgICAgICBjb25zdCBhY2NvdW50S2V5ID0gYXdhaXQgU05Sb290S2V5LkNyZWF0ZSh7XG4gICAgICAgICAgICAgICAgICAgIG1hc3RlcktleToga2V5Y2hhaW5WYWx1ZS5tayxcbiAgICAgICAgICAgICAgICAgICAgc2VydmVyUGFzc3dvcmQ6IGtleWNoYWluVmFsdWUucHcsXG4gICAgICAgICAgICAgICAgICAgIGRhdGFBdXRoZW50aWNhdGlvbktleToga2V5Y2hhaW5WYWx1ZS5hayxcbiAgICAgICAgICAgICAgICAgICAgdmVyc2lvbjoga2V5Y2hhaW5WYWx1ZS52ZXJzaW9uIHx8IGRlZmF1bHRWZXJzaW9uXG4gICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgICAgYXdhaXQgdGhpcy5zZXJ2aWNlcy5kZXZpY2VJbnRlcmZhY2Uuc2V0S2V5Y2hhaW5WYWx1ZShhY2NvdW50S2V5LmdldFBlcnNpc3RhYmxlVmFsdWUoKSk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgLyoqIE1vdmUgZW5jcnlwdGVkIGFjY291bnQga2V5IGludG8gcGxhY2Ugd2hlcmUgaXQgaXMgbm93IGV4cGVjdGVkICovXG4gICAgICAgIGF3YWl0IHRoaXMuYWxsUGxhdGZvcm1IZWxwZXJTZXRTdG9yYWdlU3RydWN0dXJlKHJhd1N0cnVjdHVyZSk7XG4gICAgfVxuICAgIC8qKlxuICAgICAqIEFsbCBwbGF0Zm9ybXNcbiAgICAgKiBNaWdyYXRlIGFsbCBwcmV2aW91c2x5IGluZGVwZW5kZW50bHkgc3RvcmVkIHN0b3JhZ2Uga2V5cyBpbnRvIG5ld1xuICAgICAqIG1hbmFnZWQgYXBwcm9hY2guIEFsc28gZGVsZXRlcyBhbnkgbGVnYWN5IHZhbHVlcyBmcm9tIHJhdyBzdG9yYWdlLlxuICAgICAqIEBhY2Nlc3MgcHJpdmF0ZVxuICAgICAqL1xuICAgIGFzeW5jIG1pZ3JhdGVBcmJpdHJhcnlSYXdTdG9yYWdlVG9NYW5hZ2VkU3RvcmFnZUFsbFBsYXRmb3JtcygpIHtcbiAgICAgICAgY29uc3QgYWxsS2V5VmFsdWVzID0gYXdhaXQgdGhpcy5zZXJ2aWNlcy5kZXZpY2VJbnRlcmZhY2VcbiAgICAgICAgICAgIC5nZXRBbGxSYXdTdG9yYWdlS2V5VmFsdWVzKCk7XG4gICAgICAgIGNvbnN0IGxlZ2FjeUtleXMgPSBvYmplY3RUb1ZhbHVlQXJyYXkoTGVnYWN5S2V5cyk7XG4gICAgICAgIGNvbnN0IHRyeUpzb25QYXJzZSA9ICh2YWx1ZSkgPT4ge1xuICAgICAgICAgICAgdHJ5IHtcbiAgICAgICAgICAgICAgICByZXR1cm4gSlNPTi5wYXJzZSh2YWx1ZSk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBjYXRjaCAoZSkge1xuICAgICAgICAgICAgICAgIHJldHVybiB2YWx1ZTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfTtcbiAgICAgICAgY29uc3QgbmFtZXNwYWNlID0gdGhpcy5zZXJ2aWNlcy5uYW1lc3BhY2U7XG4gICAgICAgIGZvciAoY29uc3Qga2V5VmFsdWVQYWlyIG9mIGFsbEtleVZhbHVlcykge1xuICAgICAgICAgICAgY29uc3Qga2V5ID0ga2V5VmFsdWVQYWlyLmtleTtcbiAgICAgICAgICAgIGNvbnN0IHZhbHVlID0ga2V5VmFsdWVQYWlyLnZhbHVlO1xuICAgICAgICAgICAgY29uc3QgaXNOYW1lU3BhY2VkS2V5ID0gbmFtZXNwYWNlICYmIG5hbWVzcGFjZS5sZW5ndGggPiAwICYmIGtleS5zdGFydHNXaXRoKG5hbWVzcGFjZSk7XG4gICAgICAgICAgICBpZiAobGVnYWN5S2V5cy5pbmNsdWRlcyhrZXkpIHx8IGlzTmFtZVNwYWNlZEtleSkge1xuICAgICAgICAgICAgICAgIGNvbnRpbnVlO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgaWYgKCFpc051bGxPclVuZGVmaW5lZCh2YWx1ZSkpIHtcbiAgICAgICAgICAgICAgICAvKipcbiAgICAgICAgICAgICAgICAgKiBSYXcgdmFsdWVzIHNob3VsZCBhbHdheXMgaGF2ZSBiZWVuIGpzb24gc3RyaW5naWZpZWQuXG4gICAgICAgICAgICAgICAgICogTmV3IHZhbHVlcyBzaG91bGQgYWx3YXlzIGJlIG9iamVjdHMvcGFyc2VkLlxuICAgICAgICAgICAgICAgICAqL1xuICAgICAgICAgICAgICAgIGNvbnN0IG5ld1ZhbHVlID0gdHJ5SnNvblBhcnNlKHZhbHVlKTtcbiAgICAgICAgICAgICAgICBhd2FpdCB0aGlzLnNlcnZpY2VzLnN0b3JhZ2VTZXJ2aWNlLnNldFZhbHVlKGtleSwgbmV3VmFsdWUpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfVxuICAgIC8qKlxuICAgICAqIEFsbCBwbGF0Zm9ybXNcbiAgICAgKiBEZWxldGVzIGFsbCBTdG9yYWdlS2V5IGFuZCBMZWdhY3lLZXlzIGZyb20gcm9vdCByYXcgc3RvcmFnZS5cbiAgICAgKiBAYWNjZXNzIHByaXZhdGVcbiAgICAgKi9cbiAgICBhc3luYyBkZWxldGVMZWdhY3lTdG9yYWdlVmFsdWVzKCkge1xuICAgICAgICBjb25zdCBtaXNjS2V5cyA9IFtcbiAgICAgICAgICAgICdtaycsXG4gICAgICAgICAgICAnYWsnLFxuICAgICAgICAgICAgJ2p3dCcsXG4gICAgICAgICAgICAnZXBoZW1lcmFsJyxcbiAgICAgICAgICAgICdjYWNoZWRUaGVtZXMnLFxuICAgICAgICBdO1xuICAgICAgICBjb25zdCBtYW5hZ2VkS2V5cyA9IFtcbiAgICAgICAgICAgIC4uLm9iamVjdFRvVmFsdWVBcnJheShTdG9yYWdlS2V5KSxcbiAgICAgICAgICAgIC4uLm9iamVjdFRvVmFsdWVBcnJheShMZWdhY3lLZXlzKSxcbiAgICAgICAgICAgIC4uLm1pc2NLZXlzXG4gICAgICAgIF07XG4gICAgICAgIGZvciAoY29uc3Qga2V5IG9mIG1hbmFnZWRLZXlzKSB7XG4gICAgICAgICAgICBhd2FpdCB0aGlzLnNlcnZpY2VzLmRldmljZUludGVyZmFjZS5yZW1vdmVSYXdTdG9yYWdlVmFsdWUoa2V5KTtcbiAgICAgICAgfVxuICAgIH1cbiAgICAvKipcbiAgICAgKiBBbGwgcGxhdGZvcm1zXG4gICAgICogTWlncmF0ZSBwcmV2aW91c2x5IHN0b3JlZCBzZXNzaW9uIHN0cmluZyB0b2tlbiBpbnRvIG9iamVjdFxuICAgICAqIEBhY2Nlc3MgcHJpdmF0ZVxuICAgICAqL1xuICAgIGFzeW5jIG1pZ3JhdGVTZXNzaW9uU3RvcmFnZSgpIHtcbiAgICAgICAgY29uc3QgTEVHQUNZX1NFU1NJT05fVE9LRU5fS0VZID0gJ2p3dCc7XG4gICAgICAgIGNvbnN0IGN1cnJlbnRUb2tlbiA9IGF3YWl0IHRoaXMuc2VydmljZXMuc3RvcmFnZVNlcnZpY2UuZ2V0VmFsdWUoTEVHQUNZX1NFU1NJT05fVE9LRU5fS0VZKTtcbiAgICAgICAgaWYgKCFjdXJyZW50VG9rZW4pIHtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuICAgICAgICBjb25zdCBzZXNzaW9uID0gbmV3IFNlc3Npb24oY3VycmVudFRva2VuKTtcbiAgICAgICAgYXdhaXQgdGhpcy5zZXJ2aWNlcy5zdG9yYWdlU2VydmljZS5zZXRWYWx1ZShTdG9yYWdlS2V5LlNlc3Npb24sIHNlc3Npb24pO1xuICAgIH1cbiAgICAvKipcbiAgICAgKiBBbGwgcGxhdGZvcm1zXG4gICAgICogQ3JlYXRlIG5ldyBkZWZhdWx0IFNOSXRlbXNLZXkgZnJvbSByb290IGtleS5cbiAgICAgKiBPdGhlcndpc2UsIHdoZW4gZGF0YSBpcyBsb2FkZWQsIHdlIHdvbid0IGJlIGFibGUgdG8gZGVjcnlwdCBpdFxuICAgICAqIHdpdGhvdXQgZXhpc3RlbmNlIG9mIGFuIGl0ZW0ga2V5LiBUaGlzIHdpbGwgbWVhbiB0aGF0IGlmIHRoaXMgbWlncmF0aW9uXG4gICAgICogaXMgcnVuIG9uIHR3byBkaWZmZXJlbnQgcGxhdGZvcm1zIGZvciB0aGUgc2FtZSB1c2VyLCB0aGV5IHdpbGwgY3JlYXRlXG4gICAgICogdHdvIG5ldyBpdGVtcyBrZXlzLiBXaGljaCBvbmUgdGhleSB1c2UgdG8gZGVjcnlwdCBwYXN0IGl0ZW1zIGFuZCBlbmNyeXB0XG4gICAgICogZnV0dXJlIGl0ZW1zIGRvZXNuJ3QgcmVhbGx5IG1hdHRlci5cbiAgICAgKiBAYWNjZXNzIHByaXZhdGVcbiAgICAgKi9cbiAgICBhc3luYyBjcmVhdGVEZWZhdWx0SXRlbXNLZXlGb3JBbGxQbGF0Zm9ybXMoKSB7XG4gICAgICAgIGNvbnN0IHJvb3RLZXkgPSBhd2FpdCB0aGlzLnNlcnZpY2VzLnByb3RvY29sU2VydmljZS5nZXRSb290S2V5KCk7XG4gICAgICAgIGlmIChyb290S2V5KSB7XG4gICAgICAgICAgICBjb25zdCByb290S2V5UGFyYW1zID0gYXdhaXQgdGhpcy5zZXJ2aWNlcy5wcm90b2NvbFNlcnZpY2UuZ2V0Um9vdEtleVBhcmFtcygpO1xuICAgICAgICAgICAgY29uc3QgcGF5bG9hZCA9IENyZWF0ZU1heFBheWxvYWRGcm9tQW55T2JqZWN0KHtcbiAgICAgICAgICAgICAgICB1dWlkOiBhd2FpdCBVdWlkLkdlbmVyYXRlVXVpZCgpLFxuICAgICAgICAgICAgICAgIGNvbnRlbnRfdHlwZTogQ29udGVudFR5cGUuSXRlbXNLZXksXG4gICAgICAgICAgICAgICAgY29udGVudDogRmlsbEl0ZW1Db250ZW50KHtcbiAgICAgICAgICAgICAgICAgICAgaXRlbXNLZXk6IHJvb3RLZXkubWFzdGVyS2V5LFxuICAgICAgICAgICAgICAgICAgICBkYXRhQXV0aGVudGljYXRpb25LZXk6IHJvb3RLZXkuZGF0YUF1dGhlbnRpY2F0aW9uS2V5LFxuICAgICAgICAgICAgICAgICAgICB2ZXJzaW9uOiByb290S2V5UGFyYW1zLnZlcnNpb25cbiAgICAgICAgICAgICAgICB9KSxcbiAgICAgICAgICAgICAgICBkaXJ0eTogdHJ1ZSxcbiAgICAgICAgICAgICAgICBkaXJ0aWVkRGF0ZTogbmV3IERhdGUoKVxuICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICBjb25zdCBpdGVtc0tleSA9IENyZWF0ZUl0ZW1Gcm9tUGF5bG9hZChwYXlsb2FkKTtcbiAgICAgICAgICAgIGF3YWl0IHRoaXMuc2VydmljZXMuaXRlbU1hbmFnZXIuZW1pdEl0ZW1Gcm9tUGF5bG9hZChpdGVtc0tleS5wYXlsb2FkUmVwcmVzZW50YXRpb24oKSwgUGF5bG9hZFNvdXJjZS5Mb2NhbENoYW5nZWQpO1xuICAgICAgICB9XG4gICAgfVxufVxuIl0sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQU5BO0FBUUE7QUFBQTtBQUNBO0FBREE7QUFBQTtBQUNBO0FBREE7QUFBQTtBQUNBO0FBREE7QUFBQTtBQUFBO0FBSUE7QUFDQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUNBO0FBREE7QUFDQTtBQURBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFDQTtBQURBO0FBQ0E7QUFEQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQVFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQ0E7QUFEQTtBQUFBO0FBQUE7QUFDQTtBQURBO0FBQUE7QUFBQTtBQUNBO0FBREE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFLQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUNBO0FBREE7QUFFQTtBQUNBO0FBSEE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFJQTtBQUNBOzs7Ozs7Ozs7OztBQXZCQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQ0E7QUFEQTtBQUNBO0FBREE7QUFBQTtBQUFBO0FBQUE7QUFrQ0E7QUFDQTtBQW5DQTtBQUFBO0FBQ0E7QUFEQTtBQXdDQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQTdDQTtBQUFBO0FBQ0E7QUFEQTtBQTZDQTtBQUNBO0FBOUNBO0FBQUE7QUFBQTtBQUFBO0FBQ0E7QUE4Q0E7QUEvQ0E7QUFBQTtBQUNBO0FBREE7QUFnREE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFFQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBN0RBO0FBQUE7QUFBQTtBQUFBO0FBQ0E7QUFEQTtBQUFBO0FBQ0E7QUFEQTtBQUFBO0FBOERBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFqRUE7QUFBQTtBQUFBO0FBQ0E7QUFEQTtBQW1FQTtBQW5FQTtBQUFBO0FBQ0E7QUFEQTtBQUFBO0FBQUE7QUFDQTtBQURBO0FBeUVBO0FBQ0E7QUExRUE7QUFBQTtBQUFBO0FBQ0E7QUFEQTtBQUFBO0FBQUE7QUFBQTtBQUNBO0FBREE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQThFQTtBQUNBO0FBQ0E7QUFDQTtBQWpGQTtBQUFBO0FBQUE7QUFDQTtBQURBO0FBNkVBO0FBN0VBO0FBQUE7QUFDQTtBQURBO0FBQUE7QUFBQTtBQUNBO0FBREE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFDQTtBQURBO0FBQUE7QUFBQTtBQUNBO0FBREE7QUFBQTtBQXdGQTs7Ozs7QUF4RkE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBNkZBO0FBQ0E7QUE5RkE7QUFBQTtBQUNBO0FBREE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFDQTtBQURBO0FBQUE7QUFBQTtBQUNBO0FBREE7QUFBQTtBQWlHQTs7Ozs7QUFqR0E7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUNBO0FBREE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQ0E7QUFEQTtBQXNHQTtBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBRUE7QUFDQTtBQTlHQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQ0E7QUFEQTtBQUFBO0FBQ0E7QUFEQTtBQUFBO0FBQUE7QUErR0E7QUFFQTtBQWpIQTtBQUFBO0FBQ0E7QUFEQTtBQWtIQTtBQWxIQTtBQUFBO0FBQ0E7QUFEQTtBQW1IQTtBQUNBO0FBQ0E7QUFySEE7QUFBQTtBQUNBO0FBREE7QUFBQTtBQXdIQTtBQUNBO0FBQ0E7QUFIQTtBQUNBO0FBeEhBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQ0E7QUFEQTtBQUFBO0FBQUE7QUFDQTtBQURBO0FBQUE7QUE2SEE7Ozs7O0FBN0hBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFDQTtBQURBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFrSUE7QUFsSUE7QUFBQTtBQXNJQTtBQUNBO0FBQ0E7QUFDQTtBQUpBO0FBQ0E7QUF0SUE7QUFxSUE7QUFNQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBL0lBO0FBQUE7QUFBQTtBQUFBO0FBQ0E7QUFEQTtBQUFBO0FBQ0E7QUFEQTtBQWtKQTtBQUNBO0FBbkpBO0FBQUE7QUFzSkE7QUFDQTtBQUZBO0FBQ0E7QUF0SkE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFDQTtBQURBO0FBQUE7QUFBQTtBQUNBO0FBREE7QUFBQTtBQTBKQTs7Ozs7O0FBMUpBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFrS0E7QUFDQTtBQUZBO0FBQ0E7QUFsS0E7QUFnS0E7QUFoS0E7QUFDQTtBQURBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQ0E7QUFEQTtBQUFBO0FBQUE7QUFDQTtBQURBO0FBQUE7QUF1S0E7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBdktBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQ0E7QUFEQTtBQUNBO0FBREE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQ0E7QUFEQTtBQTJMQTtBQTNMQTtBQUFBO0FBQ0E7QUFEQTtBQTRMQTtBQTVMQTtBQUFBO0FBQ0E7QUFEQTtBQTZMQTtBQUNBO0FBOUxBO0FBQUE7QUFDQTtBQURBO0FBdU1BO0FBQ0E7QUF4TUE7QUFBQTtBQUFBO0FBQUE7QUFDQTtBQXdNQTtBQUNBO0FBQUE7QUExTUE7QUEwTUE7QUFDQTtBQURBO0FBQUE7QUFBQTtBQUFBO0FBQ0E7QUFDQTtBQUVBO0FBQ0E7QUFMQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQ0E7QUFEQTtBQUFBO0FBQ0E7QUFEQTtBQUFBO0FBQUE7QUFNQTtBQUVBO0FBUkE7QUFBQTtBQUNBO0FBREE7QUFTQTtBQUNBO0FBQUE7QUFDQTtBQVhBO0FBQUE7QUFDQTtBQURBO0FBQUE7QUFDQTtBQURBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQ0E7QUEzTUE7QUFBQTtBQUFBO0FBQUE7QUFDQTtBQXVOQTtBQUNBO0FBQ0E7QUExTkE7QUFBQTtBQUFBO0FBQUE7QUFDQTtBQURBO0FBQUE7QUFDQTtBQURBO0FBZ09BO0FBaE9BO0FBQUE7QUFDQTtBQURBO0FBaU9BO0FBQ0E7QUFDQTtBQUdBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBTEE7QUFEQTtBQXRPQTtBQUFBO0FBQ0E7QUFEQTtBQStPQTtBQUNBO0FBaFBBO0FBQUE7QUFDQTtBQURBO0FBQUE7QUFBQTtBQUNBO0FBREE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUNBO0FBREE7QUFBQTtBQUNBO0FBREE7QUFxUEE7QUFyUEE7QUFBQTtBQUFBO0FBQ0E7QUFEQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBdVBBO0FBQ0E7QUFDQTtBQXpQQTtBQXNQQTtBQXRQQTtBQUFBO0FBQ0E7QUFEQTtBQTRQQTtBQUNBO0FBN1BBO0FBQUE7QUFDQTtBQURBO0FBQUE7QUFBQTtBQUNBO0FBREE7QUFrUUE7QUFDQTtBQUNBO0FBcFFBO0FBQUE7QUFBQTtBQUFBO0FBQ0E7QUFvUUE7QUFyUUE7QUFBQTtBQXlRQTtBQUNBO0FBQ0E7QUFDQTtBQUpBO0FBQ0E7QUF6UUE7QUF3UUE7QUF4UUE7QUFBQTtBQUNBO0FBREE7QUFBQTtBQUFBO0FBQ0E7QUFEQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUNBO0FBREE7QUFBQTtBQUFBO0FBQ0E7QUFEQTtBQUFBO0FBb1JBOzs7Ozs7O0FBcFJBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFDQTtBQURBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUNBO0FBREE7QUEyUkE7QUFFQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBdFNBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFDQTtBQURBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFDQTtBQXNTQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBM1NBO0FBQUE7QUFBQTtBQUFBO0FBQ0E7QUFEQTtBQUNBO0FBREE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUNBO0FBOFNBOzs7O0FBSUE7QUFuVEE7QUFBQTtBQUNBO0FBREE7QUFBQTtBQUFBO0FBQUE7QUFDQTtBQURBO0FBQUE7QUFBQTtBQUNBO0FBREE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUNBO0FBREE7QUFBQTtBQUFBO0FBQ0E7QUFEQTtBQUFBO0FBQUE7QUFDQTtBQURBO0FBQUE7QUFDQTtBQURBO0FBQUE7QUFBQTtBQUFBO0FBQ0E7QUFEQTtBQUNBO0FBREE7QUFBQTtBQUNBO0FBREE7QUFBQTtBQUNBO0FBREE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFDQTtBQURBO0FBQUE7QUFBQTtBQUNBO0FBREE7QUFBQTtBQXdUQTs7Ozs7O0FBeFRBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFDQTtBQURBO0FBQUE7QUFBQTtBQUFBO0FBOFRBO0FBT0E7QUFyVUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUNBO0FBREE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUNBO0FBeVVBO0FBMVVBO0FBQUE7QUFDQTtBQURBO0FBQUE7QUFBQTtBQUFBO0FBQ0E7QUFEQTtBQUFBO0FBQUE7QUFDQTtBQURBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFDQTtBQURBO0FBQUE7QUFBQTtBQUNBO0FBREE7QUFBQTtBQUFBO0FBQ0E7QUFEQTtBQUFBO0FBQ0E7QUFEQTtBQUFBO0FBQUE7QUFBQTtBQUNBO0FBREE7QUFDQTtBQURBO0FBQUE7QUFDQTtBQURBO0FBQUE7QUFDQTtBQURBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQ0E7QUFEQTtBQUFBO0FBQUE7QUFDQTtBQURBO0FBQUE7QUE4VUE7Ozs7OztBQTlVQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFvVkE7QUFwVkE7QUFBQTtBQUNBO0FBREE7QUFxVkE7QUFDQTtBQXRWQTtBQUFBO0FBQUE7QUFBQTtBQUNBO0FBREE7QUFDQTtBQURBO0FBeVZBO0FBelZBO0FBQUE7QUFDQTtBQURBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQ0E7QUFEQTtBQUFBO0FBQUE7QUFDQTtBQURBO0FBQUE7QUE0VkE7Ozs7Ozs7Ozs7O0FBNVZBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFDQTtBQURBO0FBdVdBO0FBQ0E7QUF4V0E7QUFBQTtBQUFBO0FBQUE7QUFDQTtBQURBO0FBQUE7QUFDQTtBQURBO0FBeVdBO0FBeldBO0FBQUE7QUFBQTtBQUNBO0FBREE7QUFBQTtBQUFBO0FBQUE7QUE4V0E7QUFDQTtBQUNBO0FBSEE7QUE3V0E7QUFBQTtBQTJXQTtBQUNBO0FBQ0E7QUFLQTtBQUNBO0FBblhBO0FBMFdBO0FBV0E7QUFyWEE7QUFBQTtBQUNBO0FBREE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFDQTtBQURBO0FBQUE7QUFBQTtBQUNBO0FBREE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUVBO0FBQ0E7QUFIQTtBQUNBO0FBREE7QUFBQSIsInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./lib/migrations/2020-01-15.ts\n')},"./lib/migrations/index.ts":
|
||
/*!*********************************!*\
|
||
!*** ./lib/migrations/index.ts ***!
|
||
\*********************************/
|
||
/*! exports provided: Migration20200115 */function(module,__webpack_exports__,__webpack_require__){"use strict";eval('__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _2020_01_15__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./2020-01-15 */ "./lib/migrations/2020-01-15.ts");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "Migration20200115", function() { return _2020_01_15__WEBPACK_IMPORTED_MODULE_0__["Migration20200115"]; });\n\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9saWIvbWlncmF0aW9ucy9pbmRleC50cy5qcyIsInNvdXJjZXMiOlsid2VicGFjazovL1NOTGlicmFyeS8uL2xpYi9taWdyYXRpb25zL2luZGV4LnRzP2E4YTQiXSwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0IHsgTWlncmF0aW9uMjAyMDAxMTUgfSBmcm9tICcuLzIwMjAtMDEtMTUnO1xuIl0sIm1hcHBpbmdzIjoiQUFBQTtBQUFBO0FBQUE7QUFBQTsiLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./lib/migrations/index.ts\n')},"./lib/migrations/migration.ts":
|
||
/*!*************************************!*\
|
||
!*** ./lib/migrations/migration.ts ***!
|
||
\*************************************/
|
||
/*! exports provided: Migration */function(module,__webpack_exports__,__webpack_require__){"use strict";eval('__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "Migration", function() { return Migration; });\n/* harmony import */ var _babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @babel/runtime/regenerator */ "./node_modules/@babel/runtime/regenerator/index.js");\n/* harmony import */ var _babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0__);\n\n\nfunction asyncGeneratorStep(gen, resolve, reject, _next, _throw, key, arg) { try { var info = gen[key](arg); var value = info.value; } catch (error) { reject(error); return; } if (info.done) { resolve(value); } else { Promise.resolve(value).then(_next, _throw); } }\n\nfunction _asyncToGenerator(fn) { return function () { var self = this, args = arguments; return new Promise(function (resolve, reject) { var gen = fn.apply(self, args); function _next(value) { asyncGeneratorStep(gen, resolve, reject, _next, _throw, "next", value); } function _throw(err) { asyncGeneratorStep(gen, resolve, reject, _next, _throw, "throw", err); } _next(undefined); }); }; }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } }\n\nfunction _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); } }\n\nfunction _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; }\n\nvar Migration = /*#__PURE__*/function () {\n function Migration(services) {\n _classCallCheck(this, Migration);\n\n this.services = services;\n this.stageHandlers = {};\n this.registerStageHandlers();\n }\n\n _createClass(Migration, [{\n key: "registerStageHandler",\n value: function registerStageHandler(stage, handler) {\n this.stageHandlers[stage] = handler;\n }\n }, {\n key: "markDone",\n value: function markDone() {\n var _this$onDoneHandler;\n\n (_this$onDoneHandler = this.onDoneHandler) === null || _this$onDoneHandler === void 0 ? void 0 : _this$onDoneHandler.call(this);\n this.onDoneHandler = undefined;\n }\n }, {\n key: "onDone",\n value: function onDone(callback) {\n this.onDoneHandler = callback;\n }\n }, {\n key: "handleStage",\n value: function () {\n var _handleStage = _asyncToGenerator( /*#__PURE__*/_babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0___default.a.mark(function _callee(stage) {\n var handler;\n return _babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0___default.a.wrap(function _callee$(_context) {\n while (1) {\n switch (_context.prev = _context.next) {\n case 0:\n handler = this.stageHandlers[stage];\n\n if (!handler) {\n _context.next = 4;\n break;\n }\n\n _context.next = 4;\n return handler();\n\n case 4:\n case "end":\n return _context.stop();\n }\n }\n }, _callee, this);\n }));\n\n function handleStage(_x) {\n return _handleStage.apply(this, arguments);\n }\n\n return handleStage;\n }()\n }], [{\n key: "timestamp",\n value: function timestamp() {\n throw \'Must override\';\n }\n }]);\n\n return Migration;\n}();//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9saWIvbWlncmF0aW9ucy9taWdyYXRpb24udHMuanMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly9TTkxpYnJhcnkvLi9saWIvbWlncmF0aW9ucy9taWdyYXRpb24udHM/YjExZCJdLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgY2xhc3MgTWlncmF0aW9uIHtcbiAgICBjb25zdHJ1Y3RvcihzZXJ2aWNlcykge1xuICAgICAgICB0aGlzLnNlcnZpY2VzID0gc2VydmljZXM7XG4gICAgICAgIHRoaXMuc3RhZ2VIYW5kbGVycyA9IHt9O1xuICAgICAgICB0aGlzLnJlZ2lzdGVyU3RhZ2VIYW5kbGVycygpO1xuICAgIH1cbiAgICBzdGF0aWMgdGltZXN0YW1wKCkge1xuICAgICAgICB0aHJvdyAnTXVzdCBvdmVycmlkZSc7XG4gICAgfVxuICAgIHJlZ2lzdGVyU3RhZ2VIYW5kbGVyKHN0YWdlLCBoYW5kbGVyKSB7XG4gICAgICAgIHRoaXMuc3RhZ2VIYW5kbGVyc1tzdGFnZV0gPSBoYW5kbGVyO1xuICAgIH1cbiAgICBtYXJrRG9uZSgpIHtcbiAgICAgICAgdGhpcy5vbkRvbmVIYW5kbGVyPy4oKTtcbiAgICAgICAgdGhpcy5vbkRvbmVIYW5kbGVyID0gdW5kZWZpbmVkO1xuICAgIH1cbiAgICBvbkRvbmUoY2FsbGJhY2spIHtcbiAgICAgICAgdGhpcy5vbkRvbmVIYW5kbGVyID0gY2FsbGJhY2s7XG4gICAgfVxuICAgIGFzeW5jIGhhbmRsZVN0YWdlKHN0YWdlKSB7XG4gICAgICAgIGNvbnN0IGhhbmRsZXIgPSB0aGlzLnN0YWdlSGFuZGxlcnNbc3RhZ2VdO1xuICAgICAgICBpZiAoaGFuZGxlcikge1xuICAgICAgICAgICAgYXdhaXQgaGFuZGxlcigpO1xuICAgICAgICB9XG4gICAgfVxufVxuIl0sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7O0FBQUE7QUFDQTtBQUFBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBTkE7QUFBQTtBQUFBO0FBVUE7QUFDQTtBQVhBO0FBQUE7QUFBQTtBQVlBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFmQTtBQUFBO0FBQUE7QUFpQkE7QUFDQTtBQWxCQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFvQkE7QUFDQTtBQXJCQTtBQUFBO0FBQUE7QUFBQTtBQUNBO0FBREE7QUFBQTtBQUNBO0FBREE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFDQTtBQURBO0FBQUE7QUFBQTtBQUNBO0FBREE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQU9BO0FBQ0E7QUFSQTtBQUNBO0FBREE7QUFBQSIsInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./lib/migrations/migration.ts\n')},"./lib/models/app/action.ts":
|
||
/*!**********************************!*\
|
||
!*** ./lib/models/app/action.ts ***!
|
||
\**********************************/
|
||
/*! exports provided: Action */function(module,__webpack_exports__,__webpack_require__){"use strict";eval('__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "Action", function() { return Action; });\n/* harmony import */ var lodash_merge__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! lodash/merge */ "./node_modules/lodash/merge.js");\n/* harmony import */ var lodash_merge__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(lodash_merge__WEBPACK_IMPORTED_MODULE_0__);\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } }\n\n\n/**\n * An in-memory only construct for displaying a list of actions, as part of SNActionsExtension.\n */\n\nvar Action = function Action(json) {\n _classCallCheck(this, Action);\n\n lodash_merge__WEBPACK_IMPORTED_MODULE_0___default()(this, json);\n this.running = false;\n this.error = false;\n\n if (this.lastExecuted) {\n this.lastExecuted = new Date(this.lastExecuted);\n }\n};//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9saWIvbW9kZWxzL2FwcC9hY3Rpb24udHMuanMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly9TTkxpYnJhcnkvLi9saWIvbW9kZWxzL2FwcC9hY3Rpb24udHM/MzIxMCJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgbWVyZ2UgZnJvbSAnbG9kYXNoL21lcmdlJztcbi8qKlxuICogQW4gaW4tbWVtb3J5IG9ubHkgY29uc3RydWN0IGZvciBkaXNwbGF5aW5nIGEgbGlzdCBvZiBhY3Rpb25zLCBhcyBwYXJ0IG9mIFNOQWN0aW9uc0V4dGVuc2lvbi5cbiAqL1xuZXhwb3J0IGNsYXNzIEFjdGlvbiB7XG4gICAgY29uc3RydWN0b3IoanNvbikge1xuICAgICAgICBtZXJnZSh0aGlzLCBqc29uKTtcbiAgICAgICAgdGhpcy5ydW5uaW5nID0gZmFsc2U7XG4gICAgICAgIHRoaXMuZXJyb3IgPSBmYWxzZTtcbiAgICAgICAgaWYgKHRoaXMubGFzdEV4ZWN1dGVkKSB7XG4gICAgICAgICAgICB0aGlzLmxhc3RFeGVjdXRlZCA9IG5ldyBEYXRlKHRoaXMubGFzdEV4ZWN1dGVkKTtcbiAgICAgICAgfVxuICAgIH1cbn1cbiJdLCJtYXBwaW5ncyI6Ijs7Ozs7O0FBQUE7QUFDQTs7OztBQUdBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0EiLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./lib/models/app/action.ts\n')},"./lib/models/app/component.ts":
|
||
/*!*************************************!*\
|
||
!*** ./lib/models/app/component.ts ***!
|
||
\*************************************/
|
||
/*! exports provided: ComponentArea, ComponentAction, SNComponent, ComponentMutator */function(module,__webpack_exports__,__webpack_require__){"use strict";eval('__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "ComponentArea", function() { return ComponentArea; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "ComponentAction", function() { return ComponentAction; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "SNComponent", function() { return SNComponent; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "ComponentMutator", function() { return ComponentMutator; });\n/* harmony import */ var _Protocol_payloads_deltas_strategies__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @Protocol/payloads/deltas/strategies */ "./lib/protocol/payloads/deltas/strategies.ts");\n/* harmony import */ var _Lib_utils__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! @Lib/utils */ "./lib/utils.ts");\n/* harmony import */ var _core_item__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./../core/item */ "./lib/models/core/item.ts");\n/* harmony import */ var _Models_content_types__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! @Models/content_types */ "./lib/models/content_types.ts");\nfunction _typeof(obj) { "@babel/helpers - typeof"; if (typeof Symbol === "function" && typeof Symbol.iterator === "symbol") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }; } return _typeof(obj); }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } }\n\nfunction _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); } }\n\nfunction _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; }\n\nfunction _possibleConstructorReturn(self, call) { if (call && (_typeof(call) === "object" || typeof call === "function")) { return call; } return _assertThisInitialized(self); }\n\nfunction _assertThisInitialized(self) { if (self === void 0) { throw new ReferenceError("this hasn\'t been initialised - super() hasn\'t been called"); } return self; }\n\nfunction _get(target, property, receiver) { if (typeof Reflect !== "undefined" && Reflect.get) { _get = Reflect.get; } else { _get = function _get(target, property, receiver) { var base = _superPropBase(target, property); if (!base) return; var desc = Object.getOwnPropertyDescriptor(base, property); if (desc.get) { return desc.get.call(receiver); } return desc.value; }; } return _get(target, property, receiver || target); }\n\nfunction _superPropBase(object, property) { while (!Object.prototype.hasOwnProperty.call(object, property)) { object = _getPrototypeOf(object); if (object === null) break; } return object; }\n\nfunction _getPrototypeOf(o) { _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function _getPrototypeOf(o) { return o.__proto__ || Object.getPrototypeOf(o); }; return _getPrototypeOf(o); }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== "function" && superClass !== null) { throw new TypeError("Super expression must either be null or a function"); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, writable: true, configurable: true } }); if (superClass) _setPrototypeOf(subClass, superClass); }\n\nfunction _setPrototypeOf(o, p) { _setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) { o.__proto__ = p; return o; }; return _setPrototypeOf(o, p); }\n\n\n\n\n\n\nvar ComponentArea;\n\n(function (ComponentArea) {\n ComponentArea["Editor"] = "editor-editor";\n ComponentArea["Themes"] = "themes";\n ComponentArea["TagsList"] = "tags-list";\n ComponentArea["EditorStack"] = "editor-stack";\n ComponentArea["NoteTags"] = "note-tags";\n ComponentArea["Rooms"] = "rooms";\n ComponentArea["Modal"] = "modal";\n ComponentArea["Any"] = "*";\n})(ComponentArea || (ComponentArea = {}));\n\n;\nvar ComponentAction;\n\n(function (ComponentAction) {\n ComponentAction["SetSize"] = "set-size";\n ComponentAction["StreamItems"] = "stream-items";\n ComponentAction["StreamContextItem"] = "stream-context-item";\n ComponentAction["SaveItems"] = "save-items";\n ComponentAction["SelectItem"] = "select-item";\n ComponentAction["AssociateItem"] = "associate-item";\n ComponentAction["DeassociateItem"] = "deassociate-item";\n ComponentAction["ClearSelection"] = "clear-selection";\n ComponentAction["CreateItem"] = "create-item";\n ComponentAction["CreateItems"] = "create-items";\n ComponentAction["DeleteItems"] = "delete-items";\n ComponentAction["SetComponentData"] = "set-component-data";\n ComponentAction["InstallLocalComponent"] = "install-local-component";\n ComponentAction["ToggleActivateComponent"] = "toggle-activate-component";\n ComponentAction["RequestPermissions"] = "request-permissions";\n ComponentAction["PresentConflictResolution"] = "present-conflict-resolution";\n ComponentAction["DuplicateItem"] = "duplicate-item";\n ComponentAction["ComponentRegistered"] = "component-registered";\n ComponentAction["ActivateThemes"] = "themes";\n ComponentAction["Reply"] = "reply";\n ComponentAction["SaveSuccess"] = "save-success";\n ComponentAction["SaveError"] = "save-error";\n})(ComponentAction || (ComponentAction = {}));\n\n;\n/**\n * Components are mostly iframe based extensions that communicate with the SN parent\n * via the postMessage API. However, a theme can also be a component, which is activated\n * only by its url.\n */\n\nvar SNComponent = /*#__PURE__*/function (_SNItem) {\n _inherits(SNComponent, _SNItem);\n\n function SNComponent(payload) {\n var _this;\n\n _classCallCheck(this, SNComponent);\n\n _this = _possibleConstructorReturn(this, _getPrototypeOf(SNComponent).call(this, payload));\n _this.permissions = [];\n /** Custom data that a component can store in itself */\n\n _this.componentData = _this.payload.safeContent.componentData || {};\n _this.legacy_url = _this.payload.safeContent.legacy_url;\n _this.hosted_url = _this.payload.safeContent.hosted_url || _this.payload.safeContent.url;\n _this.local_url = _this.payload.safeContent.local_url;\n _this.valid_until = new Date(_this.payload.safeContent.valid_until);\n _this.offlineOnly = _this.payload.safeContent.offlineOnly;\n _this.name = _this.payload.safeContent.name;\n _this.area = _this.payload.safeContent.area;\n _this.package_info = _this.payload.safeContent.package_info;\n _this.permissions = _this.payload.safeContent.permissions || [];\n _this.active = _this.payload.safeContent.active;\n _this.autoupdateDisabled = _this.payload.safeContent.autoupdateDisabled;\n _this.disassociatedItemIds = _this.payload.safeContent.disassociatedItemIds || [];\n _this.associatedItemIds = _this.payload.safeContent.associatedItemIds || [];\n _this.isMobileDefault = _this.payload.safeContent.isMobileDefault;\n /**\n * @legacy\n * We don\'t want to set the url directly, as we\'d like to phase it out.\n * If the content.url exists, we\'ll transfer it to legacy_url. We\'ll only\n * need to set this if content.hosted_url is blank, otherwise,\n * hosted_url is the url replacement.\n */\n\n _this.legacy_url = !_this.payload.safeContent.hosted_url ? _this.payload.safeContent.url : undefined;\n return _this;\n }\n /** Do not duplicate components under most circumstances. Always keep original */\n\n\n _createClass(SNComponent, [{\n key: "strategyWhenConflictingWithItem",\n value: function strategyWhenConflictingWithItem(item) {\n if (this.errorDecrypting) {\n return _get(_getPrototypeOf(SNComponent.prototype), "strategyWhenConflictingWithItem", this).call(this, item);\n }\n\n return _Protocol_payloads_deltas_strategies__WEBPACK_IMPORTED_MODULE_0__["ConflictStrategy"].KeepLeft;\n }\n }, {\n key: "isEditor",\n value: function isEditor() {\n return this.area === ComponentArea.Editor;\n }\n }, {\n key: "isTheme",\n value: function isTheme() {\n return this.content_type === _Models_content_types__WEBPACK_IMPORTED_MODULE_3__["ContentType"].Theme || this.area === ComponentArea.Themes;\n }\n }, {\n key: "isDefaultEditor",\n value: function isDefaultEditor() {\n return this.getAppDomainValue(_core_item__WEBPACK_IMPORTED_MODULE_2__["AppDataField"].DefaultEditor) === true;\n }\n }, {\n key: "getLastSize",\n value: function getLastSize() {\n return this.getAppDomainValue(_core_item__WEBPACK_IMPORTED_MODULE_2__["AppDataField"].LastSize);\n }\n }, {\n key: "acceptsThemes",\n value: function acceptsThemes() {\n var _this$payload$safeCon;\n\n return (_this$payload$safeCon = this.payload.safeContent.package_info) === null || _this$payload$safeCon === void 0 ? void 0 : _this$payload$safeCon.acceptsThemes;\n }\n /**\n * The key used to look up data that this component may have saved to an item.\n * This data will be stored on the item using this key.\n */\n\n }, {\n key: "getClientDataKey",\n value: function getClientDataKey() {\n if (this.legacy_url) {\n return this.legacy_url;\n } else {\n return this.uuid;\n }\n }\n }, {\n key: "hasValidHostedUrl",\n value: function hasValidHostedUrl() {\n return this.hosted_url || this.legacy_url;\n }\n }, {\n key: "contentKeysToIgnoreWhenCheckingEquality",\n value: function contentKeysToIgnoreWhenCheckingEquality() {\n return [\'active\', \'disassociatedItemIds\', \'associatedItemIds\'].concat(_get(_getPrototypeOf(SNComponent.prototype), "contentKeysToIgnoreWhenCheckingEquality", this).call(this));\n }\n /**\n * An associative component depends on being explicitly activated for a\n * given item, compared to a dissaciative component, which is enabled by\n * default in areas unrelated to a certain item.\n */\n\n }, {\n key: "isAssociative",\n value: function isAssociative() {\n return SNComponent.associativeAreas().includes(this.area);\n }\n }, {\n key: "isExplicitlyEnabledForItem",\n value: function isExplicitlyEnabledForItem(uuid) {\n return this.associatedItemIds.indexOf(uuid) !== -1;\n }\n }, {\n key: "isExplicitlyDisabledForItem",\n value: function isExplicitlyDisabledForItem(uuid) {\n return this.disassociatedItemIds.indexOf(uuid) !== -1;\n }\n }], [{\n key: "associativeAreas",\n value: function associativeAreas() {\n return [ComponentArea.Editor];\n }\n }]);\n\n return SNComponent;\n}(_core_item__WEBPACK_IMPORTED_MODULE_2__["SNItem"]);\nvar ComponentMutator = /*#__PURE__*/function (_ItemMutator) {\n _inherits(ComponentMutator, _ItemMutator);\n\n function ComponentMutator() {\n _classCallCheck(this, ComponentMutator);\n\n return _possibleConstructorReturn(this, _getPrototypeOf(ComponentMutator).apply(this, arguments));\n }\n\n _createClass(ComponentMutator, [{\n key: "associateWithItem",\n value: function associateWithItem(uuid) {\n var associated = this.typedContent.associatedItemIds || [];\n Object(_Lib_utils__WEBPACK_IMPORTED_MODULE_1__["addIfUnique"])(associated, uuid);\n this.typedContent.associatedItemIds = associated;\n }\n }, {\n key: "disassociateWithItem",\n value: function disassociateWithItem(uuid) {\n var disassociated = this.typedContent.disassociatedItemIds || [];\n Object(_Lib_utils__WEBPACK_IMPORTED_MODULE_1__["addIfUnique"])(disassociated, uuid);\n this.typedContent.disassociatedItemIds = disassociated;\n }\n }, {\n key: "removeAssociatedItemId",\n value: function removeAssociatedItemId(uuid) {\n Object(_Lib_utils__WEBPACK_IMPORTED_MODULE_1__["removeFromArray"])(this.typedContent.associatedItemIds || [], uuid);\n }\n }, {\n key: "removeDisassociatedItemId",\n value: function removeDisassociatedItemId(uuid) {\n Object(_Lib_utils__WEBPACK_IMPORTED_MODULE_1__["removeFromArray"])(this.typedContent.disassociatedItemIds || [], uuid);\n }\n }, {\n key: "setLastSize",\n value: function setLastSize(size) {\n this.setAppDataItem(_core_item__WEBPACK_IMPORTED_MODULE_2__["AppDataField"].LastSize, size);\n }\n }, {\n key: "typedContent",\n get: function get() {\n return this.content;\n }\n }, {\n key: "active",\n set: function set(active) {\n this.typedContent.active = active;\n }\n }, {\n key: "defaultEditor",\n set: function set(defaultEditor) {\n this.setAppDataItem(_core_item__WEBPACK_IMPORTED_MODULE_2__["AppDataField"].DefaultEditor, defaultEditor);\n }\n }, {\n key: "componentData",\n set: function set(componentData) {\n this.typedContent.componentData = componentData;\n }\n }, {\n key: "package_info",\n set: function set(package_info) {\n this.typedContent.package_info = package_info;\n }\n }, {\n key: "local_url",\n set: function set(local_url) {\n this.typedContent.local_url = local_url;\n }\n }, {\n key: "hosted_url",\n set: function set(hosted_url) {\n this.typedContent.hosted_url = hosted_url;\n }\n }, {\n key: "permissions",\n set: function set(permissions) {\n this.typedContent.permissions = permissions;\n }\n }]);\n\n return ComponentMutator;\n}(_core_item__WEBPACK_IMPORTED_MODULE_2__["ItemMutator"]);//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9saWIvbW9kZWxzL2FwcC9jb21wb25lbnQudHMuanMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly9TTkxpYnJhcnkvLi9saWIvbW9kZWxzL2FwcC9jb21wb25lbnQudHM/NzBkOCJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb25mbGljdFN0cmF0ZWd5IH0gZnJvbSAnQFByb3RvY29sL3BheWxvYWRzL2RlbHRhcy9zdHJhdGVnaWVzJztcbmltcG9ydCB7IGFkZElmVW5pcXVlLCByZW1vdmVGcm9tQXJyYXkgfSBmcm9tICdATGliL3V0aWxzJztcbmltcG9ydCB7IEFwcERhdGFGaWVsZCB9IGZyb20gJy4vLi4vY29yZS9pdGVtJztcbmltcG9ydCB7IFNOSXRlbSwgSXRlbU11dGF0b3IgfSBmcm9tICdATW9kZWxzL2NvcmUvaXRlbSc7XG5pbXBvcnQgeyBDb250ZW50VHlwZSB9IGZyb20gJ0BNb2RlbHMvY29udGVudF90eXBlcyc7XG5leHBvcnQgdmFyIENvbXBvbmVudEFyZWE7XG4oZnVuY3Rpb24gKENvbXBvbmVudEFyZWEpIHtcbiAgICBDb21wb25lbnRBcmVhW1wiRWRpdG9yXCJdID0gXCJlZGl0b3ItZWRpdG9yXCI7XG4gICAgQ29tcG9uZW50QXJlYVtcIlRoZW1lc1wiXSA9IFwidGhlbWVzXCI7XG4gICAgQ29tcG9uZW50QXJlYVtcIlRhZ3NMaXN0XCJdID0gXCJ0YWdzLWxpc3RcIjtcbiAgICBDb21wb25lbnRBcmVhW1wiRWRpdG9yU3RhY2tcIl0gPSBcImVkaXRvci1zdGFja1wiO1xuICAgIENvbXBvbmVudEFyZWFbXCJOb3RlVGFnc1wiXSA9IFwibm90ZS10YWdzXCI7XG4gICAgQ29tcG9uZW50QXJlYVtcIlJvb21zXCJdID0gXCJyb29tc1wiO1xuICAgIENvbXBvbmVudEFyZWFbXCJNb2RhbFwiXSA9IFwibW9kYWxcIjtcbiAgICBDb21wb25lbnRBcmVhW1wiQW55XCJdID0gXCIqXCI7XG59KShDb21wb25lbnRBcmVhIHx8IChDb21wb25lbnRBcmVhID0ge30pKTtcbjtcbmV4cG9ydCB2YXIgQ29tcG9uZW50QWN0aW9uO1xuKGZ1bmN0aW9uIChDb21wb25lbnRBY3Rpb24pIHtcbiAgICBDb21wb25lbnRBY3Rpb25bXCJTZXRTaXplXCJdID0gXCJzZXQtc2l6ZVwiO1xuICAgIENvbXBvbmVudEFjdGlvbltcIlN0cmVhbUl0ZW1zXCJdID0gXCJzdHJlYW0taXRlbXNcIjtcbiAgICBDb21wb25lbnRBY3Rpb25bXCJTdHJlYW1Db250ZXh0SXRlbVwiXSA9IFwic3RyZWFtLWNvbnRleHQtaXRlbVwiO1xuICAgIENvbXBvbmVudEFjdGlvbltcIlNhdmVJdGVtc1wiXSA9IFwic2F2ZS1pdGVtc1wiO1xuICAgIENvbXBvbmVudEFjdGlvbltcIlNlbGVjdEl0ZW1cIl0gPSBcInNlbGVjdC1pdGVtXCI7XG4gICAgQ29tcG9uZW50QWN0aW9uW1wiQXNzb2NpYXRlSXRlbVwiXSA9IFwiYXNzb2NpYXRlLWl0ZW1cIjtcbiAgICBDb21wb25lbnRBY3Rpb25bXCJEZWFzc29jaWF0ZUl0ZW1cIl0gPSBcImRlYXNzb2NpYXRlLWl0ZW1cIjtcbiAgICBDb21wb25lbnRBY3Rpb25bXCJDbGVhclNlbGVjdGlvblwiXSA9IFwiY2xlYXItc2VsZWN0aW9uXCI7XG4gICAgQ29tcG9uZW50QWN0aW9uW1wiQ3JlYXRlSXRlbVwiXSA9IFwiY3JlYXRlLWl0ZW1cIjtcbiAgICBDb21wb25lbnRBY3Rpb25bXCJDcmVhdGVJdGVtc1wiXSA9IFwiY3JlYXRlLWl0ZW1zXCI7XG4gICAgQ29tcG9uZW50QWN0aW9uW1wiRGVsZXRlSXRlbXNcIl0gPSBcImRlbGV0ZS1pdGVtc1wiO1xuICAgIENvbXBvbmVudEFjdGlvbltcIlNldENvbXBvbmVudERhdGFcIl0gPSBcInNldC1jb21wb25lbnQtZGF0YVwiO1xuICAgIENvbXBvbmVudEFjdGlvbltcIkluc3RhbGxMb2NhbENvbXBvbmVudFwiXSA9IFwiaW5zdGFsbC1sb2NhbC1jb21wb25lbnRcIjtcbiAgICBDb21wb25lbnRBY3Rpb25bXCJUb2dnbGVBY3RpdmF0ZUNvbXBvbmVudFwiXSA9IFwidG9nZ2xlLWFjdGl2YXRlLWNvbXBvbmVudFwiO1xuICAgIENvbXBvbmVudEFjdGlvbltcIlJlcXVlc3RQZXJtaXNzaW9uc1wiXSA9IFwicmVxdWVzdC1wZXJtaXNzaW9uc1wiO1xuICAgIENvbXBvbmVudEFjdGlvbltcIlByZXNlbnRDb25mbGljdFJlc29sdXRpb25cIl0gPSBcInByZXNlbnQtY29uZmxpY3QtcmVzb2x1dGlvblwiO1xuICAgIENvbXBvbmVudEFjdGlvbltcIkR1cGxpY2F0ZUl0ZW1cIl0gPSBcImR1cGxpY2F0ZS1pdGVtXCI7XG4gICAgQ29tcG9uZW50QWN0aW9uW1wiQ29tcG9uZW50UmVnaXN0ZXJlZFwiXSA9IFwiY29tcG9uZW50LXJlZ2lzdGVyZWRcIjtcbiAgICBDb21wb25lbnRBY3Rpb25bXCJBY3RpdmF0ZVRoZW1lc1wiXSA9IFwidGhlbWVzXCI7XG4gICAgQ29tcG9uZW50QWN0aW9uW1wiUmVwbHlcIl0gPSBcInJlcGx5XCI7XG4gICAgQ29tcG9uZW50QWN0aW9uW1wiU2F2ZVN1Y2Nlc3NcIl0gPSBcInNhdmUtc3VjY2Vzc1wiO1xuICAgIENvbXBvbmVudEFjdGlvbltcIlNhdmVFcnJvclwiXSA9IFwic2F2ZS1lcnJvclwiO1xufSkoQ29tcG9uZW50QWN0aW9uIHx8IChDb21wb25lbnRBY3Rpb24gPSB7fSkpO1xuO1xuLyoqXG4gKiBDb21wb25lbnRzIGFyZSBtb3N0bHkgaWZyYW1lIGJhc2VkIGV4dGVuc2lvbnMgdGhhdCBjb21tdW5pY2F0ZSB3aXRoIHRoZSBTTiBwYXJlbnRcbiAqIHZpYSB0aGUgcG9zdE1lc3NhZ2UgQVBJLiBIb3dldmVyLCBhIHRoZW1lIGNhbiBhbHNvIGJlIGEgY29tcG9uZW50LCB3aGljaCBpcyBhY3RpdmF0ZWRcbiAqIG9ubHkgYnkgaXRzIHVybC5cbiAqL1xuZXhwb3J0IGNsYXNzIFNOQ29tcG9uZW50IGV4dGVuZHMgU05JdGVtIHtcbiAgICBjb25zdHJ1Y3RvcihwYXlsb2FkKSB7XG4gICAgICAgIHN1cGVyKHBheWxvYWQpO1xuICAgICAgICB0aGlzLnBlcm1pc3Npb25zID0gW107XG4gICAgICAgIC8qKiBDdXN0b20gZGF0YSB0aGF0IGEgY29tcG9uZW50IGNhbiBzdG9yZSBpbiBpdHNlbGYgKi9cbiAgICAgICAgdGhpcy5jb21wb25lbnREYXRhID0gdGhpcy5wYXlsb2FkLnNhZmVDb250ZW50LmNvbXBvbmVudERhdGEgfHwge307XG4gICAgICAgIHRoaXMubGVnYWN5X3VybCA9IHRoaXMucGF5bG9hZC5zYWZlQ29udGVudC5sZWdhY3lfdXJsO1xuICAgICAgICB0aGlzLmhvc3RlZF91cmwgPSB0aGlzLnBheWxvYWQuc2FmZUNvbnRlbnQuaG9zdGVkX3VybCB8fCB0aGlzLnBheWxvYWQuc2FmZUNvbnRlbnQudXJsO1xuICAgICAgICB0aGlzLmxvY2FsX3VybCA9IHRoaXMucGF5bG9hZC5zYWZlQ29udGVudC5sb2NhbF91cmw7XG4gICAgICAgIHRoaXMudmFsaWRfdW50aWwgPSBuZXcgRGF0ZSh0aGlzLnBheWxvYWQuc2FmZUNvbnRlbnQudmFsaWRfdW50aWwpO1xuICAgICAgICB0aGlzLm9mZmxpbmVPbmx5ID0gdGhpcy5wYXlsb2FkLnNhZmVDb250ZW50Lm9mZmxpbmVPbmx5O1xuICAgICAgICB0aGlzLm5hbWUgPSB0aGlzLnBheWxvYWQuc2FmZUNvbnRlbnQubmFtZTtcbiAgICAgICAgdGhpcy5hcmVhID0gdGhpcy5wYXlsb2FkLnNhZmVDb250ZW50LmFyZWE7XG4gICAgICAgIHRoaXMucGFja2FnZV9pbmZvID0gdGhpcy5wYXlsb2FkLnNhZmVDb250ZW50LnBhY2thZ2VfaW5mbztcbiAgICAgICAgdGhpcy5wZXJtaXNzaW9ucyA9IHRoaXMucGF5bG9hZC5zYWZlQ29udGVudC5wZXJtaXNzaW9ucyB8fCBbXTtcbiAgICAgICAgdGhpcy5hY3RpdmUgPSB0aGlzLnBheWxvYWQuc2FmZUNvbnRlbnQuYWN0aXZlO1xuICAgICAgICB0aGlzLmF1dG91cGRhdGVEaXNhYmxlZCA9IHRoaXMucGF5bG9hZC5zYWZlQ29udGVudC5hdXRvdXBkYXRlRGlzYWJsZWQ7XG4gICAgICAgIHRoaXMuZGlzYXNzb2NpYXRlZEl0ZW1JZHMgPSB0aGlzLnBheWxvYWQuc2FmZUNvbnRlbnQuZGlzYXNzb2NpYXRlZEl0ZW1JZHMgfHwgW107XG4gICAgICAgIHRoaXMuYXNzb2NpYXRlZEl0ZW1JZHMgPSB0aGlzLnBheWxvYWQuc2FmZUNvbnRlbnQuYXNzb2NpYXRlZEl0ZW1JZHMgfHwgW107XG4gICAgICAgIHRoaXMuaXNNb2JpbGVEZWZhdWx0ID0gdGhpcy5wYXlsb2FkLnNhZmVDb250ZW50LmlzTW9iaWxlRGVmYXVsdDtcbiAgICAgICAgLyoqXG4gICAgICAgICogQGxlZ2FjeVxuICAgICAgICAqIFdlIGRvbid0IHdhbnQgdG8gc2V0IHRoZSB1cmwgZGlyZWN0bHksIGFzIHdlJ2QgbGlrZSB0byBwaGFzZSBpdCBvdXQuXG4gICAgICAgICogSWYgdGhlIGNvbnRlbnQudXJsIGV4aXN0cywgd2UnbGwgdHJhbnNmZXIgaXQgdG8gbGVnYWN5X3VybC4gV2UnbGwgb25seVxuICAgICAgICAqIG5lZWQgdG8gc2V0IHRoaXMgaWYgY29udGVudC5ob3N0ZWRfdXJsIGlzIGJsYW5rLCBvdGhlcndpc2UsXG4gICAgICAgICogaG9zdGVkX3VybCBpcyB0aGUgdXJsIHJlcGxhY2VtZW50LlxuICAgICAgICAqL1xuICAgICAgICB0aGlzLmxlZ2FjeV91cmwgPSAhdGhpcy5wYXlsb2FkLnNhZmVDb250ZW50Lmhvc3RlZF91cmwgPyB0aGlzLnBheWxvYWQuc2FmZUNvbnRlbnQudXJsIDogdW5kZWZpbmVkO1xuICAgIH1cbiAgICAvKiogRG8gbm90IGR1cGxpY2F0ZSBjb21wb25lbnRzIHVuZGVyIG1vc3QgY2lyY3Vtc3RhbmNlcy4gQWx3YXlzIGtlZXAgb3JpZ2luYWwgKi9cbiAgICBzdHJhdGVneVdoZW5Db25mbGljdGluZ1dpdGhJdGVtKGl0ZW0pIHtcbiAgICAgICAgaWYgKHRoaXMuZXJyb3JEZWNyeXB0aW5nKSB7XG4gICAgICAgICAgICByZXR1cm4gc3VwZXIuc3RyYXRlZ3lXaGVuQ29uZmxpY3RpbmdXaXRoSXRlbShpdGVtKTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gQ29uZmxpY3RTdHJhdGVneS5LZWVwTGVmdDtcbiAgICB9XG4gICAgaXNFZGl0b3IoKSB7XG4gICAgICAgIHJldHVybiB0aGlzLmFyZWEgPT09IENvbXBvbmVudEFyZWEuRWRpdG9yO1xuICAgIH1cbiAgICBpc1RoZW1lKCkge1xuICAgICAgICByZXR1cm4gKHRoaXMuY29udGVudF90eXBlID09PSBDb250ZW50VHlwZS5UaGVtZSB8fFxuICAgICAgICAgICAgdGhpcy5hcmVhID09PSBDb21wb25lbnRBcmVhLlRoZW1lcyk7XG4gICAgfVxuICAgIGlzRGVmYXVsdEVkaXRvcigpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuZ2V0QXBwRG9tYWluVmFsdWUoQXBwRGF0YUZpZWxkLkRlZmF1bHRFZGl0b3IpID09PSB0cnVlO1xuICAgIH1cbiAgICBnZXRMYXN0U2l6ZSgpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuZ2V0QXBwRG9tYWluVmFsdWUoQXBwRGF0YUZpZWxkLkxhc3RTaXplKTtcbiAgICB9XG4gICAgYWNjZXB0c1RoZW1lcygpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMucGF5bG9hZC5zYWZlQ29udGVudC5wYWNrYWdlX2luZm8/LmFjY2VwdHNUaGVtZXM7XG4gICAgfVxuICAgIC8qKlxuICAgICAqIFRoZSBrZXkgdXNlZCB0byBsb29rIHVwIGRhdGEgdGhhdCB0aGlzIGNvbXBvbmVudCBtYXkgaGF2ZSBzYXZlZCB0byBhbiBpdGVtLlxuICAgICAqIFRoaXMgZGF0YSB3aWxsIGJlIHN0b3JlZCBvbiB0aGUgaXRlbSB1c2luZyB0aGlzIGtleS5cbiAgICAgKi9cbiAgICBnZXRDbGllbnREYXRhS2V5KCkge1xuICAgICAgICBpZiAodGhpcy5sZWdhY3lfdXJsKSB7XG4gICAgICAgICAgICByZXR1cm4gdGhpcy5sZWdhY3lfdXJsO1xuICAgICAgICB9XG4gICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgcmV0dXJuIHRoaXMudXVpZDtcbiAgICAgICAgfVxuICAgIH1cbiAgICBoYXNWYWxpZEhvc3RlZFVybCgpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuaG9zdGVkX3VybCB8fCB0aGlzLmxlZ2FjeV91cmw7XG4gICAgfVxuICAgIGNvbnRlbnRLZXlzVG9JZ25vcmVXaGVuQ2hlY2tpbmdFcXVhbGl0eSgpIHtcbiAgICAgICAgcmV0dXJuIFtcbiAgICAgICAgICAgICdhY3RpdmUnLFxuICAgICAgICAgICAgJ2Rpc2Fzc29jaWF0ZWRJdGVtSWRzJyxcbiAgICAgICAgICAgICdhc3NvY2lhdGVkSXRlbUlkcydcbiAgICAgICAgXS5jb25jYXQoc3VwZXIuY29udGVudEtleXNUb0lnbm9yZVdoZW5DaGVja2luZ0VxdWFsaXR5KCkpO1xuICAgIH1cbiAgICAvKipcbiAgICAgKiBBbiBhc3NvY2lhdGl2ZSBjb21wb25lbnQgZGVwZW5kcyBvbiBiZWluZyBleHBsaWNpdGx5IGFjdGl2YXRlZCBmb3IgYVxuICAgICAqIGdpdmVuIGl0ZW0sIGNvbXBhcmVkIHRvIGEgZGlzc2FjaWF0aXZlIGNvbXBvbmVudCwgd2hpY2ggaXMgZW5hYmxlZCBieVxuICAgICAqIGRlZmF1bHQgaW4gYXJlYXMgdW5yZWxhdGVkIHRvIGEgY2VydGFpbiBpdGVtLlxuICAgICAqL1xuICAgIHN0YXRpYyBhc3NvY2lhdGl2ZUFyZWFzKCkge1xuICAgICAgICByZXR1cm4gW0NvbXBvbmVudEFyZWEuRWRpdG9yXTtcbiAgICB9XG4gICAgaXNBc3NvY2lhdGl2ZSgpIHtcbiAgICAgICAgcmV0dXJuIFNOQ29tcG9uZW50LmFzc29jaWF0aXZlQXJlYXMoKS5pbmNsdWRlcyh0aGlzLmFyZWEpO1xuICAgIH1cbiAgICBpc0V4cGxpY2l0bHlFbmFibGVkRm9ySXRlbSh1dWlkKSB7XG4gICAgICAgIHJldHVybiB0aGlzLmFzc29jaWF0ZWRJdGVtSWRzLmluZGV4T2YodXVpZCkgIT09IC0xO1xuICAgIH1cbiAgICBpc0V4cGxpY2l0bHlEaXNhYmxlZEZvckl0ZW0odXVpZCkge1xuICAgICAgICByZXR1cm4gdGhpcy5kaXNhc3NvY2lhdGVkSXRlbUlkcy5pbmRleE9mKHV1aWQpICE9PSAtMTtcbiAgICB9XG59XG5leHBvcnQgY2xhc3MgQ29tcG9uZW50TXV0YXRvciBleHRlbmRzIEl0ZW1NdXRhdG9yIHtcbiAgICBnZXQgdHlwZWRDb250ZW50KCkge1xuICAgICAgICByZXR1cm4gdGhpcy5jb250ZW50O1xuICAgIH1cbiAgICBzZXQgYWN0aXZlKGFjdGl2ZSkge1xuICAgICAgICB0aGlzLnR5cGVkQ29udGVudC5hY3RpdmUgPSBhY3RpdmU7XG4gICAgfVxuICAgIHNldCBkZWZhdWx0RWRpdG9yKGRlZmF1bHRFZGl0b3IpIHtcbiAgICAgICAgdGhpcy5zZXRBcHBEYXRhSXRlbShBcHBEYXRhRmllbGQuRGVmYXVsdEVkaXRvciwgZGVmYXVsdEVkaXRvcik7XG4gICAgfVxuICAgIHNldCBjb21wb25lbnREYXRhKGNvbXBvbmVudERhdGEpIHtcbiAgICAgICAgdGhpcy50eXBlZENvbnRlbnQuY29tcG9uZW50RGF0YSA9IGNvbXBvbmVudERhdGE7XG4gICAgfVxuICAgIHNldCBwYWNrYWdlX2luZm8ocGFja2FnZV9pbmZvKSB7XG4gICAgICAgIHRoaXMudHlwZWRDb250ZW50LnBhY2thZ2VfaW5mbyA9IHBhY2thZ2VfaW5mbztcbiAgICB9XG4gICAgc2V0IGxvY2FsX3VybChsb2NhbF91cmwpIHtcbiAgICAgICAgdGhpcy50eXBlZENvbnRlbnQubG9jYWxfdXJsID0gbG9jYWxfdXJsO1xuICAgIH1cbiAgICBzZXQgaG9zdGVkX3VybChob3N0ZWRfdXJsKSB7XG4gICAgICAgIHRoaXMudHlwZWRDb250ZW50Lmhvc3RlZF91cmwgPSBob3N0ZWRfdXJsO1xuICAgIH1cbiAgICBzZXQgcGVybWlzc2lvbnMocGVybWlzc2lvbnMpIHtcbiAgICAgICAgdGhpcy50eXBlZENvbnRlbnQucGVybWlzc2lvbnMgPSBwZXJtaXNzaW9ucztcbiAgICB9XG4gICAgYXNzb2NpYXRlV2l0aEl0ZW0odXVpZCkge1xuICAgICAgICBjb25zdCBhc3NvY2lhdGVkID0gdGhpcy50eXBlZENvbnRlbnQuYXNzb2NpYXRlZEl0ZW1JZHMgfHwgW107XG4gICAgICAgIGFkZElmVW5pcXVlKGFzc29jaWF0ZWQsIHV1aWQpO1xuICAgICAgICB0aGlzLnR5cGVkQ29udGVudC5hc3NvY2lhdGVkSXRlbUlkcyA9IGFzc29jaWF0ZWQ7XG4gICAgfVxuICAgIGRpc2Fzc29jaWF0ZVdpdGhJdGVtKHV1aWQpIHtcbiAgICAgICAgY29uc3QgZGlzYXNzb2NpYXRlZCA9IHRoaXMudHlwZWRDb250ZW50LmRpc2Fzc29jaWF0ZWRJdGVtSWRzIHx8IFtdO1xuICAgICAgICBhZGRJZlVuaXF1ZShkaXNhc3NvY2lhdGVkLCB1dWlkKTtcbiAgICAgICAgdGhpcy50eXBlZENvbnRlbnQuZGlzYXNzb2NpYXRlZEl0ZW1JZHMgPSBkaXNhc3NvY2lhdGVkO1xuICAgIH1cbiAgICByZW1vdmVBc3NvY2lhdGVkSXRlbUlkKHV1aWQpIHtcbiAgICAgICAgcmVtb3ZlRnJvbUFycmF5KHRoaXMudHlwZWRDb250ZW50LmFzc29jaWF0ZWRJdGVtSWRzIHx8IFtdLCB1dWlkKTtcbiAgICB9XG4gICAgcmVtb3ZlRGlzYXNzb2NpYXRlZEl0ZW1JZCh1dWlkKSB7XG4gICAgICAgIHJlbW92ZUZyb21BcnJheSh0aGlzLnR5cGVkQ29udGVudC5kaXNhc3NvY2lhdGVkSXRlbUlkcyB8fCBbXSwgdXVpZCk7XG4gICAgfVxuICAgIHNldExhc3RTaXplKHNpemUpIHtcbiAgICAgICAgdGhpcy5zZXRBcHBEYXRhSXRlbShBcHBEYXRhRmllbGQuTGFzdFNpemUsIHNpemUpO1xuICAgIH1cbn1cbiJdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTs7Ozs7O0FBS0E7QUFBQTtBQUNBO0FBQUE7QUFBQTtBQUNBO0FBREE7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7Ozs7Ozs7O0FBT0E7QUExQkE7QUEyQkE7QUFDQTtBQUNBO0FBQ0E7QUEvQkE7QUFBQTtBQUFBO0FBK0JBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQW5DQTtBQUFBO0FBQUE7QUFxQ0E7QUFDQTtBQXRDQTtBQUFBO0FBQUE7QUF3Q0E7QUFFQTtBQTFDQTtBQUFBO0FBQUE7QUE0Q0E7QUFDQTtBQTdDQTtBQUFBO0FBQUE7QUErQ0E7QUFDQTtBQWhEQTtBQUFBO0FBQUE7QUFpREE7QUFDQTtBQUFBO0FBQ0E7QUFDQTs7Ozs7QUFwREE7QUFBQTtBQUFBO0FBeURBO0FBQ0E7QUFDQTtBQUVBO0FBQ0E7QUFDQTtBQS9EQTtBQUFBO0FBQUE7QUFpRUE7QUFDQTtBQWxFQTtBQUFBO0FBQUE7QUFvRUE7QUFLQTtBQUNBOzs7Ozs7QUExRUE7QUFBQTtBQUFBO0FBbUZBO0FBQ0E7QUFwRkE7QUFBQTtBQUFBO0FBc0ZBO0FBQ0E7QUF2RkE7QUFBQTtBQUFBO0FBeUZBO0FBQ0E7QUExRkE7QUFBQTtBQUFBO0FBZ0ZBO0FBQ0E7QUFqRkE7QUFDQTtBQURBO0FBQUE7QUE0RkE7QUFBQTtBQUNBO0FBREE7QUFBQTtBQUNBO0FBREE7QUFBQTtBQUNBO0FBREE7QUFBQTtBQUFBO0FBMEJBO0FBQ0E7QUFDQTtBQUNBO0FBN0JBO0FBQUE7QUFBQTtBQStCQTtBQUNBO0FBQ0E7QUFDQTtBQWxDQTtBQUFBO0FBQUE7QUFvQ0E7QUFDQTtBQXJDQTtBQUFBO0FBQUE7QUF1Q0E7QUFDQTtBQXhDQTtBQUFBO0FBQUE7QUEwQ0E7QUFDQTtBQTNDQTtBQUFBO0FBQUE7QUFFQTtBQUNBO0FBSEE7QUFBQTtBQUFBO0FBS0E7QUFDQTtBQU5BO0FBQUE7QUFBQTtBQVFBO0FBQ0E7QUFUQTtBQUFBO0FBQUE7QUFXQTtBQUNBO0FBWkE7QUFBQTtBQUFBO0FBY0E7QUFDQTtBQWZBO0FBQUE7QUFBQTtBQWlCQTtBQUNBO0FBbEJBO0FBQUE7QUFBQTtBQW9CQTtBQUNBO0FBckJBO0FBQUE7QUFBQTtBQXVCQTtBQUNBO0FBeEJBO0FBQ0E7QUFEQTtBQUFBIiwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./lib/models/app/component.ts\n')},"./lib/models/app/editor.ts":
|
||
/*!**********************************!*\
|
||
!*** ./lib/models/app/editor.ts ***!
|
||
\**********************************/
|
||
/*! exports provided: SNEditor */function(module,__webpack_exports__,__webpack_require__){"use strict";eval('__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "SNEditor", function() { return SNEditor; });\n/* harmony import */ var _Models_core_item__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @Models/core/item */ "./lib/models/core/item.ts");\nfunction _typeof(obj) { "@babel/helpers - typeof"; if (typeof Symbol === "function" && typeof Symbol.iterator === "symbol") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }; } return _typeof(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 (call && (_typeof(call) === "object" || typeof call === "function")) { return call; } return _assertThisInitialized(self); }\n\nfunction _assertThisInitialized(self) { if (self === void 0) { throw new ReferenceError("this hasn\'t been initialised - super() hasn\'t been called"); } return self; }\n\nfunction _getPrototypeOf(o) { _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function _getPrototypeOf(o) { return o.__proto__ || Object.getPrototypeOf(o); }; return _getPrototypeOf(o); }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== "function" && superClass !== null) { throw new TypeError("Super expression must either be null or a function"); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, writable: true, configurable: true } }); if (superClass) _setPrototypeOf(subClass, superClass); }\n\nfunction _setPrototypeOf(o, p) { _setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) { o.__proto__ = p; return o; }; return _setPrototypeOf(o, p); }\n\n\n/**\n * @deprecated\n * Editor objects are depracated in favor of SNComponent objects\n */\n\nvar SNEditor = /*#__PURE__*/function (_SNItem) {\n _inherits(SNEditor, _SNItem);\n\n function SNEditor(payload) {\n var _this;\n\n _classCallCheck(this, SNEditor);\n\n _this = _possibleConstructorReturn(this, _getPrototypeOf(SNEditor).call(this, payload));\n _this.notes = [];\n _this.data = {};\n _this.url = payload.safeContent.url;\n _this.name = payload.safeContent.name;\n _this.data = payload.safeContent.data || {};\n _this.isDefault = payload.safeContent.default;\n _this.systemEditor = payload.safeContent.systemEditor;\n return _this;\n }\n\n return SNEditor;\n}(_Models_core_item__WEBPACK_IMPORTED_MODULE_0__["SNItem"]);//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9saWIvbW9kZWxzL2FwcC9lZGl0b3IudHMuanMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly9TTkxpYnJhcnkvLi9saWIvbW9kZWxzL2FwcC9lZGl0b3IudHM/MjE0ZSJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBTTkl0ZW0gfSBmcm9tICdATW9kZWxzL2NvcmUvaXRlbSc7XG4vKipcbiAqIEBkZXByZWNhdGVkXG4gKiBFZGl0b3Igb2JqZWN0cyBhcmUgZGVwcmFjYXRlZCBpbiBmYXZvciBvZiBTTkNvbXBvbmVudCBvYmplY3RzXG4gKi9cbmV4cG9ydCBjbGFzcyBTTkVkaXRvciBleHRlbmRzIFNOSXRlbSB7XG4gICAgY29uc3RydWN0b3IocGF5bG9hZCkge1xuICAgICAgICBzdXBlcihwYXlsb2FkKTtcbiAgICAgICAgdGhpcy5ub3RlcyA9IFtdO1xuICAgICAgICB0aGlzLmRhdGEgPSB7fTtcbiAgICAgICAgdGhpcy51cmwgPSBwYXlsb2FkLnNhZmVDb250ZW50LnVybDtcbiAgICAgICAgdGhpcy5uYW1lID0gcGF5bG9hZC5zYWZlQ29udGVudC5uYW1lO1xuICAgICAgICB0aGlzLmRhdGEgPSBwYXlsb2FkLnNhZmVDb250ZW50LmRhdGEgfHwge307XG4gICAgICAgIHRoaXMuaXNEZWZhdWx0ID0gcGF5bG9hZC5zYWZlQ29udGVudC5kZWZhdWx0O1xuICAgICAgICB0aGlzLnN5c3RlbUVkaXRvciA9IHBheWxvYWQuc2FmZUNvbnRlbnQuc3lzdGVtRWRpdG9yO1xuICAgIH1cbn1cbiJdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFBQTtBQUNBOzs7OztBQUlBO0FBQUE7QUFDQTtBQUFBO0FBQUE7QUFDQTtBQURBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBUkE7QUFTQTtBQUNBO0FBWEE7QUFBQSIsInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./lib/models/app/editor.ts\n')},"./lib/models/app/extension.ts":
|
||
/*!*************************************!*\
|
||
!*** ./lib/models/app/extension.ts ***!
|
||
\*************************************/
|
||
/*! exports provided: SNActionsExtension, ActionsExtensionMutator */function(module,__webpack_exports__,__webpack_require__){"use strict";eval('__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "SNActionsExtension", function() { return SNActionsExtension; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "ActionsExtensionMutator", function() { return ActionsExtensionMutator; });\n/* harmony import */ var _Models_core_item__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @Models/core/item */ "./lib/models/core/item.ts");\n/* harmony import */ var _action__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./action */ "./lib/models/app/action.ts");\nfunction _typeof(obj) { "@babel/helpers - typeof"; if (typeof Symbol === "function" && typeof Symbol.iterator === "symbol") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }; } return _typeof(obj); }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } }\n\nfunction _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); } }\n\nfunction _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; }\n\nfunction _possibleConstructorReturn(self, call) { if (call && (_typeof(call) === "object" || typeof call === "function")) { return call; } return _assertThisInitialized(self); }\n\nfunction _assertThisInitialized(self) { if (self === void 0) { throw new ReferenceError("this hasn\'t been initialised - super() hasn\'t been called"); } return self; }\n\nfunction _getPrototypeOf(o) { _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function _getPrototypeOf(o) { return o.__proto__ || Object.getPrototypeOf(o); }; return _getPrototypeOf(o); }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== "function" && superClass !== null) { throw new TypeError("Super expression must either be null or a function"); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, writable: true, configurable: true } }); if (superClass) _setPrototypeOf(subClass, superClass); }\n\nfunction _setPrototypeOf(o, p) { _setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) { o.__proto__ = p; return o; }; return _setPrototypeOf(o, p); }\n\n\n\n/**\n * Related to the SNActionsService and the local Action model.\n */\n\nvar SNActionsExtension = /*#__PURE__*/function (_SNItem) {\n _inherits(SNActionsExtension, _SNItem);\n\n function SNActionsExtension(payload) {\n var _this;\n\n _classCallCheck(this, SNActionsExtension);\n\n _this = _possibleConstructorReturn(this, _getPrototypeOf(SNActionsExtension).call(this, payload));\n _this.actions = [];\n _this.description = payload.safeContent.description;\n _this.url = payload.safeContent.url;\n _this.name = payload.safeContent.name;\n _this.package_info = payload.safeContent.package_info;\n _this.supported_types = payload.safeContent.supported_types;\n\n if (payload.safeContent.actions) {\n _this.actions = payload.safeContent.actions.map(function (action) {\n return new _action__WEBPACK_IMPORTED_MODULE_1__["Action"](action);\n });\n }\n\n return _this;\n }\n\n _createClass(SNActionsExtension, [{\n key: "actionsWithContextForItem",\n value: function actionsWithContextForItem(item) {\n return this.actions.filter(function (action) {\n return action.context === item.content_type || action.context === \'Item\';\n });\n }\n }]);\n\n return SNActionsExtension;\n}(_Models_core_item__WEBPACK_IMPORTED_MODULE_0__["SNItem"]);\nvar ActionsExtensionMutator = /*#__PURE__*/function (_ItemMutator) {\n _inherits(ActionsExtensionMutator, _ItemMutator);\n\n function ActionsExtensionMutator() {\n _classCallCheck(this, ActionsExtensionMutator);\n\n return _possibleConstructorReturn(this, _getPrototypeOf(ActionsExtensionMutator).apply(this, arguments));\n }\n\n _createClass(ActionsExtensionMutator, [{\n key: "description",\n set: function set(description) {\n this.content.description = description;\n }\n }, {\n key: "supported_types",\n set: function set(supported_types) {\n this.content.supported_types = supported_types;\n }\n }, {\n key: "actions",\n set: function set(actions) {\n this.content.actions = actions;\n }\n }]);\n\n return ActionsExtensionMutator;\n}(_Models_core_item__WEBPACK_IMPORTED_MODULE_0__["ItemMutator"]);//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9saWIvbW9kZWxzL2FwcC9leHRlbnNpb24udHMuanMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly9TTkxpYnJhcnkvLi9saWIvbW9kZWxzL2FwcC9leHRlbnNpb24udHM/MTg0OCJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBTTkl0ZW0sIEl0ZW1NdXRhdG9yIH0gZnJvbSAnQE1vZGVscy9jb3JlL2l0ZW0nO1xuaW1wb3J0IHsgQWN0aW9uIH0gZnJvbSAnLi9hY3Rpb24nO1xuLyoqXG4gKiBSZWxhdGVkIHRvIHRoZSBTTkFjdGlvbnNTZXJ2aWNlIGFuZCB0aGUgbG9jYWwgQWN0aW9uIG1vZGVsLlxuICovXG5leHBvcnQgY2xhc3MgU05BY3Rpb25zRXh0ZW5zaW9uIGV4dGVuZHMgU05JdGVtIHtcbiAgICBjb25zdHJ1Y3RvcihwYXlsb2FkKSB7XG4gICAgICAgIHN1cGVyKHBheWxvYWQpO1xuICAgICAgICB0aGlzLmFjdGlvbnMgPSBbXTtcbiAgICAgICAgdGhpcy5kZXNjcmlwdGlvbiA9IHBheWxvYWQuc2FmZUNvbnRlbnQuZGVzY3JpcHRpb247XG4gICAgICAgIHRoaXMudXJsID0gcGF5bG9hZC5zYWZlQ29udGVudC51cmw7XG4gICAgICAgIHRoaXMubmFtZSA9IHBheWxvYWQuc2FmZUNvbnRlbnQubmFtZTtcbiAgICAgICAgdGhpcy5wYWNrYWdlX2luZm8gPSBwYXlsb2FkLnNhZmVDb250ZW50LnBhY2thZ2VfaW5mbztcbiAgICAgICAgdGhpcy5zdXBwb3J0ZWRfdHlwZXMgPSBwYXlsb2FkLnNhZmVDb250ZW50LnN1cHBvcnRlZF90eXBlcztcbiAgICAgICAgaWYgKHBheWxvYWQuc2FmZUNvbnRlbnQuYWN0aW9ucykge1xuICAgICAgICAgICAgdGhpcy5hY3Rpb25zID0gcGF5bG9hZC5zYWZlQ29udGVudC5hY3Rpb25zLm1hcCgoYWN0aW9uKSA9PiB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIG5ldyBBY3Rpb24oYWN0aW9uKTtcbiAgICAgICAgICAgIH0pO1xuICAgICAgICB9XG4gICAgfVxuICAgIGFjdGlvbnNXaXRoQ29udGV4dEZvckl0ZW0oaXRlbSkge1xuICAgICAgICByZXR1cm4gdGhpcy5hY3Rpb25zLmZpbHRlcigoYWN0aW9uKSA9PiB7XG4gICAgICAgICAgICByZXR1cm4gKGFjdGlvbi5jb250ZXh0ID09PSBpdGVtLmNvbnRlbnRfdHlwZSB8fFxuICAgICAgICAgICAgICAgIGFjdGlvbi5jb250ZXh0ID09PSAnSXRlbScpO1xuICAgICAgICB9KTtcbiAgICB9XG59XG5leHBvcnQgY2xhc3MgQWN0aW9uc0V4dGVuc2lvbk11dGF0b3IgZXh0ZW5kcyBJdGVtTXV0YXRvciB7XG4gICAgc2V0IGRlc2NyaXB0aW9uKGRlc2NyaXB0aW9uKSB7XG4gICAgICAgIHRoaXMuY29udGVudC5kZXNjcmlwdGlvbiA9IGRlc2NyaXB0aW9uO1xuICAgIH1cbiAgICBzZXQgc3VwcG9ydGVkX3R5cGVzKHN1cHBvcnRlZF90eXBlcykge1xuICAgICAgICB0aGlzLmNvbnRlbnQuc3VwcG9ydGVkX3R5cGVzID0gc3VwcG9ydGVkX3R5cGVzO1xuICAgIH1cbiAgICBzZXQgYWN0aW9ucyhhY3Rpb25zKSB7XG4gICAgICAgIHRoaXMuY29udGVudC5hY3Rpb25zID0gYWN0aW9ucztcbiAgICB9XG59XG4iXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBQUE7QUFDQTtBQUNBOzs7O0FBR0E7QUFBQTtBQUNBO0FBQUE7QUFBQTtBQUNBO0FBREE7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFiQTtBQWFBO0FBQ0E7QUFmQTtBQUFBO0FBQUE7QUFnQkE7QUFDQTtBQUVBO0FBQ0E7QUFwQkE7QUFDQTtBQURBO0FBQUE7QUFzQkE7QUFBQTtBQUNBO0FBREE7QUFBQTtBQUNBO0FBREE7QUFBQTtBQUNBO0FBREE7QUFBQTtBQUFBO0FBRUE7QUFDQTtBQUhBO0FBQUE7QUFBQTtBQUtBO0FBQ0E7QUFOQTtBQUFBO0FBQUE7QUFRQTtBQUNBO0FBVEE7QUFDQTtBQURBO0FBQUEiLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./lib/models/app/extension.ts\n')},"./lib/models/app/items_key.ts":
|
||
/*!*************************************!*\
|
||
!*** ./lib/models/app/items_key.ts ***!
|
||
\*************************************/
|
||
/*! exports provided: SNItemsKey, ItemsKeyMutator */function(module,__webpack_exports__,__webpack_require__){"use strict";eval('__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "SNItemsKey", function() { return SNItemsKey; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "ItemsKeyMutator", function() { return ItemsKeyMutator; });\n/* harmony import */ var _Protocol_payloads_deltas_strategies__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @Protocol/payloads/deltas/strategies */ "./lib/protocol/payloads/deltas/strategies.ts");\n/* harmony import */ var _Models_core_item__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! @Models/core/item */ "./lib/models/core/item.ts");\n/* harmony import */ var _Protocol_versions__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! @Protocol/versions */ "./lib/protocol/versions.ts");\nfunction _typeof(obj) { "@babel/helpers - typeof"; if (typeof Symbol === "function" && typeof Symbol.iterator === "symbol") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }; } return _typeof(obj); }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } }\n\nfunction _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); } }\n\nfunction _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; }\n\nfunction _possibleConstructorReturn(self, call) { if (call && (_typeof(call) === "object" || typeof call === "function")) { return call; } return _assertThisInitialized(self); }\n\nfunction _assertThisInitialized(self) { if (self === void 0) { throw new ReferenceError("this hasn\'t been initialised - super() hasn\'t been called"); } return self; }\n\nfunction _get(target, property, receiver) { if (typeof Reflect !== "undefined" && Reflect.get) { _get = Reflect.get; } else { _get = function _get(target, property, receiver) { var base = _superPropBase(target, property); if (!base) return; var desc = Object.getOwnPropertyDescriptor(base, property); if (desc.get) { return desc.get.call(receiver); } return desc.value; }; } return _get(target, property, receiver || target); }\n\nfunction _superPropBase(object, property) { while (!Object.prototype.hasOwnProperty.call(object, property)) { object = _getPrototypeOf(object); if (object === null) break; } return object; }\n\nfunction _getPrototypeOf(o) { _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function _getPrototypeOf(o) { return o.__proto__ || Object.getPrototypeOf(o); }; return _getPrototypeOf(o); }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== "function" && superClass !== null) { throw new TypeError("Super expression must either be null or a function"); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, writable: true, configurable: true } }); if (superClass) _setPrototypeOf(subClass, superClass); }\n\nfunction _setPrototypeOf(o, p) { _setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) { o.__proto__ = p; return o; }; return _setPrototypeOf(o, p); }\n\n\n\n\n/**\n * A key used to encrypt other items. Items keys are synced and persisted.\n */\n\nvar SNItemsKey = /*#__PURE__*/function (_SNItem) {\n _inherits(SNItemsKey, _SNItem);\n\n function SNItemsKey() {\n _classCallCheck(this, SNItemsKey);\n\n return _possibleConstructorReturn(this, _getPrototypeOf(SNItemsKey).apply(this, arguments));\n }\n\n _createClass(SNItemsKey, [{\n key: "strategyWhenConflictingWithItem",\n\n /** Do not duplicate items keys. Always keep original */\n value: function strategyWhenConflictingWithItem(item) {\n if (this.errorDecrypting) {\n return _get(_getPrototypeOf(SNItemsKey.prototype), "strategyWhenConflictingWithItem", this).call(this, item);\n }\n\n return _Protocol_payloads_deltas_strategies__WEBPACK_IMPORTED_MODULE_0__["ConflictStrategy"].KeepLeft;\n }\n }, {\n key: "version",\n get: function get() {\n return this.payload.safeContent.version;\n }\n }, {\n key: "isItemsKey",\n get: function get() {\n return true;\n }\n }, {\n key: "isDefault",\n get: function get() {\n return this.payload.safeContent.isDefault;\n }\n }, {\n key: "itemsKey",\n get: function get() {\n return this.payload.safeContent.itemsKey;\n }\n }, {\n key: "dataAuthenticationKey",\n get: function get() {\n if (this.version === _Protocol_versions__WEBPACK_IMPORTED_MODULE_2__["ProtocolVersion"].V004) {\n throw \'Attempting to access legacy data authentication key.\';\n }\n\n return this.payload.safeContent.dataAuthenticationKey;\n }\n }]);\n\n return SNItemsKey;\n}(_Models_core_item__WEBPACK_IMPORTED_MODULE_1__["SNItem"]);\nvar ItemsKeyMutator = /*#__PURE__*/function (_ItemMutator) {\n _inherits(ItemsKeyMutator, _ItemMutator);\n\n function ItemsKeyMutator() {\n _classCallCheck(this, ItemsKeyMutator);\n\n return _possibleConstructorReturn(this, _getPrototypeOf(ItemsKeyMutator).apply(this, arguments));\n }\n\n _createClass(ItemsKeyMutator, [{\n key: "isDefault",\n set: function set(isDefault) {\n this.content.isDefault = isDefault;\n }\n }]);\n\n return ItemsKeyMutator;\n}(_Models_core_item__WEBPACK_IMPORTED_MODULE_1__["ItemMutator"]);//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9saWIvbW9kZWxzL2FwcC9pdGVtc19rZXkudHMuanMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly9TTkxpYnJhcnkvLi9saWIvbW9kZWxzL2FwcC9pdGVtc19rZXkudHM/YzYwMiJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb25mbGljdFN0cmF0ZWd5IH0gZnJvbSAnQFByb3RvY29sL3BheWxvYWRzL2RlbHRhcy9zdHJhdGVnaWVzJztcbmltcG9ydCB7IFNOSXRlbSwgSXRlbU11dGF0b3IgfSBmcm9tICdATW9kZWxzL2NvcmUvaXRlbSc7XG5pbXBvcnQgeyBQcm90b2NvbFZlcnNpb24gfSBmcm9tICdAUHJvdG9jb2wvdmVyc2lvbnMnO1xuLyoqXG4gKiBBIGtleSB1c2VkIHRvIGVuY3J5cHQgb3RoZXIgaXRlbXMuIEl0ZW1zIGtleXMgYXJlIHN5bmNlZCBhbmQgcGVyc2lzdGVkLlxuICovXG5leHBvcnQgY2xhc3MgU05JdGVtc0tleSBleHRlbmRzIFNOSXRlbSB7XG4gICAgLyoqIERvIG5vdCBkdXBsaWNhdGUgaXRlbXMga2V5cy4gQWx3YXlzIGtlZXAgb3JpZ2luYWwgKi9cbiAgICBzdHJhdGVneVdoZW5Db25mbGljdGluZ1dpdGhJdGVtKGl0ZW0pIHtcbiAgICAgICAgaWYgKHRoaXMuZXJyb3JEZWNyeXB0aW5nKSB7XG4gICAgICAgICAgICByZXR1cm4gc3VwZXIuc3RyYXRlZ3lXaGVuQ29uZmxpY3RpbmdXaXRoSXRlbShpdGVtKTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gQ29uZmxpY3RTdHJhdGVneS5LZWVwTGVmdDtcbiAgICB9XG4gICAgZ2V0IHZlcnNpb24oKSB7XG4gICAgICAgIHJldHVybiB0aGlzLnBheWxvYWQuc2FmZUNvbnRlbnQudmVyc2lvbjtcbiAgICB9XG4gICAgZ2V0IGlzSXRlbXNLZXkoKSB7XG4gICAgICAgIHJldHVybiB0cnVlO1xuICAgIH1cbiAgICBnZXQgaXNEZWZhdWx0KCkge1xuICAgICAgICByZXR1cm4gdGhpcy5wYXlsb2FkLnNhZmVDb250ZW50LmlzRGVmYXVsdDtcbiAgICB9XG4gICAgZ2V0IGl0ZW1zS2V5KCkge1xuICAgICAgICByZXR1cm4gdGhpcy5wYXlsb2FkLnNhZmVDb250ZW50Lml0ZW1zS2V5O1xuICAgIH1cbiAgICBnZXQgZGF0YUF1dGhlbnRpY2F0aW9uS2V5KCkge1xuICAgICAgICBpZiAodGhpcy52ZXJzaW9uID09PSBQcm90b2NvbFZlcnNpb24uVjAwNCkge1xuICAgICAgICAgICAgdGhyb3cgJ0F0dGVtcHRpbmcgdG8gYWNjZXNzIGxlZ2FjeSBkYXRhIGF1dGhlbnRpY2F0aW9uIGtleS4nO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiB0aGlzLnBheWxvYWQuc2FmZUNvbnRlbnQuZGF0YUF1dGhlbnRpY2F0aW9uS2V5O1xuICAgIH1cbn1cbmV4cG9ydCBjbGFzcyBJdGVtc0tleU11dGF0b3IgZXh0ZW5kcyBJdGVtTXV0YXRvciB7XG4gICAgc2V0IGlzRGVmYXVsdChpc0RlZmF1bHQpIHtcbiAgICAgICAgdGhpcy5jb250ZW50LmlzRGVmYXVsdCA9IGlzRGVmYXVsdDtcbiAgICB9XG59XG4iXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFBQTtBQUNBO0FBQ0E7QUFDQTs7OztBQUdBO0FBQUE7QUFDQTtBQURBO0FBQUE7QUFDQTtBQURBO0FBQUE7QUFDQTtBQURBO0FBQUE7QUFDQTtBQUFBO0FBREE7QUFHQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFQQTtBQUFBO0FBQUE7QUFTQTtBQUNBO0FBVkE7QUFBQTtBQUFBO0FBWUE7QUFDQTtBQWJBO0FBQUE7QUFBQTtBQWVBO0FBQ0E7QUFoQkE7QUFBQTtBQUFBO0FBa0JBO0FBQ0E7QUFuQkE7QUFBQTtBQUFBO0FBcUJBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQXpCQTtBQUNBO0FBREE7QUFBQTtBQTJCQTtBQUFBO0FBQ0E7QUFEQTtBQUFBO0FBQ0E7QUFEQTtBQUFBO0FBQ0E7QUFEQTtBQUFBO0FBQUE7QUFFQTtBQUNBO0FBSEE7QUFDQTtBQURBO0FBQUEiLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./lib/models/app/items_key.ts\n')},"./lib/models/app/note.ts":
|
||
/*!********************************!*\
|
||
!*** ./lib/models/app/note.ts ***!
|
||
\********************************/
|
||
/*! exports provided: SNNote, NoteMutator */function(module,__webpack_exports__,__webpack_require__){"use strict";eval('__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "SNNote", function() { return SNNote; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "NoteMutator", function() { return NoteMutator; });\n/* harmony import */ var _protocol_payloads_formats__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./../../protocol/payloads/formats */ "./lib/protocol/payloads/formats.ts");\n/* harmony import */ var _Lib_utils__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! @Lib/utils */ "./lib/utils.ts");\n/* harmony import */ var _Models_core_item__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! @Models/core/item */ "./lib/models/core/item.ts");\nfunction _typeof(obj) { "@babel/helpers - typeof"; if (typeof Symbol === "function" && typeof Symbol.iterator === "symbol") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }; } return _typeof(obj); }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } }\n\nfunction _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); } }\n\nfunction _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; }\n\nfunction _possibleConstructorReturn(self, call) { if (call && (_typeof(call) === "object" || typeof call === "function")) { return call; } return _assertThisInitialized(self); }\n\nfunction _assertThisInitialized(self) { if (self === void 0) { throw new ReferenceError("this hasn\'t been initialised - super() hasn\'t been called"); } return self; }\n\nfunction _getPrototypeOf(o) { _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function _getPrototypeOf(o) { return o.__proto__ || Object.getPrototypeOf(o); }; return _getPrototypeOf(o); }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== "function" && superClass !== null) { throw new TypeError("Super expression must either be null or a function"); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, writable: true, configurable: true } }); if (superClass) _setPrototypeOf(subClass, superClass); }\n\nfunction _setPrototypeOf(o, p) { _setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) { o.__proto__ = p; return o; }; return _setPrototypeOf(o, p); }\n\n\n\n\n/** A note item */\n\nvar SNNote = /*#__PURE__*/function (_SNItem) {\n _inherits(SNNote, _SNItem);\n\n function SNNote(payload) {\n var _this;\n\n _classCallCheck(this, SNNote);\n\n _this = _possibleConstructorReturn(this, _getPrototypeOf(SNNote).call(this, payload));\n /* Some external editors can\'t handle a null value for text.\n * Notes created on mobile with no text have a null value for it,\n * so we\'ll just set a default here. */\n\n _this.text = \'\';\n _this.hidePreview = false;\n _this.title = _this.payload.safeContent.title;\n _this.text = _this.payload.safeContent.text;\n _this.preview_plain = _this.payload.safeContent.preview_plain;\n _this.preview_html = _this.payload.safeContent.preview_html;\n _this.hidePreview = _this.payload.safeContent.hidePreview;\n\n if (payload.format === _protocol_payloads_formats__WEBPACK_IMPORTED_MODULE_0__["PayloadFormat"].DecryptedBareObject) {\n _this.prefersPlainEditor = _this.getAppDomainValue(_Models_core_item__WEBPACK_IMPORTED_MODULE_2__["AppDataField"].PrefersPlainEditor);\n }\n\n if (!Object(_Lib_utils__WEBPACK_IMPORTED_MODULE_1__["isNullOrUndefined"])(_this.payload.safeContent.mobilePrefersPlainEditor)) {\n _this.mobilePrefersPlainEditor = _this.payload.safeContent.mobilePrefersPlainEditor;\n }\n\n return _this;\n }\n\n _createClass(SNNote, [{\n key: "safeText",\n value: function safeText() {\n return this.text || \'\';\n }\n }, {\n key: "safeTitle",\n value: function safeTitle() {\n return this.title || \'\';\n }\n }]);\n\n return SNNote;\n}(_Models_core_item__WEBPACK_IMPORTED_MODULE_2__["SNItem"]);\nvar NoteMutator = /*#__PURE__*/function (_ItemMutator) {\n _inherits(NoteMutator, _ItemMutator);\n\n function NoteMutator() {\n _classCallCheck(this, NoteMutator);\n\n return _possibleConstructorReturn(this, _getPrototypeOf(NoteMutator).apply(this, arguments));\n }\n\n _createClass(NoteMutator, [{\n key: "typedContent",\n get: function get() {\n return this.content;\n }\n }, {\n key: "title",\n set: function set(title) {\n this.typedContent.title = title;\n }\n }, {\n key: "text",\n set: function set(text) {\n this.typedContent.text = text;\n }\n }, {\n key: "hidePreview",\n set: function set(hidePreview) {\n this.typedContent.hidePreview = hidePreview;\n }\n }, {\n key: "preview_plain",\n set: function set(preview_plain) {\n this.typedContent.preview_plain = preview_plain;\n }\n }, {\n key: "preview_html",\n set: function set(preview_html) {\n this.typedContent.preview_html = preview_html;\n }\n }, {\n key: "prefersPlainEditor",\n set: function set(prefersPlainEditor) {\n this.setAppDataItem(_Models_core_item__WEBPACK_IMPORTED_MODULE_2__["AppDataField"].PrefersPlainEditor, prefersPlainEditor);\n }\n }]);\n\n return NoteMutator;\n}(_Models_core_item__WEBPACK_IMPORTED_MODULE_2__["ItemMutator"]);//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9saWIvbW9kZWxzL2FwcC9ub3RlLnRzLmpzIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vU05MaWJyYXJ5Ly4vbGliL21vZGVscy9hcHAvbm90ZS50cz81NzMzIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IFBheWxvYWRGb3JtYXQgfSBmcm9tICcuLy4uLy4uL3Byb3RvY29sL3BheWxvYWRzL2Zvcm1hdHMnO1xuaW1wb3J0IHsgaXNOdWxsT3JVbmRlZmluZWQgfSBmcm9tICdATGliL3V0aWxzJztcbmltcG9ydCB7IFNOSXRlbSwgSXRlbU11dGF0b3IsIEFwcERhdGFGaWVsZCB9IGZyb20gJ0BNb2RlbHMvY29yZS9pdGVtJztcbi8qKiBBIG5vdGUgaXRlbSAqL1xuZXhwb3J0IGNsYXNzIFNOTm90ZSBleHRlbmRzIFNOSXRlbSB7XG4gICAgY29uc3RydWN0b3IocGF5bG9hZCkge1xuICAgICAgICBzdXBlcihwYXlsb2FkKTtcbiAgICAgICAgLyogU29tZSBleHRlcm5hbCBlZGl0b3JzIGNhbid0IGhhbmRsZSBhIG51bGwgdmFsdWUgZm9yIHRleHQuXG4gICAgICAgICogTm90ZXMgY3JlYXRlZCBvbiBtb2JpbGUgd2l0aCBubyB0ZXh0IGhhdmUgYSBudWxsIHZhbHVlIGZvciBpdCxcbiAgICAgICAgKiBzbyB3ZSdsbCBqdXN0IHNldCBhIGRlZmF1bHQgaGVyZS4gKi9cbiAgICAgICAgdGhpcy50ZXh0ID0gJyc7XG4gICAgICAgIHRoaXMuaGlkZVByZXZpZXcgPSBmYWxzZTtcbiAgICAgICAgdGhpcy50aXRsZSA9IHRoaXMucGF5bG9hZC5zYWZlQ29udGVudC50aXRsZTtcbiAgICAgICAgdGhpcy50ZXh0ID0gdGhpcy5wYXlsb2FkLnNhZmVDb250ZW50LnRleHQ7XG4gICAgICAgIHRoaXMucHJldmlld19wbGFpbiA9IHRoaXMucGF5bG9hZC5zYWZlQ29udGVudC5wcmV2aWV3X3BsYWluO1xuICAgICAgICB0aGlzLnByZXZpZXdfaHRtbCA9IHRoaXMucGF5bG9hZC5zYWZlQ29udGVudC5wcmV2aWV3X2h0bWw7XG4gICAgICAgIHRoaXMuaGlkZVByZXZpZXcgPSB0aGlzLnBheWxvYWQuc2FmZUNvbnRlbnQuaGlkZVByZXZpZXc7XG4gICAgICAgIGlmIChwYXlsb2FkLmZvcm1hdCA9PT0gUGF5bG9hZEZvcm1hdC5EZWNyeXB0ZWRCYXJlT2JqZWN0KSB7XG4gICAgICAgICAgICB0aGlzLnByZWZlcnNQbGFpbkVkaXRvciA9IHRoaXMuZ2V0QXBwRG9tYWluVmFsdWUoQXBwRGF0YUZpZWxkLlByZWZlcnNQbGFpbkVkaXRvcik7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKCFpc051bGxPclVuZGVmaW5lZCh0aGlzLnBheWxvYWQuc2FmZUNvbnRlbnQubW9iaWxlUHJlZmVyc1BsYWluRWRpdG9yKSkge1xuICAgICAgICAgICAgdGhpcy5tb2JpbGVQcmVmZXJzUGxhaW5FZGl0b3IgPSB0aGlzLnBheWxvYWQuc2FmZUNvbnRlbnQubW9iaWxlUHJlZmVyc1BsYWluRWRpdG9yO1xuICAgICAgICB9XG4gICAgfVxuICAgIHNhZmVUZXh0KCkge1xuICAgICAgICByZXR1cm4gdGhpcy50ZXh0IHx8ICcnO1xuICAgIH1cbiAgICBzYWZlVGl0bGUoKSB7XG4gICAgICAgIHJldHVybiB0aGlzLnRpdGxlIHx8ICcnO1xuICAgIH1cbn1cbmV4cG9ydCBjbGFzcyBOb3RlTXV0YXRvciBleHRlbmRzIEl0ZW1NdXRhdG9yIHtcbiAgICBnZXQgdHlwZWRDb250ZW50KCkge1xuICAgICAgICByZXR1cm4gdGhpcy5jb250ZW50O1xuICAgIH1cbiAgICBzZXQgdGl0bGUodGl0bGUpIHtcbiAgICAgICAgdGhpcy50eXBlZENvbnRlbnQudGl0bGUgPSB0aXRsZTtcbiAgICB9XG4gICAgc2V0IHRleHQodGV4dCkge1xuICAgICAgICB0aGlzLnR5cGVkQ29udGVudC50ZXh0ID0gdGV4dDtcbiAgICB9XG4gICAgc2V0IGhpZGVQcmV2aWV3KGhpZGVQcmV2aWV3KSB7XG4gICAgICAgIHRoaXMudHlwZWRDb250ZW50LmhpZGVQcmV2aWV3ID0gaGlkZVByZXZpZXc7XG4gICAgfVxuICAgIHNldCBwcmV2aWV3X3BsYWluKHByZXZpZXdfcGxhaW4pIHtcbiAgICAgICAgdGhpcy50eXBlZENvbnRlbnQucHJldmlld19wbGFpbiA9IHByZXZpZXdfcGxhaW47XG4gICAgfVxuICAgIHNldCBwcmV2aWV3X2h0bWwocHJldmlld19odG1sKSB7XG4gICAgICAgIHRoaXMudHlwZWRDb250ZW50LnByZXZpZXdfaHRtbCA9IHByZXZpZXdfaHRtbDtcbiAgICB9XG4gICAgc2V0IHByZWZlcnNQbGFpbkVkaXRvcihwcmVmZXJzUGxhaW5FZGl0b3IpIHtcbiAgICAgICAgdGhpcy5zZXRBcHBEYXRhSXRlbShBcHBEYXRhRmllbGQuUHJlZmVyc1BsYWluRWRpdG9yLCBwcmVmZXJzUGxhaW5FZGl0b3IpO1xuICAgIH1cbn1cbiJdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQUE7QUFDQTtBQUFBO0FBQUE7QUFDQTtBQURBO0FBQ0E7QUFBQTtBQUNBOzs7O0FBR0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFsQkE7QUFrQkE7QUFDQTtBQXBCQTtBQUFBO0FBQUE7QUFxQkE7QUFDQTtBQXRCQTtBQUFBO0FBQUE7QUF3QkE7QUFDQTtBQXpCQTtBQUNBO0FBREE7QUFBQTtBQTJCQTtBQUFBO0FBQ0E7QUFEQTtBQUFBO0FBQ0E7QUFEQTtBQUFBO0FBQ0E7QUFEQTtBQUFBO0FBQUE7QUFFQTtBQUNBO0FBSEE7QUFBQTtBQUFBO0FBS0E7QUFDQTtBQU5BO0FBQUE7QUFBQTtBQVFBO0FBQ0E7QUFUQTtBQUFBO0FBQUE7QUFXQTtBQUNBO0FBWkE7QUFBQTtBQUFBO0FBY0E7QUFDQTtBQWZBO0FBQUE7QUFBQTtBQWlCQTtBQUNBO0FBbEJBO0FBQUE7QUFBQTtBQW9CQTtBQUNBO0FBckJBO0FBQ0E7QUFEQTtBQUFBIiwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./lib/models/app/note.ts\n')},"./lib/models/app/privileges.ts":
|
||
/*!**************************************!*\
|
||
!*** ./lib/models/app/privileges.ts ***!
|
||
\**************************************/
|
||
/*! exports provided: ProtectedAction, PrivilegeCredential, SNPrivileges, PrivilegeMutator */function(module,__webpack_exports__,__webpack_require__){"use strict";eval('__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "ProtectedAction", function() { return ProtectedAction; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "PrivilegeCredential", function() { return PrivilegeCredential; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "SNPrivileges", function() { return SNPrivileges; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "PrivilegeMutator", function() { return PrivilegeMutator; });\n/* harmony import */ var _Lib_utils__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @Lib/utils */ "./lib/utils.ts");\n/* harmony import */ var _Models_core_item__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! @Models/core/item */ "./lib/models/core/item.ts");\n/* harmony import */ var _Models_core_predicate__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! @Models/core/predicate */ "./lib/models/core/predicate.ts");\nfunction _typeof(obj) { "@babel/helpers - typeof"; if (typeof Symbol === "function" && typeof Symbol.iterator === "symbol") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }; } return _typeof(obj); }\n\nfunction _get(target, property, receiver) { if (typeof Reflect !== "undefined" && Reflect.get) { _get = Reflect.get; } else { _get = function _get(target, property, receiver) { var base = _superPropBase(target, property); if (!base) return; var desc = Object.getOwnPropertyDescriptor(base, property); if (desc.get) { return desc.get.call(receiver); } return desc.value; }; } return _get(target, property, receiver || target); }\n\nfunction _superPropBase(object, property) { while (!Object.prototype.hasOwnProperty.call(object, property)) { object = _getPrototypeOf(object); if (object === null) break; } return object; }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } }\n\nfunction _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); } }\n\nfunction _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; }\n\nfunction _possibleConstructorReturn(self, call) { if (call && (_typeof(call) === "object" || typeof call === "function")) { return call; } return _assertThisInitialized(self); }\n\nfunction _assertThisInitialized(self) { if (self === void 0) { throw new ReferenceError("this hasn\'t been initialised - super() hasn\'t been called"); } return self; }\n\nfunction _getPrototypeOf(o) { _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function _getPrototypeOf(o) { return o.__proto__ || Object.getPrototypeOf(o); }; return _getPrototypeOf(o); }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== "function" && superClass !== null) { throw new TypeError("Super expression must either be null or a function"); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, writable: true, configurable: true } }); if (superClass) _setPrototypeOf(subClass, superClass); }\n\nfunction _setPrototypeOf(o, p) { _setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) { o.__proto__ = p; return o; }; return _setPrototypeOf(o, p); }\n\n\n\n\nvar ProtectedAction;\n\n(function (ProtectedAction) {\n ProtectedAction["ManageExtensions"] = "ActionManageExtensions";\n ProtectedAction["ManageBackups"] = "ActionManageBackups";\n ProtectedAction["ViewProtectedNotes"] = "ActionViewProtectedNotes";\n ProtectedAction["ManagePrivileges"] = "ActionManagePrivileges";\n ProtectedAction["ManagePasscode"] = "ActionManagePasscode";\n ProtectedAction["DeleteNote"] = "ActionDeleteNote";\n})(ProtectedAction || (ProtectedAction = {}));\n\n;\nvar PrivilegeCredential;\n\n(function (PrivilegeCredential) {\n PrivilegeCredential["AccountPassword"] = "CredentialAccountPassword";\n PrivilegeCredential["LocalPasscode"] = "CredentialLocalPasscode";\n})(PrivilegeCredential || (PrivilegeCredential = {}));\n\n;\n/**\n * Privileges are a singleton object that store the preferences a user\n * may have configured for protecting certain actions.\n */\n\nvar SNPrivileges = /*#__PURE__*/function (_SNItem) {\n _inherits(SNPrivileges, _SNItem);\n\n function SNPrivileges(payload) {\n var _this;\n\n _classCallCheck(this, SNPrivileges);\n\n _this = _possibleConstructorReturn(this, _getPrototypeOf(SNPrivileges).call(this, payload));\n _this.privilegeMap = {};\n _this.privilegeMap = payload.safeContent.desktopPrivileges || {};\n return _this;\n }\n\n _createClass(SNPrivileges, [{\n key: "getCredentialsForAction",\n value: function getCredentialsForAction(action) {\n return this.privilegeMap[action] || [];\n }\n }, {\n key: "isCredentialRequiredForAction",\n value: function isCredentialRequiredForAction(action, credential) {\n var credentialsRequired = this.getCredentialsForAction(action);\n return credentialsRequired.includes(credential);\n }\n }, {\n key: "isSingleton",\n get: function get() {\n return true;\n }\n }, {\n key: "singletonPredicate",\n get: function get() {\n return new _Models_core_predicate__WEBPACK_IMPORTED_MODULE_2__["SNPredicate"](\'content_type\', \'=\', this.content_type);\n }\n }]);\n\n return SNPrivileges;\n}(_Models_core_item__WEBPACK_IMPORTED_MODULE_1__["SNItem"]);\nvar PrivilegeMutator = /*#__PURE__*/function (_ItemMutator) {\n _inherits(PrivilegeMutator, _ItemMutator);\n\n function PrivilegeMutator(item, source) {\n var _this2;\n\n _classCallCheck(this, PrivilegeMutator);\n\n _this2 = _possibleConstructorReturn(this, _getPrototypeOf(PrivilegeMutator).call(this, item, source));\n _this2.privilegeMap = {};\n _this2.privileges = item;\n _this2.privilegeMap = Object(_Lib_utils__WEBPACK_IMPORTED_MODULE_0__["Copy"])(_this2.payload.safeContent.desktopPrivileges || {});\n return _this2;\n }\n\n _createClass(PrivilegeMutator, [{\n key: "getResult",\n value: function getResult() {\n if (this.content) {\n this.content.desktopPrivileges = this.privilegeMap;\n }\n\n return _get(_getPrototypeOf(PrivilegeMutator.prototype), "getResult", this).call(this);\n }\n }, {\n key: "setCredentialsForAction",\n value: function setCredentialsForAction(action, credentials) {\n this.privilegeMap[action] = credentials;\n }\n }, {\n key: "toggleCredentialForAction",\n value: function toggleCredentialForAction(action, credential) {\n if (this.privileges.isCredentialRequiredForAction(action, credential)) {\n this.removeCredentialForAction(action, credential);\n } else {\n this.addCredentialForAction(action, credential);\n }\n }\n }, {\n key: "removeCredentialForAction",\n value: function removeCredentialForAction(action, credential) {\n Object(_Lib_utils__WEBPACK_IMPORTED_MODULE_0__["removeFromArray"])(this.privilegeMap[action], credential);\n }\n }, {\n key: "addCredentialForAction",\n value: function addCredentialForAction(action, credential) {\n var credentials = this.privileges.getCredentialsForAction(action).slice();\n credentials.push(credential);\n this.setCredentialsForAction(action, credentials);\n }\n }]);\n\n return PrivilegeMutator;\n}(_Models_core_item__WEBPACK_IMPORTED_MODULE_1__["ItemMutator"]);//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9saWIvbW9kZWxzL2FwcC9wcml2aWxlZ2VzLnRzLmpzIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vU05MaWJyYXJ5Ly4vbGliL21vZGVscy9hcHAvcHJpdmlsZWdlcy50cz84MzQ1Il0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvcHksIHJlbW92ZUZyb21BcnJheSB9IGZyb20gJ0BMaWIvdXRpbHMnO1xuaW1wb3J0IHsgU05JdGVtLCBJdGVtTXV0YXRvciB9IGZyb20gJ0BNb2RlbHMvY29yZS9pdGVtJztcbmltcG9ydCB7IFNOUHJlZGljYXRlIH0gZnJvbSAnQE1vZGVscy9jb3JlL3ByZWRpY2F0ZSc7XG5leHBvcnQgdmFyIFByb3RlY3RlZEFjdGlvbjtcbihmdW5jdGlvbiAoUHJvdGVjdGVkQWN0aW9uKSB7XG4gICAgUHJvdGVjdGVkQWN0aW9uW1wiTWFuYWdlRXh0ZW5zaW9uc1wiXSA9IFwiQWN0aW9uTWFuYWdlRXh0ZW5zaW9uc1wiO1xuICAgIFByb3RlY3RlZEFjdGlvbltcIk1hbmFnZUJhY2t1cHNcIl0gPSBcIkFjdGlvbk1hbmFnZUJhY2t1cHNcIjtcbiAgICBQcm90ZWN0ZWRBY3Rpb25bXCJWaWV3UHJvdGVjdGVkTm90ZXNcIl0gPSBcIkFjdGlvblZpZXdQcm90ZWN0ZWROb3Rlc1wiO1xuICAgIFByb3RlY3RlZEFjdGlvbltcIk1hbmFnZVByaXZpbGVnZXNcIl0gPSBcIkFjdGlvbk1hbmFnZVByaXZpbGVnZXNcIjtcbiAgICBQcm90ZWN0ZWRBY3Rpb25bXCJNYW5hZ2VQYXNzY29kZVwiXSA9IFwiQWN0aW9uTWFuYWdlUGFzc2NvZGVcIjtcbiAgICBQcm90ZWN0ZWRBY3Rpb25bXCJEZWxldGVOb3RlXCJdID0gXCJBY3Rpb25EZWxldGVOb3RlXCI7XG59KShQcm90ZWN0ZWRBY3Rpb24gfHwgKFByb3RlY3RlZEFjdGlvbiA9IHt9KSk7XG47XG5leHBvcnQgdmFyIFByaXZpbGVnZUNyZWRlbnRpYWw7XG4oZnVuY3Rpb24gKFByaXZpbGVnZUNyZWRlbnRpYWwpIHtcbiAgICBQcml2aWxlZ2VDcmVkZW50aWFsW1wiQWNjb3VudFBhc3N3b3JkXCJdID0gXCJDcmVkZW50aWFsQWNjb3VudFBhc3N3b3JkXCI7XG4gICAgUHJpdmlsZWdlQ3JlZGVudGlhbFtcIkxvY2FsUGFzc2NvZGVcIl0gPSBcIkNyZWRlbnRpYWxMb2NhbFBhc3Njb2RlXCI7XG59KShQcml2aWxlZ2VDcmVkZW50aWFsIHx8IChQcml2aWxlZ2VDcmVkZW50aWFsID0ge30pKTtcbjtcbi8qKlxuICogUHJpdmlsZWdlcyBhcmUgYSBzaW5nbGV0b24gb2JqZWN0IHRoYXQgc3RvcmUgdGhlIHByZWZlcmVuY2VzIGEgdXNlclxuICogbWF5IGhhdmUgY29uZmlndXJlZCBmb3IgcHJvdGVjdGluZyBjZXJ0YWluIGFjdGlvbnMuXG4gKi9cbmV4cG9ydCBjbGFzcyBTTlByaXZpbGVnZXMgZXh0ZW5kcyBTTkl0ZW0ge1xuICAgIGNvbnN0cnVjdG9yKHBheWxvYWQpIHtcbiAgICAgICAgc3VwZXIocGF5bG9hZCk7XG4gICAgICAgIHRoaXMucHJpdmlsZWdlTWFwID0ge307XG4gICAgICAgIHRoaXMucHJpdmlsZWdlTWFwID0gcGF5bG9hZC5zYWZlQ29udGVudC5kZXNrdG9wUHJpdmlsZWdlcyB8fCB7fTtcbiAgICB9XG4gICAgZ2V0IGlzU2luZ2xldG9uKCkge1xuICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICB9XG4gICAgZ2V0IHNpbmdsZXRvblByZWRpY2F0ZSgpIHtcbiAgICAgICAgcmV0dXJuIG5ldyBTTlByZWRpY2F0ZSgnY29udGVudF90eXBlJywgJz0nLCB0aGlzLmNvbnRlbnRfdHlwZSk7XG4gICAgfVxuICAgIGdldENyZWRlbnRpYWxzRm9yQWN0aW9uKGFjdGlvbikge1xuICAgICAgICByZXR1cm4gdGhpcy5wcml2aWxlZ2VNYXBbYWN0aW9uXSB8fCBbXTtcbiAgICB9XG4gICAgaXNDcmVkZW50aWFsUmVxdWlyZWRGb3JBY3Rpb24oYWN0aW9uLCBjcmVkZW50aWFsKSB7XG4gICAgICAgIGNvbnN0IGNyZWRlbnRpYWxzUmVxdWlyZWQgPSB0aGlzLmdldENyZWRlbnRpYWxzRm9yQWN0aW9uKGFjdGlvbik7XG4gICAgICAgIHJldHVybiBjcmVkZW50aWFsc1JlcXVpcmVkLmluY2x1ZGVzKGNyZWRlbnRpYWwpO1xuICAgIH1cbn1cbmV4cG9ydCBjbGFzcyBQcml2aWxlZ2VNdXRhdG9yIGV4dGVuZHMgSXRlbU11dGF0b3Ige1xuICAgIGNvbnN0cnVjdG9yKGl0ZW0sIHNvdXJjZSkge1xuICAgICAgICBzdXBlcihpdGVtLCBzb3VyY2UpO1xuICAgICAgICB0aGlzLnByaXZpbGVnZU1hcCA9IHt9O1xuICAgICAgICB0aGlzLnByaXZpbGVnZXMgPSBpdGVtO1xuICAgICAgICB0aGlzLnByaXZpbGVnZU1hcCA9IENvcHkodGhpcy5wYXlsb2FkLnNhZmVDb250ZW50LmRlc2t0b3BQcml2aWxlZ2VzIHx8IHt9KTtcbiAgICB9XG4gICAgZ2V0UmVzdWx0KCkge1xuICAgICAgICBpZiAodGhpcy5jb250ZW50KSB7XG4gICAgICAgICAgICB0aGlzLmNvbnRlbnQuZGVza3RvcFByaXZpbGVnZXMgPSB0aGlzLnByaXZpbGVnZU1hcDtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gc3VwZXIuZ2V0UmVzdWx0KCk7XG4gICAgfVxuICAgIHNldENyZWRlbnRpYWxzRm9yQWN0aW9uKGFjdGlvbiwgY3JlZGVudGlhbHMpIHtcbiAgICAgICAgdGhpcy5wcml2aWxlZ2VNYXBbYWN0aW9uXSA9IGNyZWRlbnRpYWxzO1xuICAgIH1cbiAgICB0b2dnbGVDcmVkZW50aWFsRm9yQWN0aW9uKGFjdGlvbiwgY3JlZGVudGlhbCkge1xuICAgICAgICBpZiAodGhpcy5wcml2aWxlZ2VzLmlzQ3JlZGVudGlhbFJlcXVpcmVkRm9yQWN0aW9uKGFjdGlvbiwgY3JlZGVudGlhbCkpIHtcbiAgICAgICAgICAgIHRoaXMucmVtb3ZlQ3JlZGVudGlhbEZvckFjdGlvbihhY3Rpb24sIGNyZWRlbnRpYWwpO1xuICAgICAgICB9XG4gICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgdGhpcy5hZGRDcmVkZW50aWFsRm9yQWN0aW9uKGFjdGlvbiwgY3JlZGVudGlhbCk7XG4gICAgICAgIH1cbiAgICB9XG4gICAgcmVtb3ZlQ3JlZGVudGlhbEZvckFjdGlvbihhY3Rpb24sIGNyZWRlbnRpYWwpIHtcbiAgICAgICAgcmVtb3ZlRnJvbUFycmF5KHRoaXMucHJpdmlsZWdlTWFwW2FjdGlvbl0sIGNyZWRlbnRpYWwpO1xuICAgIH1cbiAgICBhZGRDcmVkZW50aWFsRm9yQWN0aW9uKGFjdGlvbiwgY3JlZGVudGlhbCkge1xuICAgICAgICBjb25zdCBjcmVkZW50aWFscyA9IHRoaXMucHJpdmlsZWdlcy5nZXRDcmVkZW50aWFsc0ZvckFjdGlvbihhY3Rpb24pLnNsaWNlKCk7XG4gICAgICAgIGNyZWRlbnRpYWxzLnB1c2goY3JlZGVudGlhbCk7XG4gICAgICAgIHRoaXMuc2V0Q3JlZGVudGlhbHNGb3JBY3Rpb24oYWN0aW9uLCBjcmVkZW50aWFscyk7XG4gICAgfVxufVxuIl0sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7Ozs7O0FBSUE7QUFBQTtBQUNBO0FBQUE7QUFBQTtBQUNBO0FBREE7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUhBO0FBSUE7QUFDQTtBQU5BO0FBQUE7QUFBQTtBQWFBO0FBQ0E7QUFkQTtBQUFBO0FBQUE7QUFnQkE7QUFDQTtBQUNBO0FBbEJBO0FBQUE7QUFBQTtBQU9BO0FBQ0E7QUFSQTtBQUFBO0FBQUE7QUFVQTtBQUNBO0FBWEE7QUFDQTtBQURBO0FBQUE7QUFvQkE7QUFBQTtBQUNBO0FBQUE7QUFBQTtBQUNBO0FBREE7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBSkE7QUFLQTtBQUNBO0FBUEE7QUFBQTtBQUFBO0FBUUE7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBWkE7QUFBQTtBQUFBO0FBY0E7QUFDQTtBQWZBO0FBQUE7QUFBQTtBQWlCQTtBQUNBO0FBQ0E7QUFFQTtBQUNBO0FBQ0E7QUF2QkE7QUFBQTtBQUFBO0FBeUJBO0FBQ0E7QUExQkE7QUFBQTtBQUFBO0FBNEJBO0FBQ0E7QUFDQTtBQUNBO0FBL0JBO0FBQ0E7QUFEQTtBQUFBIiwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./lib/models/app/privileges.ts\n')},"./lib/models/app/smartTag.ts":
|
||
/*!************************************!*\
|
||
!*** ./lib/models/app/smartTag.ts ***!
|
||
\************************************/
|
||
/*! exports provided: SNSmartTag */function(module,__webpack_exports__,__webpack_require__){"use strict";eval('__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "SNSmartTag", function() { return SNSmartTag; });\n/* harmony import */ var _Models_app_tag__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @Models/app/tag */ "./lib/models/app/tag.ts");\n/* harmony import */ var _Models_core_predicate__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! @Models/core/predicate */ "./lib/models/core/predicate.ts");\nfunction _typeof(obj) { "@babel/helpers - typeof"; if (typeof Symbol === "function" && typeof Symbol.iterator === "symbol") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }; } return _typeof(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 (call && (_typeof(call) === "object" || typeof call === "function")) { return call; } return _assertThisInitialized(self); }\n\nfunction _assertThisInitialized(self) { if (self === void 0) { throw new ReferenceError("this hasn\'t been initialised - super() hasn\'t been called"); } return self; }\n\nfunction _getPrototypeOf(o) { _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function _getPrototypeOf(o) { return o.__proto__ || Object.getPrototypeOf(o); }; return _getPrototypeOf(o); }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== "function" && superClass !== null) { throw new TypeError("Super expression must either be null or a function"); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, writable: true, configurable: true } }); if (superClass) _setPrototypeOf(subClass, superClass); }\n\nfunction _setPrototypeOf(o, p) { _setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) { o.__proto__ = p; return o; }; return _setPrototypeOf(o, p); }\n\n\n\n/**\n * A tag that defines a predicate that consumers can use to retrieve a dynamic\n * list of notes.\n */\n\nvar SNSmartTag = /*#__PURE__*/function (_SNTag) {\n _inherits(SNSmartTag, _SNTag);\n\n function SNSmartTag(payload) {\n var _this;\n\n _classCallCheck(this, SNSmartTag);\n\n _this = _possibleConstructorReturn(this, _getPrototypeOf(SNSmartTag).call(this, payload));\n\n if (payload.safeContent.predicate) {\n _this.predicate = _Models_core_predicate__WEBPACK_IMPORTED_MODULE_1__["SNPredicate"].FromJson(payload.safeContent.predicate);\n }\n\n return _this;\n }\n\n return SNSmartTag;\n}(_Models_app_tag__WEBPACK_IMPORTED_MODULE_0__["SNTag"]);//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9saWIvbW9kZWxzL2FwcC9zbWFydFRhZy50cy5qcyIsInNvdXJjZXMiOlsid2VicGFjazovL1NOTGlicmFyeS8uL2xpYi9tb2RlbHMvYXBwL3NtYXJ0VGFnLnRzPzdkYjkiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgU05UYWcgfSBmcm9tICdATW9kZWxzL2FwcC90YWcnO1xuaW1wb3J0IHsgU05QcmVkaWNhdGUgfSBmcm9tICdATW9kZWxzL2NvcmUvcHJlZGljYXRlJztcbi8qKlxuICogQSB0YWcgdGhhdCBkZWZpbmVzIGEgcHJlZGljYXRlIHRoYXQgY29uc3VtZXJzIGNhbiB1c2UgdG8gcmV0cmlldmUgYSBkeW5hbWljXG4gKiBsaXN0IG9mIG5vdGVzLlxuICovXG5leHBvcnQgY2xhc3MgU05TbWFydFRhZyBleHRlbmRzIFNOVGFnIHtcbiAgICBjb25zdHJ1Y3RvcihwYXlsb2FkKSB7XG4gICAgICAgIHN1cGVyKHBheWxvYWQpO1xuICAgICAgICBpZiAocGF5bG9hZC5zYWZlQ29udGVudC5wcmVkaWNhdGUpIHtcbiAgICAgICAgICAgIHRoaXMucHJlZGljYXRlID0gU05QcmVkaWNhdGUuRnJvbUpzb24ocGF5bG9hZC5zYWZlQ29udGVudC5wcmVkaWNhdGUpO1xuICAgICAgICB9XG4gICAgfVxufVxuIl0sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFBQTtBQUNBO0FBQ0E7Ozs7O0FBSUE7QUFBQTtBQUNBO0FBQUE7QUFBQTtBQUNBO0FBREE7QUFDQTtBQUFBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUxBO0FBS0E7QUFDQTtBQVBBO0FBQUEiLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./lib/models/app/smartTag.ts\n')},"./lib/models/app/tag.ts":
|
||
/*!*******************************!*\
|
||
!*** ./lib/models/app/tag.ts ***!
|
||
\*******************************/
|
||
/*! exports provided: SNTag, TagMutator */function(module,__webpack_exports__,__webpack_require__){"use strict";eval('__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "SNTag", function() { return SNTag; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "TagMutator", function() { return TagMutator; });\n/* harmony import */ var _Models_core_item__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @Models/core/item */ "./lib/models/core/item.ts");\n/* harmony import */ var _Models_content_types__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! @Models/content_types */ "./lib/models/content_types.ts");\nfunction _typeof(obj) { "@babel/helpers - typeof"; if (typeof Symbol === "function" && typeof Symbol.iterator === "symbol") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }; } return _typeof(obj); }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } }\n\nfunction _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); } }\n\nfunction _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; }\n\nfunction _possibleConstructorReturn(self, call) { if (call && (_typeof(call) === "object" || typeof call === "function")) { return call; } return _assertThisInitialized(self); }\n\nfunction _assertThisInitialized(self) { if (self === void 0) { throw new ReferenceError("this hasn\'t been initialised - super() hasn\'t been called"); } return self; }\n\nfunction _getPrototypeOf(o) { _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function _getPrototypeOf(o) { return o.__proto__ || Object.getPrototypeOf(o); }; return _getPrototypeOf(o); }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== "function" && superClass !== null) { throw new TypeError("Super expression must either be null or a function"); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, writable: true, configurable: true } }); if (superClass) _setPrototypeOf(subClass, superClass); }\n\nfunction _setPrototypeOf(o, p) { _setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) { o.__proto__ = p; return o; }; return _setPrototypeOf(o, p); }\n\n\n\n/**\n * Allows organization of notes into groups. A tag can have many notes, and a note\n * can have many tags.\n */\n\nvar SNTag = /*#__PURE__*/function (_SNItem) {\n _inherits(SNTag, _SNItem);\n\n function SNTag(payload) {\n var _this;\n\n _classCallCheck(this, SNTag);\n\n _this = _possibleConstructorReturn(this, _getPrototypeOf(SNTag).call(this, payload));\n _this.title = _this.payload.safeContent.title;\n return _this;\n }\n\n _createClass(SNTag, [{\n key: "isSmartTag",\n value: function isSmartTag() {\n return this.content_type === _Models_content_types__WEBPACK_IMPORTED_MODULE_1__["ContentType"].SmartTag;\n }\n }, {\n key: "noteCount",\n get: function get() {\n return this.payload.safeReferences.length;\n }\n }, {\n key: "isAllTag",\n get: function get() {\n return this.payload.safeContent.isAllTag;\n }\n }, {\n key: "isTrashTag",\n get: function get() {\n return this.payload.safeContent.isTrashTag;\n }\n }, {\n key: "isArchiveTag",\n get: function get() {\n return this.payload.safeContent.isArchiveTag;\n }\n }], [{\n key: "arrayToDisplayString",\n value: function arrayToDisplayString(tags) {\n return tags.sort(function (a, b) {\n return a.title > b.title ? 1 : -1;\n }).map(function (tag) {\n return \'#\' + tag.title;\n }).join(\' \');\n }\n }]);\n\n return SNTag;\n}(_Models_core_item__WEBPACK_IMPORTED_MODULE_0__["SNItem"]);\nvar TagMutator = /*#__PURE__*/function (_ItemMutator) {\n _inherits(TagMutator, _ItemMutator);\n\n function TagMutator() {\n _classCallCheck(this, TagMutator);\n\n return _possibleConstructorReturn(this, _getPrototypeOf(TagMutator).apply(this, arguments));\n }\n\n _createClass(TagMutator, [{\n key: "title",\n set: function set(title) {\n this.content.title = title;\n }\n }]);\n\n return TagMutator;\n}(_Models_core_item__WEBPACK_IMPORTED_MODULE_0__["ItemMutator"]);//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9saWIvbW9kZWxzL2FwcC90YWcudHMuanMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly9TTkxpYnJhcnkvLi9saWIvbW9kZWxzL2FwcC90YWcudHM/ZWFkZiJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBTTkl0ZW0sIEl0ZW1NdXRhdG9yIH0gZnJvbSAnQE1vZGVscy9jb3JlL2l0ZW0nO1xuaW1wb3J0IHsgQ29udGVudFR5cGUgfSBmcm9tICdATW9kZWxzL2NvbnRlbnRfdHlwZXMnO1xuLyoqXG4gKiBBbGxvd3Mgb3JnYW5pemF0aW9uIG9mIG5vdGVzIGludG8gZ3JvdXBzLiBBIHRhZyBjYW4gaGF2ZSBtYW55IG5vdGVzLCBhbmQgYSBub3RlXG4gKiBjYW4gaGF2ZSBtYW55IHRhZ3MuXG4gKi9cbmV4cG9ydCBjbGFzcyBTTlRhZyBleHRlbmRzIFNOSXRlbSB7XG4gICAgY29uc3RydWN0b3IocGF5bG9hZCkge1xuICAgICAgICBzdXBlcihwYXlsb2FkKTtcbiAgICAgICAgdGhpcy50aXRsZSA9IHRoaXMucGF5bG9hZC5zYWZlQ29udGVudC50aXRsZTtcbiAgICB9XG4gICAgZ2V0IG5vdGVDb3VudCgpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMucGF5bG9hZC5zYWZlUmVmZXJlbmNlcy5sZW5ndGg7XG4gICAgfVxuICAgIGlzU21hcnRUYWcoKSB7XG4gICAgICAgIHJldHVybiB0aGlzLmNvbnRlbnRfdHlwZSA9PT0gQ29udGVudFR5cGUuU21hcnRUYWc7XG4gICAgfVxuICAgIGdldCBpc0FsbFRhZygpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMucGF5bG9hZC5zYWZlQ29udGVudC5pc0FsbFRhZztcbiAgICB9XG4gICAgZ2V0IGlzVHJhc2hUYWcoKSB7XG4gICAgICAgIHJldHVybiB0aGlzLnBheWxvYWQuc2FmZUNvbnRlbnQuaXNUcmFzaFRhZztcbiAgICB9XG4gICAgZ2V0IGlzQXJjaGl2ZVRhZygpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMucGF5bG9hZC5zYWZlQ29udGVudC5pc0FyY2hpdmVUYWc7XG4gICAgfVxuICAgIHN0YXRpYyBhcnJheVRvRGlzcGxheVN0cmluZyh0YWdzKSB7XG4gICAgICAgIHJldHVybiB0YWdzLnNvcnQoKGEsIGIpID0+IHtcbiAgICAgICAgICAgIHJldHVybiBhLnRpdGxlID4gYi50aXRsZSA/IDEgOiAtMTtcbiAgICAgICAgfSkubWFwKCh0YWcpID0+IHtcbiAgICAgICAgICAgIHJldHVybiAnIycgKyB0YWcudGl0bGU7XG4gICAgICAgIH0pLmpvaW4oJyAnKTtcbiAgICB9XG59XG5leHBvcnQgY2xhc3MgVGFnTXV0YXRvciBleHRlbmRzIEl0ZW1NdXRhdG9yIHtcbiAgICBzZXQgdGl0bGUodGl0bGUpIHtcbiAgICAgICAgdGhpcy5jb250ZW50LnRpdGxlID0gdGl0bGU7XG4gICAgfVxufVxuIl0sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQUFBO0FBQ0E7QUFDQTs7Ozs7QUFJQTtBQUFBO0FBQ0E7QUFBQTtBQUFBO0FBQ0E7QUFEQTtBQUNBO0FBQUE7QUFDQTtBQUZBO0FBR0E7QUFDQTtBQUxBO0FBQUE7QUFBQTtBQVNBO0FBQ0E7QUFWQTtBQUFBO0FBQUE7QUFNQTtBQUNBO0FBUEE7QUFBQTtBQUFBO0FBWUE7QUFDQTtBQWJBO0FBQUE7QUFBQTtBQWVBO0FBQ0E7QUFoQkE7QUFBQTtBQUFBO0FBa0JBO0FBQ0E7QUFuQkE7QUFBQTtBQUFBO0FBcUJBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQTFCQTtBQUNBO0FBREE7QUFBQTtBQTRCQTtBQUFBO0FBQ0E7QUFEQTtBQUFBO0FBQ0E7QUFEQTtBQUFBO0FBQ0E7QUFEQTtBQUFBO0FBQUE7QUFFQTtBQUNBO0FBSEE7QUFDQTtBQURBO0FBQUEiLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./lib/models/app/tag.ts\n')},"./lib/models/app/theme.ts":
|
||
/*!*********************************!*\
|
||
!*** ./lib/models/app/theme.ts ***!
|
||
\*********************************/
|
||
/*! exports provided: SNTheme, ThemeMutator */function(module,__webpack_exports__,__webpack_require__){"use strict";eval('__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "SNTheme", function() { return SNTheme; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "ThemeMutator", function() { return ThemeMutator; });\n/* harmony import */ var _core_item__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./../core/item */ "./lib/models/core/item.ts");\n/* harmony import */ var _Protocol_payloads_deltas_strategies__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! @Protocol/payloads/deltas/strategies */ "./lib/protocol/payloads/deltas/strategies.ts");\n/* harmony import */ var _Models_app_component__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! @Models/app/component */ "./lib/models/app/component.ts");\nfunction _typeof(obj) { "@babel/helpers - typeof"; if (typeof Symbol === "function" && typeof Symbol.iterator === "symbol") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }; } return _typeof(obj); }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } }\n\nfunction _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); } }\n\nfunction _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; }\n\nfunction _possibleConstructorReturn(self, call) { if (call && (_typeof(call) === "object" || typeof call === "function")) { return call; } return _assertThisInitialized(self); }\n\nfunction _assertThisInitialized(self) { if (self === void 0) { throw new ReferenceError("this hasn\'t been initialised - super() hasn\'t been called"); } return self; }\n\nfunction _get(target, property, receiver) { if (typeof Reflect !== "undefined" && Reflect.get) { _get = Reflect.get; } else { _get = function _get(target, property, receiver) { var base = _superPropBase(target, property); if (!base) return; var desc = Object.getOwnPropertyDescriptor(base, property); if (desc.get) { return desc.get.call(receiver); } return desc.value; }; } return _get(target, property, receiver || target); }\n\nfunction _superPropBase(object, property) { while (!Object.prototype.hasOwnProperty.call(object, property)) { object = _getPrototypeOf(object); if (object === null) break; } return object; }\n\nfunction _getPrototypeOf(o) { _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function _getPrototypeOf(o) { return o.__proto__ || Object.getPrototypeOf(o); }; return _getPrototypeOf(o); }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== "function" && superClass !== null) { throw new TypeError("Super expression must either be null or a function"); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, writable: true, configurable: true } }); if (superClass) _setPrototypeOf(subClass, superClass); }\n\nfunction _setPrototypeOf(o, p) { _setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) { o.__proto__ = p; return o; }; return _setPrototypeOf(o, p); }\n\n\n\n\n\nvar SNTheme = /*#__PURE__*/function (_SNComponent) {\n _inherits(SNTheme, _SNComponent);\n\n function SNTheme() {\n var _this;\n\n _classCallCheck(this, SNTheme);\n\n _this = _possibleConstructorReturn(this, _getPrototypeOf(SNTheme).apply(this, arguments));\n _this.area = _Models_app_component__WEBPACK_IMPORTED_MODULE_2__["ComponentArea"].Themes;\n return _this;\n }\n\n _createClass(SNTheme, [{\n key: "isLayerable",\n value: function isLayerable() {\n return this.package_info && this.package_info.layerable;\n }\n /** Do not duplicate under most circumstances. Always keep original */\n\n }, {\n key: "strategyWhenConflictingWithItem",\n value: function strategyWhenConflictingWithItem(item) {\n if (this.errorDecrypting) {\n return _get(_getPrototypeOf(SNTheme.prototype), "strategyWhenConflictingWithItem", this).call(this, item);\n }\n\n return _Protocol_payloads_deltas_strategies__WEBPACK_IMPORTED_MODULE_1__["ConflictStrategy"].KeepLeft;\n }\n }, {\n key: "getMobileRules",\n value: function getMobileRules() {\n return this.getAppDomainValue(_core_item__WEBPACK_IMPORTED_MODULE_0__["AppDataField"].MobileRules) || {\n constants: {},\n rules: {}\n };\n }\n /** Same as getMobileRules but without default value. */\n\n }, {\n key: "hasMobileRules",\n value: function hasMobileRules() {\n return this.getAppDomainValue(_core_item__WEBPACK_IMPORTED_MODULE_0__["AppDataField"].MobileRules);\n }\n }, {\n key: "getNotAvailOnMobile",\n value: function getNotAvailOnMobile() {\n return this.getAppDomainValue(_core_item__WEBPACK_IMPORTED_MODULE_0__["AppDataField"].NotAvailableOnMobile);\n }\n }, {\n key: "isMobileActive",\n value: function isMobileActive() {\n return this.getAppDomainValue(_core_item__WEBPACK_IMPORTED_MODULE_0__["AppDataField"].MobileActive);\n }\n }]);\n\n return SNTheme;\n}(_Models_app_component__WEBPACK_IMPORTED_MODULE_2__["SNComponent"]);\nvar ThemeMutator = /*#__PURE__*/function (_ItemMutator) {\n _inherits(ThemeMutator, _ItemMutator);\n\n function ThemeMutator() {\n _classCallCheck(this, ThemeMutator);\n\n return _possibleConstructorReturn(this, _getPrototypeOf(ThemeMutator).apply(this, arguments));\n }\n\n _createClass(ThemeMutator, [{\n key: "setMobileRules",\n value: function setMobileRules(rules) {\n this.setAppDataItem(_core_item__WEBPACK_IMPORTED_MODULE_0__["AppDataField"].MobileRules, rules);\n }\n }, {\n key: "setNotAvailOnMobile",\n value: function setNotAvailOnMobile(notAvailable) {\n this.setAppDataItem(_core_item__WEBPACK_IMPORTED_MODULE_0__["AppDataField"].NotAvailableOnMobile, notAvailable);\n }\n /**\n * We must not use .active because if you set that to true, it will also\n * activate that theme on desktop/web\n */\n\n }, {\n key: "setMobileActive",\n value: function setMobileActive(active) {\n this.setAppDataItem(_core_item__WEBPACK_IMPORTED_MODULE_0__["AppDataField"].MobileActive, active);\n }\n }]);\n\n return ThemeMutator;\n}(_core_item__WEBPACK_IMPORTED_MODULE_0__["ItemMutator"]);//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9saWIvbW9kZWxzL2FwcC90aGVtZS50cy5qcyIsInNvdXJjZXMiOlsid2VicGFjazovL1NOTGlicmFyeS8uL2xpYi9tb2RlbHMvYXBwL3RoZW1lLnRzP2QyZDAiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQXBwRGF0YUZpZWxkIH0gZnJvbSAnLi8uLi9jb3JlL2l0ZW0nO1xuaW1wb3J0IHsgSXRlbU11dGF0b3IgfSBmcm9tICdATW9kZWxzL2NvcmUvaXRlbSc7XG5pbXBvcnQgeyBDb25mbGljdFN0cmF0ZWd5IH0gZnJvbSAnQFByb3RvY29sL3BheWxvYWRzL2RlbHRhcy9zdHJhdGVnaWVzJztcbmltcG9ydCB7IFNOQ29tcG9uZW50LCBDb21wb25lbnRBcmVhIH0gZnJvbSAnQE1vZGVscy9hcHAvY29tcG9uZW50JztcbmV4cG9ydCBjbGFzcyBTTlRoZW1lIGV4dGVuZHMgU05Db21wb25lbnQge1xuICAgIGNvbnN0cnVjdG9yKCkge1xuICAgICAgICBzdXBlciguLi5hcmd1bWVudHMpO1xuICAgICAgICB0aGlzLmFyZWEgPSBDb21wb25lbnRBcmVhLlRoZW1lcztcbiAgICB9XG4gICAgaXNMYXllcmFibGUoKSB7XG4gICAgICAgIHJldHVybiB0aGlzLnBhY2thZ2VfaW5mbyAmJiB0aGlzLnBhY2thZ2VfaW5mby5sYXllcmFibGU7XG4gICAgfVxuICAgIC8qKiBEbyBub3QgZHVwbGljYXRlIHVuZGVyIG1vc3QgY2lyY3Vtc3RhbmNlcy4gQWx3YXlzIGtlZXAgb3JpZ2luYWwgKi9cbiAgICBzdHJhdGVneVdoZW5Db25mbGljdGluZ1dpdGhJdGVtKGl0ZW0pIHtcbiAgICAgICAgaWYgKHRoaXMuZXJyb3JEZWNyeXB0aW5nKSB7XG4gICAgICAgICAgICByZXR1cm4gc3VwZXIuc3RyYXRlZ3lXaGVuQ29uZmxpY3RpbmdXaXRoSXRlbShpdGVtKTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gQ29uZmxpY3RTdHJhdGVneS5LZWVwTGVmdDtcbiAgICB9XG4gICAgZ2V0TW9iaWxlUnVsZXMoKSB7XG4gICAgICAgIHJldHVybiB0aGlzLmdldEFwcERvbWFpblZhbHVlKEFwcERhdGFGaWVsZC5Nb2JpbGVSdWxlcykgfHwgeyBjb25zdGFudHM6IHt9LCBydWxlczoge30gfTtcbiAgICB9XG4gICAgLyoqIFNhbWUgYXMgZ2V0TW9iaWxlUnVsZXMgYnV0IHdpdGhvdXQgZGVmYXVsdCB2YWx1ZS4gKi9cbiAgICBoYXNNb2JpbGVSdWxlcygpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuZ2V0QXBwRG9tYWluVmFsdWUoQXBwRGF0YUZpZWxkLk1vYmlsZVJ1bGVzKTtcbiAgICB9XG4gICAgZ2V0Tm90QXZhaWxPbk1vYmlsZSgpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuZ2V0QXBwRG9tYWluVmFsdWUoQXBwRGF0YUZpZWxkLk5vdEF2YWlsYWJsZU9uTW9iaWxlKTtcbiAgICB9XG4gICAgaXNNb2JpbGVBY3RpdmUoKSB7XG4gICAgICAgIHJldHVybiB0aGlzLmdldEFwcERvbWFpblZhbHVlKEFwcERhdGFGaWVsZC5Nb2JpbGVBY3RpdmUpO1xuICAgIH1cbn1cbmV4cG9ydCBjbGFzcyBUaGVtZU11dGF0b3IgZXh0ZW5kcyBJdGVtTXV0YXRvciB7XG4gICAgc2V0TW9iaWxlUnVsZXMocnVsZXMpIHtcbiAgICAgICAgdGhpcy5zZXRBcHBEYXRhSXRlbShBcHBEYXRhRmllbGQuTW9iaWxlUnVsZXMsIHJ1bGVzKTtcbiAgICB9XG4gICAgc2V0Tm90QXZhaWxPbk1vYmlsZShub3RBdmFpbGFibGUpIHtcbiAgICAgICAgdGhpcy5zZXRBcHBEYXRhSXRlbShBcHBEYXRhRmllbGQuTm90QXZhaWxhYmxlT25Nb2JpbGUsIG5vdEF2YWlsYWJsZSk7XG4gICAgfVxuICAgIC8qKlxuICAgICAqIFdlIG11c3Qgbm90IHVzZSAuYWN0aXZlIGJlY2F1c2UgaWYgeW91IHNldCB0aGF0IHRvIHRydWUsIGl0IHdpbGwgYWxzb1xuICAgICAqIGFjdGl2YXRlIHRoYXQgdGhlbWUgb24gZGVza3RvcC93ZWJcbiAgICAgKi9cbiAgICBzZXRNb2JpbGVBY3RpdmUoYWN0aXZlKSB7XG4gICAgICAgIHRoaXMuc2V0QXBwRGF0YUl0ZW0oQXBwRGF0YUZpZWxkLk1vYmlsZUFjdGl2ZSwgYWN0aXZlKTtcbiAgICB9XG59XG4iXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUFBO0FBQUE7QUFDQTtBQURBO0FBQ0E7QUFBQTtBQUNBO0FBRkE7QUFHQTtBQUNBO0FBTEE7QUFBQTtBQUFBO0FBTUE7QUFDQTtBQUNBO0FBQ0E7QUFUQTtBQUFBO0FBQUE7QUFVQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFkQTtBQUFBO0FBQUE7QUFnQkE7QUFBQTtBQUFBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFuQkE7QUFBQTtBQUFBO0FBb0JBO0FBQ0E7QUFyQkE7QUFBQTtBQUFBO0FBdUJBO0FBQ0E7QUF4QkE7QUFBQTtBQUFBO0FBMEJBO0FBQ0E7QUEzQkE7QUFDQTtBQURBO0FBQUE7QUE2QkE7QUFBQTtBQUNBO0FBREE7QUFBQTtBQUNBO0FBREE7QUFBQTtBQUNBO0FBREE7QUFBQTtBQUFBO0FBRUE7QUFDQTtBQUhBO0FBQUE7QUFBQTtBQUtBO0FBQ0E7QUFDQTs7Ozs7QUFQQTtBQUFBO0FBQUE7QUFZQTtBQUNBO0FBYkE7QUFDQTtBQURBO0FBQUEiLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./lib/models/app/theme.ts\n')},"./lib/models/app/userPrefs.ts":
|
||
/*!*************************************!*\
|
||
!*** ./lib/models/app/userPrefs.ts ***!
|
||
\*************************************/
|
||
/*! exports provided: WebPrefKey, SNUserPrefs, UserPrefsMutator */function(module,__webpack_exports__,__webpack_require__){"use strict";eval('__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "WebPrefKey", function() { return WebPrefKey; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "SNUserPrefs", function() { return SNUserPrefs; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "UserPrefsMutator", function() { return UserPrefsMutator; });\n/* harmony import */ var _Models_core_item__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @Models/core/item */ "./lib/models/core/item.ts");\n/* harmony import */ var _Models_core_predicate__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! @Models/core/predicate */ "./lib/models/core/predicate.ts");\nfunction _typeof(obj) { "@babel/helpers - typeof"; if (typeof Symbol === "function" && typeof Symbol.iterator === "symbol") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }; } return _typeof(obj); }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } }\n\nfunction _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); } }\n\nfunction _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; }\n\nfunction _possibleConstructorReturn(self, call) { if (call && (_typeof(call) === "object" || typeof call === "function")) { return call; } return _assertThisInitialized(self); }\n\nfunction _assertThisInitialized(self) { if (self === void 0) { throw new ReferenceError("this hasn\'t been initialised - super() hasn\'t been called"); } return self; }\n\nfunction _getPrototypeOf(o) { _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function _getPrototypeOf(o) { return o.__proto__ || Object.getPrototypeOf(o); }; return _getPrototypeOf(o); }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== "function" && superClass !== null) { throw new TypeError("Super expression must either be null or a function"); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, writable: true, configurable: true } }); if (superClass) _setPrototypeOf(subClass, superClass); }\n\nfunction _setPrototypeOf(o, p) { _setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) { o.__proto__ = p; return o; }; return _setPrototypeOf(o, p); }\n\n\n\nvar WebPrefKey;\n\n(function (WebPrefKey) {\n WebPrefKey["TagsPanelWidth"] = "tagsPanelWidth";\n WebPrefKey["NotesPanelWidth"] = "notesPanelWidth";\n WebPrefKey["EditorWidth"] = "editorWidth";\n WebPrefKey["EditorLeft"] = "editorLeft";\n WebPrefKey["EditorMonospaceEnabled"] = "monospaceFont";\n WebPrefKey["EditorSpellcheck"] = "spellcheck";\n WebPrefKey["EditorResizersEnabled"] = "marginResizersEnabled";\n WebPrefKey["SortNotesBy"] = "sortBy";\n WebPrefKey["SortNotesReverse"] = "sortReverse";\n WebPrefKey["NotesShowArchived"] = "showArchived";\n WebPrefKey["NotesHidePinned"] = "hidePinned";\n WebPrefKey["NotesHideNotePreview"] = "hideNotePreview";\n WebPrefKey["NotesHideDate"] = "hideDate";\n})(WebPrefKey || (WebPrefKey = {}));\n\n;\nvar SNUserPrefs = /*#__PURE__*/function (_SNItem) {\n _inherits(SNUserPrefs, _SNItem);\n\n function SNUserPrefs() {\n _classCallCheck(this, SNUserPrefs);\n\n return _possibleConstructorReturn(this, _getPrototypeOf(SNUserPrefs).apply(this, arguments));\n }\n\n _createClass(SNUserPrefs, [{\n key: "getPref",\n value: function getPref(key) {\n return this.getAppDomainValue(key);\n }\n }, {\n key: "isSingleton",\n get: function get() {\n return true;\n }\n }, {\n key: "singletonPredicate",\n get: function get() {\n return new _Models_core_predicate__WEBPACK_IMPORTED_MODULE_1__["SNPredicate"](\'content_type\', \'=\', this.content_type);\n }\n }]);\n\n return SNUserPrefs;\n}(_Models_core_item__WEBPACK_IMPORTED_MODULE_0__["SNItem"]);\nvar UserPrefsMutator = /*#__PURE__*/function (_ItemMutator) {\n _inherits(UserPrefsMutator, _ItemMutator);\n\n function UserPrefsMutator() {\n _classCallCheck(this, UserPrefsMutator);\n\n return _possibleConstructorReturn(this, _getPrototypeOf(UserPrefsMutator).apply(this, arguments));\n }\n\n _createClass(UserPrefsMutator, [{\n key: "setWebPref",\n value: function setWebPref(key, value) {\n this.setAppDataItem(key, value);\n }\n }]);\n\n return UserPrefsMutator;\n}(_Models_core_item__WEBPACK_IMPORTED_MODULE_0__["ItemMutator"]);//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9saWIvbW9kZWxzL2FwcC91c2VyUHJlZnMudHMuanMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly9TTkxpYnJhcnkvLi9saWIvbW9kZWxzL2FwcC91c2VyUHJlZnMudHM/MDljYiJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBTTkl0ZW0sIEl0ZW1NdXRhdG9yIH0gZnJvbSAnQE1vZGVscy9jb3JlL2l0ZW0nO1xuaW1wb3J0IHsgU05QcmVkaWNhdGUgfSBmcm9tICdATW9kZWxzL2NvcmUvcHJlZGljYXRlJztcbmV4cG9ydCB2YXIgV2ViUHJlZktleTtcbihmdW5jdGlvbiAoV2ViUHJlZktleSkge1xuICAgIFdlYlByZWZLZXlbXCJUYWdzUGFuZWxXaWR0aFwiXSA9IFwidGFnc1BhbmVsV2lkdGhcIjtcbiAgICBXZWJQcmVmS2V5W1wiTm90ZXNQYW5lbFdpZHRoXCJdID0gXCJub3Rlc1BhbmVsV2lkdGhcIjtcbiAgICBXZWJQcmVmS2V5W1wiRWRpdG9yV2lkdGhcIl0gPSBcImVkaXRvcldpZHRoXCI7XG4gICAgV2ViUHJlZktleVtcIkVkaXRvckxlZnRcIl0gPSBcImVkaXRvckxlZnRcIjtcbiAgICBXZWJQcmVmS2V5W1wiRWRpdG9yTW9ub3NwYWNlRW5hYmxlZFwiXSA9IFwibW9ub3NwYWNlRm9udFwiO1xuICAgIFdlYlByZWZLZXlbXCJFZGl0b3JTcGVsbGNoZWNrXCJdID0gXCJzcGVsbGNoZWNrXCI7XG4gICAgV2ViUHJlZktleVtcIkVkaXRvclJlc2l6ZXJzRW5hYmxlZFwiXSA9IFwibWFyZ2luUmVzaXplcnNFbmFibGVkXCI7XG4gICAgV2ViUHJlZktleVtcIlNvcnROb3Rlc0J5XCJdID0gXCJzb3J0QnlcIjtcbiAgICBXZWJQcmVmS2V5W1wiU29ydE5vdGVzUmV2ZXJzZVwiXSA9IFwic29ydFJldmVyc2VcIjtcbiAgICBXZWJQcmVmS2V5W1wiTm90ZXNTaG93QXJjaGl2ZWRcIl0gPSBcInNob3dBcmNoaXZlZFwiO1xuICAgIFdlYlByZWZLZXlbXCJOb3Rlc0hpZGVQaW5uZWRcIl0gPSBcImhpZGVQaW5uZWRcIjtcbiAgICBXZWJQcmVmS2V5W1wiTm90ZXNIaWRlTm90ZVByZXZpZXdcIl0gPSBcImhpZGVOb3RlUHJldmlld1wiO1xuICAgIFdlYlByZWZLZXlbXCJOb3Rlc0hpZGVEYXRlXCJdID0gXCJoaWRlRGF0ZVwiO1xufSkoV2ViUHJlZktleSB8fCAoV2ViUHJlZktleSA9IHt9KSk7XG47XG5leHBvcnQgY2xhc3MgU05Vc2VyUHJlZnMgZXh0ZW5kcyBTTkl0ZW0ge1xuICAgIGdldCBpc1NpbmdsZXRvbigpIHtcbiAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgfVxuICAgIGdldCBzaW5nbGV0b25QcmVkaWNhdGUoKSB7XG4gICAgICAgIHJldHVybiBuZXcgU05QcmVkaWNhdGUoJ2NvbnRlbnRfdHlwZScsICc9JywgdGhpcy5jb250ZW50X3R5cGUpO1xuICAgIH1cbiAgICBnZXRQcmVmKGtleSkge1xuICAgICAgICByZXR1cm4gdGhpcy5nZXRBcHBEb21haW5WYWx1ZShrZXkpO1xuICAgIH1cbn1cbmV4cG9ydCBjbGFzcyBVc2VyUHJlZnNNdXRhdG9yIGV4dGVuZHMgSXRlbU11dGF0b3Ige1xuICAgIHNldFdlYlByZWYoa2V5LCB2YWx1ZSkge1xuICAgICAgICB0aGlzLnNldEFwcERhdGFJdGVtKGtleSwgdmFsdWUpO1xuICAgIH1cbn1cbiJdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFBQTtBQUNBO0FBREE7QUFBQTtBQUNBO0FBREE7QUFBQTtBQUNBO0FBREE7QUFBQTtBQUFBO0FBUUE7QUFDQTtBQVRBO0FBQUE7QUFBQTtBQUVBO0FBQ0E7QUFIQTtBQUFBO0FBQUE7QUFLQTtBQUNBO0FBTkE7QUFDQTtBQURBO0FBQUE7QUFXQTtBQUFBO0FBQ0E7QUFEQTtBQUFBO0FBQ0E7QUFEQTtBQUFBO0FBQ0E7QUFEQTtBQUFBO0FBQUE7QUFFQTtBQUNBO0FBSEE7QUFDQTtBQURBO0FBQUEiLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./lib/models/app/userPrefs.ts\n')},"./lib/models/content_types.ts":
|
||
/*!*************************************!*\
|
||
!*** ./lib/models/content_types.ts ***!
|
||
\*************************************/
|
||
/*! exports provided: DefaultAppDomain, ContentType, displayStringForContentType */function(module,__webpack_exports__,__webpack_require__){"use strict";eval('__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "DefaultAppDomain", function() { return DefaultAppDomain; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "ContentType", function() { return ContentType; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "displayStringForContentType", function() { return displayStringForContentType; });\nfunction _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\n\nvar DefaultAppDomain = \'org.standardnotes.sn\';\nvar ContentType;\n\n(function (ContentType) {\n ContentType["Any"] = "*";\n ContentType["Item"] = "SF|Item";\n ContentType["RootKey"] = "SN|RootKey|NoSync";\n ContentType["ItemsKey"] = "SN|ItemsKey";\n ContentType["EncryptedStorage"] = "SN|EncryptedStorage";\n ContentType["Note"] = "Note";\n ContentType["Tag"] = "Tag";\n ContentType["SmartTag"] = "SN|SmartTag";\n ContentType["Component"] = "SN|Component";\n ContentType["Editor"] = "SN|Editor";\n ContentType["ActionsExtension"] = "Extension";\n ContentType["UserPrefs"] = "SN|UserPreferences";\n ContentType["Privileges"] = "SN|Privileges";\n ContentType["HistorySession"] = "SN|HistorySession";\n ContentType["Theme"] = "SN|Theme";\n ContentType["Mfa"] = "SF|MFA";\n ContentType["ServerExtension"] = "SF|Extension";\n ContentType["FilesafeCredentials"] = "SN|FileSafe|Credentials";\n ContentType["FilesafeFileMetadata"] = "SN|FileSafe|FileMetadata";\n ContentType["FilesafeIntegration"] = "SN|FileSafe|Integration";\n ContentType["ExtensionRepo"] = "SN|ExtensionRepo";\n})(ContentType || (ContentType = {}));\n\n;\nfunction displayStringForContentType(contentType) {\n var _map;\n\n var map = (_map = {}, _defineProperty(_map, ContentType.Note, \'note\'), _defineProperty(_map, ContentType.Tag, \'tag\'), _defineProperty(_map, ContentType.SmartTag, \'smart tag\'), _defineProperty(_map, ContentType.ActionsExtension, \'action-based extension\'), _defineProperty(_map, ContentType.Component, \'component\'), _defineProperty(_map, ContentType.Editor, \'editor\'), _defineProperty(_map, ContentType.Theme, \'theme\'), _defineProperty(_map, ContentType.ServerExtension, \'server extension\'), _defineProperty(_map, ContentType.Mfa, \'two-factor authentication setting\'), _defineProperty(_map, ContentType.FilesafeCredentials, \'FileSafe credential\'), _defineProperty(_map, ContentType.FilesafeFileMetadata, \'FileSafe file\'), _defineProperty(_map, ContentType.FilesafeIntegration, \'FileSafe integration\'), _map);\n return map[contentType];\n}//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9saWIvbW9kZWxzL2NvbnRlbnRfdHlwZXMudHMuanMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly9TTkxpYnJhcnkvLi9saWIvbW9kZWxzL2NvbnRlbnRfdHlwZXMudHM/MmQzYyJdLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgY29uc3QgRGVmYXVsdEFwcERvbWFpbiA9ICdvcmcuc3RhbmRhcmRub3Rlcy5zbic7XG5leHBvcnQgdmFyIENvbnRlbnRUeXBlO1xuKGZ1bmN0aW9uIChDb250ZW50VHlwZSkge1xuICAgIENvbnRlbnRUeXBlW1wiQW55XCJdID0gXCIqXCI7XG4gICAgQ29udGVudFR5cGVbXCJJdGVtXCJdID0gXCJTRnxJdGVtXCI7XG4gICAgQ29udGVudFR5cGVbXCJSb290S2V5XCJdID0gXCJTTnxSb290S2V5fE5vU3luY1wiO1xuICAgIENvbnRlbnRUeXBlW1wiSXRlbXNLZXlcIl0gPSBcIlNOfEl0ZW1zS2V5XCI7XG4gICAgQ29udGVudFR5cGVbXCJFbmNyeXB0ZWRTdG9yYWdlXCJdID0gXCJTTnxFbmNyeXB0ZWRTdG9yYWdlXCI7XG4gICAgQ29udGVudFR5cGVbXCJOb3RlXCJdID0gXCJOb3RlXCI7XG4gICAgQ29udGVudFR5cGVbXCJUYWdcIl0gPSBcIlRhZ1wiO1xuICAgIENvbnRlbnRUeXBlW1wiU21hcnRUYWdcIl0gPSBcIlNOfFNtYXJ0VGFnXCI7XG4gICAgQ29udGVudFR5cGVbXCJDb21wb25lbnRcIl0gPSBcIlNOfENvbXBvbmVudFwiO1xuICAgIENvbnRlbnRUeXBlW1wiRWRpdG9yXCJdID0gXCJTTnxFZGl0b3JcIjtcbiAgICBDb250ZW50VHlwZVtcIkFjdGlvbnNFeHRlbnNpb25cIl0gPSBcIkV4dGVuc2lvblwiO1xuICAgIENvbnRlbnRUeXBlW1wiVXNlclByZWZzXCJdID0gXCJTTnxVc2VyUHJlZmVyZW5jZXNcIjtcbiAgICBDb250ZW50VHlwZVtcIlByaXZpbGVnZXNcIl0gPSBcIlNOfFByaXZpbGVnZXNcIjtcbiAgICBDb250ZW50VHlwZVtcIkhpc3RvcnlTZXNzaW9uXCJdID0gXCJTTnxIaXN0b3J5U2Vzc2lvblwiO1xuICAgIENvbnRlbnRUeXBlW1wiVGhlbWVcIl0gPSBcIlNOfFRoZW1lXCI7XG4gICAgQ29udGVudFR5cGVbXCJNZmFcIl0gPSBcIlNGfE1GQVwiO1xuICAgIENvbnRlbnRUeXBlW1wiU2VydmVyRXh0ZW5zaW9uXCJdID0gXCJTRnxFeHRlbnNpb25cIjtcbiAgICBDb250ZW50VHlwZVtcIkZpbGVzYWZlQ3JlZGVudGlhbHNcIl0gPSBcIlNOfEZpbGVTYWZlfENyZWRlbnRpYWxzXCI7XG4gICAgQ29udGVudFR5cGVbXCJGaWxlc2FmZUZpbGVNZXRhZGF0YVwiXSA9IFwiU058RmlsZVNhZmV8RmlsZU1ldGFkYXRhXCI7XG4gICAgQ29udGVudFR5cGVbXCJGaWxlc2FmZUludGVncmF0aW9uXCJdID0gXCJTTnxGaWxlU2FmZXxJbnRlZ3JhdGlvblwiO1xuICAgIENvbnRlbnRUeXBlW1wiRXh0ZW5zaW9uUmVwb1wiXSA9IFwiU058RXh0ZW5zaW9uUmVwb1wiO1xufSkoQ29udGVudFR5cGUgfHwgKENvbnRlbnRUeXBlID0ge30pKTtcbjtcbmV4cG9ydCBmdW5jdGlvbiBkaXNwbGF5U3RyaW5nRm9yQ29udGVudFR5cGUoY29udGVudFR5cGUpIHtcbiAgICBjb25zdCBtYXAgPSB7XG4gICAgICAgIFtDb250ZW50VHlwZS5Ob3RlXTogJ25vdGUnLFxuICAgICAgICBbQ29udGVudFR5cGUuVGFnXTogJ3RhZycsXG4gICAgICAgIFtDb250ZW50VHlwZS5TbWFydFRhZ106ICdzbWFydCB0YWcnLFxuICAgICAgICBbQ29udGVudFR5cGUuQWN0aW9uc0V4dGVuc2lvbl06ICdhY3Rpb24tYmFzZWQgZXh0ZW5zaW9uJyxcbiAgICAgICAgW0NvbnRlbnRUeXBlLkNvbXBvbmVudF06ICdjb21wb25lbnQnLFxuICAgICAgICBbQ29udGVudFR5cGUuRWRpdG9yXTogJ2VkaXRvcicsXG4gICAgICAgIFtDb250ZW50VHlwZS5UaGVtZV06ICd0aGVtZScsXG4gICAgICAgIFtDb250ZW50VHlwZS5TZXJ2ZXJFeHRlbnNpb25dOiAnc2VydmVyIGV4dGVuc2lvbicsXG4gICAgICAgIFtDb250ZW50VHlwZS5NZmFdOiAndHdvLWZhY3RvciBhdXRoZW50aWNhdGlvbiBzZXR0aW5nJyxcbiAgICAgICAgW0NvbnRlbnRUeXBlLkZpbGVzYWZlQ3JlZGVudGlhbHNdOiAnRmlsZVNhZmUgY3JlZGVudGlhbCcsXG4gICAgICAgIFtDb250ZW50VHlwZS5GaWxlc2FmZUZpbGVNZXRhZGF0YV06ICdGaWxlU2FmZSBmaWxlJyxcbiAgICAgICAgW0NvbnRlbnRUeXBlLkZpbGVzYWZlSW50ZWdyYXRpb25dOiAnRmlsZVNhZmUgaW50ZWdyYXRpb24nXG4gICAgfTtcbiAgICByZXR1cm4gbWFwW2NvbnRlbnRUeXBlXTtcbn1cbiJdLCJtYXBwaW5ncyI6Ijs7Ozs7O0FBQUE7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUFBO0FBQ0E7QUFBQTtBQWNBO0FBQ0EiLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./lib/models/content_types.ts\n')},"./lib/models/core/item.ts":
|
||
/*!*********************************!*\
|
||
!*** ./lib/models/core/item.ts ***!
|
||
\*********************************/
|
||
/*! exports provided: MutationType, AppDataField, SingletonStrategy, SNItem, ItemMutator */function(module,__webpack_exports__,__webpack_require__){"use strict";eval('__webpack_require__.r(__webpack_exports__);\n/* WEBPACK VAR INJECTION */(function(setImmediate) {/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "MutationType", function() { return MutationType; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "AppDataField", function() { return AppDataField; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "SingletonStrategy", function() { return SingletonStrategy; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "SNItem", function() { return SNItem; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "ItemMutator", function() { return ItemMutator; });\n/* harmony import */ var _protocol_payloads_formats__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./../../protocol/payloads/formats */ "./lib/protocol/payloads/formats.ts");\n/* harmony import */ var _Protocol_payloads_deltas_strategies__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! @Protocol/payloads/deltas/strategies */ "./lib/protocol/payloads/deltas/strategies.ts");\n/* harmony import */ var _Payloads_generator__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! @Payloads/generator */ "./lib/protocol/payloads/generator.ts");\n/* harmony import */ var _Lib_utils__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! @Lib/utils */ "./lib/utils.ts");\n/* harmony import */ var _Models_core_predicate__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! @Models/core/predicate */ "./lib/models/core/predicate.ts");\n/* harmony import */ var _content_types__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ../content_types */ "./lib/models/content_types.ts");\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } }\n\nfunction _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); } }\n\nfunction _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; }\n\n\n\n\n\n\n\n\nvar MutationType;\n\n(function (MutationType) {\n /**\n * The item was changed as part of a user interaction. This means that the item\'s\n * user modified date will be updated\n */\n MutationType[MutationType["UserInteraction"] = 1] = "UserInteraction";\n /**\n * The item was changed as part of an internal operation, such as a migration.\n * This change will not updated the item\'s user modified date\n */\n\n MutationType[MutationType["Internal"] = 2] = "Internal";\n /**\n * The item was changed as part of an internal function that wishes to modify\n * internal item properties, such as lastSyncBegan, without modifying the item\'s dirty\n * state. By default all other mutation types will result in a dirtied result.\n */\n\n MutationType[MutationType["NonDirtying"] = 3] = "NonDirtying";\n})(MutationType || (MutationType = {}));\n\nvar AppDataField;\n\n(function (AppDataField) {\n AppDataField["Pinned"] = "pinned";\n AppDataField["Archived"] = "archived";\n AppDataField["Locked"] = "locked";\n AppDataField["UserModifiedDate"] = "client_updated_at";\n AppDataField["DefaultEditor"] = "defaultEditor";\n AppDataField["MobileRules"] = "mobileRules";\n AppDataField["NotAvailableOnMobile"] = "notAvailableOnMobile";\n AppDataField["MobileActive"] = "mobileActive";\n AppDataField["LastSize"] = "lastSize";\n AppDataField["PrefersPlainEditor"] = "prefersPlainEditor";\n AppDataField["ComponentInstallError"] = "installError";\n})(AppDataField || (AppDataField = {}));\n\nvar SingletonStrategy;\n\n(function (SingletonStrategy) {\n SingletonStrategy[SingletonStrategy["KeepEarliest"] = 1] = "KeepEarliest";\n})(SingletonStrategy || (SingletonStrategy = {}));\n\n;\n/**\n * The most abstract item that any syncable item needs to extend from.\n */\n\nvar SNItem = /*#__PURE__*/function () {\n function SNItem(payload) {\n var _this = this;\n\n _classCallCheck(this, SNItem);\n\n this.protected = false;\n this.trashed = false;\n this.pinned = false;\n this.archived = false;\n this.locked = false;\n\n if (!payload.uuid || !payload.content_type) {\n throw Error(\'Cannot create item without both uuid and content_type\');\n }\n\n if (payload.format === _protocol_payloads_formats__WEBPACK_IMPORTED_MODULE_0__["PayloadFormat"].DecryptedBareObject && (payload.enc_item_key || payload.items_key_id || payload.auth_hash)) {\n throw Error(\'Creating an item from a decrypted payload should not contain enc params\');\n }\n\n this.payload = payload;\n this.conflictOf = payload.safeContent.conflict_of;\n this.createdAtString = this.created_at && this.dateToLocalizedString(this.created_at);\n\n if (payload.format === _protocol_payloads_formats__WEBPACK_IMPORTED_MODULE_0__["PayloadFormat"].DecryptedBareObject) {\n this.updatedAtString = this.dateToLocalizedString(this.userModifiedDate);\n this.protected = this.payload.safeContent.protected;\n this.trashed = this.payload.safeContent.trashed;\n this.pinned = this.getAppDomainValue(AppDataField.Pinned);\n this.archived = this.getAppDomainValue(AppDataField.Archived);\n this.locked = this.getAppDomainValue(AppDataField.Locked);\n }\n /** Allow the subclass constructor to complete initialization before deep freezing */\n\n\n setImmediate(function () {\n Object(_Lib_utils__WEBPACK_IMPORTED_MODULE_3__["deepFreeze"])(_this);\n });\n }\n\n _createClass(SNItem, [{\n key: "payloadRepresentation",\n value: function payloadRepresentation(override) {\n return Object(_Payloads_generator__WEBPACK_IMPORTED_MODULE_2__["CopyPayload"])(this.payload, override);\n }\n }, {\n key: "hasRelationshipWithItem",\n value: function hasRelationshipWithItem(item) {\n var _this$payload$safeCon;\n\n var target = (_this$payload$safeCon = this.payload.safeContent.references) === null || _this$payload$safeCon === void 0 ? void 0 : _this$payload$safeCon.find(function (r) {\n return r.uuid === item.uuid;\n });\n return !!target;\n }\n /**\n * Inside of content is a record called `appData` (which should have been called `domainData`).\n * It was named `appData` as a way to indicate that it can house data for multiple apps.\n * Each key of appData is a domain string, which was originally designed\n * to allow for multiple 3rd party apps who share access to the same data to store data\n * in an isolated location. This design premise is antiquited and no longer pursued,\n * however we continue to use it as not to uncesesarily create a large data migration\n * that would require users to sync all their data.\n *\n * domainData[DomainKey] will give you another Record<string, any>.\n *\n * Currently appData[\'org.standardnotes.sn\'] returns an object of type AppData.\n * And appData[\'org.standardnotes.sn.components] returns an object of type ComponentData\n */\n\n }, {\n key: "getDomainData",\n value: function getDomainData(domain) {\n var domainData = this.payload.safeContent.appData;\n\n if (!domainData) {\n return undefined;\n }\n\n var data = domainData[domain];\n return data;\n }\n }, {\n key: "getAppDomainValue",\n value: function getAppDomainValue(key) {\n var appData = this.getDomainData(SNItem.DefaultAppDomain());\n return appData[key];\n }\n /**\n * During sync conflicts, when determing whether to create a duplicate for an item,\n * we can omit keys that have no meaningful weight and can be ignored. For example,\n * if one component has active = true and another component has active = false,\n * it would be needless to duplicate them, so instead we ignore that value.\n */\n\n }, {\n key: "contentKeysToIgnoreWhenCheckingEquality",\n value: function contentKeysToIgnoreWhenCheckingEquality() {\n return [\'conflict_of\'];\n }\n /** Same as `contentKeysToIgnoreWhenCheckingEquality`, but keys inside appData[Item.AppDomain] */\n\n }, {\n key: "appDataContentKeysToIgnoreWhenCheckingEquality",\n value: function appDataContentKeysToIgnoreWhenCheckingEquality() {\n return [AppDataField.UserModifiedDate];\n }\n }, {\n key: "getContentCopy",\n value: function getContentCopy() {\n return JSON.parse(JSON.stringify(this.content));\n }\n /** Whether the item has never been synced to a server */\n\n }, {\n key: "strategyWhenConflictingWithItem",\n\n /**\n * Subclasses can override this method and provide their own opinion on whether\n * they want to be duplicated. For example, if this.content.x = 12 and\n * item.content.x = 13, this function can be overriden to always return\n * ConflictStrategy.KeepLeft to say \'don\'t create a duplicate at all, the\n * change is not important.\'\n *\n * In the default implementation, we create a duplicate if content differs.\n * However, if they only differ by references, we KEEP_LEFT_MERGE_REFS.\n */\n value: function strategyWhenConflictingWithItem(item) {\n if (this.errorDecrypting) {\n return _Protocol_payloads_deltas_strategies__WEBPACK_IMPORTED_MODULE_1__["ConflictStrategy"].KeepLeftDuplicateRight;\n }\n\n if (this.isSingleton) {\n return _Protocol_payloads_deltas_strategies__WEBPACK_IMPORTED_MODULE_1__["ConflictStrategy"].KeepLeft;\n }\n\n if (this.deleted || item.deleted) {\n return _Protocol_payloads_deltas_strategies__WEBPACK_IMPORTED_MODULE_1__["ConflictStrategy"].KeepRight;\n }\n\n var contentDiffers = ItemContentsDiffer(this, item);\n\n if (!contentDiffers) {\n return _Protocol_payloads_deltas_strategies__WEBPACK_IMPORTED_MODULE_1__["ConflictStrategy"].KeepRight;\n }\n\n var differsExclRefs = ItemContentsDiffer(this, item, [\'references\']);\n\n if (differsExclRefs) {\n return _Protocol_payloads_deltas_strategies__WEBPACK_IMPORTED_MODULE_1__["ConflictStrategy"].KeepLeftDuplicateRight;\n } else {\n /** Is only references change */\n return _Protocol_payloads_deltas_strategies__WEBPACK_IMPORTED_MODULE_1__["ConflictStrategy"].KeepLeftMergeRefs;\n }\n }\n }, {\n key: "isItemContentEqualWith",\n value: function isItemContentEqualWith(otherItem) {\n return ItemContentsEqual(this.payload.contentObject, otherItem.payload.contentObject, this.contentKeysToIgnoreWhenCheckingEquality(), this.appDataContentKeysToIgnoreWhenCheckingEquality());\n }\n }, {\n key: "satisfiesPredicate",\n value: function satisfiesPredicate(predicate) {\n return _Models_core_predicate__WEBPACK_IMPORTED_MODULE_4__["SNPredicate"].ItemSatisfiesPredicate(this, predicate);\n }\n }, {\n key: "updatedAtTimestamp",\n value: function updatedAtTimestamp() {\n var _this$updated_at;\n\n return (_this$updated_at = this.updated_at) === null || _this$updated_at === void 0 ? void 0 : _this$updated_at.getTime();\n }\n }, {\n key: "dateToLocalizedString",\n value: function dateToLocalizedString(date) {\n if (typeof Intl !== \'undefined\' && Intl.DateTimeFormat) {\n if (!SNItem.sharedDateFormatter) {\n var locale = navigator.languages && navigator.languages.length ? navigator.languages[0] : navigator.language;\n SNItem.sharedDateFormatter = new Intl.DateTimeFormat(locale, {\n year: \'numeric\',\n month: \'short\',\n day: \'2-digit\',\n weekday: \'long\',\n hour: \'2-digit\',\n minute: \'2-digit\'\n });\n }\n\n return SNItem.sharedDateFormatter.format(date);\n } else {\n // IE < 11, Safari <= 9.0.\n // In English, this generates the string most similar to\n // the toLocaleDateString() result above.\n return date.toDateString() + \' \' + date.toLocaleTimeString();\n }\n }\n }, {\n key: "uuid",\n get: function get() {\n return this.payload.uuid;\n }\n }, {\n key: "content",\n get: function get() {\n return this.payload.content;\n }\n }, {\n key: "safeContent",\n get: function get() {\n return this.payload.safeContent;\n }\n }, {\n key: "references",\n get: function get() {\n return this.payload.safeContent.references || [];\n }\n }, {\n key: "deleted",\n get: function get() {\n return this.payload.deleted;\n }\n }, {\n key: "content_type",\n get: function get() {\n return this.payload.content_type;\n }\n }, {\n key: "created_at",\n get: function get() {\n return this.payload.created_at;\n }\n }, {\n key: "updated_at",\n get: function get() {\n return this.payload.updated_at;\n }\n }, {\n key: "userModifiedDate",\n get: function get() {\n var value = this.getAppDomainValue(AppDataField.UserModifiedDate);\n return new Date(value || this.updated_at);\n }\n }, {\n key: "dirtiedDate",\n get: function get() {\n return this.payload.dirtiedDate;\n }\n }, {\n key: "dirty",\n get: function get() {\n return this.payload.dirty;\n }\n }, {\n key: "errorDecrypting",\n get: function get() {\n return this.payload.errorDecrypting;\n }\n }, {\n key: "waitingForKey",\n get: function get() {\n return this.payload.waitingForKey;\n }\n }, {\n key: "errorDecryptingValueChanged",\n get: function get() {\n return this.payload.errorDecryptingValueChanged;\n }\n }, {\n key: "lastSyncBegan",\n get: function get() {\n return this.payload.lastSyncBegan;\n }\n }, {\n key: "lastSyncEnd",\n get: function get() {\n return this.payload.lastSyncEnd;\n }\n /** @deprecated */\n\n }, {\n key: "auth_hash",\n get: function get() {\n return this.payload.auth_hash;\n }\n /** @deprecated */\n\n }, {\n key: "auth_params",\n get: function get() {\n return this.payload.auth_params;\n }\n }, {\n key: "neverSynced",\n get: function get() {\n return !this.updated_at || this.updated_at.getTime() === 0;\n }\n /**\n * Subclasses can override this getter to return true if they want only\n * one of this item to exist, depending on custom criteria.\n */\n\n }, {\n key: "isSingleton",\n get: function get() {\n return false;\n }\n /** The predicate by which singleton items should be unique */\n\n }, {\n key: "singletonPredicate",\n get: function get() {\n throw \'Must override SNItem.singletonPredicate\';\n }\n }, {\n key: "singletonStrategy",\n get: function get() {\n return SingletonStrategy.KeepEarliest;\n }\n }], [{\n key: "DefaultAppDomain",\n value: function DefaultAppDomain() {\n return _content_types__WEBPACK_IMPORTED_MODULE_5__["DefaultAppDomain"];\n }\n }]);\n\n return SNItem;\n}();\n/**\n * An item mutator takes in an item, and an operation, and returns the resulting payload.\n * Subclasses of mutators can modify the content field directly, but cannot modify the payload directly.\n * All changes to the payload must occur by copying the payload and reassigning its value.\n */\n\nvar ItemMutator = /*#__PURE__*/function () {\n function ItemMutator(item, type) {\n _classCallCheck(this, ItemMutator);\n\n this.item = item;\n this.type = type;\n this.payload = item.payload;\n\n if (this.payload.content) {\n /** this.content needs to be mutable, so we make a copy */\n this.content = Object(_Lib_utils__WEBPACK_IMPORTED_MODULE_3__["Copy"])(this.payload.content);\n }\n }\n\n _createClass(ItemMutator, [{\n key: "getUuid",\n value: function getUuid() {\n return this.payload.uuid;\n }\n }, {\n key: "getItem",\n value: function getItem() {\n return this.item;\n }\n }, {\n key: "getResult",\n value: function getResult() {\n if (this.type === MutationType.NonDirtying) {\n return Object(_Payloads_generator__WEBPACK_IMPORTED_MODULE_2__["CopyPayload"])(this.payload, {\n content: this.content\n });\n }\n\n if (!this.payload.deleted) {\n if (this.type === MutationType.UserInteraction) {\n // Set the user modified date to now if marking the item as dirty\n this.userModifiedDate = new Date();\n } else {\n var currentValue = this.item.userModifiedDate;\n\n if (!currentValue) {\n // if we don\'t have an explcit raw value, we initialize client_updated_at.\n this.userModifiedDate = new Date(this.item.updated_at);\n }\n }\n }\n\n var result = Object(_Payloads_generator__WEBPACK_IMPORTED_MODULE_2__["CopyPayload"])(this.payload, {\n content: this.content,\n dirty: true,\n dirtiedDate: new Date()\n });\n return result;\n }\n /** Merges the input payload with the base payload */\n\n }, {\n key: "mergePayload",\n value: function mergePayload(payload) {\n this.payload = Object(_Payloads_generator__WEBPACK_IMPORTED_MODULE_2__["PayloadByMerging"])(this.payload, payload);\n\n if (this.payload.content) {\n /** this.content needs to be mutable, so we make a copy */\n this.content = Object(_Lib_utils__WEBPACK_IMPORTED_MODULE_3__["Copy"])(this.payload.safeContent);\n } else {\n this.content = undefined;\n }\n }\n }, {\n key: "setContent",\n value: function setContent(content) {\n this.content = Object(_Lib_utils__WEBPACK_IMPORTED_MODULE_3__["Copy"])(content);\n }\n }, {\n key: "setDeleted",\n value: function setDeleted() {\n this.content = undefined;\n this.payload = Object(_Payloads_generator__WEBPACK_IMPORTED_MODULE_2__["CopyPayload"])(this.payload, {\n content: this.content,\n deleted: true\n });\n }\n }, {\n key: "setDomainData",\n\n /**\n * Overwrites the entirety of this domain\'s data with the data arg.\n */\n value: function setDomainData(data, domain) {\n if (this.payload.errorDecrypting) {\n return undefined;\n }\n\n if (!this.content.appData) {\n this.content.appData = {};\n }\n\n this.content.appData[domain] = data;\n }\n /**\n * First gets the domain data for the input domain.\n * Then sets data[key] = value\n */\n\n }, {\n key: "setDomainDataKey",\n value: function setDomainDataKey(key, value, domain) {\n if (this.payload.errorDecrypting) {\n return undefined;\n }\n\n if (!this.content.appData) {\n this.content.appData = {};\n }\n\n var globalData = this.content.appData;\n\n if (!globalData[domain]) {\n globalData[domain] = {};\n }\n\n var domainData = globalData[domain];\n domainData[key] = value;\n }\n }, {\n key: "setAppDataItem",\n value: function setAppDataItem(key, value) {\n this.setDomainDataKey(key, value, SNItem.DefaultAppDomain());\n }\n }, {\n key: "addItemAsRelationship",\n value: function addItemAsRelationship(item) {\n var references = this.content.references || [];\n\n if (!references.find(function (r) {\n return r.uuid === item.uuid;\n })) {\n references.push({\n uuid: item.uuid,\n content_type: item.content_type\n });\n }\n\n this.content.references = references;\n }\n }, {\n key: "removeItemAsRelationship",\n value: function removeItemAsRelationship(item) {\n var references = this.content.references || [];\n references = references.filter(function (r) {\n return r.uuid !== item.uuid;\n });\n this.content.references = references;\n }\n }, {\n key: "lastSyncBegan",\n set: function set(began) {\n this.payload = Object(_Payloads_generator__WEBPACK_IMPORTED_MODULE_2__["CopyPayload"])(this.payload, {\n content: this.content,\n lastSyncBegan: began\n });\n }\n }, {\n key: "errorDecrypting",\n set: function set(errorDecrypting) {\n this.payload = Object(_Payloads_generator__WEBPACK_IMPORTED_MODULE_2__["CopyPayload"])(this.payload, {\n content: this.content,\n errorDecrypting: errorDecrypting\n });\n }\n }, {\n key: "updated_at",\n set: function set(updated_at) {\n this.payload = Object(_Payloads_generator__WEBPACK_IMPORTED_MODULE_2__["CopyPayload"])(this.payload, {\n updated_at: updated_at\n });\n }\n }, {\n key: "userModifiedDate",\n set: function set(date) {\n this.setAppDataItem(AppDataField.UserModifiedDate, date);\n }\n }, {\n key: "conflictOf",\n set: function set(conflictOf) {\n this.content.conflict_of = conflictOf;\n }\n }, {\n key: "protected",\n set: function set(isProtected) {\n this.content.protected = isProtected;\n }\n }, {\n key: "trashed",\n set: function set(trashed) {\n this.content.trashed = trashed;\n }\n }, {\n key: "pinned",\n set: function set(pinned) {\n this.setAppDataItem(AppDataField.Pinned, pinned);\n }\n }, {\n key: "archived",\n set: function set(archived) {\n this.setAppDataItem(AppDataField.Archived, archived);\n }\n }, {\n key: "locked",\n set: function set(locked) {\n this.setAppDataItem(AppDataField.Locked, locked);\n }\n }]);\n\n return ItemMutator;\n}();\n\nfunction ItemContentsDiffer(item1, item2, excludeContentKeys) {\n if (!excludeContentKeys) {\n excludeContentKeys = [];\n }\n\n return !ItemContentsEqual(item1.content, item2.content, item1.contentKeysToIgnoreWhenCheckingEquality().concat(excludeContentKeys), item1.appDataContentKeysToIgnoreWhenCheckingEquality());\n}\n\nfunction ItemContentsEqual(leftContent, rightContent, keysToIgnore, appDataKeysToIgnore) {\n /* Create copies of objects before running omit as not to modify source values directly. */\n leftContent = Object(_Lib_utils__WEBPACK_IMPORTED_MODULE_3__["sortedCopy"])(leftContent);\n\n if (leftContent.appData) {\n var domainData = leftContent.appData[_content_types__WEBPACK_IMPORTED_MODULE_5__["DefaultAppDomain"]];\n Object(_Lib_utils__WEBPACK_IMPORTED_MODULE_3__["omitInPlace"])(domainData, appDataKeysToIgnore);\n /**\n * We don\'t want to disqualify comparison if one object contains an empty domain object\n * and the other doesn\'t contain a domain object. This can happen if you create an item\n * without setting dirty, which means it won\'t be initialized with a client_updated_at\n */\n\n if (domainData) {\n if (Object.keys(domainData).length === 0) {\n delete leftContent.appData;\n }\n } else {\n delete leftContent.appData;\n }\n }\n\n Object(_Lib_utils__WEBPACK_IMPORTED_MODULE_3__["omitInPlace"])(leftContent, keysToIgnore);\n rightContent = Object(_Lib_utils__WEBPACK_IMPORTED_MODULE_3__["sortedCopy"])(rightContent);\n\n if (rightContent.appData) {\n var _domainData = rightContent.appData[_content_types__WEBPACK_IMPORTED_MODULE_5__["DefaultAppDomain"]];\n Object(_Lib_utils__WEBPACK_IMPORTED_MODULE_3__["omitInPlace"])(_domainData, appDataKeysToIgnore);\n\n if (_domainData) {\n if (Object.keys(_domainData).length === 0) {\n delete rightContent.appData;\n }\n } else {\n delete rightContent.appData;\n }\n }\n\n Object(_Lib_utils__WEBPACK_IMPORTED_MODULE_3__["omitInPlace"])(rightContent, keysToIgnore);\n return JSON.stringify(leftContent) === JSON.stringify(rightContent);\n}\n/* WEBPACK VAR INJECTION */}.call(this, __webpack_require__(/*! ./../../../node_modules/timers-browserify/main.js */ "./node_modules/timers-browserify/main.js").setImmediate))//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9saWIvbW9kZWxzL2NvcmUvaXRlbS50cy5qcyIsInNvdXJjZXMiOlsid2VicGFjazovL1NOTGlicmFyeS8uL2xpYi9tb2RlbHMvY29yZS9pdGVtLnRzP2MwNmYiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgUGF5bG9hZEZvcm1hdCB9IGZyb20gJy4vLi4vLi4vcHJvdG9jb2wvcGF5bG9hZHMvZm9ybWF0cyc7XG5pbXBvcnQgeyBDb25mbGljdFN0cmF0ZWd5IH0gZnJvbSAnQFByb3RvY29sL3BheWxvYWRzL2RlbHRhcy9zdHJhdGVnaWVzJztcbmltcG9ydCB7IENvcHlQYXlsb2FkIH0gZnJvbSAnQFBheWxvYWRzL2dlbmVyYXRvcic7XG5pbXBvcnQgeyBkZWVwRnJlZXplLCBDb3B5LCBzb3J0ZWRDb3B5LCBvbWl0SW5QbGFjZSB9IGZyb20gJ0BMaWIvdXRpbHMnO1xuaW1wb3J0IHsgU05QcmVkaWNhdGUgfSBmcm9tICdATW9kZWxzL2NvcmUvcHJlZGljYXRlJztcbmltcG9ydCB7IERlZmF1bHRBcHBEb21haW4gfSBmcm9tICcuLi9jb250ZW50X3R5cGVzJztcbmltcG9ydCB7IFBheWxvYWRCeU1lcmdpbmcgfSBmcm9tICdATGliL3Byb3RvY29sL3BheWxvYWRzL2dlbmVyYXRvcic7XG5leHBvcnQgdmFyIE11dGF0aW9uVHlwZTtcbihmdW5jdGlvbiAoTXV0YXRpb25UeXBlKSB7XG4gICAgLyoqXG4gICAgICogVGhlIGl0ZW0gd2FzIGNoYW5nZWQgYXMgcGFydCBvZiBhIHVzZXIgaW50ZXJhY3Rpb24uIFRoaXMgbWVhbnMgdGhhdCB0aGUgaXRlbSdzXG4gICAgICogdXNlciBtb2RpZmllZCBkYXRlIHdpbGwgYmUgdXBkYXRlZFxuICAgICAqL1xuICAgIE11dGF0aW9uVHlwZVtNdXRhdGlvblR5cGVbXCJVc2VySW50ZXJhY3Rpb25cIl0gPSAxXSA9IFwiVXNlckludGVyYWN0aW9uXCI7XG4gICAgLyoqXG4gICAgICogVGhlIGl0ZW0gd2FzIGNoYW5nZWQgYXMgcGFydCBvZiBhbiBpbnRlcm5hbCBvcGVyYXRpb24sIHN1Y2ggYXMgYSBtaWdyYXRpb24uXG4gICAgICogVGhpcyBjaGFuZ2Ugd2lsbCBub3QgdXBkYXRlZCB0aGUgaXRlbSdzIHVzZXIgbW9kaWZpZWQgZGF0ZVxuICAgICAqL1xuICAgIE11dGF0aW9uVHlwZVtNdXRhdGlvblR5cGVbXCJJbnRlcm5hbFwiXSA9IDJdID0gXCJJbnRlcm5hbFwiO1xuICAgIC8qKlxuICAgICAqIFRoZSBpdGVtIHdhcyBjaGFuZ2VkIGFzIHBhcnQgb2YgYW4gaW50ZXJuYWwgZnVuY3Rpb24gdGhhdCB3aXNoZXMgdG8gbW9kaWZ5XG4gICAgICogaW50ZXJuYWwgaXRlbSBwcm9wZXJ0aWVzLCBzdWNoIGFzIGxhc3RTeW5jQmVnYW4sIHdpdGhvdXQgbW9kaWZ5aW5nIHRoZSBpdGVtJ3MgZGlydHlcbiAgICAgKiBzdGF0ZS4gQnkgZGVmYXVsdCBhbGwgb3RoZXIgbXV0YXRpb24gdHlwZXMgd2lsbCByZXN1bHQgaW4gYSBkaXJ0aWVkIHJlc3VsdC5cbiAgICAgKi9cbiAgICBNdXRhdGlvblR5cGVbTXV0YXRpb25UeXBlW1wiTm9uRGlydHlpbmdcIl0gPSAzXSA9IFwiTm9uRGlydHlpbmdcIjtcbn0pKE11dGF0aW9uVHlwZSB8fCAoTXV0YXRpb25UeXBlID0ge30pKTtcbmV4cG9ydCB2YXIgQXBwRGF0YUZpZWxkO1xuKGZ1bmN0aW9uIChBcHBEYXRhRmllbGQpIHtcbiAgICBBcHBEYXRhRmllbGRbXCJQaW5uZWRcIl0gPSBcInBpbm5lZFwiO1xuICAgIEFwcERhdGFGaWVsZFtcIkFyY2hpdmVkXCJdID0gXCJhcmNoaXZlZFwiO1xuICAgIEFwcERhdGFGaWVsZFtcIkxvY2tlZFwiXSA9IFwibG9ja2VkXCI7XG4gICAgQXBwRGF0YUZpZWxkW1wiVXNlck1vZGlmaWVkRGF0ZVwiXSA9IFwiY2xpZW50X3VwZGF0ZWRfYXRcIjtcbiAgICBBcHBEYXRhRmllbGRbXCJEZWZhdWx0RWRpdG9yXCJdID0gXCJkZWZhdWx0RWRpdG9yXCI7XG4gICAgQXBwRGF0YUZpZWxkW1wiTW9iaWxlUnVsZXNcIl0gPSBcIm1vYmlsZVJ1bGVzXCI7XG4gICAgQXBwRGF0YUZpZWxkW1wiTm90QXZhaWxhYmxlT25Nb2JpbGVcIl0gPSBcIm5vdEF2YWlsYWJsZU9uTW9iaWxlXCI7XG4gICAgQXBwRGF0YUZpZWxkW1wiTW9iaWxlQWN0aXZlXCJdID0gXCJtb2JpbGVBY3RpdmVcIjtcbiAgICBBcHBEYXRhRmllbGRbXCJMYXN0U2l6ZVwiXSA9IFwibGFzdFNpemVcIjtcbiAgICBBcHBEYXRhRmllbGRbXCJQcmVmZXJzUGxhaW5FZGl0b3JcIl0gPSBcInByZWZlcnNQbGFpbkVkaXRvclwiO1xuICAgIEFwcERhdGFGaWVsZFtcIkNvbXBvbmVudEluc3RhbGxFcnJvclwiXSA9IFwiaW5zdGFsbEVycm9yXCI7XG59KShBcHBEYXRhRmllbGQgfHwgKEFwcERhdGFGaWVsZCA9IHt9KSk7XG5leHBvcnQgdmFyIFNpbmdsZXRvblN0cmF0ZWd5O1xuKGZ1bmN0aW9uIChTaW5nbGV0b25TdHJhdGVneSkge1xuICAgIFNpbmdsZXRvblN0cmF0ZWd5W1NpbmdsZXRvblN0cmF0ZWd5W1wiS2VlcEVhcmxpZXN0XCJdID0gMV0gPSBcIktlZXBFYXJsaWVzdFwiO1xufSkoU2luZ2xldG9uU3RyYXRlZ3kgfHwgKFNpbmdsZXRvblN0cmF0ZWd5ID0ge30pKTtcbjtcbi8qKlxuICogVGhlIG1vc3QgYWJzdHJhY3QgaXRlbSB0aGF0IGFueSBzeW5jYWJsZSBpdGVtIG5lZWRzIHRvIGV4dGVuZCBmcm9tLlxuICovXG5leHBvcnQgY2xhc3MgU05JdGVtIHtcbiAgICBjb25zdHJ1Y3RvcihwYXlsb2FkKSB7XG4gICAgICAgIHRoaXMucHJvdGVjdGVkID0gZmFsc2U7XG4gICAgICAgIHRoaXMudHJhc2hlZCA9IGZhbHNlO1xuICAgICAgICB0aGlzLnBpbm5lZCA9IGZhbHNlO1xuICAgICAgICB0aGlzLmFyY2hpdmVkID0gZmFsc2U7XG4gICAgICAgIHRoaXMubG9ja2VkID0gZmFsc2U7XG4gICAgICAgIGlmICghcGF5bG9hZC51dWlkIHx8ICFwYXlsb2FkLmNvbnRlbnRfdHlwZSkge1xuICAgICAgICAgICAgdGhyb3cgRXJyb3IoJ0Nhbm5vdCBjcmVhdGUgaXRlbSB3aXRob3V0IGJvdGggdXVpZCBhbmQgY29udGVudF90eXBlJyk7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKHBheWxvYWQuZm9ybWF0ID09PSBQYXlsb2FkRm9ybWF0LkRlY3J5cHRlZEJhcmVPYmplY3QgJiZcbiAgICAgICAgICAgIChwYXlsb2FkLmVuY19pdGVtX2tleSB8fCBwYXlsb2FkLml0ZW1zX2tleV9pZCB8fCBwYXlsb2FkLmF1dGhfaGFzaCkpIHtcbiAgICAgICAgICAgIHRocm93IEVycm9yKCdDcmVhdGluZyBhbiBpdGVtIGZyb20gYSBkZWNyeXB0ZWQgcGF5bG9hZCBzaG91bGQgbm90IGNvbnRhaW4gZW5jIHBhcmFtcycpO1xuICAgICAgICB9XG4gICAgICAgIHRoaXMucGF5bG9hZCA9IHBheWxvYWQ7XG4gICAgICAgIHRoaXMuY29uZmxpY3RPZiA9IHBheWxvYWQuc2FmZUNvbnRlbnQuY29uZmxpY3Rfb2Y7XG4gICAgICAgIHRoaXMuY3JlYXRlZEF0U3RyaW5nID0gdGhpcy5jcmVhdGVkX2F0ICYmIHRoaXMuZGF0ZVRvTG9jYWxpemVkU3RyaW5nKHRoaXMuY3JlYXRlZF9hdCk7XG4gICAgICAgIGlmIChwYXlsb2FkLmZvcm1hdCA9PT0gUGF5bG9hZEZvcm1hdC5EZWNyeXB0ZWRCYXJlT2JqZWN0KSB7XG4gICAgICAgICAgICB0aGlzLnVwZGF0ZWRBdFN0cmluZyA9IHRoaXMuZGF0ZVRvTG9jYWxpemVkU3RyaW5nKHRoaXMudXNlck1vZGlmaWVkRGF0ZSk7XG4gICAgICAgICAgICB0aGlzLnByb3RlY3RlZCA9IHRoaXMucGF5bG9hZC5zYWZlQ29udGVudC5wcm90ZWN0ZWQ7XG4gICAgICAgICAgICB0aGlzLnRyYXNoZWQgPSB0aGlzLnBheWxvYWQuc2FmZUNvbnRlbnQudHJhc2hlZDtcbiAgICAgICAgICAgIHRoaXMucGlubmVkID0gdGhpcy5nZXRBcHBEb21haW5WYWx1ZShBcHBEYXRhRmllbGQuUGlubmVkKTtcbiAgICAgICAgICAgIHRoaXMuYXJjaGl2ZWQgPSB0aGlzLmdldEFwcERvbWFpblZhbHVlKEFwcERhdGFGaWVsZC5BcmNoaXZlZCk7XG4gICAgICAgICAgICB0aGlzLmxvY2tlZCA9IHRoaXMuZ2V0QXBwRG9tYWluVmFsdWUoQXBwRGF0YUZpZWxkLkxvY2tlZCk7XG4gICAgICAgIH1cbiAgICAgICAgLyoqIEFsbG93IHRoZSBzdWJjbGFzcyBjb25zdHJ1Y3RvciB0byBjb21wbGV0ZSBpbml0aWFsaXphdGlvbiBiZWZvcmUgZGVlcCBmcmVlemluZyAqL1xuICAgICAgICBzZXRJbW1lZGlhdGUoKCkgPT4ge1xuICAgICAgICAgICAgZGVlcEZyZWV6ZSh0aGlzKTtcbiAgICAgICAgfSk7XG4gICAgfVxuICAgIHN0YXRpYyBEZWZhdWx0QXBwRG9tYWluKCkge1xuICAgICAgICByZXR1cm4gRGVmYXVsdEFwcERvbWFpbjtcbiAgICB9XG4gICAgZ2V0IHV1aWQoKSB7XG4gICAgICAgIHJldHVybiB0aGlzLnBheWxvYWQudXVpZDtcbiAgICB9XG4gICAgZ2V0IGNvbnRlbnQoKSB7XG4gICAgICAgIHJldHVybiB0aGlzLnBheWxvYWQuY29udGVudDtcbiAgICB9XG4gICAgZ2V0IHNhZmVDb250ZW50KCkge1xuICAgICAgICByZXR1cm4gdGhpcy5wYXlsb2FkLnNhZmVDb250ZW50O1xuICAgIH1cbiAgICBnZXQgcmVmZXJlbmNlcygpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMucGF5bG9hZC5zYWZlQ29udGVudC5yZWZlcmVuY2VzIHx8IFtdO1xuICAgIH1cbiAgICBnZXQgZGVsZXRlZCgpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMucGF5bG9hZC5kZWxldGVkO1xuICAgIH1cbiAgICBnZXQgY29udGVudF90eXBlKCkge1xuICAgICAgICByZXR1cm4gdGhpcy5wYXlsb2FkLmNvbnRlbnRfdHlwZTtcbiAgICB9XG4gICAgZ2V0IGNyZWF0ZWRfYXQoKSB7XG4gICAgICAgIHJldHVybiB0aGlzLnBheWxvYWQuY3JlYXRlZF9hdDtcbiAgICB9XG4gICAgZ2V0IHVwZGF0ZWRfYXQoKSB7XG4gICAgICAgIHJldHVybiB0aGlzLnBheWxvYWQudXBkYXRlZF9hdDtcbiAgICB9XG4gICAgZ2V0IHVzZXJNb2RpZmllZERhdGUoKSB7XG4gICAgICAgIGNvbnN0IHZhbHVlID0gdGhpcy5nZXRBcHBEb21haW5WYWx1ZShBcHBEYXRhRmllbGQuVXNlck1vZGlmaWVkRGF0ZSk7XG4gICAgICAgIHJldHVybiBuZXcgRGF0ZSh2YWx1ZSB8fCB0aGlzLnVwZGF0ZWRfYXQpO1xuICAgIH1cbiAgICBnZXQgZGlydGllZERhdGUoKSB7XG4gICAgICAgIHJldHVybiB0aGlzLnBheWxvYWQuZGlydGllZERhdGU7XG4gICAgfVxuICAgIGdldCBkaXJ0eSgpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMucGF5bG9hZC5kaXJ0eTtcbiAgICB9XG4gICAgZ2V0IGVycm9yRGVjcnlwdGluZygpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMucGF5bG9hZC5lcnJvckRlY3J5cHRpbmc7XG4gICAgfVxuICAgIGdldCB3YWl0aW5nRm9yS2V5KCkge1xuICAgICAgICByZXR1cm4gdGhpcy5wYXlsb2FkLndhaXRpbmdGb3JLZXk7XG4gICAgfVxuICAgIGdldCBlcnJvckRlY3J5cHRpbmdWYWx1ZUNoYW5nZWQoKSB7XG4gICAgICAgIHJldHVybiB0aGlzLnBheWxvYWQuZXJyb3JEZWNyeXB0aW5nVmFsdWVDaGFuZ2VkO1xuICAgIH1cbiAgICBnZXQgbGFzdFN5bmNCZWdhbigpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMucGF5bG9hZC5sYXN0U3luY0JlZ2FuO1xuICAgIH1cbiAgICBnZXQgbGFzdFN5bmNFbmQoKSB7XG4gICAgICAgIHJldHVybiB0aGlzLnBheWxvYWQubGFzdFN5bmNFbmQ7XG4gICAgfVxuICAgIC8qKiBAZGVwcmVjYXRlZCAqL1xuICAgIGdldCBhdXRoX2hhc2goKSB7XG4gICAgICAgIHJldHVybiB0aGlzLnBheWxvYWQuYXV0aF9oYXNoO1xuICAgIH1cbiAgICAvKiogQGRlcHJlY2F0ZWQgKi9cbiAgICBnZXQgYXV0aF9wYXJhbXMoKSB7XG4gICAgICAgIHJldHVybiB0aGlzLnBheWxvYWQuYXV0aF9wYXJhbXM7XG4gICAgfVxuICAgIHBheWxvYWRSZXByZXNlbnRhdGlvbihvdmVycmlkZSkge1xuICAgICAgICByZXR1cm4gQ29weVBheWxvYWQodGhpcy5wYXlsb2FkLCBvdmVycmlkZSk7XG4gICAgfVxuICAgIGhhc1JlbGF0aW9uc2hpcFdpdGhJdGVtKGl0ZW0pIHtcbiAgICAgICAgY29uc3QgdGFyZ2V0ID0gdGhpcy5wYXlsb2FkLnNhZmVDb250ZW50LnJlZmVyZW5jZXM/LmZpbmQoKHIpID0+IHtcbiAgICAgICAgICAgIHJldHVybiByLnV1aWQgPT09IGl0ZW0udXVpZDtcbiAgICAgICAgfSk7XG4gICAgICAgIHJldHVybiAhIXRhcmdldDtcbiAgICB9XG4gICAgLyoqXG4gICAgICogSW5zaWRlIG9mIGNvbnRlbnQgaXMgYSByZWNvcmQgY2FsbGVkIGBhcHBEYXRhYCAod2hpY2ggc2hvdWxkIGhhdmUgYmVlbiBjYWxsZWQgYGRvbWFpbkRhdGFgKS5cbiAgICAgKiBJdCB3YXMgbmFtZWQgYGFwcERhdGFgIGFzIGEgd2F5IHRvIGluZGljYXRlIHRoYXQgaXQgY2FuIGhvdXNlIGRhdGEgZm9yIG11bHRpcGxlIGFwcHMuXG4gICAgICogRWFjaCBrZXkgb2YgYXBwRGF0YSBpcyBhIGRvbWFpbiBzdHJpbmcsIHdoaWNoIHdhcyBvcmlnaW5hbGx5IGRlc2lnbmVkXG4gICAgICogdG8gYWxsb3cgZm9yIG11bHRpcGxlIDNyZCBwYXJ0eSBhcHBzIHdobyBzaGFyZSBhY2Nlc3MgdG8gdGhlIHNhbWUgZGF0YSB0byBzdG9yZSBkYXRhXG4gICAgICogaW4gYW4gaXNvbGF0ZWQgbG9jYXRpb24uIFRoaXMgZGVzaWduIHByZW1pc2UgaXMgYW50aXF1aXRlZCBhbmQgbm8gbG9uZ2VyIHB1cnN1ZWQsXG4gICAgICogaG93ZXZlciB3ZSBjb250aW51ZSB0byB1c2UgaXQgYXMgbm90IHRvIHVuY2VzZXNhcmlseSBjcmVhdGUgYSBsYXJnZSBkYXRhIG1pZ3JhdGlvblxuICAgICAqIHRoYXQgd291bGQgcmVxdWlyZSB1c2VycyB0byBzeW5jIGFsbCB0aGVpciBkYXRhLlxuICAgICAqXG4gICAgICogZG9tYWluRGF0YVtEb21haW5LZXldIHdpbGwgZ2l2ZSB5b3UgYW5vdGhlciBSZWNvcmQ8c3RyaW5nLCBhbnk+LlxuICAgICAqXG4gICAgICogQ3VycmVudGx5IGFwcERhdGFbJ29yZy5zdGFuZGFyZG5vdGVzLnNuJ10gcmV0dXJucyBhbiBvYmplY3Qgb2YgdHlwZSBBcHBEYXRhLlxuICAgICAqIEFuZCBhcHBEYXRhWydvcmcuc3RhbmRhcmRub3Rlcy5zbi5jb21wb25lbnRzXSByZXR1cm5zIGFuIG9iamVjdCBvZiB0eXBlIENvbXBvbmVudERhdGFcbiAgICAgKi9cbiAgICBnZXREb21haW5EYXRhKGRvbWFpbikge1xuICAgICAgICBjb25zdCBkb21haW5EYXRhID0gdGhpcy5wYXlsb2FkLnNhZmVDb250ZW50LmFwcERhdGE7XG4gICAgICAgIGlmICghZG9tYWluRGF0YSkge1xuICAgICAgICAgICAgcmV0dXJuIHVuZGVmaW5lZDtcbiAgICAgICAgfVxuICAgICAgICBjb25zdCBkYXRhID0gZG9tYWluRGF0YVtkb21haW5dO1xuICAgICAgICByZXR1cm4gZGF0YTtcbiAgICB9XG4gICAgZ2V0QXBwRG9tYWluVmFsdWUoa2V5KSB7XG4gICAgICAgIGNvbnN0IGFwcERhdGEgPSB0aGlzLmdldERvbWFpbkRhdGEoU05JdGVtLkRlZmF1bHRBcHBEb21haW4oKSk7XG4gICAgICAgIHJldHVybiBhcHBEYXRhW2tleV07XG4gICAgfVxuICAgIC8qKlxuICAgICAqIER1cmluZyBzeW5jIGNvbmZsaWN0cywgd2hlbiBkZXRlcm1pbmcgd2hldGhlciB0byBjcmVhdGUgYSBkdXBsaWNhdGUgZm9yIGFuIGl0ZW0sXG4gICAgICogd2UgY2FuIG9taXQga2V5cyB0aGF0IGhhdmUgbm8gbWVhbmluZ2Z1bCB3ZWlnaHQgYW5kIGNhbiBiZSBpZ25vcmVkLiBGb3IgZXhhbXBsZSxcbiAgICAgKiBpZiBvbmUgY29tcG9uZW50IGhhcyBhY3RpdmUgPSB0cnVlIGFuZCBhbm90aGVyIGNvbXBvbmVudCBoYXMgYWN0aXZlID0gZmFsc2UsXG4gICAgICogaXQgd291bGQgYmUgbmVlZGxlc3MgdG8gZHVwbGljYXRlIHRoZW0sIHNvIGluc3RlYWQgd2UgaWdub3JlIHRoYXQgdmFsdWUuXG4gICAgICovXG4gICAgY29udGVudEtleXNUb0lnbm9yZVdoZW5DaGVja2luZ0VxdWFsaXR5KCkge1xuICAgICAgICByZXR1cm4gWydjb25mbGljdF9vZiddO1xuICAgIH1cbiAgICAvKiogU2FtZSBhcyBgY29udGVudEtleXNUb0lnbm9yZVdoZW5DaGVja2luZ0VxdWFsaXR5YCwgYnV0IGtleXMgaW5zaWRlIGFwcERhdGFbSXRlbS5BcHBEb21haW5dICovXG4gICAgYXBwRGF0YUNvbnRlbnRLZXlzVG9JZ25vcmVXaGVuQ2hlY2tpbmdFcXVhbGl0eSgpIHtcbiAgICAgICAgcmV0dXJuIFtBcHBEYXRhRmllbGQuVXNlck1vZGlmaWVkRGF0ZV07XG4gICAgfVxuICAgIGdldENvbnRlbnRDb3B5KCkge1xuICAgICAgICByZXR1cm4gSlNPTi5wYXJzZShKU09OLnN0cmluZ2lmeSh0aGlzLmNvbnRlbnQpKTtcbiAgICB9XG4gICAgLyoqIFdoZXRoZXIgdGhlIGl0ZW0gaGFzIG5ldmVyIGJlZW4gc3luY2VkIHRvIGEgc2VydmVyICovXG4gICAgZ2V0IG5ldmVyU3luY2VkKCkge1xuICAgICAgICByZXR1cm4gIXRoaXMudXBkYXRlZF9hdCB8fCB0aGlzLnVwZGF0ZWRfYXQuZ2V0VGltZSgpID09PSAwO1xuICAgIH1cbiAgICAvKipcbiAgICAgKiBTdWJjbGFzc2VzIGNhbiBvdmVycmlkZSB0aGlzIGdldHRlciB0byByZXR1cm4gdHJ1ZSBpZiB0aGV5IHdhbnQgb25seVxuICAgICAqIG9uZSBvZiB0aGlzIGl0ZW0gdG8gZXhpc3QsIGRlcGVuZGluZyBvbiBjdXN0b20gY3JpdGVyaWEuXG4gICAgICovXG4gICAgZ2V0IGlzU2luZ2xldG9uKCkge1xuICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgfVxuICAgIC8qKiBUaGUgcHJlZGljYXRlIGJ5IHdoaWNoIHNpbmdsZXRvbiBpdGVtcyBzaG91bGQgYmUgdW5pcXVlICovXG4gICAgZ2V0IHNpbmdsZXRvblByZWRpY2F0ZSgpIHtcbiAgICAgICAgdGhyb3cgJ011c3Qgb3ZlcnJpZGUgU05JdGVtLnNpbmdsZXRvblByZWRpY2F0ZSc7XG4gICAgfVxuICAgIGdldCBzaW5nbGV0b25TdHJhdGVneSgpIHtcbiAgICAgICAgcmV0dXJuIFNpbmdsZXRvblN0cmF0ZWd5LktlZXBFYXJsaWVzdDtcbiAgICB9XG4gICAgLyoqXG4gICAgICogU3ViY2xhc3NlcyBjYW4gb3ZlcnJpZGUgdGhpcyBtZXRob2QgYW5kIHByb3ZpZGUgdGhlaXIgb3duIG9waW5pb24gb24gd2hldGhlclxuICAgICAqIHRoZXkgd2FudCB0byBiZSBkdXBsaWNhdGVkLiBGb3IgZXhhbXBsZSwgaWYgdGhpcy5jb250ZW50LnggPSAxMiBhbmRcbiAgICAgKiBpdGVtLmNvbnRlbnQueCA9IDEzLCB0aGlzIGZ1bmN0aW9uIGNhbiBiZSBvdmVycmlkZW4gdG8gYWx3YXlzIHJldHVyblxuICAgICAqIENvbmZsaWN0U3RyYXRlZ3kuS2VlcExlZnQgdG8gc2F5ICdkb24ndCBjcmVhdGUgYSBkdXBsaWNhdGUgYXQgYWxsLCB0aGVcbiAgICAgKiBjaGFuZ2UgaXMgbm90IGltcG9ydGFudC4nXG4gICAgICpcbiAgICAgKiBJbiB0aGUgZGVmYXVsdCBpbXBsZW1lbnRhdGlvbiwgd2UgY3JlYXRlIGEgZHVwbGljYXRlIGlmIGNvbnRlbnQgZGlmZmVycy5cbiAgICAgKiBIb3dldmVyLCBpZiB0aGV5IG9ubHkgZGlmZmVyIGJ5IHJlZmVyZW5jZXMsIHdlIEtFRVBfTEVGVF9NRVJHRV9SRUZTLlxuICAgICAqL1xuICAgIHN0cmF0ZWd5V2hlbkNvbmZsaWN0aW5nV2l0aEl0ZW0oaXRlbSkge1xuICAgICAgICBpZiAodGhpcy5lcnJvckRlY3J5cHRpbmcpIHtcbiAgICAgICAgICAgIHJldHVybiBDb25mbGljdFN0cmF0ZWd5LktlZXBMZWZ0RHVwbGljYXRlUmlnaHQ7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKHRoaXMuaXNTaW5nbGV0b24pIHtcbiAgICAgICAgICAgIHJldHVybiBDb25mbGljdFN0cmF0ZWd5LktlZXBMZWZ0O1xuICAgICAgICB9XG4gICAgICAgIGlmICh0aGlzLmRlbGV0ZWQgfHwgaXRlbS5kZWxldGVkKSB7XG4gICAgICAgICAgICByZXR1cm4gQ29uZmxpY3RTdHJhdGVneS5LZWVwUmlnaHQ7XG4gICAgICAgIH1cbiAgICAgICAgY29uc3QgY29udGVudERpZmZlcnMgPSBJdGVtQ29udGVudHNEaWZmZXIodGhpcywgaXRlbSk7XG4gICAgICAgIGlmICghY29udGVudERpZmZlcnMpIHtcbiAgICAgICAgICAgIHJldHVybiBDb25mbGljdFN0cmF0ZWd5LktlZXBSaWdodDtcbiAgICAgICAgfVxuICAgICAgICBjb25zdCBkaWZmZXJzRXhjbFJlZnMgPSBJdGVtQ29udGVudHNEaWZmZXIodGhpcywgaXRlbSwgWydyZWZlcmVuY2VzJ10pO1xuICAgICAgICBpZiAoZGlmZmVyc0V4Y2xSZWZzKSB7XG4gICAgICAgICAgICByZXR1cm4gQ29uZmxpY3RTdHJhdGVneS5LZWVwTGVmdER1cGxpY2F0ZVJpZ2h0O1xuICAgICAgICB9XG4gICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgLyoqIElzIG9ubHkgcmVmZXJlbmNlcyBjaGFuZ2UgKi9cbiAgICAgICAgICAgIHJldHVybiBDb25mbGljdFN0cmF0ZWd5LktlZXBMZWZ0TWVyZ2VSZWZzO1xuICAgICAgICB9XG4gICAgfVxuICAgIGlzSXRlbUNvbnRlbnRFcXVhbFdpdGgob3RoZXJJdGVtKSB7XG4gICAgICAgIHJldHVybiBJdGVtQ29udGVudHNFcXVhbCh0aGlzLnBheWxvYWQuY29udGVudE9iamVjdCwgb3RoZXJJdGVtLnBheWxvYWQuY29udGVudE9iamVjdCwgdGhpcy5jb250ZW50S2V5c1RvSWdub3JlV2hlbkNoZWNraW5nRXF1YWxpdHkoKSwgdGhpcy5hcHBEYXRhQ29udGVudEtleXNUb0lnbm9yZVdoZW5DaGVja2luZ0VxdWFsaXR5KCkpO1xuICAgIH1cbiAgICBzYXRpc2ZpZXNQcmVkaWNhdGUocHJlZGljYXRlKSB7XG4gICAgICAgIHJldHVybiBTTlByZWRpY2F0ZS5JdGVtU2F0aXNmaWVzUHJlZGljYXRlKHRoaXMsIHByZWRpY2F0ZSk7XG4gICAgfVxuICAgIHVwZGF0ZWRBdFRpbWVzdGFtcCgpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMudXBkYXRlZF9hdD8uZ2V0VGltZSgpO1xuICAgIH1cbiAgICBkYXRlVG9Mb2NhbGl6ZWRTdHJpbmcoZGF0ZSkge1xuICAgICAgICBpZiAodHlwZW9mIEludGwgIT09ICd1bmRlZmluZWQnICYmIEludGwuRGF0ZVRpbWVGb3JtYXQpIHtcbiAgICAgICAgICAgIGlmICghU05JdGVtLnNoYXJlZERhdGVGb3JtYXR0ZXIpIHtcbiAgICAgICAgICAgICAgICBjb25zdCBsb2NhbGUgPSAoKG5hdmlnYXRvci5sYW5ndWFnZXMgJiYgbmF2aWdhdG9yLmxhbmd1YWdlcy5sZW5ndGgpXG4gICAgICAgICAgICAgICAgICAgID8gbmF2aWdhdG9yLmxhbmd1YWdlc1swXVxuICAgICAgICAgICAgICAgICAgICA6IG5hdmlnYXRvci5sYW5ndWFnZSk7XG4gICAgICAgICAgICAgICAgU05JdGVtLnNoYXJlZERhdGVGb3JtYXR0ZXIgPSBuZXcgSW50bC5EYXRlVGltZUZvcm1hdChsb2NhbGUsIHtcbiAgICAgICAgICAgICAgICAgICAgeWVhcjogJ251bWVyaWMnLFxuICAgICAgICAgICAgICAgICAgICBtb250aDogJ3Nob3J0JyxcbiAgICAgICAgICAgICAgICAgICAgZGF5OiAnMi1kaWdpdCcsXG4gICAgICAgICAgICAgICAgICAgIHdlZWtkYXk6ICdsb25nJyxcbiAgICAgICAgICAgICAgICAgICAgaG91cjogJzItZGlnaXQnLFxuICAgICAgICAgICAgICAgICAgICBtaW51dGU6ICcyLWRpZ2l0JyxcbiAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHJldHVybiBTTkl0ZW0uc2hhcmVkRGF0ZUZvcm1hdHRlci5mb3JtYXQoZGF0ZSk7XG4gICAgICAgIH1cbiAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICAvLyBJRSA8IDExLCBTYWZhcmkgPD0gOS4wLlxuICAgICAgICAgICAgLy8gSW4gRW5nbGlzaCwgdGhpcyBnZW5lcmF0ZXMgdGhlIHN0cmluZyBtb3N0IHNpbWlsYXIgdG9cbiAgICAgICAgICAgIC8vIHRoZSB0b0xvY2FsZURhdGVTdHJpbmcoKSByZXN1bHQgYWJvdmUuXG4gICAgICAgICAgICByZXR1cm4gZGF0ZS50b0RhdGVTdHJpbmcoKSArICcgJyArIGRhdGUudG9Mb2NhbGVUaW1lU3RyaW5nKCk7XG4gICAgICAgIH1cbiAgICB9XG59XG4vKipcbiAqIEFuIGl0ZW0gbXV0YXRvciB0YWtlcyBpbiBhbiBpdGVtLCBhbmQgYW4gb3BlcmF0aW9uLCBhbmQgcmV0dXJucyB0aGUgcmVzdWx0aW5nIHBheWxvYWQuXG4gKiBTdWJjbGFzc2VzIG9mIG11dGF0b3JzIGNhbiBtb2RpZnkgdGhlIGNvbnRlbnQgZmllbGQgZGlyZWN0bHksIGJ1dCBjYW5ub3QgbW9kaWZ5IHRoZSBwYXlsb2FkIGRpcmVjdGx5LlxuICogQWxsIGNoYW5nZXMgdG8gdGhlIHBheWxvYWQgbXVzdCBvY2N1ciBieSBjb3B5aW5nIHRoZSBwYXlsb2FkIGFuZCByZWFzc2lnbmluZyBpdHMgdmFsdWUuXG4gKi9cbmV4cG9ydCBjbGFzcyBJdGVtTXV0YXRvciB7XG4gICAgY29uc3RydWN0b3IoaXRlbSwgdHlwZSkge1xuICAgICAgICB0aGlzLml0ZW0gPSBpdGVtO1xuICAgICAgICB0aGlzLnR5cGUgPSB0eXBlO1xuICAgICAgICB0aGlzLnBheWxvYWQgPSBpdGVtLnBheWxvYWQ7XG4gICAgICAgIGlmICh0aGlzLnBheWxvYWQuY29udGVudCkge1xuICAgICAgICAgICAgLyoqIHRoaXMuY29udGVudCBuZWVkcyB0byBiZSBtdXRhYmxlLCBzbyB3ZSBtYWtlIGEgY29weSAqL1xuICAgICAgICAgICAgdGhpcy5jb250ZW50ID0gQ29weSh0aGlzLnBheWxvYWQuY29udGVudCk7XG4gICAgICAgIH1cbiAgICB9XG4gICAgZ2V0VXVpZCgpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMucGF5bG9hZC51dWlkO1xuICAgIH1cbiAgICBnZXRJdGVtKCkge1xuICAgICAgICByZXR1cm4gdGhpcy5pdGVtO1xuICAgIH1cbiAgICBnZXRSZXN1bHQoKSB7XG4gICAgICAgIGlmICh0aGlzLnR5cGUgPT09IE11dGF0aW9uVHlwZS5Ob25EaXJ0eWluZykge1xuICAgICAgICAgICAgcmV0dXJuIENvcHlQYXlsb2FkKHRoaXMucGF5bG9hZCwge1xuICAgICAgICAgICAgICAgIGNvbnRlbnQ6IHRoaXMuY29udGVudCxcbiAgICAgICAgICAgIH0pO1xuICAgICAgICB9XG4gICAgICAgIGlmICghdGhpcy5wYXlsb2FkLmRlbGV0ZWQpIHtcbiAgICAgICAgICAgIGlmICh0aGlzLnR5cGUgPT09IE11dGF0aW9uVHlwZS5Vc2VySW50ZXJhY3Rpb24pIHtcbiAgICAgICAgICAgICAgICAvLyBTZXQgdGhlIHVzZXIgbW9kaWZpZWQgZGF0ZSB0byBub3cgaWYgbWFya2luZyB0aGUgaXRlbSBhcyBkaXJ0eVxuICAgICAgICAgICAgICAgIHRoaXMudXNlck1vZGlmaWVkRGF0ZSA9IG5ldyBEYXRlKCk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgICAgICBjb25zdCBjdXJyZW50VmFsdWUgPSB0aGlzLml0ZW0udXNlck1vZGlmaWVkRGF0ZTtcbiAgICAgICAgICAgICAgICBpZiAoIWN1cnJlbnRWYWx1ZSkge1xuICAgICAgICAgICAgICAgICAgICAvLyBpZiB3ZSBkb24ndCBoYXZlIGFuIGV4cGxjaXQgcmF3IHZhbHVlLCB3ZSBpbml0aWFsaXplIGNsaWVudF91cGRhdGVkX2F0LlxuICAgICAgICAgICAgICAgICAgICB0aGlzLnVzZXJNb2RpZmllZERhdGUgPSBuZXcgRGF0ZSh0aGlzLml0ZW0udXBkYXRlZF9hdCk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIGNvbnN0IHJlc3VsdCA9IENvcHlQYXlsb2FkKHRoaXMucGF5bG9hZCwge1xuICAgICAgICAgICAgY29udGVudDogdGhpcy5jb250ZW50LFxuICAgICAgICAgICAgZGlydHk6IHRydWUsXG4gICAgICAgICAgICBkaXJ0aWVkRGF0ZTogbmV3IERhdGUoKVxuICAgICAgICB9KTtcbiAgICAgICAgcmV0dXJuIHJlc3VsdDtcbiAgICB9XG4gICAgLyoqIE1lcmdlcyB0aGUgaW5wdXQgcGF5bG9hZCB3aXRoIHRoZSBiYXNlIHBheWxvYWQgKi9cbiAgICBtZXJnZVBheWxvYWQocGF5bG9hZCkge1xuICAgICAgICB0aGlzLnBheWxvYWQgPSBQYXlsb2FkQnlNZXJnaW5nKHRoaXMucGF5bG9hZCwgcGF5bG9hZCk7XG4gICAgICAgIGlmICh0aGlzLnBheWxvYWQuY29udGVudCkge1xuICAgICAgICAgICAgLyoqIHRoaXMuY29udGVudCBuZWVkcyB0byBiZSBtdXRhYmxlLCBzbyB3ZSBtYWtlIGEgY29weSAqL1xuICAgICAgICAgICAgdGhpcy5jb250ZW50ID0gQ29weSh0aGlzLnBheWxvYWQuc2FmZUNvbnRlbnQpO1xuICAgICAgICB9XG4gICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgdGhpcy5jb250ZW50ID0gdW5kZWZpbmVkO1xuICAgICAgICB9XG4gICAgfVxuICAgIHNldENvbnRlbnQoY29udGVudCkge1xuICAgICAgICB0aGlzLmNvbnRlbnQgPSBDb3B5KGNvbnRlbnQpO1xuICAgIH1cbiAgICBzZXREZWxldGVkKCkge1xuICAgICAgICB0aGlzLmNvbnRlbnQgPSB1bmRlZmluZWQ7XG4gICAgICAgIHRoaXMucGF5bG9hZCA9IENvcHlQYXlsb2FkKHRoaXMucGF5bG9hZCwge1xuICAgICAgICAgICAgY29udGVudDogdGhpcy5jb250ZW50LFxuICAgICAgICAgICAgZGVsZXRlZDogdHJ1ZVxuICAgICAgICB9KTtcbiAgICB9XG4gICAgc2V0IGxhc3RTeW5jQmVnYW4oYmVnYW4pIHtcbiAgICAgICAgdGhpcy5wYXlsb2FkID0gQ29weVBheWxvYWQodGhpcy5wYXlsb2FkLCB7XG4gICAgICAgICAgICBjb250ZW50OiB0aGlzLmNvbnRlbnQsXG4gICAgICAgICAgICBsYXN0U3luY0JlZ2FuOiBiZWdhblxuICAgICAgICB9KTtcbiAgICB9XG4gICAgc2V0IGVycm9yRGVjcnlwdGluZyhlcnJvckRlY3J5cHRpbmcpIHtcbiAgICAgICAgdGhpcy5wYXlsb2FkID0gQ29weVBheWxvYWQodGhpcy5wYXlsb2FkLCB7XG4gICAgICAgICAgICBjb250ZW50OiB0aGlzLmNvbnRlbnQsXG4gICAgICAgICAgICBlcnJvckRlY3J5cHRpbmc6IGVycm9yRGVjcnlwdGluZ1xuICAgICAgICB9KTtcbiAgICB9XG4gICAgc2V0IHVwZGF0ZWRfYXQodXBkYXRlZF9hdCkge1xuICAgICAgICB0aGlzLnBheWxvYWQgPSBDb3B5UGF5bG9hZCh0aGlzLnBheWxvYWQsIHtcbiAgICAgICAgICAgIHVwZGF0ZWRfYXQ6IHVwZGF0ZWRfYXRcbiAgICAgICAgfSk7XG4gICAgfVxuICAgIHNldCB1c2VyTW9kaWZpZWREYXRlKGRhdGUpIHtcbiAgICAgICAgdGhpcy5zZXRBcHBEYXRhSXRlbShBcHBEYXRhRmllbGQuVXNlck1vZGlmaWVkRGF0ZSwgZGF0ZSk7XG4gICAgfVxuICAgIHNldCBjb25mbGljdE9mKGNvbmZsaWN0T2YpIHtcbiAgICAgICAgdGhpcy5jb250ZW50LmNvbmZsaWN0X29mID0gY29uZmxpY3RPZjtcbiAgICB9XG4gICAgc2V0IHByb3RlY3RlZChpc1Byb3RlY3RlZCkge1xuICAgICAgICB0aGlzLmNvbnRlbnQucHJvdGVjdGVkID0gaXNQcm90ZWN0ZWQ7XG4gICAgfVxuICAgIHNldCB0cmFzaGVkKHRyYXNoZWQpIHtcbiAgICAgICAgdGhpcy5jb250ZW50LnRyYXNoZWQgPSB0cmFzaGVkO1xuICAgIH1cbiAgICBzZXQgcGlubmVkKHBpbm5lZCkge1xuICAgICAgICB0aGlzLnNldEFwcERhdGFJdGVtKEFwcERhdGFGaWVsZC5QaW5uZWQsIHBpbm5lZCk7XG4gICAgfVxuICAgIHNldCBhcmNoaXZlZChhcmNoaXZlZCkge1xuICAgICAgICB0aGlzLnNldEFwcERhdGFJdGVtKEFwcERhdGFGaWVsZC5BcmNoaXZlZCwgYXJjaGl2ZWQpO1xuICAgIH1cbiAgICBzZXQgbG9ja2VkKGxvY2tlZCkge1xuICAgICAgICB0aGlzLnNldEFwcERhdGFJdGVtKEFwcERhdGFGaWVsZC5Mb2NrZWQsIGxvY2tlZCk7XG4gICAgfVxuICAgIC8qKlxuICAgICAqIE92ZXJ3cml0ZXMgdGhlIGVudGlyZXR5IG9mIHRoaXMgZG9tYWluJ3MgZGF0YSB3aXRoIHRoZSBkYXRhIGFyZy5cbiAgICAgKi9cbiAgICBzZXREb21haW5EYXRhKGRhdGEsIGRvbWFpbikge1xuICAgICAgICBpZiAodGhpcy5wYXlsb2FkLmVycm9yRGVjcnlwdGluZykge1xuICAgICAgICAgICAgcmV0dXJuIHVuZGVmaW5lZDtcbiAgICAgICAgfVxuICAgICAgICBpZiAoIXRoaXMuY29udGVudC5hcHBEYXRhKSB7XG4gICAgICAgICAgICB0aGlzLmNvbnRlbnQuYXBwRGF0YSA9IHt9O1xuICAgICAgICB9XG4gICAgICAgIHRoaXMuY29udGVudC5hcHBEYXRhW2RvbWFpbl0gPSBkYXRhO1xuICAgIH1cbiAgICAvKipcbiAgICAgKiBGaXJzdCBnZXRzIHRoZSBkb21haW4gZGF0YSBmb3IgdGhlIGlucHV0IGRvbWFpbi5cbiAgICAgKiBUaGVuIHNldHMgZGF0YVtrZXldID0gdmFsdWVcbiAgICAgKi9cbiAgICBzZXREb21haW5EYXRhS2V5KGtleSwgdmFsdWUsIGRvbWFpbikge1xuICAgICAgICBpZiAodGhpcy5wYXlsb2FkLmVycm9yRGVjcnlwdGluZykge1xuICAgICAgICAgICAgcmV0dXJuIHVuZGVmaW5lZDtcbiAgICAgICAgfVxuICAgICAgICBpZiAoIXRoaXMuY29udGVudC5hcHBEYXRhKSB7XG4gICAgICAgICAgICB0aGlzLmNvbnRlbnQuYXBwRGF0YSA9IHt9O1xuICAgICAgICB9XG4gICAgICAgIGNvbnN0IGdsb2JhbERhdGEgPSB0aGlzLmNvbnRlbnQuYXBwRGF0YTtcbiAgICAgICAgaWYgKCFnbG9iYWxEYXRhW2RvbWFpbl0pIHtcbiAgICAgICAgICAgIGdsb2JhbERhdGFbZG9tYWluXSA9IHt9O1xuICAgICAgICB9XG4gICAgICAgIGNvbnN0IGRvbWFpbkRhdGEgPSBnbG9iYWxEYXRhW2RvbWFpbl07XG4gICAgICAgIGRvbWFpbkRhdGFba2V5XSA9IHZhbHVlO1xuICAgIH1cbiAgICBzZXRBcHBEYXRhSXRlbShrZXksIHZhbHVlKSB7XG4gICAgICAgIHRoaXMuc2V0RG9tYWluRGF0YUtleShrZXksIHZhbHVlLCBTTkl0ZW0uRGVmYXVsdEFwcERvbWFpbigpKTtcbiAgICB9XG4gICAgYWRkSXRlbUFzUmVsYXRpb25zaGlwKGl0ZW0pIHtcbiAgICAgICAgY29uc3QgcmVmZXJlbmNlcyA9IHRoaXMuY29udGVudC5yZWZlcmVuY2VzIHx8IFtdO1xuICAgICAgICBpZiAoIXJlZmVyZW5jZXMuZmluZCgocikgPT4gci51dWlkID09PSBpdGVtLnV1aWQpKSB7XG4gICAgICAgICAgICByZWZlcmVuY2VzLnB1c2goe1xuICAgICAgICAgICAgICAgIHV1aWQ6IGl0ZW0udXVpZCxcbiAgICAgICAgICAgICAgICBjb250ZW50X3R5cGU6IGl0ZW0uY29udGVudF90eXBlXG4gICAgICAgICAgICB9KTtcbiAgICAgICAgfVxuICAgICAgICB0aGlzLmNvbnRlbnQucmVmZXJlbmNlcyA9IHJlZmVyZW5jZXM7XG4gICAgfVxuICAgIHJlbW92ZUl0ZW1Bc1JlbGF0aW9uc2hpcChpdGVtKSB7XG4gICAgICAgIGxldCByZWZlcmVuY2VzID0gdGhpcy5jb250ZW50LnJlZmVyZW5jZXMgfHwgW107XG4gICAgICAgIHJlZmVyZW5jZXMgPSByZWZlcmVuY2VzLmZpbHRlcigocikgPT4gci51dWlkICE9PSBpdGVtLnV1aWQpO1xuICAgICAgICB0aGlzLmNvbnRlbnQucmVmZXJlbmNlcyA9IHJlZmVyZW5jZXM7XG4gICAgfVxufVxuZnVuY3Rpb24gSXRlbUNvbnRlbnRzRGlmZmVyKGl0ZW0xLCBpdGVtMiwgZXhjbHVkZUNvbnRlbnRLZXlzKSB7XG4gICAgaWYgKCFleGNsdWRlQ29udGVudEtleXMpIHtcbiAgICAgICAgZXhjbHVkZUNvbnRlbnRLZXlzID0gW107XG4gICAgfVxuICAgIHJldHVybiAhSXRlbUNvbnRlbnRzRXF1YWwoaXRlbTEuY29udGVudCwgaXRlbTIuY29udGVudCwgaXRlbTEuY29udGVudEtleXNUb0lnbm9yZVdoZW5DaGVja2luZ0VxdWFsaXR5KCkuY29uY2F0KGV4Y2x1ZGVDb250ZW50S2V5cyksIGl0ZW0xLmFwcERhdGFDb250ZW50S2V5c1RvSWdub3JlV2hlbkNoZWNraW5nRXF1YWxpdHkoKSk7XG59XG5mdW5jdGlvbiBJdGVtQ29udGVudHNFcXVhbChsZWZ0Q29udGVudCwgcmlnaHRDb250ZW50LCBrZXlzVG9JZ25vcmUsIGFwcERhdGFLZXlzVG9JZ25vcmUpIHtcbiAgICAvKiBDcmVhdGUgY29waWVzIG9mIG9iamVjdHMgYmVmb3JlIHJ1bm5pbmcgb21pdCBhcyBub3QgdG8gbW9kaWZ5IHNvdXJjZSB2YWx1ZXMgZGlyZWN0bHkuICovXG4gICAgbGVmdENvbnRlbnQgPSBzb3J0ZWRDb3B5KGxlZnRDb250ZW50KTtcbiAgICBpZiAobGVmdENvbnRlbnQuYXBwRGF0YSkge1xuICAgICAgICBjb25zdCBkb21haW5EYXRhID0gbGVmdENvbnRlbnQuYXBwRGF0YVtEZWZhdWx0QXBwRG9tYWluXTtcbiAgICAgICAgb21pdEluUGxhY2UoZG9tYWluRGF0YSwgYXBwRGF0YUtleXNUb0lnbm9yZSk7XG4gICAgICAgIC8qKlxuICAgICAgICAgKiBXZSBkb24ndCB3YW50IHRvIGRpc3F1YWxpZnkgY29tcGFyaXNvbiBpZiBvbmUgb2JqZWN0IGNvbnRhaW5zIGFuIGVtcHR5IGRvbWFpbiBvYmplY3RcbiAgICAgICAgICogYW5kIHRoZSBvdGhlciBkb2Vzbid0IGNvbnRhaW4gYSBkb21haW4gb2JqZWN0LiBUaGlzIGNhbiBoYXBwZW4gaWYgeW91IGNyZWF0ZSBhbiBpdGVtXG4gICAgICAgICAqIHdpdGhvdXQgc2V0dGluZyBkaXJ0eSwgd2hpY2ggbWVhbnMgaXQgd29uJ3QgYmUgaW5pdGlhbGl6ZWQgd2l0aCBhIGNsaWVudF91cGRhdGVkX2F0XG4gICAgICAgICAqL1xuICAgICAgICBpZiAoZG9tYWluRGF0YSkge1xuICAgICAgICAgICAgaWYgKE9iamVjdC5rZXlzKGRvbWFpbkRhdGEpLmxlbmd0aCA9PT0gMCkge1xuICAgICAgICAgICAgICAgIGRlbGV0ZSBsZWZ0Q29udGVudC5hcHBEYXRhO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgZGVsZXRlIGxlZnRDb250ZW50LmFwcERhdGE7XG4gICAgICAgIH1cbiAgICB9XG4gICAgb21pdEluUGxhY2UobGVmdENvbnRlbnQsIGtleXNUb0lnbm9yZSk7XG4gICAgcmlnaHRDb250ZW50ID0gc29ydGVkQ29weShyaWdodENvbnRlbnQpO1xuICAgIGlmIChyaWdodENvbnRlbnQuYXBwRGF0YSkge1xuICAgICAgICBjb25zdCBkb21haW5EYXRhID0gcmlnaHRDb250ZW50LmFwcERhdGFbRGVmYXVsdEFwcERvbWFpbl07XG4gICAgICAgIG9taXRJblBsYWNlKGRvbWFpbkRhdGEsIGFwcERhdGFLZXlzVG9JZ25vcmUpO1xuICAgICAgICBpZiAoZG9tYWluRGF0YSkge1xuICAgICAgICAgICAgaWYgKE9iamVjdC5rZXlzKGRvbWFpbkRhdGEpLmxlbmd0aCA9PT0gMCkge1xuICAgICAgICAgICAgICAgIGRlbGV0ZSByaWdodENvbnRlbnQuYXBwRGF0YTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgIGRlbGV0ZSByaWdodENvbnRlbnQuYXBwRGF0YTtcbiAgICAgICAgfVxuICAgIH1cbiAgICBvbWl0SW5QbGFjZShyaWdodENvbnRlbnQsIGtleXNUb0lnbm9yZSk7XG4gICAgcmV0dXJuIEpTT04uc3RyaW5naWZ5KGxlZnRDb250ZW50KSA9PT0gSlNPTi5zdHJpbmdpZnkocmlnaHRDb250ZW50KTtcbn1cbiJdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTs7OztBQUlBO0FBQ0E7Ozs7O0FBSUE7QUFDQTs7Ozs7O0FBS0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBOzs7O0FBR0E7QUFDQTtBQUFBO0FBQ0E7QUFEQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUVBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQURBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUE5QkE7QUFBQTtBQUFBO0FBMkZBO0FBQ0E7QUE1RkE7QUFBQTtBQUFBO0FBNkZBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7Ozs7Ozs7Ozs7Ozs7OztBQW5HQTtBQUFB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\n//# sourceURL=webpack-internal:///./lib/models/core/item.ts\n')},"./lib/models/core/predicate.ts":
|
||
/*!**************************************!*\
|
||
!*** ./lib/models/core/predicate.ts ***!
|
||
\**************************************/
|
||
/*! exports provided: SNPredicate */function(module,__webpack_exports__,__webpack_require__){"use strict";eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"SNPredicate\", function() { return SNPredicate; });\n/* harmony import */ var _Lib_utils__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @Lib/utils */ \"./lib/utils.ts\");\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _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); } }\n\nfunction _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; }\n\n\n/**\n * A local-only construct that defines a built query that can be used to\n * dynamically search items.\n */\n\nvar SNPredicate = /*#__PURE__*/function () {\n function SNPredicate(keypath, operator, value) {\n _classCallCheck(this, SNPredicate);\n\n this.keypath = keypath;\n this.operator = operator;\n this.value = value;\n\n if (this.isRecursive()) {\n var array = this.value;\n this.value = array.map(function (element) {\n if (Array.isArray(element)) {\n return SNPredicate.FromArray(element);\n } else {\n return element;\n }\n });\n } else if (this.value === 'true' || this.value === 'false') {\n /* If value is boolean string, convert to boolean */\n this.value = JSON.parse(this.value);\n }\n }\n\n _createClass(SNPredicate, [{\n key: \"isRecursive\",\n value: function isRecursive() {\n return ['and', 'or'].includes(this.operator);\n }\n }, {\n key: \"arrayRepresentation\",\n value: function arrayRepresentation() {\n return [this.keypath, this.operator, this.value];\n }\n }, {\n key: \"valueAsArray\",\n value: function valueAsArray() {\n return this.value;\n }\n }], [{\n key: \"FromJson\",\n value: function FromJson(values) {\n return new SNPredicate(values.keypath, values.operator, values.value);\n }\n }, {\n key: \"FromArray\",\n value: function FromArray(array) {\n return new SNPredicate(array[0], array[1], array[2]);\n }\n }, {\n key: \"CompoundPredicate\",\n value: function CompoundPredicate(predicates) {\n return new SNPredicate('ignored', 'and', predicates);\n }\n }, {\n key: \"ObjectSatisfiesPredicate\",\n value: function ObjectSatisfiesPredicate(object, predicate) {\n /* Predicates may not always be created using the official constructor\n so if it's still an array here, convert to object */\n if (Array.isArray(predicate)) {\n predicate = this.FromArray(predicate);\n }\n\n if (predicate.isRecursive()) {\n if (predicate.operator === 'and') {\n var _iteratorNormalCompletion = true;\n var _didIteratorError = false;\n var _iteratorError = undefined;\n\n try {\n for (var _iterator = predicate.valueAsArray()[Symbol.iterator](), _step; !(_iteratorNormalCompletion = (_step = _iterator.next()).done); _iteratorNormalCompletion = true) {\n var subPredicate = _step.value;\n\n if (!this.ObjectSatisfiesPredicate(object, subPredicate)) {\n return false;\n }\n }\n } catch (err) {\n _didIteratorError = true;\n _iteratorError = err;\n } finally {\n try {\n if (!_iteratorNormalCompletion && _iterator.return != null) {\n _iterator.return();\n }\n } finally {\n if (_didIteratorError) {\n throw _iteratorError;\n }\n }\n }\n\n return true;\n }\n\n if (predicate.operator === 'or') {\n var _iteratorNormalCompletion2 = true;\n var _didIteratorError2 = false;\n var _iteratorError2 = undefined;\n\n try {\n for (var _iterator2 = predicate.valueAsArray()[Symbol.iterator](), _step2; !(_iteratorNormalCompletion2 = (_step2 = _iterator2.next()).done); _iteratorNormalCompletion2 = true) {\n var _subPredicate = _step2.value;\n\n if (this.ObjectSatisfiesPredicate(object, _subPredicate)) {\n return true;\n }\n }\n } catch (err) {\n _didIteratorError2 = true;\n _iteratorError2 = err;\n } finally {\n try {\n if (!_iteratorNormalCompletion2 && _iterator2.return != null) {\n _iterator2.return();\n }\n } finally {\n if (_didIteratorError2) {\n throw _iteratorError2;\n }\n }\n }\n\n return false;\n }\n }\n\n var targetValue = predicate.value;\n\n if (typeof targetValue === 'string' && targetValue.includes('.ago')) {\n targetValue = this.DateFromString(targetValue);\n }\n\n var valueAtKeyPath = predicate.keypath.split('.').reduce(function (previous, current) {\n return previous && previous[current];\n }, object);\n var falseyValues = [false, '', null, undefined, NaN];\n /* If the value at keyPath is undefined, either because the\n property is nonexistent or the value is null. */\n\n if (valueAtKeyPath === undefined) {\n if (predicate.operator === '!=') {\n return !falseyValues.includes(predicate.value);\n } else {\n return falseyValues.includes(predicate.value);\n }\n }\n\n if (predicate.operator === '=') {\n /* Use array comparison */\n if (Array.isArray(valueAtKeyPath)) {\n return JSON.stringify(valueAtKeyPath) === JSON.stringify(targetValue);\n } else {\n return valueAtKeyPath === targetValue;\n }\n } else if (predicate.operator === '!=') {\n // Use array comparison\n if (Array.isArray(valueAtKeyPath)) {\n return JSON.stringify(valueAtKeyPath) !== JSON.stringify(targetValue);\n } else {\n return valueAtKeyPath !== targetValue;\n }\n } else if (predicate.operator === '<') {\n return valueAtKeyPath < targetValue;\n } else if (predicate.operator === '>') {\n return valueAtKeyPath > targetValue;\n } else if (predicate.operator === '<=') {\n return valueAtKeyPath <= targetValue;\n } else if (predicate.operator === '>=') {\n return valueAtKeyPath >= targetValue;\n } else if (predicate.operator === 'startsWith') {\n return valueAtKeyPath.startsWith(targetValue);\n } else if (predicate.operator === 'in') {\n return targetValue.indexOf(valueAtKeyPath) !== -1;\n } else if (predicate.operator === 'includes') {\n return this.resolveIncludesPredicate(valueAtKeyPath, targetValue);\n } else if (predicate.operator === 'matches') {\n var regex = new RegExp(targetValue);\n return regex.test(valueAtKeyPath);\n }\n\n return false;\n }\n /**\n * @param itemValueArray Because we are resolving the `includes` operator, the given\n * value should be an array.\n * @param containsValue The value we are checking to see if exists in itemValueArray\n */\n\n }, {\n key: \"resolveIncludesPredicate\",\n value: function resolveIncludesPredicate(itemValueArray, containsValue) {\n // includes can be a string or a predicate (in array form)\n if (Object(_Lib_utils__WEBPACK_IMPORTED_MODULE_0__[\"isString\"])(containsValue)) {\n // if string, simply check if the itemValueArray includes the predicate value\n return itemValueArray.includes(containsValue);\n } else {\n // is a predicate array or predicate object\n var innerPredicate;\n\n if (Array.isArray(containsValue)) {\n innerPredicate = SNPredicate.FromArray(containsValue);\n } else {\n innerPredicate = containsValue;\n }\n\n var _iteratorNormalCompletion3 = true;\n var _didIteratorError3 = false;\n var _iteratorError3 = undefined;\n\n try {\n for (var _iterator3 = itemValueArray[Symbol.iterator](), _step3; !(_iteratorNormalCompletion3 = (_step3 = _iterator3.next()).done); _iteratorNormalCompletion3 = true) {\n var obj = _step3.value;\n\n if (this.ObjectSatisfiesPredicate(obj, innerPredicate)) {\n return true;\n }\n }\n } catch (err) {\n _didIteratorError3 = true;\n _iteratorError3 = err;\n } finally {\n try {\n if (!_iteratorNormalCompletion3 && _iterator3.return != null) {\n _iterator3.return();\n }\n } finally {\n if (_didIteratorError3) {\n throw _iteratorError3;\n }\n }\n }\n\n return false;\n }\n }\n }, {\n key: \"ItemSatisfiesPredicate\",\n value: function ItemSatisfiesPredicate(item, predicate) {\n if (Array.isArray(predicate)) {\n predicate = SNPredicate.FromArray(predicate);\n }\n\n return this.ObjectSatisfiesPredicate(item, predicate);\n }\n }, {\n key: \"ItemSatisfiesPredicates\",\n value: function ItemSatisfiesPredicates(item, predicates) {\n var _iteratorNormalCompletion4 = true;\n var _didIteratorError4 = false;\n var _iteratorError4 = undefined;\n\n try {\n for (var _iterator4 = predicates[Symbol.iterator](), _step4; !(_iteratorNormalCompletion4 = (_step4 = _iterator4.next()).done); _iteratorNormalCompletion4 = true) {\n var predicate = _step4.value;\n\n if (!this.ItemSatisfiesPredicate(item, predicate)) {\n return false;\n }\n }\n } catch (err) {\n _didIteratorError4 = true;\n _iteratorError4 = err;\n } finally {\n try {\n if (!_iteratorNormalCompletion4 && _iterator4.return != null) {\n _iterator4.return();\n }\n } finally {\n if (_didIteratorError4) {\n throw _iteratorError4;\n }\n }\n }\n\n return true;\n }\n /**\n * Predicate date strings are of form \"x.days.ago\" or \"x.hours.ago\"\n */\n\n }, {\n key: \"DateFromString\",\n value: function DateFromString(string) {\n var comps = string.split('.');\n var unit = comps[1];\n var date = new Date();\n var offset = parseInt(comps[0]);\n\n if (unit === 'days') {\n date.setDate(date.getDate() - offset);\n } else if (unit === 'hours') {\n date.setHours(date.getHours() - offset);\n }\n\n return date;\n }\n }]);\n\n return SNPredicate;\n}();//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9saWIvbW9kZWxzL2NvcmUvcHJlZGljYXRlLnRzLmpzIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vU05MaWJyYXJ5Ly4vbGliL21vZGVscy9jb3JlL3ByZWRpY2F0ZS50cz8zOGRjIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IGlzU3RyaW5nIH0gZnJvbSAnQExpYi91dGlscyc7XG4vKipcbiAqIEEgbG9jYWwtb25seSBjb25zdHJ1Y3QgdGhhdCBkZWZpbmVzIGEgYnVpbHQgcXVlcnkgdGhhdCBjYW4gYmUgdXNlZCB0b1xuICogZHluYW1pY2FsbHkgc2VhcmNoIGl0ZW1zLlxuICovXG5leHBvcnQgY2xhc3MgU05QcmVkaWNhdGUge1xuICAgIGNvbnN0cnVjdG9yKGtleXBhdGgsIG9wZXJhdG9yLCB2YWx1ZSkge1xuICAgICAgICB0aGlzLmtleXBhdGggPSBrZXlwYXRoO1xuICAgICAgICB0aGlzLm9wZXJhdG9yID0gb3BlcmF0b3I7XG4gICAgICAgIHRoaXMudmFsdWUgPSB2YWx1ZTtcbiAgICAgICAgaWYgKHRoaXMuaXNSZWN1cnNpdmUoKSkge1xuICAgICAgICAgICAgY29uc3QgYXJyYXkgPSB0aGlzLnZhbHVlO1xuICAgICAgICAgICAgdGhpcy52YWx1ZSA9IGFycmF5Lm1hcCgoZWxlbWVudCkgPT4ge1xuICAgICAgICAgICAgICAgIGlmIChBcnJheS5pc0FycmF5KGVsZW1lbnQpKSB7XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiBTTlByZWRpY2F0ZS5Gcm9tQXJyYXkoZWxlbWVudCk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICByZXR1cm4gZWxlbWVudDtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgfVxuICAgICAgICBlbHNlIGlmICh0aGlzLnZhbHVlID09PSAndHJ1ZScgfHwgdGhpcy52YWx1ZSA9PT0gJ2ZhbHNlJykge1xuICAgICAgICAgICAgLyogSWYgdmFsdWUgaXMgYm9vbGVhbiBzdHJpbmcsIGNvbnZlcnQgdG8gYm9vbGVhbiAqL1xuICAgICAgICAgICAgdGhpcy52YWx1ZSA9IEpTT04ucGFyc2UodGhpcy52YWx1ZSk7XG4gICAgICAgIH1cbiAgICB9XG4gICAgc3RhdGljIEZyb21Kc29uKHZhbHVlcykge1xuICAgICAgICByZXR1cm4gbmV3IFNOUHJlZGljYXRlKHZhbHVlcy5rZXlwYXRoLCB2YWx1ZXMub3BlcmF0b3IsIHZhbHVlcy52YWx1ZSk7XG4gICAgfVxuICAgIHN0YXRpYyBGcm9tQXJyYXkoYXJyYXkpIHtcbiAgICAgICAgcmV0dXJuIG5ldyBTTlByZWRpY2F0ZShhcnJheVswXSwgYXJyYXlbMV0sIGFycmF5WzJdKTtcbiAgICB9XG4gICAgaXNSZWN1cnNpdmUoKSB7XG4gICAgICAgIHJldHVybiBbJ2FuZCcsICdvciddLmluY2x1ZGVzKHRoaXMub3BlcmF0b3IpO1xuICAgIH1cbiAgICBhcnJheVJlcHJlc2VudGF0aW9uKCkge1xuICAgICAgICByZXR1cm4gW1xuICAgICAgICAgICAgdGhpcy5rZXlwYXRoLFxuICAgICAgICAgICAgdGhpcy5vcGVyYXRvcixcbiAgICAgICAgICAgIHRoaXMudmFsdWVcbiAgICAgICAgXTtcbiAgICB9XG4gICAgdmFsdWVBc0FycmF5KCkge1xuICAgICAgICByZXR1cm4gdGhpcy52YWx1ZTtcbiAgICB9XG4gICAgc3RhdGljIENvbXBvdW5kUHJlZGljYXRlKHByZWRpY2F0ZXMpIHtcbiAgICAgICAgcmV0dXJuIG5ldyBTTlByZWRpY2F0ZSgnaWdub3JlZCcsICdhbmQnLCBwcmVkaWNhdGVzKTtcbiAgICB9XG4gICAgc3RhdGljIE9iamVjdFNhdGlzZmllc1ByZWRpY2F0ZShvYmplY3QsIHByZWRpY2F0ZSkge1xuICAgICAgICAvKiBQcmVkaWNhdGVzIG1heSBub3QgYWx3YXlzIGJlIGNyZWF0ZWQgdXNpbmcgdGhlIG9mZmljaWFsIGNvbnN0cnVjdG9yXG4gICAgICAgICAgIHNvIGlmIGl0J3Mgc3RpbGwgYW4gYXJyYXkgaGVyZSwgY29udmVydCB0byBvYmplY3QgKi9cbiAgICAgICAgaWYgKEFycmF5LmlzQXJyYXkocHJlZGljYXRlKSkge1xuICAgICAgICAgICAgcHJlZGljYXRlID0gdGhpcy5Gcm9tQXJyYXkocHJlZGljYXRlKTtcbiAgICAgICAgfVxuICAgICAgICBpZiAocHJlZGljYXRlLmlzUmVjdXJzaXZlKCkpIHtcbiAgICAgICAgICAgIGlmIChwcmVkaWNhdGUub3BlcmF0b3IgPT09ICdhbmQnKSB7XG4gICAgICAgICAgICAgICAgZm9yIChjb25zdCBzdWJQcmVkaWNhdGUgb2YgcHJlZGljYXRlLnZhbHVlQXNBcnJheSgpKSB7XG4gICAgICAgICAgICAgICAgICAgIGlmICghdGhpcy5PYmplY3RTYXRpc2ZpZXNQcmVkaWNhdGUob2JqZWN0LCBzdWJQcmVkaWNhdGUpKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBpZiAocHJlZGljYXRlLm9wZXJhdG9yID09PSAnb3InKSB7XG4gICAgICAgICAgICAgICAgZm9yIChjb25zdCBzdWJQcmVkaWNhdGUgb2YgcHJlZGljYXRlLnZhbHVlQXNBcnJheSgpKSB7XG4gICAgICAgICAgICAgICAgICAgIGlmICh0aGlzLk9iamVjdFNhdGlzZmllc1ByZWRpY2F0ZShvYmplY3QsIHN1YlByZWRpY2F0ZSkpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiB0cnVlO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICBsZXQgdGFyZ2V0VmFsdWUgPSBwcmVkaWNhdGUudmFsdWU7XG4gICAgICAgIGlmICh0eXBlb2YgKHRhcmdldFZhbHVlKSA9PT0gJ3N0cmluZycgJiYgdGFyZ2V0VmFsdWUuaW5jbHVkZXMoJy5hZ28nKSkge1xuICAgICAgICAgICAgdGFyZ2V0VmFsdWUgPSB0aGlzLkRhdGVGcm9tU3RyaW5nKHRhcmdldFZhbHVlKTtcbiAgICAgICAgfVxuICAgICAgICBjb25zdCB2YWx1ZUF0S2V5UGF0aCA9IHByZWRpY2F0ZS5rZXlwYXRoLnNwbGl0KCcuJykucmVkdWNlKChwcmV2aW91cywgY3VycmVudCkgPT4ge1xuICAgICAgICAgICAgcmV0dXJuIHByZXZpb3VzICYmIHByZXZpb3VzW2N1cnJlbnRdO1xuICAgICAgICB9LCBvYmplY3QpO1xuICAgICAgICBjb25zdCBmYWxzZXlWYWx1ZXMgPSBbZmFsc2UsICcnLCBudWxsLCB1bmRlZmluZWQsIE5hTl07XG4gICAgICAgIC8qIElmIHRoZSB2YWx1ZSBhdCBrZXlQYXRoIGlzIHVuZGVmaW5lZCwgZWl0aGVyIGJlY2F1c2UgdGhlXG4gICAgICAgICAgcHJvcGVydHkgaXMgbm9uZXhpc3RlbnQgb3IgdGhlIHZhbHVlIGlzIG51bGwuICovXG4gICAgICAgIGlmICh2YWx1ZUF0S2V5UGF0aCA9PT0gdW5kZWZpbmVkKSB7XG4gICAgICAgICAgICBpZiAocHJlZGljYXRlLm9wZXJhdG9yID09PSAnIT0nKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuICFmYWxzZXlWYWx1ZXMuaW5jbHVkZXMocHJlZGljYXRlLnZhbHVlKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZXlWYWx1ZXMuaW5jbHVkZXMocHJlZGljYXRlLnZhbHVlKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICBpZiAocHJlZGljYXRlLm9wZXJhdG9yID09PSAnPScpIHtcbiAgICAgICAgICAgIC8qIFVzZSBhcnJheSBjb21wYXJpc29uICovXG4gICAgICAgICAgICBpZiAoQXJyYXkuaXNBcnJheSh2YWx1ZUF0S2V5UGF0aCkpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gSlNPTi5zdHJpbmdpZnkodmFsdWVBdEtleVBhdGgpID09PSBKU09OLnN0cmluZ2lmeSh0YXJnZXRWYWx1ZSk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gdmFsdWVBdEtleVBhdGggPT09IHRhcmdldFZhbHVlO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIGVsc2UgaWYgKHByZWRpY2F0ZS5vcGVyYXRvciA9PT0gJyE9Jykge1xuICAgICAgICAgICAgLy8gVXNlIGFycmF5IGNvbXBhcmlzb25cbiAgICAgICAgICAgIGlmIChBcnJheS5pc0FycmF5KHZhbHVlQXRLZXlQYXRoKSkge1xuICAgICAgICAgICAgICAgIHJldHVybiBKU09OLnN0cmluZ2lmeSh2YWx1ZUF0S2V5UGF0aCkgIT09IEpTT04uc3RyaW5naWZ5KHRhcmdldFZhbHVlKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgICAgIHJldHVybiB2YWx1ZUF0S2V5UGF0aCAhPT0gdGFyZ2V0VmFsdWU7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgZWxzZSBpZiAocHJlZGljYXRlLm9wZXJhdG9yID09PSAnPCcpIHtcbiAgICAgICAgICAgIHJldHVybiB2YWx1ZUF0S2V5UGF0aCA8IHRhcmdldFZhbHVlO1xuICAgICAgICB9XG4gICAgICAgIGVsc2UgaWYgKHByZWRpY2F0ZS5vcGVyYXRvciA9PT0gJz4nKSB7XG4gICAgICAgICAgICByZXR1cm4gdmFsdWVBdEtleVBhdGggPiB0YXJnZXRWYWx1ZTtcbiAgICAgICAgfVxuICAgICAgICBlbHNlIGlmIChwcmVkaWNhdGUub3BlcmF0b3IgPT09ICc8PScpIHtcbiAgICAgICAgICAgIHJldHVybiB2YWx1ZUF0S2V5UGF0aCA8PSB0YXJnZXRWYWx1ZTtcbiAgICAgICAgfVxuICAgICAgICBlbHNlIGlmIChwcmVkaWNhdGUub3BlcmF0b3IgPT09ICc+PScpIHtcbiAgICAgICAgICAgIHJldHVybiB2YWx1ZUF0S2V5UGF0aCA+PSB0YXJnZXRWYWx1ZTtcbiAgICAgICAgfVxuICAgICAgICBlbHNlIGlmIChwcmVkaWNhdGUub3BlcmF0b3IgPT09ICdzdGFydHNXaXRoJykge1xuICAgICAgICAgICAgcmV0dXJuIHZhbHVlQXRLZXlQYXRoLnN0YXJ0c1dpdGgodGFyZ2V0VmFsdWUpO1xuICAgICAgICB9XG4gICAgICAgIGVsc2UgaWYgKHByZWRpY2F0ZS5vcGVyYXRvciA9PT0gJ2luJykge1xuICAgICAgICAgICAgcmV0dXJuIHRhcmdldFZhbHVlLmluZGV4T2YodmFsdWVBdEtleVBhdGgpICE9PSAtMTtcbiAgICAgICAgfVxuICAgICAgICBlbHNlIGlmIChwcmVkaWNhdGUub3BlcmF0b3IgPT09ICdpbmNsdWRlcycpIHtcbiAgICAgICAgICAgIHJldHVybiB0aGlzLnJlc29sdmVJbmNsdWRlc1ByZWRpY2F0ZSh2YWx1ZUF0S2V5UGF0aCwgdGFyZ2V0VmFsdWUpO1xuICAgICAgICB9XG4gICAgICAgIGVsc2UgaWYgKHByZWRpY2F0ZS5vcGVyYXRvciA9PT0gJ21hdGNoZXMnKSB7XG4gICAgICAgICAgICBjb25zdCByZWdleCA9IG5ldyBSZWdFeHAodGFyZ2V0VmFsdWUpO1xuICAgICAgICAgICAgcmV0dXJuIHJlZ2V4LnRlc3QodmFsdWVBdEtleVBhdGgpO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiBmYWxzZTtcbiAgICB9XG4gICAgLyoqXG4gICAgICogQHBhcmFtIGl0ZW1WYWx1ZUFycmF5IEJlY2F1c2Ugd2UgYXJlIHJlc29sdmluZyB0aGUgYGluY2x1ZGVzYCBvcGVyYXRvciwgdGhlIGdpdmVuXG4gICAgICogdmFsdWUgc2hvdWxkIGJlIGFuIGFycmF5LlxuICAgICAqIEBwYXJhbSBjb250YWluc1ZhbHVlICBUaGUgdmFsdWUgd2UgYXJlIGNoZWNraW5nIHRvIHNlZSBpZiBleGlzdHMgaW4gaXRlbVZhbHVlQXJyYXlcbiAgICAgKi9cbiAgICBzdGF0aWMgcmVzb2x2ZUluY2x1ZGVzUHJlZGljYXRlKGl0ZW1WYWx1ZUFycmF5LCBjb250YWluc1ZhbHVlKSB7XG4gICAgICAgIC8vIGluY2x1ZGVzIGNhbiBiZSBhIHN0cmluZyBvciBhIHByZWRpY2F0ZSAoaW4gYXJyYXkgZm9ybSlcbiAgICAgICAgaWYgKGlzU3RyaW5nKGNvbnRhaW5zVmFsdWUpKSB7XG4gICAgICAgICAgICAvLyBpZiBzdHJpbmcsIHNpbXBseSBjaGVjayBpZiB0aGUgaXRlbVZhbHVlQXJyYXkgaW5jbHVkZXMgdGhlIHByZWRpY2F0ZSB2YWx1ZVxuICAgICAgICAgICAgcmV0dXJuIGl0ZW1WYWx1ZUFycmF5LmluY2x1ZGVzKGNvbnRhaW5zVmFsdWUpO1xuICAgICAgICB9XG4gICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgLy8gaXMgYSBwcmVkaWNhdGUgYXJyYXkgb3IgcHJlZGljYXRlIG9iamVjdFxuICAgICAgICAgICAgbGV0IGlubmVyUHJlZGljYXRlO1xuICAgICAgICAgICAgaWYgKEFycmF5LmlzQXJyYXkoY29udGFpbnNWYWx1ZSkpIHtcbiAgICAgICAgICAgICAgICBpbm5lclByZWRpY2F0ZSA9IFNOUHJlZGljYXRlLkZyb21BcnJheShjb250YWluc1ZhbHVlKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgICAgIGlubmVyUHJlZGljYXRlID0gY29udGFpbnNWYWx1ZTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGZvciAoY29uc3Qgb2JqIG9mIGl0ZW1WYWx1ZUFycmF5KSB7XG4gICAgICAgICAgICAgICAgaWYgKHRoaXMuT2JqZWN0U2F0aXNmaWVzUHJlZGljYXRlKG9iaiwgaW5uZXJQcmVkaWNhdGUpKSB7XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiB0cnVlO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgICAgfVxuICAgIH1cbiAgICBzdGF0aWMgSXRlbVNhdGlzZmllc1ByZWRpY2F0ZShpdGVtLCBwcmVkaWNhdGUpIHtcbiAgICAgICAgaWYgKEFycmF5LmlzQXJyYXkocHJlZGljYXRlKSkge1xuICAgICAgICAgICAgcHJlZGljYXRlID0gU05QcmVkaWNhdGUuRnJvbUFycmF5KHByZWRpY2F0ZSk7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHRoaXMuT2JqZWN0U2F0aXNmaWVzUHJlZGljYXRlKGl0ZW0sIHByZWRpY2F0ZSk7XG4gICAgfVxuICAgIHN0YXRpYyBJdGVtU2F0aXNmaWVzUHJlZGljYXRlcyhpdGVtLCBwcmVkaWNhdGVzKSB7XG4gICAgICAgIGZvciAoY29uc3QgcHJlZGljYXRlIG9mIHByZWRpY2F0ZXMpIHtcbiAgICAgICAgICAgIGlmICghdGhpcy5JdGVtU2F0aXNmaWVzUHJlZGljYXRlKGl0ZW0sIHByZWRpY2F0ZSkpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgfVxuICAgIC8qKlxuICAgICAqIFByZWRpY2F0ZSBkYXRlIHN0cmluZ3MgYXJlIG9mIGZvcm0gXCJ4LmRheXMuYWdvXCIgb3IgXCJ4LmhvdXJzLmFnb1wiXG4gICAgICovXG4gICAgc3RhdGljIERhdGVGcm9tU3RyaW5nKHN0cmluZykge1xuICAgICAgICBjb25zdCBjb21wcyA9IHN0cmluZy5zcGxpdCgnLicpO1xuICAgICAgICBjb25zdCB1bml0ID0gY29tcHNbMV07XG4gICAgICAgIGNvbnN0IGRhdGUgPSBuZXcgRGF0ZTtcbiAgICAgICAgY29uc3Qgb2Zmc2V0ID0gcGFyc2VJbnQoY29tcHNbMF0pO1xuICAgICAgICBpZiAodW5pdCA9PT0gJ2RheXMnKSB7XG4gICAgICAgICAgICBkYXRlLnNldERhdGUoZGF0ZS5nZXREYXRlKCkgLSBvZmZzZXQpO1xuICAgICAgICB9XG4gICAgICAgIGVsc2UgaWYgKHVuaXQgPT09ICdob3VycycpIHtcbiAgICAgICAgICAgIGRhdGUuc2V0SG91cnMoZGF0ZS5nZXRIb3VycygpIC0gb2Zmc2V0KTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gZGF0ZTtcbiAgICB9XG59XG4iXSwibWFwcGluZ3MiOiI7Ozs7Ozs7OztBQUFBO0FBQ0E7Ozs7O0FBSUE7QUFDQTtBQUFBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQXJCQTtBQUFBO0FBQUE7QUE0QkE7QUFDQTtBQTdCQTtBQUFBO0FBQUE7QUErQkE7QUFLQTtBQXBDQTtBQUFBO0FBQUE7QUFzQ0E7QUFDQTtBQXZDQTtBQUFBO0FBQUE7QUFzQkE7QUFDQTtBQXZCQTtBQUFBO0FBQUE7QUF5QkE7QUFDQTtBQTFCQTtBQUFBO0FBQUE7QUF5Q0E7QUFDQTtBQTFDQTtBQUFBO0FBQUE7QUE0Q0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQUE7QUFBQTtBQUFBO0FBQ0E7QUFEQTtBQUNBO0FBQUE7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBTEE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUNBO0FBS0E7QUFDQTtBQUNBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFDQTtBQURBO0FBQ0E7QUFBQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFMQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQ0E7QUFLQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7OztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBRUE7QUFDQTtBQUNBO0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFFQTtBQUNBO0FBQ0E7QUFFQTtBQUNBO0FBRUE7QUFDQTtBQUVBO0FBQ0E7QUFFQTtBQUNBO0FBRUE7QUFDQTtBQUVBO0FBQ0E7QUFFQTtBQUNBO0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7Ozs7OztBQWxJQTtBQUFBO0FBQUE7QUF3SUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUVBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUVBO0FBQ0E7QUFDQTtBQVRBO0FBQUE7QUFBQTtBQUNBO0FBREE7QUFTQTtBQUFBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQWJBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFDQTtBQWFBO0FBQ0E7QUFDQTtBQTdKQTtBQUFBO0FBQUE7QUErSkE7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBbktBO0FBQUE7QUFBQTtBQW9LQTtBQUFBO0FBQUE7QUFDQTtBQURBO0FBQ0E7QUFBQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFMQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQ0E7QUFLQTtBQUNBO0FBQ0E7Ozs7QUE1S0E7QUFBQTtBQUFBO0FBZ0xBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFFQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBM0xBO0FBQ0E7QUFEQTtBQUFBIiwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./lib/models/core/predicate.ts\n")},"./lib/models/functions.ts":
|
||
/*!*********************************!*\
|
||
!*** ./lib/models/functions.ts ***!
|
||
\*********************************/
|
||
/*! exports provided: Uuids, FillItemContent */function(module,__webpack_exports__,__webpack_require__){"use strict";eval('__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "Uuids", function() { return Uuids; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "FillItemContent", function() { return FillItemContent; });\n/* harmony import */ var _content_types__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./content_types */ "./lib/models/content_types.ts");\n\n/**\n * Returns an array of uuids for the given items or payloads\n */\n\nfunction Uuids(items) {\n return items.map(function (item) {\n return item.uuid;\n });\n}\n/**\n * Modifies the input object to fill in any missing required values from the\n * content body.\n */\n\nfunction FillItemContent(content) {\n if (!content.references) {\n content.references = [];\n }\n\n if (!content.appData) {\n content.appData = {};\n }\n\n if (!content.appData[_content_types__WEBPACK_IMPORTED_MODULE_0__["DefaultAppDomain"]]) {\n content.appData[_content_types__WEBPACK_IMPORTED_MODULE_0__["DefaultAppDomain"]] = {};\n }\n\n return content;\n}//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9saWIvbW9kZWxzL2Z1bmN0aW9ucy50cy5qcyIsInNvdXJjZXMiOlsid2VicGFjazovL1NOTGlicmFyeS8uL2xpYi9tb2RlbHMvZnVuY3Rpb25zLnRzPzViODYiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgRGVmYXVsdEFwcERvbWFpbiB9IGZyb20gJy4vY29udGVudF90eXBlcyc7XG4vKipcbiAqIFJldHVybnMgYW4gYXJyYXkgb2YgdXVpZHMgZm9yIHRoZSBnaXZlbiBpdGVtcyBvciBwYXlsb2Fkc1xuICovXG5leHBvcnQgZnVuY3Rpb24gVXVpZHMoaXRlbXMpIHtcbiAgICByZXR1cm4gaXRlbXMubWFwKChpdGVtKSA9PiB7XG4gICAgICAgIHJldHVybiBpdGVtLnV1aWQ7XG4gICAgfSk7XG59XG4vKipcbiAqIE1vZGlmaWVzIHRoZSBpbnB1dCBvYmplY3QgdG8gZmlsbCBpbiBhbnkgbWlzc2luZyByZXF1aXJlZCB2YWx1ZXMgZnJvbSB0aGVcbiAqIGNvbnRlbnQgYm9keS5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIEZpbGxJdGVtQ29udGVudChjb250ZW50KSB7XG4gICAgaWYgKCFjb250ZW50LnJlZmVyZW5jZXMpIHtcbiAgICAgICAgY29udGVudC5yZWZlcmVuY2VzID0gW107XG4gICAgfVxuICAgIGlmICghY29udGVudC5hcHBEYXRhKSB7XG4gICAgICAgIGNvbnRlbnQuYXBwRGF0YSA9IHt9O1xuICAgIH1cbiAgICBpZiAoIWNvbnRlbnQuYXBwRGF0YVtEZWZhdWx0QXBwRG9tYWluXSkge1xuICAgICAgICBjb250ZW50LmFwcERhdGFbRGVmYXVsdEFwcERvbWFpbl0gPSB7fTtcbiAgICB9XG4gICAgcmV0dXJuIGNvbnRlbnQ7XG59XG4iXSwibWFwcGluZ3MiOiJBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFDQTs7OztBQUdBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7Ozs7QUFJQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0EiLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./lib/models/functions.ts\n')},"./lib/models/generator.ts":
|
||
/*!*********************************!*\
|
||
!*** ./lib/models/generator.ts ***!
|
||
\*********************************/
|
||
/*! exports provided: CreateItemFromPayload */function(module,__webpack_exports__,__webpack_require__){"use strict";eval('__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "CreateItemFromPayload", function() { return CreateItemFromPayload; });\n/* harmony import */ var _app_userPrefs__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./app/userPrefs */ "./lib/models/app/userPrefs.ts");\n/* harmony import */ var _app_privileges__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./app/privileges */ "./lib/models/app/privileges.ts");\n/* harmony import */ var _Models_app_component__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! @Models/app/component */ "./lib/models/app/component.ts");\n/* harmony import */ var _app_theme__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./app/theme */ "./lib/models/app/theme.ts");\n/* harmony import */ var _app_editor__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ./app/editor */ "./lib/models/app/editor.ts");\n/* harmony import */ var _app_extension__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ./app/extension */ "./lib/models/app/extension.ts");\n/* harmony import */ var _app_smartTag__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ./app/smartTag */ "./lib/models/app/smartTag.ts");\n/* harmony import */ var _app_tag__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! ./app/tag */ "./lib/models/app/tag.ts");\n/* harmony import */ var _app_note__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! ./app/note */ "./lib/models/app/note.ts");\n/* harmony import */ var _core_item__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(/*! ./core/item */ "./lib/models/core/item.ts");\n/* harmony import */ var _Models_content_types__WEBPACK_IMPORTED_MODULE_10__ = __webpack_require__(/*! @Models/content_types */ "./lib/models/content_types.ts");\n/* harmony import */ var _app_items_key__WEBPACK_IMPORTED_MODULE_11__ = __webpack_require__(/*! ./app/items_key */ "./lib/models/app/items_key.ts");\nvar _ContentTypeClassMapp;\n\nfunction _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\n\n\n\n\n\n\n\n\n\n\n\n\n\nvar ContentTypeClassMapping = (_ContentTypeClassMapp = {}, _defineProperty(_ContentTypeClassMapp, _Models_content_types__WEBPACK_IMPORTED_MODULE_10__["ContentType"].Note, _app_note__WEBPACK_IMPORTED_MODULE_8__["SNNote"]), _defineProperty(_ContentTypeClassMapp, _Models_content_types__WEBPACK_IMPORTED_MODULE_10__["ContentType"].Tag, _app_tag__WEBPACK_IMPORTED_MODULE_7__["SNTag"]), _defineProperty(_ContentTypeClassMapp, _Models_content_types__WEBPACK_IMPORTED_MODULE_10__["ContentType"].ItemsKey, _app_items_key__WEBPACK_IMPORTED_MODULE_11__["SNItemsKey"]), _defineProperty(_ContentTypeClassMapp, _Models_content_types__WEBPACK_IMPORTED_MODULE_10__["ContentType"].SmartTag, _app_smartTag__WEBPACK_IMPORTED_MODULE_6__["SNSmartTag"]), _defineProperty(_ContentTypeClassMapp, _Models_content_types__WEBPACK_IMPORTED_MODULE_10__["ContentType"].ActionsExtension, _app_extension__WEBPACK_IMPORTED_MODULE_5__["SNActionsExtension"]), _defineProperty(_ContentTypeClassMapp, _Models_content_types__WEBPACK_IMPORTED_MODULE_10__["ContentType"].Editor, _app_editor__WEBPACK_IMPORTED_MODULE_4__["SNEditor"]), _defineProperty(_ContentTypeClassMapp, _Models_content_types__WEBPACK_IMPORTED_MODULE_10__["ContentType"].Theme, _app_theme__WEBPACK_IMPORTED_MODULE_3__["SNTheme"]), _defineProperty(_ContentTypeClassMapp, _Models_content_types__WEBPACK_IMPORTED_MODULE_10__["ContentType"].Component, _Models_app_component__WEBPACK_IMPORTED_MODULE_2__["SNComponent"]), _defineProperty(_ContentTypeClassMapp, _Models_content_types__WEBPACK_IMPORTED_MODULE_10__["ContentType"].Privileges, _app_privileges__WEBPACK_IMPORTED_MODULE_1__["SNPrivileges"]), _defineProperty(_ContentTypeClassMapp, _Models_content_types__WEBPACK_IMPORTED_MODULE_10__["ContentType"].UserPrefs, _app_userPrefs__WEBPACK_IMPORTED_MODULE_0__["SNUserPrefs"]), _ContentTypeClassMapp);\nfunction CreateItemFromPayload(payload) {\n var itemClass = ContentTypeClassMapping[payload.content_type] || _core_item__WEBPACK_IMPORTED_MODULE_9__["SNItem"]; // eslint-disable-next-line new-cap\n\n var item = new itemClass(payload);\n return item;\n}//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9saWIvbW9kZWxzL2dlbmVyYXRvci50cy5qcyIsInNvdXJjZXMiOlsid2VicGFjazovL1NOTGlicmFyeS8uL2xpYi9tb2RlbHMvZ2VuZXJhdG9yLnRzP2NiZDkiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgU05Vc2VyUHJlZnMgfSBmcm9tICcuL2FwcC91c2VyUHJlZnMnO1xuaW1wb3J0IHsgU05Qcml2aWxlZ2VzIH0gZnJvbSAnLi9hcHAvcHJpdmlsZWdlcyc7XG5pbXBvcnQgeyBTTkNvbXBvbmVudCB9IGZyb20gJ0BNb2RlbHMvYXBwL2NvbXBvbmVudCc7XG5pbXBvcnQgeyBTTlRoZW1lIH0gZnJvbSAnLi9hcHAvdGhlbWUnO1xuaW1wb3J0IHsgU05FZGl0b3IgfSBmcm9tICcuL2FwcC9lZGl0b3InO1xuaW1wb3J0IHsgU05BY3Rpb25zRXh0ZW5zaW9uIH0gZnJvbSAnLi9hcHAvZXh0ZW5zaW9uJztcbmltcG9ydCB7IFNOU21hcnRUYWcgfSBmcm9tICcuL2FwcC9zbWFydFRhZyc7XG5pbXBvcnQgeyBTTlRhZyB9IGZyb20gJy4vYXBwL3RhZyc7XG5pbXBvcnQgeyBTTk5vdGUgfSBmcm9tICcuL2FwcC9ub3RlJztcbmltcG9ydCB7IFNOSXRlbSB9IGZyb20gJy4vY29yZS9pdGVtJztcbmltcG9ydCB7IENvbnRlbnRUeXBlIH0gZnJvbSAnQE1vZGVscy9jb250ZW50X3R5cGVzJztcbmltcG9ydCB7IFNOSXRlbXNLZXkgfSBmcm9tICcuL2FwcC9pdGVtc19rZXknO1xuY29uc3QgQ29udGVudFR5cGVDbGFzc01hcHBpbmcgPSB7XG4gICAgW0NvbnRlbnRUeXBlLk5vdGVdOiBTTk5vdGUsXG4gICAgW0NvbnRlbnRUeXBlLlRhZ106IFNOVGFnLFxuICAgIFtDb250ZW50VHlwZS5JdGVtc0tleV06IFNOSXRlbXNLZXksXG4gICAgW0NvbnRlbnRUeXBlLlNtYXJ0VGFnXTogU05TbWFydFRhZyxcbiAgICBbQ29udGVudFR5cGUuQWN0aW9uc0V4dGVuc2lvbl06IFNOQWN0aW9uc0V4dGVuc2lvbixcbiAgICBbQ29udGVudFR5cGUuRWRpdG9yXTogU05FZGl0b3IsXG4gICAgW0NvbnRlbnRUeXBlLlRoZW1lXTogU05UaGVtZSxcbiAgICBbQ29udGVudFR5cGUuQ29tcG9uZW50XTogU05Db21wb25lbnQsXG4gICAgW0NvbnRlbnRUeXBlLlByaXZpbGVnZXNdOiBTTlByaXZpbGVnZXMsXG4gICAgW0NvbnRlbnRUeXBlLlVzZXJQcmVmc106IFNOVXNlclByZWZzXG59O1xuZXhwb3J0IGZ1bmN0aW9uIENyZWF0ZUl0ZW1Gcm9tUGF5bG9hZChwYXlsb2FkKSB7XG4gICAgY29uc3QgaXRlbUNsYXNzID0gQ29udGVudFR5cGVDbGFzc01hcHBpbmdbcGF5bG9hZC5jb250ZW50X3R5cGVdIHx8IFNOSXRlbTtcbiAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgbmV3LWNhcFxuICAgIGNvbnN0IGl0ZW0gPSBuZXcgaXRlbUNsYXNzKHBheWxvYWQpO1xuICAgIHJldHVybiBpdGVtO1xufVxuIl0sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQVlBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSIsInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./lib/models/generator.ts\n')},"./lib/models/index.ts":
|
||
/*!*****************************!*\
|
||
!*** ./lib/models/index.ts ***!
|
||
\*****************************/
|
||
/*! exports provided: SNItem, ItemMutator, SingletonStrategy, AppDataField, SNItemsKey, SNPredicate, SNComponent, ComponentMutator, ComponentAction, SNEditor, SNActionsExtension, Action, SNNote, NoteMutator, SNTag, SNUserPrefs, UserPrefsMutator, WebPrefKey, SNPrivileges, PrivilegeMutator, SNSmartTag, SNTheme, ThemeMutator, ContentType, displayStringForContentType, CreateItemFromPayload */function(module,__webpack_exports__,__webpack_require__){"use strict";eval('__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _Models_core_item__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @Models/core/item */ "./lib/models/core/item.ts");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "SNItem", function() { return _Models_core_item__WEBPACK_IMPORTED_MODULE_0__["SNItem"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "ItemMutator", function() { return _Models_core_item__WEBPACK_IMPORTED_MODULE_0__["ItemMutator"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "SingletonStrategy", function() { return _Models_core_item__WEBPACK_IMPORTED_MODULE_0__["SingletonStrategy"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "AppDataField", function() { return _Models_core_item__WEBPACK_IMPORTED_MODULE_0__["AppDataField"]; });\n\n/* harmony import */ var _Models_app_items_key__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! @Models/app/items_key */ "./lib/models/app/items_key.ts");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "SNItemsKey", function() { return _Models_app_items_key__WEBPACK_IMPORTED_MODULE_1__["SNItemsKey"]; });\n\n/* harmony import */ var _Models_core_predicate__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! @Models/core/predicate */ "./lib/models/core/predicate.ts");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "SNPredicate", function() { return _Models_core_predicate__WEBPACK_IMPORTED_MODULE_2__["SNPredicate"]; });\n\n/* harmony import */ var _app_component__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./app/component */ "./lib/models/app/component.ts");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "SNComponent", function() { return _app_component__WEBPACK_IMPORTED_MODULE_3__["SNComponent"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "ComponentMutator", function() { return _app_component__WEBPACK_IMPORTED_MODULE_3__["ComponentMutator"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "ComponentAction", function() { return _app_component__WEBPACK_IMPORTED_MODULE_3__["ComponentAction"]; });\n\n/* harmony import */ var _Models_app_editor__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! @Models/app/editor */ "./lib/models/app/editor.ts");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "SNEditor", function() { return _Models_app_editor__WEBPACK_IMPORTED_MODULE_4__["SNEditor"]; });\n\n/* harmony import */ var _Models_app_extension__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! @Models/app/extension */ "./lib/models/app/extension.ts");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "SNActionsExtension", function() { return _Models_app_extension__WEBPACK_IMPORTED_MODULE_5__["SNActionsExtension"]; });\n\n/* harmony import */ var _Models_app_action__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! @Models/app/action */ "./lib/models/app/action.ts");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "Action", function() { return _Models_app_action__WEBPACK_IMPORTED_MODULE_6__["Action"]; });\n\n/* harmony import */ var _Models_app_note__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! @Models/app/note */ "./lib/models/app/note.ts");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "SNNote", function() { return _Models_app_note__WEBPACK_IMPORTED_MODULE_7__["SNNote"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "NoteMutator", function() { return _Models_app_note__WEBPACK_IMPORTED_MODULE_7__["NoteMutator"]; });\n\n/* harmony import */ var _Models_app_tag__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! @Models/app/tag */ "./lib/models/app/tag.ts");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "SNTag", function() { return _Models_app_tag__WEBPACK_IMPORTED_MODULE_8__["SNTag"]; });\n\n/* harmony import */ var _Models_app_userPrefs__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(/*! @Models/app/userPrefs */ "./lib/models/app/userPrefs.ts");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "SNUserPrefs", function() { return _Models_app_userPrefs__WEBPACK_IMPORTED_MODULE_9__["SNUserPrefs"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "UserPrefsMutator", function() { return _Models_app_userPrefs__WEBPACK_IMPORTED_MODULE_9__["UserPrefsMutator"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "WebPrefKey", function() { return _Models_app_userPrefs__WEBPACK_IMPORTED_MODULE_9__["WebPrefKey"]; });\n\n/* harmony import */ var _Models_app_privileges__WEBPACK_IMPORTED_MODULE_10__ = __webpack_require__(/*! @Models/app/privileges */ "./lib/models/app/privileges.ts");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "SNPrivileges", function() { return _Models_app_privileges__WEBPACK_IMPORTED_MODULE_10__["SNPrivileges"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "PrivilegeMutator", function() { return _Models_app_privileges__WEBPACK_IMPORTED_MODULE_10__["PrivilegeMutator"]; });\n\n/* harmony import */ var _Models_app_smartTag__WEBPACK_IMPORTED_MODULE_11__ = __webpack_require__(/*! @Models/app/smartTag */ "./lib/models/app/smartTag.ts");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "SNSmartTag", function() { return _Models_app_smartTag__WEBPACK_IMPORTED_MODULE_11__["SNSmartTag"]; });\n\n/* harmony import */ var _Models_app_theme__WEBPACK_IMPORTED_MODULE_12__ = __webpack_require__(/*! @Models/app/theme */ "./lib/models/app/theme.ts");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "SNTheme", function() { return _Models_app_theme__WEBPACK_IMPORTED_MODULE_12__["SNTheme"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "ThemeMutator", function() { return _Models_app_theme__WEBPACK_IMPORTED_MODULE_12__["ThemeMutator"]; });\n\n/* harmony import */ var _Models_content_types__WEBPACK_IMPORTED_MODULE_13__ = __webpack_require__(/*! @Models/content_types */ "./lib/models/content_types.ts");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "ContentType", function() { return _Models_content_types__WEBPACK_IMPORTED_MODULE_13__["ContentType"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "displayStringForContentType", function() { return _Models_content_types__WEBPACK_IMPORTED_MODULE_13__["displayStringForContentType"]; });\n\n/* harmony import */ var _Models_generator__WEBPACK_IMPORTED_MODULE_14__ = __webpack_require__(/*! @Models/generator */ "./lib/models/generator.ts");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "CreateItemFromPayload", function() { return _Models_generator__WEBPACK_IMPORTED_MODULE_14__["CreateItemFromPayload"]; });\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9saWIvbW9kZWxzL2luZGV4LnRzLmpzIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vU05MaWJyYXJ5Ly4vbGliL21vZGVscy9pbmRleC50cz9kMzNiIl0sInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCB7IFNOSXRlbSwgSXRlbU11dGF0b3IsIFNpbmdsZXRvblN0cmF0ZWd5LCBBcHBEYXRhRmllbGQgfSBmcm9tICdATW9kZWxzL2NvcmUvaXRlbSc7XG5leHBvcnQgeyBTTkl0ZW1zS2V5IH0gZnJvbSAnQE1vZGVscy9hcHAvaXRlbXNfa2V5JztcbmV4cG9ydCB7IFNOUHJlZGljYXRlIH0gZnJvbSAnQE1vZGVscy9jb3JlL3ByZWRpY2F0ZSc7XG5leHBvcnQgeyBTTkNvbXBvbmVudCwgQ29tcG9uZW50TXV0YXRvciwgQ29tcG9uZW50QWN0aW9uIH0gZnJvbSAnLi9hcHAvY29tcG9uZW50JztcbmV4cG9ydCB7IFNORWRpdG9yIH0gZnJvbSAnQE1vZGVscy9hcHAvZWRpdG9yJztcbmV4cG9ydCB7IFNOQWN0aW9uc0V4dGVuc2lvbiB9IGZyb20gJ0BNb2RlbHMvYXBwL2V4dGVuc2lvbic7XG5leHBvcnQgeyBBY3Rpb24gfSBmcm9tICdATW9kZWxzL2FwcC9hY3Rpb24nO1xuZXhwb3J0IHsgU05Ob3RlLCBOb3RlTXV0YXRvciB9IGZyb20gJ0BNb2RlbHMvYXBwL25vdGUnO1xuZXhwb3J0IHsgU05UYWcgfSBmcm9tICdATW9kZWxzL2FwcC90YWcnO1xuZXhwb3J0IHsgU05Vc2VyUHJlZnMsIFVzZXJQcmVmc011dGF0b3IsIFdlYlByZWZLZXkgfSBmcm9tICdATW9kZWxzL2FwcC91c2VyUHJlZnMnO1xuZXhwb3J0IHsgU05Qcml2aWxlZ2VzLCBQcml2aWxlZ2VNdXRhdG9yIH0gZnJvbSAnQE1vZGVscy9hcHAvcHJpdmlsZWdlcyc7XG5leHBvcnQgeyBTTlNtYXJ0VGFnIH0gZnJvbSAnQE1vZGVscy9hcHAvc21hcnRUYWcnO1xuZXhwb3J0IHsgU05UaGVtZSwgVGhlbWVNdXRhdG9yIH0gZnJvbSAnQE1vZGVscy9hcHAvdGhlbWUnO1xuZXhwb3J0IHsgQ29udGVudFR5cGUsIGRpc3BsYXlTdHJpbmdGb3JDb250ZW50VHlwZSB9IGZyb20gJ0BNb2RlbHMvY29udGVudF90eXBlcyc7XG5leHBvcnQgeyBDcmVhdGVJdGVtRnJvbVBheWxvYWQgfSBmcm9tICdATW9kZWxzL2dlbmVyYXRvcic7XG4iXSwibWFwcGluZ3MiOiJBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOyIsInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./lib/models/index.ts\n')},"./lib/models/live_item.ts":
|
||
/*!*********************************!*\
|
||
!*** ./lib/models/live_item.ts ***!
|
||
\*********************************/
|
||
/*! exports provided: LiveItem */function(module,__webpack_exports__,__webpack_require__){"use strict";eval('__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "LiveItem", function() { return LiveItem; });\n/* harmony import */ var _babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @babel/runtime/regenerator */ "./node_modules/@babel/runtime/regenerator/index.js");\n/* harmony import */ var _babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0__);\n\n\nfunction asyncGeneratorStep(gen, resolve, reject, _next, _throw, key, arg) { try { var info = gen[key](arg); var value = info.value; } catch (error) { reject(error); return; } if (info.done) { resolve(value); } else { Promise.resolve(value).then(_next, _throw); } }\n\nfunction _asyncToGenerator(fn) { return function () { var self = this, args = arguments; return new Promise(function (resolve, reject) { var gen = fn.apply(self, args); function _next(value) { asyncGeneratorStep(gen, resolve, reject, _next, _throw, "next", value); } function _throw(err) { asyncGeneratorStep(gen, resolve, reject, _next, _throw, "throw", err); } _next(undefined); }); }; }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } }\n\nfunction _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); } }\n\nfunction _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; }\n\n/** Keeps an item reference up to date with changes */\nvar LiveItem = /*#__PURE__*/function () {\n function LiveItem(uuid, application, onChange) {\n var _this = this;\n\n _classCallCheck(this, LiveItem);\n\n this.item = application.findItem(uuid);\n onChange && onChange(this.item);\n this.removeObserver = application.streamItems(this.item.content_type, /*#__PURE__*/function () {\n var _ref = _asyncToGenerator( /*#__PURE__*/_babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0___default.a.mark(function _callee(items) {\n var matchingItem;\n return _babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0___default.a.wrap(function _callee$(_context) {\n while (1) {\n switch (_context.prev = _context.next) {\n case 0:\n matchingItem = items.find(function (item) {\n return item.uuid === uuid;\n });\n\n if (matchingItem) {\n _this.item = matchingItem;\n onChange && onChange(_this.item);\n }\n\n case 2:\n case "end":\n return _context.stop();\n }\n }\n }, _callee);\n }));\n\n return function (_x) {\n return _ref.apply(this, arguments);\n };\n }());\n }\n\n _createClass(LiveItem, [{\n key: "deinit",\n value: function deinit() {\n this.removeObserver();\n this.removeObserver = undefined;\n }\n }]);\n\n return LiveItem;\n}();//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9saWIvbW9kZWxzL2xpdmVfaXRlbS50cy5qcyIsInNvdXJjZXMiOlsid2VicGFjazovL1NOTGlicmFyeS8uL2xpYi9tb2RlbHMvbGl2ZV9pdGVtLnRzP2E2ZjUiXSwic291cmNlc0NvbnRlbnQiOlsiLyoqIEtlZXBzIGFuIGl0ZW0gcmVmZXJlbmNlIHVwIHRvIGRhdGUgd2l0aCBjaGFuZ2VzICovXG5leHBvcnQgY2xhc3MgTGl2ZUl0ZW0ge1xuICAgIGNvbnN0cnVjdG9yKHV1aWQsIGFwcGxpY2F0aW9uLCBvbkNoYW5nZSkge1xuICAgICAgICB0aGlzLml0ZW0gPSBhcHBsaWNhdGlvbi5maW5kSXRlbSh1dWlkKTtcbiAgICAgICAgb25DaGFuZ2UgJiYgb25DaGFuZ2UodGhpcy5pdGVtKTtcbiAgICAgICAgdGhpcy5yZW1vdmVPYnNlcnZlciA9IGFwcGxpY2F0aW9uLnN0cmVhbUl0ZW1zKHRoaXMuaXRlbS5jb250ZW50X3R5cGUsIGFzeW5jIChpdGVtcykgPT4ge1xuICAgICAgICAgICAgY29uc3QgbWF0Y2hpbmdJdGVtID0gaXRlbXMuZmluZCgoaXRlbSkgPT4ge1xuICAgICAgICAgICAgICAgIHJldHVybiBpdGVtLnV1aWQgPT09IHV1aWQ7XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIGlmIChtYXRjaGluZ0l0ZW0pIHtcbiAgICAgICAgICAgICAgICB0aGlzLml0ZW0gPSBtYXRjaGluZ0l0ZW07XG4gICAgICAgICAgICAgICAgb25DaGFuZ2UgJiYgb25DaGFuZ2UodGhpcy5pdGVtKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSk7XG4gICAgfVxuICAgIGRlaW5pdCgpIHtcbiAgICAgICAgdGhpcy5yZW1vdmVPYnNlcnZlcigpO1xuICAgICAgICB0aGlzLnJlbW92ZU9ic2VydmVyID0gdW5kZWZpbmVkO1xuICAgIH1cbn1cbiJdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7OztBQUFBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFEQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBUkE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFDQTtBQURBO0FBQUE7QUFBQTtBQUFBO0FBU0E7QUFDQTtBQWRBO0FBQUE7QUFBQTtBQWVBO0FBQ0E7QUFDQTtBQWpCQTtBQUNBO0FBREE7QUFBQSIsInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./lib/models/live_item.ts\n')},"./lib/platforms.ts":
|
||
/*!**************************!*\
|
||
!*** ./lib/platforms.ts ***!
|
||
\**************************/
|
||
/*! exports provided: Environment, Platform, platformFromString, platformToString, environmentToString, isEnvironmentWebOrDesktop, isEnvironmentMobile */function(module,__webpack_exports__,__webpack_require__){"use strict";eval('__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "Environment", function() { return Environment; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "Platform", function() { return Platform; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "platformFromString", function() { return platformFromString; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "platformToString", function() { return platformToString; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "environmentToString", function() { return environmentToString; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "isEnvironmentWebOrDesktop", function() { return isEnvironmentWebOrDesktop; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "isEnvironmentMobile", function() { return isEnvironmentMobile; });\nfunction _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\n\nvar Environment;\n\n(function (Environment) {\n Environment[Environment["Web"] = 1] = "Web";\n Environment[Environment["Desktop"] = 2] = "Desktop";\n Environment[Environment["Mobile"] = 3] = "Mobile";\n})(Environment || (Environment = {}));\n\n;\nvar Platform;\n\n(function (Platform) {\n Platform[Platform["Ios"] = 1] = "Ios";\n Platform[Platform["Android"] = 2] = "Android";\n Platform[Platform["MacWeb"] = 3] = "MacWeb";\n Platform[Platform["MacDesktop"] = 4] = "MacDesktop";\n Platform[Platform["WindowsWeb"] = 5] = "WindowsWeb";\n Platform[Platform["WindowsDesktop"] = 6] = "WindowsDesktop";\n Platform[Platform["LinuxWeb"] = 7] = "LinuxWeb";\n Platform[Platform["LinuxDesktop"] = 8] = "LinuxDesktop";\n})(Platform || (Platform = {}));\n\n;\nfunction platformFromString(string) {\n var map = {\n \'mac-web\': Platform.MacWeb,\n \'mac-desktop\': Platform.MacDesktop,\n \'linux-web\': Platform.LinuxWeb,\n \'linux-desktop\': Platform.LinuxDesktop,\n \'windows-web\': Platform.WindowsWeb,\n \'windows-desktop\': Platform.WindowsDesktop,\n \'ios\': Platform.Ios,\n \'android\': Platform.Android\n };\n return map[string];\n}\nfunction platformToString(platform) {\n var _map;\n\n var map = (_map = {}, _defineProperty(_map, Platform.MacWeb, \'mac-web\'), _defineProperty(_map, Platform.MacDesktop, \'mac-desktop\'), _defineProperty(_map, Platform.LinuxWeb, \'linux-web\'), _defineProperty(_map, Platform.LinuxDesktop, \'linux-desktop\'), _defineProperty(_map, Platform.WindowsWeb, \'windows-web\'), _defineProperty(_map, Platform.WindowsDesktop, \'windows-desktop\'), _defineProperty(_map, Platform.Ios, \'ios\'), _defineProperty(_map, Platform.Android, \'android\'), _map);\n return map[platform];\n}\nfunction environmentToString(environment) {\n var _map2;\n\n var map = (_map2 = {}, _defineProperty(_map2, Environment.Web, \'web\'), _defineProperty(_map2, Environment.Desktop, \'desktop\'), _defineProperty(_map2, Environment.Mobile, \'mobile\'), _map2);\n return map[environment];\n}\nfunction isEnvironmentWebOrDesktop(environment) {\n return environment === Environment.Web || environment === Environment.Desktop;\n}\nfunction isEnvironmentMobile(environment) {\n return environment === Environment.Mobile;\n}//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9saWIvcGxhdGZvcm1zLnRzLmpzIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vU05MaWJyYXJ5Ly4vbGliL3BsYXRmb3Jtcy50cz8yNmNiIl0sInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCB2YXIgRW52aXJvbm1lbnQ7XG4oZnVuY3Rpb24gKEVudmlyb25tZW50KSB7XG4gICAgRW52aXJvbm1lbnRbRW52aXJvbm1lbnRbXCJXZWJcIl0gPSAxXSA9IFwiV2ViXCI7XG4gICAgRW52aXJvbm1lbnRbRW52aXJvbm1lbnRbXCJEZXNrdG9wXCJdID0gMl0gPSBcIkRlc2t0b3BcIjtcbiAgICBFbnZpcm9ubWVudFtFbnZpcm9ubWVudFtcIk1vYmlsZVwiXSA9IDNdID0gXCJNb2JpbGVcIjtcbn0pKEVudmlyb25tZW50IHx8IChFbnZpcm9ubWVudCA9IHt9KSk7XG47XG5leHBvcnQgdmFyIFBsYXRmb3JtO1xuKGZ1bmN0aW9uIChQbGF0Zm9ybSkge1xuICAgIFBsYXRmb3JtW1BsYXRmb3JtW1wiSW9zXCJdID0gMV0gPSBcIklvc1wiO1xuICAgIFBsYXRmb3JtW1BsYXRmb3JtW1wiQW5kcm9pZFwiXSA9IDJdID0gXCJBbmRyb2lkXCI7XG4gICAgUGxhdGZvcm1bUGxhdGZvcm1bXCJNYWNXZWJcIl0gPSAzXSA9IFwiTWFjV2ViXCI7XG4gICAgUGxhdGZvcm1bUGxhdGZvcm1bXCJNYWNEZXNrdG9wXCJdID0gNF0gPSBcIk1hY0Rlc2t0b3BcIjtcbiAgICBQbGF0Zm9ybVtQbGF0Zm9ybVtcIldpbmRvd3NXZWJcIl0gPSA1XSA9IFwiV2luZG93c1dlYlwiO1xuICAgIFBsYXRmb3JtW1BsYXRmb3JtW1wiV2luZG93c0Rlc2t0b3BcIl0gPSA2XSA9IFwiV2luZG93c0Rlc2t0b3BcIjtcbiAgICBQbGF0Zm9ybVtQbGF0Zm9ybVtcIkxpbnV4V2ViXCJdID0gN10gPSBcIkxpbnV4V2ViXCI7XG4gICAgUGxhdGZvcm1bUGxhdGZvcm1bXCJMaW51eERlc2t0b3BcIl0gPSA4XSA9IFwiTGludXhEZXNrdG9wXCI7XG59KShQbGF0Zm9ybSB8fCAoUGxhdGZvcm0gPSB7fSkpO1xuO1xuZXhwb3J0IGZ1bmN0aW9uIHBsYXRmb3JtRnJvbVN0cmluZyhzdHJpbmcpIHtcbiAgICBjb25zdCBtYXAgPSB7XG4gICAgICAgICdtYWMtd2ViJzogUGxhdGZvcm0uTWFjV2ViLFxuICAgICAgICAnbWFjLWRlc2t0b3AnOiBQbGF0Zm9ybS5NYWNEZXNrdG9wLFxuICAgICAgICAnbGludXgtd2ViJzogUGxhdGZvcm0uTGludXhXZWIsXG4gICAgICAgICdsaW51eC1kZXNrdG9wJzogUGxhdGZvcm0uTGludXhEZXNrdG9wLFxuICAgICAgICAnd2luZG93cy13ZWInOiBQbGF0Zm9ybS5XaW5kb3dzV2ViLFxuICAgICAgICAnd2luZG93cy1kZXNrdG9wJzogUGxhdGZvcm0uV2luZG93c0Rlc2t0b3AsXG4gICAgICAgICdpb3MnOiBQbGF0Zm9ybS5Jb3MsXG4gICAgICAgICdhbmRyb2lkJzogUGxhdGZvcm0uQW5kcm9pZCxcbiAgICB9O1xuICAgIHJldHVybiBtYXBbc3RyaW5nXTtcbn1cbmV4cG9ydCBmdW5jdGlvbiBwbGF0Zm9ybVRvU3RyaW5nKHBsYXRmb3JtKSB7XG4gICAgY29uc3QgbWFwID0ge1xuICAgICAgICBbUGxhdGZvcm0uTWFjV2ViXTogJ21hYy13ZWInLFxuICAgICAgICBbUGxhdGZvcm0uTWFjRGVza3RvcF06ICdtYWMtZGVza3RvcCcsXG4gICAgICAgIFtQbGF0Zm9ybS5MaW51eFdlYl06ICdsaW51eC13ZWInLFxuICAgICAgICBbUGxhdGZvcm0uTGludXhEZXNrdG9wXTogJ2xpbnV4LWRlc2t0b3AnLFxuICAgICAgICBbUGxhdGZvcm0uV2luZG93c1dlYl06ICd3aW5kb3dzLXdlYicsXG4gICAgICAgIFtQbGF0Zm9ybS5XaW5kb3dzRGVza3RvcF06ICd3aW5kb3dzLWRlc2t0b3AnLFxuICAgICAgICBbUGxhdGZvcm0uSW9zXTogJ2lvcycsXG4gICAgICAgIFtQbGF0Zm9ybS5BbmRyb2lkXTogJ2FuZHJvaWQnLFxuICAgIH07XG4gICAgcmV0dXJuIG1hcFtwbGF0Zm9ybV07XG59XG5leHBvcnQgZnVuY3Rpb24gZW52aXJvbm1lbnRUb1N0cmluZyhlbnZpcm9ubWVudCkge1xuICAgIGNvbnN0IG1hcCA9IHtcbiAgICAgICAgW0Vudmlyb25tZW50LldlYl06ICd3ZWInLFxuICAgICAgICBbRW52aXJvbm1lbnQuRGVza3RvcF06ICdkZXNrdG9wJyxcbiAgICAgICAgW0Vudmlyb25tZW50Lk1vYmlsZV06ICdtb2JpbGUnLFxuICAgIH07XG4gICAgcmV0dXJuIG1hcFtlbnZpcm9ubWVudF07XG59XG5leHBvcnQgZnVuY3Rpb24gaXNFbnZpcm9ubWVudFdlYk9yRGVza3RvcChlbnZpcm9ubWVudCkge1xuICAgIHJldHVybiBlbnZpcm9ubWVudCA9PT0gRW52aXJvbm1lbnQuV2ViIHx8XG4gICAgICAgIGVudmlyb25tZW50ID09PSBFbnZpcm9ubWVudC5EZXNrdG9wO1xufVxuZXhwb3J0IGZ1bmN0aW9uIGlzRW52aXJvbm1lbnRNb2JpbGUoZW52aXJvbm1lbnQpIHtcbiAgICByZXR1cm4gZW52aXJvbm1lbnQgPT09IEVudmlyb25tZW50Lk1vYmlsZTtcbn1cbiJdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7OztBQUFBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQVJBO0FBVUE7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUFBO0FBVUE7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUFBO0FBS0E7QUFDQTtBQUNBO0FBQ0E7QUFFQTtBQUNBO0FBQ0E7QUFDQSIsInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./lib/platforms.ts\n')},"./lib/protocol/collection/collection.ts":
|
||
/*!***********************************************!*\
|
||
!*** ./lib/protocol/collection/collection.ts ***!
|
||
\***********************************************/
|
||
/*! exports provided: MutableCollection */function(module,__webpack_exports__,__webpack_require__){"use strict";eval('__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "MutableCollection", function() { return MutableCollection; });\n/* harmony import */ var _uuid_map__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./uuid_map */ "./lib/protocol/collection/uuid_map.ts");\n/* harmony import */ var _Lib_utils__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! @Lib/utils */ "./lib/utils.ts");\n/* harmony import */ var lodash_remove__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! lodash/remove */ "./node_modules/lodash/remove.js");\n/* harmony import */ var lodash_remove__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(lodash_remove__WEBPACK_IMPORTED_MODULE_2__);\nfunction _objectDestructuringEmpty(obj) { if (obj == null) throw new TypeError("Cannot destructure undefined"); }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } }\n\nfunction _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); } }\n\nfunction _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; }\n\n\n\n\nvar MutableCollection = /*#__PURE__*/function () {\n function MutableCollection() {\n var _ref;\n\n var copy = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : false;\n var mapCopy = arguments.length > 1 ? arguments[1] : undefined;\n var typedMapCopy = arguments.length > 2 ? arguments[2] : undefined;\n var referenceMapCopy = arguments.length > 3 ? arguments[3] : undefined;\n var conflictMapCopy = arguments.length > 4 ? arguments[4] : undefined;\n\n _classCallCheck(this, MutableCollection);\n\n this.map = {};\n this.typedMap = (_ref = {}, _objectDestructuringEmpty(_ref), _ref);\n /** An array of uuids of items that are dirty */\n\n this.dirtyIndex = new Set();\n /** An array of uuids of items that are errorDecrypting or waitingForKey */\n\n this.invalidsIndex = new Set();\n /** An array of uuids of items that are not marked as deleted */\n\n this.nondeletedIndex = new Set();\n\n if (copy) {\n this.map = mapCopy;\n this.typedMap = typedMapCopy;\n this.referenceMap = referenceMapCopy;\n this.conflictMap = conflictMapCopy;\n } else {\n this.referenceMap = new _uuid_map__WEBPACK_IMPORTED_MODULE_0__["UuidMap"]();\n this.conflictMap = new _uuid_map__WEBPACK_IMPORTED_MODULE_0__["UuidMap"]();\n }\n }\n\n _createClass(MutableCollection, [{\n key: "uuids",\n value: function uuids() {\n return Object.keys(this.map);\n }\n }, {\n key: "all",\n value: function all(contentType) {\n var _this = this;\n\n if (contentType) {\n if (Array.isArray(contentType)) {\n var elements = [];\n var _iteratorNormalCompletion = true;\n var _didIteratorError = false;\n var _iteratorError = undefined;\n\n try {\n for (var _iterator = contentType[Symbol.iterator](), _step; !(_iteratorNormalCompletion = (_step = _iterator.next()).done); _iteratorNormalCompletion = true) {\n var type = _step.value;\n Object(_Lib_utils__WEBPACK_IMPORTED_MODULE_1__["extendArray"])(elements, this.typedMap[type] || []);\n }\n } catch (err) {\n _didIteratorError = true;\n _iteratorError = err;\n } finally {\n try {\n if (!_iteratorNormalCompletion && _iterator.return != null) {\n _iterator.return();\n }\n } finally {\n if (_didIteratorError) {\n throw _iteratorError;\n }\n }\n }\n\n return elements;\n } else {\n var _this$typedMap$conten;\n\n return ((_this$typedMap$conten = this.typedMap[contentType]) === null || _this$typedMap$conten === void 0 ? void 0 : _this$typedMap$conten.slice()) || [];\n }\n } else {\n return Object.keys(this.map).map(function (uuid) {\n return _this.map[uuid];\n });\n }\n }\n }, {\n key: "find",\n value: function find(uuid) {\n return this.map[uuid];\n }\n /** Returns all elements that are marked as dirty */\n\n }, {\n key: "dirtyElements",\n value: function dirtyElements() {\n var uuids = Array.from(this.dirtyIndex);\n return this.findAll(uuids);\n }\n /** Returns all elements that are errorDecrypting or waitingForKey */\n\n }, {\n key: "invalidElements",\n value: function invalidElements() {\n var uuids = Array.from(this.invalidsIndex);\n return this.findAll(uuids);\n }\n /** Returns all elements that are not marked as deleted */\n\n }, {\n key: "nondeletedElements",\n value: function nondeletedElements() {\n var uuids = Array.from(this.nondeletedIndex);\n return this.findAll(uuids);\n }\n /**\n * @param includeBlanks If true and an item is not found, an `undefined` element\n * will be inserted into the array.\n */\n\n }, {\n key: "findAll",\n value: function findAll(uuids) {\n var includeBlanks = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : false;\n var results = [];\n var _iteratorNormalCompletion2 = true;\n var _didIteratorError2 = false;\n var _iteratorError2 = undefined;\n\n try {\n for (var _iterator2 = uuids[Symbol.iterator](), _step2; !(_iteratorNormalCompletion2 = (_step2 = _iterator2.next()).done); _iteratorNormalCompletion2 = true) {\n var id = _step2.value;\n var element = this.map[id];\n\n if (element || includeBlanks) {\n results.push(element);\n }\n }\n } catch (err) {\n _didIteratorError2 = true;\n _iteratorError2 = err;\n } finally {\n try {\n if (!_iteratorNormalCompletion2 && _iterator2.return != null) {\n _iterator2.return();\n }\n } finally {\n if (_didIteratorError2) {\n throw _iteratorError2;\n }\n }\n }\n\n return results;\n }\n }, {\n key: "set",\n value: function set(elements) {\n elements = Array.isArray(elements) ? elements : [elements];\n\n if (elements.length === 0) {\n console.warn(\'Attempting to set 0 elements onto collection\');\n return;\n }\n\n var _iteratorNormalCompletion3 = true;\n var _didIteratorError3 = false;\n var _iteratorError3 = undefined;\n\n try {\n for (var _iterator3 = elements[Symbol.iterator](), _step3; !(_iteratorNormalCompletion3 = (_step3 = _iterator3.next()).done); _iteratorNormalCompletion3 = true) {\n var element = _step3.value;\n this.map[element.uuid] = element;\n this.setToTypedMap(element);\n /** Dirty index */\n\n if (element.dirty) {\n this.dirtyIndex.add(element.uuid);\n } else {\n this.dirtyIndex.delete(element.uuid);\n }\n /** Invalids index */\n\n\n if (element.errorDecrypting || element.waitingForKey) {\n this.invalidsIndex.add(element.uuid);\n } else {\n this.invalidsIndex.delete(element.uuid);\n }\n\n if (element.deleted) {\n this.referenceMap.removeFromMap(element.uuid);\n this.nondeletedIndex.delete(element.uuid);\n } else {\n this.nondeletedIndex.add(element.uuid);\n var conflictOf = element.safeContent.conflict_of;\n\n if (conflictOf) {\n this.conflictMap.establishRelationship(conflictOf, element.uuid);\n }\n\n this.referenceMap.setAllRelationships(element.uuid, element.references.map(function (r) {\n return r.uuid;\n }));\n }\n }\n } catch (err) {\n _didIteratorError3 = true;\n _iteratorError3 = err;\n } finally {\n try {\n if (!_iteratorNormalCompletion3 && _iterator3.return != null) {\n _iterator3.return();\n }\n } finally {\n if (_didIteratorError3) {\n throw _iteratorError3;\n }\n }\n }\n }\n }, {\n key: "discard",\n value: function discard(elements) {\n elements = Array.isArray(elements) ? elements : [elements];\n var _iteratorNormalCompletion4 = true;\n var _didIteratorError4 = false;\n var _iteratorError4 = undefined;\n\n try {\n for (var _iterator4 = elements[Symbol.iterator](), _step4; !(_iteratorNormalCompletion4 = (_step4 = _iterator4.next()).done); _iteratorNormalCompletion4 = true) {\n var element = _step4.value;\n this.conflictMap.removeFromMap(element.uuid);\n this.referenceMap.removeFromMap(element.uuid);\n this.deleteFromTypedMap(element);\n delete this.map[element.uuid];\n }\n } catch (err) {\n _didIteratorError4 = true;\n _iteratorError4 = err;\n } finally {\n try {\n if (!_iteratorNormalCompletion4 && _iterator4.return != null) {\n _iterator4.return();\n }\n } finally {\n if (_didIteratorError4) {\n throw _iteratorError4;\n }\n }\n }\n }\n }, {\n key: "setToTypedMap",\n value: function setToTypedMap(element) {\n var array = this.typedMap[element.content_type] || [];\n lodash_remove__WEBPACK_IMPORTED_MODULE_2___default()(array, {\n uuid: element.uuid\n });\n array.push(element);\n this.typedMap[element.content_type] = array;\n }\n }, {\n key: "deleteFromTypedMap",\n value: function deleteFromTypedMap(element) {\n var array = this.typedMap[element.content_type] || [];\n lodash_remove__WEBPACK_IMPORTED_MODULE_2___default()(array, {\n uuid: element.uuid\n });\n this.typedMap[element.content_type] = array;\n }\n }, {\n key: "uuidsThatReferenceUuid",\n value: function uuidsThatReferenceUuid(uuid) {\n if (!Object(_Lib_utils__WEBPACK_IMPORTED_MODULE_1__["isString"])(uuid)) {\n throw Error(\'Must use uuid string\');\n }\n\n return this.referenceMap.getInverseRelationships(uuid);\n }\n }, {\n key: "elementsReferencingElement",\n value: function elementsReferencingElement(element) {\n var uuids = this.uuidsThatReferenceUuid(element.uuid);\n return this.findAll(uuids);\n }\n }, {\n key: "conflictsOf",\n value: function conflictsOf(uuid) {\n var uuids = this.conflictMap.getDirectRelationships(uuid);\n return this.findAll(uuids);\n }\n }]);\n\n return MutableCollection;\n}();//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9saWIvcHJvdG9jb2wvY29sbGVjdGlvbi9jb2xsZWN0aW9uLnRzLmpzIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vU05MaWJyYXJ5Ly4vbGliL3Byb3RvY29sL2NvbGxlY3Rpb24vY29sbGVjdGlvbi50cz85N2JjIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IFV1aWRNYXAgfSBmcm9tICcuL3V1aWRfbWFwJztcbmltcG9ydCB7IGlzU3RyaW5nLCBleHRlbmRBcnJheSB9IGZyb20gJ0BMaWIvdXRpbHMnO1xuaW1wb3J0IHJlbW92ZSBmcm9tICdsb2Rhc2gvcmVtb3ZlJztcbmV4cG9ydCBjbGFzcyBNdXRhYmxlQ29sbGVjdGlvbiB7XG4gICAgY29uc3RydWN0b3IoY29weSA9IGZhbHNlLCBtYXBDb3B5LCB0eXBlZE1hcENvcHksIHJlZmVyZW5jZU1hcENvcHksIGNvbmZsaWN0TWFwQ29weSkge1xuICAgICAgICB0aGlzLm1hcCA9IHt9O1xuICAgICAgICB0aGlzLnR5cGVkTWFwID0ge30gPSB7fTtcbiAgICAgICAgLyoqIEFuIGFycmF5IG9mIHV1aWRzIG9mIGl0ZW1zIHRoYXQgYXJlIGRpcnR5ICovXG4gICAgICAgIHRoaXMuZGlydHlJbmRleCA9IG5ldyBTZXQoKTtcbiAgICAgICAgLyoqIEFuIGFycmF5IG9mIHV1aWRzIG9mIGl0ZW1zIHRoYXQgYXJlIGVycm9yRGVjcnlwdGluZyBvciB3YWl0aW5nRm9yS2V5ICovXG4gICAgICAgIHRoaXMuaW52YWxpZHNJbmRleCA9IG5ldyBTZXQoKTtcbiAgICAgICAgLyoqIEFuIGFycmF5IG9mIHV1aWRzIG9mIGl0ZW1zIHRoYXQgYXJlIG5vdCBtYXJrZWQgYXMgZGVsZXRlZCAqL1xuICAgICAgICB0aGlzLm5vbmRlbGV0ZWRJbmRleCA9IG5ldyBTZXQoKTtcbiAgICAgICAgaWYgKGNvcHkpIHtcbiAgICAgICAgICAgIHRoaXMubWFwID0gbWFwQ29weTtcbiAgICAgICAgICAgIHRoaXMudHlwZWRNYXAgPSB0eXBlZE1hcENvcHk7XG4gICAgICAgICAgICB0aGlzLnJlZmVyZW5jZU1hcCA9IHJlZmVyZW5jZU1hcENvcHk7XG4gICAgICAgICAgICB0aGlzLmNvbmZsaWN0TWFwID0gY29uZmxpY3RNYXBDb3B5O1xuICAgICAgICB9XG4gICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgdGhpcy5yZWZlcmVuY2VNYXAgPSBuZXcgVXVpZE1hcCgpO1xuICAgICAgICAgICAgdGhpcy5jb25mbGljdE1hcCA9IG5ldyBVdWlkTWFwKCk7XG4gICAgICAgIH1cbiAgICB9XG4gICAgdXVpZHMoKSB7XG4gICAgICAgIHJldHVybiBPYmplY3Qua2V5cyh0aGlzLm1hcCk7XG4gICAgfVxuICAgIGFsbChjb250ZW50VHlwZSkge1xuICAgICAgICBpZiAoY29udGVudFR5cGUpIHtcbiAgICAgICAgICAgIGlmIChBcnJheS5pc0FycmF5KGNvbnRlbnRUeXBlKSkge1xuICAgICAgICAgICAgICAgIGNvbnN0IGVsZW1lbnRzID0gW107XG4gICAgICAgICAgICAgICAgZm9yIChjb25zdCB0eXBlIG9mIGNvbnRlbnRUeXBlKSB7XG4gICAgICAgICAgICAgICAgICAgIGV4dGVuZEFycmF5KGVsZW1lbnRzLCB0aGlzLnR5cGVkTWFwW3R5cGVdIHx8IFtdKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgcmV0dXJuIGVsZW1lbnRzO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIHRoaXMudHlwZWRNYXBbY29udGVudFR5cGVdPy5zbGljZSgpIHx8IFtdO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgcmV0dXJuIE9iamVjdC5rZXlzKHRoaXMubWFwKS5tYXAoKHV1aWQpID0+IHtcbiAgICAgICAgICAgICAgICByZXR1cm4gdGhpcy5tYXBbdXVpZF07XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgfVxuICAgIH1cbiAgICBmaW5kKHV1aWQpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMubWFwW3V1aWRdO1xuICAgIH1cbiAgICAvKiogUmV0dXJucyBhbGwgZWxlbWVudHMgdGhhdCBhcmUgbWFya2VkIGFzIGRpcnR5ICovXG4gICAgZGlydHlFbGVtZW50cygpIHtcbiAgICAgICAgY29uc3QgdXVpZHMgPSBBcnJheS5mcm9tKHRoaXMuZGlydHlJbmRleCk7XG4gICAgICAgIHJldHVybiB0aGlzLmZpbmRBbGwodXVpZHMpO1xuICAgIH1cbiAgICAvKiogUmV0dXJucyBhbGwgZWxlbWVudHMgdGhhdCBhcmUgZXJyb3JEZWNyeXB0aW5nIG9yIHdhaXRpbmdGb3JLZXkgKi9cbiAgICBpbnZhbGlkRWxlbWVudHMoKSB7XG4gICAgICAgIGNvbnN0IHV1aWRzID0gQXJyYXkuZnJvbSh0aGlzLmludmFsaWRzSW5kZXgpO1xuICAgICAgICByZXR1cm4gdGhpcy5maW5kQWxsKHV1aWRzKTtcbiAgICB9XG4gICAgLyoqIFJldHVybnMgYWxsIGVsZW1lbnRzIHRoYXQgYXJlIG5vdCBtYXJrZWQgYXMgZGVsZXRlZCAqL1xuICAgIG5vbmRlbGV0ZWRFbGVtZW50cygpIHtcbiAgICAgICAgY29uc3QgdXVpZHMgPSBBcnJheS5mcm9tKHRoaXMubm9uZGVsZXRlZEluZGV4KTtcbiAgICAgICAgcmV0dXJuIHRoaXMuZmluZEFsbCh1dWlkcyk7XG4gICAgfVxuICAgIC8qKlxuICAgICAqIEBwYXJhbSBpbmNsdWRlQmxhbmtzIElmIHRydWUgYW5kIGFuIGl0ZW0gaXMgbm90IGZvdW5kLCBhbiBgdW5kZWZpbmVkYCBlbGVtZW50XG4gICAgICogd2lsbCBiZSBpbnNlcnRlZCBpbnRvIHRoZSBhcnJheS5cbiAgICAgKi9cbiAgICBmaW5kQWxsKHV1aWRzLCBpbmNsdWRlQmxhbmtzID0gZmFsc2UpIHtcbiAgICAgICAgY29uc3QgcmVzdWx0cyA9IFtdO1xuICAgICAgICBmb3IgKGNvbnN0IGlkIG9mIHV1aWRzKSB7XG4gICAgICAgICAgICBjb25zdCBlbGVtZW50ID0gdGhpcy5tYXBbaWRdO1xuICAgICAgICAgICAgaWYgKGVsZW1lbnQgfHwgaW5jbHVkZUJsYW5rcykge1xuICAgICAgICAgICAgICAgIHJlc3VsdHMucHVzaChlbGVtZW50KTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gcmVzdWx0cztcbiAgICB9XG4gICAgc2V0KGVsZW1lbnRzKSB7XG4gICAgICAgIGVsZW1lbnRzID0gQXJyYXkuaXNBcnJheShlbGVtZW50cykgPyBlbGVtZW50cyA6IFtlbGVtZW50c107XG4gICAgICAgIGlmIChlbGVtZW50cy5sZW5ndGggPT09IDApIHtcbiAgICAgICAgICAgIGNvbnNvbGUud2FybignQXR0ZW1wdGluZyB0byBzZXQgMCBlbGVtZW50cyBvbnRvIGNvbGxlY3Rpb24nKTtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuICAgICAgICBmb3IgKGNvbnN0IGVsZW1lbnQgb2YgZWxlbWVudHMpIHtcbiAgICAgICAgICAgIHRoaXMubWFwW2VsZW1lbnQudXVpZF0gPSBlbGVtZW50O1xuICAgICAgICAgICAgdGhpcy5zZXRUb1R5cGVkTWFwKGVsZW1lbnQpO1xuICAgICAgICAgICAgLyoqIERpcnR5IGluZGV4ICovXG4gICAgICAgICAgICBpZiAoZWxlbWVudC5kaXJ0eSkge1xuICAgICAgICAgICAgICAgIHRoaXMuZGlydHlJbmRleC5hZGQoZWxlbWVudC51dWlkKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgICAgIHRoaXMuZGlydHlJbmRleC5kZWxldGUoZWxlbWVudC51dWlkKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIC8qKiBJbnZhbGlkcyBpbmRleCAqL1xuICAgICAgICAgICAgaWYgKGVsZW1lbnQuZXJyb3JEZWNyeXB0aW5nIHx8IGVsZW1lbnQud2FpdGluZ0ZvcktleSkge1xuICAgICAgICAgICAgICAgIHRoaXMuaW52YWxpZHNJbmRleC5hZGQoZWxlbWVudC51dWlkKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgICAgIHRoaXMuaW52YWxpZHNJbmRleC5kZWxldGUoZWxlbWVudC51dWlkKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGlmIChlbGVtZW50LmRlbGV0ZWQpIHtcbiAgICAgICAgICAgICAgICB0aGlzLnJlZmVyZW5jZU1hcC5yZW1vdmVGcm9tTWFwKGVsZW1lbnQudXVpZCk7XG4gICAgICAgICAgICAgICAgdGhpcy5ub25kZWxldGVkSW5kZXguZGVsZXRlKGVsZW1lbnQudXVpZCk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgICAgICB0aGlzLm5vbmRlbGV0ZWRJbmRleC5hZGQoZWxlbWVudC51dWlkKTtcbiAgICAgICAgICAgICAgICBjb25zdCBjb25mbGljdE9mID0gZWxlbWVudC5zYWZlQ29udGVudC5jb25mbGljdF9vZjtcbiAgICAgICAgICAgICAgICBpZiAoY29uZmxpY3RPZikge1xuICAgICAgICAgICAgICAgICAgICB0aGlzLmNvbmZsaWN0TWFwLmVzdGFibGlzaFJlbGF0aW9uc2hpcChjb25mbGljdE9mLCBlbGVtZW50LnV1aWQpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB0aGlzLnJlZmVyZW5jZU1hcC5zZXRBbGxSZWxhdGlvbnNoaXBzKGVsZW1lbnQudXVpZCwgZWxlbWVudC5yZWZlcmVuY2VzLm1hcCgocikgPT4gci51dWlkKSk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICB9XG4gICAgZGlzY2FyZChlbGVtZW50cykge1xuICAgICAgICBlbGVtZW50cyA9IEFycmF5LmlzQXJyYXkoZWxlbWVudHMpID8gZWxlbWVudHMgOiBbZWxlbWVudHNdO1xuICAgICAgICBmb3IgKGNvbnN0IGVsZW1lbnQgb2YgZWxlbWVudHMpIHtcbiAgICAgICAgICAgIHRoaXMuY29uZmxpY3RNYXAucmVtb3ZlRnJvbU1hcChlbGVtZW50LnV1aWQpO1xuICAgICAgICAgICAgdGhpcy5yZWZlcmVuY2VNYXAucmVtb3ZlRnJvbU1hcChlbGVtZW50LnV1aWQpO1xuICAgICAgICAgICAgdGhpcy5kZWxldGVGcm9tVHlwZWRNYXAoZWxlbWVudCk7XG4gICAgICAgICAgICBkZWxldGUgdGhpcy5tYXBbZWxlbWVudC51dWlkXTtcbiAgICAgICAgfVxuICAgIH1cbiAgICBzZXRUb1R5cGVkTWFwKGVsZW1lbnQpIHtcbiAgICAgICAgY29uc3QgYXJyYXkgPSB0aGlzLnR5cGVkTWFwW2VsZW1lbnQuY29udGVudF90eXBlXSB8fCBbXTtcbiAgICAgICAgcmVtb3ZlKGFycmF5LCB7IHV1aWQ6IGVsZW1lbnQudXVpZCB9KTtcbiAgICAgICAgYXJyYXkucHVzaChlbGVtZW50KTtcbiAgICAgICAgdGhpcy50eXBlZE1hcFtlbGVtZW50LmNvbnRlbnRfdHlwZV0gPSBhcnJheTtcbiAgICB9XG4gICAgZGVsZXRlRnJvbVR5cGVkTWFwKGVsZW1lbnQpIHtcbiAgICAgICAgY29uc3QgYXJyYXkgPSB0aGlzLnR5cGVkTWFwW2VsZW1lbnQuY29udGVudF90eXBlXSB8fCBbXTtcbiAgICAgICAgcmVtb3ZlKGFycmF5LCB7IHV1aWQ6IGVsZW1lbnQudXVpZCB9KTtcbiAgICAgICAgdGhpcy50eXBlZE1hcFtlbGVtZW50LmNvbnRlbnRfdHlwZV0gPSBhcnJheTtcbiAgICB9XG4gICAgdXVpZHNUaGF0UmVmZXJlbmNlVXVpZCh1dWlkKSB7XG4gICAgICAgIGlmICghaXNTdHJpbmcodXVpZCkpIHtcbiAgICAgICAgICAgIHRocm93IEVycm9yKCdNdXN0IHVzZSB1dWlkIHN0cmluZycpO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiB0aGlzLnJlZmVyZW5jZU1hcC5nZXRJbnZlcnNlUmVsYXRpb25zaGlwcyh1dWlkKTtcbiAgICB9XG4gICAgZWxlbWVudHNSZWZlcmVuY2luZ0VsZW1lbnQoZWxlbWVudCkge1xuICAgICAgICBjb25zdCB1dWlkcyA9IHRoaXMudXVpZHNUaGF0UmVmZXJlbmNlVXVpZChlbGVtZW50LnV1aWQpO1xuICAgICAgICByZXR1cm4gdGhpcy5maW5kQWxsKHV1aWRzKTtcbiAgICB9XG4gICAgY29uZmxpY3RzT2YodXVpZCkge1xuICAgICAgICBjb25zdCB1dWlkcyA9IHRoaXMuY29uZmxpY3RNYXAuZ2V0RGlyZWN0UmVsYXRpb25zaGlwcyh1dWlkKTtcbiAgICAgICAgcmV0dXJuIHRoaXMuZmluZEFsbCh1dWlkcyk7XG4gICAgfVxufVxuIl0sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7OztBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBREE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUNBO0FBREE7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFyQkE7QUFBQTtBQUFBO0FBc0JBO0FBQ0E7QUF2QkE7QUFBQTtBQUFBO0FBd0JBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFEQTtBQUFBO0FBQUE7QUFDQTtBQURBO0FBRUE7QUFBQTtBQUNBO0FBQ0E7QUFKQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQ0E7QUFJQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUExQ0E7QUFBQTtBQUFBO0FBNENBO0FBQ0E7QUFDQTtBQUNBO0FBL0NBO0FBQUE7QUFBQTtBQWdEQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBcERBO0FBQUE7QUFBQTtBQXFEQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBekRBO0FBQUE7QUFBQTtBQTBEQTtBQUNBO0FBQ0E7QUFDQTs7Ozs7QUE3REE7QUFBQTtBQUFBO0FBaUVBO0FBQ0E7QUFEQTtBQUFBO0FBQUE7QUFDQTtBQURBO0FBRUE7QUFBQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQVBBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFDQTtBQU9BO0FBQ0E7QUExRUE7QUFBQTtBQUFBO0FBNEVBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBTkE7QUFBQTtBQUFBO0FBQ0E7QUFEQTtBQU1BO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFEQTtBQUNBO0FBQ0E7QUFFQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUVBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFBQTtBQUFBO0FBQ0E7QUFDQTtBQW5DQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBb0NBO0FBL0dBO0FBQUE7QUFBQTtBQWlIQTtBQURBO0FBQUE7QUFBQTtBQUNBO0FBREE7QUFFQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQVBBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFRQTtBQXhIQTtBQUFBO0FBQUE7QUEwSEE7QUFDQTtBQUFBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUE5SEE7QUFBQTtBQUFBO0FBZ0lBO0FBQ0E7QUFBQTtBQUFBO0FBQ0E7QUFDQTtBQW5JQTtBQUFBO0FBQUE7QUFxSUE7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBeklBO0FBQUE7QUFBQTtBQTJJQTtBQUNBO0FBQ0E7QUE3SUE7QUFBQTtBQUFBO0FBK0lBO0FBQ0E7QUFDQTtBQWpKQTtBQUNBO0FBREE7QUFBQSIsInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./lib/protocol/collection/collection.ts\n')},"./lib/protocol/collection/collection_set.ts":
|
||
/*!***************************************************!*\
|
||
!*** ./lib/protocol/collection/collection_set.ts ***!
|
||
\***************************************************/
|
||
/*! exports provided: ImmutablePayloadCollectionSet */function(module,__webpack_exports__,__webpack_require__){"use strict";eval('__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "ImmutablePayloadCollectionSet", function() { return ImmutablePayloadCollectionSet; });\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } }\n\nfunction _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); } }\n\nfunction _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; }\n\nvar ImmutablePayloadCollectionSet = /*#__PURE__*/function () {\n /**\n * @param collections An array of ImmutablePayloadCollection objects.\n */\n function ImmutablePayloadCollectionSet(collections) {\n _classCallCheck(this, ImmutablePayloadCollectionSet);\n\n this.collections = collections;\n Object.freeze(this);\n }\n\n _createClass(ImmutablePayloadCollectionSet, [{\n key: "collectionForSource",\n value: function collectionForSource(source) {\n return this.collections.find(function (collection) {\n return collection.source === source;\n });\n }\n }]);\n\n return ImmutablePayloadCollectionSet;\n}();//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9saWIvcHJvdG9jb2wvY29sbGVjdGlvbi9jb2xsZWN0aW9uX3NldC50cy5qcyIsInNvdXJjZXMiOlsid2VicGFjazovL1NOTGlicmFyeS8uL2xpYi9wcm90b2NvbC9jb2xsZWN0aW9uL2NvbGxlY3Rpb25fc2V0LnRzPzQ1YmMiXSwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0IGNsYXNzIEltbXV0YWJsZVBheWxvYWRDb2xsZWN0aW9uU2V0IHtcbiAgICAvKipcbiAgICAgKiBAcGFyYW0gY29sbGVjdGlvbnMgQW4gYXJyYXkgb2YgSW1tdXRhYmxlUGF5bG9hZENvbGxlY3Rpb24gb2JqZWN0cy5cbiAgICAgKi9cbiAgICBjb25zdHJ1Y3Rvcihjb2xsZWN0aW9ucykge1xuICAgICAgICB0aGlzLmNvbGxlY3Rpb25zID0gY29sbGVjdGlvbnM7XG4gICAgICAgIE9iamVjdC5mcmVlemUodGhpcyk7XG4gICAgfVxuICAgIGNvbGxlY3Rpb25Gb3JTb3VyY2Uoc291cmNlKSB7XG4gICAgICAgIHJldHVybiB0aGlzLmNvbGxlY3Rpb25zLmZpbmQoY29sbGVjdGlvbiA9PiB7XG4gICAgICAgICAgICByZXR1cm4gY29sbGVjdGlvbi5zb3VyY2UgPT09IHNvdXJjZTtcbiAgICAgICAgfSk7XG4gICAgfVxufVxuIl0sIm1hcHBpbmdzIjoiOzs7Ozs7OztBQUFBO0FBQ0E7OztBQUdBO0FBQUE7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBUkE7QUFBQTtBQUFBO0FBU0E7QUFDQTtBQUNBO0FBQ0E7QUFaQTtBQUNBO0FBREE7QUFBQSIsInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./lib/protocol/collection/collection_set.ts\n')},"./lib/protocol/collection/item_collection.ts":
|
||
/*!****************************************************!*\
|
||
!*** ./lib/protocol/collection/item_collection.ts ***!
|
||
\****************************************************/
|
||
/*! exports provided: CollectionSort, ItemCollection */function(module,__webpack_exports__,__webpack_require__){"use strict";eval('__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "CollectionSort", function() { return CollectionSort; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "ItemCollection", function() { return ItemCollection; });\n/* harmony import */ var _collection__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./collection */ "./lib/protocol/collection/collection.ts");\n/* harmony import */ var _Lib_utils__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! @Lib/utils */ "./lib/utils.ts");\nfunction _typeof(obj) { "@babel/helpers - typeof"; if (typeof Symbol === "function" && typeof Symbol.iterator === "symbol") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }; } return _typeof(obj); }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } }\n\nfunction _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); } }\n\nfunction _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; }\n\nfunction _possibleConstructorReturn(self, call) { if (call && (_typeof(call) === "object" || typeof call === "function")) { return call; } return _assertThisInitialized(self); }\n\nfunction _assertThisInitialized(self) { if (self === void 0) { throw new ReferenceError("this hasn\'t been initialised - super() hasn\'t been called"); } return self; }\n\nfunction _get(target, property, receiver) { if (typeof Reflect !== "undefined" && Reflect.get) { _get = Reflect.get; } else { _get = function _get(target, property, receiver) { var base = _superPropBase(target, property); if (!base) return; var desc = Object.getOwnPropertyDescriptor(base, property); if (desc.get) { return desc.get.call(receiver); } return desc.value; }; } return _get(target, property, receiver || target); }\n\nfunction _superPropBase(object, property) { while (!Object.prototype.hasOwnProperty.call(object, property)) { object = _getPrototypeOf(object); if (object === null) break; } return object; }\n\nfunction _getPrototypeOf(o) { _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function _getPrototypeOf(o) { return o.__proto__ || Object.getPrototypeOf(o); }; return _getPrototypeOf(o); }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== "function" && superClass !== null) { throw new TypeError("Super expression must either be null or a function"); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, writable: true, configurable: true } }); if (superClass) _setPrototypeOf(subClass, superClass); }\n\nfunction _setPrototypeOf(o, p) { _setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) { o.__proto__ = p; return o; }; return _setPrototypeOf(o, p); }\n\n\n\nvar CollectionSort;\n\n(function (CollectionSort) {\n CollectionSort["CreatedAt"] = "created_at";\n CollectionSort["UpdatedAt"] = "userModifiedDate";\n CollectionSort["Title"] = "title";\n})(CollectionSort || (CollectionSort = {}));\n/** The item collection class builds on mutable collection by providing an option to keep\n * items sorted and filtered. */\n\n\nvar ItemCollection = /*#__PURE__*/function (_MutableCollection) {\n _inherits(ItemCollection, _MutableCollection);\n\n function ItemCollection() {\n var _this;\n\n _classCallCheck(this, ItemCollection);\n\n _this = _possibleConstructorReturn(this, _getPrototypeOf(ItemCollection).apply(this, arguments));\n _this.displaySortBy = {};\n _this.displayFilter = {};\n /** A display ready map of uuids-to-position in sorted array. i.e filteredMap[contentType]\n * returns {uuid_123: 1, uuid_456: 2}, where 1 and 2 are the positions of the element\n * in the sorted array. We keep track of positions so that when we want to re-sort or remove\n * and element, we don\'t have to search the entire sorted array to do so. */\n\n _this.filteredMap = {};\n /** A sorted representation of the filteredMap, where sortedMap[contentType] returns\n * an array of sorted elements, based on the current displaySortBy */\n\n _this.sortedMap = {};\n return _this;\n }\n\n _createClass(ItemCollection, [{\n key: "set",\n value: function set(elements) {\n elements = Array.isArray(elements) ? elements : [elements];\n\n _get(_getPrototypeOf(ItemCollection.prototype), "set", this).call(this, elements);\n\n this.filterSortElements(elements);\n }\n }, {\n key: "discard",\n value: function discard(elements) {\n elements = Array.isArray(elements) ? elements : [elements];\n\n _get(_getPrototypeOf(ItemCollection.prototype), "discard", this).call(this, elements);\n\n this.filterSortElements(elements);\n }\n /**\n * Sets an optional sortBy and filter for a given content type. These options will be\n * applied against a separate "display-only" record and not the master record. Passing\n * null options removes any existing options. sortBy is always required, but a filter is\n * not always required.\n * Note that sorting and filtering only applies to collections of type SNItem, and not\n * payloads. This is because we access item properties such as `pinned` and `title`.\n * @param filter A function that receives an element and returns a boolean indicating\n * whether the element passes the filter and should be in displayable results.\n */\n\n }, {\n key: "setDisplayOptions",\n value: function setDisplayOptions(contentType, sortBy, direction, filter) {\n var existingSortBy = this.displaySortBy[contentType];\n var existingFilter = this.displayFilter[contentType];\n /** If the sort value is unchanged, and we are not setting a new filter,\n * we return, as to not rebuild and resort all elements */\n\n if (existingSortBy && existingSortBy.key === sortBy && existingSortBy.dir === direction && !existingFilter && !filter) {\n return;\n }\n\n this.displaySortBy[contentType] = sortBy ? {\n key: sortBy,\n dir: direction\n } : undefined;\n this.displayFilter[contentType] = filter;\n /** Reset existing maps */\n\n this.filteredMap[contentType] = {};\n this.sortedMap[contentType] = [];\n /** Re-process all elements */\n\n var elements = this.all(contentType);\n\n if (elements.length > 0) {\n this.filterSortElements(elements);\n }\n }\n /** Returns the filtered and sorted list of elements for this content type,\n * according to the options set via `setDisplayOptions` */\n\n }, {\n key: "displayElements",\n value: function displayElements(contentType) {\n var elements = this.sortedMap[contentType];\n\n if (!elements) {\n throw Error("Attempting to access display elements for \\n non-configured content type ".concat(contentType));\n }\n\n return elements.slice();\n }\n }, {\n key: "filterSortElements",\n value: function filterSortElements(elements) {\n if (Object.keys(this.displaySortBy).length === 0) {\n return;\n }\n /** If a content type is added to this set, we are indicating the entire sorted\n * array will need to be re-sorted. The reason for sorting the entire array and not\n * just inserting an element using binary search is that we need to keep track of the\n * sorted index of an item so that we can look up and change its value without having\n * to search the array for it. */\n\n\n var typesNeedingResort = new Set();\n var _iteratorNormalCompletion = true;\n var _didIteratorError = false;\n var _iteratorError = undefined;\n\n try {\n for (var _iterator = elements[Symbol.iterator](), _step; !(_iteratorNormalCompletion = (_step = _iterator.next()).done); _iteratorNormalCompletion = true) {\n var element = _step.value;\n var contentType = element.content_type;\n var sortBy = this.displaySortBy[contentType];\n /** Sort by is required, but filter is not */\n\n if (!sortBy) {\n continue;\n }\n\n var filter = this.displayFilter[contentType];\n /** Filtered content type map */\n\n var filteredCTMap = this.filteredMap[contentType];\n var sortedElements = this.sortedMap[contentType];\n /** If the element is deleted, or if it no longer exists in the primary map (because\n * it was discarded without neccessarily being marked as deleted), it does not pass\n * the filter. If no filter the element passes by default. */\n\n var passes = element.deleted || !this.map[element.uuid] ? false : filter ? filter(element) : true;\n var currentIndex = filteredCTMap[element.uuid];\n\n if (passes) {\n if (!Object(_Lib_utils__WEBPACK_IMPORTED_MODULE_1__["isNullOrUndefined"])(currentIndex)) {\n /** Check to see if the element has changed its sort value. If so, we need to re-sort */\n var currentElement = sortedElements[currentIndex];\n var previousValue = currentElement[sortBy.key];\n var newValue = element[sortBy.key];\n /** Replace the current element with the new one. */\n\n sortedElements[currentIndex] = element;\n /** If the pinned status of the element has changed, it needs to be resorted */\n\n var pinChanged = currentElement.pinned !== element.pinned;\n\n if (!Object(_Lib_utils__WEBPACK_IMPORTED_MODULE_1__["compareValues"])(previousValue, newValue) || pinChanged) {\n /** Needs resort because its re-sort value has changed,\n * and thus its position might change */\n typesNeedingResort.add(contentType);\n }\n } else {\n /** Has not yet been inserted */\n sortedElements.push(element);\n /** Needs re-sort because we\'re just pushing the element to the end here */\n\n typesNeedingResort.add(contentType);\n }\n } else {\n /** Doesn\'t pass filter, remove from sorted and filtered */\n if (!Object(_Lib_utils__WEBPACK_IMPORTED_MODULE_1__["isNullOrUndefined"])(currentIndex)) {\n delete filteredCTMap[element.uuid];\n /** We don\'t yet remove the element directly from the array, since mutating\n * the array inside a loop could render all other upcoming indexes invalid */\n\n sortedElements[currentIndex] = undefined;\n /** Since an element is being removed from the array, we need to recompute\n * the new positions for elements that are staying */\n\n typesNeedingResort.add(contentType);\n }\n }\n }\n } catch (err) {\n _didIteratorError = true;\n _iteratorError = err;\n } finally {\n try {\n if (!_iteratorNormalCompletion && _iterator.return != null) {\n _iterator.return();\n }\n } finally {\n if (_didIteratorError) {\n throw _iteratorError;\n }\n }\n }\n\n var _iteratorNormalCompletion2 = true;\n var _didIteratorError2 = false;\n var _iteratorError2 = undefined;\n\n try {\n for (var _iterator2 = typesNeedingResort.values()[Symbol.iterator](), _step2; !(_iteratorNormalCompletion2 = (_step2 = _iterator2.next()).done); _iteratorNormalCompletion2 = true) {\n var _contentType = _step2.value;\n this.resortContentType(_contentType);\n }\n } catch (err) {\n _didIteratorError2 = true;\n _iteratorError2 = err;\n } finally {\n try {\n if (!_iteratorNormalCompletion2 && _iterator2.return != null) {\n _iterator2.return();\n }\n } finally {\n if (_didIteratorError2) {\n throw _iteratorError2;\n }\n }\n }\n }\n }, {\n key: "resortContentType",\n value: function resortContentType(contentType) {\n var sortedElements = this.sortedMap[contentType];\n var sortBy = this.displaySortBy[contentType];\n var filteredCTMap = this.filteredMap[contentType];\n /** Resort the elements array, and update the saved positions */\n\n /** @O(n * log(n)) */\n\n var sortFn = function sortFn(a, b) {\n var skipPinnedCheck = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : false;\n\n /** If the elements are undefined, move to beginning */\n if (!a) {\n return -1;\n }\n\n if (!b) {\n return 1;\n }\n\n if (!skipPinnedCheck) {\n if (a.pinned && b.pinned) {\n return sortFn(a, b, true);\n }\n\n if (a.pinned) {\n return -1;\n }\n\n if (b.pinned) {\n return 1;\n }\n }\n\n var aValue = a[sortBy.key] || \'\';\n var bValue = b[sortBy.key] || \'\';\n var vector = 1;\n\n if (sortBy.dir === \'asc\') {\n vector *= -1;\n }\n\n if (sortBy.key === CollectionSort.Title) {\n aValue = aValue.toLowerCase();\n bValue = bValue.toLowerCase();\n\n if (aValue.length === 0 && bValue.length === 0) {\n return 0;\n } else if (aValue.length === 0 && bValue.length !== 0) {\n return 1 * vector;\n } else if (aValue.length !== 0 && bValue.length === 0) {\n return -1 * vector;\n } else {\n vector *= -1;\n }\n }\n\n if (aValue > bValue) {\n return -1 * vector;\n } else if (aValue < bValue) {\n return 1 * vector;\n }\n\n return 0;\n };\n\n var resorted = sortedElements.sort(function (a, b) {\n return sortFn(a, b);\n });\n /** Now that resorted contains the sorted elements (but also can contain undefined element)\n * we create another array that filters out any of the undefinedes. We also keep track of the\n * current index while we loop and set that in the filteredCTMap. */\n\n var cleaned = [];\n var currentIndex = 0;\n /** @O(n) */\n\n var _iteratorNormalCompletion3 = true;\n var _didIteratorError3 = false;\n var _iteratorError3 = undefined;\n\n try {\n for (var _iterator3 = resorted[Symbol.iterator](), _step3; !(_iteratorNormalCompletion3 = (_step3 = _iterator3.next()).done); _iteratorNormalCompletion3 = true) {\n var element = _step3.value;\n\n if (!element) {\n continue;\n }\n\n cleaned.push(element);\n filteredCTMap[element.uuid] = currentIndex;\n currentIndex++;\n }\n } catch (err) {\n _didIteratorError3 = true;\n _iteratorError3 = err;\n } finally {\n try {\n if (!_iteratorNormalCompletion3 && _iterator3.return != null) {\n _iterator3.return();\n }\n } finally {\n if (_didIteratorError3) {\n throw _iteratorError3;\n }\n }\n }\n\n this.sortedMap[contentType] = cleaned;\n }\n }]);\n\n return ItemCollection;\n}(_collection__WEBPACK_IMPORTED_MODULE_0__["MutableCollection"]);//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9saWIvcHJvdG9jb2wvY29sbGVjdGlvbi9pdGVtX2NvbGxlY3Rpb24udHMuanMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly9TTkxpYnJhcnkvLi9saWIvcHJvdG9jb2wvY29sbGVjdGlvbi9pdGVtX2NvbGxlY3Rpb24udHM/MzUzYSJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBNdXRhYmxlQ29sbGVjdGlvbiB9IGZyb20gJy4vY29sbGVjdGlvbic7XG5pbXBvcnQgeyBpc051bGxPclVuZGVmaW5lZCwgY29tcGFyZVZhbHVlcyB9IGZyb20gJ0BMaWIvdXRpbHMnO1xuZXhwb3J0IHZhciBDb2xsZWN0aW9uU29ydDtcbihmdW5jdGlvbiAoQ29sbGVjdGlvblNvcnQpIHtcbiAgICBDb2xsZWN0aW9uU29ydFtcIkNyZWF0ZWRBdFwiXSA9IFwiY3JlYXRlZF9hdFwiO1xuICAgIENvbGxlY3Rpb25Tb3J0W1wiVXBkYXRlZEF0XCJdID0gXCJ1c2VyTW9kaWZpZWREYXRlXCI7XG4gICAgQ29sbGVjdGlvblNvcnRbXCJUaXRsZVwiXSA9IFwidGl0bGVcIjtcbn0pKENvbGxlY3Rpb25Tb3J0IHx8IChDb2xsZWN0aW9uU29ydCA9IHt9KSk7XG4vKiogVGhlIGl0ZW0gY29sbGVjdGlvbiBjbGFzcyBidWlsZHMgb24gbXV0YWJsZSBjb2xsZWN0aW9uIGJ5IHByb3ZpZGluZyBhbiBvcHRpb24gdG8ga2VlcFxuICogaXRlbXMgc29ydGVkIGFuZCBmaWx0ZXJlZC4gKi9cbmV4cG9ydCBjbGFzcyBJdGVtQ29sbGVjdGlvbiBleHRlbmRzIE11dGFibGVDb2xsZWN0aW9uIHtcbiAgICBjb25zdHJ1Y3RvcigpIHtcbiAgICAgICAgc3VwZXIoLi4uYXJndW1lbnRzKTtcbiAgICAgICAgdGhpcy5kaXNwbGF5U29ydEJ5ID0ge307XG4gICAgICAgIHRoaXMuZGlzcGxheUZpbHRlciA9IHt9O1xuICAgICAgICAvKiogQSBkaXNwbGF5IHJlYWR5IG1hcCBvZiB1dWlkcy10by1wb3NpdGlvbiBpbiBzb3J0ZWQgYXJyYXkuIGkuZSBmaWx0ZXJlZE1hcFtjb250ZW50VHlwZV1cbiAgICAgICAgICogcmV0dXJucyB7dXVpZF8xMjM6IDEsIHV1aWRfNDU2OiAyfSwgd2hlcmUgMSBhbmQgMiBhcmUgdGhlIHBvc2l0aW9ucyBvZiB0aGUgZWxlbWVudFxuICAgICAgICAgKiBpbiB0aGUgc29ydGVkIGFycmF5LiBXZSBrZWVwIHRyYWNrIG9mIHBvc2l0aW9ucyBzbyB0aGF0IHdoZW4gd2Ugd2FudCB0byByZS1zb3J0IG9yIHJlbW92ZVxuICAgICAgICAgKiBhbmQgZWxlbWVudCwgd2UgZG9uJ3QgaGF2ZSB0byBzZWFyY2ggdGhlIGVudGlyZSBzb3J0ZWQgYXJyYXkgdG8gZG8gc28uICovXG4gICAgICAgIHRoaXMuZmlsdGVyZWRNYXAgPSB7fTtcbiAgICAgICAgLyoqIEEgc29ydGVkIHJlcHJlc2VudGF0aW9uIG9mIHRoZSBmaWx0ZXJlZE1hcCwgd2hlcmUgc29ydGVkTWFwW2NvbnRlbnRUeXBlXSByZXR1cm5zXG4gICAgICAgICAqIGFuIGFycmF5IG9mIHNvcnRlZCBlbGVtZW50cywgYmFzZWQgb24gdGhlIGN1cnJlbnQgZGlzcGxheVNvcnRCeSAqL1xuICAgICAgICB0aGlzLnNvcnRlZE1hcCA9IHt9O1xuICAgIH1cbiAgICBzZXQoZWxlbWVudHMpIHtcbiAgICAgICAgZWxlbWVudHMgPSBBcnJheS5pc0FycmF5KGVsZW1lbnRzKSA/IGVsZW1lbnRzIDogW2VsZW1lbnRzXTtcbiAgICAgICAgc3VwZXIuc2V0KGVsZW1lbnRzKTtcbiAgICAgICAgdGhpcy5maWx0ZXJTb3J0RWxlbWVudHMoZWxlbWVudHMpO1xuICAgIH1cbiAgICBkaXNjYXJkKGVsZW1lbnRzKSB7XG4gICAgICAgIGVsZW1lbnRzID0gQXJyYXkuaXNBcnJheShlbGVtZW50cykgPyBlbGVtZW50cyA6IFtlbGVtZW50c107XG4gICAgICAgIHN1cGVyLmRpc2NhcmQoZWxlbWVudHMpO1xuICAgICAgICB0aGlzLmZpbHRlclNvcnRFbGVtZW50cyhlbGVtZW50cyk7XG4gICAgfVxuICAgIC8qKlxuICAgICAqIFNldHMgYW4gb3B0aW9uYWwgc29ydEJ5IGFuZCBmaWx0ZXIgZm9yIGEgZ2l2ZW4gY29udGVudCB0eXBlLiBUaGVzZSBvcHRpb25zIHdpbGwgYmVcbiAgICAgKiBhcHBsaWVkIGFnYWluc3QgYSBzZXBhcmF0ZSBcImRpc3BsYXktb25seVwiIHJlY29yZCBhbmQgbm90IHRoZSBtYXN0ZXIgcmVjb3JkLiBQYXNzaW5nXG4gICAgICogbnVsbCBvcHRpb25zIHJlbW92ZXMgYW55IGV4aXN0aW5nIG9wdGlvbnMuIHNvcnRCeSBpcyBhbHdheXMgcmVxdWlyZWQsIGJ1dCBhIGZpbHRlciBpc1xuICAgICAqIG5vdCBhbHdheXMgcmVxdWlyZWQuXG4gICAgICogTm90ZSB0aGF0IHNvcnRpbmcgYW5kIGZpbHRlcmluZyBvbmx5IGFwcGxpZXMgdG8gY29sbGVjdGlvbnMgb2YgdHlwZSBTTkl0ZW0sIGFuZCBub3RcbiAgICAgKiBwYXlsb2Fkcy4gVGhpcyBpcyBiZWNhdXNlIHdlIGFjY2VzcyBpdGVtIHByb3BlcnRpZXMgc3VjaCBhcyBgcGlubmVkYCBhbmQgYHRpdGxlYC5cbiAgICAgKiBAcGFyYW0gZmlsdGVyIEEgZnVuY3Rpb24gdGhhdCByZWNlaXZlcyBhbiBlbGVtZW50IGFuZCByZXR1cm5zIGEgYm9vbGVhbiBpbmRpY2F0aW5nXG4gICAgICogd2hldGhlciB0aGUgZWxlbWVudCBwYXNzZXMgdGhlIGZpbHRlciBhbmQgc2hvdWxkIGJlIGluIGRpc3BsYXlhYmxlIHJlc3VsdHMuXG4gICAgICovXG4gICAgc2V0RGlzcGxheU9wdGlvbnMoY29udGVudFR5cGUsIHNvcnRCeSwgZGlyZWN0aW9uLCBmaWx0ZXIpIHtcbiAgICAgICAgY29uc3QgZXhpc3RpbmdTb3J0QnkgPSB0aGlzLmRpc3BsYXlTb3J0QnlbY29udGVudFR5cGVdO1xuICAgICAgICBjb25zdCBleGlzdGluZ0ZpbHRlciA9IHRoaXMuZGlzcGxheUZpbHRlcltjb250ZW50VHlwZV07XG4gICAgICAgIC8qKiBJZiB0aGUgc29ydCB2YWx1ZSBpcyB1bmNoYW5nZWQsIGFuZCB3ZSBhcmUgbm90IHNldHRpbmcgYSBuZXcgZmlsdGVyLFxuICAgICAgICAgKiB3ZSByZXR1cm4sIGFzIHRvIG5vdCByZWJ1aWxkIGFuZCByZXNvcnQgYWxsIGVsZW1lbnRzICovXG4gICAgICAgIGlmIChleGlzdGluZ1NvcnRCeSAmJlxuICAgICAgICAgICAgZXhpc3RpbmdTb3J0Qnkua2V5ID09PSBzb3J0QnkgJiYgZXhpc3RpbmdTb3J0QnkuZGlyID09PSBkaXJlY3Rpb24gJiZcbiAgICAgICAgICAgICFleGlzdGluZ0ZpbHRlciAmJiAhZmlsdGVyKSB7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cbiAgICAgICAgdGhpcy5kaXNwbGF5U29ydEJ5W2NvbnRlbnRUeXBlXSA9IHNvcnRCeVxuICAgICAgICAgICAgPyB7IGtleTogc29ydEJ5LCBkaXI6IGRpcmVjdGlvbiB9XG4gICAgICAgICAgICA6IHVuZGVmaW5lZDtcbiAgICAgICAgdGhpcy5kaXNwbGF5RmlsdGVyW2NvbnRlbnRUeXBlXSA9IGZpbHRlcjtcbiAgICAgICAgLyoqIFJlc2V0IGV4aXN0aW5nIG1hcHMgKi9cbiAgICAgICAgdGhpcy5maWx0ZXJlZE1hcFtjb250ZW50VHlwZV0gPSB7fTtcbiAgICAgICAgdGhpcy5zb3J0ZWRNYXBbY29udGVudFR5cGVdID0gW107XG4gICAgICAgIC8qKiBSZS1wcm9jZXNzIGFsbCBlbGVtZW50cyAqL1xuICAgICAgICBjb25zdCBlbGVtZW50cyA9IHRoaXMuYWxsKGNvbnRlbnRUeXBlKTtcbiAgICAgICAgaWYgKGVsZW1lbnRzLmxlbmd0aCA+IDApIHtcbiAgICAgICAgICAgIHRoaXMuZmlsdGVyU29ydEVsZW1lbnRzKGVsZW1lbnRzKTtcbiAgICAgICAgfVxuICAgIH1cbiAgICAvKiogUmV0dXJucyB0aGUgZmlsdGVyZWQgYW5kIHNvcnRlZCBsaXN0IG9mIGVsZW1lbnRzIGZvciB0aGlzIGNvbnRlbnQgdHlwZSxcbiAgICAgKiBhY2NvcmRpbmcgdG8gdGhlIG9wdGlvbnMgc2V0IHZpYSBgc2V0RGlzcGxheU9wdGlvbnNgICovXG4gICAgZGlzcGxheUVsZW1lbnRzKGNvbnRlbnRUeXBlKSB7XG4gICAgICAgIGNvbnN0IGVsZW1lbnRzID0gdGhpcy5zb3J0ZWRNYXBbY29udGVudFR5cGVdO1xuICAgICAgICBpZiAoIWVsZW1lbnRzKSB7XG4gICAgICAgICAgICB0aHJvdyBFcnJvcihgQXR0ZW1wdGluZyB0byBhY2Nlc3MgZGlzcGxheSBlbGVtZW50cyBmb3IgXG4gICAgICAgIG5vbi1jb25maWd1cmVkIGNvbnRlbnQgdHlwZSAke2NvbnRlbnRUeXBlfWApO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiBlbGVtZW50cy5zbGljZSgpO1xuICAgIH1cbiAgICBmaWx0ZXJTb3J0RWxlbWVudHMoZWxlbWVudHMpIHtcbiAgICAgICAgaWYgKE9iamVjdC5rZXlzKHRoaXMuZGlzcGxheVNvcnRCeSkubGVuZ3RoID09PSAwKSB7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cbiAgICAgICAgLyoqIElmIGEgY29udGVudCB0eXBlIGlzIGFkZGVkIHRvIHRoaXMgc2V0LCB3ZSBhcmUgaW5kaWNhdGluZyB0aGUgZW50aXJlIHNvcnRlZFxuICAgICAgICAgKiBhcnJheSB3aWxsIG5lZWQgdG8gYmUgcmUtc29ydGVkLiBUaGUgcmVhc29uIGZvciBzb3J0aW5nIHRoZSBlbnRpcmUgYXJyYXkgYW5kIG5vdFxuICAgICAgICAgKiBqdXN0IGluc2VydGluZyBhbiBlbGVtZW50IHVzaW5nIGJpbmFyeSBzZWFyY2ggaXMgdGhhdCB3ZSBuZWVkIHRvIGtlZXAgdHJhY2sgb2YgdGhlXG4gICAgICAgICAqIHNvcnRlZCBpbmRleCBvZiBhbiBpdGVtIHNvIHRoYXQgd2UgY2FuIGxvb2sgdXAgYW5kIGNoYW5nZSBpdHMgdmFsdWUgd2l0aG91dCBoYXZpbmdcbiAgICAgICAgICogdG8gc2VhcmNoIHRoZSBhcnJheSBmb3IgaXQuICovXG4gICAgICAgIGNvbnN0IHR5cGVzTmVlZGluZ1Jlc29ydCA9IG5ldyBTZXQoKTtcbiAgICAgICAgZm9yIChjb25zdCBlbGVtZW50IG9mIGVsZW1lbnRzKSB7XG4gICAgICAgICAgICBjb25zdCBjb250ZW50VHlwZSA9IGVsZW1lbnQuY29udGVudF90eXBlO1xuICAgICAgICAgICAgY29uc3Qgc29ydEJ5ID0gdGhpcy5kaXNwbGF5U29ydEJ5W2NvbnRlbnRUeXBlXTtcbiAgICAgICAgICAgIC8qKiBTb3J0IGJ5IGlzIHJlcXVpcmVkLCBidXQgZmlsdGVyIGlzIG5vdCAqL1xuICAgICAgICAgICAgaWYgKCFzb3J0QnkpIHtcbiAgICAgICAgICAgICAgICBjb250aW51ZTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGNvbnN0IGZpbHRlciA9IHRoaXMuZGlzcGxheUZpbHRlcltjb250ZW50VHlwZV07XG4gICAgICAgICAgICAvKiogRmlsdGVyZWQgY29udGVudCB0eXBlIG1hcCAqL1xuICAgICAgICAgICAgY29uc3QgZmlsdGVyZWRDVE1hcCA9IHRoaXMuZmlsdGVyZWRNYXBbY29udGVudFR5cGVdO1xuICAgICAgICAgICAgY29uc3Qgc29ydGVkRWxlbWVudHMgPSB0aGlzLnNvcnRlZE1hcFtjb250ZW50VHlwZV07XG4gICAgICAgICAgICAvKiogSWYgdGhlIGVsZW1lbnQgaXMgZGVsZXRlZCwgb3IgaWYgaXQgbm8gbG9uZ2VyIGV4aXN0cyBpbiB0aGUgcHJpbWFyeSBtYXAgKGJlY2F1c2VcbiAgICAgICAgICAgICAqIGl0IHdhcyBkaXNjYXJkZWQgd2l0aG91dCBuZWNjZXNzYXJpbHkgYmVpbmcgbWFya2VkIGFzIGRlbGV0ZWQpLCBpdCBkb2VzIG5vdCBwYXNzXG4gICAgICAgICAgICAgKiB0aGUgZmlsdGVyLiBJZiBubyBmaWx0ZXIgdGhlIGVsZW1lbnQgcGFzc2VzIGJ5IGRlZmF1bHQuICovXG4gICAgICAgICAgICBjb25zdCBwYXNzZXMgPSAoZWxlbWVudC5kZWxldGVkIHx8ICF0aGlzLm1hcFtlbGVtZW50LnV1aWRdKSA/IGZhbHNlIDogKGZpbHRlciA/IGZpbHRlcihlbGVtZW50KSA6IHRydWUpO1xuICAgICAgICAgICAgY29uc3QgY3VycmVudEluZGV4ID0gZmlsdGVyZWRDVE1hcFtlbGVtZW50LnV1aWRdO1xuICAgICAgICAgICAgaWYgKHBhc3Nlcykge1xuICAgICAgICAgICAgICAgIGlmICghaXNOdWxsT3JVbmRlZmluZWQoY3VycmVudEluZGV4KSkge1xuICAgICAgICAgICAgICAgICAgICAvKiogQ2hlY2sgdG8gc2VlIGlmIHRoZSBlbGVtZW50IGhhcyBjaGFuZ2VkIGl0cyBzb3J0IHZhbHVlLiBJZiBzbywgd2UgbmVlZCB0byByZS1zb3J0ICovXG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IGN1cnJlbnRFbGVtZW50ID0gc29ydGVkRWxlbWVudHNbY3VycmVudEluZGV4XTtcbiAgICAgICAgICAgICAgICAgICAgY29uc3QgcHJldmlvdXNWYWx1ZSA9IGN1cnJlbnRFbGVtZW50W3NvcnRCeS5rZXldO1xuICAgICAgICAgICAgICAgICAgICBjb25zdCBuZXdWYWx1ZSA9IGVsZW1lbnRbc29ydEJ5LmtleV07XG4gICAgICAgICAgICAgICAgICAgIC8qKiBSZXBsYWNlIHRoZSBjdXJyZW50IGVsZW1lbnQgd2l0aCB0aGUgbmV3IG9uZS4gKi9cbiAgICAgICAgICAgICAgICAgICAgc29ydGVkRWxlbWVudHNbY3VycmVudEluZGV4XSA9IGVsZW1lbnQ7XG4gICAgICAgICAgICAgICAgICAgIC8qKiBJZiB0aGUgcGlubmVkIHN0YXR1cyBvZiB0aGUgZWxlbWVudCBoYXMgY2hhbmdlZCwgaXQgbmVlZHMgdG8gYmUgcmVzb3J0ZWQgKi9cbiAgICAgICAgICAgICAgICAgICAgY29uc3QgcGluQ2hhbmdlZCA9IGN1cnJlbnRFbGVtZW50LnBpbm5lZCAhPT0gZWxlbWVudC5waW5uZWQ7XG4gICAgICAgICAgICAgICAgICAgIGlmICghY29tcGFyZVZhbHVlcyhwcmV2aW91c1ZhbHVlLCBuZXdWYWx1ZSkgfHwgcGluQ2hhbmdlZCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgLyoqIE5lZWRzIHJlc29ydCBiZWNhdXNlIGl0cyByZS1zb3J0IHZhbHVlIGhhcyBjaGFuZ2VkLFxuICAgICAgICAgICAgICAgICAgICAgICAgICogYW5kIHRodXMgaXRzIHBvc2l0aW9uIG1pZ2h0IGNoYW5nZSAqL1xuICAgICAgICAgICAgICAgICAgICAgICAgdHlwZXNOZWVkaW5nUmVzb3J0LmFkZChjb250ZW50VHlwZSk7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgIC8qKiBIYXMgbm90IHlldCBiZWVuIGluc2VydGVkICovXG4gICAgICAgICAgICAgICAgICAgIHNvcnRlZEVsZW1lbnRzLnB1c2goZWxlbWVudCk7XG4gICAgICAgICAgICAgICAgICAgIC8qKiBOZWVkcyByZS1zb3J0IGJlY2F1c2Ugd2UncmUganVzdCBwdXNoaW5nIHRoZSBlbGVtZW50IHRvIHRoZSBlbmQgaGVyZSAqL1xuICAgICAgICAgICAgICAgICAgICB0eXBlc05lZWRpbmdSZXNvcnQuYWRkKGNvbnRlbnRUeXBlKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgICAgICAvKiogRG9lc24ndCBwYXNzIGZpbHRlciwgcmVtb3ZlIGZyb20gc29ydGVkIGFuZCBmaWx0ZXJlZCAqL1xuICAgICAgICAgICAgICAgIGlmICghaXNOdWxsT3JVbmRlZmluZWQoY3VycmVudEluZGV4KSkge1xuICAgICAgICAgICAgICAgICAgICBkZWxldGUgZmlsdGVyZWRDVE1hcFtlbGVtZW50LnV1aWRdO1xuICAgICAgICAgICAgICAgICAgICAvKiogV2UgZG9uJ3QgeWV0IHJlbW92ZSB0aGUgZWxlbWVudCBkaXJlY3RseSBmcm9tIHRoZSBhcnJheSwgc2luY2UgbXV0YXRpbmdcbiAgICAgICAgICAgICAgICAgICAgICogdGhlIGFycmF5IGluc2lkZSBhIGxvb3AgY291bGQgcmVuZGVyIGFsbCBvdGhlciB1cGNvbWluZyBpbmRleGVzIGludmFsaWQgKi9cbiAgICAgICAgICAgICAgICAgICAgc29ydGVkRWxlbWVudHNbY3VycmVudEluZGV4XSA9IHVuZGVmaW5lZDtcbiAgICAgICAgICAgICAgICAgICAgLyoqIFNpbmNlIGFuIGVsZW1lbnQgaXMgYmVpbmcgcmVtb3ZlZCBmcm9tIHRoZSBhcnJheSwgd2UgbmVlZCB0byByZWNvbXB1dGVcbiAgICAgICAgICAgICAgICAgICAgICogdGhlIG5ldyBwb3NpdGlvbnMgZm9yIGVsZW1lbnRzIHRoYXQgYXJlIHN0YXlpbmcgKi9cbiAgICAgICAgICAgICAgICAgICAgdHlwZXNOZWVkaW5nUmVzb3J0LmFkZChjb250ZW50VHlwZSk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIGZvciAoY29uc3QgY29udGVudFR5cGUgb2YgdHlwZXNOZWVkaW5nUmVzb3J0LnZhbHVlcygpKSB7XG4gICAgICAgICAgICB0aGlzLnJlc29ydENvbnRlbnRUeXBlKGNvbnRlbnRUeXBlKTtcbiAgICAgICAgfVxuICAgIH1cbiAgICByZXNvcnRDb250ZW50VHlwZShjb250ZW50VHlwZSkge1xuICAgICAgICBjb25zdCBzb3J0ZWRFbGVtZW50cyA9IHRoaXMuc29ydGVkTWFwW2NvbnRlbnRUeXBlXTtcbiAgICAgICAgY29uc3Qgc29ydEJ5ID0gdGhpcy5kaXNwbGF5U29ydEJ5W2NvbnRlbnRUeXBlXTtcbiAgICAgICAgY29uc3QgZmlsdGVyZWRDVE1hcCA9IHRoaXMuZmlsdGVyZWRNYXBbY29udGVudFR5cGVdO1xuICAgICAgICAvKiogUmVzb3J0IHRoZSBlbGVtZW50cyBhcnJheSwgYW5kIHVwZGF0ZSB0aGUgc2F2ZWQgcG9zaXRpb25zICovXG4gICAgICAgIC8qKiBATyhuICogbG9nKG4pKSAqL1xuICAgICAgICBjb25zdCBzb3J0Rm4gPSAoYSwgYiwgc2tpcFBpbm5lZENoZWNrID0gZmFsc2UpID0+IHtcbiAgICAgICAgICAgIC8qKiBJZiB0aGUgZWxlbWVudHMgYXJlIHVuZGVmaW5lZCwgbW92ZSB0byBiZWdpbm5pbmcgKi9cbiAgICAgICAgICAgIGlmICghYSkge1xuICAgICAgICAgICAgICAgIHJldHVybiAtMTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGlmICghYikge1xuICAgICAgICAgICAgICAgIHJldHVybiAxO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgaWYgKCFza2lwUGlubmVkQ2hlY2spIHtcbiAgICAgICAgICAgICAgICBpZiAoYS5waW5uZWQgJiYgYi5waW5uZWQpIHtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHNvcnRGbihhLCBiLCB0cnVlKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgaWYgKGEucGlubmVkKSB7XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiAtMTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgaWYgKGIucGlubmVkKSB7XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiAxO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGxldCBhVmFsdWUgPSBhW3NvcnRCeS5rZXldIHx8ICcnO1xuICAgICAgICAgICAgbGV0IGJWYWx1ZSA9IGJbc29ydEJ5LmtleV0gfHwgJyc7XG4gICAgICAgICAgICBsZXQgdmVjdG9yID0gMTtcbiAgICAgICAgICAgIGlmIChzb3J0QnkuZGlyID09PSAnYXNjJykge1xuICAgICAgICAgICAgICAgIHZlY3RvciAqPSAtMTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGlmIChzb3J0Qnkua2V5ID09PSBDb2xsZWN0aW9uU29ydC5UaXRsZSkge1xuICAgICAgICAgICAgICAgIGFWYWx1ZSA9IGFWYWx1ZS50b0xvd2VyQ2FzZSgpO1xuICAgICAgICAgICAgICAgIGJWYWx1ZSA9IGJWYWx1ZS50b0xvd2VyQ2FzZSgpO1xuICAgICAgICAgICAgICAgIGlmIChhVmFsdWUubGVuZ3RoID09PSAwICYmIGJWYWx1ZS5sZW5ndGggPT09IDApIHtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIDA7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGVsc2UgaWYgKGFWYWx1ZS5sZW5ndGggPT09IDAgJiYgYlZhbHVlLmxlbmd0aCAhPT0gMCkge1xuICAgICAgICAgICAgICAgICAgICByZXR1cm4gMSAqIHZlY3RvcjtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgZWxzZSBpZiAoYVZhbHVlLmxlbmd0aCAhPT0gMCAmJiBiVmFsdWUubGVuZ3RoID09PSAwKSB7XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiAtMSAqIHZlY3RvcjtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgIHZlY3RvciAqPSAtMTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBpZiAoYVZhbHVlID4gYlZhbHVlKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIC0xICogdmVjdG9yO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgZWxzZSBpZiAoYVZhbHVlIDwgYlZhbHVlKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIDEgKiB2ZWN0b3I7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICByZXR1cm4gMDtcbiAgICAgICAgfTtcbiAgICAgICAgY29uc3QgcmVzb3J0ZWQgPSBzb3J0ZWRFbGVtZW50cy5zb3J0KChhLCBiKSA9PiB7XG4gICAgICAgICAgICByZXR1cm4gc29ydEZuKGEsIGIpO1xuICAgICAgICB9KTtcbiAgICAgICAgLyoqIE5vdyB0aGF0IHJlc29ydGVkIGNvbnRhaW5zIHRoZSBzb3J0ZWQgZWxlbWVudHMgKGJ1dCBhbHNvIGNhbiBjb250YWluIHVuZGVmaW5lZCBlbGVtZW50KVxuICAgICAgICAgKiB3ZSBjcmVhdGUgYW5vdGhlciBhcnJheSB0aGF0IGZpbHRlcnMgb3V0IGFueSBvZiB0aGUgdW5kZWZpbmVkZXMuIFdlIGFsc28ga2VlcCB0cmFjayBvZiB0aGVcbiAgICAgICAgICogY3VycmVudCBpbmRleCB3aGlsZSB3ZSBsb29wIGFuZCBzZXQgdGhhdCBpbiB0aGUgZmlsdGVyZWRDVE1hcC4gKi9cbiAgICAgICAgY29uc3QgY2xlYW5lZCA9IFtdO1xuICAgICAgICBsZXQgY3VycmVudEluZGV4ID0gMDtcbiAgICAgICAgLyoqIEBPKG4pICovXG4gICAgICAgIGZvciAoY29uc3QgZWxlbWVudCBvZiByZXNvcnRlZCkge1xuICAgICAgICAgICAgaWYgKCFlbGVtZW50KSB7XG4gICAgICAgICAgICAgICAgY29udGludWU7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBjbGVhbmVkLnB1c2goZWxlbWVudCk7XG4gICAgICAgICAgICBmaWx0ZXJlZENUTWFwW2VsZW1lbnQudXVpZF0gPSBjdXJyZW50SW5kZXg7XG4gICAgICAgICAgICBjdXJyZW50SW5kZXgrKztcbiAgICAgICAgfVxuICAgICAgICB0aGlzLnNvcnRlZE1hcFtjb250ZW50VHlwZV0gPSBjbGVhbmVkO1xuICAgIH1cbn1cbiJdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7Ozs7QUFFQTtBQUFBO0FBQ0E7QUFBQTtBQUFBO0FBQ0E7QUFEQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7Ozs7O0FBSUE7QUFDQTs7O0FBRUE7QUFYQTtBQVlBO0FBQ0E7QUFkQTtBQUFBO0FBQUE7QUFlQTtBQUNBO0FBQUE7QUFDQTtBQUFBO0FBQ0E7QUFsQkE7QUFBQTtBQUFBO0FBb0JBO0FBQ0E7QUFBQTtBQUNBO0FBQUE7QUFDQTtBQUNBOzs7Ozs7Ozs7OztBQXhCQTtBQUFBO0FBQUE7QUFtQ0E7QUFDQTtBQUNBOzs7QUFFQTtBQUdBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFBQTtBQUFBO0FBRUE7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7O0FBekRBO0FBQUE7QUFBQTtBQTREQTtBQUNBO0FBQUE7QUFDQTtBQUVBO0FBQ0E7QUFBQTtBQUNBO0FBbEVBO0FBQUE7QUFBQTtBQW9FQTtBQUNBO0FBQ0E7QUFDQTs7Ozs7OztBQUtBO0FBVEE7QUFBQTtBQUFBO0FBQ0E7QUFEQTtBQVVBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUNBOzs7O0FBR0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFBQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBRUE7QUFDQTtBQUNBO0FBQ0E7OztBQUVBO0FBQ0E7OztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBN0RBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFDQTtBQURBO0FBQUE7QUFBQTtBQUNBO0FBREE7QUE4REE7QUFBQTtBQUNBO0FBQ0E7QUFoRUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQWlFQTtBQXBJQTtBQUFBO0FBQUE7QUFzSUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFBQTtBQUFBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBRUE7QUFDQTtBQUVBO0FBQ0E7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUVBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBOzs7O0FBR0E7QUFDQTtBQUNBO0FBQ0E7QUFoRUE7QUFBQTtBQUFBO0FBQ0E7QUFEQTtBQWdFQTtBQUFBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBdkVBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFDQTtBQXVFQTtBQUNBO0FBOU1BO0FBQ0E7QUFEQTtBQUFBIiwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./lib/protocol/collection/item_collection.ts\n')},"./lib/protocol/collection/payload_collection.ts":
|
||
/*!*******************************************************!*\
|
||
!*** ./lib/protocol/collection/payload_collection.ts ***!
|
||
\*******************************************************/
|
||
/*! exports provided: ImmutablePayloadCollection */function(module,__webpack_exports__,__webpack_require__){"use strict";eval('__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "ImmutablePayloadCollection", function() { return ImmutablePayloadCollection; });\n/* harmony import */ var _collection__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./collection */ "./lib/protocol/collection/collection.ts");\nfunction _typeof(obj) { "@babel/helpers - typeof"; if (typeof Symbol === "function" && typeof Symbol.iterator === "symbol") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }; } return _typeof(obj); }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } }\n\nfunction _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); } }\n\nfunction _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; }\n\nfunction _possibleConstructorReturn(self, call) { if (call && (_typeof(call) === "object" || typeof call === "function")) { return call; } return _assertThisInitialized(self); }\n\nfunction _assertThisInitialized(self) { if (self === void 0) { throw new ReferenceError("this hasn\'t been initialised - super() hasn\'t been called"); } return self; }\n\nfunction _getPrototypeOf(o) { _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function _getPrototypeOf(o) { return o.__proto__ || Object.getPrototypeOf(o); }; return _getPrototypeOf(o); }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== "function" && superClass !== null) { throw new TypeError("Super expression must either be null or a function"); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, writable: true, configurable: true } }); if (superClass) _setPrototypeOf(subClass, superClass); }\n\nfunction _setPrototypeOf(o, p) { _setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) { o.__proto__ = p; return o; }; return _setPrototypeOf(o, p); }\n\n\n/**\n * A collection of payloads coming from a single source.\n */\n\nvar ImmutablePayloadCollection = /*#__PURE__*/function (_MutableCollection) {\n _inherits(ImmutablePayloadCollection, _MutableCollection);\n\n function ImmutablePayloadCollection() {\n _classCallCheck(this, ImmutablePayloadCollection);\n\n return _possibleConstructorReturn(this, _getPrototypeOf(ImmutablePayloadCollection).apply(this, arguments));\n }\n\n _createClass(ImmutablePayloadCollection, [{\n key: "payloads",\n get: function get() {\n return this.all();\n }\n }], [{\n key: "WithPayloads",\n\n /** We don\'t use a constructor for this because we don\'t want the constructor to have\n * side-effects, such as calling collection.set(). */\n value: function WithPayloads() {\n var payloads = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : [];\n var source = arguments.length > 1 ? arguments[1] : undefined;\n var collection = new ImmutablePayloadCollection();\n collection.source = source;\n\n if (payloads.length > 0) {\n collection.set(payloads);\n }\n\n Object.freeze(collection);\n return collection;\n }\n }, {\n key: "FromCollection",\n value: function FromCollection(collection) {\n var mapCopy = Object.freeze(Object.assign({}, collection.map));\n var typedMapCopy = Object.freeze(Object.assign({}, collection.typedMap));\n var referenceMapCopy = Object.freeze(collection.referenceMap.makeCopy());\n var conflictMapCopy = Object.freeze(collection.conflictMap.makeCopy());\n var result = new ImmutablePayloadCollection(true, mapCopy, typedMapCopy, referenceMapCopy, conflictMapCopy);\n Object.freeze(result);\n return result;\n }\n }]);\n\n return ImmutablePayloadCollection;\n}(_collection__WEBPACK_IMPORTED_MODULE_0__["MutableCollection"]);//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9saWIvcHJvdG9jb2wvY29sbGVjdGlvbi9wYXlsb2FkX2NvbGxlY3Rpb24udHMuanMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly9TTkxpYnJhcnkvLi9saWIvcHJvdG9jb2wvY29sbGVjdGlvbi9wYXlsb2FkX2NvbGxlY3Rpb24udHM/MWYwNCJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBNdXRhYmxlQ29sbGVjdGlvbiB9IGZyb20gJy4vY29sbGVjdGlvbic7XG4vKipcbiAqIEEgY29sbGVjdGlvbiBvZiBwYXlsb2FkcyBjb21pbmcgZnJvbSBhIHNpbmdsZSBzb3VyY2UuXG4gKi9cbmV4cG9ydCBjbGFzcyBJbW11dGFibGVQYXlsb2FkQ29sbGVjdGlvbiBleHRlbmRzIE11dGFibGVDb2xsZWN0aW9uIHtcbiAgICAvKiogV2UgZG9uJ3QgdXNlIGEgY29uc3RydWN0b3IgZm9yIHRoaXMgYmVjYXVzZSB3ZSBkb24ndCB3YW50IHRoZSBjb25zdHJ1Y3RvciB0byBoYXZlXG4gICAgICogc2lkZS1lZmZlY3RzLCBzdWNoIGFzIGNhbGxpbmcgY29sbGVjdGlvbi5zZXQoKS4gKi9cbiAgICBzdGF0aWMgV2l0aFBheWxvYWRzKHBheWxvYWRzID0gW10sIHNvdXJjZSkge1xuICAgICAgICBjb25zdCBjb2xsZWN0aW9uID0gbmV3IEltbXV0YWJsZVBheWxvYWRDb2xsZWN0aW9uKCk7XG4gICAgICAgIGNvbGxlY3Rpb24uc291cmNlID0gc291cmNlO1xuICAgICAgICBpZiAocGF5bG9hZHMubGVuZ3RoID4gMCkge1xuICAgICAgICAgICAgY29sbGVjdGlvbi5zZXQocGF5bG9hZHMpO1xuICAgICAgICB9XG4gICAgICAgIE9iamVjdC5mcmVlemUoY29sbGVjdGlvbik7XG4gICAgICAgIHJldHVybiBjb2xsZWN0aW9uO1xuICAgIH1cbiAgICBzdGF0aWMgRnJvbUNvbGxlY3Rpb24oY29sbGVjdGlvbikge1xuICAgICAgICBjb25zdCBtYXBDb3B5ID0gT2JqZWN0LmZyZWV6ZShPYmplY3QuYXNzaWduKHt9LCBjb2xsZWN0aW9uLm1hcCkpO1xuICAgICAgICBjb25zdCB0eXBlZE1hcENvcHkgPSBPYmplY3QuZnJlZXplKE9iamVjdC5hc3NpZ24oe30sIGNvbGxlY3Rpb24udHlwZWRNYXApKTtcbiAgICAgICAgY29uc3QgcmVmZXJlbmNlTWFwQ29weSA9IE9iamVjdC5mcmVlemUoY29sbGVjdGlvbi5yZWZlcmVuY2VNYXAubWFrZUNvcHkoKSk7XG4gICAgICAgIGNvbnN0IGNvbmZsaWN0TWFwQ29weSA9IE9iamVjdC5mcmVlemUoY29sbGVjdGlvbi5jb25mbGljdE1hcC5tYWtlQ29weSgpKTtcbiAgICAgICAgY29uc3QgcmVzdWx0ID0gbmV3IEltbXV0YWJsZVBheWxvYWRDb2xsZWN0aW9uKHRydWUsIG1hcENvcHksIHR5cGVkTWFwQ29weSwgcmVmZXJlbmNlTWFwQ29weSwgY29uZmxpY3RNYXBDb3B5KTtcbiAgICAgICAgT2JqZWN0LmZyZWV6ZShyZXN1bHQpO1xuICAgICAgICByZXR1cm4gcmVzdWx0O1xuICAgIH1cbiAgICBnZXQgcGF5bG9hZHMoKSB7XG4gICAgICAgIHJldHVybiB0aGlzLmFsbCgpO1xuICAgIH1cbn1cbiJdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBQUE7QUFDQTs7OztBQUdBO0FBQUE7QUFDQTtBQURBO0FBQUE7QUFDQTtBQURBO0FBQUE7QUFDQTtBQURBO0FBQUE7QUFBQTtBQXNCQTtBQUNBO0FBdkJBO0FBQUE7QUFDQTtBQUFBOztBQURBO0FBR0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBWEE7QUFBQTtBQUFBO0FBYUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQXBCQTtBQUNBO0FBREE7QUFBQSIsInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./lib/protocol/collection/payload_collection.ts\n')},"./lib/protocol/collection/uuid_map.ts":
|
||
/*!*********************************************!*\
|
||
!*** ./lib/protocol/collection/uuid_map.ts ***!
|
||
\*********************************************/
|
||
/*! exports provided: UuidMap */function(module,__webpack_exports__,__webpack_require__){"use strict";eval('__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "UuidMap", function() { return UuidMap; });\n/* harmony import */ var _Lib_utils__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @Lib/utils */ "./lib/utils.ts");\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } }\n\nfunction _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); } }\n\nfunction _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; }\n\n\nvar UuidMap = /*#__PURE__*/function () {\n function UuidMap() {\n _classCallCheck(this, UuidMap);\n\n /** uuid to uuids that we have a relationship with */\n this.directMap = {};\n /** uuid to uuids that have a relationship with us */\n\n this.inverseMap = {};\n }\n\n _createClass(UuidMap, [{\n key: "makeCopy",\n value: function makeCopy() {\n var copy = new UuidMap();\n copy.directMap = Object.assign({}, this.directMap);\n copy.inverseMap = Object.assign({}, this.inverseMap);\n return copy;\n }\n }, {\n key: "getDirectRelationships",\n value: function getDirectRelationships(uuid) {\n return this.directMap[uuid] || [];\n }\n }, {\n key: "getInverseRelationships",\n value: function getInverseRelationships(uuid) {\n return this.inverseMap[uuid] || [];\n }\n }, {\n key: "establishRelationship",\n value: function establishRelationship(uuidA, uuidB) {\n this.establishDirectRelationship(uuidA, uuidB);\n this.establishInverseRelationship(uuidA, uuidB);\n }\n }, {\n key: "deestablishRelationship",\n value: function deestablishRelationship(uuidA, uuidB) {\n this.deestablishDirectRelationship(uuidA, uuidB);\n this.deestablishInverseRelationship(uuidA, uuidB);\n }\n }, {\n key: "setAllRelationships",\n value: function setAllRelationships(uuid, relationships) {\n var previousDirect = this.directMap[uuid] || [];\n this.directMap[uuid] = relationships;\n /** Remove all previous values in case relationships have changed\n * The updated references will be added afterwards.\n */\n\n var _iteratorNormalCompletion = true;\n var _didIteratorError = false;\n var _iteratorError = undefined;\n\n try {\n for (var _iterator = previousDirect[Symbol.iterator](), _step; !(_iteratorNormalCompletion = (_step = _iterator.next()).done); _iteratorNormalCompletion = true) {\n var previousRelationship = _step.value;\n this.deestablishInverseRelationship(uuid, previousRelationship);\n }\n /** Now map current relationships */\n\n } catch (err) {\n _didIteratorError = true;\n _iteratorError = err;\n } finally {\n try {\n if (!_iteratorNormalCompletion && _iterator.return != null) {\n _iterator.return();\n }\n } finally {\n if (_didIteratorError) {\n throw _iteratorError;\n }\n }\n }\n\n var _iteratorNormalCompletion2 = true;\n var _didIteratorError2 = false;\n var _iteratorError2 = undefined;\n\n try {\n for (var _iterator2 = relationships[Symbol.iterator](), _step2; !(_iteratorNormalCompletion2 = (_step2 = _iterator2.next()).done); _iteratorNormalCompletion2 = true) {\n var newRelationship = _step2.value;\n this.establishInverseRelationship(uuid, newRelationship);\n }\n } catch (err) {\n _didIteratorError2 = true;\n _iteratorError2 = err;\n } finally {\n try {\n if (!_iteratorNormalCompletion2 && _iterator2.return != null) {\n _iterator2.return();\n }\n } finally {\n if (_didIteratorError2) {\n throw _iteratorError2;\n }\n }\n }\n }\n }, {\n key: "removeFromMap",\n value: function removeFromMap(uuid) {\n /** Items that we reference */\n var directReferences = this.directMap[uuid] || [];\n var _iteratorNormalCompletion3 = true;\n var _didIteratorError3 = false;\n var _iteratorError3 = undefined;\n\n try {\n for (var _iterator3 = directReferences[Symbol.iterator](), _step3; !(_iteratorNormalCompletion3 = (_step3 = _iterator3.next()).done); _iteratorNormalCompletion3 = true) {\n var directReference = _step3.value;\n Object(_Lib_utils__WEBPACK_IMPORTED_MODULE_0__["removeFromArray"])(this.inverseMap[directReference] || [], uuid);\n }\n } catch (err) {\n _didIteratorError3 = true;\n _iteratorError3 = err;\n } finally {\n try {\n if (!_iteratorNormalCompletion3 && _iterator3.return != null) {\n _iterator3.return();\n }\n } finally {\n if (_didIteratorError3) {\n throw _iteratorError3;\n }\n }\n }\n\n delete this.directMap[uuid];\n /** Items that are referencing us */\n\n var inverseReferences = this.inverseMap[uuid] || [];\n var _iteratorNormalCompletion4 = true;\n var _didIteratorError4 = false;\n var _iteratorError4 = undefined;\n\n try {\n for (var _iterator4 = inverseReferences[Symbol.iterator](), _step4; !(_iteratorNormalCompletion4 = (_step4 = _iterator4.next()).done); _iteratorNormalCompletion4 = true) {\n var inverseReference = _step4.value;\n Object(_Lib_utils__WEBPACK_IMPORTED_MODULE_0__["removeFromArray"])(this.directMap[inverseReference] || [], uuid);\n }\n } catch (err) {\n _didIteratorError4 = true;\n _iteratorError4 = err;\n } finally {\n try {\n if (!_iteratorNormalCompletion4 && _iterator4.return != null) {\n _iterator4.return();\n }\n } finally {\n if (_didIteratorError4) {\n throw _iteratorError4;\n }\n }\n }\n\n delete this.inverseMap[uuid];\n }\n }, {\n key: "establishDirectRelationship",\n value: function establishDirectRelationship(uuidA, uuidB) {\n var index = this.directMap[uuidA] || [];\n Object(_Lib_utils__WEBPACK_IMPORTED_MODULE_0__["addIfUnique"])(index, uuidB);\n this.directMap[uuidA] = index;\n }\n }, {\n key: "establishInverseRelationship",\n value: function establishInverseRelationship(uuidA, uuidB) {\n var inverseIndex = this.inverseMap[uuidB] || [];\n Object(_Lib_utils__WEBPACK_IMPORTED_MODULE_0__["addIfUnique"])(inverseIndex, uuidA);\n this.inverseMap[uuidB] = inverseIndex;\n }\n }, {\n key: "deestablishDirectRelationship",\n value: function deestablishDirectRelationship(uuidA, uuidB) {\n var index = this.directMap[uuidA] || [];\n Object(_Lib_utils__WEBPACK_IMPORTED_MODULE_0__["removeFromArray"])(index, uuidB);\n this.directMap[uuidA] = index;\n }\n }, {\n key: "deestablishInverseRelationship",\n value: function deestablishInverseRelationship(uuidA, uuidB) {\n var inverseIndex = this.inverseMap[uuidB] || [];\n Object(_Lib_utils__WEBPACK_IMPORTED_MODULE_0__["removeFromArray"])(inverseIndex, uuidA);\n this.inverseMap[uuidB] = inverseIndex;\n }\n }]);\n\n return UuidMap;\n}();//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9saWIvcHJvdG9jb2wvY29sbGVjdGlvbi91dWlkX21hcC50cy5qcyIsInNvdXJjZXMiOlsid2VicGFjazovL1NOTGlicmFyeS8uL2xpYi9wcm90b2NvbC9jb2xsZWN0aW9uL3V1aWRfbWFwLnRzP2U2ZmQiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgYWRkSWZVbmlxdWUsIHJlbW92ZUZyb21BcnJheSB9IGZyb20gJ0BMaWIvdXRpbHMnO1xuZXhwb3J0IGNsYXNzIFV1aWRNYXAge1xuICAgIGNvbnN0cnVjdG9yKCkge1xuICAgICAgICAvKiogdXVpZCB0byB1dWlkcyB0aGF0IHdlIGhhdmUgYSByZWxhdGlvbnNoaXAgd2l0aCAqL1xuICAgICAgICB0aGlzLmRpcmVjdE1hcCA9IHt9O1xuICAgICAgICAvKiogdXVpZCB0byB1dWlkcyB0aGF0IGhhdmUgYSByZWxhdGlvbnNoaXAgd2l0aCB1cyAqL1xuICAgICAgICB0aGlzLmludmVyc2VNYXAgPSB7fTtcbiAgICB9XG4gICAgbWFrZUNvcHkoKSB7XG4gICAgICAgIGNvbnN0IGNvcHkgPSBuZXcgVXVpZE1hcCgpO1xuICAgICAgICBjb3B5LmRpcmVjdE1hcCA9IE9iamVjdC5hc3NpZ24oe30sIHRoaXMuZGlyZWN0TWFwKTtcbiAgICAgICAgY29weS5pbnZlcnNlTWFwID0gT2JqZWN0LmFzc2lnbih7fSwgdGhpcy5pbnZlcnNlTWFwKTtcbiAgICAgICAgcmV0dXJuIGNvcHk7XG4gICAgfVxuICAgIGdldERpcmVjdFJlbGF0aW9uc2hpcHModXVpZCkge1xuICAgICAgICByZXR1cm4gdGhpcy5kaXJlY3RNYXBbdXVpZF0gfHwgW107XG4gICAgfVxuICAgIGdldEludmVyc2VSZWxhdGlvbnNoaXBzKHV1aWQpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuaW52ZXJzZU1hcFt1dWlkXSB8fCBbXTtcbiAgICB9XG4gICAgZXN0YWJsaXNoUmVsYXRpb25zaGlwKHV1aWRBLCB1dWlkQikge1xuICAgICAgICB0aGlzLmVzdGFibGlzaERpcmVjdFJlbGF0aW9uc2hpcCh1dWlkQSwgdXVpZEIpO1xuICAgICAgICB0aGlzLmVzdGFibGlzaEludmVyc2VSZWxhdGlvbnNoaXAodXVpZEEsIHV1aWRCKTtcbiAgICB9XG4gICAgZGVlc3RhYmxpc2hSZWxhdGlvbnNoaXAodXVpZEEsIHV1aWRCKSB7XG4gICAgICAgIHRoaXMuZGVlc3RhYmxpc2hEaXJlY3RSZWxhdGlvbnNoaXAodXVpZEEsIHV1aWRCKTtcbiAgICAgICAgdGhpcy5kZWVzdGFibGlzaEludmVyc2VSZWxhdGlvbnNoaXAodXVpZEEsIHV1aWRCKTtcbiAgICB9XG4gICAgc2V0QWxsUmVsYXRpb25zaGlwcyh1dWlkLCByZWxhdGlvbnNoaXBzKSB7XG4gICAgICAgIGNvbnN0IHByZXZpb3VzRGlyZWN0ID0gdGhpcy5kaXJlY3RNYXBbdXVpZF0gfHwgW107XG4gICAgICAgIHRoaXMuZGlyZWN0TWFwW3V1aWRdID0gcmVsYXRpb25zaGlwcztcbiAgICAgICAgLyoqIFJlbW92ZSBhbGwgcHJldmlvdXMgdmFsdWVzIGluIGNhc2UgcmVsYXRpb25zaGlwcyBoYXZlIGNoYW5nZWRcbiAgICAgICAgICogVGhlIHVwZGF0ZWQgcmVmZXJlbmNlcyB3aWxsIGJlIGFkZGVkIGFmdGVyd2FyZHMuXG4gICAgICAgICovXG4gICAgICAgIGZvciAoY29uc3QgcHJldmlvdXNSZWxhdGlvbnNoaXAgb2YgcHJldmlvdXNEaXJlY3QpIHtcbiAgICAgICAgICAgIHRoaXMuZGVlc3RhYmxpc2hJbnZlcnNlUmVsYXRpb25zaGlwKHV1aWQsIHByZXZpb3VzUmVsYXRpb25zaGlwKTtcbiAgICAgICAgfVxuICAgICAgICAvKiogTm93IG1hcCBjdXJyZW50IHJlbGF0aW9uc2hpcHMgKi9cbiAgICAgICAgZm9yIChjb25zdCBuZXdSZWxhdGlvbnNoaXAgb2YgcmVsYXRpb25zaGlwcykge1xuICAgICAgICAgICAgdGhpcy5lc3RhYmxpc2hJbnZlcnNlUmVsYXRpb25zaGlwKHV1aWQsIG5ld1JlbGF0aW9uc2hpcCk7XG4gICAgICAgIH1cbiAgICB9XG4gICAgcmVtb3ZlRnJvbU1hcCh1dWlkKSB7XG4gICAgICAgIC8qKiBJdGVtcyB0aGF0IHdlIHJlZmVyZW5jZSAqL1xuICAgICAgICBjb25zdCBkaXJlY3RSZWZlcmVuY2VzID0gdGhpcy5kaXJlY3RNYXBbdXVpZF0gfHwgW107XG4gICAgICAgIGZvciAoY29uc3QgZGlyZWN0UmVmZXJlbmNlIG9mIGRpcmVjdFJlZmVyZW5jZXMpIHtcbiAgICAgICAgICAgIHJlbW92ZUZyb21BcnJheSh0aGlzLmludmVyc2VNYXBbZGlyZWN0UmVmZXJlbmNlXSB8fCBbXSwgdXVpZCk7XG4gICAgICAgIH1cbiAgICAgICAgZGVsZXRlIHRoaXMuZGlyZWN0TWFwW3V1aWRdO1xuICAgICAgICAvKiogSXRlbXMgdGhhdCBhcmUgcmVmZXJlbmNpbmcgdXMgKi9cbiAgICAgICAgY29uc3QgaW52ZXJzZVJlZmVyZW5jZXMgPSB0aGlzLmludmVyc2VNYXBbdXVpZF0gfHwgW107XG4gICAgICAgIGZvciAoY29uc3QgaW52ZXJzZVJlZmVyZW5jZSBvZiBpbnZlcnNlUmVmZXJlbmNlcykge1xuICAgICAgICAgICAgcmVtb3ZlRnJvbUFycmF5KHRoaXMuZGlyZWN0TWFwW2ludmVyc2VSZWZlcmVuY2VdIHx8IFtdLCB1dWlkKTtcbiAgICAgICAgfVxuICAgICAgICBkZWxldGUgdGhpcy5pbnZlcnNlTWFwW3V1aWRdO1xuICAgIH1cbiAgICBlc3RhYmxpc2hEaXJlY3RSZWxhdGlvbnNoaXAodXVpZEEsIHV1aWRCKSB7XG4gICAgICAgIGNvbnN0IGluZGV4ID0gdGhpcy5kaXJlY3RNYXBbdXVpZEFdIHx8IFtdO1xuICAgICAgICBhZGRJZlVuaXF1ZShpbmRleCwgdXVpZEIpO1xuICAgICAgICB0aGlzLmRpcmVjdE1hcFt1dWlkQV0gPSBpbmRleDtcbiAgICB9XG4gICAgZXN0YWJsaXNoSW52ZXJzZVJlbGF0aW9uc2hpcCh1dWlkQSwgdXVpZEIpIHtcbiAgICAgICAgY29uc3QgaW52ZXJzZUluZGV4ID0gdGhpcy5pbnZlcnNlTWFwW3V1aWRCXSB8fCBbXTtcbiAgICAgICAgYWRkSWZVbmlxdWUoaW52ZXJzZUluZGV4LCB1dWlkQSk7XG4gICAgICAgIHRoaXMuaW52ZXJzZU1hcFt1dWlkQl0gPSBpbnZlcnNlSW5kZXg7XG4gICAgfVxuICAgIGRlZXN0YWJsaXNoRGlyZWN0UmVsYXRpb25zaGlwKHV1aWRBLCB1dWlkQikge1xuICAgICAgICBjb25zdCBpbmRleCA9IHRoaXMuZGlyZWN0TWFwW3V1aWRBXSB8fCBbXTtcbiAgICAgICAgcmVtb3ZlRnJvbUFycmF5KGluZGV4LCB1dWlkQik7XG4gICAgICAgIHRoaXMuZGlyZWN0TWFwW3V1aWRBXSA9IGluZGV4O1xuICAgIH1cbiAgICBkZWVzdGFibGlzaEludmVyc2VSZWxhdGlvbnNoaXAodXVpZEEsIHV1aWRCKSB7XG4gICAgICAgIGNvbnN0IGludmVyc2VJbmRleCA9IHRoaXMuaW52ZXJzZU1hcFt1dWlkQl0gfHwgW107XG4gICAgICAgIHJlbW92ZUZyb21BcnJheShpbnZlcnNlSW5kZXgsIHV1aWRBKTtcbiAgICAgICAgdGhpcy5pbnZlcnNlTWFwW3V1aWRCXSA9IGludmVyc2VJbmRleDtcbiAgICB9XG59XG4iXSwibWFwcGluZ3MiOiI7Ozs7Ozs7OztBQUFBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQVBBO0FBQUE7QUFBQTtBQVFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFaQTtBQUFBO0FBQUE7QUFjQTtBQUNBO0FBZkE7QUFBQTtBQUFBO0FBaUJBO0FBQ0E7QUFsQkE7QUFBQTtBQUFBO0FBb0JBO0FBQ0E7QUFDQTtBQXRCQTtBQUFBO0FBQUE7QUF3QkE7QUFDQTtBQUNBO0FBMUJBO0FBQUE7QUFBQTtBQTRCQTtBQUNBO0FBQ0E7Ozs7QUFIQTtBQUFBO0FBQUE7QUFDQTtBQURBO0FBTUE7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBVkE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUNBO0FBREE7QUFBQTtBQUFBO0FBQ0E7QUFEQTtBQVVBO0FBQUE7QUFDQTtBQUNBO0FBWkE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQWFBO0FBeENBO0FBQUE7QUFBQTtBQTBDQTtBQUNBO0FBRkE7QUFBQTtBQUFBO0FBQ0E7QUFEQTtBQUdBO0FBQUE7QUFDQTtBQUNBO0FBTEE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUNBO0FBS0E7QUFDQTtBQUNBO0FBQUE7QUFSQTtBQUFBO0FBQUE7QUFDQTtBQURBO0FBU0E7QUFBQTtBQUNBO0FBQ0E7QUFYQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQ0E7QUFXQTtBQUNBO0FBdERBO0FBQUE7QUFBQTtBQXdEQTtBQUNBO0FBQ0E7QUFDQTtBQTNEQTtBQUFBO0FBQUE7QUE2REE7QUFDQTtBQUNBO0FBQ0E7QUFoRUE7QUFBQTtBQUFBO0FBa0VBO0FBQ0E7QUFDQTtBQUNBO0FBckVBO0FBQUE7QUFBQTtBQXVFQTtBQUNBO0FBQ0E7QUFDQTtBQTFFQTtBQUNBO0FBREE7QUFBQSIsInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./lib/protocol/collection/uuid_map.ts\n')},"./lib/protocol/index.ts":
|
||
/*!*******************************!*\
|
||
!*** ./lib/protocol/index.ts ***!
|
||
\*******************************/
|
||
/*! exports provided: ProtocolVersion, compareVersions, EncryptionIntent, isDecryptedIntent, intentRequiresEncryption, SNRootKey, CreateKeyParams, SNProtocolOperator001, SNProtocolOperator002, SNProtocolOperator003, SNProtocolOperator004 */function(module,__webpack_exports__,__webpack_require__){"use strict";eval('__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _Protocol_versions__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @Protocol/versions */ "./lib/protocol/versions.ts");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "ProtocolVersion", function() { return _Protocol_versions__WEBPACK_IMPORTED_MODULE_0__["ProtocolVersion"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "compareVersions", function() { return _Protocol_versions__WEBPACK_IMPORTED_MODULE_0__["compareVersions"]; });\n\n/* harmony import */ var _Protocol_intents__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! @Protocol/intents */ "./lib/protocol/intents.ts");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "EncryptionIntent", function() { return _Protocol_intents__WEBPACK_IMPORTED_MODULE_1__["EncryptionIntent"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "isDecryptedIntent", function() { return _Protocol_intents__WEBPACK_IMPORTED_MODULE_1__["isDecryptedIntent"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "intentRequiresEncryption", function() { return _Protocol_intents__WEBPACK_IMPORTED_MODULE_1__["intentRequiresEncryption"]; });\n\n/* harmony import */ var _Protocol_root_key__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! @Protocol/root_key */ "./lib/protocol/root_key.ts");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "SNRootKey", function() { return _Protocol_root_key__WEBPACK_IMPORTED_MODULE_2__["SNRootKey"]; });\n\n/* harmony import */ var _Protocol_key_params__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! @Protocol/key_params */ "./lib/protocol/key_params.ts");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "CreateKeyParams", function() { return _Protocol_key_params__WEBPACK_IMPORTED_MODULE_3__["CreateKeyParams"]; });\n\n/* harmony import */ var _Protocol_operator_001_operator_001__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! @Protocol/operator/001/operator_001 */ "./lib/protocol/operator/001/operator_001.ts");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "SNProtocolOperator001", function() { return _Protocol_operator_001_operator_001__WEBPACK_IMPORTED_MODULE_4__["SNProtocolOperator001"]; });\n\n/* harmony import */ var _Protocol_operator_002_operator_002__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! @Protocol/operator/002/operator_002 */ "./lib/protocol/operator/002/operator_002.ts");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "SNProtocolOperator002", function() { return _Protocol_operator_002_operator_002__WEBPACK_IMPORTED_MODULE_5__["SNProtocolOperator002"]; });\n\n/* harmony import */ var _Protocol_operator_003_operator_003__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! @Protocol/operator/003/operator_003 */ "./lib/protocol/operator/003/operator_003.ts");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "SNProtocolOperator003", function() { return _Protocol_operator_003_operator_003__WEBPACK_IMPORTED_MODULE_6__["SNProtocolOperator003"]; });\n\n/* harmony import */ var _Protocol_operator_004_operator_004__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! @Protocol/operator/004/operator_004 */ "./lib/protocol/operator/004/operator_004.ts");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "SNProtocolOperator004", function() { return _Protocol_operator_004_operator_004__WEBPACK_IMPORTED_MODULE_7__["SNProtocolOperator004"]; });\n\n\n\n\n\n\n\n\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9saWIvcHJvdG9jb2wvaW5kZXgudHMuanMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly9TTkxpYnJhcnkvLi9saWIvcHJvdG9jb2wvaW5kZXgudHM/NzZlZCJdLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgeyBQcm90b2NvbFZlcnNpb24sIGNvbXBhcmVWZXJzaW9ucyB9IGZyb20gJ0BQcm90b2NvbC92ZXJzaW9ucyc7XG5leHBvcnQgeyBFbmNyeXB0aW9uSW50ZW50IGFzIEVuY3J5cHRpb25JbnRlbnQsIGlzRGVjcnlwdGVkSW50ZW50LCBpbnRlbnRSZXF1aXJlc0VuY3J5cHRpb24gfSBmcm9tICdAUHJvdG9jb2wvaW50ZW50cyc7XG5leHBvcnQgeyBTTlJvb3RLZXkgfSBmcm9tICdAUHJvdG9jb2wvcm9vdF9rZXknO1xuZXhwb3J0IHsgQ3JlYXRlS2V5UGFyYW1zIH0gZnJvbSAnQFByb3RvY29sL2tleV9wYXJhbXMnO1xuZXhwb3J0IHsgU05Qcm90b2NvbE9wZXJhdG9yMDAxIH0gZnJvbSAnQFByb3RvY29sL29wZXJhdG9yLzAwMS9vcGVyYXRvcl8wMDEnO1xuZXhwb3J0IHsgU05Qcm90b2NvbE9wZXJhdG9yMDAyIH0gZnJvbSAnQFByb3RvY29sL29wZXJhdG9yLzAwMi9vcGVyYXRvcl8wMDInO1xuZXhwb3J0IHsgU05Qcm90b2NvbE9wZXJhdG9yMDAzIH0gZnJvbSAnQFByb3RvY29sL29wZXJhdG9yLzAwMy9vcGVyYXRvcl8wMDMnO1xuZXhwb3J0IHsgU05Qcm90b2NvbE9wZXJhdG9yMDA0IH0gZnJvbSAnQFByb3RvY29sL29wZXJhdG9yLzAwNC9vcGVyYXRvcl8wMDQnO1xuIl0sIm1hcHBpbmdzIjoiQUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOyIsInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./lib/protocol/index.ts\n')},"./lib/protocol/intents.ts":
|
||
/*!*********************************!*\
|
||
!*** ./lib/protocol/intents.ts ***!
|
||
\*********************************/
|
||
/*! exports provided: EncryptionIntent, isLocalStorageIntent, isFileIntent, isDecryptedIntent, intentRequiresEncryption */function(module,__webpack_exports__,__webpack_require__){"use strict";eval('__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "EncryptionIntent", function() { return EncryptionIntent; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "isLocalStorageIntent", function() { return isLocalStorageIntent; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "isFileIntent", function() { return isFileIntent; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "isDecryptedIntent", function() { return isDecryptedIntent; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "intentRequiresEncryption", function() { return intentRequiresEncryption; });\nvar EncryptionIntent;\n\n(function (EncryptionIntent) {\n EncryptionIntent[EncryptionIntent["Sync"] = 0] = "Sync";\n /** Permissible only for server extensions */\n\n EncryptionIntent[EncryptionIntent["SyncDecrypted"] = 1] = "SyncDecrypted";\n EncryptionIntent[EncryptionIntent["LocalStorageEncrypted"] = 2] = "LocalStorageEncrypted";\n EncryptionIntent[EncryptionIntent["LocalStorageDecrypted"] = 3] = "LocalStorageDecrypted";\n /** Store encrypted if possible, but decrypted if not */\n\n EncryptionIntent[EncryptionIntent["LocalStoragePreferEncrypted"] = 4] = "LocalStoragePreferEncrypted";\n EncryptionIntent[EncryptionIntent["FileEncrypted"] = 5] = "FileEncrypted";\n EncryptionIntent[EncryptionIntent["FileDecrypted"] = 6] = "FileDecrypted";\n EncryptionIntent[EncryptionIntent["FilePreferEncrypted"] = 7] = "FilePreferEncrypted";\n})(EncryptionIntent || (EncryptionIntent = {}));\n\n;\nfunction isLocalStorageIntent(intent) {\n return intent === EncryptionIntent.LocalStorageEncrypted || intent === EncryptionIntent.LocalStorageDecrypted || intent === EncryptionIntent.LocalStoragePreferEncrypted;\n}\nfunction isFileIntent(intent) {\n return intent === EncryptionIntent.FileEncrypted || intent === EncryptionIntent.FileDecrypted || intent === EncryptionIntent.FilePreferEncrypted;\n}\nfunction isDecryptedIntent(intent) {\n return intent === EncryptionIntent.SyncDecrypted || intent === EncryptionIntent.LocalStorageDecrypted || intent === EncryptionIntent.FileDecrypted;\n}\n/**\n * @returns {boolean} True if the intent requires encryption.\n */\n\nfunction intentRequiresEncryption(intent) {\n return intent === EncryptionIntent.Sync || intent === EncryptionIntent.LocalStorageEncrypted || intent === EncryptionIntent.FileEncrypted;\n}//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9saWIvcHJvdG9jb2wvaW50ZW50cy50cy5qcyIsInNvdXJjZXMiOlsid2VicGFjazovL1NOTGlicmFyeS8uL2xpYi9wcm90b2NvbC9pbnRlbnRzLnRzP2VhODQiXSwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0IHZhciBFbmNyeXB0aW9uSW50ZW50O1xuKGZ1bmN0aW9uIChFbmNyeXB0aW9uSW50ZW50KSB7XG4gICAgRW5jcnlwdGlvbkludGVudFtFbmNyeXB0aW9uSW50ZW50W1wiU3luY1wiXSA9IDBdID0gXCJTeW5jXCI7XG4gICAgLyoqIFBlcm1pc3NpYmxlIG9ubHkgZm9yIHNlcnZlciBleHRlbnNpb25zICovXG4gICAgRW5jcnlwdGlvbkludGVudFtFbmNyeXB0aW9uSW50ZW50W1wiU3luY0RlY3J5cHRlZFwiXSA9IDFdID0gXCJTeW5jRGVjcnlwdGVkXCI7XG4gICAgRW5jcnlwdGlvbkludGVudFtFbmNyeXB0aW9uSW50ZW50W1wiTG9jYWxTdG9yYWdlRW5jcnlwdGVkXCJdID0gMl0gPSBcIkxvY2FsU3RvcmFnZUVuY3J5cHRlZFwiO1xuICAgIEVuY3J5cHRpb25JbnRlbnRbRW5jcnlwdGlvbkludGVudFtcIkxvY2FsU3RvcmFnZURlY3J5cHRlZFwiXSA9IDNdID0gXCJMb2NhbFN0b3JhZ2VEZWNyeXB0ZWRcIjtcbiAgICAvKiogU3RvcmUgZW5jcnlwdGVkIGlmIHBvc3NpYmxlLCBidXQgZGVjcnlwdGVkIGlmIG5vdCAqL1xuICAgIEVuY3J5cHRpb25JbnRlbnRbRW5jcnlwdGlvbkludGVudFtcIkxvY2FsU3RvcmFnZVByZWZlckVuY3J5cHRlZFwiXSA9IDRdID0gXCJMb2NhbFN0b3JhZ2VQcmVmZXJFbmNyeXB0ZWRcIjtcbiAgICBFbmNyeXB0aW9uSW50ZW50W0VuY3J5cHRpb25JbnRlbnRbXCJGaWxlRW5jcnlwdGVkXCJdID0gNV0gPSBcIkZpbGVFbmNyeXB0ZWRcIjtcbiAgICBFbmNyeXB0aW9uSW50ZW50W0VuY3J5cHRpb25JbnRlbnRbXCJGaWxlRGVjcnlwdGVkXCJdID0gNl0gPSBcIkZpbGVEZWNyeXB0ZWRcIjtcbiAgICBFbmNyeXB0aW9uSW50ZW50W0VuY3J5cHRpb25JbnRlbnRbXCJGaWxlUHJlZmVyRW5jcnlwdGVkXCJdID0gN10gPSBcIkZpbGVQcmVmZXJFbmNyeXB0ZWRcIjtcbn0pKEVuY3J5cHRpb25JbnRlbnQgfHwgKEVuY3J5cHRpb25JbnRlbnQgPSB7fSkpO1xuO1xuZXhwb3J0IGZ1bmN0aW9uIGlzTG9jYWxTdG9yYWdlSW50ZW50KGludGVudCkge1xuICAgIHJldHVybiAoaW50ZW50ID09PSBFbmNyeXB0aW9uSW50ZW50LkxvY2FsU3RvcmFnZUVuY3J5cHRlZCB8fFxuICAgICAgICBpbnRlbnQgPT09IEVuY3J5cHRpb25JbnRlbnQuTG9jYWxTdG9yYWdlRGVjcnlwdGVkIHx8XG4gICAgICAgIGludGVudCA9PT0gRW5jcnlwdGlvbkludGVudC5Mb2NhbFN0b3JhZ2VQcmVmZXJFbmNyeXB0ZWQpO1xufVxuZXhwb3J0IGZ1bmN0aW9uIGlzRmlsZUludGVudChpbnRlbnQpIHtcbiAgICByZXR1cm4gKGludGVudCA9PT0gRW5jcnlwdGlvbkludGVudC5GaWxlRW5jcnlwdGVkIHx8XG4gICAgICAgIGludGVudCA9PT0gRW5jcnlwdGlvbkludGVudC5GaWxlRGVjcnlwdGVkIHx8XG4gICAgICAgIGludGVudCA9PT0gRW5jcnlwdGlvbkludGVudC5GaWxlUHJlZmVyRW5jcnlwdGVkKTtcbn1cbmV4cG9ydCBmdW5jdGlvbiBpc0RlY3J5cHRlZEludGVudChpbnRlbnQpIHtcbiAgICByZXR1cm4gKGludGVudCA9PT0gRW5jcnlwdGlvbkludGVudC5TeW5jRGVjcnlwdGVkIHx8XG4gICAgICAgIGludGVudCA9PT0gRW5jcnlwdGlvbkludGVudC5Mb2NhbFN0b3JhZ2VEZWNyeXB0ZWQgfHxcbiAgICAgICAgaW50ZW50ID09PSBFbmNyeXB0aW9uSW50ZW50LkZpbGVEZWNyeXB0ZWQpO1xufVxuLyoqXG4gKiBAcmV0dXJucyB7Ym9vbGVhbn0gIFRydWUgaWYgdGhlIGludGVudCByZXF1aXJlcyBlbmNyeXB0aW9uLlxuICovXG5leHBvcnQgZnVuY3Rpb24gaW50ZW50UmVxdWlyZXNFbmNyeXB0aW9uKGludGVudCkge1xuICAgIHJldHVybiAoaW50ZW50ID09PSBFbmNyeXB0aW9uSW50ZW50LlN5bmMgfHxcbiAgICAgICAgaW50ZW50ID09PSBFbmNyeXB0aW9uSW50ZW50LkxvY2FsU3RvcmFnZUVuY3J5cHRlZCB8fFxuICAgICAgICBpbnRlbnQgPT09IEVuY3J5cHRpb25JbnRlbnQuRmlsZUVuY3J5cHRlZCk7XG59XG4iXSwibWFwcGluZ3MiOiJBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFHQTtBQUNBO0FBQ0E7QUFHQTtBQUNBO0FBQ0E7QUFHQTtBQUNBOzs7O0FBR0E7QUFDQTtBQUdBIiwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./lib/protocol/intents.ts\n')},"./lib/protocol/key_params.ts":
|
||
/*!************************************!*\
|
||
!*** ./lib/protocol/key_params.ts ***!
|
||
\************************************/
|
||
/*! exports provided: CreateKeyParams, SNRootKeyParams */function(module,__webpack_exports__,__webpack_require__){"use strict";eval('__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "CreateKeyParams", function() { return CreateKeyParams; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "SNRootKeyParams", function() { return SNRootKeyParams; });\n/* harmony import */ var _Lib_utils__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @Lib/utils */ "./lib/utils.ts");\n/* harmony import */ var _Protocol_versions__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! @Protocol/versions */ "./lib/protocol/versions.ts");\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } }\n\nfunction _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); } }\n\nfunction _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; }\n\n\n\nfunction CreateKeyParams(keyParams) {\n return new SNRootKeyParams(keyParams);\n}\n/**\n * Key params are public data that contain information about how a root key was created.\n * Given a keyParams object and a password, clients can compute a root key that was created\n * previously.\n */\n\nvar SNRootKeyParams = /*#__PURE__*/function () {\n function SNRootKeyParams(content) {\n _classCallCheck(this, SNRootKeyParams);\n\n this.content = content;\n }\n /**\n * For consumers to determine whether the object they are\n * working with is a proper RootKeyParams object.\n */\n\n\n _createClass(SNRootKeyParams, [{\n key: "getPortableValue",\n\n /**\n * @access public\n * When saving in a file or communicating with server,\n * use the original values.\n */\n value: function getPortableValue() {\n /**\n * For version >= 003, do not send kdfIterations, as this value is always deduced\n * locally depending on the version.\n * Versions <= 002 had dynamic kdfIterations, so these values must be transfered.\n */\n if (Object(_Protocol_versions__WEBPACK_IMPORTED_MODULE_1__["compareVersions"])(this.version, _Protocol_versions__WEBPACK_IMPORTED_MODULE_1__["ProtocolVersion"].V003) >= 0) {\n return Object(_Lib_utils__WEBPACK_IMPORTED_MODULE_0__["omitByCopy"])(this.content, [\'pw_cost\']);\n } else {\n return this.content;\n }\n }\n }, {\n key: "isKeyParamsObject",\n get: function get() {\n return true;\n }\n }, {\n key: "kdfIterations",\n get: function get() {\n return this.content.pw_cost;\n }\n }, {\n key: "seed",\n get: function get() {\n return this.content.pw_nonce;\n }\n }, {\n key: "identifier",\n get: function get() {\n return this.content.identifier || this.content.email;\n }\n }, {\n key: "salt",\n get: function get() {\n return this.content.pw_salt;\n }\n }, {\n key: "version",\n get: function get() {\n return this.content.version;\n }\n }]);\n\n return SNRootKeyParams;\n}();//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9saWIvcHJvdG9jb2wva2V5X3BhcmFtcy50cy5qcyIsInNvdXJjZXMiOlsid2VicGFjazovL1NOTGlicmFyeS8uL2xpYi9wcm90b2NvbC9rZXlfcGFyYW1zLnRzPzliM2EiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgb21pdEJ5Q29weSB9IGZyb20gJ0BMaWIvdXRpbHMnO1xuaW1wb3J0IHsgUHJvdG9jb2xWZXJzaW9uLCBjb21wYXJlVmVyc2lvbnMgfSBmcm9tICdAUHJvdG9jb2wvdmVyc2lvbnMnO1xuZXhwb3J0IGZ1bmN0aW9uIENyZWF0ZUtleVBhcmFtcyhrZXlQYXJhbXMpIHtcbiAgICByZXR1cm4gbmV3IFNOUm9vdEtleVBhcmFtcyhrZXlQYXJhbXMpO1xufVxuLyoqXG4gKiBLZXkgcGFyYW1zIGFyZSBwdWJsaWMgZGF0YSB0aGF0IGNvbnRhaW4gaW5mb3JtYXRpb24gYWJvdXQgaG93IGEgcm9vdCBrZXkgd2FzIGNyZWF0ZWQuXG4gKiBHaXZlbiBhIGtleVBhcmFtcyBvYmplY3QgYW5kIGEgcGFzc3dvcmQsIGNsaWVudHMgY2FuIGNvbXB1dGUgYSByb290IGtleSB0aGF0IHdhcyBjcmVhdGVkXG4gKiBwcmV2aW91c2x5LlxuICovXG5leHBvcnQgY2xhc3MgU05Sb290S2V5UGFyYW1zIHtcbiAgICBjb25zdHJ1Y3Rvcihjb250ZW50KSB7XG4gICAgICAgIHRoaXMuY29udGVudCA9IGNvbnRlbnQ7XG4gICAgfVxuICAgIC8qKlxuICAgICAqIEZvciBjb25zdW1lcnMgdG8gZGV0ZXJtaW5lIHdoZXRoZXIgdGhlIG9iamVjdCB0aGV5IGFyZVxuICAgICAqIHdvcmtpbmcgd2l0aCBpcyBhIHByb3BlciBSb290S2V5UGFyYW1zIG9iamVjdC5cbiAgICAgKi9cbiAgICBnZXQgaXNLZXlQYXJhbXNPYmplY3QoKSB7XG4gICAgICAgIHJldHVybiB0cnVlO1xuICAgIH1cbiAgICBnZXQga2RmSXRlcmF0aW9ucygpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuY29udGVudC5wd19jb3N0O1xuICAgIH1cbiAgICBnZXQgc2VlZCgpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuY29udGVudC5wd19ub25jZTtcbiAgICB9XG4gICAgZ2V0IGlkZW50aWZpZXIoKSB7XG4gICAgICAgIHJldHVybiB0aGlzLmNvbnRlbnQuaWRlbnRpZmllciB8fCB0aGlzLmNvbnRlbnQuZW1haWw7XG4gICAgfVxuICAgIGdldCBzYWx0KCkge1xuICAgICAgICByZXR1cm4gdGhpcy5jb250ZW50LnB3X3NhbHQ7XG4gICAgfVxuICAgIGdldCB2ZXJzaW9uKCkge1xuICAgICAgICByZXR1cm4gdGhpcy5jb250ZW50LnZlcnNpb247XG4gICAgfVxuICAgIC8qKlxuICAgICAqIEBhY2Nlc3MgcHVibGljXG4gICAgICogV2hlbiBzYXZpbmcgaW4gYSBmaWxlIG9yIGNvbW11bmljYXRpbmcgd2l0aCBzZXJ2ZXIsXG4gICAgICogdXNlIHRoZSBvcmlnaW5hbCB2YWx1ZXMuXG4gICAgICovXG4gICAgZ2V0UG9ydGFibGVWYWx1ZSgpIHtcbiAgICAgICAgLyoqXG4gICAgICAgICAqIEZvciB2ZXJzaW9uID49IDAwMywgZG8gbm90IHNlbmQga2RmSXRlcmF0aW9ucywgYXMgdGhpcyB2YWx1ZSBpcyBhbHdheXMgZGVkdWNlZFxuICAgICAgICAgKiBsb2NhbGx5IGRlcGVuZGluZyBvbiB0aGUgdmVyc2lvbi5cbiAgICAgICAgICogVmVyc2lvbnMgPD0gMDAyIGhhZCBkeW5hbWljIGtkZkl0ZXJhdGlvbnMsIHNvIHRoZXNlIHZhbHVlcyBtdXN0IGJlIHRyYW5zZmVyZWQuXG4gICAgICAgICAqL1xuICAgICAgICBpZiAoY29tcGFyZVZlcnNpb25zKHRoaXMudmVyc2lvbiwgUHJvdG9jb2xWZXJzaW9uLlYwMDMpID49IDApIHtcbiAgICAgICAgICAgIHJldHVybiBvbWl0QnlDb3B5KHRoaXMuY29udGVudCwgWydwd19jb3N0J10pO1xuICAgICAgICB9XG4gICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgcmV0dXJuIHRoaXMuY29udGVudDtcbiAgICAgICAgfVxuICAgIH1cbn1cbiJdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7Ozs7OztBQUtBO0FBQ0E7QUFBQTtBQUNBO0FBQUE7QUFDQTtBQUNBOzs7Ozs7QUFKQTtBQUFBO0FBQ0E7QUF5QkE7Ozs7O0FBMUJBO0FBZ0NBOzs7OztBQUtBO0FBQ0E7QUFDQTtBQUVBO0FBQ0E7QUFDQTtBQTNDQTtBQUFBO0FBQUE7QUFTQTtBQUNBO0FBVkE7QUFBQTtBQUFBO0FBWUE7QUFDQTtBQWJBO0FBQUE7QUFBQTtBQWVBO0FBQ0E7QUFoQkE7QUFBQTtBQUFBO0FBa0JBO0FBQ0E7QUFuQkE7QUFBQTtBQUFBO0FBcUJBO0FBQ0E7QUF0QkE7QUFBQTtBQUFBO0FBd0JBO0FBQ0E7QUF6QkE7QUFDQTtBQURBO0FBQUEiLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./lib/protocol/key_params.ts\n')},"./lib/protocol/operator/001/operator_001.ts":
|
||
/*!***************************************************!*\
|
||
!*** ./lib/protocol/operator/001/operator_001.ts ***!
|
||
\***************************************************/
|
||
/*! exports provided: SNProtocolOperator001 */function(module,__webpack_exports__,__webpack_require__){"use strict";eval('__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "SNProtocolOperator001", function() { return SNProtocolOperator001; });\n/* harmony import */ var _babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @babel/runtime/regenerator */ "./node_modules/@babel/runtime/regenerator/index.js");\n/* harmony import */ var _babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var _Models_app_items_key__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! @Models/app/items_key */ "./lib/models/app/items_key.ts");\n/* harmony import */ var _Protocol_operator_operator__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! @Protocol/operator/operator */ "./lib/protocol/operator/operator.ts");\n/* harmony import */ var _Protocol_key_params__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! @Protocol/key_params */ "./lib/protocol/key_params.ts");\n/* harmony import */ var _Payloads_formats__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! @Payloads/formats */ "./lib/protocol/payloads/formats.ts");\n/* harmony import */ var _Payloads_generator__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! @Payloads/generator */ "./lib/protocol/payloads/generator.ts");\n/* harmony import */ var _Protocol_versions__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! @Protocol/versions */ "./lib/protocol/versions.ts");\n/* harmony import */ var _Protocol_root_key__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! @Protocol/root_key */ "./lib/protocol/root_key.ts");\n/* harmony import */ var _Protocol_operator_algorithms__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! @Protocol/operator/algorithms */ "./lib/protocol/operator/algorithms.ts");\n\n\nfunction _typeof(obj) { "@babel/helpers - typeof"; if (typeof Symbol === "function" && typeof Symbol.iterator === "symbol") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }; } return _typeof(obj); }\n\nfunction asyncGeneratorStep(gen, resolve, reject, _next, _throw, key, arg) { try { var info = gen[key](arg); var value = info.value; } catch (error) { reject(error); return; } if (info.done) { resolve(value); } else { Promise.resolve(value).then(_next, _throw); } }\n\nfunction _asyncToGenerator(fn) { return function () { var self = this, args = arguments; return new Promise(function (resolve, reject) { var gen = fn.apply(self, args); function _next(value) { asyncGeneratorStep(gen, resolve, reject, _next, _throw, "next", value); } function _throw(err) { asyncGeneratorStep(gen, resolve, reject, _next, _throw, "throw", err); } _next(undefined); }); }; }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } }\n\nfunction _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); } }\n\nfunction _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; }\n\nfunction _possibleConstructorReturn(self, call) { if (call && (_typeof(call) === "object" || typeof call === "function")) { return call; } return _assertThisInitialized(self); }\n\nfunction _assertThisInitialized(self) { if (self === void 0) { throw new ReferenceError("this hasn\'t been initialised - super() hasn\'t been called"); } return self; }\n\nfunction _get(target, property, receiver) { if (typeof Reflect !== "undefined" && Reflect.get) { _get = Reflect.get; } else { _get = function _get(target, property, receiver) { var base = _superPropBase(target, property); if (!base) return; var desc = Object.getOwnPropertyDescriptor(base, property); if (desc.get) { return desc.get.call(receiver); } return desc.value; }; } return _get(target, property, receiver || target); }\n\nfunction _superPropBase(object, property) { while (!Object.prototype.hasOwnProperty.call(object, property)) { object = _getPrototypeOf(object); if (object === null) break; } return object; }\n\nfunction _getPrototypeOf(o) { _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function _getPrototypeOf(o) { return o.__proto__ || Object.getPrototypeOf(o); }; return _getPrototypeOf(o); }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== "function" && superClass !== null) { throw new TypeError("Super expression must either be null or a function"); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, writable: true, configurable: true } }); if (superClass) _setPrototypeOf(subClass, superClass); }\n\nfunction _setPrototypeOf(o, p) { _setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) { o.__proto__ = p; return o; }; return _setPrototypeOf(o, p); }\n\n\n\n\n\n\n\n\n\nvar NO_IV = \'00000000000000000000000000000000\';\n/**\n * @deprecated\n * A legacy operator no longer used to generate new accounts\n */\n\nvar SNProtocolOperator001 = /*#__PURE__*/function (_SNProtocolOperator) {\n _inherits(SNProtocolOperator001, _SNProtocolOperator);\n\n function SNProtocolOperator001() {\n _classCallCheck(this, SNProtocolOperator001);\n\n return _possibleConstructorReturn(this, _getPrototypeOf(SNProtocolOperator001).apply(this, arguments));\n }\n\n _createClass(SNProtocolOperator001, [{\n key: "generateNewItemsKeyContent",\n value: function () {\n var _generateNewItemsKeyContent = _asyncToGenerator( /*#__PURE__*/_babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0___default.a.mark(function _callee() {\n var keyLength, itemsKey, response;\n return _babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0___default.a.wrap(function _callee$(_context) {\n while (1) {\n switch (_context.prev = _context.next) {\n case 0:\n keyLength = _Protocol_operator_algorithms__WEBPACK_IMPORTED_MODULE_8__["V001Algorithm"].EncryptionKeyLength;\n _context.next = 3;\n return this.crypto.generateRandomKey(keyLength);\n\n case 3:\n itemsKey = _context.sent;\n response = {\n itemsKey: itemsKey,\n version: this.version\n };\n return _context.abrupt("return", response);\n\n case 6:\n case "end":\n return _context.stop();\n }\n }\n }, _callee, this);\n }));\n\n function generateNewItemsKeyContent() {\n return _generateNewItemsKeyContent.apply(this, arguments);\n }\n\n return generateNewItemsKeyContent;\n }()\n }, {\n key: "createRootKey",\n value: function () {\n var _createRootKey = _asyncToGenerator( /*#__PURE__*/_babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0___default.a.mark(function _callee2(identifier, password) {\n var pwCost, pwNonce, pwSalt, key, keyParams;\n return _babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0___default.a.wrap(function _callee2$(_context2) {\n while (1) {\n switch (_context2.prev = _context2.next) {\n case 0:\n pwCost = _Protocol_operator_algorithms__WEBPACK_IMPORTED_MODULE_8__["V001Algorithm"].PbkdfMinCost;\n _context2.next = 3;\n return this.crypto.generateRandomKey(_Protocol_operator_algorithms__WEBPACK_IMPORTED_MODULE_8__["V001Algorithm"].SaltSeedLength);\n\n case 3:\n pwNonce = _context2.sent;\n _context2.next = 6;\n return this.crypto.unsafeSha1(identifier + \'SN\' + pwNonce);\n\n case 6:\n pwSalt = _context2.sent;\n _context2.next = 9;\n return this.deriveKey(password, pwSalt, pwCost);\n\n case 9:\n key = _context2.sent;\n keyParams = Object(_Protocol_key_params__WEBPACK_IMPORTED_MODULE_3__["CreateKeyParams"])({\n email: identifier,\n pw_cost: pwCost,\n pw_nonce: pwNonce,\n pw_salt: pwSalt,\n version: this.version\n });\n return _context2.abrupt("return", {\n key: key,\n keyParams: keyParams\n });\n\n case 12:\n case "end":\n return _context2.stop();\n }\n }\n }, _callee2, this);\n }));\n\n function createRootKey(_x, _x2) {\n return _createRootKey.apply(this, arguments);\n }\n\n return createRootKey;\n }()\n }, {\n key: "computeRootKey",\n value: function () {\n var _computeRootKey = _asyncToGenerator( /*#__PURE__*/_babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0___default.a.mark(function _callee3(password, keyParams) {\n var key;\n return _babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0___default.a.wrap(function _callee3$(_context3) {\n while (1) {\n switch (_context3.prev = _context3.next) {\n case 0:\n _context3.next = 2;\n return this.deriveKey(password, keyParams.salt, keyParams.kdfIterations);\n\n case 2:\n key = _context3.sent;\n return _context3.abrupt("return", key);\n\n case 4:\n case "end":\n return _context3.stop();\n }\n }\n }, _callee3, this);\n }));\n\n function computeRootKey(_x3, _x4) {\n return _computeRootKey.apply(this, arguments);\n }\n\n return computeRootKey;\n }()\n }, {\n key: "decryptString",\n value: function () {\n var _decryptString = _asyncToGenerator( /*#__PURE__*/_babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0___default.a.mark(function _callee4(ciphertext, key) {\n return _babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0___default.a.wrap(function _callee4$(_context4) {\n while (1) {\n switch (_context4.prev = _context4.next) {\n case 0:\n return _context4.abrupt("return", this.crypto.aes256CbcDecrypt(ciphertext, NO_IV, key));\n\n case 1:\n case "end":\n return _context4.stop();\n }\n }\n }, _callee4, this);\n }));\n\n function decryptString(_x5, _x6) {\n return _decryptString.apply(this, arguments);\n }\n\n return decryptString;\n }()\n }, {\n key: "encryptString",\n value: function () {\n var _encryptString = _asyncToGenerator( /*#__PURE__*/_babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0___default.a.mark(function _callee5(text, key) {\n return _babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0___default.a.wrap(function _callee5$(_context5) {\n while (1) {\n switch (_context5.prev = _context5.next) {\n case 0:\n return _context5.abrupt("return", this.crypto.aes256CbcEncrypt(text, NO_IV, key));\n\n case 1:\n case "end":\n return _context5.stop();\n }\n }\n }, _callee5, this);\n }));\n\n function encryptString(_x7, _x8) {\n return _encryptString.apply(this, arguments);\n }\n\n return encryptString;\n }()\n }, {\n key: "generateEncryptedParameters",\n value: function () {\n var _generateEncryptedParameters = _asyncToGenerator( /*#__PURE__*/_babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0___default.a.mark(function _callee6(payload, format, key) {\n var itemKey, encItemKey, ek, ak, contentCiphertext, ciphertext, authHash;\n return _babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0___default.a.wrap(function _callee6$(_context6) {\n while (1) {\n switch (_context6.prev = _context6.next) {\n case 0:\n if (!(format === _Payloads_formats__WEBPACK_IMPORTED_MODULE_4__["PayloadFormat"].DecryptedBareObject || format === _Payloads_formats__WEBPACK_IMPORTED_MODULE_4__["PayloadFormat"].DecryptedBase64String)) {\n _context6.next = 2;\n break;\n }\n\n return _context6.abrupt("return", _get(_getPrototypeOf(SNProtocolOperator001.prototype), "generateEncryptedParameters", this).call(this, payload, format, key));\n\n case 2:\n if (!(format !== _Payloads_formats__WEBPACK_IMPORTED_MODULE_4__["PayloadFormat"].EncryptedString)) {\n _context6.next = 4;\n break;\n }\n\n throw "Unsupport format for generateEncryptedParameters ".concat(format);\n\n case 4:\n if (key) {\n _context6.next = 6;\n break;\n }\n\n throw \'Attempting to generateEncryptedParameters with no itemsKey.\';\n\n case 6:\n _context6.next = 8;\n return this.crypto.generateRandomKey(_Protocol_operator_algorithms__WEBPACK_IMPORTED_MODULE_8__["V001Algorithm"].EncryptionKeyLength * 2);\n\n case 8:\n itemKey = _context6.sent;\n _context6.next = 11;\n return this.encryptString(itemKey, key.itemsKey);\n\n case 11:\n encItemKey = _context6.sent;\n _context6.next = 14;\n return this.firstHalfOfKey(itemKey);\n\n case 14:\n ek = _context6.sent;\n _context6.next = 17;\n return this.secondHalfOfKey(itemKey);\n\n case 17:\n ak = _context6.sent;\n _context6.next = 20;\n return this.encryptString(JSON.stringify(payload.content), ek);\n\n case 20:\n contentCiphertext = _context6.sent;\n ciphertext = key.version + contentCiphertext;\n _context6.next = 24;\n return this.crypto.hmac256(ciphertext, ak);\n\n case 24:\n authHash = _context6.sent;\n return _context6.abrupt("return", Object(_Payloads_generator__WEBPACK_IMPORTED_MODULE_5__["CreateEncryptionParameters"])({\n uuid: payload.uuid,\n items_key_id: key instanceof _Models_app_items_key__WEBPACK_IMPORTED_MODULE_1__["SNItemsKey"] ? key.uuid : undefined,\n content: ciphertext,\n enc_item_key: encItemKey,\n auth_hash: authHash\n }));\n\n case 26:\n case "end":\n return _context6.stop();\n }\n }\n }, _callee6, this);\n }));\n\n function generateEncryptedParameters(_x9, _x10, _x11) {\n return _generateEncryptedParameters.apply(this, arguments);\n }\n\n return generateEncryptedParameters;\n }()\n }, {\n key: "generateDecryptedParameters",\n value: function () {\n var _generateDecryptedParameters = _asyncToGenerator( /*#__PURE__*/_babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0___default.a.mark(function _callee7(encryptedParameters, key) {\n var format, encryptedItemKey, itemKeyComponents, itemKey, ek, itemParams, content;\n return _babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0___default.a.wrap(function _callee7$(_context7) {\n while (1) {\n switch (_context7.prev = _context7.next) {\n case 0:\n format = encryptedParameters.format;\n\n if (!(format === _Payloads_formats__WEBPACK_IMPORTED_MODULE_4__["PayloadFormat"].DecryptedBareObject || format === _Payloads_formats__WEBPACK_IMPORTED_MODULE_4__["PayloadFormat"].DecryptedBase64String)) {\n _context7.next = 3;\n break;\n }\n\n return _context7.abrupt("return", _get(_getPrototypeOf(SNProtocolOperator001.prototype), "generateDecryptedParameters", this).call(this, encryptedParameters, key));\n\n case 3:\n if (encryptedParameters.enc_item_key) {\n _context7.next = 6;\n break;\n }\n\n console.error(\'Missing item encryption key, skipping decryption.\');\n return _context7.abrupt("return", encryptedParameters);\n\n case 6:\n /** Decrypt encrypted key */\n encryptedItemKey = encryptedParameters.enc_item_key;\n encryptedItemKey = this.version + encryptedItemKey;\n itemKeyComponents = this.encryptionComponentsFromString(encryptedItemKey, key.itemsKey);\n _context7.next = 11;\n return this.decryptString(itemKeyComponents.ciphertext, itemKeyComponents.key);\n\n case 11:\n itemKey = _context7.sent;\n\n if (itemKey) {\n _context7.next = 15;\n break;\n }\n\n console.error(\'Error decrypting parameters\', encryptedParameters);\n return _context7.abrupt("return", Object(_Payloads_generator__WEBPACK_IMPORTED_MODULE_5__["CopyEncryptionParameters"])(encryptedParameters, {\n errorDecrypting: true,\n errorDecryptingValueChanged: !encryptedParameters.errorDecrypting\n }));\n\n case 15:\n _context7.next = 17;\n return this.firstHalfOfKey(itemKey);\n\n case 17:\n ek = _context7.sent;\n itemParams = this.encryptionComponentsFromString(encryptedParameters.contentString, ek);\n _context7.next = 21;\n return this.decryptString(itemParams.ciphertext, itemParams.key);\n\n case 21:\n content = _context7.sent;\n\n if (content) {\n _context7.next = 26;\n break;\n }\n\n return _context7.abrupt("return", Object(_Payloads_generator__WEBPACK_IMPORTED_MODULE_5__["CopyEncryptionParameters"])(encryptedParameters, {\n errorDecrypting: true,\n errorDecryptingValueChanged: !encryptedParameters.errorDecrypting\n }));\n\n case 26:\n return _context7.abrupt("return", Object(_Payloads_generator__WEBPACK_IMPORTED_MODULE_5__["CopyEncryptionParameters"])(encryptedParameters, {\n content: JSON.parse(content),\n items_key_id: undefined,\n enc_item_key: undefined,\n errorDecrypting: false,\n errorDecryptingValueChanged: encryptedParameters.errorDecrypting === true,\n waitingForKey: false\n }));\n\n case 27:\n case "end":\n return _context7.stop();\n }\n }\n }, _callee7, this);\n }));\n\n function generateDecryptedParameters(_x12, _x13) {\n return _generateDecryptedParameters.apply(this, arguments);\n }\n\n return generateDecryptedParameters;\n }()\n }, {\n key: "encryptionComponentsFromString",\n value: function encryptionComponentsFromString(string, encryptionKey) {\n var encryptionVersion = string.substring(0, _Protocol_versions__WEBPACK_IMPORTED_MODULE_6__["ProtocolVersion"].VersionLength);\n return {\n ciphertext: string.substring(_Protocol_versions__WEBPACK_IMPORTED_MODULE_6__["ProtocolVersion"].VersionLength, string.length),\n version: encryptionVersion,\n key: encryptionKey\n };\n }\n }, {\n key: "deriveKey",\n value: function () {\n var _deriveKey = _asyncToGenerator( /*#__PURE__*/_babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0___default.a.mark(function _callee8(password, pwSalt, pwCost) {\n var derivedKey, partitions, key;\n return _babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0___default.a.wrap(function _callee8$(_context8) {\n while (1) {\n switch (_context8.prev = _context8.next) {\n case 0:\n _context8.next = 2;\n return this.crypto.pbkdf2(password, pwSalt, pwCost, _Protocol_operator_algorithms__WEBPACK_IMPORTED_MODULE_8__["V001Algorithm"].PbkdfOutputLength);\n\n case 2:\n derivedKey = _context8.sent;\n _context8.next = 5;\n return this.splitKey(derivedKey, 2);\n\n case 5:\n partitions = _context8.sent;\n _context8.next = 8;\n return _Protocol_root_key__WEBPACK_IMPORTED_MODULE_7__["SNRootKey"].Create({\n serverPassword: partitions[0],\n masterKey: partitions[1],\n version: this.version\n });\n\n case 8:\n key = _context8.sent;\n return _context8.abrupt("return", key);\n\n case 10:\n case "end":\n return _context8.stop();\n }\n }\n }, _callee8, this);\n }));\n\n function deriveKey(_x14, _x15, _x16) {\n return _deriveKey.apply(this, arguments);\n }\n\n return deriveKey;\n }()\n }, {\n key: "version",\n get: function get() {\n return _Protocol_versions__WEBPACK_IMPORTED_MODULE_6__["ProtocolVersion"].V001;\n }\n }]);\n\n return SNProtocolOperator001;\n}(_Protocol_operator_operator__WEBPACK_IMPORTED_MODULE_2__["SNProtocolOperator"]);//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9saWIvcHJvdG9jb2wvb3BlcmF0b3IvMDAxL29wZXJhdG9yXzAwMS50cy5qcyIsInNvdXJjZXMiOlsid2VicGFjazovL1NOTGlicmFyeS8uL2xpYi9wcm90b2NvbC9vcGVyYXRvci8wMDEvb3BlcmF0b3JfMDAxLnRzP2JhN2QiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgU05JdGVtc0tleSB9IGZyb20gJ0BNb2RlbHMvYXBwL2l0ZW1zX2tleSc7XG5pbXBvcnQgeyBTTlByb3RvY29sT3BlcmF0b3IgfSBmcm9tICdAUHJvdG9jb2wvb3BlcmF0b3Ivb3BlcmF0b3InO1xuaW1wb3J0IHsgQ3JlYXRlS2V5UGFyYW1zIH0gZnJvbSAnQFByb3RvY29sL2tleV9wYXJhbXMnO1xuaW1wb3J0IHsgUGF5bG9hZEZvcm1hdCB9IGZyb20gJ0BQYXlsb2Fkcy9mb3JtYXRzJztcbmltcG9ydCB7IENyZWF0ZUVuY3J5cHRpb25QYXJhbWV0ZXJzLCBDb3B5RW5jcnlwdGlvblBhcmFtZXRlcnMgfSBmcm9tICdAUGF5bG9hZHMvZ2VuZXJhdG9yJztcbmltcG9ydCB7IFByb3RvY29sVmVyc2lvbiB9IGZyb20gJ0BQcm90b2NvbC92ZXJzaW9ucyc7XG5pbXBvcnQgeyBTTlJvb3RLZXkgfSBmcm9tICdAUHJvdG9jb2wvcm9vdF9rZXknO1xuaW1wb3J0IHsgVjAwMUFsZ29yaXRobSB9IGZyb20gJ0BQcm90b2NvbC9vcGVyYXRvci9hbGdvcml0aG1zJztcbmNvbnN0IE5PX0lWID0gJzAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwJztcbi8qKlxuICogQGRlcHJlY2F0ZWRcbiAqIEEgbGVnYWN5IG9wZXJhdG9yIG5vIGxvbmdlciB1c2VkIHRvIGdlbmVyYXRlIG5ldyBhY2NvdW50c1xuICovXG5leHBvcnQgY2xhc3MgU05Qcm90b2NvbE9wZXJhdG9yMDAxIGV4dGVuZHMgU05Qcm90b2NvbE9wZXJhdG9yIHtcbiAgICBnZXQgdmVyc2lvbigpIHtcbiAgICAgICAgcmV0dXJuIFByb3RvY29sVmVyc2lvbi5WMDAxO1xuICAgIH1cbiAgICBhc3luYyBnZW5lcmF0ZU5ld0l0ZW1zS2V5Q29udGVudCgpIHtcbiAgICAgICAgY29uc3Qga2V5TGVuZ3RoID0gVjAwMUFsZ29yaXRobS5FbmNyeXB0aW9uS2V5TGVuZ3RoO1xuICAgICAgICBjb25zdCBpdGVtc0tleSA9IGF3YWl0IHRoaXMuY3J5cHRvLmdlbmVyYXRlUmFuZG9tS2V5KGtleUxlbmd0aCk7XG4gICAgICAgIGNvbnN0IHJlc3BvbnNlID0ge1xuICAgICAgICAgICAgaXRlbXNLZXk6IGl0ZW1zS2V5LFxuICAgICAgICAgICAgdmVyc2lvbjogdGhpcy52ZXJzaW9uXG4gICAgICAgIH07XG4gICAgICAgIHJldHVybiByZXNwb25zZTtcbiAgICB9XG4gICAgYXN5bmMgY3JlYXRlUm9vdEtleShpZGVudGlmaWVyLCBwYXNzd29yZCkge1xuICAgICAgICBjb25zdCBwd0Nvc3QgPSBWMDAxQWxnb3JpdGhtLlBia2RmTWluQ29zdDtcbiAgICAgICAgY29uc3QgcHdOb25jZSA9IGF3YWl0IHRoaXMuY3J5cHRvLmdlbmVyYXRlUmFuZG9tS2V5KFYwMDFBbGdvcml0aG0uU2FsdFNlZWRMZW5ndGgpO1xuICAgICAgICBjb25zdCBwd1NhbHQgPSBhd2FpdCB0aGlzLmNyeXB0by51bnNhZmVTaGExKGlkZW50aWZpZXIgKyAnU04nICsgcHdOb25jZSk7XG4gICAgICAgIGNvbnN0IGtleSA9IGF3YWl0IHRoaXMuZGVyaXZlS2V5KHBhc3N3b3JkLCBwd1NhbHQsIHB3Q29zdCk7XG4gICAgICAgIGNvbnN0IGtleVBhcmFtcyA9IENyZWF0ZUtleVBhcmFtcyh7XG4gICAgICAgICAgICBlbWFpbDogaWRlbnRpZmllcixcbiAgICAgICAgICAgIHB3X2Nvc3Q6IHB3Q29zdCxcbiAgICAgICAgICAgIHB3X25vbmNlOiBwd05vbmNlLFxuICAgICAgICAgICAgcHdfc2FsdDogcHdTYWx0LFxuICAgICAgICAgICAgdmVyc2lvbjogdGhpcy52ZXJzaW9uXG4gICAgICAgIH0pO1xuICAgICAgICByZXR1cm4geyBrZXk6IGtleSwga2V5UGFyYW1zOiBrZXlQYXJhbXMgfTtcbiAgICB9XG4gICAgYXN5bmMgY29tcHV0ZVJvb3RLZXkocGFzc3dvcmQsIGtleVBhcmFtcykge1xuICAgICAgICBjb25zdCBrZXkgPSBhd2FpdCB0aGlzLmRlcml2ZUtleShwYXNzd29yZCwga2V5UGFyYW1zLnNhbHQsIGtleVBhcmFtcy5rZGZJdGVyYXRpb25zKTtcbiAgICAgICAgcmV0dXJuIGtleTtcbiAgICB9XG4gICAgYXN5bmMgZGVjcnlwdFN0cmluZyhjaXBoZXJ0ZXh0LCBrZXkpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuY3J5cHRvLmFlczI1NkNiY0RlY3J5cHQoY2lwaGVydGV4dCwgTk9fSVYsIGtleSk7XG4gICAgfVxuICAgIGFzeW5jIGVuY3J5cHRTdHJpbmcodGV4dCwga2V5KSB7XG4gICAgICAgIHJldHVybiB0aGlzLmNyeXB0by5hZXMyNTZDYmNFbmNyeXB0KHRleHQsIE5PX0lWLCBrZXkpO1xuICAgIH1cbiAgICBhc3luYyBnZW5lcmF0ZUVuY3J5cHRlZFBhcmFtZXRlcnMocGF5bG9hZCwgZm9ybWF0LCBrZXkpIHtcbiAgICAgICAgaWYgKChmb3JtYXQgPT09IFBheWxvYWRGb3JtYXQuRGVjcnlwdGVkQmFyZU9iamVjdCB8fFxuICAgICAgICAgICAgZm9ybWF0ID09PSBQYXlsb2FkRm9ybWF0LkRlY3J5cHRlZEJhc2U2NFN0cmluZykpIHtcbiAgICAgICAgICAgIHJldHVybiBzdXBlci5nZW5lcmF0ZUVuY3J5cHRlZFBhcmFtZXRlcnMocGF5bG9hZCwgZm9ybWF0LCBrZXkpO1xuICAgICAgICB9XG4gICAgICAgIGlmIChmb3JtYXQgIT09IFBheWxvYWRGb3JtYXQuRW5jcnlwdGVkU3RyaW5nKSB7XG4gICAgICAgICAgICB0aHJvdyBgVW5zdXBwb3J0IGZvcm1hdCBmb3IgZ2VuZXJhdGVFbmNyeXB0ZWRQYXJhbWV0ZXJzICR7Zm9ybWF0fWA7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKCFrZXkpIHtcbiAgICAgICAgICAgIHRocm93ICdBdHRlbXB0aW5nIHRvIGdlbmVyYXRlRW5jcnlwdGVkUGFyYW1ldGVycyB3aXRoIG5vIGl0ZW1zS2V5Lic7XG4gICAgICAgIH1cbiAgICAgICAgLyoqXG4gICAgICAgICAqIEdlbmVyYXRlIG5ldyBpdGVtIGtleSB0aGF0IGlzIGRvdWJsZSB0aGUga2V5IHNpemUuXG4gICAgICAgICAqIFdpbGwgYmUgc3BsaXQgdG8gY3JlYXRlIGVuY3J5cHRpb24ga2V5IGFuZCBhdXRoZW50aWNhdGlvbiBrZXkuXG4gICAgICAgICAqL1xuICAgICAgICBjb25zdCBpdGVtS2V5ID0gYXdhaXQgdGhpcy5jcnlwdG8uZ2VuZXJhdGVSYW5kb21LZXkoVjAwMUFsZ29yaXRobS5FbmNyeXB0aW9uS2V5TGVuZ3RoICogMik7XG4gICAgICAgIGNvbnN0IGVuY0l0ZW1LZXkgPSBhd2FpdCB0aGlzLmVuY3J5cHRTdHJpbmcoaXRlbUtleSwga2V5Lml0ZW1zS2V5KTtcbiAgICAgICAgLyoqIEVuY3J5cHQgY29udGVudCAqL1xuICAgICAgICBjb25zdCBlayA9IGF3YWl0IHRoaXMuZmlyc3RIYWxmT2ZLZXkoaXRlbUtleSk7XG4gICAgICAgIGNvbnN0IGFrID0gYXdhaXQgdGhpcy5zZWNvbmRIYWxmT2ZLZXkoaXRlbUtleSk7XG4gICAgICAgIGNvbnN0IGNvbnRlbnRDaXBoZXJ0ZXh0ID0gYXdhaXQgdGhpcy5lbmNyeXB0U3RyaW5nKEpTT04uc3RyaW5naWZ5KHBheWxvYWQuY29udGVudCksIGVrKTtcbiAgICAgICAgY29uc3QgY2lwaGVydGV4dCA9IGtleS52ZXJzaW9uICsgY29udGVudENpcGhlcnRleHQ7XG4gICAgICAgIGNvbnN0IGF1dGhIYXNoID0gYXdhaXQgdGhpcy5jcnlwdG8uaG1hYzI1NihjaXBoZXJ0ZXh0LCBhayk7XG4gICAgICAgIHJldHVybiBDcmVhdGVFbmNyeXB0aW9uUGFyYW1ldGVycyh7XG4gICAgICAgICAgICB1dWlkOiBwYXlsb2FkLnV1aWQsXG4gICAgICAgICAgICBpdGVtc19rZXlfaWQ6IGtleSBpbnN0YW5jZW9mIFNOSXRlbXNLZXkgPyBrZXkudXVpZCA6IHVuZGVmaW5lZCxcbiAgICAgICAgICAgIGNvbnRlbnQ6IGNpcGhlcnRleHQsXG4gICAgICAgICAgICBlbmNfaXRlbV9rZXk6IGVuY0l0ZW1LZXksXG4gICAgICAgICAgICBhdXRoX2hhc2g6IGF1dGhIYXNoLFxuICAgICAgICB9KTtcbiAgICB9XG4gICAgYXN5bmMgZ2VuZXJhdGVEZWNyeXB0ZWRQYXJhbWV0ZXJzKGVuY3J5cHRlZFBhcmFtZXRlcnMsIGtleSkge1xuICAgICAgICBjb25zdCBmb3JtYXQgPSBlbmNyeXB0ZWRQYXJhbWV0ZXJzLmZvcm1hdDtcbiAgICAgICAgaWYgKChmb3JtYXQgPT09IFBheWxvYWRGb3JtYXQuRGVjcnlwdGVkQmFyZU9iamVjdCB8fFxuICAgICAgICAgICAgZm9ybWF0ID09PSBQYXlsb2FkRm9ybWF0LkRlY3J5cHRlZEJhc2U2NFN0cmluZykpIHtcbiAgICAgICAgICAgIHJldHVybiBzdXBlci5nZW5lcmF0ZURlY3J5cHRlZFBhcmFtZXRlcnMoZW5jcnlwdGVkUGFyYW1ldGVycywga2V5KTtcbiAgICAgICAgfVxuICAgICAgICBpZiAoIWVuY3J5cHRlZFBhcmFtZXRlcnMuZW5jX2l0ZW1fa2V5KSB7XG4gICAgICAgICAgICBjb25zb2xlLmVycm9yKCdNaXNzaW5nIGl0ZW0gZW5jcnlwdGlvbiBrZXksIHNraXBwaW5nIGRlY3J5cHRpb24uJyk7XG4gICAgICAgICAgICByZXR1cm4gZW5jcnlwdGVkUGFyYW1ldGVycztcbiAgICAgICAgfVxuICAgICAgICAvKiogRGVjcnlwdCBlbmNyeXB0ZWQga2V5ICovXG4gICAgICAgIGxldCBlbmNyeXB0ZWRJdGVtS2V5ID0gZW5jcnlwdGVkUGFyYW1ldGVycy5lbmNfaXRlbV9rZXk7XG4gICAgICAgIGVuY3J5cHRlZEl0ZW1LZXkgPSB0aGlzLnZlcnNpb24gKyBlbmNyeXB0ZWRJdGVtS2V5O1xuICAgICAgICBjb25zdCBpdGVtS2V5Q29tcG9uZW50cyA9IHRoaXMuZW5jcnlwdGlvbkNvbXBvbmVudHNGcm9tU3RyaW5nKGVuY3J5cHRlZEl0ZW1LZXksIGtleS5pdGVtc0tleSk7XG4gICAgICAgIGNvbnN0IGl0ZW1LZXkgPSBhd2FpdCB0aGlzLmRlY3J5cHRTdHJpbmcoaXRlbUtleUNvbXBvbmVudHMuY2lwaGVydGV4dCwgaXRlbUtleUNvbXBvbmVudHMua2V5KTtcbiAgICAgICAgaWYgKCFpdGVtS2V5KSB7XG4gICAgICAgICAgICBjb25zb2xlLmVycm9yKCdFcnJvciBkZWNyeXB0aW5nIHBhcmFtZXRlcnMnLCBlbmNyeXB0ZWRQYXJhbWV0ZXJzKTtcbiAgICAgICAgICAgIHJldHVybiBDb3B5RW5jcnlwdGlvblBhcmFtZXRlcnMoZW5jcnlwdGVkUGFyYW1ldGVycywge1xuICAgICAgICAgICAgICAgIGVycm9yRGVjcnlwdGluZzogdHJ1ZSxcbiAgICAgICAgICAgICAgICBlcnJvckRlY3J5cHRpbmdWYWx1ZUNoYW5nZWQ6ICFlbmNyeXB0ZWRQYXJhbWV0ZXJzLmVycm9yRGVjcnlwdGluZ1xuICAgICAgICAgICAgfSk7XG4gICAgICAgIH1cbiAgICAgICAgY29uc3QgZWsgPSBhd2FpdCB0aGlzLmZpcnN0SGFsZk9mS2V5KGl0ZW1LZXkpO1xuICAgICAgICBjb25zdCBpdGVtUGFyYW1zID0gdGhpcy5lbmNyeXB0aW9uQ29tcG9uZW50c0Zyb21TdHJpbmcoZW5jcnlwdGVkUGFyYW1ldGVycy5jb250ZW50U3RyaW5nLCBlayk7XG4gICAgICAgIGNvbnN0IGNvbnRlbnQgPSBhd2FpdCB0aGlzLmRlY3J5cHRTdHJpbmcoaXRlbVBhcmFtcy5jaXBoZXJ0ZXh0LCBpdGVtUGFyYW1zLmtleSk7XG4gICAgICAgIGlmICghY29udGVudCkge1xuICAgICAgICAgICAgcmV0dXJuIENvcHlFbmNyeXB0aW9uUGFyYW1ldGVycyhlbmNyeXB0ZWRQYXJhbWV0ZXJzLCB7XG4gICAgICAgICAgICAgICAgZXJyb3JEZWNyeXB0aW5nOiB0cnVlLFxuICAgICAgICAgICAgICAgIGVycm9yRGVjcnlwdGluZ1ZhbHVlQ2hhbmdlZDogIWVuY3J5cHRlZFBhcmFtZXRlcnMuZXJyb3JEZWNyeXB0aW5nXG4gICAgICAgICAgICB9KTtcbiAgICAgICAgfVxuICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgIHJldHVybiBDb3B5RW5jcnlwdGlvblBhcmFtZXRlcnMoZW5jcnlwdGVkUGFyYW1ldGVycywge1xuICAgICAgICAgICAgICAgIGNvbnRlbnQ6IEpTT04ucGFyc2UoY29udGVudCksXG4gICAgICAgICAgICAgICAgaXRlbXNfa2V5X2lkOiB1bmRlZmluZWQsXG4gICAgICAgICAgICAgICAgZW5jX2l0ZW1fa2V5OiB1bmRlZmluZWQsXG4gICAgICAgICAgICAgICAgZXJyb3JEZWNyeXB0aW5nOiBmYWxzZSxcbiAgICAgICAgICAgICAgICBlcnJvckRlY3J5cHRpbmdWYWx1ZUNoYW5nZWQ6IGVuY3J5cHRlZFBhcmFtZXRlcnMuZXJyb3JEZWNyeXB0aW5nID09PSB0cnVlLFxuICAgICAgICAgICAgICAgIHdhaXRpbmdGb3JLZXk6IGZhbHNlLFxuICAgICAgICAgICAgfSk7XG4gICAgICAgIH1cbiAgICB9XG4gICAgZW5jcnlwdGlvbkNvbXBvbmVudHNGcm9tU3RyaW5nKHN0cmluZywgZW5jcnlwdGlvbktleSkge1xuICAgICAgICBjb25zdCBlbmNyeXB0aW9uVmVyc2lvbiA9IHN0cmluZy5zdWJzdHJpbmcoMCwgUHJvdG9jb2xWZXJzaW9uLlZlcnNpb25MZW5ndGgpO1xuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgY2lwaGVydGV4dDogc3RyaW5nLnN1YnN0cmluZyhQcm90b2NvbFZlcnNpb24uVmVyc2lvbkxlbmd0aCwgc3RyaW5nLmxlbmd0aCksXG4gICAgICAgICAgICB2ZXJzaW9uOiBlbmNyeXB0aW9uVmVyc2lvbixcbiAgICAgICAgICAgIGtleTogZW5jcnlwdGlvbktleVxuICAgICAgICB9O1xuICAgIH1cbiAgICBhc3luYyBkZXJpdmVLZXkocGFzc3dvcmQsIHB3U2FsdCwgcHdDb3N0KSB7XG4gICAgICAgIGNvbnN0IGRlcml2ZWRLZXkgPSBhd2FpdCB0aGlzLmNyeXB0by5wYmtkZjIocGFzc3dvcmQsIHB3U2FsdCwgcHdDb3N0LCBWMDAxQWxnb3JpdGhtLlBia2RmT3V0cHV0TGVuZ3RoKTtcbiAgICAgICAgY29uc3QgcGFydGl0aW9ucyA9IGF3YWl0IHRoaXMuc3BsaXRLZXkoZGVyaXZlZEtleSwgMik7XG4gICAgICAgIGNvbnN0IGtleSA9IGF3YWl0IFNOUm9vdEtleS5DcmVhdGUoe1xuICAgICAgICAgICAgc2VydmVyUGFzc3dvcmQ6IHBhcnRpdGlvbnNbMF0sXG4gICAgICAgICAgICBtYXN0ZXJLZXk6IHBhcnRpdGlvbnNbMV0sXG4gICAgICAgICAgICB2ZXJzaW9uOiB0aGlzLnZlcnNpb25cbiAgICAgICAgfSk7XG4gICAgICAgIHJldHVybiBrZXk7XG4gICAgfVxufVxuIl0sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7Ozs7O0FBSUE7QUFBQTtBQUNBO0FBREE7QUFBQTtBQUNBO0FBREE7QUFBQTtBQUNBO0FBREE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBS0E7QUFMQTtBQUFBO0FBQ0E7QUFEQTtBQU1BO0FBQ0E7QUFDQTtBQUNBO0FBRkE7QUFQQTtBQUNBO0FBREE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFDQTtBQURBO0FBQUE7QUFBQTtBQUNBO0FBREE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQWNBO0FBZEE7QUFBQTtBQUNBO0FBREE7QUFlQTtBQWZBO0FBQUE7QUFDQTtBQURBO0FBZ0JBO0FBaEJBO0FBQUE7QUFDQTtBQURBO0FBaUJBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBTEE7QUFsQkE7QUF5QkE7QUFBQTtBQUFBO0FBQ0E7QUExQkE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFDQTtBQURBO0FBQUE7QUFBQTtBQUNBO0FBREE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFDQTtBQURBO0FBNEJBO0FBNUJBO0FBQ0E7QUFEQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUNBO0FBREE7QUFBQTtBQUFBO0FBQ0E7QUFEQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQ0E7QUFEQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUNBO0FBREE7QUFBQTtBQUFBO0FBQ0E7QUFEQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQ0E7QUFEQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUNBO0FBREE7QUFBQTtBQUFBO0FBQ0E7QUFEQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFDQTtBQURBO0FBQ0E7QUFEQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQ0E7QUFEQTtBQUNBO0FBREE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUNBO0FBREE7QUFDQTtBQURBO0FBQUE7QUFBQTtBQUNBO0FBREE7QUFvREE7QUFwREE7QUFBQTtBQUNBO0FBREE7QUFxREE7QUFyREE7QUFBQTtBQUNBO0FBREE7QUF1REE7QUF2REE7QUFBQTtBQUNBO0FBREE7QUF3REE7QUF4REE7QUFBQTtBQUNBO0FBREE7QUF5REE7QUFDQTtBQTFEQTtBQUFBO0FBQ0E7QUFEQTtBQTJEQTtBQTNEQTtBQTZEQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBTEE7QUFDQTtBQTdEQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUNBO0FBREE7QUFBQTtBQUFBO0FBQ0E7QUFEQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBcUVBO0FBQ0E7QUF0RUE7QUFBQTtBQUFBO0FBQUE7QUFDQTtBQURBO0FBQ0E7QUFEQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQ0E7QUEwRUE7QUEzRUE7QUFDQTtBQURBO0FBOEVBO0FBQ0E7QUFDQTtBQUNBO0FBakZBO0FBQUE7QUFDQTtBQURBO0FBa0ZBO0FBQ0E7QUFuRkE7QUFBQTtBQUFBO0FBQUE7QUFDQTtBQW1GQTtBQXBGQTtBQXNGQTtBQUNBO0FBRkE7QUFDQTtBQXRGQTtBQUFBO0FBQUE7QUFDQTtBQURBO0FBMEZBO0FBQ0E7QUEzRkE7QUFBQTtBQUNBO0FBREE7QUE0RkE7QUFDQTtBQTdGQTtBQUFBO0FBQUE7QUFBQTtBQUNBO0FBREE7QUErRkE7QUFDQTtBQUZBO0FBQ0E7QUEvRkE7QUFBQTtBQXFHQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFOQTtBQUNBO0FBckdBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQ0E7QUFEQTtBQUFBO0FBQUE7QUFDQTtBQURBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUErR0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUhBO0FBS0E7QUFySEE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUNBO0FBREE7QUF1SEE7QUF2SEE7QUFBQTtBQUNBO0FBREE7QUF3SEE7QUF4SEE7QUFBQTtBQTBIQTtBQUNBO0FBQ0E7QUFIQTtBQUNBO0FBMUhBO0FBeUhBO0FBekhBO0FBQ0E7QUFEQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUNBO0FBREE7QUFBQTtBQUFBO0FBQ0E7QUFEQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBRUE7QUFDQTtBQUhBO0FBQ0E7QUFEQTtBQUFBIiwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./lib/protocol/operator/001/operator_001.ts\n')},"./lib/protocol/operator/002/operator_002.ts":
|
||
/*!***************************************************!*\
|
||
!*** ./lib/protocol/operator/002/operator_002.ts ***!
|
||
\***************************************************/
|
||
/*! exports provided: SNProtocolOperator002 */function(module,__webpack_exports__,__webpack_require__){"use strict";eval('__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "SNProtocolOperator002", function() { return SNProtocolOperator002; });\n/* harmony import */ var _babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @babel/runtime/regenerator */ "./node_modules/@babel/runtime/regenerator/index.js");\n/* harmony import */ var _babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var _Models_app_items_key__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! @Models/app/items_key */ "./lib/models/app/items_key.ts");\n/* harmony import */ var _algorithms__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./../algorithms */ "./lib/protocol/operator/algorithms.ts");\n/* harmony import */ var _Protocol_key_params__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! @Protocol/key_params */ "./lib/protocol/key_params.ts");\n/* harmony import */ var _Protocol_operator_001_operator_001__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! @Protocol/operator/001/operator_001 */ "./lib/protocol/operator/001/operator_001.ts");\n/* harmony import */ var _Payloads_formats__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! @Payloads/formats */ "./lib/protocol/payloads/formats.ts");\n/* harmony import */ var _Payloads_generator__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! @Payloads/generator */ "./lib/protocol/payloads/generator.ts");\n/* harmony import */ var _Protocol_versions__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! @Protocol/versions */ "./lib/protocol/versions.ts");\n/* harmony import */ var _Protocol_root_key__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! @Protocol/root_key */ "./lib/protocol/root_key.ts");\n\n\nfunction _typeof(obj) { "@babel/helpers - typeof"; if (typeof Symbol === "function" && typeof Symbol.iterator === "symbol") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }; } return _typeof(obj); }\n\nfunction asyncGeneratorStep(gen, resolve, reject, _next, _throw, key, arg) { try { var info = gen[key](arg); var value = info.value; } catch (error) { reject(error); return; } if (info.done) { resolve(value); } else { Promise.resolve(value).then(_next, _throw); } }\n\nfunction _asyncToGenerator(fn) { return function () { var self = this, args = arguments; return new Promise(function (resolve, reject) { var gen = fn.apply(self, args); function _next(value) { asyncGeneratorStep(gen, resolve, reject, _next, _throw, "next", value); } function _throw(err) { asyncGeneratorStep(gen, resolve, reject, _next, _throw, "throw", err); } _next(undefined); }); }; }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } }\n\nfunction _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); } }\n\nfunction _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; }\n\nfunction _possibleConstructorReturn(self, call) { if (call && (_typeof(call) === "object" || typeof call === "function")) { return call; } return _assertThisInitialized(self); }\n\nfunction _assertThisInitialized(self) { if (self === void 0) { throw new ReferenceError("this hasn\'t been initialised - super() hasn\'t been called"); } return self; }\n\nfunction _get(target, property, receiver) { if (typeof Reflect !== "undefined" && Reflect.get) { _get = Reflect.get; } else { _get = function _get(target, property, receiver) { var base = _superPropBase(target, property); if (!base) return; var desc = Object.getOwnPropertyDescriptor(base, property); if (desc.get) { return desc.get.call(receiver); } return desc.value; }; } return _get(target, property, receiver || target); }\n\nfunction _superPropBase(object, property) { while (!Object.prototype.hasOwnProperty.call(object, property)) { object = _getPrototypeOf(object); if (object === null) break; } return object; }\n\nfunction _getPrototypeOf(o) { _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function _getPrototypeOf(o) { return o.__proto__ || Object.getPrototypeOf(o); }; return _getPrototypeOf(o); }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== "function" && superClass !== null) { throw new TypeError("Super expression must either be null or a function"); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, writable: true, configurable: true } }); if (superClass) _setPrototypeOf(subClass, superClass); }\n\nfunction _setPrototypeOf(o, p) { _setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) { o.__proto__ = p; return o; }; return _setPrototypeOf(o, p); }\n\n\n\n\n\n\n\n\n\n/**\n * @deprecated\n * A legacy operator no longer used to generate new accounts.\n */\n\nvar SNProtocolOperator002 = /*#__PURE__*/function (_SNProtocolOperator) {\n _inherits(SNProtocolOperator002, _SNProtocolOperator);\n\n function SNProtocolOperator002() {\n _classCallCheck(this, SNProtocolOperator002);\n\n return _possibleConstructorReturn(this, _getPrototypeOf(SNProtocolOperator002).apply(this, arguments));\n }\n\n _createClass(SNProtocolOperator002, [{\n key: "generateNewItemsKeyContent",\n value: function () {\n var _generateNewItemsKeyContent = _asyncToGenerator( /*#__PURE__*/_babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0___default.a.mark(function _callee() {\n var keyLength, itemsKey, authKey, response;\n return _babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0___default.a.wrap(function _callee$(_context) {\n while (1) {\n switch (_context.prev = _context.next) {\n case 0:\n keyLength = _algorithms__WEBPACK_IMPORTED_MODULE_2__["V002Algorithm"].EncryptionKeyLength;\n _context.next = 3;\n return this.crypto.generateRandomKey(keyLength);\n\n case 3:\n itemsKey = _context.sent;\n _context.next = 6;\n return this.crypto.generateRandomKey(keyLength);\n\n case 6:\n authKey = _context.sent;\n response = {\n itemsKey: itemsKey,\n dataAuthenticationKey: authKey,\n version: this.version\n };\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 function generateNewItemsKeyContent() {\n return _generateNewItemsKeyContent.apply(this, arguments);\n }\n\n return generateNewItemsKeyContent;\n }()\n }, {\n key: "createRootKey",\n value: function () {\n var _createRootKey = _asyncToGenerator( /*#__PURE__*/_babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0___default.a.mark(function _callee2(identifier, password) {\n var pwCost, pwNonce, pwSalt, key, keyParams;\n return _babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0___default.a.wrap(function _callee2$(_context2) {\n while (1) {\n switch (_context2.prev = _context2.next) {\n case 0:\n pwCost = _algorithms__WEBPACK_IMPORTED_MODULE_2__["V002Algorithm"].PbkdfMinCost;\n _context2.next = 3;\n return this.crypto.generateRandomKey(_algorithms__WEBPACK_IMPORTED_MODULE_2__["V002Algorithm"].SaltSeedLength);\n\n case 3:\n pwNonce = _context2.sent;\n _context2.next = 6;\n return this.crypto.unsafeSha1(identifier + \':\' + pwNonce);\n\n case 6:\n pwSalt = _context2.sent;\n _context2.next = 9;\n return this.deriveKey(password, pwSalt, pwCost);\n\n case 9:\n key = _context2.sent;\n keyParams = Object(_Protocol_key_params__WEBPACK_IMPORTED_MODULE_3__["CreateKeyParams"])({\n email: identifier,\n pw_cost: pwCost,\n pw_nonce: pwNonce,\n pw_salt: pwSalt,\n version: this.version\n });\n return _context2.abrupt("return", {\n key: key,\n keyParams: keyParams\n });\n\n case 12:\n case "end":\n return _context2.stop();\n }\n }\n }, _callee2, this);\n }));\n\n function createRootKey(_x, _x2) {\n return _createRootKey.apply(this, arguments);\n }\n\n return createRootKey;\n }()\n /**\n * Note that version 002 supported "dynamic" iteration counts. Some accounts\n * may have had costs of 5000, and others of 101000. Therefore, when computing\n * the root key, we must use the value returned by the server.\n */\n\n }, {\n key: "computeRootKey",\n value: function () {\n var _computeRootKey = _asyncToGenerator( /*#__PURE__*/_babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0___default.a.mark(function _callee3(password, keyParams) {\n var key;\n return _babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0___default.a.wrap(function _callee3$(_context3) {\n while (1) {\n switch (_context3.prev = _context3.next) {\n case 0:\n _context3.next = 2;\n return this.deriveKey(password, keyParams.salt, keyParams.kdfIterations);\n\n case 2:\n key = _context3.sent;\n return _context3.abrupt("return", key);\n\n case 4:\n case "end":\n return _context3.stop();\n }\n }\n }, _callee3, this);\n }));\n\n function computeRootKey(_x3, _x4) {\n return _computeRootKey.apply(this, arguments);\n }\n\n return computeRootKey;\n }()\n }, {\n key: "decryptString002",\n value: function () {\n var _decryptString = _asyncToGenerator( /*#__PURE__*/_babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0___default.a.mark(function _callee4(text, key, iv) {\n return _babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0___default.a.wrap(function _callee4$(_context4) {\n while (1) {\n switch (_context4.prev = _context4.next) {\n case 0:\n return _context4.abrupt("return", this.crypto.aes256CbcDecrypt(text, iv, key));\n\n case 1:\n case "end":\n return _context4.stop();\n }\n }\n }, _callee4, this);\n }));\n\n function decryptString002(_x5, _x6, _x7) {\n return _decryptString.apply(this, arguments);\n }\n\n return decryptString002;\n }()\n }, {\n key: "encryptString002",\n value: function () {\n var _encryptString = _asyncToGenerator( /*#__PURE__*/_babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0___default.a.mark(function _callee5(text, key, iv) {\n return _babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0___default.a.wrap(function _callee5$(_context5) {\n while (1) {\n switch (_context5.prev = _context5.next) {\n case 0:\n return _context5.abrupt("return", this.crypto.aes256CbcEncrypt(text, iv, key));\n\n case 1:\n case "end":\n return _context5.stop();\n }\n }\n }, _callee5, this);\n }));\n\n function encryptString002(_x8, _x9, _x10) {\n return _encryptString.apply(this, arguments);\n }\n\n return encryptString002;\n }()\n }, {\n key: "encryptTextParams",\n value: function () {\n var _encryptTextParams = _asyncToGenerator( /*#__PURE__*/_babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0___default.a.mark(function _callee6(string, encryptionKey, authKey, uuid, version) {\n var iv, contentCiphertext, ciphertextToAuth, authHash, fullCiphertext;\n return _babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0___default.a.wrap(function _callee6$(_context6) {\n while (1) {\n switch (_context6.prev = _context6.next) {\n case 0:\n _context6.next = 2;\n return this.crypto.generateRandomKey(_algorithms__WEBPACK_IMPORTED_MODULE_2__["V002Algorithm"].EncryptionIvLength);\n\n case 2:\n iv = _context6.sent;\n _context6.next = 5;\n return this.encryptString002(string, encryptionKey, iv);\n\n case 5:\n contentCiphertext = _context6.sent;\n ciphertextToAuth = [version, uuid, iv, contentCiphertext].join(\':\');\n _context6.next = 9;\n return this.crypto.hmac256(ciphertextToAuth, authKey);\n\n case 9:\n authHash = _context6.sent;\n fullCiphertext = [version, authHash, uuid, iv, contentCiphertext].join(\':\');\n return _context6.abrupt("return", fullCiphertext);\n\n case 12:\n case "end":\n return _context6.stop();\n }\n }\n }, _callee6, this);\n }));\n\n function encryptTextParams(_x11, _x12, _x13, _x14, _x15) {\n return _encryptTextParams.apply(this, arguments);\n }\n\n return encryptTextParams;\n }()\n }, {\n key: "decryptTextParams",\n value: function () {\n var _decryptTextParams = _asyncToGenerator( /*#__PURE__*/_babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0___default.a.mark(function _callee7(ciphertextToAuth, contentCiphertext, encryptionKey, iv, authHash, authKey) {\n var localAuthHash;\n return _babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0___default.a.wrap(function _callee7$(_context7) {\n while (1) {\n switch (_context7.prev = _context7.next) {\n case 0:\n if (encryptionKey) {\n _context7.next = 2;\n break;\n }\n\n throw \'Attempting to decryptTextParams with null encryptionKey\';\n\n case 2:\n _context7.next = 4;\n return this.crypto.hmac256(ciphertextToAuth, authKey);\n\n case 4:\n localAuthHash = _context7.sent;\n\n if (!(this.crypto.timingSafeEqual(authHash, localAuthHash) === false)) {\n _context7.next = 8;\n break;\n }\n\n console.error(\'Auth hash does not match, returning null.\');\n return _context7.abrupt("return", null);\n\n case 8:\n return _context7.abrupt("return", this.decryptString002(contentCiphertext, encryptionKey, iv));\n\n case 9:\n case "end":\n return _context7.stop();\n }\n }\n }, _callee7, this);\n }));\n\n function decryptTextParams(_x16, _x17, _x18, _x19, _x20, _x21) {\n return _decryptTextParams.apply(this, arguments);\n }\n\n return decryptTextParams;\n }()\n }, {\n key: "generateEncryptedParameters",\n value: function () {\n var _generateEncryptedParameters = _asyncToGenerator( /*#__PURE__*/_babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0___default.a.mark(function _callee8(payload, format, key) {\n var itemKey, encItemKey, ek, ak, ciphertext;\n return _babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0___default.a.wrap(function _callee8$(_context8) {\n while (1) {\n switch (_context8.prev = _context8.next) {\n case 0:\n if (!(format === _Payloads_formats__WEBPACK_IMPORTED_MODULE_5__["PayloadFormat"].DecryptedBareObject || format === _Payloads_formats__WEBPACK_IMPORTED_MODULE_5__["PayloadFormat"].DecryptedBase64String)) {\n _context8.next = 2;\n break;\n }\n\n return _context8.abrupt("return", _get(_getPrototypeOf(SNProtocolOperator002.prototype), "generateEncryptedParameters", this).call(this, payload, format, key));\n\n case 2:\n if (!(format !== _Payloads_formats__WEBPACK_IMPORTED_MODULE_5__["PayloadFormat"].EncryptedString)) {\n _context8.next = 4;\n break;\n }\n\n throw "Unsupport format for generateEncryptedParameters ".concat(format);\n\n case 4:\n if (!(!key || !key.itemsKey)) {\n _context8.next = 6;\n break;\n }\n\n throw \'Attempting to generateEncryptedParameters with no itemsKey.\';\n\n case 6:\n _context8.next = 8;\n return this.crypto.generateRandomKey(_algorithms__WEBPACK_IMPORTED_MODULE_2__["V002Algorithm"].EncryptionKeyLength * 2);\n\n case 8:\n itemKey = _context8.sent;\n _context8.next = 11;\n return this.encryptTextParams(itemKey, key.itemsKey, key.dataAuthenticationKey, payload.uuid, key.version);\n\n case 11:\n encItemKey = _context8.sent;\n _context8.next = 14;\n return this.firstHalfOfKey(itemKey);\n\n case 14:\n ek = _context8.sent;\n _context8.next = 17;\n return this.secondHalfOfKey(itemKey);\n\n case 17:\n ak = _context8.sent;\n _context8.next = 20;\n return this.encryptTextParams(JSON.stringify(payload.content), ek, ak, payload.uuid, key.version);\n\n case 20:\n ciphertext = _context8.sent;\n return _context8.abrupt("return", Object(_Payloads_generator__WEBPACK_IMPORTED_MODULE_6__["CreateEncryptionParameters"])({\n uuid: payload.uuid,\n items_key_id: key instanceof _Models_app_items_key__WEBPACK_IMPORTED_MODULE_1__["SNItemsKey"] ? key.uuid : undefined,\n content: ciphertext,\n enc_item_key: encItemKey\n }));\n\n case 22:\n case "end":\n return _context8.stop();\n }\n }\n }, _callee8, this);\n }));\n\n function generateEncryptedParameters(_x22, _x23, _x24) {\n return _generateEncryptedParameters.apply(this, arguments);\n }\n\n return generateEncryptedParameters;\n }()\n }, {\n key: "generateDecryptedParameters",\n value: function () {\n var _generateDecryptedParameters = _asyncToGenerator( /*#__PURE__*/_babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0___default.a.mark(function _callee9(encryptedParameters, key) {\n var format, encryptedItemKey, itemKeyComponents, itemKey, ek, ak, itemParams, content, authParams;\n return _babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0___default.a.wrap(function _callee9$(_context9) {\n while (1) {\n switch (_context9.prev = _context9.next) {\n case 0:\n format = encryptedParameters.format;\n\n if (!(format === _Payloads_formats__WEBPACK_IMPORTED_MODULE_5__["PayloadFormat"].DecryptedBareObject || format === _Payloads_formats__WEBPACK_IMPORTED_MODULE_5__["PayloadFormat"].DecryptedBase64String)) {\n _context9.next = 3;\n break;\n }\n\n return _context9.abrupt("return", _get(_getPrototypeOf(SNProtocolOperator002.prototype), "generateDecryptedParameters", this).call(this, encryptedParameters, key));\n\n case 3:\n if (encryptedParameters.enc_item_key) {\n _context9.next = 6;\n break;\n }\n\n console.error(\'Missing item encryption key, skipping decryption.\');\n return _context9.abrupt("return", encryptedParameters);\n\n case 6:\n if (!(!key || !key.itemsKey)) {\n _context9.next = 8;\n break;\n }\n\n throw \'Attempting to generateDecryptedParameters with no itemsKey.\';\n\n case 8:\n /* Decrypt encrypted key */\n encryptedItemKey = encryptedParameters.enc_item_key;\n itemKeyComponents = this.encryptionComponentsFromString002(encryptedItemKey, key.itemsKey, key.dataAuthenticationKey);\n _context9.next = 12;\n return this.decryptTextParams(itemKeyComponents.ciphertextToAuth, itemKeyComponents.contentCiphertext, itemKeyComponents.encryptionKey, itemKeyComponents.iv, itemKeyComponents.authHash, itemKeyComponents.authKey);\n\n case 12:\n itemKey = _context9.sent;\n\n if (itemKey) {\n _context9.next = 16;\n break;\n }\n\n console.error(\'Error decrypting item_key parameters\', encryptedParameters);\n return _context9.abrupt("return", Object(_Payloads_generator__WEBPACK_IMPORTED_MODULE_6__["CopyEncryptionParameters"])(encryptedParameters, {\n errorDecrypting: true,\n errorDecryptingValueChanged: !encryptedParameters.errorDecrypting\n }));\n\n case 16:\n _context9.next = 18;\n return this.firstHalfOfKey(itemKey);\n\n case 18:\n ek = _context9.sent;\n _context9.next = 21;\n return this.secondHalfOfKey(itemKey);\n\n case 21:\n ak = _context9.sent;\n itemParams = this.encryptionComponentsFromString002(encryptedParameters.contentString, ek, ak);\n _context9.next = 25;\n return this.decryptTextParams(itemParams.ciphertextToAuth, itemParams.contentCiphertext, itemParams.encryptionKey, itemParams.iv, itemParams.authHash, itemParams.authKey);\n\n case 25:\n content = _context9.sent;\n\n if (content) {\n _context9.next = 30;\n break;\n }\n\n return _context9.abrupt("return", Object(_Payloads_generator__WEBPACK_IMPORTED_MODULE_6__["CopyEncryptionParameters"])(encryptedParameters, {\n errorDecrypting: true,\n errorDecryptingValueChanged: !encryptedParameters.errorDecrypting\n }));\n\n case 30:\n _context9.prev = 30;\n _context9.t0 = JSON;\n _context9.next = 34;\n return this.crypto.base64Decode(itemParams.authParams);\n\n case 34:\n _context9.t1 = _context9.sent;\n authParams = _context9.t0.parse.call(_context9.t0, _context9.t1);\n _context9.next = 40;\n break;\n\n case 38:\n _context9.prev = 38;\n _context9.t2 = _context9["catch"](30);\n\n case 40:\n return _context9.abrupt("return", Object(_Payloads_generator__WEBPACK_IMPORTED_MODULE_6__["CopyEncryptionParameters"])(encryptedParameters, {\n content: JSON.parse(content),\n items_key_id: undefined,\n enc_item_key: undefined,\n auth_params: authParams,\n errorDecrypting: false,\n errorDecryptingValueChanged: encryptedParameters.errorDecrypting === true,\n waitingForKey: false\n }));\n\n case 41:\n case "end":\n return _context9.stop();\n }\n }\n }, _callee9, this, [[30, 38]]);\n }));\n\n function generateDecryptedParameters(_x25, _x26) {\n return _generateDecryptedParameters.apply(this, arguments);\n }\n\n return generateDecryptedParameters;\n }()\n }, {\n key: "deriveKey",\n value: function () {\n var _deriveKey = _asyncToGenerator( /*#__PURE__*/_babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0___default.a.mark(function _callee10(password, pwSalt, pwCost) {\n var derivedKey, partitions, key;\n return _babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0___default.a.wrap(function _callee10$(_context10) {\n while (1) {\n switch (_context10.prev = _context10.next) {\n case 0:\n _context10.next = 2;\n return this.crypto.pbkdf2(password, pwSalt, pwCost, _algorithms__WEBPACK_IMPORTED_MODULE_2__["V002Algorithm"].PbkdfOutputLength);\n\n case 2:\n derivedKey = _context10.sent;\n _context10.next = 5;\n return this.splitKey(derivedKey, 3);\n\n case 5:\n partitions = _context10.sent;\n _context10.next = 8;\n return _Protocol_root_key__WEBPACK_IMPORTED_MODULE_8__["SNRootKey"].Create({\n serverPassword: partitions[0],\n masterKey: partitions[1],\n dataAuthenticationKey: partitions[2],\n version: this.version\n });\n\n case 8:\n key = _context10.sent;\n return _context10.abrupt("return", key);\n\n case 10:\n case "end":\n return _context10.stop();\n }\n }\n }, _callee10, this);\n }));\n\n function deriveKey(_x27, _x28, _x29) {\n return _deriveKey.apply(this, arguments);\n }\n\n return deriveKey;\n }()\n }, {\n key: "encryptionComponentsFromString002",\n value: function encryptionComponentsFromString002(string, encryptionKey, authKey) {\n var components = string.split(\':\');\n return {\n encryptionVersion: components[0],\n authHash: components[1],\n uuid: components[2],\n iv: components[3],\n contentCiphertext: components[4],\n authParams: components[5],\n ciphertextToAuth: [components[0], components[2], components[3], components[4]].join(\':\'),\n encryptionKey: encryptionKey,\n authKey: authKey\n };\n }\n }, {\n key: "version",\n get: function get() {\n return _Protocol_versions__WEBPACK_IMPORTED_MODULE_7__["ProtocolVersion"].V002;\n }\n }]);\n\n return SNProtocolOperator002;\n}(_Protocol_operator_001_operator_001__WEBPACK_IMPORTED_MODULE_4__["SNProtocolOperator001"]);//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9saWIvcHJvdG9jb2wvb3BlcmF0b3IvMDAyL29wZXJhdG9yXzAwMi50cy5qcyIsInNvdXJjZXMiOlsid2VicGFjazovL1NOTGlicmFyeS8uL2xpYi9wcm90b2NvbC9vcGVyYXRvci8wMDIvb3BlcmF0b3JfMDAyLnRzPzE3NDIiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgU05JdGVtc0tleSB9IGZyb20gJ0BNb2RlbHMvYXBwL2l0ZW1zX2tleSc7XG5pbXBvcnQgeyBWMDAyQWxnb3JpdGhtIH0gZnJvbSAnLi8uLi9hbGdvcml0aG1zJztcbmltcG9ydCB7IENyZWF0ZUtleVBhcmFtcyB9IGZyb20gJ0BQcm90b2NvbC9rZXlfcGFyYW1zJztcbmltcG9ydCB7IFNOUHJvdG9jb2xPcGVyYXRvcjAwMSB9IGZyb20gJ0BQcm90b2NvbC9vcGVyYXRvci8wMDEvb3BlcmF0b3JfMDAxJztcbmltcG9ydCB7IFBheWxvYWRGb3JtYXQgfSBmcm9tICdAUGF5bG9hZHMvZm9ybWF0cyc7XG5pbXBvcnQgeyBDcmVhdGVFbmNyeXB0aW9uUGFyYW1ldGVycywgQ29weUVuY3J5cHRpb25QYXJhbWV0ZXJzIH0gZnJvbSAnQFBheWxvYWRzL2dlbmVyYXRvcic7XG5pbXBvcnQgeyBQcm90b2NvbFZlcnNpb24gfSBmcm9tICdAUHJvdG9jb2wvdmVyc2lvbnMnO1xuaW1wb3J0IHsgU05Sb290S2V5IH0gZnJvbSAnQFByb3RvY29sL3Jvb3Rfa2V5Jztcbi8qKlxuICogQGRlcHJlY2F0ZWRcbiAqIEEgbGVnYWN5IG9wZXJhdG9yIG5vIGxvbmdlciB1c2VkIHRvIGdlbmVyYXRlIG5ldyBhY2NvdW50cy5cbiAqL1xuZXhwb3J0IGNsYXNzIFNOUHJvdG9jb2xPcGVyYXRvcjAwMiBleHRlbmRzIFNOUHJvdG9jb2xPcGVyYXRvcjAwMSB7XG4gICAgZ2V0IHZlcnNpb24oKSB7XG4gICAgICAgIHJldHVybiBQcm90b2NvbFZlcnNpb24uVjAwMjtcbiAgICB9XG4gICAgYXN5bmMgZ2VuZXJhdGVOZXdJdGVtc0tleUNvbnRlbnQoKSB7XG4gICAgICAgIGNvbnN0IGtleUxlbmd0aCA9IFYwMDJBbGdvcml0aG0uRW5jcnlwdGlvbktleUxlbmd0aDtcbiAgICAgICAgY29uc3QgaXRlbXNLZXkgPSBhd2FpdCB0aGlzLmNyeXB0by5nZW5lcmF0ZVJhbmRvbUtleShrZXlMZW5ndGgpO1xuICAgICAgICBjb25zdCBhdXRoS2V5ID0gYXdhaXQgdGhpcy5jcnlwdG8uZ2VuZXJhdGVSYW5kb21LZXkoa2V5TGVuZ3RoKTtcbiAgICAgICAgY29uc3QgcmVzcG9uc2UgPSB7XG4gICAgICAgICAgICBpdGVtc0tleTogaXRlbXNLZXksXG4gICAgICAgICAgICBkYXRhQXV0aGVudGljYXRpb25LZXk6IGF1dGhLZXksXG4gICAgICAgICAgICB2ZXJzaW9uOiB0aGlzLnZlcnNpb25cbiAgICAgICAgfTtcbiAgICAgICAgcmV0dXJuIHJlc3BvbnNlO1xuICAgIH1cbiAgICBhc3luYyBjcmVhdGVSb290S2V5KGlkZW50aWZpZXIsIHBhc3N3b3JkKSB7XG4gICAgICAgIGNvbnN0IHB3Q29zdCA9IFYwMDJBbGdvcml0aG0uUGJrZGZNaW5Db3N0O1xuICAgICAgICBjb25zdCBwd05vbmNlID0gYXdhaXQgdGhpcy5jcnlwdG8uZ2VuZXJhdGVSYW5kb21LZXkoVjAwMkFsZ29yaXRobS5TYWx0U2VlZExlbmd0aCk7XG4gICAgICAgIGNvbnN0IHB3U2FsdCA9IGF3YWl0IHRoaXMuY3J5cHRvLnVuc2FmZVNoYTEoaWRlbnRpZmllciArICc6JyArIHB3Tm9uY2UpO1xuICAgICAgICBjb25zdCBrZXkgPSBhd2FpdCB0aGlzLmRlcml2ZUtleShwYXNzd29yZCwgcHdTYWx0LCBwd0Nvc3QpO1xuICAgICAgICBjb25zdCBrZXlQYXJhbXMgPSBDcmVhdGVLZXlQYXJhbXMoe1xuICAgICAgICAgICAgZW1haWw6IGlkZW50aWZpZXIsXG4gICAgICAgICAgICBwd19jb3N0OiBwd0Nvc3QsXG4gICAgICAgICAgICBwd19ub25jZTogcHdOb25jZSxcbiAgICAgICAgICAgIHB3X3NhbHQ6IHB3U2FsdCxcbiAgICAgICAgICAgIHZlcnNpb246IHRoaXMudmVyc2lvblxuICAgICAgICB9KTtcbiAgICAgICAgcmV0dXJuIHsga2V5LCBrZXlQYXJhbXMgfTtcbiAgICB9XG4gICAgLyoqXG4gICAgICogTm90ZSB0aGF0IHZlcnNpb24gMDAyIHN1cHBvcnRlZCBcImR5bmFtaWNcIiBpdGVyYXRpb24gY291bnRzLiBTb21lIGFjY291bnRzXG4gICAgICogbWF5IGhhdmUgaGFkIGNvc3RzIG9mIDUwMDAsIGFuZCBvdGhlcnMgb2YgMTAxMDAwLiBUaGVyZWZvcmUsIHdoZW4gY29tcHV0aW5nXG4gICAgICogdGhlIHJvb3Qga2V5LCB3ZSBtdXN0IHVzZSB0aGUgdmFsdWUgcmV0dXJuZWQgYnkgdGhlIHNlcnZlci5cbiAgICAgKi9cbiAgICBhc3luYyBjb21wdXRlUm9vdEtleShwYXNzd29yZCwga2V5UGFyYW1zKSB7XG4gICAgICAgIC8qIFNhbHQgaXMgcmV0dXJuZWQgZnJvbSBzZXJ2ZXIgKi9cbiAgICAgICAgY29uc3Qga2V5ID0gYXdhaXQgdGhpcy5kZXJpdmVLZXkocGFzc3dvcmQsIGtleVBhcmFtcy5zYWx0LCBrZXlQYXJhbXMua2RmSXRlcmF0aW9ucyk7XG4gICAgICAgIHJldHVybiBrZXk7XG4gICAgfVxuICAgIGFzeW5jIGRlY3J5cHRTdHJpbmcwMDIodGV4dCwga2V5LCBpdikge1xuICAgICAgICByZXR1cm4gdGhpcy5jcnlwdG8uYWVzMjU2Q2JjRGVjcnlwdCh0ZXh0LCBpdiwga2V5KTtcbiAgICB9XG4gICAgYXN5bmMgZW5jcnlwdFN0cmluZzAwMih0ZXh0LCBrZXksIGl2KSB7XG4gICAgICAgIHJldHVybiB0aGlzLmNyeXB0by5hZXMyNTZDYmNFbmNyeXB0KHRleHQsIGl2LCBrZXkpO1xuICAgIH1cbiAgICBhc3luYyBlbmNyeXB0VGV4dFBhcmFtcyhzdHJpbmcsIGVuY3J5cHRpb25LZXksIGF1dGhLZXksIHV1aWQsIHZlcnNpb24pIHtcbiAgICAgICAgY29uc3QgaXYgPSBhd2FpdCB0aGlzLmNyeXB0by5nZW5lcmF0ZVJhbmRvbUtleShWMDAyQWxnb3JpdGhtLkVuY3J5cHRpb25Jdkxlbmd0aCk7XG4gICAgICAgIGNvbnN0IGNvbnRlbnRDaXBoZXJ0ZXh0ID0gYXdhaXQgdGhpcy5lbmNyeXB0U3RyaW5nMDAyKHN0cmluZywgZW5jcnlwdGlvbktleSwgaXYpO1xuICAgICAgICBjb25zdCBjaXBoZXJ0ZXh0VG9BdXRoID0gW3ZlcnNpb24sIHV1aWQsIGl2LCBjb250ZW50Q2lwaGVydGV4dF0uam9pbignOicpO1xuICAgICAgICBjb25zdCBhdXRoSGFzaCA9IGF3YWl0IHRoaXMuY3J5cHRvLmhtYWMyNTYoY2lwaGVydGV4dFRvQXV0aCwgYXV0aEtleSk7XG4gICAgICAgIGNvbnN0IGZ1bGxDaXBoZXJ0ZXh0ID0gW3ZlcnNpb24sIGF1dGhIYXNoLCB1dWlkLCBpdiwgY29udGVudENpcGhlcnRleHRdLmpvaW4oJzonKTtcbiAgICAgICAgcmV0dXJuIGZ1bGxDaXBoZXJ0ZXh0O1xuICAgIH1cbiAgICBhc3luYyBkZWNyeXB0VGV4dFBhcmFtcyhjaXBoZXJ0ZXh0VG9BdXRoLCBjb250ZW50Q2lwaGVydGV4dCwgZW5jcnlwdGlvbktleSwgaXYsIGF1dGhIYXNoLCBhdXRoS2V5KSB7XG4gICAgICAgIGlmICghZW5jcnlwdGlvbktleSkge1xuICAgICAgICAgICAgdGhyb3cgJ0F0dGVtcHRpbmcgdG8gZGVjcnlwdFRleHRQYXJhbXMgd2l0aCBudWxsIGVuY3J5cHRpb25LZXknO1xuICAgICAgICB9XG4gICAgICAgIGNvbnN0IGxvY2FsQXV0aEhhc2ggPSBhd2FpdCB0aGlzLmNyeXB0by5obWFjMjU2KGNpcGhlcnRleHRUb0F1dGgsIGF1dGhLZXkpO1xuICAgICAgICBpZiAodGhpcy5jcnlwdG8udGltaW5nU2FmZUVxdWFsKGF1dGhIYXNoLCBsb2NhbEF1dGhIYXNoKSA9PT0gZmFsc2UpIHtcbiAgICAgICAgICAgIGNvbnNvbGUuZXJyb3IoJ0F1dGggaGFzaCBkb2VzIG5vdCBtYXRjaCwgcmV0dXJuaW5nIG51bGwuJyk7XG4gICAgICAgICAgICByZXR1cm4gbnVsbDtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gdGhpcy5kZWNyeXB0U3RyaW5nMDAyKGNvbnRlbnRDaXBoZXJ0ZXh0LCBlbmNyeXB0aW9uS2V5LCBpdik7XG4gICAgfVxuICAgIGFzeW5jIGdlbmVyYXRlRW5jcnlwdGVkUGFyYW1ldGVycyhwYXlsb2FkLCBmb3JtYXQsIGtleSkge1xuICAgICAgICBpZiAoKGZvcm1hdCA9PT0gUGF5bG9hZEZvcm1hdC5EZWNyeXB0ZWRCYXJlT2JqZWN0IHx8XG4gICAgICAgICAgICBmb3JtYXQgPT09IFBheWxvYWRGb3JtYXQuRGVjcnlwdGVkQmFzZTY0U3RyaW5nKSkge1xuICAgICAgICAgICAgcmV0dXJuIHN1cGVyLmdlbmVyYXRlRW5jcnlwdGVkUGFyYW1ldGVycyhwYXlsb2FkLCBmb3JtYXQsIGtleSk7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKGZvcm1hdCAhPT0gUGF5bG9hZEZvcm1hdC5FbmNyeXB0ZWRTdHJpbmcpIHtcbiAgICAgICAgICAgIHRocm93IGBVbnN1cHBvcnQgZm9ybWF0IGZvciBnZW5lcmF0ZUVuY3J5cHRlZFBhcmFtZXRlcnMgJHtmb3JtYXR9YDtcbiAgICAgICAgfVxuICAgICAgICBpZiAoIWtleSB8fCAha2V5Lml0ZW1zS2V5KSB7XG4gICAgICAgICAgICB0aHJvdyAnQXR0ZW1wdGluZyB0byBnZW5lcmF0ZUVuY3J5cHRlZFBhcmFtZXRlcnMgd2l0aCBubyBpdGVtc0tleS4nO1xuICAgICAgICB9XG4gICAgICAgIC8qKlxuICAgICAgICAgKiBHZW5lcmF0ZSBuZXcgaXRlbSBrZXkgdGhhdCBpcyBkb3VibGUgdGhlIGtleSBzaXplLlxuICAgICAgICAgKiBXaWxsIGJlIHNwbGl0IHRvIGNyZWF0ZSBlbmNyeXB0aW9uIGtleSBhbmQgYXV0aGVudGljYXRpb24ga2V5LlxuICAgICAgICAgKi9cbiAgICAgICAgY29uc3QgaXRlbUtleSA9IGF3YWl0IHRoaXMuY3J5cHRvLmdlbmVyYXRlUmFuZG9tS2V5KFYwMDJBbGdvcml0aG0uRW5jcnlwdGlvbktleUxlbmd0aCAqIDIpO1xuICAgICAgICBjb25zdCBlbmNJdGVtS2V5ID0gYXdhaXQgdGhpcy5lbmNyeXB0VGV4dFBhcmFtcyhpdGVtS2V5LCBrZXkuaXRlbXNLZXksIGtleS5kYXRhQXV0aGVudGljYXRpb25LZXksIHBheWxvYWQudXVpZCwga2V5LnZlcnNpb24pO1xuICAgICAgICAvKiogRW5jcnlwdCBjb250ZW50ICovXG4gICAgICAgIGNvbnN0IGVrID0gYXdhaXQgdGhpcy5maXJzdEhhbGZPZktleShpdGVtS2V5KTtcbiAgICAgICAgY29uc3QgYWsgPSBhd2FpdCB0aGlzLnNlY29uZEhhbGZPZktleShpdGVtS2V5KTtcbiAgICAgICAgY29uc3QgY2lwaGVydGV4dCA9IGF3YWl0IHRoaXMuZW5jcnlwdFRleHRQYXJhbXMoSlNPTi5zdHJpbmdpZnkocGF5bG9hZC5jb250ZW50KSwgZWssIGFrLCBwYXlsb2FkLnV1aWQsIGtleS52ZXJzaW9uKTtcbiAgICAgICAgcmV0dXJuIENyZWF0ZUVuY3J5cHRpb25QYXJhbWV0ZXJzKHtcbiAgICAgICAgICAgIHV1aWQ6IHBheWxvYWQudXVpZCxcbiAgICAgICAgICAgIGl0ZW1zX2tleV9pZDoga2V5IGluc3RhbmNlb2YgU05JdGVtc0tleSA/IGtleS51dWlkIDogdW5kZWZpbmVkLFxuICAgICAgICAgICAgY29udGVudDogY2lwaGVydGV4dCxcbiAgICAgICAgICAgIGVuY19pdGVtX2tleTogZW5jSXRlbUtleVxuICAgICAgICB9KTtcbiAgICB9XG4gICAgYXN5bmMgZ2VuZXJhdGVEZWNyeXB0ZWRQYXJhbWV0ZXJzKGVuY3J5cHRlZFBhcmFtZXRlcnMsIGtleSkge1xuICAgICAgICBjb25zdCBmb3JtYXQgPSBlbmNyeXB0ZWRQYXJhbWV0ZXJzLmZvcm1hdDtcbiAgICAgICAgaWYgKChmb3JtYXQgPT09IFBheWxvYWRGb3JtYXQuRGVjcnlwdGVkQmFyZU9iamVjdCB8fFxuICAgICAgICAgICAgZm9ybWF0ID09PSBQYXlsb2FkRm9ybWF0LkRlY3J5cHRlZEJhc2U2NFN0cmluZykpIHtcbiAgICAgICAgICAgIHJldHVybiBzdXBlci5nZW5lcmF0ZURlY3J5cHRlZFBhcmFtZXRlcnMoZW5jcnlwdGVkUGFyYW1ldGVycywga2V5KTtcbiAgICAgICAgfVxuICAgICAgICBpZiAoIWVuY3J5cHRlZFBhcmFtZXRlcnMuZW5jX2l0ZW1fa2V5KSB7XG4gICAgICAgICAgICBjb25zb2xlLmVycm9yKCdNaXNzaW5nIGl0ZW0gZW5jcnlwdGlvbiBrZXksIHNraXBwaW5nIGRlY3J5cHRpb24uJyk7XG4gICAgICAgICAgICByZXR1cm4gZW5jcnlwdGVkUGFyYW1ldGVycztcbiAgICAgICAgfVxuICAgICAgICBpZiAoIWtleSB8fCAha2V5Lml0ZW1zS2V5KSB7XG4gICAgICAgICAgICB0aHJvdyAnQXR0ZW1wdGluZyB0byBnZW5lcmF0ZURlY3J5cHRlZFBhcmFtZXRlcnMgd2l0aCBubyBpdGVtc0tleS4nO1xuICAgICAgICB9XG4gICAgICAgIC8qIERlY3J5cHQgZW5jcnlwdGVkIGtleSAqL1xuICAgICAgICBjb25zdCBlbmNyeXB0ZWRJdGVtS2V5ID0gZW5jcnlwdGVkUGFyYW1ldGVycy5lbmNfaXRlbV9rZXk7XG4gICAgICAgIGNvbnN0IGl0ZW1LZXlDb21wb25lbnRzID0gdGhpcy5lbmNyeXB0aW9uQ29tcG9uZW50c0Zyb21TdHJpbmcwMDIoZW5jcnlwdGVkSXRlbUtleSwga2V5Lml0ZW1zS2V5LCBrZXkuZGF0YUF1dGhlbnRpY2F0aW9uS2V5KTtcbiAgICAgICAgY29uc3QgaXRlbUtleSA9IGF3YWl0IHRoaXMuZGVjcnlwdFRleHRQYXJhbXMoaXRlbUtleUNvbXBvbmVudHMuY2lwaGVydGV4dFRvQXV0aCwgaXRlbUtleUNvbXBvbmVudHMuY29udGVudENpcGhlcnRleHQsIGl0ZW1LZXlDb21wb25lbnRzLmVuY3J5cHRpb25LZXksIGl0ZW1LZXlDb21wb25lbnRzLml2LCBpdGVtS2V5Q29tcG9uZW50cy5hdXRoSGFzaCwgaXRlbUtleUNvbXBvbmVudHMuYXV0aEtleSk7XG4gICAgICAgIGlmICghaXRlbUtleSkge1xuICAgICAgICAgICAgY29uc29sZS5lcnJvcignRXJyb3IgZGVjcnlwdGluZyBpdGVtX2tleSBwYXJhbWV0ZXJzJywgZW5jcnlwdGVkUGFyYW1ldGVycyk7XG4gICAgICAgICAgICByZXR1cm4gQ29weUVuY3J5cHRpb25QYXJhbWV0ZXJzKGVuY3J5cHRlZFBhcmFtZXRlcnMsIHtcbiAgICAgICAgICAgICAgICBlcnJvckRlY3J5cHRpbmc6IHRydWUsXG4gICAgICAgICAgICAgICAgZXJyb3JEZWNyeXB0aW5nVmFsdWVDaGFuZ2VkOiAhZW5jcnlwdGVkUGFyYW1ldGVycy5lcnJvckRlY3J5cHRpbmdcbiAgICAgICAgICAgIH0pO1xuICAgICAgICB9XG4gICAgICAgIC8qIERlY3J5cHQgY29udGVudCAqL1xuICAgICAgICBjb25zdCBlayA9IGF3YWl0IHRoaXMuZmlyc3RIYWxmT2ZLZXkoaXRlbUtleSk7XG4gICAgICAgIGNvbnN0IGFrID0gYXdhaXQgdGhpcy5zZWNvbmRIYWxmT2ZLZXkoaXRlbUtleSk7XG4gICAgICAgIGNvbnN0IGl0ZW1QYXJhbXMgPSB0aGlzLmVuY3J5cHRpb25Db21wb25lbnRzRnJvbVN0cmluZzAwMihlbmNyeXB0ZWRQYXJhbWV0ZXJzLmNvbnRlbnRTdHJpbmcsIGVrLCBhayk7XG4gICAgICAgIGNvbnN0IGNvbnRlbnQgPSBhd2FpdCB0aGlzLmRlY3J5cHRUZXh0UGFyYW1zKGl0ZW1QYXJhbXMuY2lwaGVydGV4dFRvQXV0aCwgaXRlbVBhcmFtcy5jb250ZW50Q2lwaGVydGV4dCwgaXRlbVBhcmFtcy5lbmNyeXB0aW9uS2V5LCBpdGVtUGFyYW1zLml2LCBpdGVtUGFyYW1zLmF1dGhIYXNoLCBpdGVtUGFyYW1zLmF1dGhLZXkpO1xuICAgICAgICBpZiAoIWNvbnRlbnQpIHtcbiAgICAgICAgICAgIHJldHVybiBDb3B5RW5jcnlwdGlvblBhcmFtZXRlcnMoZW5jcnlwdGVkUGFyYW1ldGVycywge1xuICAgICAgICAgICAgICAgIGVycm9yRGVjcnlwdGluZzogdHJ1ZSxcbiAgICAgICAgICAgICAgICBlcnJvckRlY3J5cHRpbmdWYWx1ZUNoYW5nZWQ6ICFlbmNyeXB0ZWRQYXJhbWV0ZXJzLmVycm9yRGVjcnlwdGluZ1xuICAgICAgICAgICAgfSk7XG4gICAgICAgIH1cbiAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICBsZXQgYXV0aFBhcmFtcztcbiAgICAgICAgICAgIHRyeSB7XG4gICAgICAgICAgICAgICAgYXV0aFBhcmFtcyA9IEpTT04ucGFyc2UoYXdhaXQgdGhpcy5jcnlwdG8uYmFzZTY0RGVjb2RlKGl0ZW1QYXJhbXMuYXV0aFBhcmFtcykpO1xuICAgICAgICAgICAgICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBuby1lbXB0eVxuICAgICAgICAgICAgfVxuICAgICAgICAgICAgY2F0Y2ggKGUpIHsgfVxuICAgICAgICAgICAgcmV0dXJuIENvcHlFbmNyeXB0aW9uUGFyYW1ldGVycyhlbmNyeXB0ZWRQYXJhbWV0ZXJzLCB7XG4gICAgICAgICAgICAgICAgY29udGVudDogSlNPTi5wYXJzZShjb250ZW50KSxcbiAgICAgICAgICAgICAgICBpdGVtc19rZXlfaWQ6IHVuZGVmaW5lZCxcbiAgICAgICAgICAgICAgICBlbmNfaXRlbV9rZXk6IHVuZGVmaW5lZCxcbiAgICAgICAgICAgICAgICBhdXRoX3BhcmFtczogYXV0aFBhcmFtcyxcbiAgICAgICAgICAgICAgICBlcnJvckRlY3J5cHRpbmc6IGZhbHNlLFxuICAgICAgICAgICAgICAgIGVycm9yRGVjcnlwdGluZ1ZhbHVlQ2hhbmdlZDogZW5jcnlwdGVkUGFyYW1ldGVycy5lcnJvckRlY3J5cHRpbmcgPT09IHRydWUsXG4gICAgICAgICAgICAgICAgd2FpdGluZ0ZvcktleTogZmFsc2UsXG4gICAgICAgICAgICB9KTtcbiAgICAgICAgfVxuICAgIH1cbiAgICBhc3luYyBkZXJpdmVLZXkocGFzc3dvcmQsIHB3U2FsdCwgcHdDb3N0KSB7XG4gICAgICAgIGNvbnN0IGRlcml2ZWRLZXkgPSBhd2FpdCB0aGlzLmNyeXB0by5wYmtkZjIocGFzc3dvcmQsIHB3U2FsdCwgcHdDb3N0LCBWMDAyQWxnb3JpdGhtLlBia2RmT3V0cHV0TGVuZ3RoKTtcbiAgICAgICAgY29uc3QgcGFydGl0aW9ucyA9IGF3YWl0IHRoaXMuc3BsaXRLZXkoZGVyaXZlZEtleSwgMyk7XG4gICAgICAgIGNvbnN0IGtleSA9IGF3YWl0IFNOUm9vdEtleS5DcmVhdGUoe1xuICAgICAgICAgICAgc2VydmVyUGFzc3dvcmQ6IHBhcnRpdGlvbnNbMF0sXG4gICAgICAgICAgICBtYXN0ZXJLZXk6IHBhcnRpdGlvbnNbMV0sXG4gICAgICAgICAgICBkYXRhQXV0aGVudGljYXRpb25LZXk6IHBhcnRpdGlvbnNbMl0sXG4gICAgICAgICAgICB2ZXJzaW9uOiB0aGlzLnZlcnNpb25cbiAgICAgICAgfSk7XG4gICAgICAgIHJldHVybiBrZXk7XG4gICAgfVxuICAgIGVuY3J5cHRpb25Db21wb25lbnRzRnJvbVN0cmluZzAwMihzdHJpbmcsIGVuY3J5cHRpb25LZXksIGF1dGhLZXkpIHtcbiAgICAgICAgY29uc3QgY29tcG9uZW50cyA9IHN0cmluZy5zcGxpdCgnOicpO1xuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgZW5jcnlwdGlvblZlcnNpb246IGNvbXBvbmVudHNbMF0sXG4gICAgICAgICAgICBhdXRoSGFzaDogY29tcG9uZW50c1sxXSxcbiAgICAgICAgICAgIHV1aWQ6IGNvbXBvbmVudHNbMl0sXG4gICAgICAgICAgICBpdjogY29tcG9uZW50c1szXSxcbiAgICAgICAgICAgIGNvbnRlbnRDaXBoZXJ0ZXh0OiBjb21wb25lbnRzWzRdLFxuICAgICAgICAgICAgYXV0aFBhcmFtczogY29tcG9uZW50c1s1XSxcbiAgICAgICAgICAgIGNpcGhlcnRleHRUb0F1dGg6IFtcbiAgICAgICAgICAgICAgICBjb21wb25lbnRzWzBdLFxuICAgICAgICAgICAgICAgIGNvbXBvbmVudHNbMl0sXG4gICAgICAgICAgICAgICAgY29tcG9uZW50c1szXSxcbiAgICAgICAgICAgICAgICBjb21wb25lbnRzWzRdXG4gICAgICAgICAgICBdLmpvaW4oJzonKSxcbiAgICAgICAgICAgIGVuY3J5cHRpb25LZXk6IGVuY3J5cHRpb25LZXksXG4gICAgICAgICAgICBhdXRoS2V5OiBhdXRoS2V5LFxuICAgICAgICB9O1xuICAgIH1cbn1cbiJdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7Ozs7QUFJQTtBQUFBO0FBQ0E7QUFEQTtBQUFBO0FBQ0E7QUFEQTtBQUFBO0FBQ0E7QUFEQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFLQTtBQUxBO0FBQUE7QUFDQTtBQURBO0FBTUE7QUFOQTtBQUFBO0FBQ0E7QUFEQTtBQU9BO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFIQTtBQVJBO0FBQ0E7QUFEQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUNBO0FBREE7QUFBQTtBQUFBO0FBQ0E7QUFEQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBZ0JBO0FBaEJBO0FBQUE7QUFDQTtBQURBO0FBaUJBO0FBakJBO0FBQUE7QUFDQTtBQURBO0FBa0JBO0FBbEJBO0FBQUE7QUFDQTtBQURBO0FBbUJBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBTEE7QUFwQkE7QUEyQkE7QUFBQTtBQUFBO0FBQ0E7QUE1QkE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFDQTtBQURBO0FBQUE7QUFBQTtBQUNBO0FBREE7QUFBQTtBQTZCQTs7Ozs7O0FBN0JBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFDQTtBQURBO0FBb0NBO0FBcENBO0FBQ0E7QUFEQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUNBO0FBREE7QUFBQTtBQUFBO0FBQ0E7QUFEQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQ0E7QUFEQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUNBO0FBREE7QUFBQTtBQUFBO0FBQ0E7QUFEQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQ0E7QUFEQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUNBO0FBREE7QUFBQTtBQUFBO0FBQ0E7QUFEQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUNBO0FBREE7QUE4Q0E7QUE5Q0E7QUFBQTtBQUNBO0FBREE7QUErQ0E7QUFDQTtBQWhEQTtBQUFBO0FBQ0E7QUFEQTtBQWlEQTtBQUNBO0FBbERBO0FBQ0E7QUFEQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUNBO0FBREE7QUFBQTtBQUFBO0FBQ0E7QUFEQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFDQTtBQURBO0FBQ0E7QUFEQTtBQUFBO0FBQUE7QUFDQTtBQURBO0FBeURBO0FBQ0E7QUExREE7QUFBQTtBQUFBO0FBQUE7QUFDQTtBQTBEQTtBQTNEQTtBQUNBO0FBREE7QUFBQTtBQUNBO0FBREE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFDQTtBQURBO0FBQUE7QUFBQTtBQUNBO0FBREE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQ0E7QUFEQTtBQUNBO0FBREE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUNBO0FBREE7QUFDQTtBQURBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFDQTtBQURBO0FBQ0E7QUFEQTtBQUFBO0FBQUE7QUFDQTtBQURBO0FBK0VBO0FBL0VBO0FBQUE7QUFDQTtBQURBO0FBZ0ZBO0FBaEZBO0FBQUE7QUFDQTtBQURBO0FBa0ZBO0FBbEZBO0FBQUE7QUFDQTtBQURBO0FBbUZBO0FBbkZBO0FBQUE7QUFDQTtBQURBO0FBb0ZBO0FBcEZBO0FBc0ZBO0FBQ0E7QUFDQTtBQUNBO0FBSkE7QUFDQTtBQXRGQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUNBO0FBREE7QUFBQTtBQUFBO0FBQ0E7QUFEQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBNkZBO0FBQ0E7QUE5RkE7QUFBQTtBQUFBO0FBQUE7QUFDQTtBQURBO0FBQ0E7QUFEQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQ0E7QUFrR0E7QUFuR0E7QUFDQTtBQURBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFDQTtBQURBO0FBQ0E7QUFEQTtBQXlHQTtBQUNBO0FBQ0E7QUEzR0E7QUFBQTtBQUNBO0FBREE7QUE0R0E7QUFDQTtBQTdHQTtBQUFBO0FBQUE7QUFBQTtBQUNBO0FBNkdBO0FBOUdBO0FBZ0hBO0FBQ0E7QUFGQTtBQUNBO0FBaEhBO0FBQUE7QUFBQTtBQUNBO0FBREE7QUFxSEE7QUFySEE7QUFBQTtBQUNBO0FBREE7QUFzSEE7QUFDQTtBQXZIQTtBQUFBO0FBQ0E7QUFEQTtBQXdIQTtBQUNBO0FBekhBO0FBQUE7QUFBQTtBQUFBO0FBQ0E7QUFEQTtBQTJIQTtBQUNBO0FBRkE7QUFDQTtBQTNIQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQ0E7QUFEQTtBQUFBO0FBa0lBO0FBbElBO0FBQUE7QUFDQTtBQURBO0FBQUE7QUFBQTtBQUNBO0FBREE7QUFBQTtBQXVJQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQVBBO0FBQ0E7QUF2SUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFDQTtBQURBO0FBQUE7QUFBQTtBQUNBO0FBREE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFDQTtBQURBO0FBa0pBO0FBbEpBO0FBQUE7QUFDQTtBQURBO0FBbUpBO0FBbkpBO0FBQUE7QUFxSkE7QUFDQTtBQUNBO0FBQ0E7QUFKQTtBQUNBO0FBckpBO0FBb0pBO0FBcEpBO0FBQ0E7QUFEQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUNBO0FBREE7QUFBQTtBQUFBO0FBQ0E7QUFEQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBNkpBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQU1BO0FBQ0E7QUFkQTtBQWdCQTtBQTlLQTtBQUFBO0FBQUE7QUFFQTtBQUNBO0FBSEE7QUFDQTtBQURBO0FBQUEiLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./lib/protocol/operator/002/operator_002.ts\n')},"./lib/protocol/operator/003/operator_003.ts":
|
||
/*!***************************************************!*\
|
||
!*** ./lib/protocol/operator/003/operator_003.ts ***!
|
||
\***************************************************/
|
||
/*! exports provided: SNProtocolOperator003 */function(module,__webpack_exports__,__webpack_require__){"use strict";eval('__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "SNProtocolOperator003", function() { return SNProtocolOperator003; });\n/* harmony import */ var _babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @babel/runtime/regenerator */ "./node_modules/@babel/runtime/regenerator/index.js");\n/* harmony import */ var _babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var _algorithms__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./../algorithms */ "./lib/protocol/operator/algorithms.ts");\n/* harmony import */ var _Protocol_key_params__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! @Protocol/key_params */ "./lib/protocol/key_params.ts");\n/* harmony import */ var _Protocol_operator_002_operator_002__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! @Protocol/operator/002/operator_002 */ "./lib/protocol/operator/002/operator_002.ts");\n/* harmony import */ var _Protocol_versions__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! @Protocol/versions */ "./lib/protocol/versions.ts");\n\n\nfunction _typeof(obj) { "@babel/helpers - typeof"; if (typeof Symbol === "function" && typeof Symbol.iterator === "symbol") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }; } return _typeof(obj); }\n\nfunction asyncGeneratorStep(gen, resolve, reject, _next, _throw, key, arg) { try { var info = gen[key](arg); var value = info.value; } catch (error) { reject(error); return; } if (info.done) { resolve(value); } else { Promise.resolve(value).then(_next, _throw); } }\n\nfunction _asyncToGenerator(fn) { return function () { var self = this, args = arguments; return new Promise(function (resolve, reject) { var gen = fn.apply(self, args); function _next(value) { asyncGeneratorStep(gen, resolve, reject, _next, _throw, "next", value); } function _throw(err) { asyncGeneratorStep(gen, resolve, reject, _next, _throw, "throw", err); } _next(undefined); }); }; }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } }\n\nfunction _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); } }\n\nfunction _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; }\n\nfunction _possibleConstructorReturn(self, call) { if (call && (_typeof(call) === "object" || typeof call === "function")) { return call; } return _assertThisInitialized(self); }\n\nfunction _assertThisInitialized(self) { if (self === void 0) { throw new ReferenceError("this hasn\'t been initialised - super() hasn\'t been called"); } return self; }\n\nfunction _getPrototypeOf(o) { _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function _getPrototypeOf(o) { return o.__proto__ || Object.getPrototypeOf(o); }; return _getPrototypeOf(o); }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== "function" && superClass !== null) { throw new TypeError("Super expression must either be null or a function"); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, writable: true, configurable: true } }); if (superClass) _setPrototypeOf(subClass, superClass); }\n\nfunction _setPrototypeOf(o, p) { _setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) { o.__proto__ = p; return o; }; return _setPrototypeOf(o, p); }\n\n\n\n\n\n/**\n * @deprecated\n * Non-expired operator but no longer used for generating new accounts.\n * This operator subclasses the 002 operator to share functionality that has not\n * changed, and overrides functions where behavior may differ.\n */\n\nvar SNProtocolOperator003 = /*#__PURE__*/function (_SNProtocolOperator) {\n _inherits(SNProtocolOperator003, _SNProtocolOperator);\n\n function SNProtocolOperator003() {\n _classCallCheck(this, SNProtocolOperator003);\n\n return _possibleConstructorReturn(this, _getPrototypeOf(SNProtocolOperator003).apply(this, arguments));\n }\n\n _createClass(SNProtocolOperator003, [{\n key: "computeRootKey",\n value: function () {\n var _computeRootKey = _asyncToGenerator( /*#__PURE__*/_babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0___default.a.mark(function _callee(password, keyParams) {\n var pwCost, version, salt, key;\n return _babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0___default.a.wrap(function _callee$(_context) {\n while (1) {\n switch (_context.prev = _context.next) {\n case 0:\n /** Unlike 002, 003 uses a hardcoded cost and not a variable one.\n * Therefore, we always use our own hardcoded value and not what is offered by\n * input keyParams. */\n pwCost = _algorithms__WEBPACK_IMPORTED_MODULE_1__["V003Algorithm"].PbkdfCost;\n version = this.version;\n _context.next = 4;\n return this.generateSalt(keyParams.identifier, version, pwCost, keyParams.seed);\n\n case 4:\n salt = _context.sent;\n _context.next = 7;\n return this.deriveKey(password, salt, pwCost);\n\n case 7:\n key = _context.sent;\n return _context.abrupt("return", key);\n\n case 9:\n case "end":\n return _context.stop();\n }\n }\n }, _callee, this);\n }));\n\n function computeRootKey(_x, _x2) {\n return _computeRootKey.apply(this, arguments);\n }\n\n return computeRootKey;\n }()\n }, {\n key: "createRootKey",\n value: function () {\n var _createRootKey = _asyncToGenerator( /*#__PURE__*/_babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0___default.a.mark(function _callee2(identifier, password) {\n var version, pwCost, pwNonce, pwSalt, key, keyParams;\n return _babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0___default.a.wrap(function _callee2$(_context2) {\n while (1) {\n switch (_context2.prev = _context2.next) {\n case 0:\n version = this.version;\n pwCost = _algorithms__WEBPACK_IMPORTED_MODULE_1__["V003Algorithm"].PbkdfCost;\n _context2.next = 4;\n return this.crypto.generateRandomKey(_algorithms__WEBPACK_IMPORTED_MODULE_1__["V003Algorithm"].SaltSeedLength);\n\n case 4:\n pwNonce = _context2.sent;\n _context2.next = 7;\n return this.generateSalt(identifier, version, pwCost, pwNonce);\n\n case 7:\n pwSalt = _context2.sent;\n _context2.next = 10;\n return this.deriveKey(password, pwSalt, pwCost);\n\n case 10:\n key = _context2.sent;\n keyParams = Object(_Protocol_key_params__WEBPACK_IMPORTED_MODULE_2__["CreateKeyParams"])({\n identifier: identifier,\n pw_cost: pwCost,\n pw_nonce: pwNonce,\n version: version\n });\n return _context2.abrupt("return", {\n key: key,\n keyParams: keyParams\n });\n\n case 13:\n case "end":\n return _context2.stop();\n }\n }\n }, _callee2, this);\n }));\n\n function createRootKey(_x3, _x4) {\n return _createRootKey.apply(this, arguments);\n }\n\n return createRootKey;\n }()\n }, {\n key: "generateSalt",\n value: function () {\n var _generateSalt = _asyncToGenerator( /*#__PURE__*/_babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0___default.a.mark(function _callee3(identifier, version, cost, nonce) {\n var result;\n return _babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0___default.a.wrap(function _callee3$(_context3) {\n while (1) {\n switch (_context3.prev = _context3.next) {\n case 0:\n _context3.next = 2;\n return this.crypto.sha256([identifier, \'SF\', version, cost, nonce].join(\':\'));\n\n case 2:\n result = _context3.sent;\n return _context3.abrupt("return", result);\n\n case 4:\n case "end":\n return _context3.stop();\n }\n }\n }, _callee3, this);\n }));\n\n function generateSalt(_x5, _x6, _x7, _x8) {\n return _generateSalt.apply(this, arguments);\n }\n\n return generateSalt;\n }()\n }, {\n key: "version",\n get: function get() {\n return _Protocol_versions__WEBPACK_IMPORTED_MODULE_4__["ProtocolVersion"].V003;\n }\n }]);\n\n return SNProtocolOperator003;\n}(_Protocol_operator_002_operator_002__WEBPACK_IMPORTED_MODULE_3__["SNProtocolOperator002"]);//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9saWIvcHJvdG9jb2wvb3BlcmF0b3IvMDAzL29wZXJhdG9yXzAwMy50cy5qcyIsInNvdXJjZXMiOlsid2VicGFjazovL1NOTGlicmFyeS8uL2xpYi9wcm90b2NvbC9vcGVyYXRvci8wMDMvb3BlcmF0b3JfMDAzLnRzPzhhNmIiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgVjAwM0FsZ29yaXRobSB9IGZyb20gJy4vLi4vYWxnb3JpdGhtcyc7XG5pbXBvcnQgeyBDcmVhdGVLZXlQYXJhbXMgfSBmcm9tICdAUHJvdG9jb2wva2V5X3BhcmFtcyc7XG5pbXBvcnQgeyBTTlByb3RvY29sT3BlcmF0b3IwMDIgfSBmcm9tICdAUHJvdG9jb2wvb3BlcmF0b3IvMDAyL29wZXJhdG9yXzAwMic7XG5pbXBvcnQgeyBQcm90b2NvbFZlcnNpb24gfSBmcm9tICdAUHJvdG9jb2wvdmVyc2lvbnMnO1xuLyoqXG4gKiBAZGVwcmVjYXRlZFxuICogTm9uLWV4cGlyZWQgb3BlcmF0b3IgYnV0IG5vIGxvbmdlciB1c2VkIGZvciBnZW5lcmF0aW5nIG5ldyBhY2NvdW50cy5cbiAqIFRoaXMgb3BlcmF0b3Igc3ViY2xhc3NlcyB0aGUgMDAyIG9wZXJhdG9yIHRvIHNoYXJlIGZ1bmN0aW9uYWxpdHkgdGhhdCBoYXMgbm90XG4gKiBjaGFuZ2VkLCBhbmQgb3ZlcnJpZGVzIGZ1bmN0aW9ucyB3aGVyZSBiZWhhdmlvciBtYXkgZGlmZmVyLlxuICovXG5leHBvcnQgY2xhc3MgU05Qcm90b2NvbE9wZXJhdG9yMDAzIGV4dGVuZHMgU05Qcm90b2NvbE9wZXJhdG9yMDAyIHtcbiAgICBnZXQgdmVyc2lvbigpIHtcbiAgICAgICAgcmV0dXJuIFByb3RvY29sVmVyc2lvbi5WMDAzO1xuICAgIH1cbiAgICBhc3luYyBjb21wdXRlUm9vdEtleShwYXNzd29yZCwga2V5UGFyYW1zKSB7XG4gICAgICAgIC8qKiBVbmxpa2UgMDAyLCAwMDMgdXNlcyBhIGhhcmRjb2RlZCBjb3N0IGFuZCBub3QgYSB2YXJpYWJsZSBvbmUuXG4gICAgICAgICAqIFRoZXJlZm9yZSwgd2UgYWx3YXlzIHVzZSBvdXIgb3duIGhhcmRjb2RlZCB2YWx1ZSBhbmQgbm90IHdoYXQgaXMgb2ZmZXJlZCBieVxuICAgICAgICAgKiBpbnB1dCBrZXlQYXJhbXMuICovXG4gICAgICAgIGNvbnN0IHB3Q29zdCA9IFYwMDNBbGdvcml0aG0uUGJrZGZDb3N0O1xuICAgICAgICBjb25zdCB2ZXJzaW9uID0gdGhpcy52ZXJzaW9uO1xuICAgICAgICBjb25zdCBzYWx0ID0gYXdhaXQgdGhpcy5nZW5lcmF0ZVNhbHQoa2V5UGFyYW1zLmlkZW50aWZpZXIsIHZlcnNpb24sIHB3Q29zdCwga2V5UGFyYW1zLnNlZWQpO1xuICAgICAgICBjb25zdCBrZXkgPSBhd2FpdCB0aGlzLmRlcml2ZUtleShwYXNzd29yZCwgc2FsdCwgcHdDb3N0KTtcbiAgICAgICAgcmV0dXJuIGtleTtcbiAgICB9XG4gICAgYXN5bmMgY3JlYXRlUm9vdEtleShpZGVudGlmaWVyLCBwYXNzd29yZCkge1xuICAgICAgICBjb25zdCB2ZXJzaW9uID0gdGhpcy52ZXJzaW9uO1xuICAgICAgICBjb25zdCBwd0Nvc3QgPSBWMDAzQWxnb3JpdGhtLlBia2RmQ29zdDtcbiAgICAgICAgY29uc3QgcHdOb25jZSA9IGF3YWl0IHRoaXMuY3J5cHRvLmdlbmVyYXRlUmFuZG9tS2V5KFYwMDNBbGdvcml0aG0uU2FsdFNlZWRMZW5ndGgpO1xuICAgICAgICBjb25zdCBwd1NhbHQgPSBhd2FpdCB0aGlzLmdlbmVyYXRlU2FsdChpZGVudGlmaWVyLCB2ZXJzaW9uLCBwd0Nvc3QsIHB3Tm9uY2UpO1xuICAgICAgICBjb25zdCBrZXkgPSBhd2FpdCB0aGlzLmRlcml2ZUtleShwYXNzd29yZCwgcHdTYWx0LCBwd0Nvc3QpO1xuICAgICAgICBjb25zdCBrZXlQYXJhbXMgPSBDcmVhdGVLZXlQYXJhbXMoe1xuICAgICAgICAgICAgaWRlbnRpZmllcjogaWRlbnRpZmllcixcbiAgICAgICAgICAgIHB3X2Nvc3Q6IHB3Q29zdCxcbiAgICAgICAgICAgIHB3X25vbmNlOiBwd05vbmNlLFxuICAgICAgICAgICAgdmVyc2lvbjogdmVyc2lvblxuICAgICAgICB9KTtcbiAgICAgICAgcmV0dXJuIHsga2V5OiBrZXksIGtleVBhcmFtczoga2V5UGFyYW1zIH07XG4gICAgfVxuICAgIGFzeW5jIGdlbmVyYXRlU2FsdChpZGVudGlmaWVyLCB2ZXJzaW9uLCBjb3N0LCBub25jZSkge1xuICAgICAgICBjb25zdCByZXN1bHQgPSBhd2FpdCB0aGlzLmNyeXB0by5zaGEyNTYoW1xuICAgICAgICAgICAgaWRlbnRpZmllcixcbiAgICAgICAgICAgICdTRicsXG4gICAgICAgICAgICB2ZXJzaW9uLFxuICAgICAgICAgICAgY29zdCxcbiAgICAgICAgICAgIG5vbmNlXG4gICAgICAgIF0uam9pbignOicpKTtcbiAgICAgICAgcmV0dXJuIHJlc3VsdDtcbiAgICB9XG59XG4iXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7Ozs7OztBQU1BO0FBQUE7QUFDQTtBQURBO0FBQUE7QUFDQTtBQURBO0FBQUE7QUFDQTtBQURBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUtBOzs7QUFHQTtBQUNBO0FBVEE7QUFBQTtBQUNBO0FBREE7QUFVQTtBQVZBO0FBQUE7QUFDQTtBQURBO0FBV0E7QUFYQTtBQUNBO0FBREE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFDQTtBQURBO0FBQUE7QUFBQTtBQUNBO0FBREE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQWVBO0FBQ0E7QUFoQkE7QUFBQTtBQUNBO0FBREE7QUFpQkE7QUFqQkE7QUFBQTtBQUNBO0FBREE7QUFrQkE7QUFsQkE7QUFBQTtBQUNBO0FBREE7QUFtQkE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBSkE7QUFwQkE7QUEwQkE7QUFBQTtBQUFBO0FBQ0E7QUEzQkE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFDQTtBQURBO0FBQUE7QUFBQTtBQUNBO0FBREE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFDQTtBQURBO0FBNkJBO0FBN0JBO0FBQ0E7QUFEQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUNBO0FBREE7QUFBQTtBQUFBO0FBQ0E7QUFEQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBRUE7QUFDQTtBQUhBO0FBQ0E7QUFEQTtBQUFBIiwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./lib/protocol/operator/003/operator_003.ts\n')},"./lib/protocol/operator/004/operator_004.ts":
|
||
/*!***************************************************!*\
|
||
!*** ./lib/protocol/operator/004/operator_004.ts ***!
|
||
\***************************************************/
|
||
/*! exports provided: SNProtocolOperator004 */function(module,__webpack_exports__,__webpack_require__){"use strict";eval('__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "SNProtocolOperator004", function() { return SNProtocolOperator004; });\n/* harmony import */ var _babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @babel/runtime/regenerator */ "./node_modules/@babel/runtime/regenerator/index.js");\n/* harmony import */ var _babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var _Models_app_items_key__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! @Models/app/items_key */ "./lib/models/app/items_key.ts");\n/* harmony import */ var _algorithms__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./../algorithms */ "./lib/protocol/operator/algorithms.ts");\n/* harmony import */ var _Protocol_key_params__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! @Protocol/key_params */ "./lib/protocol/key_params.ts");\n/* harmony import */ var _Protocol_operator_003_operator_003__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! @Protocol/operator/003/operator_003 */ "./lib/protocol/operator/003/operator_003.ts");\n/* harmony import */ var _Payloads_formats__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! @Payloads/formats */ "./lib/protocol/payloads/formats.ts");\n/* harmony import */ var _Payloads_generator__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! @Payloads/generator */ "./lib/protocol/payloads/generator.ts");\n/* harmony import */ var _Protocol_versions__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! @Protocol/versions */ "./lib/protocol/versions.ts");\n/* harmony import */ var _Protocol_root_key__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! @Protocol/root_key */ "./lib/protocol/root_key.ts");\n/* harmony import */ var _Lib_utils__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(/*! @Lib/utils */ "./lib/utils.ts");\n\n\nfunction _typeof(obj) { "@babel/helpers - typeof"; if (typeof Symbol === "function" && typeof Symbol.iterator === "symbol") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }; } return _typeof(obj); }\n\nfunction asyncGeneratorStep(gen, resolve, reject, _next, _throw, key, arg) { try { var info = gen[key](arg); var value = info.value; } catch (error) { reject(error); return; } if (info.done) { resolve(value); } else { Promise.resolve(value).then(_next, _throw); } }\n\nfunction _asyncToGenerator(fn) { return function () { var self = this, args = arguments; return new Promise(function (resolve, reject) { var gen = fn.apply(self, args); function _next(value) { asyncGeneratorStep(gen, resolve, reject, _next, _throw, "next", value); } function _throw(err) { asyncGeneratorStep(gen, resolve, reject, _next, _throw, "throw", err); } _next(undefined); }); }; }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } }\n\nfunction _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); } }\n\nfunction _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; }\n\nfunction _possibleConstructorReturn(self, call) { if (call && (_typeof(call) === "object" || typeof call === "function")) { return call; } return _assertThisInitialized(self); }\n\nfunction _assertThisInitialized(self) { if (self === void 0) { throw new ReferenceError("this hasn\'t been initialised - super() hasn\'t been called"); } return self; }\n\nfunction _get(target, property, receiver) { if (typeof Reflect !== "undefined" && Reflect.get) { _get = Reflect.get; } else { _get = function _get(target, property, receiver) { var base = _superPropBase(target, property); if (!base) return; var desc = Object.getOwnPropertyDescriptor(base, property); if (desc.get) { return desc.get.call(receiver); } return desc.value; }; } return _get(target, property, receiver || target); }\n\nfunction _superPropBase(object, property) { while (!Object.prototype.hasOwnProperty.call(object, property)) { object = _getPrototypeOf(object); if (object === null) break; } return object; }\n\nfunction _getPrototypeOf(o) { _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function _getPrototypeOf(o) { return o.__proto__ || Object.getPrototypeOf(o); }; return _getPrototypeOf(o); }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== "function" && superClass !== null) { throw new TypeError("Super expression must either be null or a function"); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, writable: true, configurable: true } }); if (superClass) _setPrototypeOf(subClass, superClass); }\n\nfunction _setPrototypeOf(o, p) { _setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) { o.__proto__ = p; return o; }; return _setPrototypeOf(o, p); }\n\n\n\n\n\n\n\n\n\n\nvar PARTITION_CHARACTER = \':\';\nvar SNProtocolOperator004 = /*#__PURE__*/function (_SNProtocolOperator) {\n _inherits(SNProtocolOperator004, _SNProtocolOperator);\n\n function SNProtocolOperator004() {\n _classCallCheck(this, SNProtocolOperator004);\n\n return _possibleConstructorReturn(this, _getPrototypeOf(SNProtocolOperator004).apply(this, arguments));\n }\n\n _createClass(SNProtocolOperator004, [{\n key: "generateNewItemsKeyContent",\n value: function () {\n var _generateNewItemsKeyContent = _asyncToGenerator( /*#__PURE__*/_babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0___default.a.mark(function _callee() {\n var itemsKey, response;\n return _babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0___default.a.wrap(function _callee$(_context) {\n while (1) {\n switch (_context.prev = _context.next) {\n case 0:\n _context.next = 2;\n return this.crypto.generateRandomKey(_algorithms__WEBPACK_IMPORTED_MODULE_2__["V004Algorithm"].EncryptionKeyLength);\n\n case 2:\n itemsKey = _context.sent;\n response = {\n itemsKey: itemsKey,\n version: this.version\n };\n return _context.abrupt("return", response);\n\n case 5:\n case "end":\n return _context.stop();\n }\n }\n }, _callee, this);\n }));\n\n function generateNewItemsKeyContent() {\n return _generateNewItemsKeyContent.apply(this, arguments);\n }\n\n return generateNewItemsKeyContent;\n }()\n /**\n * We require both a client-side component and a server-side component in generating a\n * salt. This way, a comprimised server cannot benefit from sending the same seed value\n * for every user. We mix a client-controlled value that is globally unique\n * (their identifier), with a server controlled value to produce a salt for our KDF.\n * @param identifier\n * @param seed\n */\n\n }, {\n key: "generateSalt004",\n value: function () {\n var _generateSalt = _asyncToGenerator( /*#__PURE__*/_babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0___default.a.mark(function _callee2(identifier, seed) {\n var hash;\n return _babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0___default.a.wrap(function _callee2$(_context2) {\n while (1) {\n switch (_context2.prev = _context2.next) {\n case 0:\n _context2.next = 2;\n return this.crypto.sha256([identifier, seed].join(PARTITION_CHARACTER));\n\n case 2:\n hash = _context2.sent;\n return _context2.abrupt("return", Object(_Lib_utils__WEBPACK_IMPORTED_MODULE_9__["truncateHexString"])(hash, _algorithms__WEBPACK_IMPORTED_MODULE_2__["V004Algorithm"].ArgonSaltLength));\n\n case 4:\n case "end":\n return _context2.stop();\n }\n }\n }, _callee2, this);\n }));\n\n function generateSalt004(_x, _x2) {\n return _generateSalt.apply(this, arguments);\n }\n\n return generateSalt004;\n }()\n /**\n * Computes a root key given a password and previous keyParams\n * @param password - Plain string representing raw user password\n * @param keyParams - KeyParams object\n */\n\n }, {\n key: "computeRootKey",\n value: function () {\n var _computeRootKey = _asyncToGenerator( /*#__PURE__*/_babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0___default.a.mark(function _callee3(password, keyParams) {\n var salt, key;\n return _babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0___default.a.wrap(function _callee3$(_context3) {\n while (1) {\n switch (_context3.prev = _context3.next) {\n case 0:\n _context3.next = 2;\n return this.generateSalt004(keyParams.identifier, keyParams.seed);\n\n case 2:\n salt = _context3.sent;\n _context3.next = 5;\n return this.deriveKey(password, salt, _algorithms__WEBPACK_IMPORTED_MODULE_2__["V004Algorithm"].ArgonIterations);\n\n case 5:\n key = _context3.sent;\n return _context3.abrupt("return", key);\n\n case 7:\n case "end":\n return _context3.stop();\n }\n }\n }, _callee3, this);\n }));\n\n function computeRootKey(_x3, _x4) {\n return _computeRootKey.apply(this, arguments);\n }\n\n return computeRootKey;\n }()\n /**\n * Creates a new root key given an identifier and a user password\n * @param identifier - Plain string representing a unique identifier\n * @param password - Plain string representing raw user password\n */\n\n }, {\n key: "createRootKey",\n value: function () {\n var _createRootKey = _asyncToGenerator( /*#__PURE__*/_babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0___default.a.mark(function _callee4(identifier, password) {\n var version, iterations, seed, salt, key, keyParams;\n return _babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0___default.a.wrap(function _callee4$(_context4) {\n while (1) {\n switch (_context4.prev = _context4.next) {\n case 0:\n version = this.version;\n iterations = _algorithms__WEBPACK_IMPORTED_MODULE_2__["V004Algorithm"].ArgonIterations;\n _context4.next = 4;\n return this.crypto.generateRandomKey(_algorithms__WEBPACK_IMPORTED_MODULE_2__["V004Algorithm"].ArgonSaltSeedLength);\n\n case 4:\n seed = _context4.sent;\n _context4.next = 7;\n return this.generateSalt004(identifier, seed);\n\n case 7:\n salt = _context4.sent;\n _context4.next = 10;\n return this.deriveKey(password, salt, iterations);\n\n case 10:\n key = _context4.sent;\n keyParams = Object(_Protocol_key_params__WEBPACK_IMPORTED_MODULE_3__["CreateKeyParams"])({\n identifier: identifier,\n pw_cost: iterations,\n pw_nonce: seed,\n version: version\n });\n return _context4.abrupt("return", {\n key: key,\n keyParams: keyParams\n });\n\n case 13:\n case "end":\n return _context4.stop();\n }\n }\n }, _callee4, this);\n }));\n\n function createRootKey(_x5, _x6) {\n return _createRootKey.apply(this, arguments);\n }\n\n return createRootKey;\n }()\n /**\n * @param plaintext - The plaintext to encrypt.\n * @param rawKey - The key to use to encrypt the plaintext.\n * @param nonce - The nonce for encryption.\n * @param aad - JavaScript object (will be stringified) representing\n \'Additional authenticated data\': data you want to be included in authentication.\n */\n\n }, {\n key: "encryptString004",\n value: function () {\n var _encryptString = _asyncToGenerator( /*#__PURE__*/_babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0___default.a.mark(function _callee5(plaintext, rawKey, nonce, aad) {\n return _babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0___default.a.wrap(function _callee5$(_context5) {\n while (1) {\n switch (_context5.prev = _context5.next) {\n case 0:\n if (nonce) {\n _context5.next = 2;\n break;\n }\n\n throw \'encryptString null nonce\';\n\n case 2:\n if (rawKey) {\n _context5.next = 4;\n break;\n }\n\n throw \'encryptString null rawKey\';\n\n case 4:\n return _context5.abrupt("return", this.crypto.xchacha20Encrypt(plaintext, nonce, rawKey, JSON.stringify(aad)));\n\n case 5:\n case "end":\n return _context5.stop();\n }\n }\n }, _callee5, this);\n }));\n\n function encryptString004(_x7, _x8, _x9, _x10) {\n return _encryptString.apply(this, arguments);\n }\n\n return encryptString004;\n }()\n /**\n * @param {string} ciphertext The encrypted text to decrypt.\n * @param {string} rawKey The key to use to decrypt the ciphertext.\n * @param {string} nonce The nonce for decryption.\n * @param {object} aad JavaScript object (will be stringified) representing\n \'Additional authenticated data\' - data you want to be included in authentication.\n */\n\n }, {\n key: "decryptString004",\n value: function () {\n var _decryptString = _asyncToGenerator( /*#__PURE__*/_babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0___default.a.mark(function _callee6(ciphertext, rawKey, nonce, aad) {\n return _babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0___default.a.wrap(function _callee6$(_context6) {\n while (1) {\n switch (_context6.prev = _context6.next) {\n case 0:\n return _context6.abrupt("return", this.crypto.xchacha20Decrypt(ciphertext, nonce, rawKey, JSON.stringify(aad)));\n\n case 1:\n case "end":\n return _context6.stop();\n }\n }\n }, _callee6, this);\n }));\n\n function decryptString004(_x11, _x12, _x13, _x14) {\n return _decryptString.apply(this, arguments);\n }\n\n return decryptString004;\n }()\n /**\n * @param plaintext The plaintext text to decrypt.\n * @param rawKey The key to use to encrypt the plaintext.\n * @param itemUuid The uuid of the item being encrypted\n */\n\n }, {\n key: "generateEncryptedProtocolString",\n value: function () {\n var _generateEncryptedProtocolString = _asyncToGenerator( /*#__PURE__*/_babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0___default.a.mark(function _callee7(plaintext, rawKey, itemUuid) {\n var nonce, version, ciphertext, payload;\n return _babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0___default.a.wrap(function _callee7$(_context7) {\n while (1) {\n switch (_context7.prev = _context7.next) {\n case 0:\n _context7.next = 2;\n return this.crypto.generateRandomKey(_algorithms__WEBPACK_IMPORTED_MODULE_2__["V004Algorithm"].EncryptionNonceLength);\n\n case 2:\n nonce = _context7.sent;\n version = this.version;\n _context7.next = 6;\n return this.encryptString004(plaintext, rawKey, nonce, {\n u: itemUuid,\n v: version\n });\n\n case 6:\n ciphertext = _context7.sent;\n payload = [version, nonce, ciphertext].join(PARTITION_CHARACTER);\n return _context7.abrupt("return", payload);\n\n case 9:\n case "end":\n return _context7.stop();\n }\n }\n }, _callee7, this);\n }));\n\n function generateEncryptedProtocolString(_x15, _x16, _x17) {\n return _generateEncryptedProtocolString.apply(this, arguments);\n }\n\n return generateEncryptedProtocolString;\n }()\n }, {\n key: "generateEncryptedParameters",\n value: function () {\n var _generateEncryptedParameters = _asyncToGenerator( /*#__PURE__*/_babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0___default.a.mark(function _callee8(payload, format, key) {\n var itemKey, contentPlaintext, encryptedContentString, encryptedItemKey;\n return _babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0___default.a.wrap(function _callee8$(_context8) {\n while (1) {\n switch (_context8.prev = _context8.next) {\n case 0:\n if (!(format === _Payloads_formats__WEBPACK_IMPORTED_MODULE_5__["PayloadFormat"].DecryptedBareObject || format === _Payloads_formats__WEBPACK_IMPORTED_MODULE_5__["PayloadFormat"].DecryptedBase64String)) {\n _context8.next = 2;\n break;\n }\n\n return _context8.abrupt("return", _get(_getPrototypeOf(SNProtocolOperator004.prototype), "generateEncryptedParameters", this).call(this, payload, format, key));\n\n case 2:\n if (!(format !== _Payloads_formats__WEBPACK_IMPORTED_MODULE_5__["PayloadFormat"].EncryptedString)) {\n _context8.next = 4;\n break;\n }\n\n throw "Unsupport format for generateEncryptedParameters ".concat(format);\n\n case 4:\n if (payload.uuid) {\n _context8.next = 6;\n break;\n }\n\n throw \'payload.uuid cannot be null\';\n\n case 6:\n if (!(!key || !key.itemsKey)) {\n _context8.next = 8;\n break;\n }\n\n throw \'Attempting to generateEncryptedParameters with no itemsKey.\';\n\n case 8:\n _context8.next = 10;\n return this.crypto.generateRandomKey(_algorithms__WEBPACK_IMPORTED_MODULE_2__["V004Algorithm"].EncryptionKeyLength);\n\n case 10:\n itemKey = _context8.sent;\n\n /** Encrypt content with item_key */\n contentPlaintext = JSON.stringify(payload.content);\n _context8.next = 14;\n return this.generateEncryptedProtocolString(contentPlaintext, itemKey, payload.uuid);\n\n case 14:\n encryptedContentString = _context8.sent;\n _context8.next = 17;\n return this.generateEncryptedProtocolString(itemKey, key.itemsKey, payload.uuid);\n\n case 17:\n encryptedItemKey = _context8.sent;\n return _context8.abrupt("return", Object(_Payloads_generator__WEBPACK_IMPORTED_MODULE_6__["CreateEncryptionParameters"])({\n uuid: payload.uuid,\n items_key_id: key instanceof _Models_app_items_key__WEBPACK_IMPORTED_MODULE_1__["SNItemsKey"] ? key.uuid : undefined,\n content: encryptedContentString,\n enc_item_key: encryptedItemKey\n }));\n\n case 19:\n case "end":\n return _context8.stop();\n }\n }\n }, _callee8, this);\n }));\n\n function generateEncryptedParameters(_x18, _x19, _x20) {\n return _generateEncryptedParameters.apply(this, arguments);\n }\n\n return generateEncryptedParameters;\n }()\n }, {\n key: "generateDecryptedParameters",\n value: function () {\n var _generateDecryptedParameters = _asyncToGenerator( /*#__PURE__*/_babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0___default.a.mark(function _callee9(encryptedParameters, key) {\n var format, itemKeyComponents, itemKey, contentComponents, content;\n return _babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0___default.a.wrap(function _callee9$(_context9) {\n while (1) {\n switch (_context9.prev = _context9.next) {\n case 0:\n format = encryptedParameters.format;\n\n if (!(format === _Payloads_formats__WEBPACK_IMPORTED_MODULE_5__["PayloadFormat"].DecryptedBareObject || format === _Payloads_formats__WEBPACK_IMPORTED_MODULE_5__["PayloadFormat"].DecryptedBase64String)) {\n _context9.next = 3;\n break;\n }\n\n return _context9.abrupt("return", _get(_getPrototypeOf(SNProtocolOperator004.prototype), "generateDecryptedParameters", this).call(this, encryptedParameters, key));\n\n case 3:\n if (encryptedParameters.uuid) {\n _context9.next = 5;\n break;\n }\n\n throw \'encryptedParameters.uuid cannot be null\';\n\n case 5:\n if (!(!key || !key.itemsKey)) {\n _context9.next = 7;\n break;\n }\n\n throw \'Attempting to generateDecryptedParameters with no itemsKey.\';\n\n case 7:\n /** Decrypt item_key payload. */\n itemKeyComponents = this.deconstructEncryptedPayloadString(encryptedParameters.enc_item_key);\n _context9.next = 10;\n return this.decryptString004(itemKeyComponents.ciphertext, key.itemsKey, itemKeyComponents.nonce, {\n u: encryptedParameters.uuid,\n v: itemKeyComponents.version\n });\n\n case 10:\n itemKey = _context9.sent;\n\n if (itemKey) {\n _context9.next = 14;\n break;\n }\n\n console.error(\'Error decrypting itemKey parameters\', encryptedParameters);\n return _context9.abrupt("return", Object(_Payloads_generator__WEBPACK_IMPORTED_MODULE_6__["CopyEncryptionParameters"])(encryptedParameters, {\n errorDecrypting: true,\n errorDecryptingValueChanged: !encryptedParameters.errorDecrypting\n }));\n\n case 14:\n /** Decrypt content payload. */\n contentComponents = this.deconstructEncryptedPayloadString(encryptedParameters.contentString);\n _context9.next = 17;\n return this.decryptString004(contentComponents.ciphertext, itemKey, contentComponents.nonce, {\n u: encryptedParameters.uuid,\n v: contentComponents.version\n });\n\n case 17:\n content = _context9.sent;\n\n if (content) {\n _context9.next = 22;\n break;\n }\n\n return _context9.abrupt("return", Object(_Payloads_generator__WEBPACK_IMPORTED_MODULE_6__["CopyEncryptionParameters"])(encryptedParameters, {\n errorDecrypting: true,\n errorDecryptingValueChanged: !encryptedParameters.errorDecrypting\n }));\n\n case 22:\n return _context9.abrupt("return", Object(_Payloads_generator__WEBPACK_IMPORTED_MODULE_6__["CopyEncryptionParameters"])(encryptedParameters, {\n content: JSON.parse(content),\n items_key_id: undefined,\n enc_item_key: undefined,\n errorDecrypting: false,\n errorDecryptingValueChanged: encryptedParameters.errorDecrypting === true,\n waitingForKey: false\n }));\n\n case 23:\n case "end":\n return _context9.stop();\n }\n }\n }, _callee9, this);\n }));\n\n function generateDecryptedParameters(_x21, _x22) {\n return _generateDecryptedParameters.apply(this, arguments);\n }\n\n return generateDecryptedParameters;\n }()\n }, {\n key: "deconstructEncryptedPayloadString",\n value: function deconstructEncryptedPayloadString(payloadString) {\n var components = payloadString.split(PARTITION_CHARACTER);\n return {\n version: components[0],\n nonce: components[1],\n ciphertext: components[2]\n };\n }\n }, {\n key: "deriveKey",\n value: function () {\n var _deriveKey = _asyncToGenerator( /*#__PURE__*/_babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0___default.a.mark(function _callee10(password, salt, iterations) {\n var derivedKey, partitions, masterKey, serverPassword;\n return _babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0___default.a.wrap(function _callee10$(_context10) {\n while (1) {\n switch (_context10.prev = _context10.next) {\n case 0:\n _context10.next = 2;\n return this.crypto.argon2(password, salt, iterations, _algorithms__WEBPACK_IMPORTED_MODULE_2__["V004Algorithm"].ArgonMemLimit, _algorithms__WEBPACK_IMPORTED_MODULE_2__["V004Algorithm"].ArgonOutputKeyBytes);\n\n case 2:\n derivedKey = _context10.sent;\n partitions = this.splitKey(derivedKey, 2);\n masterKey = partitions[0];\n serverPassword = partitions[1];\n return _context10.abrupt("return", _Protocol_root_key__WEBPACK_IMPORTED_MODULE_8__["SNRootKey"].Create({\n masterKey: masterKey,\n serverPassword: serverPassword,\n version: this.version\n }));\n\n case 7:\n case "end":\n return _context10.stop();\n }\n }\n }, _callee10, this);\n }));\n\n function deriveKey(_x23, _x24, _x25) {\n return _deriveKey.apply(this, arguments);\n }\n\n return deriveKey;\n }()\n }, {\n key: "version",\n get: function get() {\n return _Protocol_versions__WEBPACK_IMPORTED_MODULE_7__["ProtocolVersion"].V004;\n }\n }]);\n\n return SNProtocolOperator004;\n}(_Protocol_operator_003_operator_003__WEBPACK_IMPORTED_MODULE_4__["SNProtocolOperator003"]);//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9saWIvcHJvdG9jb2wvb3BlcmF0b3IvMDA0L29wZXJhdG9yXzAwNC50cy5qcyIsInNvdXJjZXMiOlsid2VicGFjazovL1NOTGlicmFyeS8uL2xpYi9wcm90b2NvbC9vcGVyYXRvci8wMDQvb3BlcmF0b3JfMDA0LnRzPzI4NzYiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgU05JdGVtc0tleSB9IGZyb20gJ0BNb2RlbHMvYXBwL2l0ZW1zX2tleSc7XG5pbXBvcnQgeyBWMDA0QWxnb3JpdGhtIH0gZnJvbSAnLi8uLi9hbGdvcml0aG1zJztcbmltcG9ydCB7IENyZWF0ZUtleVBhcmFtcyB9IGZyb20gJ0BQcm90b2NvbC9rZXlfcGFyYW1zJztcbmltcG9ydCB7IFNOUHJvdG9jb2xPcGVyYXRvcjAwMyB9IGZyb20gJ0BQcm90b2NvbC9vcGVyYXRvci8wMDMvb3BlcmF0b3JfMDAzJztcbmltcG9ydCB7IFBheWxvYWRGb3JtYXQgfSBmcm9tICdAUGF5bG9hZHMvZm9ybWF0cyc7XG5pbXBvcnQgeyBDcmVhdGVFbmNyeXB0aW9uUGFyYW1ldGVycywgQ29weUVuY3J5cHRpb25QYXJhbWV0ZXJzIH0gZnJvbSAnQFBheWxvYWRzL2dlbmVyYXRvcic7XG5pbXBvcnQgeyBQcm90b2NvbFZlcnNpb24gfSBmcm9tICdAUHJvdG9jb2wvdmVyc2lvbnMnO1xuaW1wb3J0IHsgU05Sb290S2V5IH0gZnJvbSAnQFByb3RvY29sL3Jvb3Rfa2V5JztcbmltcG9ydCB7IHRydW5jYXRlSGV4U3RyaW5nIH0gZnJvbSAnQExpYi91dGlscyc7XG5jb25zdCBQQVJUSVRJT05fQ0hBUkFDVEVSID0gJzonO1xuZXhwb3J0IGNsYXNzIFNOUHJvdG9jb2xPcGVyYXRvcjAwNCBleHRlbmRzIFNOUHJvdG9jb2xPcGVyYXRvcjAwMyB7XG4gICAgZ2V0IHZlcnNpb24oKSB7XG4gICAgICAgIHJldHVybiBQcm90b2NvbFZlcnNpb24uVjAwNDtcbiAgICB9XG4gICAgYXN5bmMgZ2VuZXJhdGVOZXdJdGVtc0tleUNvbnRlbnQoKSB7XG4gICAgICAgIGNvbnN0IGl0ZW1zS2V5ID0gYXdhaXQgdGhpcy5jcnlwdG8uZ2VuZXJhdGVSYW5kb21LZXkoVjAwNEFsZ29yaXRobS5FbmNyeXB0aW9uS2V5TGVuZ3RoKTtcbiAgICAgICAgY29uc3QgcmVzcG9uc2UgPSB7XG4gICAgICAgICAgICBpdGVtc0tleTogaXRlbXNLZXksXG4gICAgICAgICAgICB2ZXJzaW9uOiB0aGlzLnZlcnNpb25cbiAgICAgICAgfTtcbiAgICAgICAgcmV0dXJuIHJlc3BvbnNlO1xuICAgIH1cbiAgICAvKipcbiAgICAgKiBXZSByZXF1aXJlIGJvdGggYSBjbGllbnQtc2lkZSBjb21wb25lbnQgYW5kIGEgc2VydmVyLXNpZGUgY29tcG9uZW50IGluIGdlbmVyYXRpbmcgYVxuICAgICAqIHNhbHQuIFRoaXMgd2F5LCBhIGNvbXByaW1pc2VkIHNlcnZlciBjYW5ub3QgYmVuZWZpdCBmcm9tIHNlbmRpbmcgdGhlIHNhbWUgc2VlZCB2YWx1ZVxuICAgICAqIGZvciBldmVyeSB1c2VyLiBXZSBtaXggYSBjbGllbnQtY29udHJvbGxlZCB2YWx1ZSB0aGF0IGlzIGdsb2JhbGx5IHVuaXF1ZVxuICAgICAqICh0aGVpciBpZGVudGlmaWVyKSwgd2l0aCBhIHNlcnZlciBjb250cm9sbGVkIHZhbHVlIHRvIHByb2R1Y2UgYSBzYWx0IGZvciBvdXIgS0RGLlxuICAgICAqIEBwYXJhbSBpZGVudGlmaWVyXG4gICAgICogQHBhcmFtIHNlZWRcbiAgICAqL1xuICAgIGFzeW5jIGdlbmVyYXRlU2FsdDAwNChpZGVudGlmaWVyLCBzZWVkKSB7XG4gICAgICAgIGNvbnN0IGhhc2ggPSBhd2FpdCB0aGlzLmNyeXB0by5zaGEyNTYoW2lkZW50aWZpZXIsIHNlZWRdLmpvaW4oUEFSVElUSU9OX0NIQVJBQ1RFUikpO1xuICAgICAgICByZXR1cm4gdHJ1bmNhdGVIZXhTdHJpbmcoaGFzaCwgVjAwNEFsZ29yaXRobS5BcmdvblNhbHRMZW5ndGgpO1xuICAgIH1cbiAgICAvKipcbiAgICAgKiBDb21wdXRlcyBhIHJvb3Qga2V5IGdpdmVuIGEgcGFzc3dvcmQgYW5kIHByZXZpb3VzIGtleVBhcmFtc1xuICAgICAqIEBwYXJhbSBwYXNzd29yZCAtIFBsYWluIHN0cmluZyByZXByZXNlbnRpbmcgcmF3IHVzZXIgcGFzc3dvcmRcbiAgICAgKiBAcGFyYW0ga2V5UGFyYW1zIC0gS2V5UGFyYW1zIG9iamVjdFxuICAgICAqL1xuICAgIGFzeW5jIGNvbXB1dGVSb290S2V5KHBhc3N3b3JkLCBrZXlQYXJhbXMpIHtcbiAgICAgICAgY29uc3Qgc2FsdCA9IGF3YWl0IHRoaXMuZ2VuZXJhdGVTYWx0MDA0KGtleVBhcmFtcy5pZGVudGlmaWVyLCBrZXlQYXJhbXMuc2VlZCk7XG4gICAgICAgIGNvbnN0IGtleSA9IGF3YWl0IHRoaXMuZGVyaXZlS2V5KHBhc3N3b3JkLCBzYWx0LCBWMDA0QWxnb3JpdGhtLkFyZ29uSXRlcmF0aW9ucyk7XG4gICAgICAgIHJldHVybiBrZXk7XG4gICAgfVxuICAgIC8qKlxuICAgICAqIENyZWF0ZXMgYSBuZXcgcm9vdCBrZXkgZ2l2ZW4gYW4gaWRlbnRpZmllciBhbmQgYSB1c2VyIHBhc3N3b3JkXG4gICAgICogQHBhcmFtIGlkZW50aWZpZXIgLSBQbGFpbiBzdHJpbmcgcmVwcmVzZW50aW5nIGEgdW5pcXVlIGlkZW50aWZpZXJcbiAgICAgKiBAcGFyYW0gcGFzc3dvcmQgLSBQbGFpbiBzdHJpbmcgcmVwcmVzZW50aW5nIHJhdyB1c2VyIHBhc3N3b3JkXG4gICAgICovXG4gICAgYXN5bmMgY3JlYXRlUm9vdEtleShpZGVudGlmaWVyLCBwYXNzd29yZCkge1xuICAgICAgICBjb25zdCB2ZXJzaW9uID0gdGhpcy52ZXJzaW9uO1xuICAgICAgICBjb25zdCBpdGVyYXRpb25zID0gVjAwNEFsZ29yaXRobS5Bcmdvbkl0ZXJhdGlvbnM7XG4gICAgICAgIGNvbnN0IHNlZWQgPSBhd2FpdCB0aGlzLmNyeXB0by5nZW5lcmF0ZVJhbmRvbUtleShWMDA0QWxnb3JpdGhtLkFyZ29uU2FsdFNlZWRMZW5ndGgpO1xuICAgICAgICBjb25zdCBzYWx0ID0gYXdhaXQgdGhpcy5nZW5lcmF0ZVNhbHQwMDQoaWRlbnRpZmllciwgc2VlZCk7XG4gICAgICAgIGNvbnN0IGtleSA9IGF3YWl0IHRoaXMuZGVyaXZlS2V5KHBhc3N3b3JkLCBzYWx0LCBpdGVyYXRpb25zKTtcbiAgICAgICAgY29uc3Qga2V5UGFyYW1zID0gQ3JlYXRlS2V5UGFyYW1zKHtcbiAgICAgICAgICAgIGlkZW50aWZpZXI6IGlkZW50aWZpZXIsXG4gICAgICAgICAgICBwd19jb3N0OiBpdGVyYXRpb25zLFxuICAgICAgICAgICAgcHdfbm9uY2U6IHNlZWQsXG4gICAgICAgICAgICB2ZXJzaW9uOiB2ZXJzaW9uLFxuICAgICAgICB9KTtcbiAgICAgICAgcmV0dXJuIHsga2V5OiBrZXksIGtleVBhcmFtczoga2V5UGFyYW1zIH07XG4gICAgfVxuICAgIC8qKlxuICAgICAqIEBwYXJhbSBwbGFpbnRleHQgLSBUaGUgcGxhaW50ZXh0IHRvIGVuY3J5cHQuXG4gICAgICogQHBhcmFtIHJhd0tleSAtIFRoZSBrZXkgdG8gdXNlIHRvIGVuY3J5cHQgdGhlIHBsYWludGV4dC5cbiAgICAgKiBAcGFyYW0gbm9uY2UgLSBUaGUgbm9uY2UgZm9yIGVuY3J5cHRpb24uXG4gICAgICogQHBhcmFtIGFhZCAtIEphdmFTY3JpcHQgb2JqZWN0ICh3aWxsIGJlIHN0cmluZ2lmaWVkKSByZXByZXNlbnRpbmdcbiAgICAgICAgICAgICAgICAgICdBZGRpdGlvbmFsIGF1dGhlbnRpY2F0ZWQgZGF0YSc6IGRhdGEgeW91IHdhbnQgdG8gYmUgaW5jbHVkZWQgaW4gYXV0aGVudGljYXRpb24uXG4gICAgICovXG4gICAgYXN5bmMgZW5jcnlwdFN0cmluZzAwNChwbGFpbnRleHQsIHJhd0tleSwgbm9uY2UsIGFhZCkge1xuICAgICAgICBpZiAoIW5vbmNlKSB7XG4gICAgICAgICAgICB0aHJvdyAnZW5jcnlwdFN0cmluZyBudWxsIG5vbmNlJztcbiAgICAgICAgfVxuICAgICAgICBpZiAoIXJhd0tleSkge1xuICAgICAgICAgICAgdGhyb3cgJ2VuY3J5cHRTdHJpbmcgbnVsbCByYXdLZXknO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiB0aGlzLmNyeXB0by54Y2hhY2hhMjBFbmNyeXB0KHBsYWludGV4dCwgbm9uY2UsIHJhd0tleSwgSlNPTi5zdHJpbmdpZnkoYWFkKSk7XG4gICAgfVxuICAgIC8qKlxuICAgICAqIEBwYXJhbSB7c3RyaW5nfSBjaXBoZXJ0ZXh0ICBUaGUgZW5jcnlwdGVkIHRleHQgdG8gZGVjcnlwdC5cbiAgICAgKiBAcGFyYW0ge3N0cmluZ30gcmF3S2V5ICBUaGUga2V5IHRvIHVzZSB0byBkZWNyeXB0IHRoZSBjaXBoZXJ0ZXh0LlxuICAgICAqIEBwYXJhbSB7c3RyaW5nfSBub25jZSAgVGhlIG5vbmNlIGZvciBkZWNyeXB0aW9uLlxuICAgICAqIEBwYXJhbSB7b2JqZWN0fSBhYWQgIEphdmFTY3JpcHQgb2JqZWN0ICh3aWxsIGJlIHN0cmluZ2lmaWVkKSByZXByZXNlbnRpbmdcbiAgICAgICAgICAgICAgICAgICdBZGRpdGlvbmFsIGF1dGhlbnRpY2F0ZWQgZGF0YScgLSBkYXRhIHlvdSB3YW50IHRvIGJlIGluY2x1ZGVkIGluIGF1dGhlbnRpY2F0aW9uLlxuICAgICAqL1xuICAgIGFzeW5jIGRlY3J5cHRTdHJpbmcwMDQoY2lwaGVydGV4dCwgcmF3S2V5LCBub25jZSwgYWFkKSB7XG4gICAgICAgIHJldHVybiB0aGlzLmNyeXB0by54Y2hhY2hhMjBEZWNyeXB0KGNpcGhlcnRleHQsIG5vbmNlLCByYXdLZXksIEpTT04uc3RyaW5naWZ5KGFhZCkpO1xuICAgIH1cbiAgICAvKipcbiAgICAgKiBAcGFyYW0gcGxhaW50ZXh0ICBUaGUgcGxhaW50ZXh0IHRleHQgdG8gZGVjcnlwdC5cbiAgICAgKiBAcGFyYW0gcmF3S2V5ICBUaGUga2V5IHRvIHVzZSB0byBlbmNyeXB0IHRoZSBwbGFpbnRleHQuXG4gICAgICogQHBhcmFtIGl0ZW1VdWlkICBUaGUgdXVpZCBvZiB0aGUgaXRlbSBiZWluZyBlbmNyeXB0ZWRcbiAgICAgKi9cbiAgICBhc3luYyBnZW5lcmF0ZUVuY3J5cHRlZFByb3RvY29sU3RyaW5nKHBsYWludGV4dCwgcmF3S2V5LCBpdGVtVXVpZCkge1xuICAgICAgICBjb25zdCBub25jZSA9IGF3YWl0IHRoaXMuY3J5cHRvLmdlbmVyYXRlUmFuZG9tS2V5KFYwMDRBbGdvcml0aG0uRW5jcnlwdGlvbk5vbmNlTGVuZ3RoKTtcbiAgICAgICAgY29uc3QgdmVyc2lvbiA9IHRoaXMudmVyc2lvbjtcbiAgICAgICAgY29uc3QgY2lwaGVydGV4dCA9IGF3YWl0IHRoaXMuZW5jcnlwdFN0cmluZzAwNChwbGFpbnRleHQsIHJhd0tleSwgbm9uY2UsIHsgdTogaXRlbVV1aWQsIHY6IHZlcnNpb24gfSk7XG4gICAgICAgIGNvbnN0IHBheWxvYWQgPSBbdmVyc2lvbiwgbm9uY2UsIGNpcGhlcnRleHRdLmpvaW4oUEFSVElUSU9OX0NIQVJBQ1RFUik7XG4gICAgICAgIHJldHVybiBwYXlsb2FkO1xuICAgIH1cbiAgICBhc3luYyBnZW5lcmF0ZUVuY3J5cHRlZFBhcmFtZXRlcnMocGF5bG9hZCwgZm9ybWF0LCBrZXkpIHtcbiAgICAgICAgaWYgKChmb3JtYXQgPT09IFBheWxvYWRGb3JtYXQuRGVjcnlwdGVkQmFyZU9iamVjdCB8fFxuICAgICAgICAgICAgZm9ybWF0ID09PSBQYXlsb2FkRm9ybWF0LkRlY3J5cHRlZEJhc2U2NFN0cmluZykpIHtcbiAgICAgICAgICAgIHJldHVybiBzdXBlci5nZW5lcmF0ZUVuY3J5cHRlZFBhcmFtZXRlcnMocGF5bG9hZCwgZm9ybWF0LCBrZXkpO1xuICAgICAgICB9XG4gICAgICAgIGlmIChmb3JtYXQgIT09IFBheWxvYWRGb3JtYXQuRW5jcnlwdGVkU3RyaW5nKSB7XG4gICAgICAgICAgICB0aHJvdyBgVW5zdXBwb3J0IGZvcm1hdCBmb3IgZ2VuZXJhdGVFbmNyeXB0ZWRQYXJhbWV0ZXJzICR7Zm9ybWF0fWA7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKCFwYXlsb2FkLnV1aWQpIHtcbiAgICAgICAgICAgIHRocm93ICdwYXlsb2FkLnV1aWQgY2Fubm90IGJlIG51bGwnO1xuICAgICAgICB9XG4gICAgICAgIGlmICgha2V5IHx8ICFrZXkuaXRlbXNLZXkpIHtcbiAgICAgICAgICAgIHRocm93ICdBdHRlbXB0aW5nIHRvIGdlbmVyYXRlRW5jcnlwdGVkUGFyYW1ldGVycyB3aXRoIG5vIGl0ZW1zS2V5Lic7XG4gICAgICAgIH1cbiAgICAgICAgY29uc3QgaXRlbUtleSA9IGF3YWl0IHRoaXMuY3J5cHRvLmdlbmVyYXRlUmFuZG9tS2V5KFYwMDRBbGdvcml0aG0uRW5jcnlwdGlvbktleUxlbmd0aCk7XG4gICAgICAgIC8qKiBFbmNyeXB0IGNvbnRlbnQgd2l0aCBpdGVtX2tleSAqL1xuICAgICAgICBjb25zdCBjb250ZW50UGxhaW50ZXh0ID0gSlNPTi5zdHJpbmdpZnkocGF5bG9hZC5jb250ZW50KTtcbiAgICAgICAgY29uc3QgZW5jcnlwdGVkQ29udGVudFN0cmluZyA9IGF3YWl0IHRoaXMuZ2VuZXJhdGVFbmNyeXB0ZWRQcm90b2NvbFN0cmluZyhjb250ZW50UGxhaW50ZXh0LCBpdGVtS2V5LCBwYXlsb2FkLnV1aWQpO1xuICAgICAgICAvKiogRW5jcnlwdCBpdGVtX2tleSB3aXRoIG1hc3RlciBpdGVtRW5jcnlwdGlvbktleSAqL1xuICAgICAgICBjb25zdCBlbmNyeXB0ZWRJdGVtS2V5ID0gYXdhaXQgdGhpcy5nZW5lcmF0ZUVuY3J5cHRlZFByb3RvY29sU3RyaW5nKGl0ZW1LZXksIGtleS5pdGVtc0tleSwgcGF5bG9hZC51dWlkKTtcbiAgICAgICAgcmV0dXJuIENyZWF0ZUVuY3J5cHRpb25QYXJhbWV0ZXJzKHtcbiAgICAgICAgICAgIHV1aWQ6IHBheWxvYWQudXVpZCxcbiAgICAgICAgICAgIGl0ZW1zX2tleV9pZDoga2V5IGluc3RhbmNlb2YgU05JdGVtc0tleSA/IGtleS51dWlkIDogdW5kZWZpbmVkLFxuICAgICAgICAgICAgY29udGVudDogZW5jcnlwdGVkQ29udGVudFN0cmluZyxcbiAgICAgICAgICAgIGVuY19pdGVtX2tleTogZW5jcnlwdGVkSXRlbUtleVxuICAgICAgICB9KTtcbiAgICB9XG4gICAgYXN5bmMgZ2VuZXJhdGVEZWNyeXB0ZWRQYXJhbWV0ZXJzKGVuY3J5cHRlZFBhcmFtZXRlcnMsIGtleSkge1xuICAgICAgICBjb25zdCBmb3JtYXQgPSBlbmNyeXB0ZWRQYXJhbWV0ZXJzLmZvcm1hdDtcbiAgICAgICAgaWYgKChmb3JtYXQgPT09IFBheWxvYWRGb3JtYXQuRGVjcnlwdGVkQmFyZU9iamVjdCB8fFxuICAgICAgICAgICAgZm9ybWF0ID09PSBQYXlsb2FkRm9ybWF0LkRlY3J5cHRlZEJhc2U2NFN0cmluZykpIHtcbiAgICAgICAgICAgIHJldHVybiBzdXBlci5nZW5lcmF0ZURlY3J5cHRlZFBhcmFtZXRlcnMoZW5jcnlwdGVkUGFyYW1ldGVycywga2V5KTtcbiAgICAgICAgfVxuICAgICAgICBpZiAoIWVuY3J5cHRlZFBhcmFtZXRlcnMudXVpZCkge1xuICAgICAgICAgICAgdGhyb3cgJ2VuY3J5cHRlZFBhcmFtZXRlcnMudXVpZCBjYW5ub3QgYmUgbnVsbCc7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKCFrZXkgfHwgIWtleS5pdGVtc0tleSkge1xuICAgICAgICAgICAgdGhyb3cgJ0F0dGVtcHRpbmcgdG8gZ2VuZXJhdGVEZWNyeXB0ZWRQYXJhbWV0ZXJzIHdpdGggbm8gaXRlbXNLZXkuJztcbiAgICAgICAgfVxuICAgICAgICAvKiogRGVjcnlwdCBpdGVtX2tleSBwYXlsb2FkLiAqL1xuICAgICAgICBjb25zdCBpdGVtS2V5Q29tcG9uZW50cyA9IHRoaXMuZGVjb25zdHJ1Y3RFbmNyeXB0ZWRQYXlsb2FkU3RyaW5nKGVuY3J5cHRlZFBhcmFtZXRlcnMuZW5jX2l0ZW1fa2V5KTtcbiAgICAgICAgY29uc3QgaXRlbUtleSA9IGF3YWl0IHRoaXMuZGVjcnlwdFN0cmluZzAwNChpdGVtS2V5Q29tcG9uZW50cy5jaXBoZXJ0ZXh0LCBrZXkuaXRlbXNLZXksIGl0ZW1LZXlDb21wb25lbnRzLm5vbmNlLCB7IHU6IGVuY3J5cHRlZFBhcmFtZXRlcnMudXVpZCwgdjogaXRlbUtleUNvbXBvbmVudHMudmVyc2lvbiB9KTtcbiAgICAgICAgaWYgKCFpdGVtS2V5KSB7XG4gICAgICAgICAgICBjb25zb2xlLmVycm9yKCdFcnJvciBkZWNyeXB0aW5nIGl0ZW1LZXkgcGFyYW1ldGVycycsIGVuY3J5cHRlZFBhcmFtZXRlcnMpO1xuICAgICAgICAgICAgcmV0dXJuIENvcHlFbmNyeXB0aW9uUGFyYW1ldGVycyhlbmNyeXB0ZWRQYXJhbWV0ZXJzLCB7XG4gICAgICAgICAgICAgICAgZXJyb3JEZWNyeXB0aW5nOiB0cnVlLFxuICAgICAgICAgICAgICAgIGVycm9yRGVjcnlwdGluZ1ZhbHVlQ2hhbmdlZDogIWVuY3J5cHRlZFBhcmFtZXRlcnMuZXJyb3JEZWNyeXB0aW5nXG4gICAgICAgICAgICB9KTtcbiAgICAgICAgfVxuICAgICAgICAvKiogRGVjcnlwdCBjb250ZW50IHBheWxvYWQuICovXG4gICAgICAgIGNvbnN0IGNvbnRlbnRDb21wb25lbnRzID0gdGhpcy5kZWNvbnN0cnVjdEVuY3J5cHRlZFBheWxvYWRTdHJpbmcoZW5jcnlwdGVkUGFyYW1ldGVycy5jb250ZW50U3RyaW5nKTtcbiAgICAgICAgY29uc3QgY29udGVudCA9IGF3YWl0IHRoaXMuZGVjcnlwdFN0cmluZzAwNChjb250ZW50Q29tcG9uZW50cy5jaXBoZXJ0ZXh0LCBpdGVtS2V5LCBjb250ZW50Q29tcG9uZW50cy5ub25jZSwgeyB1OiBlbmNyeXB0ZWRQYXJhbWV0ZXJzLnV1aWQsIHY6IGNvbnRlbnRDb21wb25lbnRzLnZlcnNpb24gfSk7XG4gICAgICAgIGlmICghY29udGVudCkge1xuICAgICAgICAgICAgcmV0dXJuIENvcHlFbmNyeXB0aW9uUGFyYW1ldGVycyhlbmNyeXB0ZWRQYXJhbWV0ZXJzLCB7XG4gICAgICAgICAgICAgICAgZXJyb3JEZWNyeXB0aW5nOiB0cnVlLFxuICAgICAgICAgICAgICAgIGVycm9yRGVjcnlwdGluZ1ZhbHVlQ2hhbmdlZDogIWVuY3J5cHRlZFBhcmFtZXRlcnMuZXJyb3JEZWNyeXB0aW5nXG4gICAgICAgICAgICB9KTtcbiAgICAgICAgfVxuICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgIHJldHVybiBDb3B5RW5jcnlwdGlvblBhcmFtZXRlcnMoZW5jcnlwdGVkUGFyYW1ldGVycywge1xuICAgICAgICAgICAgICAgIGNvbnRlbnQ6IEpTT04ucGFyc2UoY29udGVudCksXG4gICAgICAgICAgICAgICAgaXRlbXNfa2V5X2lkOiB1bmRlZmluZWQsXG4gICAgICAgICAgICAgICAgZW5jX2l0ZW1fa2V5OiB1bmRlZmluZWQsXG4gICAgICAgICAgICAgICAgZXJyb3JEZWNyeXB0aW5nOiBmYWxzZSxcbiAgICAgICAgICAgICAgICBlcnJvckRlY3J5cHRpbmdWYWx1ZUNoYW5nZWQ6IGVuY3J5cHRlZFBhcmFtZXRlcnMuZXJyb3JEZWNyeXB0aW5nID09PSB0cnVlLFxuICAgICAgICAgICAgICAgIHdhaXRpbmdGb3JLZXk6IGZhbHNlLFxuICAgICAgICAgICAgfSk7XG4gICAgICAgIH1cbiAgICB9XG4gICAgZGVjb25zdHJ1Y3RFbmNyeXB0ZWRQYXlsb2FkU3RyaW5nKHBheWxvYWRTdHJpbmcpIHtcbiAgICAgICAgY29uc3QgY29tcG9uZW50cyA9IHBheWxvYWRTdHJpbmcuc3BsaXQoUEFSVElUSU9OX0NIQVJBQ1RFUik7XG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICB2ZXJzaW9uOiBjb21wb25lbnRzWzBdLFxuICAgICAgICAgICAgbm9uY2U6IGNvbXBvbmVudHNbMV0sXG4gICAgICAgICAgICBjaXBoZXJ0ZXh0OiBjb21wb25lbnRzWzJdLFxuICAgICAgICB9O1xuICAgIH1cbiAgICBhc3luYyBkZXJpdmVLZXkocGFzc3dvcmQsIHNhbHQsIGl0ZXJhdGlvbnMpIHtcbiAgICAgICAgY29uc3QgZGVyaXZlZEtleSA9IGF3YWl0IHRoaXMuY3J5cHRvLmFyZ29uMihwYXNzd29yZCwgc2FsdCwgaXRlcmF0aW9ucywgVjAwNEFsZ29yaXRobS5Bcmdvbk1lbUxpbWl0LCBWMDA0QWxnb3JpdGhtLkFyZ29uT3V0cHV0S2V5Qnl0ZXMpO1xuICAgICAgICBjb25zdCBwYXJ0aXRpb25zID0gdGhpcy5zcGxpdEtleShkZXJpdmVkS2V5LCAyKTtcbiAgICAgICAgY29uc3QgbWFzdGVyS2V5ID0gcGFydGl0aW9uc1swXTtcbiAgICAgICAgY29uc3Qgc2VydmVyUGFzc3dvcmQgPSBwYXJ0aXRpb25zWzFdO1xuICAgICAgICByZXR1cm4gU05Sb290S2V5LkNyZWF0ZSh7XG4gICAgICAgICAgICBtYXN0ZXJLZXksXG4gICAgICAgICAgICBzZXJ2ZXJQYXNzd29yZCxcbiAgICAgICAgICAgIHZlcnNpb246IHRoaXMudmVyc2lvblxuICAgICAgICB9KTtcbiAgICB9XG59XG4iXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFEQTtBQUFBO0FBQ0E7QUFEQTtBQUFBO0FBQ0E7QUFEQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQ0E7QUFEQTtBQUtBO0FBQ0E7QUFDQTtBQUNBO0FBRkE7QUFOQTtBQUNBO0FBREE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFDQTtBQURBO0FBQUE7QUFBQTtBQUNBO0FBREE7QUFBQTtBQVlBOzs7Ozs7Ozs7QUFaQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQ0E7QUFEQTtBQXFCQTtBQXJCQTtBQUNBO0FBREE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFDQTtBQURBO0FBQUE7QUFBQTtBQUNBO0FBREE7QUFBQTtBQXdCQTs7Ozs7O0FBeEJBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFDQTtBQURBO0FBOEJBO0FBOUJBO0FBQUE7QUFDQTtBQURBO0FBK0JBO0FBL0JBO0FBQ0E7QUFEQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUNBO0FBREE7QUFBQTtBQUFBO0FBQ0E7QUFEQTtBQUFBO0FBa0NBOzs7Ozs7QUFsQ0E7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBd0NBO0FBQ0E7QUF6Q0E7QUFBQTtBQUNBO0FBREE7QUEwQ0E7QUExQ0E7QUFBQTtBQUNBO0FBREE7QUEyQ0E7QUEzQ0E7QUFBQTtBQUNBO0FBREE7QUE0Q0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBSkE7QUE3Q0E7QUFtREE7QUFBQTtBQUFBO0FBQ0E7QUFwREE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFDQTtBQURBO0FBQUE7QUFBQTtBQUNBO0FBREE7QUFBQTtBQXFEQTs7Ozs7Ozs7QUFyREE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQ0E7QUFEQTtBQUNBO0FBREE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUNBO0FBREE7QUFDQTtBQURBO0FBQUE7QUFDQTtBQURBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQ0E7QUFEQTtBQUFBO0FBQUE7QUFDQTtBQURBO0FBQUE7QUFxRUE7Ozs7Ozs7O0FBckVBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUNBO0FBREE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFDQTtBQURBO0FBQUE7QUFBQTtBQUNBO0FBREE7QUFBQTtBQStFQTs7Ozs7O0FBL0VBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFDQTtBQURBO0FBcUZBO0FBQ0E7QUF0RkE7QUFBQTtBQXVGQTtBQUFBO0FBQUE7QUFDQTtBQXhGQTtBQXVGQTtBQUNBO0FBeEZBO0FBQ0E7QUFEQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUNBO0FBREE7QUFBQTtBQUFBO0FBQ0E7QUFEQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFDQTtBQURBO0FBQ0E7QUFEQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQ0E7QUFEQTtBQUNBO0FBREE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUNBO0FBREE7QUFDQTtBQURBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFDQTtBQURBO0FBQ0E7QUFEQTtBQUFBO0FBQUE7QUFDQTtBQURBO0FBeUdBO0FBQ0E7QUFBQTtBQUNBO0FBM0dBO0FBQUE7QUFDQTtBQURBO0FBNEdBO0FBNUdBO0FBQUE7QUFDQTtBQURBO0FBOEdBO0FBOUdBO0FBZ0hBO0FBQ0E7QUFDQTtBQUNBO0FBSkE7QUFDQTtBQWhIQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUNBO0FBREE7QUFBQTtBQUFBO0FBQ0E7QUFEQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBdUhBO0FBQ0E7QUF4SEE7QUFBQTtBQUFBO0FBQUE7QUFDQTtBQURBO0FBQ0E7QUFEQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQ0E7QUFEQTtBQUNBO0FBREE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUNBO0FBREE7QUFDQTtBQURBO0FBa0lBO0FBQ0E7QUFuSUE7QUFBQTtBQW9JQTtBQUFBO0FBQUE7QUFDQTtBQXJJQTtBQW9JQTtBQUNBO0FBcklBO0FBQUE7QUFBQTtBQUFBO0FBQ0E7QUFxSUE7QUF0SUE7QUF3SUE7QUFDQTtBQUZBO0FBQ0E7QUF4SUE7QUE0SUE7QUFDQTtBQTdJQTtBQUFBO0FBOElBO0FBQUE7QUFBQTtBQUNBO0FBL0lBO0FBOElBO0FBQ0E7QUEvSUE7QUFBQTtBQUFBO0FBQUE7QUFDQTtBQURBO0FBaUpBO0FBQ0E7QUFGQTtBQUNBO0FBakpBO0FBQUE7QUF1SkE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBTkE7QUFDQTtBQXZKQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUNBO0FBREE7QUFBQTtBQUFBO0FBQ0E7QUFEQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBaUtBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFIQTtBQUtBO0FBdktBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFDQTtBQURBO0FBeUtBO0FBQ0E7QUFDQTtBQUNBO0FBNUtBO0FBOEtBO0FBQ0E7QUFDQTtBQUhBO0FBQ0E7QUE5S0E7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFDQTtBQURBO0FBQUE7QUFBQTtBQUNBO0FBREE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUVBO0FBQ0E7QUFIQTtBQUNBO0FBREE7QUFBQSIsInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./lib/protocol/operator/004/operator_004.ts\n')},"./lib/protocol/operator/algorithms.ts":
|
||
/*!*********************************************!*\
|
||
!*** ./lib/protocol/operator/algorithms.ts ***!
|
||
\*********************************************/
|
||
/*! exports provided: V001Algorithm, V002Algorithm, V003Algorithm, V004Algorithm */function(module,__webpack_exports__,__webpack_require__){"use strict";eval('__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "V001Algorithm", function() { return V001Algorithm; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "V002Algorithm", function() { return V002Algorithm; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "V003Algorithm", function() { return V003Algorithm; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "V004Algorithm", function() { return V004Algorithm; });\nvar V001Algorithm;\n\n(function (V001Algorithm) {\n V001Algorithm[V001Algorithm["SaltSeedLength"] = 128] = "SaltSeedLength";\n V001Algorithm[V001Algorithm["PbkdfMinCost"] = 3000] = "PbkdfMinCost";\n V001Algorithm[V001Algorithm["PbkdfOutputLength"] = 512] = "PbkdfOutputLength";\n V001Algorithm[V001Algorithm["EncryptionKeyLength"] = 256] = "EncryptionKeyLength";\n})(V001Algorithm || (V001Algorithm = {}));\n\nvar V002Algorithm;\n\n(function (V002Algorithm) {\n V002Algorithm[V002Algorithm["SaltSeedLength"] = 128] = "SaltSeedLength";\n V002Algorithm[V002Algorithm["PbkdfMinCost"] = 3000] = "PbkdfMinCost";\n V002Algorithm[V002Algorithm["PbkdfOutputLength"] = 768] = "PbkdfOutputLength";\n V002Algorithm[V002Algorithm["EncryptionKeyLength"] = 256] = "EncryptionKeyLength";\n V002Algorithm[V002Algorithm["EncryptionIvLength"] = 128] = "EncryptionIvLength";\n})(V002Algorithm || (V002Algorithm = {}));\n\nvar V003Algorithm;\n\n(function (V003Algorithm) {\n V003Algorithm[V003Algorithm["SaltSeedLength"] = 256] = "SaltSeedLength";\n V003Algorithm[V003Algorithm["PbkdfCost"] = 110000] = "PbkdfCost";\n V003Algorithm[V003Algorithm["PbkdfOutputLength"] = 768] = "PbkdfOutputLength";\n V003Algorithm[V003Algorithm["EncryptionKeyLength"] = 256] = "EncryptionKeyLength";\n V003Algorithm[V003Algorithm["EncryptionIvLength"] = 128] = "EncryptionIvLength";\n})(V003Algorithm || (V003Algorithm = {}));\n\nvar V004Algorithm;\n\n(function (V004Algorithm) {\n V004Algorithm[V004Algorithm["ArgonSaltSeedLength"] = 256] = "ArgonSaltSeedLength";\n V004Algorithm[V004Algorithm["ArgonSaltLength"] = 128] = "ArgonSaltLength";\n V004Algorithm[V004Algorithm["ArgonIterations"] = 5] = "ArgonIterations";\n V004Algorithm[V004Algorithm["ArgonMemLimit"] = 67108864] = "ArgonMemLimit";\n V004Algorithm[V004Algorithm["ArgonOutputKeyBytes"] = 64] = "ArgonOutputKeyBytes";\n V004Algorithm[V004Algorithm["EncryptionKeyLength"] = 256] = "EncryptionKeyLength";\n V004Algorithm[V004Algorithm["EncryptionNonceLength"] = 192] = "EncryptionNonceLength";\n})(V004Algorithm || (V004Algorithm = {}));//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9saWIvcHJvdG9jb2wvb3BlcmF0b3IvYWxnb3JpdGhtcy50cy5qcyIsInNvdXJjZXMiOlsid2VicGFjazovL1NOTGlicmFyeS8uL2xpYi9wcm90b2NvbC9vcGVyYXRvci9hbGdvcml0aG1zLnRzPzhkZDQiXSwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0IHZhciBWMDAxQWxnb3JpdGhtO1xuKGZ1bmN0aW9uIChWMDAxQWxnb3JpdGhtKSB7XG4gICAgVjAwMUFsZ29yaXRobVtWMDAxQWxnb3JpdGhtW1wiU2FsdFNlZWRMZW5ndGhcIl0gPSAxMjhdID0gXCJTYWx0U2VlZExlbmd0aFwiO1xuICAgIFYwMDFBbGdvcml0aG1bVjAwMUFsZ29yaXRobVtcIlBia2RmTWluQ29zdFwiXSA9IDMwMDBdID0gXCJQYmtkZk1pbkNvc3RcIjtcbiAgICBWMDAxQWxnb3JpdGhtW1YwMDFBbGdvcml0aG1bXCJQYmtkZk91dHB1dExlbmd0aFwiXSA9IDUxMl0gPSBcIlBia2RmT3V0cHV0TGVuZ3RoXCI7XG4gICAgVjAwMUFsZ29yaXRobVtWMDAxQWxnb3JpdGhtW1wiRW5jcnlwdGlvbktleUxlbmd0aFwiXSA9IDI1Nl0gPSBcIkVuY3J5cHRpb25LZXlMZW5ndGhcIjtcbn0pKFYwMDFBbGdvcml0aG0gfHwgKFYwMDFBbGdvcml0aG0gPSB7fSkpO1xuZXhwb3J0IHZhciBWMDAyQWxnb3JpdGhtO1xuKGZ1bmN0aW9uIChWMDAyQWxnb3JpdGhtKSB7XG4gICAgVjAwMkFsZ29yaXRobVtWMDAyQWxnb3JpdGhtW1wiU2FsdFNlZWRMZW5ndGhcIl0gPSAxMjhdID0gXCJTYWx0U2VlZExlbmd0aFwiO1xuICAgIFYwMDJBbGdvcml0aG1bVjAwMkFsZ29yaXRobVtcIlBia2RmTWluQ29zdFwiXSA9IDMwMDBdID0gXCJQYmtkZk1pbkNvc3RcIjtcbiAgICBWMDAyQWxnb3JpdGhtW1YwMDJBbGdvcml0aG1bXCJQYmtkZk91dHB1dExlbmd0aFwiXSA9IDc2OF0gPSBcIlBia2RmT3V0cHV0TGVuZ3RoXCI7XG4gICAgVjAwMkFsZ29yaXRobVtWMDAyQWxnb3JpdGhtW1wiRW5jcnlwdGlvbktleUxlbmd0aFwiXSA9IDI1Nl0gPSBcIkVuY3J5cHRpb25LZXlMZW5ndGhcIjtcbiAgICBWMDAyQWxnb3JpdGhtW1YwMDJBbGdvcml0aG1bXCJFbmNyeXB0aW9uSXZMZW5ndGhcIl0gPSAxMjhdID0gXCJFbmNyeXB0aW9uSXZMZW5ndGhcIjtcbn0pKFYwMDJBbGdvcml0aG0gfHwgKFYwMDJBbGdvcml0aG0gPSB7fSkpO1xuZXhwb3J0IHZhciBWMDAzQWxnb3JpdGhtO1xuKGZ1bmN0aW9uIChWMDAzQWxnb3JpdGhtKSB7XG4gICAgVjAwM0FsZ29yaXRobVtWMDAzQWxnb3JpdGhtW1wiU2FsdFNlZWRMZW5ndGhcIl0gPSAyNTZdID0gXCJTYWx0U2VlZExlbmd0aFwiO1xuICAgIFYwMDNBbGdvcml0aG1bVjAwM0FsZ29yaXRobVtcIlBia2RmQ29zdFwiXSA9IDExMDAwMF0gPSBcIlBia2RmQ29zdFwiO1xuICAgIFYwMDNBbGdvcml0aG1bVjAwM0FsZ29yaXRobVtcIlBia2RmT3V0cHV0TGVuZ3RoXCJdID0gNzY4XSA9IFwiUGJrZGZPdXRwdXRMZW5ndGhcIjtcbiAgICBWMDAzQWxnb3JpdGhtW1YwMDNBbGdvcml0aG1bXCJFbmNyeXB0aW9uS2V5TGVuZ3RoXCJdID0gMjU2XSA9IFwiRW5jcnlwdGlvbktleUxlbmd0aFwiO1xuICAgIFYwMDNBbGdvcml0aG1bVjAwM0FsZ29yaXRobVtcIkVuY3J5cHRpb25Jdkxlbmd0aFwiXSA9IDEyOF0gPSBcIkVuY3J5cHRpb25Jdkxlbmd0aFwiO1xufSkoVjAwM0FsZ29yaXRobSB8fCAoVjAwM0FsZ29yaXRobSA9IHt9KSk7XG5leHBvcnQgdmFyIFYwMDRBbGdvcml0aG07XG4oZnVuY3Rpb24gKFYwMDRBbGdvcml0aG0pIHtcbiAgICBWMDA0QWxnb3JpdGhtW1YwMDRBbGdvcml0aG1bXCJBcmdvblNhbHRTZWVkTGVuZ3RoXCJdID0gMjU2XSA9IFwiQXJnb25TYWx0U2VlZExlbmd0aFwiO1xuICAgIFYwMDRBbGdvcml0aG1bVjAwNEFsZ29yaXRobVtcIkFyZ29uU2FsdExlbmd0aFwiXSA9IDEyOF0gPSBcIkFyZ29uU2FsdExlbmd0aFwiO1xuICAgIFYwMDRBbGdvcml0aG1bVjAwNEFsZ29yaXRobVtcIkFyZ29uSXRlcmF0aW9uc1wiXSA9IDVdID0gXCJBcmdvbkl0ZXJhdGlvbnNcIjtcbiAgICBWMDA0QWxnb3JpdGhtW1YwMDRBbGdvcml0aG1bXCJBcmdvbk1lbUxpbWl0XCJdID0gNjcxMDg4NjRdID0gXCJBcmdvbk1lbUxpbWl0XCI7XG4gICAgVjAwNEFsZ29yaXRobVtWMDA0QWxnb3JpdGhtW1wiQXJnb25PdXRwdXRLZXlCeXRlc1wiXSA9IDY0XSA9IFwiQXJnb25PdXRwdXRLZXlCeXRlc1wiO1xuICAgIFYwMDRBbGdvcml0aG1bVjAwNEFsZ29yaXRobVtcIkVuY3J5cHRpb25LZXlMZW5ndGhcIl0gPSAyNTZdID0gXCJFbmNyeXB0aW9uS2V5TGVuZ3RoXCI7XG4gICAgVjAwNEFsZ29yaXRobVtWMDA0QWxnb3JpdGhtW1wiRW5jcnlwdGlvbk5vbmNlTGVuZ3RoXCJdID0gMTkyXSA9IFwiRW5jcnlwdGlvbk5vbmNlTGVuZ3RoXCI7XG59KShWMDA0QWxnb3JpdGhtIHx8IChWMDA0QWxnb3JpdGhtID0ge30pKTtcbiJdLCJtYXBwaW5ncyI6IkFBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBIiwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./lib/protocol/operator/algorithms.ts\n')},"./lib/protocol/operator/operator.ts":
|
||
/*!*******************************************!*\
|
||
!*** ./lib/protocol/operator/operator.ts ***!
|
||
\*******************************************/
|
||
/*! exports provided: SNProtocolOperator */function(module,__webpack_exports__,__webpack_require__){"use strict";eval('__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "SNProtocolOperator", function() { return SNProtocolOperator; });\n/* harmony import */ var _babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @babel/runtime/regenerator */ "./node_modules/@babel/runtime/regenerator/index.js");\n/* harmony import */ var _babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var _Models_functions__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! @Models/functions */ "./lib/models/functions.ts");\n/* harmony import */ var _uuid__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./../../uuid */ "./lib/uuid.ts");\n/* harmony import */ var _Models_generator__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! @Models/generator */ "./lib/models/generator.ts");\n/* harmony import */ var _Payloads_formats__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! @Payloads/formats */ "./lib/protocol/payloads/formats.ts");\n/* harmony import */ var _Payloads_generator__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! @Payloads/generator */ "./lib/protocol/payloads/generator.ts");\n/* harmony import */ var _Protocol_versions__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! @Protocol/versions */ "./lib/protocol/versions.ts");\n/* harmony import */ var _Lib_models__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! @Lib/models */ "./lib/models/index.ts");\n\n\nfunction asyncGeneratorStep(gen, resolve, reject, _next, _throw, key, arg) { try { var info = gen[key](arg); var value = info.value; } catch (error) { reject(error); return; } if (info.done) { resolve(value); } else { Promise.resolve(value).then(_next, _throw); } }\n\nfunction _asyncToGenerator(fn) { return function () { var self = this, args = arguments; return new Promise(function (resolve, reject) { var gen = fn.apply(self, args); function _next(value) { asyncGeneratorStep(gen, resolve, reject, _next, _throw, "next", value); } function _throw(err) { asyncGeneratorStep(gen, resolve, reject, _next, _throw, "throw", err); } _next(undefined); }); }; }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } }\n\nfunction _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); } }\n\nfunction _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; }\n\n\n\n\n\n\n\n\n/**w\n * An operator is responsible for performing crypto operations, such as generating keys\n * and encrypting/decrypting payloads. Operators interact directly with\n * platform dependent SNPureCrypto implementation to directly access cryptographic primitives.\n * Each operator is versioned according to the protocol version. Functions that are common\n * across all versions appear in this generic parent class.\n */\n\nvar SNProtocolOperator = /*#__PURE__*/function () {\n function SNProtocolOperator(crypto) {\n _classCallCheck(this, SNProtocolOperator);\n\n this.crypto = crypto;\n }\n\n _createClass(SNProtocolOperator, [{\n key: "firstHalfOfKey",\n value: function () {\n var _firstHalfOfKey = _asyncToGenerator( /*#__PURE__*/_babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0___default.a.mark(function _callee(key) {\n return _babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0___default.a.wrap(function _callee$(_context) {\n while (1) {\n switch (_context.prev = _context.next) {\n case 0:\n return _context.abrupt("return", key.substring(0, key.length / 2));\n\n case 1:\n case "end":\n return _context.stop();\n }\n }\n }, _callee);\n }));\n\n function firstHalfOfKey(_x) {\n return _firstHalfOfKey.apply(this, arguments);\n }\n\n return firstHalfOfKey;\n }()\n }, {\n key: "secondHalfOfKey",\n value: function () {\n var _secondHalfOfKey = _asyncToGenerator( /*#__PURE__*/_babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0___default.a.mark(function _callee2(key) {\n return _babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0___default.a.wrap(function _callee2$(_context2) {\n while (1) {\n switch (_context2.prev = _context2.next) {\n case 0:\n return _context2.abrupt("return", key.substring(key.length / 2, key.length));\n\n case 1:\n case "end":\n return _context2.stop();\n }\n }\n }, _callee2);\n }));\n\n function secondHalfOfKey(_x2) {\n return _secondHalfOfKey.apply(this, arguments);\n }\n\n return secondHalfOfKey;\n }()\n }, {\n key: "splitKey",\n value: function splitKey(key, parts) {\n var outputLength = key.length;\n var partLength = outputLength / parts;\n var partitions = [];\n\n for (var i = 0; i < parts; i++) {\n var partition = key.slice(partLength * i, partLength * (i + 1));\n partitions.push(partition);\n }\n\n return partitions;\n }\n /**\n * Creates a new random SNItemsKey to use for item encryption.\n * The consumer must save/sync this item.\n */\n\n }, {\n key: "createItemsKey",\n value: function () {\n var _createItemsKey = _asyncToGenerator( /*#__PURE__*/_babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0___default.a.mark(function _callee3() {\n var content, payload;\n return _babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0___default.a.wrap(function _callee3$(_context3) {\n while (1) {\n switch (_context3.prev = _context3.next) {\n case 0:\n _context3.next = 2;\n return this.generateNewItemsKeyContent();\n\n case 2:\n content = _context3.sent;\n _context3.t0 = _Payloads_generator__WEBPACK_IMPORTED_MODULE_5__["CreateMaxPayloadFromAnyObject"];\n _context3.next = 6;\n return _uuid__WEBPACK_IMPORTED_MODULE_2__["Uuid"].GenerateUuid();\n\n case 6:\n _context3.t1 = _context3.sent;\n _context3.t2 = _Lib_models__WEBPACK_IMPORTED_MODULE_7__["ContentType"].ItemsKey;\n _context3.t3 = Object(_Models_functions__WEBPACK_IMPORTED_MODULE_1__["FillItemContent"])(content);\n _context3.t4 = {\n uuid: _context3.t1,\n content_type: _context3.t2,\n content: _context3.t3\n };\n payload = (0, _context3.t0)(_context3.t4);\n return _context3.abrupt("return", Object(_Models_generator__WEBPACK_IMPORTED_MODULE_3__["CreateItemFromPayload"])(payload));\n\n case 12:\n case "end":\n return _context3.stop();\n }\n }\n }, _callee3, this);\n }));\n\n function createItemsKey() {\n return _createItemsKey.apply(this, arguments);\n }\n\n return createItemsKey;\n }()\n /**\n * Converts a bare payload into an encrypted one in the desired format.\n * @param payload - The non-encrypted payload object to encrypt\n * @param key - The key to use to encrypt the payload. Can be either\n * a RootKey (when encrypting payloads that require root key encryption, such as encrypting\n * items keys), or an ItemsKey (if encrypted regular items)\n * @param format - The desired result format\n */\n\n }, {\n key: "generateEncryptedParameters",\n value: function () {\n var _generateEncryptedParameters = _asyncToGenerator( /*#__PURE__*/_babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0___default.a.mark(function _callee4(payload, format, key) {\n var jsonString, base64String, content;\n return _babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0___default.a.wrap(function _callee4$(_context4) {\n while (1) {\n switch (_context4.prev = _context4.next) {\n case 0:\n if (!(format === _Payloads_formats__WEBPACK_IMPORTED_MODULE_4__["PayloadFormat"].DecryptedBareObject)) {\n _context4.next = 4;\n break;\n }\n\n return _context4.abrupt("return", Object(_Payloads_generator__WEBPACK_IMPORTED_MODULE_5__["CreateEncryptionParameters"])({\n content: payload.content\n }));\n\n case 4:\n if (!(format === _Payloads_formats__WEBPACK_IMPORTED_MODULE_4__["PayloadFormat"].DecryptedBase64String)) {\n _context4.next = 13;\n break;\n }\n\n jsonString = JSON.stringify(payload.content);\n _context4.next = 8;\n return this.crypto.base64Encode(jsonString);\n\n case 8:\n base64String = _context4.sent;\n content = _Protocol_versions__WEBPACK_IMPORTED_MODULE_6__["ProtocolVersion"].V000Base64Decrypted + base64String;\n return _context4.abrupt("return", Object(_Payloads_generator__WEBPACK_IMPORTED_MODULE_5__["CreateEncryptionParameters"])({\n content: content\n }));\n\n case 13:\n throw "Must override generateEncryptedParameters to handle format ".concat(format, ".");\n\n case 14:\n case "end":\n return _context4.stop();\n }\n }\n }, _callee4, this);\n }));\n\n function generateEncryptedParameters(_x3, _x4, _x5) {\n return _generateEncryptedParameters.apply(this, arguments);\n }\n\n return generateEncryptedParameters;\n }()\n /**\n * Converts encrypted parameters (a subset of a Payload) into decrypted counterpart.\n * @param encryptedParameters - The encrypted payload object to decrypt\n * @param key - The key to use to decrypt the payload. Can be either\n * a RootKey (when encrypting payloads that require root key encryption, such as encrypting\n * items keys), or an ItemsKey (if encrypted regular items)\n */\n\n }, {\n key: "generateDecryptedParameters",\n value: function () {\n var _generateDecryptedParameters = _asyncToGenerator( /*#__PURE__*/_babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0___default.a.mark(function _callee5(encryptedParameters, key) {\n var format, contentString, decodedContent, jsonString;\n return _babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0___default.a.wrap(function _callee5$(_context5) {\n while (1) {\n switch (_context5.prev = _context5.next) {\n case 0:\n format = encryptedParameters.format;\n\n if (!(format === _Payloads_formats__WEBPACK_IMPORTED_MODULE_4__["PayloadFormat"].DecryptedBareObject)) {\n _context5.next = 5;\n break;\n }\n\n return _context5.abrupt("return", encryptedParameters);\n\n case 5:\n if (!(format === _Payloads_formats__WEBPACK_IMPORTED_MODULE_4__["PayloadFormat"].DecryptedBase64String)) {\n _context5.next = 20;\n break;\n }\n\n contentString = encryptedParameters.contentString.substring(_Protocol_versions__WEBPACK_IMPORTED_MODULE_6__["ProtocolVersion"].VersionLength, encryptedParameters.contentString.length);\n _context5.prev = 7;\n _context5.next = 10;\n return this.crypto.base64Decode(contentString);\n\n case 10:\n jsonString = _context5.sent;\n decodedContent = JSON.parse(jsonString);\n _context5.next = 17;\n break;\n\n case 14:\n _context5.prev = 14;\n _context5.t0 = _context5["catch"](7);\n decodedContent = encryptedParameters.content;\n\n case 17:\n return _context5.abrupt("return", Object(_Payloads_generator__WEBPACK_IMPORTED_MODULE_5__["CopyEncryptionParameters"])(encryptedParameters, {\n content: decodedContent\n }));\n\n case 20:\n throw "Must override generateDecryptedParameters to handle format ".concat(format, ".");\n\n case 21:\n case "end":\n return _context5.stop();\n }\n }\n }, _callee5, this, [[7, 14]]);\n }));\n\n function generateDecryptedParameters(_x6, _x7) {\n return _generateDecryptedParameters.apply(this, arguments);\n }\n\n return generateDecryptedParameters;\n }()\n }]);\n\n return SNProtocolOperator;\n}();//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9saWIvcHJvdG9jb2wvb3BlcmF0b3Ivb3BlcmF0b3IudHMuanMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly9TTkxpYnJhcnkvLi9saWIvcHJvdG9jb2wvb3BlcmF0b3Ivb3BlcmF0b3IudHM/Y2FhZSJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBGaWxsSXRlbUNvbnRlbnQgfSBmcm9tICdATW9kZWxzL2Z1bmN0aW9ucyc7XG5pbXBvcnQgeyBVdWlkIH0gZnJvbSAnLi8uLi8uLi91dWlkJztcbmltcG9ydCB7IENyZWF0ZUl0ZW1Gcm9tUGF5bG9hZCB9IGZyb20gJ0BNb2RlbHMvZ2VuZXJhdG9yJztcbmltcG9ydCB7IFBheWxvYWRGb3JtYXQgfSBmcm9tICdAUGF5bG9hZHMvZm9ybWF0cyc7XG5pbXBvcnQgeyBDcmVhdGVFbmNyeXB0aW9uUGFyYW1ldGVycywgQ29weUVuY3J5cHRpb25QYXJhbWV0ZXJzLCBDcmVhdGVNYXhQYXlsb2FkRnJvbUFueU9iamVjdCB9IGZyb20gJ0BQYXlsb2Fkcy9nZW5lcmF0b3InO1xuaW1wb3J0IHsgUHJvdG9jb2xWZXJzaW9uIH0gZnJvbSAnQFByb3RvY29sL3ZlcnNpb25zJztcbmltcG9ydCB7IENvbnRlbnRUeXBlIH0gZnJvbSAnQExpYi9tb2RlbHMnO1xuLyoqd1xuICogQW4gb3BlcmF0b3IgaXMgcmVzcG9uc2libGUgZm9yIHBlcmZvcm1pbmcgY3J5cHRvIG9wZXJhdGlvbnMsIHN1Y2ggYXMgZ2VuZXJhdGluZyBrZXlzXG4gKiBhbmQgZW5jcnlwdGluZy9kZWNyeXB0aW5nIHBheWxvYWRzLiBPcGVyYXRvcnMgaW50ZXJhY3QgZGlyZWN0bHkgd2l0aFxuICogcGxhdGZvcm0gZGVwZW5kZW50IFNOUHVyZUNyeXB0byBpbXBsZW1lbnRhdGlvbiB0byBkaXJlY3RseSBhY2Nlc3MgY3J5cHRvZ3JhcGhpYyBwcmltaXRpdmVzLlxuICogRWFjaCBvcGVyYXRvciBpcyB2ZXJzaW9uZWQgYWNjb3JkaW5nIHRvIHRoZSBwcm90b2NvbCB2ZXJzaW9uLiBGdW5jdGlvbnMgdGhhdCBhcmUgY29tbW9uXG4gKiBhY3Jvc3MgYWxsIHZlcnNpb25zIGFwcGVhciBpbiB0aGlzIGdlbmVyaWMgcGFyZW50IGNsYXNzLlxuICovXG5leHBvcnQgY2xhc3MgU05Qcm90b2NvbE9wZXJhdG9yIHtcbiAgICBjb25zdHJ1Y3RvcihjcnlwdG8pIHtcbiAgICAgICAgdGhpcy5jcnlwdG8gPSBjcnlwdG87XG4gICAgfVxuICAgIGFzeW5jIGZpcnN0SGFsZk9mS2V5KGtleSkge1xuICAgICAgICByZXR1cm4ga2V5LnN1YnN0cmluZygwLCBrZXkubGVuZ3RoIC8gMik7XG4gICAgfVxuICAgIGFzeW5jIHNlY29uZEhhbGZPZktleShrZXkpIHtcbiAgICAgICAgcmV0dXJuIGtleS5zdWJzdHJpbmcoa2V5Lmxlbmd0aCAvIDIsIGtleS5sZW5ndGgpO1xuICAgIH1cbiAgICBzcGxpdEtleShrZXksIHBhcnRzKSB7XG4gICAgICAgIGNvbnN0IG91dHB1dExlbmd0aCA9IGtleS5sZW5ndGg7XG4gICAgICAgIGNvbnN0IHBhcnRMZW5ndGggPSBvdXRwdXRMZW5ndGggLyBwYXJ0cztcbiAgICAgICAgY29uc3QgcGFydGl0aW9ucyA9IFtdO1xuICAgICAgICBmb3IgKGxldCBpID0gMDsgaSA8IHBhcnRzOyBpKyspIHtcbiAgICAgICAgICAgIGNvbnN0IHBhcnRpdGlvbiA9IGtleS5zbGljZShwYXJ0TGVuZ3RoICogaSwgcGFydExlbmd0aCAqIChpICsgMSkpO1xuICAgICAgICAgICAgcGFydGl0aW9ucy5wdXNoKHBhcnRpdGlvbik7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHBhcnRpdGlvbnM7XG4gICAgfVxuICAgIC8qKlxuICAgICAqIENyZWF0ZXMgYSBuZXcgcmFuZG9tIFNOSXRlbXNLZXkgdG8gdXNlIGZvciBpdGVtIGVuY3J5cHRpb24uXG4gICAgICogVGhlIGNvbnN1bWVyIG11c3Qgc2F2ZS9zeW5jIHRoaXMgaXRlbS5cbiAgICAgKi9cbiAgICBhc3luYyBjcmVhdGVJdGVtc0tleSgpIHtcbiAgICAgICAgY29uc3QgY29udGVudCA9IGF3YWl0IHRoaXMuZ2VuZXJhdGVOZXdJdGVtc0tleUNvbnRlbnQoKTtcbiAgICAgICAgY29uc3QgcGF5bG9hZCA9IENyZWF0ZU1heFBheWxvYWRGcm9tQW55T2JqZWN0KHtcbiAgICAgICAgICAgIHV1aWQ6IGF3YWl0IFV1aWQuR2VuZXJhdGVVdWlkKCksXG4gICAgICAgICAgICBjb250ZW50X3R5cGU6IENvbnRlbnRUeXBlLkl0ZW1zS2V5LFxuICAgICAgICAgICAgY29udGVudDogRmlsbEl0ZW1Db250ZW50KGNvbnRlbnQpXG4gICAgICAgIH0pO1xuICAgICAgICByZXR1cm4gQ3JlYXRlSXRlbUZyb21QYXlsb2FkKHBheWxvYWQpO1xuICAgIH1cbiAgICAvKipcbiAgICAqIENvbnZlcnRzIGEgYmFyZSBwYXlsb2FkIGludG8gYW4gZW5jcnlwdGVkIG9uZSBpbiB0aGUgZGVzaXJlZCBmb3JtYXQuXG4gICAgKiBAcGFyYW0gcGF5bG9hZCAtIFRoZSBub24tZW5jcnlwdGVkIHBheWxvYWQgb2JqZWN0IHRvIGVuY3J5cHRcbiAgICAqIEBwYXJhbSBrZXkgLSBUaGUga2V5IHRvIHVzZSB0byBlbmNyeXB0IHRoZSBwYXlsb2FkLiBDYW4gYmUgZWl0aGVyXG4gICAgKiAgYSBSb290S2V5ICh3aGVuIGVuY3J5cHRpbmcgcGF5bG9hZHMgdGhhdCByZXF1aXJlIHJvb3Qga2V5IGVuY3J5cHRpb24sIHN1Y2ggYXMgZW5jcnlwdGluZ1xuICAgICogaXRlbXMga2V5cyksIG9yIGFuIEl0ZW1zS2V5IChpZiBlbmNyeXB0ZWQgcmVndWxhciBpdGVtcylcbiAgICAqIEBwYXJhbSBmb3JtYXQgLSBUaGUgZGVzaXJlZCByZXN1bHQgZm9ybWF0XG4gICAgKi9cbiAgICBhc3luYyBnZW5lcmF0ZUVuY3J5cHRlZFBhcmFtZXRlcnMocGF5bG9hZCwgZm9ybWF0LCBrZXkpIHtcbiAgICAgICAgaWYgKGZvcm1hdCA9PT0gUGF5bG9hZEZvcm1hdC5EZWNyeXB0ZWRCYXJlT2JqZWN0KSB7XG4gICAgICAgICAgICByZXR1cm4gQ3JlYXRlRW5jcnlwdGlvblBhcmFtZXRlcnMoe1xuICAgICAgICAgICAgICAgIGNvbnRlbnQ6IHBheWxvYWQuY29udGVudFxuICAgICAgICAgICAgfSk7XG4gICAgICAgIH1cbiAgICAgICAgZWxzZSBpZiAoZm9ybWF0ID09PSBQYXlsb2FkRm9ybWF0LkRlY3J5cHRlZEJhc2U2NFN0cmluZykge1xuICAgICAgICAgICAgY29uc3QganNvblN0cmluZyA9IEpTT04uc3RyaW5naWZ5KHBheWxvYWQuY29udGVudCk7XG4gICAgICAgICAgICBjb25zdCBiYXNlNjRTdHJpbmcgPSBhd2FpdCB0aGlzLmNyeXB0by5iYXNlNjRFbmNvZGUoanNvblN0cmluZyk7XG4gICAgICAgICAgICBjb25zdCBjb250ZW50ID0gUHJvdG9jb2xWZXJzaW9uLlYwMDBCYXNlNjREZWNyeXB0ZWQgKyBiYXNlNjRTdHJpbmc7XG4gICAgICAgICAgICByZXR1cm4gQ3JlYXRlRW5jcnlwdGlvblBhcmFtZXRlcnMoe1xuICAgICAgICAgICAgICAgIGNvbnRlbnQ6IGNvbnRlbnRcbiAgICAgICAgICAgIH0pO1xuICAgICAgICB9XG4gICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgdGhyb3cgYE11c3Qgb3ZlcnJpZGUgZ2VuZXJhdGVFbmNyeXB0ZWRQYXJhbWV0ZXJzIHRvIGhhbmRsZSBmb3JtYXQgJHtmb3JtYXR9LmA7XG4gICAgICAgIH1cbiAgICB9XG4gICAgLyoqXG4gICAgKiBDb252ZXJ0cyBlbmNyeXB0ZWQgcGFyYW1ldGVycyAoYSBzdWJzZXQgb2YgYSBQYXlsb2FkKSBpbnRvIGRlY3J5cHRlZCBjb3VudGVycGFydC5cbiAgICAqIEBwYXJhbSBlbmNyeXB0ZWRQYXJhbWV0ZXJzIC0gVGhlIGVuY3J5cHRlZCBwYXlsb2FkIG9iamVjdCB0byBkZWNyeXB0XG4gICAgKiBAcGFyYW0ga2V5IC0gVGhlIGtleSB0byB1c2UgdG8gZGVjcnlwdCB0aGUgcGF5bG9hZC4gQ2FuIGJlIGVpdGhlclxuICAgICogIGEgUm9vdEtleSAod2hlbiBlbmNyeXB0aW5nIHBheWxvYWRzIHRoYXQgcmVxdWlyZSByb290IGtleSBlbmNyeXB0aW9uLCBzdWNoIGFzIGVuY3J5cHRpbmdcbiAgICAqIGl0ZW1zIGtleXMpLCBvciBhbiBJdGVtc0tleSAoaWYgZW5jcnlwdGVkIHJlZ3VsYXIgaXRlbXMpXG4gICAgKi9cbiAgICBhc3luYyBnZW5lcmF0ZURlY3J5cHRlZFBhcmFtZXRlcnMoZW5jcnlwdGVkUGFyYW1ldGVycywga2V5KSB7XG4gICAgICAgIGNvbnN0IGZvcm1hdCA9IGVuY3J5cHRlZFBhcmFtZXRlcnMuZm9ybWF0O1xuICAgICAgICBpZiAoZm9ybWF0ID09PSBQYXlsb2FkRm9ybWF0LkRlY3J5cHRlZEJhcmVPYmplY3QpIHtcbiAgICAgICAgICAgIC8qKiBObyBkZWNyeXB0aW9uIHJlcXVpcmVkICovXG4gICAgICAgICAgICByZXR1cm4gZW5jcnlwdGVkUGFyYW1ldGVycztcbiAgICAgICAgfVxuICAgICAgICBlbHNlIGlmIChmb3JtYXQgPT09IFBheWxvYWRGb3JtYXQuRGVjcnlwdGVkQmFzZTY0U3RyaW5nKSB7XG4gICAgICAgICAgICBjb25zdCBjb250ZW50U3RyaW5nID0gZW5jcnlwdGVkUGFyYW1ldGVycy5jb250ZW50U3RyaW5nLnN1YnN0cmluZyhQcm90b2NvbFZlcnNpb24uVmVyc2lvbkxlbmd0aCwgZW5jcnlwdGVkUGFyYW1ldGVycy5jb250ZW50U3RyaW5nLmxlbmd0aCk7XG4gICAgICAgICAgICBsZXQgZGVjb2RlZENvbnRlbnQ7XG4gICAgICAgICAgICB0cnkge1xuICAgICAgICAgICAgICAgIGNvbnN0IGpzb25TdHJpbmcgPSBhd2FpdCB0aGlzLmNyeXB0by5iYXNlNjREZWNvZGUoY29udGVudFN0cmluZyk7XG4gICAgICAgICAgICAgICAgZGVjb2RlZENvbnRlbnQgPSBKU09OLnBhcnNlKGpzb25TdHJpbmcpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgY2F0Y2ggKGUpIHtcbiAgICAgICAgICAgICAgICBkZWNvZGVkQ29udGVudCA9IGVuY3J5cHRlZFBhcmFtZXRlcnMuY29udGVudDtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHJldHVybiBDb3B5RW5jcnlwdGlvblBhcmFtZXRlcnMoZW5jcnlwdGVkUGFyYW1ldGVycywge1xuICAgICAgICAgICAgICAgIGNvbnRlbnQ6IGRlY29kZWRDb250ZW50XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgfVxuICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgIHRocm93IGBNdXN0IG92ZXJyaWRlIGdlbmVyYXRlRGVjcnlwdGVkUGFyYW1ldGVycyB0byBoYW5kbGUgZm9ybWF0ICR7Zm9ybWF0fS5gO1xuICAgICAgICB9XG4gICAgfVxufVxuIl0sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7Ozs7Ozs7O0FBT0E7QUFDQTtBQUFBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFKQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFDQTtBQURBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQ0E7QUFEQTtBQUFBO0FBQUE7QUFDQTtBQURBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFDQTtBQURBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQ0E7QUFEQTtBQUFBO0FBQUE7QUFDQTtBQURBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFXQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7Ozs7O0FBcEJBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFDQTtBQURBO0FBeUJBO0FBekJBO0FBQUE7QUFBQTtBQUNBO0FBREE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQTJCQTtBQUNBO0FBQ0E7QUE3QkE7QUEwQkE7QUExQkE7QUFDQTtBQURBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQ0E7QUFEQTtBQUFBO0FBQUE7QUFDQTtBQURBO0FBQUE7QUFpQ0E7Ozs7Ozs7OztBQWpDQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUNBO0FBREE7QUE0Q0E7QUFEQTtBQUNBO0FBNUNBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFDQTtBQStDQTtBQWhEQTtBQUFBO0FBQ0E7QUFEQTtBQWlEQTtBQUNBO0FBbERBO0FBb0RBO0FBREE7QUFDQTtBQXBEQTtBQUFBO0FBQ0E7QUFEQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUNBO0FBREE7QUFBQTtBQUFBO0FBQ0E7QUFEQTtBQUFBO0FBMkRBOzs7Ozs7OztBQTNEQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFtRUE7QUFDQTtBQXBFQTtBQUFBO0FBQUE7QUFBQTtBQUNBO0FBREE7QUFDQTtBQURBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFDQTtBQXdFQTtBQXpFQTtBQUFBO0FBQUE7QUFDQTtBQURBO0FBNEVBO0FBQ0E7QUE3RUE7QUFBQTtBQUNBO0FBREE7QUFBQTtBQUFBO0FBZ0ZBO0FBQ0E7QUFqRkE7QUFBQTtBQW1GQTtBQURBO0FBQ0E7QUFuRkE7QUFBQTtBQUNBO0FBREE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFDQTtBQURBO0FBQUE7QUFBQTtBQUNBO0FBREE7QUFBQTtBQUFBO0FBQ0E7QUFEQTtBQUFBIiwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./lib/protocol/operator/operator.ts\n')},"./lib/protocol/payloads/deltas/conflict.ts":
|
||
/*!**************************************************!*\
|
||
!*** ./lib/protocol/payloads/deltas/conflict.ts ***!
|
||
\**************************************************/
|
||
/*! exports provided: ConflictDelta */function(module,__webpack_exports__,__webpack_require__){"use strict";eval('__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "ConflictDelta", function() { return ConflictDelta; });\n/* harmony import */ var _babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @babel/runtime/regenerator */ "./node_modules/@babel/runtime/regenerator/index.js");\n/* harmony import */ var _babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var _Lib_protocol_payloads_generator__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! @Lib/protocol/payloads/generator */ "./lib/protocol/payloads/generator.ts");\n/* harmony import */ var _Models_generator__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! @Models/generator */ "./lib/models/generator.ts");\n/* harmony import */ var _Protocol_collection_payload_collection__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! @Protocol/collection/payload_collection */ "./lib/protocol/collection/payload_collection.ts");\n/* harmony import */ var _Protocol_payloads_deltas_strategies__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! @Protocol/payloads/deltas/strategies */ "./lib/protocol/payloads/deltas/strategies.ts");\n/* harmony import */ var _Payloads_functions__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! @Payloads/functions */ "./lib/protocol/payloads/functions.ts");\n/* harmony import */ var _Lib_utils__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! @Lib/utils */ "./lib/utils.ts");\n/* harmony import */ var _fields__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! ../fields */ "./lib/protocol/payloads/fields.ts");\n\n\nfunction ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly) symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); keys.push.apply(keys, symbols); } return keys; }\n\nfunction _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; if (i % 2) { ownKeys(Object(source), true).forEach(function (key) { _defineProperty(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } } return target; }\n\nfunction _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\n\nfunction asyncGeneratorStep(gen, resolve, reject, _next, _throw, key, arg) { try { var info = gen[key](arg); var value = info.value; } catch (error) { reject(error); return; } if (info.done) { resolve(value); } else { Promise.resolve(value).then(_next, _throw); } }\n\nfunction _asyncToGenerator(fn) { return function () { var self = this, args = arguments; return new Promise(function (resolve, reject) { var gen = fn.apply(self, args); function _next(value) { asyncGeneratorStep(gen, resolve, reject, _next, _throw, "next", value); } function _throw(err) { asyncGeneratorStep(gen, resolve, reject, _next, _throw, "throw", err); } _next(undefined); }); }; }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } }\n\nfunction _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); } }\n\nfunction _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; }\n\n\n\n\n\n\n\n\n\nvar ConflictDelta = /*#__PURE__*/function () {\n function ConflictDelta(baseCollection, basePayload, applyPayload, source) {\n _classCallCheck(this, ConflictDelta);\n\n this.baseCollection = baseCollection;\n this.basePayload = basePayload;\n this.applyPayload = applyPayload;\n this.source = source;\n }\n\n _createClass(ConflictDelta, [{\n key: "resultingCollection",\n value: function () {\n var _resultingCollection = _asyncToGenerator( /*#__PURE__*/_babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0___default.a.mark(function _callee() {\n var tmpBaseItem, tmpApplyItem, strategy, results;\n return _babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0___default.a.wrap(function _callee$(_context) {\n while (1) {\n switch (_context.prev = _context.next) {\n case 0:\n tmpBaseItem = Object(_Models_generator__WEBPACK_IMPORTED_MODULE_2__["CreateItemFromPayload"])(this.basePayload);\n tmpApplyItem = Object(_Models_generator__WEBPACK_IMPORTED_MODULE_2__["CreateItemFromPayload"])(this.applyPayload);\n strategy = tmpBaseItem.strategyWhenConflictingWithItem(tmpApplyItem);\n _context.next = 5;\n return this.payloadsByHandlingStrategy(strategy);\n\n case 5:\n results = _context.sent;\n return _context.abrupt("return", _Protocol_collection_payload_collection__WEBPACK_IMPORTED_MODULE_3__["ImmutablePayloadCollection"].WithPayloads(results, this.source));\n\n case 7:\n case "end":\n return _context.stop();\n }\n }\n }, _callee, this);\n }));\n\n function resultingCollection() {\n return _resultingCollection.apply(this, arguments);\n }\n\n return resultingCollection;\n }()\n }, {\n key: "payloadsByHandlingStrategy",\n value: function () {\n var _payloadsByHandlingStrategy = _asyncToGenerator( /*#__PURE__*/_babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0___default.a.mark(function _callee2(strategy) {\n var existingConflict, updatedAt, leftPayload, result, _updatedAt, _leftPayload, rightPayloads, leftPayloads, rightPayload, refs, _updatedAt2, payload;\n\n return _babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0___default.a.wrap(function _callee2$(_context2) {\n while (1) {\n switch (_context2.prev = _context2.next) {\n case 0:\n /** Ensure no conflict has already been created with the incoming content.\n * This can occur in a multi-page sync request where in the middle of the request,\n * we make changes to many items, including duplicating, but since we are still not\n * uploading the changes until after the multi-page request completes, we may have\n * already conflicted this item. */\n existingConflict = this.baseCollection.conflictsOf(this.applyPayload.uuid)[0];\n\n if (!(existingConflict && Object(_Payloads_functions__WEBPACK_IMPORTED_MODULE_5__["PayloadContentsEqual"])(existingConflict, this.applyPayload))) {\n _context2.next = 3;\n break;\n }\n\n return _context2.abrupt("return", []);\n\n case 3:\n if (!(strategy === _Protocol_payloads_deltas_strategies__WEBPACK_IMPORTED_MODULE_4__["ConflictStrategy"].KeepLeft)) {\n _context2.next = 7;\n break;\n }\n\n updatedAt = Object(_Lib_utils__WEBPACK_IMPORTED_MODULE_6__["greaterOfTwoDates"])(this.basePayload.updated_at, this.applyPayload.updated_at);\n leftPayload = Object(_Lib_protocol_payloads_generator__WEBPACK_IMPORTED_MODULE_1__["CopyPayload"])(this.basePayload, {\n updated_at: updatedAt,\n dirty: true,\n dirtiedDate: new Date()\n });\n return _context2.abrupt("return", [leftPayload]);\n\n case 7:\n if (!(strategy === _Protocol_payloads_deltas_strategies__WEBPACK_IMPORTED_MODULE_4__["ConflictStrategy"].KeepRight)) {\n _context2.next = 10;\n break;\n }\n\n result = Object(_Lib_protocol_payloads_generator__WEBPACK_IMPORTED_MODULE_1__["PayloadByMerging"])(this.applyPayload, this.basePayload, [_fields__WEBPACK_IMPORTED_MODULE_7__["PayloadField"].LastSyncBegan], {\n lastSyncEnd: new Date()\n });\n return _context2.abrupt("return", [result]);\n\n case 10:\n if (!(strategy === _Protocol_payloads_deltas_strategies__WEBPACK_IMPORTED_MODULE_4__["ConflictStrategy"].KeepLeftDuplicateRight)) {\n _context2.next = 17;\n break;\n }\n\n _updatedAt = Object(_Lib_utils__WEBPACK_IMPORTED_MODULE_6__["greaterOfTwoDates"])(this.basePayload.updated_at, this.applyPayload.updated_at);\n _leftPayload = Object(_Lib_protocol_payloads_generator__WEBPACK_IMPORTED_MODULE_1__["CopyPayload"])(this.basePayload, {\n updated_at: _updatedAt,\n dirty: true,\n dirtiedDate: new Date()\n });\n _context2.next = 15;\n return Object(_Payloads_functions__WEBPACK_IMPORTED_MODULE_5__["PayloadsByDuplicating"])(this.applyPayload, this.baseCollection, true);\n\n case 15:\n rightPayloads = _context2.sent;\n return _context2.abrupt("return", [_leftPayload].concat(rightPayloads));\n\n case 17:\n if (!(strategy === _Protocol_payloads_deltas_strategies__WEBPACK_IMPORTED_MODULE_4__["ConflictStrategy"].DuplicateLeftKeepRight)) {\n _context2.next = 23;\n break;\n }\n\n _context2.next = 20;\n return Object(_Payloads_functions__WEBPACK_IMPORTED_MODULE_5__["PayloadsByDuplicating"])(this.basePayload, this.baseCollection, true);\n\n case 20:\n leftPayloads = _context2.sent;\n rightPayload = Object(_Lib_protocol_payloads_generator__WEBPACK_IMPORTED_MODULE_1__["PayloadByMerging"])(this.applyPayload, this.basePayload, [_fields__WEBPACK_IMPORTED_MODULE_7__["PayloadField"].LastSyncBegan], {\n lastSyncEnd: new Date()\n });\n return _context2.abrupt("return", leftPayloads.concat([rightPayload]));\n\n case 23:\n if (!(strategy === _Protocol_payloads_deltas_strategies__WEBPACK_IMPORTED_MODULE_4__["ConflictStrategy"].KeepLeftMergeRefs)) {\n _context2.next = 28;\n break;\n }\n\n refs = Object(_Lib_utils__WEBPACK_IMPORTED_MODULE_6__["uniqCombineObjArrays"])(this.basePayload.contentObject.references, this.applyPayload.contentObject.references, [\'uuid\', \'content_type\']);\n _updatedAt2 = Object(_Lib_utils__WEBPACK_IMPORTED_MODULE_6__["greaterOfTwoDates"])(this.basePayload.updated_at, this.applyPayload.updated_at);\n payload = Object(_Lib_protocol_payloads_generator__WEBPACK_IMPORTED_MODULE_1__["CopyPayload"])(this.basePayload, {\n updated_at: _updatedAt2,\n dirty: true,\n dirtiedDate: new Date(),\n content: _objectSpread({}, this.basePayload.safeContent, {\n references: refs\n })\n });\n return _context2.abrupt("return", [payload]);\n\n case 28:\n throw \'Unhandled strategy\';\n\n case 29:\n case "end":\n return _context2.stop();\n }\n }\n }, _callee2, this);\n }));\n\n function payloadsByHandlingStrategy(_x) {\n return _payloadsByHandlingStrategy.apply(this, arguments);\n }\n\n return payloadsByHandlingStrategy;\n }()\n }]);\n\n return ConflictDelta;\n}();//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9saWIvcHJvdG9jb2wvcGF5bG9hZHMvZGVsdGFzL2NvbmZsaWN0LnRzLmpzIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vU05MaWJyYXJ5Ly4vbGliL3Byb3RvY29sL3BheWxvYWRzL2RlbHRhcy9jb25mbGljdC50cz9jMzA5Il0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IFBheWxvYWRCeU1lcmdpbmcgfSBmcm9tICdATGliL3Byb3RvY29sL3BheWxvYWRzL2dlbmVyYXRvcic7XG5pbXBvcnQgeyBDcmVhdGVJdGVtRnJvbVBheWxvYWQgfSBmcm9tICdATW9kZWxzL2dlbmVyYXRvcic7XG5pbXBvcnQgeyBJbW11dGFibGVQYXlsb2FkQ29sbGVjdGlvbiB9IGZyb20gXCJAUHJvdG9jb2wvY29sbGVjdGlvbi9wYXlsb2FkX2NvbGxlY3Rpb25cIjtcbmltcG9ydCB7IENvbmZsaWN0U3RyYXRlZ3kgfSBmcm9tICdAUHJvdG9jb2wvcGF5bG9hZHMvZGVsdGFzL3N0cmF0ZWdpZXMnO1xuaW1wb3J0IHsgQ29weVBheWxvYWQgfSBmcm9tICdAUGF5bG9hZHMvZ2VuZXJhdG9yJztcbmltcG9ydCB7IFBheWxvYWRzQnlEdXBsaWNhdGluZywgUGF5bG9hZENvbnRlbnRzRXF1YWwgfSBmcm9tICdAUGF5bG9hZHMvZnVuY3Rpb25zJztcbmltcG9ydCB7IGdyZWF0ZXJPZlR3b0RhdGVzLCB1bmlxQ29tYmluZU9iakFycmF5cyB9IGZyb20gJ0BMaWIvdXRpbHMnO1xuaW1wb3J0IHsgUGF5bG9hZEZpZWxkIH0gZnJvbSAnLi4vZmllbGRzJztcbmV4cG9ydCBjbGFzcyBDb25mbGljdERlbHRhIHtcbiAgICBjb25zdHJ1Y3RvcihiYXNlQ29sbGVjdGlvbiwgYmFzZVBheWxvYWQsIGFwcGx5UGF5bG9hZCwgc291cmNlKSB7XG4gICAgICAgIHRoaXMuYmFzZUNvbGxlY3Rpb24gPSBiYXNlQ29sbGVjdGlvbjtcbiAgICAgICAgdGhpcy5iYXNlUGF5bG9hZCA9IGJhc2VQYXlsb2FkO1xuICAgICAgICB0aGlzLmFwcGx5UGF5bG9hZCA9IGFwcGx5UGF5bG9hZDtcbiAgICAgICAgdGhpcy5zb3VyY2UgPSBzb3VyY2U7XG4gICAgfVxuICAgIGFzeW5jIHJlc3VsdGluZ0NvbGxlY3Rpb24oKSB7XG4gICAgICAgIGNvbnN0IHRtcEJhc2VJdGVtID0gQ3JlYXRlSXRlbUZyb21QYXlsb2FkKHRoaXMuYmFzZVBheWxvYWQpO1xuICAgICAgICBjb25zdCB0bXBBcHBseUl0ZW0gPSBDcmVhdGVJdGVtRnJvbVBheWxvYWQodGhpcy5hcHBseVBheWxvYWQpO1xuICAgICAgICBjb25zdCBzdHJhdGVneSA9IHRtcEJhc2VJdGVtLnN0cmF0ZWd5V2hlbkNvbmZsaWN0aW5nV2l0aEl0ZW0odG1wQXBwbHlJdGVtKTtcbiAgICAgICAgY29uc3QgcmVzdWx0cyA9IGF3YWl0IHRoaXMucGF5bG9hZHNCeUhhbmRsaW5nU3RyYXRlZ3koc3RyYXRlZ3kpO1xuICAgICAgICByZXR1cm4gSW1tdXRhYmxlUGF5bG9hZENvbGxlY3Rpb24uV2l0aFBheWxvYWRzKHJlc3VsdHMsIHRoaXMuc291cmNlKTtcbiAgICB9XG4gICAgYXN5bmMgcGF5bG9hZHNCeUhhbmRsaW5nU3RyYXRlZ3koc3RyYXRlZ3kpIHtcbiAgICAgICAgLyoqIEVuc3VyZSBubyBjb25mbGljdCBoYXMgYWxyZWFkeSBiZWVuIGNyZWF0ZWQgd2l0aCB0aGUgaW5jb21pbmcgY29udGVudC5cbiAgICAgICAgICogVGhpcyBjYW4gb2NjdXIgaW4gYSBtdWx0aS1wYWdlIHN5bmMgcmVxdWVzdCB3aGVyZSBpbiB0aGUgbWlkZGxlIG9mIHRoZSByZXF1ZXN0LFxuICAgICAgICAgKiB3ZSBtYWtlIGNoYW5nZXMgdG8gbWFueSBpdGVtcywgaW5jbHVkaW5nIGR1cGxpY2F0aW5nLCBidXQgc2luY2Ugd2UgYXJlIHN0aWxsIG5vdFxuICAgICAgICAgKiB1cGxvYWRpbmcgdGhlIGNoYW5nZXMgdW50aWwgYWZ0ZXIgdGhlIG11bHRpLXBhZ2UgcmVxdWVzdCBjb21wbGV0ZXMsIHdlIG1heSBoYXZlXG4gICAgICAgICAqIGFscmVhZHkgY29uZmxpY3RlZCB0aGlzIGl0ZW0uICovXG4gICAgICAgIGNvbnN0IGV4aXN0aW5nQ29uZmxpY3QgPSB0aGlzLmJhc2VDb2xsZWN0aW9uLmNvbmZsaWN0c09mKHRoaXMuYXBwbHlQYXlsb2FkLnV1aWQpWzBdO1xuICAgICAgICBpZiAoZXhpc3RpbmdDb25mbGljdCAmJiBQYXlsb2FkQ29udGVudHNFcXVhbChleGlzdGluZ0NvbmZsaWN0LCB0aGlzLmFwcGx5UGF5bG9hZCkpIHtcbiAgICAgICAgICAgIC8qKiBDb25mbGljdCBleGlzdHMgYW5kIGl0cyBjb250ZW50cyBhcmUgdGhlIHNhbWUgYXMgaW5jb21pbmcgdmFsdWUsIGRvIG5vdCBtYWtlIGR1cGxpY2F0ZSAqL1xuICAgICAgICAgICAgcmV0dXJuIFtdO1xuICAgICAgICB9XG4gICAgICAgIGlmIChzdHJhdGVneSA9PT0gQ29uZmxpY3RTdHJhdGVneS5LZWVwTGVmdCkge1xuICAgICAgICAgICAgY29uc3QgdXBkYXRlZEF0ID0gZ3JlYXRlck9mVHdvRGF0ZXModGhpcy5iYXNlUGF5bG9hZC51cGRhdGVkX2F0LCB0aGlzLmFwcGx5UGF5bG9hZC51cGRhdGVkX2F0KTtcbiAgICAgICAgICAgIGNvbnN0IGxlZnRQYXlsb2FkID0gQ29weVBheWxvYWQodGhpcy5iYXNlUGF5bG9hZCwge1xuICAgICAgICAgICAgICAgIHVwZGF0ZWRfYXQ6IHVwZGF0ZWRBdCxcbiAgICAgICAgICAgICAgICBkaXJ0eTogdHJ1ZSxcbiAgICAgICAgICAgICAgICBkaXJ0aWVkRGF0ZTogbmV3IERhdGUoKSxcbiAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgcmV0dXJuIFtsZWZ0UGF5bG9hZF07XG4gICAgICAgIH1cbiAgICAgICAgaWYgKHN0cmF0ZWd5ID09PSBDb25mbGljdFN0cmF0ZWd5LktlZXBSaWdodCkge1xuICAgICAgICAgICAgY29uc3QgcmVzdWx0ID0gUGF5bG9hZEJ5TWVyZ2luZyh0aGlzLmFwcGx5UGF5bG9hZCwgdGhpcy5iYXNlUGF5bG9hZCwgW1BheWxvYWRGaWVsZC5MYXN0U3luY0JlZ2FuXSwge1xuICAgICAgICAgICAgICAgIGxhc3RTeW5jRW5kOiBuZXcgRGF0ZSgpXG4gICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIHJldHVybiBbcmVzdWx0XTtcbiAgICAgICAgfVxuICAgICAgICBpZiAoc3RyYXRlZ3kgPT09IENvbmZsaWN0U3RyYXRlZ3kuS2VlcExlZnREdXBsaWNhdGVSaWdodCkge1xuICAgICAgICAgICAgY29uc3QgdXBkYXRlZEF0ID0gZ3JlYXRlck9mVHdvRGF0ZXModGhpcy5iYXNlUGF5bG9hZC51cGRhdGVkX2F0LCB0aGlzLmFwcGx5UGF5bG9hZC51cGRhdGVkX2F0KTtcbiAgICAgICAgICAgIGNvbnN0IGxlZnRQYXlsb2FkID0gQ29weVBheWxvYWQodGhpcy5iYXNlUGF5bG9hZCwge1xuICAgICAgICAgICAgICAgIHVwZGF0ZWRfYXQ6IHVwZGF0ZWRBdCxcbiAgICAgICAgICAgICAgICBkaXJ0eTogdHJ1ZSxcbiAgICAgICAgICAgICAgICBkaXJ0aWVkRGF0ZTogbmV3IERhdGUoKSxcbiAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgY29uc3QgcmlnaHRQYXlsb2FkcyA9IGF3YWl0IFBheWxvYWRzQnlEdXBsaWNhdGluZyh0aGlzLmFwcGx5UGF5bG9hZCwgdGhpcy5iYXNlQ29sbGVjdGlvbiwgdHJ1ZSk7XG4gICAgICAgICAgICByZXR1cm4gW2xlZnRQYXlsb2FkXS5jb25jYXQocmlnaHRQYXlsb2Fkcyk7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKHN0cmF0ZWd5ID09PSBDb25mbGljdFN0cmF0ZWd5LkR1cGxpY2F0ZUxlZnRLZWVwUmlnaHQpIHtcbiAgICAgICAgICAgIGNvbnN0IGxlZnRQYXlsb2FkcyA9IGF3YWl0IFBheWxvYWRzQnlEdXBsaWNhdGluZyh0aGlzLmJhc2VQYXlsb2FkLCB0aGlzLmJhc2VDb2xsZWN0aW9uLCB0cnVlKTtcbiAgICAgICAgICAgIGNvbnN0IHJpZ2h0UGF5bG9hZCA9IFBheWxvYWRCeU1lcmdpbmcodGhpcy5hcHBseVBheWxvYWQsIHRoaXMuYmFzZVBheWxvYWQsIFtQYXlsb2FkRmllbGQuTGFzdFN5bmNCZWdhbl0sIHtcbiAgICAgICAgICAgICAgICBsYXN0U3luY0VuZDogbmV3IERhdGUoKVxuICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICByZXR1cm4gbGVmdFBheWxvYWRzLmNvbmNhdChbcmlnaHRQYXlsb2FkXSk7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKHN0cmF0ZWd5ID09PSBDb25mbGljdFN0cmF0ZWd5LktlZXBMZWZ0TWVyZ2VSZWZzKSB7XG4gICAgICAgICAgICBjb25zdCByZWZzID0gdW5pcUNvbWJpbmVPYmpBcnJheXModGhpcy5iYXNlUGF5bG9hZC5jb250ZW50T2JqZWN0LnJlZmVyZW5jZXMsIHRoaXMuYXBwbHlQYXlsb2FkLmNvbnRlbnRPYmplY3QucmVmZXJlbmNlcywgWyd1dWlkJywgJ2NvbnRlbnRfdHlwZSddKTtcbiAgICAgICAgICAgIGNvbnN0IHVwZGF0ZWRBdCA9IGdyZWF0ZXJPZlR3b0RhdGVzKHRoaXMuYmFzZVBheWxvYWQudXBkYXRlZF9hdCwgdGhpcy5hcHBseVBheWxvYWQudXBkYXRlZF9hdCk7XG4gICAgICAgICAgICBjb25zdCBwYXlsb2FkID0gQ29weVBheWxvYWQodGhpcy5iYXNlUGF5bG9hZCwge1xuICAgICAgICAgICAgICAgIHVwZGF0ZWRfYXQ6IHVwZGF0ZWRBdCxcbiAgICAgICAgICAgICAgICBkaXJ0eTogdHJ1ZSxcbiAgICAgICAgICAgICAgICBkaXJ0aWVkRGF0ZTogbmV3IERhdGUoKSxcbiAgICAgICAgICAgICAgICBjb250ZW50OiB7XG4gICAgICAgICAgICAgICAgICAgIC4uLnRoaXMuYmFzZVBheWxvYWQuc2FmZUNvbnRlbnQsXG4gICAgICAgICAgICAgICAgICAgIHJlZmVyZW5jZXM6IHJlZnNcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIHJldHVybiBbcGF5bG9hZF07XG4gICAgICAgIH1cbiAgICAgICAgdGhyb3cgJ1VuaGFuZGxlZCBzdHJhdGVneSc7XG4gICAgfVxufVxuIl0sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQVBBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQVFBO0FBQ0E7QUFDQTtBQVZBO0FBQUE7QUFDQTtBQURBO0FBV0E7QUFYQTtBQUNBO0FBREE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFDQTtBQURBO0FBQUE7QUFBQTtBQUNBO0FBREE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFDQTtBQURBO0FBQUE7QUFBQTtBQUFBO0FBZUE7Ozs7O0FBS0E7QUFDQTtBQXJCQTtBQUFBO0FBQUE7QUFBQTtBQUNBO0FBREE7QUFDQTtBQURBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFDQTtBQXlCQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBSEE7QUEzQkE7QUFDQTtBQURBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFDQTtBQWtDQTtBQUNBO0FBREE7QUFuQ0E7QUFDQTtBQURBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFDQTtBQXdDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBSEE7QUExQ0E7QUFBQTtBQUNBO0FBREE7QUErQ0E7QUEvQ0E7QUFDQTtBQURBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFDQTtBQURBO0FBQUE7QUFDQTtBQURBO0FBbURBO0FBQ0E7QUFDQTtBQURBO0FBcERBO0FBQ0E7QUFEQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQ0E7QUF5REE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFFQTtBQUZBO0FBSkE7QUE1REE7QUFDQTtBQURBO0FBQUE7QUFDQTtBQURBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQ0E7QUFEQTtBQUFBO0FBQUE7QUFDQTtBQURBO0FBQUE7QUFBQTtBQUNBO0FBREE7QUFBQSIsInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./lib/protocol/payloads/deltas/conflict.ts\n')},"./lib/protocol/payloads/deltas/delta.ts":
|
||
/*!***********************************************!*\
|
||
!*** ./lib/protocol/payloads/deltas/delta.ts ***!
|
||
\***********************************************/
|
||
/*! exports provided: PayloadsDelta */function(module,__webpack_exports__,__webpack_require__){"use strict";eval('__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "PayloadsDelta", function() { return PayloadsDelta; });\n/* harmony import */ var _babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @babel/runtime/regenerator */ "./node_modules/@babel/runtime/regenerator/index.js");\n/* harmony import */ var _babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0__);\n\n\nfunction asyncGeneratorStep(gen, resolve, reject, _next, _throw, key, arg) { try { var info = gen[key](arg); var value = info.value; } catch (error) { reject(error); return; } if (info.done) { resolve(value); } else { Promise.resolve(value).then(_next, _throw); } }\n\nfunction _asyncToGenerator(fn) { return function () { var self = this, args = arguments; return new Promise(function (resolve, reject) { var gen = fn.apply(self, args); function _next(value) { asyncGeneratorStep(gen, resolve, reject, _next, _throw, "next", value); } function _throw(err) { asyncGeneratorStep(gen, resolve, reject, _next, _throw, "throw", err); } _next(undefined); }); }; }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } }\n\nfunction _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); } }\n\nfunction _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; }\n\n/**\n * A payload delta is a class that defines instructions that process an incoming collection\n * of payloads, applies some set of operations on those payloads wrt to the current base state,\n * and returns the resulting collection. Deltas are purely functional and do not modify\n * input data, instead returning what the collection would look like after its been\n * transformed. The consumer may choose to act as they wish with this end result.\n *\n * A delta object takes a baseCollection (the current state of the data) and an applyCollection\n * (the data another source is attempting to merge on top of our base data). The delta will\n * then iterate over this data and return a `resultingCollection` object that includes the final\n * state of the data after the class-specific operations have been applied.\n *\n * For example, the RemoteRetrieved delta will take the current state of local data as\n * baseCollection, the data the server is sending as applyCollection, and determine what\n * the end state of the data should look like.\n */\nvar PayloadsDelta = /*#__PURE__*/function () {\n /**\n * @param baseCollection The authoratitive collection on top of which to compute changes.\n * @param applyCollection The collection of payloads to apply, from one given source only.\n * @param relatedCollectionSet A collection set (many collections) that contain payloads\n * that may be neccessary to carry out computation.\n */\n function PayloadsDelta(baseCollection, applyCollection, relatedCollectionSet) {\n _classCallCheck(this, PayloadsDelta);\n\n this.baseCollection = baseCollection;\n this.applyCollection = applyCollection;\n this.relatedCollectionSet = relatedCollectionSet;\n }\n\n _createClass(PayloadsDelta, [{\n key: "resultingCollection",\n value: function () {\n var _resultingCollection = _asyncToGenerator( /*#__PURE__*/_babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0___default.a.mark(function _callee() {\n return _babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0___default.a.wrap(function _callee$(_context) {\n while (1) {\n switch (_context.prev = _context.next) {\n case 0:\n throw \'Must override PayloadDelta.resultingCollection.\';\n\n case 1:\n case "end":\n return _context.stop();\n }\n }\n }, _callee);\n }));\n\n function resultingCollection() {\n return _resultingCollection.apply(this, arguments);\n }\n\n return resultingCollection;\n }()\n /**\n * @param {string} id - The uuid of the payload to find\n */\n\n }, {\n key: "findBasePayload",\n value: function findBasePayload(id) {\n return this.baseCollection.find(id);\n }\n }, {\n key: "findRelatedPayload",\n value: function findRelatedPayload(id, source) {\n var _this$relatedCollecti;\n\n var collection = (_this$relatedCollecti = this.relatedCollectionSet) === null || _this$relatedCollecti === void 0 ? void 0 : _this$relatedCollecti.collectionForSource(source);\n return collection === null || collection === void 0 ? void 0 : collection.find(id);\n }\n }]);\n\n return PayloadsDelta;\n}();//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9saWIvcHJvdG9jb2wvcGF5bG9hZHMvZGVsdGFzL2RlbHRhLnRzLmpzIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vU05MaWJyYXJ5Ly4vbGliL3Byb3RvY29sL3BheWxvYWRzL2RlbHRhcy9kZWx0YS50cz8yMmNlIl0sInNvdXJjZXNDb250ZW50IjpbIi8qKlxuICogQSBwYXlsb2FkIGRlbHRhIGlzIGEgY2xhc3MgdGhhdCBkZWZpbmVzIGluc3RydWN0aW9ucyB0aGF0IHByb2Nlc3MgYW4gaW5jb21pbmcgY29sbGVjdGlvblxuICogb2YgcGF5bG9hZHMsIGFwcGxpZXMgc29tZSBzZXQgb2Ygb3BlcmF0aW9ucyBvbiB0aG9zZSBwYXlsb2FkcyB3cnQgdG8gdGhlIGN1cnJlbnQgYmFzZSBzdGF0ZSxcbiAqIGFuZCByZXR1cm5zIHRoZSByZXN1bHRpbmcgY29sbGVjdGlvbi4gRGVsdGFzIGFyZSBwdXJlbHkgZnVuY3Rpb25hbCBhbmQgZG8gbm90IG1vZGlmeVxuICogaW5wdXQgZGF0YSwgaW5zdGVhZCByZXR1cm5pbmcgd2hhdCB0aGUgY29sbGVjdGlvbiB3b3VsZCBsb29rIGxpa2UgYWZ0ZXIgaXRzIGJlZW5cbiAqIHRyYW5zZm9ybWVkLiBUaGUgY29uc3VtZXIgbWF5IGNob29zZSB0byBhY3QgYXMgdGhleSB3aXNoIHdpdGggdGhpcyBlbmQgcmVzdWx0LlxuICpcbiAqIEEgZGVsdGEgb2JqZWN0IHRha2VzIGEgYmFzZUNvbGxlY3Rpb24gKHRoZSBjdXJyZW50IHN0YXRlIG9mIHRoZSBkYXRhKSBhbmQgYW4gYXBwbHlDb2xsZWN0aW9uXG4gKiAodGhlIGRhdGEgYW5vdGhlciBzb3VyY2UgaXMgYXR0ZW1wdGluZyB0byBtZXJnZSBvbiB0b3Agb2Ygb3VyIGJhc2UgZGF0YSkuIFRoZSBkZWx0YSB3aWxsXG4gKiB0aGVuIGl0ZXJhdGUgb3ZlciB0aGlzIGRhdGEgYW5kIHJldHVybiBhIGByZXN1bHRpbmdDb2xsZWN0aW9uYCBvYmplY3QgdGhhdCBpbmNsdWRlcyB0aGUgZmluYWxcbiAqIHN0YXRlIG9mIHRoZSBkYXRhIGFmdGVyIHRoZSBjbGFzcy1zcGVjaWZpYyBvcGVyYXRpb25zIGhhdmUgYmVlbiBhcHBsaWVkLlxuICpcbiAqIEZvciBleGFtcGxlLCB0aGUgUmVtb3RlUmV0cmlldmVkIGRlbHRhIHdpbGwgdGFrZSB0aGUgY3VycmVudCBzdGF0ZSBvZiBsb2NhbCBkYXRhIGFzXG4gKiBiYXNlQ29sbGVjdGlvbiwgdGhlIGRhdGEgdGhlIHNlcnZlciBpcyBzZW5kaW5nIGFzIGFwcGx5Q29sbGVjdGlvbiwgYW5kIGRldGVybWluZSB3aGF0XG4gKiB0aGUgZW5kIHN0YXRlIG9mIHRoZSBkYXRhIHNob3VsZCBsb29rIGxpa2UuXG4gKi9cbmV4cG9ydCBjbGFzcyBQYXlsb2Fkc0RlbHRhIHtcbiAgICAvKipcbiAgICAgKiBAcGFyYW0gYmFzZUNvbGxlY3Rpb24gVGhlIGF1dGhvcmF0aXRpdmUgY29sbGVjdGlvbiBvbiB0b3Agb2Ygd2hpY2ggdG8gY29tcHV0ZSBjaGFuZ2VzLlxuICAgICAqIEBwYXJhbSBhcHBseUNvbGxlY3Rpb24gVGhlIGNvbGxlY3Rpb24gb2YgcGF5bG9hZHMgdG8gYXBwbHksIGZyb20gb25lIGdpdmVuIHNvdXJjZSBvbmx5LlxuICAgICAqIEBwYXJhbSByZWxhdGVkQ29sbGVjdGlvblNldCBBIGNvbGxlY3Rpb24gc2V0IChtYW55IGNvbGxlY3Rpb25zKSB0aGF0IGNvbnRhaW4gcGF5bG9hZHNcbiAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhhdCBtYXkgYmUgbmVjY2Vzc2FyeSB0byBjYXJyeSBvdXQgY29tcHV0YXRpb24uXG4gICAgICovXG4gICAgY29uc3RydWN0b3IoYmFzZUNvbGxlY3Rpb24sIGFwcGx5Q29sbGVjdGlvbiwgcmVsYXRlZENvbGxlY3Rpb25TZXQpIHtcbiAgICAgICAgdGhpcy5iYXNlQ29sbGVjdGlvbiA9IGJhc2VDb2xsZWN0aW9uO1xuICAgICAgICB0aGlzLmFwcGx5Q29sbGVjdGlvbiA9IGFwcGx5Q29sbGVjdGlvbjtcbiAgICAgICAgdGhpcy5yZWxhdGVkQ29sbGVjdGlvblNldCA9IHJlbGF0ZWRDb2xsZWN0aW9uU2V0O1xuICAgIH1cbiAgICBhc3luYyByZXN1bHRpbmdDb2xsZWN0aW9uKCkge1xuICAgICAgICB0aHJvdyAnTXVzdCBvdmVycmlkZSBQYXlsb2FkRGVsdGEucmVzdWx0aW5nQ29sbGVjdGlvbi4nO1xuICAgIH1cbiAgICAvKipcbiAgICAgKiBAcGFyYW0ge3N0cmluZ30gaWQgIC0gVGhlIHV1aWQgb2YgdGhlIHBheWxvYWQgdG8gZmluZFxuICAgICAqL1xuICAgIGZpbmRCYXNlUGF5bG9hZChpZCkge1xuICAgICAgICByZXR1cm4gdGhpcy5iYXNlQ29sbGVjdGlvbi5maW5kKGlkKTtcbiAgICB9XG4gICAgZmluZFJlbGF0ZWRQYXlsb2FkKGlkLCBzb3VyY2UpIHtcbiAgICAgICAgY29uc3QgY29sbGVjdGlvbiA9IHRoaXMucmVsYXRlZENvbGxlY3Rpb25TZXQ/LmNvbGxlY3Rpb25Gb3JTb3VyY2Uoc291cmNlKTtcbiAgICAgICAgcmV0dXJuIGNvbGxlY3Rpb24/LmZpbmQoaWQpO1xuICAgIH1cbn1cbiJdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7OztBQUFBOzs7Ozs7Ozs7Ozs7Ozs7O0FBZ0JBO0FBQ0E7Ozs7OztBQU1BO0FBQUE7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFaQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFDQTtBQURBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQ0E7QUFEQTtBQUFBO0FBQUE7QUFDQTtBQURBO0FBQUE7QUFlQTs7OztBQWZBO0FBQUE7QUFBQTtBQW1CQTtBQUNBO0FBcEJBO0FBQUE7QUFBQTtBQXFCQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBeEJBO0FBQ0E7QUFEQTtBQUFBIiwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./lib/protocol/payloads/deltas/delta.ts\n')},"./lib/protocol/payloads/deltas/file_import.ts":
|
||
/*!*****************************************************!*\
|
||
!*** ./lib/protocol/payloads/deltas/file_import.ts ***!
|
||
\*****************************************************/
|
||
/*! exports provided: DeltaFileImport */function(module,__webpack_exports__,__webpack_require__){"use strict";eval('__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "DeltaFileImport", function() { return DeltaFileImport; });\n/* harmony import */ var _babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @babel/runtime/regenerator */ "./node_modules/@babel/runtime/regenerator/index.js");\n/* harmony import */ var _babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var _Payloads_generator__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! @Payloads/generator */ "./lib/protocol/payloads/generator.ts");\n/* harmony import */ var _Payloads_deltas_delta__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! @Payloads/deltas/delta */ "./lib/protocol/payloads/deltas/delta.ts");\n/* harmony import */ var _Payloads_deltas_conflict__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! @Payloads/deltas/conflict */ "./lib/protocol/payloads/deltas/conflict.ts");\n/* harmony import */ var _Payloads_sources__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! @Payloads/sources */ "./lib/protocol/payloads/sources.ts");\n/* harmony import */ var _Protocol_collection_payload_collection__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! @Protocol/collection/payload_collection */ "./lib/protocol/collection/payload_collection.ts");\n/* harmony import */ var _Lib_utils__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! @Lib/utils */ "./lib/utils.ts");\n\n\nfunction _typeof(obj) { "@babel/helpers - typeof"; if (typeof Symbol === "function" && typeof Symbol.iterator === "symbol") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }; } return _typeof(obj); }\n\nfunction asyncGeneratorStep(gen, resolve, reject, _next, _throw, key, arg) { try { var info = gen[key](arg); var value = info.value; } catch (error) { reject(error); return; } if (info.done) { resolve(value); } else { Promise.resolve(value).then(_next, _throw); } }\n\nfunction _asyncToGenerator(fn) { return function () { var self = this, args = arguments; return new Promise(function (resolve, reject) { var gen = fn.apply(self, args); function _next(value) { asyncGeneratorStep(gen, resolve, reject, _next, _throw, "next", value); } function _throw(err) { asyncGeneratorStep(gen, resolve, reject, _next, _throw, "throw", err); } _next(undefined); }); }; }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } }\n\nfunction _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); } }\n\nfunction _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; }\n\nfunction _possibleConstructorReturn(self, call) { if (call && (_typeof(call) === "object" || typeof call === "function")) { return call; } return _assertThisInitialized(self); }\n\nfunction _assertThisInitialized(self) { if (self === void 0) { throw new ReferenceError("this hasn\'t been initialised - super() hasn\'t been called"); } return self; }\n\nfunction _getPrototypeOf(o) { _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function _getPrototypeOf(o) { return o.__proto__ || Object.getPrototypeOf(o); }; return _getPrototypeOf(o); }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== "function" && superClass !== null) { throw new TypeError("Super expression must either be null or a function"); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, writable: true, configurable: true } }); if (superClass) _setPrototypeOf(subClass, superClass); }\n\nfunction _setPrototypeOf(o, p) { _setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) { o.__proto__ = p; return o; }; return _setPrototypeOf(o, p); }\n\n\n\n\n\n\n\nvar DeltaFileImport = /*#__PURE__*/function (_PayloadsDelta) {\n _inherits(DeltaFileImport, _PayloadsDelta);\n\n function DeltaFileImport() {\n _classCallCheck(this, DeltaFileImport);\n\n return _possibleConstructorReturn(this, _getPrototypeOf(DeltaFileImport).apply(this, arguments));\n }\n\n _createClass(DeltaFileImport, [{\n key: "resultingCollection",\n value: function () {\n var _resultingCollection = _asyncToGenerator( /*#__PURE__*/_babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0___default.a.mark(function _callee() {\n var results, _iteratorNormalCompletion, _didIteratorError, _iteratorError, _iterator, _step, payload, handled, payloads;\n\n return _babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0___default.a.wrap(function _callee$(_context) {\n while (1) {\n switch (_context.prev = _context.next) {\n case 0:\n results = [];\n _iteratorNormalCompletion = true;\n _didIteratorError = false;\n _iteratorError = undefined;\n _context.prev = 4;\n _iterator = this.applyCollection.all()[Symbol.iterator]();\n\n case 6:\n if (_iteratorNormalCompletion = (_step = _iterator.next()).done) {\n _context.next = 16;\n break;\n }\n\n payload = _step.value;\n _context.next = 10;\n return this.payloadsByHandlingPayload(payload, results);\n\n case 10:\n handled = _context.sent;\n payloads = handled.map(function (result) {\n return Object(_Payloads_generator__WEBPACK_IMPORTED_MODULE_1__["CopyPayload"])(result, {\n dirty: true,\n dirtiedDate: new Date(),\n deleted: false\n });\n });\n Object(_Lib_utils__WEBPACK_IMPORTED_MODULE_6__["extendArray"])(results, payloads);\n\n case 13:\n _iteratorNormalCompletion = true;\n _context.next = 6;\n break;\n\n case 16:\n _context.next = 22;\n break;\n\n case 18:\n _context.prev = 18;\n _context.t0 = _context["catch"](4);\n _didIteratorError = true;\n _iteratorError = _context.t0;\n\n case 22:\n _context.prev = 22;\n _context.prev = 23;\n\n if (!_iteratorNormalCompletion && _iterator.return != null) {\n _iterator.return();\n }\n\n case 25:\n _context.prev = 25;\n\n if (!_didIteratorError) {\n _context.next = 28;\n break;\n }\n\n throw _iteratorError;\n\n case 28:\n return _context.finish(25);\n\n case 29:\n return _context.finish(22);\n\n case 30:\n return _context.abrupt("return", _Protocol_collection_payload_collection__WEBPACK_IMPORTED_MODULE_5__["ImmutablePayloadCollection"].WithPayloads(results, _Payloads_sources__WEBPACK_IMPORTED_MODULE_4__["PayloadSource"].FileImport));\n\n case 31:\n case "end":\n return _context.stop();\n }\n }\n }, _callee, this, [[4, 18, 22, 30], [23,, 25, 29]]);\n }));\n\n function resultingCollection() {\n return _resultingCollection.apply(this, arguments);\n }\n\n return resultingCollection;\n }()\n }, {\n key: "payloadsByHandlingPayload",\n value: function () {\n var _payloadsByHandlingPayload = _asyncToGenerator( /*#__PURE__*/_babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0___default.a.mark(function _callee2(payload, currentResults) {\n var current, delta, deltaCollection;\n return _babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0___default.a.wrap(function _callee2$(_context2) {\n while (1) {\n switch (_context2.prev = _context2.next) {\n case 0:\n /**\n * Check to see if we\'ve already processed a payload for this id.\n * If so, that would be the latest value, and not what\'s in the base collection.\n */\n\n /*\n * Find the most recently created conflict if available, as that\n * would contain the most recent value.\n */\n current = currentResults.find(function (candidate) {\n return candidate.contentObject.conflict_of === payload.uuid;\n });\n /**\n * If no latest conflict, find by uuid directly.\n */\n\n if (!current) {\n current = currentResults.find(function (candidate) {\n return candidate.uuid === payload.uuid;\n });\n }\n /**\n * If not found in current results, use the base value.\n */\n\n\n if (!current) {\n current = this.findBasePayload(payload.uuid);\n }\n /**\n * If the current doesn\'t exist, we\'re creating a new item from payload.\n */\n\n\n if (current) {\n _context2.next = 5;\n break;\n }\n\n return _context2.abrupt("return", [payload]);\n\n case 5:\n delta = new _Payloads_deltas_conflict__WEBPACK_IMPORTED_MODULE_3__["ConflictDelta"](this.baseCollection, current, payload, _Payloads_sources__WEBPACK_IMPORTED_MODULE_4__["PayloadSource"].FileImport);\n _context2.next = 8;\n return delta.resultingCollection();\n\n case 8:\n deltaCollection = _context2.sent;\n return _context2.abrupt("return", deltaCollection.all());\n\n case 10:\n case "end":\n return _context2.stop();\n }\n }\n }, _callee2, this);\n }));\n\n function payloadsByHandlingPayload(_x, _x2) {\n return _payloadsByHandlingPayload.apply(this, arguments);\n }\n\n return payloadsByHandlingPayload;\n }()\n }]);\n\n return DeltaFileImport;\n}(_Payloads_deltas_delta__WEBPACK_IMPORTED_MODULE_2__["PayloadsDelta"]);//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9saWIvcHJvdG9jb2wvcGF5bG9hZHMvZGVsdGFzL2ZpbGVfaW1wb3J0LnRzLmpzIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vU05MaWJyYXJ5Ly4vbGliL3Byb3RvY29sL3BheWxvYWRzL2RlbHRhcy9maWxlX2ltcG9ydC50cz83OGM4Il0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvcHlQYXlsb2FkIH0gZnJvbSAnQFBheWxvYWRzL2dlbmVyYXRvcic7XG5pbXBvcnQgeyBQYXlsb2Fkc0RlbHRhIH0gZnJvbSAnQFBheWxvYWRzL2RlbHRhcy9kZWx0YSc7XG5pbXBvcnQgeyBDb25mbGljdERlbHRhIH0gZnJvbSAnQFBheWxvYWRzL2RlbHRhcy9jb25mbGljdCc7XG5pbXBvcnQgeyBQYXlsb2FkU291cmNlIH0gZnJvbSAnQFBheWxvYWRzL3NvdXJjZXMnO1xuaW1wb3J0IHsgSW1tdXRhYmxlUGF5bG9hZENvbGxlY3Rpb24gfSBmcm9tIFwiQFByb3RvY29sL2NvbGxlY3Rpb24vcGF5bG9hZF9jb2xsZWN0aW9uXCI7XG5pbXBvcnQgeyBleHRlbmRBcnJheSB9IGZyb20gJ0BMaWIvdXRpbHMnO1xuZXhwb3J0IGNsYXNzIERlbHRhRmlsZUltcG9ydCBleHRlbmRzIFBheWxvYWRzRGVsdGEge1xuICAgIGFzeW5jIHJlc3VsdGluZ0NvbGxlY3Rpb24oKSB7XG4gICAgICAgIGNvbnN0IHJlc3VsdHMgPSBbXTtcbiAgICAgICAgZm9yIChjb25zdCBwYXlsb2FkIG9mIHRoaXMuYXBwbHlDb2xsZWN0aW9uLmFsbCgpKSB7XG4gICAgICAgICAgICBjb25zdCBoYW5kbGVkID0gYXdhaXQgdGhpcy5wYXlsb2Fkc0J5SGFuZGxpbmdQYXlsb2FkKHBheWxvYWQsIHJlc3VsdHMpO1xuICAgICAgICAgICAgY29uc3QgcGF5bG9hZHMgPSBoYW5kbGVkLm1hcCgocmVzdWx0KSA9PiB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIENvcHlQYXlsb2FkKHJlc3VsdCwge1xuICAgICAgICAgICAgICAgICAgICBkaXJ0eTogdHJ1ZSxcbiAgICAgICAgICAgICAgICAgICAgZGlydGllZERhdGU6IG5ldyBEYXRlKCksXG4gICAgICAgICAgICAgICAgICAgIGRlbGV0ZWQ6IGZhbHNlXG4gICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIGV4dGVuZEFycmF5KHJlc3VsdHMsIHBheWxvYWRzKTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gSW1tdXRhYmxlUGF5bG9hZENvbGxlY3Rpb24uV2l0aFBheWxvYWRzKHJlc3VsdHMsIFBheWxvYWRTb3VyY2UuRmlsZUltcG9ydCk7XG4gICAgfVxuICAgIGFzeW5jIHBheWxvYWRzQnlIYW5kbGluZ1BheWxvYWQocGF5bG9hZCwgY3VycmVudFJlc3VsdHMpIHtcbiAgICAgICAgLyoqXG4gICAgICAgICAqIENoZWNrIHRvIHNlZSBpZiB3ZSd2ZSBhbHJlYWR5IHByb2Nlc3NlZCBhIHBheWxvYWQgZm9yIHRoaXMgaWQuXG4gICAgICAgICAqIElmIHNvLCB0aGF0IHdvdWxkIGJlIHRoZSBsYXRlc3QgdmFsdWUsIGFuZCBub3Qgd2hhdCdzIGluIHRoZSBiYXNlIGNvbGxlY3Rpb24uXG4gICAgICAgICAqL1xuICAgICAgICAvKlxuICAgICAgICAgKiBGaW5kIHRoZSBtb3N0IHJlY2VudGx5IGNyZWF0ZWQgY29uZmxpY3QgaWYgYXZhaWxhYmxlLCBhcyB0aGF0XG4gICAgICAgICAqIHdvdWxkIGNvbnRhaW4gdGhlIG1vc3QgcmVjZW50IHZhbHVlLlxuICAgICAgICAgKi9cbiAgICAgICAgbGV0IGN1cnJlbnQgPSBjdXJyZW50UmVzdWx0cy5maW5kKChjYW5kaWRhdGUpID0+IHtcbiAgICAgICAgICAgIHJldHVybiBjYW5kaWRhdGUuY29udGVudE9iamVjdC5jb25mbGljdF9vZiA9PT0gcGF5bG9hZC51dWlkO1xuICAgICAgICB9KTtcbiAgICAgICAgLyoqXG4gICAgICAgICAqIElmIG5vIGxhdGVzdCBjb25mbGljdCwgZmluZCBieSB1dWlkIGRpcmVjdGx5LlxuICAgICAgICAgKi9cbiAgICAgICAgaWYgKCFjdXJyZW50KSB7XG4gICAgICAgICAgICBjdXJyZW50ID0gY3VycmVudFJlc3VsdHMuZmluZCgoY2FuZGlkYXRlKSA9PiB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIGNhbmRpZGF0ZS51dWlkID09PSBwYXlsb2FkLnV1aWQ7XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgfVxuICAgICAgICAvKipcbiAgICAgICAgICogSWYgbm90IGZvdW5kIGluIGN1cnJlbnQgcmVzdWx0cywgdXNlIHRoZSBiYXNlIHZhbHVlLlxuICAgICAgICAgKi9cbiAgICAgICAgaWYgKCFjdXJyZW50KSB7XG4gICAgICAgICAgICBjdXJyZW50ID0gdGhpcy5maW5kQmFzZVBheWxvYWQocGF5bG9hZC51dWlkKTtcbiAgICAgICAgfVxuICAgICAgICAvKipcbiAgICAgICAgICogSWYgdGhlIGN1cnJlbnQgZG9lc24ndCBleGlzdCwgd2UncmUgY3JlYXRpbmcgYSBuZXcgaXRlbSBmcm9tIHBheWxvYWQuXG4gICAgICAgICAqL1xuICAgICAgICBpZiAoIWN1cnJlbnQpIHtcbiAgICAgICAgICAgIHJldHVybiBbcGF5bG9hZF07XG4gICAgICAgIH1cbiAgICAgICAgY29uc3QgZGVsdGEgPSBuZXcgQ29uZmxpY3REZWx0YSh0aGlzLmJhc2VDb2xsZWN0aW9uLCBjdXJyZW50LCBwYXlsb2FkLCBQYXlsb2FkU291cmNlLkZpbGVJbXBvcnQpO1xuICAgICAgICBjb25zdCBkZWx0YUNvbGxlY3Rpb24gPSBhd2FpdCBkZWx0YS5yZXN1bHRpbmdDb2xsZWN0aW9uKCk7XG4gICAgICAgIHJldHVybiBkZWx0YUNvbGxlY3Rpb24uYWxsKCk7XG4gICAgfVxufVxuIl0sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBREE7QUFBQTtBQUNBO0FBREE7QUFBQTtBQUNBO0FBREE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUNBO0FBREE7QUFBQTtBQUFBO0FBQUE7QUFFQTtBQUZBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFDQTtBQURBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFDQTtBQUVBO0FBSEE7QUFBQTtBQUNBO0FBREE7QUFJQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFIQTtBQUtBO0FBQ0E7QUFDQTtBQWJBO0FBQUE7QUFBQTtBQUFBO0FBQ0E7QUFEQTtBQUFBO0FBQUE7QUFDQTtBQURBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFDQTtBQURBO0FBQUE7QUFBQTtBQUNBO0FBREE7QUFBQTtBQUFBO0FBQ0E7QUFEQTtBQUFBO0FBQ0E7QUFEQTtBQUFBO0FBQUE7QUFBQTtBQUNBO0FBREE7QUFDQTtBQURBO0FBQUE7QUFDQTtBQURBO0FBQUE7QUFDQTtBQURBO0FBQUE7QUFDQTtBQURBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQ0E7QUFEQTtBQUFBO0FBQUE7QUFDQTtBQURBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFpQkE7Ozs7O0FBSUE7Ozs7QUFJQTtBQUNBO0FBQ0E7QUFDQTs7OztBQUdBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7Ozs7QUFHQTtBQUNBO0FBQ0E7QUFDQTs7Ozs7QUExQ0E7QUFBQTtBQUFBO0FBQUE7QUFDQTtBQURBO0FBQ0E7QUFEQTtBQWdEQTtBQWhEQTtBQUFBO0FBQ0E7QUFEQTtBQWlEQTtBQWpEQTtBQUNBO0FBREE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFDQTtBQURBO0FBQUE7QUFBQTtBQUNBO0FBREE7QUFBQTtBQUFBO0FBQ0E7QUFEQTtBQUFBIiwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./lib/protocol/payloads/deltas/file_import.ts\n')},"./lib/protocol/payloads/deltas/generator.ts":
|
||
/*!***************************************************!*\
|
||
!*** ./lib/protocol/payloads/deltas/generator.ts ***!
|
||
\***************************************************/
|
||
/*! exports provided: DeltaClassForSource */function(module,__webpack_exports__,__webpack_require__){"use strict";eval('__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "DeltaClassForSource", function() { return DeltaClassForSource; });\n/* harmony import */ var _remote_conflicts__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./remote_conflicts */ "./lib/protocol/payloads/deltas/remote_conflicts.ts");\n/* harmony import */ var _remote_saved__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./remote_saved */ "./lib/protocol/payloads/deltas/remote_saved.ts");\n/* harmony import */ var _remote_retrieved__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./remote_retrieved */ "./lib/protocol/payloads/deltas/remote_retrieved.ts");\n/* harmony import */ var _Payloads_sources__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! @Payloads/sources */ "./lib/protocol/payloads/sources.ts");\n\n\n\n\nfunction DeltaClassForSource(source) {\n if (source === _Payloads_sources__WEBPACK_IMPORTED_MODULE_3__["PayloadSource"].RemoteRetrieved) {\n return _remote_retrieved__WEBPACK_IMPORTED_MODULE_2__["DeltaRemoteRetrieved"];\n } else if (source === _Payloads_sources__WEBPACK_IMPORTED_MODULE_3__["PayloadSource"].RemoteSaved) {\n return _remote_saved__WEBPACK_IMPORTED_MODULE_1__["DeltaRemoteSaved"];\n } else if (source === _Payloads_sources__WEBPACK_IMPORTED_MODULE_3__["PayloadSource"].ConflictData || source === _Payloads_sources__WEBPACK_IMPORTED_MODULE_3__["PayloadSource"].ConflictUuid) {\n return _remote_conflicts__WEBPACK_IMPORTED_MODULE_0__["DeltaRemoteConflicts"];\n }\n}//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9saWIvcHJvdG9jb2wvcGF5bG9hZHMvZGVsdGFzL2dlbmVyYXRvci50cy5qcyIsInNvdXJjZXMiOlsid2VicGFjazovL1NOTGlicmFyeS8uL2xpYi9wcm90b2NvbC9wYXlsb2Fkcy9kZWx0YXMvZ2VuZXJhdG9yLnRzP2QyYmUiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgRGVsdGFSZW1vdGVDb25mbGljdHMgfSBmcm9tICcuL3JlbW90ZV9jb25mbGljdHMnO1xuaW1wb3J0IHsgRGVsdGFSZW1vdGVTYXZlZCB9IGZyb20gJy4vcmVtb3RlX3NhdmVkJztcbmltcG9ydCB7IERlbHRhUmVtb3RlUmV0cmlldmVkIH0gZnJvbSAnLi9yZW1vdGVfcmV0cmlldmVkJztcbmltcG9ydCB7IFBheWxvYWRTb3VyY2UgfSBmcm9tICdAUGF5bG9hZHMvc291cmNlcyc7XG5leHBvcnQgZnVuY3Rpb24gRGVsdGFDbGFzc0ZvclNvdXJjZShzb3VyY2UpIHtcbiAgICBpZiAoc291cmNlID09PSBQYXlsb2FkU291cmNlLlJlbW90ZVJldHJpZXZlZCkge1xuICAgICAgICByZXR1cm4gRGVsdGFSZW1vdGVSZXRyaWV2ZWQ7XG4gICAgfVxuICAgIGVsc2UgaWYgKHNvdXJjZSA9PT0gUGF5bG9hZFNvdXJjZS5SZW1vdGVTYXZlZCkge1xuICAgICAgICByZXR1cm4gRGVsdGFSZW1vdGVTYXZlZDtcbiAgICB9XG4gICAgZWxzZSBpZiAoKHNvdXJjZSA9PT0gUGF5bG9hZFNvdXJjZS5Db25mbGljdERhdGEgfHxcbiAgICAgICAgc291cmNlID09PSBQYXlsb2FkU291cmNlLkNvbmZsaWN0VXVpZCkpIHtcbiAgICAgICAgcmV0dXJuIERlbHRhUmVtb3RlQ29uZmxpY3RzO1xuICAgIH1cbn1cbiJdLCJtYXBwaW5ncyI6IkFBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUVBO0FBQ0E7QUFHQTtBQUNBO0FBQ0EiLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./lib/protocol/payloads/deltas/generator.ts\n')},"./lib/protocol/payloads/deltas/index.ts":
|
||
/*!***********************************************!*\
|
||
!*** ./lib/protocol/payloads/deltas/index.ts ***!
|
||
\***********************************************/
|
||
/*! exports provided: DeltaFileImport, DeltaOutOfSync, DeltaRemoteConflicts, DeltaRemoteRetrieved, DeltaRemoteSaved, ConflictDelta, PayloadsDelta */function(module,__webpack_exports__,__webpack_require__){"use strict";eval('__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _file_import__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./file_import */ "./lib/protocol/payloads/deltas/file_import.ts");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "DeltaFileImport", function() { return _file_import__WEBPACK_IMPORTED_MODULE_0__["DeltaFileImport"]; });\n\n/* harmony import */ var _out_of_sync__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./out_of_sync */ "./lib/protocol/payloads/deltas/out_of_sync.ts");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "DeltaOutOfSync", function() { return _out_of_sync__WEBPACK_IMPORTED_MODULE_1__["DeltaOutOfSync"]; });\n\n/* harmony import */ var _remote_conflicts__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./remote_conflicts */ "./lib/protocol/payloads/deltas/remote_conflicts.ts");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "DeltaRemoteConflicts", function() { return _remote_conflicts__WEBPACK_IMPORTED_MODULE_2__["DeltaRemoteConflicts"]; });\n\n/* harmony import */ var _remote_retrieved__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./remote_retrieved */ "./lib/protocol/payloads/deltas/remote_retrieved.ts");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "DeltaRemoteRetrieved", function() { return _remote_retrieved__WEBPACK_IMPORTED_MODULE_3__["DeltaRemoteRetrieved"]; });\n\n/* harmony import */ var _remote_saved__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ./remote_saved */ "./lib/protocol/payloads/deltas/remote_saved.ts");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "DeltaRemoteSaved", function() { return _remote_saved__WEBPACK_IMPORTED_MODULE_4__["DeltaRemoteSaved"]; });\n\n/* harmony import */ var _conflict__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ./conflict */ "./lib/protocol/payloads/deltas/conflict.ts");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "ConflictDelta", function() { return _conflict__WEBPACK_IMPORTED_MODULE_5__["ConflictDelta"]; });\n\n/* harmony import */ var _Payloads_deltas_delta__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! @Payloads/deltas/delta */ "./lib/protocol/payloads/deltas/delta.ts");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "PayloadsDelta", function() { return _Payloads_deltas_delta__WEBPACK_IMPORTED_MODULE_6__["PayloadsDelta"]; });\n\n\n\n\n\n\n\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9saWIvcHJvdG9jb2wvcGF5bG9hZHMvZGVsdGFzL2luZGV4LnRzLmpzIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vU05MaWJyYXJ5Ly4vbGliL3Byb3RvY29sL3BheWxvYWRzL2RlbHRhcy9pbmRleC50cz9iMDFkIl0sInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCB7IERlbHRhRmlsZUltcG9ydCB9IGZyb20gJy4vZmlsZV9pbXBvcnQnO1xuZXhwb3J0IHsgRGVsdGFPdXRPZlN5bmMgfSBmcm9tICcuL291dF9vZl9zeW5jJztcbmV4cG9ydCB7IERlbHRhUmVtb3RlQ29uZmxpY3RzIH0gZnJvbSAnLi9yZW1vdGVfY29uZmxpY3RzJztcbmV4cG9ydCB7IERlbHRhUmVtb3RlUmV0cmlldmVkIH0gZnJvbSAnLi9yZW1vdGVfcmV0cmlldmVkJztcbmV4cG9ydCB7IERlbHRhUmVtb3RlU2F2ZWQgfSBmcm9tICcuL3JlbW90ZV9zYXZlZCc7XG5leHBvcnQgeyBDb25mbGljdERlbHRhIH0gZnJvbSAnLi9jb25mbGljdCc7XG5leHBvcnQgeyBQYXlsb2Fkc0RlbHRhIH0gZnJvbSAnQFBheWxvYWRzL2RlbHRhcy9kZWx0YSc7XG4iXSwibWFwcGluZ3MiOiJBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOyIsInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./lib/protocol/payloads/deltas/index.ts\n')},"./lib/protocol/payloads/deltas/out_of_sync.ts":
|
||
/*!*****************************************************!*\
|
||
!*** ./lib/protocol/payloads/deltas/out_of_sync.ts ***!
|
||
\*****************************************************/
|
||
/*! exports provided: DeltaOutOfSync */function(module,__webpack_exports__,__webpack_require__){"use strict";eval('__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "DeltaOutOfSync", function() { return DeltaOutOfSync; });\n/* harmony import */ var _babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @babel/runtime/regenerator */ "./node_modules/@babel/runtime/regenerator/index.js");\n/* harmony import */ var _babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var _Payloads_deltas_delta__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! @Payloads/deltas/delta */ "./lib/protocol/payloads/deltas/delta.ts");\n/* harmony import */ var _Payloads_sources__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! @Payloads/sources */ "./lib/protocol/payloads/sources.ts");\n/* harmony import */ var _Protocol_collection_payload_collection__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! @Protocol/collection/payload_collection */ "./lib/protocol/collection/payload_collection.ts");\n/* harmony import */ var _Payloads_functions__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! @Payloads/functions */ "./lib/protocol/payloads/functions.ts");\n/* harmony import */ var _Lib_utils__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! @Lib/utils */ "./lib/utils.ts");\n\n\nfunction _typeof(obj) { "@babel/helpers - typeof"; if (typeof Symbol === "function" && typeof Symbol.iterator === "symbol") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }; } return _typeof(obj); }\n\nfunction asyncGeneratorStep(gen, resolve, reject, _next, _throw, key, arg) { try { var info = gen[key](arg); var value = info.value; } catch (error) { reject(error); return; } if (info.done) { resolve(value); } else { Promise.resolve(value).then(_next, _throw); } }\n\nfunction _asyncToGenerator(fn) { return function () { var self = this, args = arguments; return new Promise(function (resolve, reject) { var gen = fn.apply(self, args); function _next(value) { asyncGeneratorStep(gen, resolve, reject, _next, _throw, "next", value); } function _throw(err) { asyncGeneratorStep(gen, resolve, reject, _next, _throw, "throw", err); } _next(undefined); }); }; }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } }\n\nfunction _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); } }\n\nfunction _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; }\n\nfunction _possibleConstructorReturn(self, call) { if (call && (_typeof(call) === "object" || typeof call === "function")) { return call; } return _assertThisInitialized(self); }\n\nfunction _assertThisInitialized(self) { if (self === void 0) { throw new ReferenceError("this hasn\'t been initialised - super() hasn\'t been called"); } return self; }\n\nfunction _getPrototypeOf(o) { _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function _getPrototypeOf(o) { return o.__proto__ || Object.getPrototypeOf(o); }; return _getPrototypeOf(o); }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== "function" && superClass !== null) { throw new TypeError("Super expression must either be null or a function"); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, writable: true, configurable: true } }); if (superClass) _setPrototypeOf(subClass, superClass); }\n\nfunction _setPrototypeOf(o, p) { _setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) { o.__proto__ = p; return o; }; return _setPrototypeOf(o, p); }\n\n\n\n\n\n\nvar DeltaOutOfSync = /*#__PURE__*/function (_PayloadsDelta) {\n _inherits(DeltaOutOfSync, _PayloadsDelta);\n\n function DeltaOutOfSync() {\n _classCallCheck(this, DeltaOutOfSync);\n\n return _possibleConstructorReturn(this, _getPrototypeOf(DeltaOutOfSync).apply(this, arguments));\n }\n\n _createClass(DeltaOutOfSync, [{\n key: "resultingCollection",\n value: function () {\n var _resultingCollection = _asyncToGenerator( /*#__PURE__*/_babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0___default.a.mark(function _callee() {\n var results, _iteratorNormalCompletion, _didIteratorError, _iteratorError, _iterator, _step, payload, current, equal, copyResults;\n\n return _babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0___default.a.wrap(function _callee$(_context) {\n while (1) {\n switch (_context.prev = _context.next) {\n case 0:\n results = [];\n _iteratorNormalCompletion = true;\n _didIteratorError = false;\n _iteratorError = undefined;\n _context.prev = 4;\n _iterator = this.applyCollection.all()[Symbol.iterator]();\n\n case 6:\n if (_iteratorNormalCompletion = (_step = _iterator.next()).done) {\n _context.next = 22;\n break;\n }\n\n payload = _step.value;\n\n /**\n * Map the server payload as authoritive content. If client copy differs,\n * we will create a duplicate of it below.\n * This is also neccessary to map the updated_at value from the server\n */\n results.push(payload);\n current = this.findBasePayload(payload.uuid);\n\n if (current) {\n _context.next = 12;\n break;\n }\n\n return _context.abrupt("continue", 19);\n\n case 12:\n equal = Object(_Payloads_functions__WEBPACK_IMPORTED_MODULE_4__["PayloadContentsEqual"])(payload, current);\n\n if (!equal) {\n _context.next = 15;\n break;\n }\n\n return _context.abrupt("continue", 19);\n\n case 15:\n _context.next = 17;\n return Object(_Payloads_functions__WEBPACK_IMPORTED_MODULE_4__["PayloadsByDuplicating"])(current, this.baseCollection, true);\n\n case 17:\n copyResults = _context.sent;\n Object(_Lib_utils__WEBPACK_IMPORTED_MODULE_5__["extendArray"])(results, copyResults);\n\n case 19:\n _iteratorNormalCompletion = true;\n _context.next = 6;\n break;\n\n case 22:\n _context.next = 28;\n break;\n\n case 24:\n _context.prev = 24;\n _context.t0 = _context["catch"](4);\n _didIteratorError = true;\n _iteratorError = _context.t0;\n\n case 28:\n _context.prev = 28;\n _context.prev = 29;\n\n if (!_iteratorNormalCompletion && _iterator.return != null) {\n _iterator.return();\n }\n\n case 31:\n _context.prev = 31;\n\n if (!_didIteratorError) {\n _context.next = 34;\n break;\n }\n\n throw _iteratorError;\n\n case 34:\n return _context.finish(31);\n\n case 35:\n return _context.finish(28);\n\n case 36:\n return _context.abrupt("return", _Protocol_collection_payload_collection__WEBPACK_IMPORTED_MODULE_3__["ImmutablePayloadCollection"].WithPayloads(results, _Payloads_sources__WEBPACK_IMPORTED_MODULE_2__["PayloadSource"].RemoteRetrieved));\n\n case 37:\n case "end":\n return _context.stop();\n }\n }\n }, _callee, this, [[4, 24, 28, 36], [29,, 31, 35]]);\n }));\n\n function resultingCollection() {\n return _resultingCollection.apply(this, arguments);\n }\n\n return resultingCollection;\n }()\n }]);\n\n return DeltaOutOfSync;\n}(_Payloads_deltas_delta__WEBPACK_IMPORTED_MODULE_1__["PayloadsDelta"]);//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9saWIvcHJvdG9jb2wvcGF5bG9hZHMvZGVsdGFzL291dF9vZl9zeW5jLnRzLmpzIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vU05MaWJyYXJ5Ly4vbGliL3Byb3RvY29sL3BheWxvYWRzL2RlbHRhcy9vdXRfb2Zfc3luYy50cz82MzEwIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IFBheWxvYWRzRGVsdGEgfSBmcm9tICdAUGF5bG9hZHMvZGVsdGFzL2RlbHRhJztcbmltcG9ydCB7IFBheWxvYWRTb3VyY2UgfSBmcm9tICdAUGF5bG9hZHMvc291cmNlcyc7XG5pbXBvcnQgeyBJbW11dGFibGVQYXlsb2FkQ29sbGVjdGlvbiB9IGZyb20gXCJAUHJvdG9jb2wvY29sbGVjdGlvbi9wYXlsb2FkX2NvbGxlY3Rpb25cIjtcbmltcG9ydCB7IFBheWxvYWRzQnlEdXBsaWNhdGluZywgUGF5bG9hZENvbnRlbnRzRXF1YWwgfSBmcm9tICdAUGF5bG9hZHMvZnVuY3Rpb25zJztcbmltcG9ydCB7IGV4dGVuZEFycmF5IH0gZnJvbSAnQExpYi91dGlscyc7XG5leHBvcnQgY2xhc3MgRGVsdGFPdXRPZlN5bmMgZXh0ZW5kcyBQYXlsb2Fkc0RlbHRhIHtcbiAgICBhc3luYyByZXN1bHRpbmdDb2xsZWN0aW9uKCkge1xuICAgICAgICBjb25zdCByZXN1bHRzID0gW107XG4gICAgICAgIGZvciAoY29uc3QgcGF5bG9hZCBvZiB0aGlzLmFwcGx5Q29sbGVjdGlvbi5hbGwoKSkge1xuICAgICAgICAgICAgLyoqXG4gICAgICAgICAgICAgKiBNYXAgdGhlIHNlcnZlciBwYXlsb2FkIGFzIGF1dGhvcml0aXZlIGNvbnRlbnQuIElmIGNsaWVudCBjb3B5IGRpZmZlcnMsXG4gICAgICAgICAgICAgKiB3ZSB3aWxsIGNyZWF0ZSBhIGR1cGxpY2F0ZSBvZiBpdCBiZWxvdy5cbiAgICAgICAgICAgICAqIFRoaXMgaXMgYWxzbyBuZWNjZXNzYXJ5IHRvIG1hcCB0aGUgdXBkYXRlZF9hdCB2YWx1ZSBmcm9tIHRoZSBzZXJ2ZXJcbiAgICAgICAgICAgICAqL1xuICAgICAgICAgICAgcmVzdWx0cy5wdXNoKHBheWxvYWQpO1xuICAgICAgICAgICAgY29uc3QgY3VycmVudCA9IHRoaXMuZmluZEJhc2VQYXlsb2FkKHBheWxvYWQudXVpZCk7XG4gICAgICAgICAgICBpZiAoIWN1cnJlbnQpIHtcbiAgICAgICAgICAgICAgICBjb250aW51ZTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGNvbnN0IGVxdWFsID0gUGF5bG9hZENvbnRlbnRzRXF1YWwocGF5bG9hZCwgY3VycmVudCk7XG4gICAgICAgICAgICBpZiAoZXF1YWwpIHtcbiAgICAgICAgICAgICAgICBjb250aW51ZTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIC8qKlxuICAgICAgICAgICAgICogV2UgY3JlYXRlIGEgY29weSBvZiB0aGUgbG9jYWwgZXhpc3RpbmcgaXRlbSBhbmQgc3luYyB0aGF0IHVwLlxuICAgICAgICAgICAgICogSXQgd2lsbCBiZSBhICdjb25mbGljdCcgb2YgaXRzZWxmXG4gICAgICAgICAgICAgKi9cbiAgICAgICAgICAgIGNvbnN0IGNvcHlSZXN1bHRzID0gYXdhaXQgUGF5bG9hZHNCeUR1cGxpY2F0aW5nKGN1cnJlbnQsIHRoaXMuYmFzZUNvbGxlY3Rpb24sIHRydWUpO1xuICAgICAgICAgICAgZXh0ZW5kQXJyYXkocmVzdWx0cywgY29weVJlc3VsdHMpO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiBJbW11dGFibGVQYXlsb2FkQ29sbGVjdGlvbi5XaXRoUGF5bG9hZHMocmVzdWx0cywgUGF5bG9hZFNvdXJjZS5SZW1vdGVSZXRyaWV2ZWQpO1xuICAgIH1cbn1cbiJdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQURBO0FBQUE7QUFDQTtBQURBO0FBQUE7QUFDQTtBQURBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFDQTtBQURBO0FBQUE7QUFBQTtBQUFBO0FBRUE7QUFGQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQ0E7QUFEQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQ0E7QUFFQTtBQUNBO0FBQUE7Ozs7O0FBS0E7QUFDQTtBQUNBO0FBWEE7QUFBQTtBQUFBO0FBQUE7QUFDQTtBQURBO0FBQ0E7QUFEQTtBQWNBO0FBQ0E7QUFmQTtBQUFBO0FBQUE7QUFBQTtBQUNBO0FBREE7QUFDQTtBQURBO0FBQUE7QUFBQTtBQUNBO0FBREE7QUFzQkE7QUFDQTtBQUNBO0FBeEJBO0FBQUE7QUFBQTtBQUFBO0FBQ0E7QUFEQTtBQUFBO0FBQUE7QUFDQTtBQURBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFDQTtBQURBO0FBQUE7QUFBQTtBQUNBO0FBREE7QUFBQTtBQUFBO0FBQ0E7QUFEQTtBQUFBO0FBQ0E7QUFEQTtBQUFBO0FBQUE7QUFBQTtBQUNBO0FBREE7QUFDQTtBQURBO0FBQUE7QUFDQTtBQURBO0FBQUE7QUFDQTtBQURBO0FBQUE7QUFDQTtBQURBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQ0E7QUFEQTtBQUFBO0FBQUE7QUFDQTtBQURBO0FBQUE7QUFBQTtBQUNBO0FBREE7QUFBQSIsInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./lib/protocol/payloads/deltas/out_of_sync.ts\n')},"./lib/protocol/payloads/deltas/remote_conflicts.ts":
|
||
/*!**********************************************************!*\
|
||
!*** ./lib/protocol/payloads/deltas/remote_conflicts.ts ***!
|
||
\**********************************************************/
|
||
/*! exports provided: DeltaRemoteConflicts */function(module,__webpack_exports__,__webpack_require__){"use strict";eval('__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "DeltaRemoteConflicts", function() { return DeltaRemoteConflicts; });\n/* harmony import */ var _babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @babel/runtime/regenerator */ "./node_modules/@babel/runtime/regenerator/index.js");\n/* harmony import */ var _babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var _Payloads_deltas_delta__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! @Payloads/deltas/delta */ "./lib/protocol/payloads/deltas/delta.ts");\n/* harmony import */ var _Payloads_deltas_conflict__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! @Payloads/deltas/conflict */ "./lib/protocol/payloads/deltas/conflict.ts");\n/* harmony import */ var _Payloads_sources__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! @Payloads/sources */ "./lib/protocol/payloads/sources.ts");\n/* harmony import */ var _Protocol_collection_payload_collection__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! @Protocol/collection/payload_collection */ "./lib/protocol/collection/payload_collection.ts");\n/* harmony import */ var _Payloads_functions__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! @Payloads/functions */ "./lib/protocol/payloads/functions.ts");\n/* harmony import */ var _Lib_utils__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! @Lib/utils */ "./lib/utils.ts");\n\n\nfunction _typeof(obj) { "@babel/helpers - typeof"; if (typeof Symbol === "function" && typeof Symbol.iterator === "symbol") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }; } return _typeof(obj); }\n\nfunction asyncGeneratorStep(gen, resolve, reject, _next, _throw, key, arg) { try { var info = gen[key](arg); var value = info.value; } catch (error) { reject(error); return; } if (info.done) { resolve(value); } else { Promise.resolve(value).then(_next, _throw); } }\n\nfunction _asyncToGenerator(fn) { return function () { var self = this, args = arguments; return new Promise(function (resolve, reject) { var gen = fn.apply(self, args); function _next(value) { asyncGeneratorStep(gen, resolve, reject, _next, _throw, "next", value); } function _throw(err) { asyncGeneratorStep(gen, resolve, reject, _next, _throw, "throw", err); } _next(undefined); }); }; }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } }\n\nfunction _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); } }\n\nfunction _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; }\n\nfunction _possibleConstructorReturn(self, call) { if (call && (_typeof(call) === "object" || typeof call === "function")) { return call; } return _assertThisInitialized(self); }\n\nfunction _assertThisInitialized(self) { if (self === void 0) { throw new ReferenceError("this hasn\'t been initialised - super() hasn\'t been called"); } return self; }\n\nfunction _getPrototypeOf(o) { _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function _getPrototypeOf(o) { return o.__proto__ || Object.getPrototypeOf(o); }; return _getPrototypeOf(o); }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== "function" && superClass !== null) { throw new TypeError("Super expression must either be null or a function"); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, writable: true, configurable: true } }); if (superClass) _setPrototypeOf(subClass, superClass); }\n\nfunction _setPrototypeOf(o, p) { _setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) { o.__proto__ = p; return o; }; return _setPrototypeOf(o, p); }\n\n\n\n\n\n\n\nvar DeltaRemoteConflicts = /*#__PURE__*/function (_PayloadsDelta) {\n _inherits(DeltaRemoteConflicts, _PayloadsDelta);\n\n function DeltaRemoteConflicts() {\n _classCallCheck(this, DeltaRemoteConflicts);\n\n return _possibleConstructorReturn(this, _getPrototypeOf(DeltaRemoteConflicts).apply(this, arguments));\n }\n\n _createClass(DeltaRemoteConflicts, [{\n key: "resultingCollection",\n value: function () {\n var _resultingCollection = _asyncToGenerator( /*#__PURE__*/_babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0___default.a.mark(function _callee() {\n return _babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0___default.a.wrap(function _callee$(_context) {\n while (1) {\n switch (_context.prev = _context.next) {\n case 0:\n if (!(this.applyCollection.source === _Payloads_sources__WEBPACK_IMPORTED_MODULE_3__["PayloadSource"].ConflictUuid)) {\n _context.next = 4;\n break;\n }\n\n return _context.abrupt("return", this.collectionsByHandlingUuidConflicts());\n\n case 4:\n if (!(this.applyCollection.source === _Payloads_sources__WEBPACK_IMPORTED_MODULE_3__["PayloadSource"].ConflictData)) {\n _context.next = 8;\n break;\n }\n\n return _context.abrupt("return", this.collectionsByHandlingDataConflicts());\n\n case 8:\n throw "Unhandled conflict type ".concat(this.applyCollection.source);\n\n case 9:\n case "end":\n return _context.stop();\n }\n }\n }, _callee, this);\n }));\n\n function resultingCollection() {\n return _resultingCollection.apply(this, arguments);\n }\n\n return resultingCollection;\n }()\n }, {\n key: "collectionsByHandlingDataConflicts",\n value: function () {\n var _collectionsByHandlingDataConflicts = _asyncToGenerator( /*#__PURE__*/_babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0___default.a.mark(function _callee2() {\n var results, _iteratorNormalCompletion, _didIteratorError, _iteratorError, _iterator, _step, payload, current, decrypted, delta, deltaCollection, payloads;\n\n return _babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0___default.a.wrap(function _callee2$(_context2) {\n while (1) {\n switch (_context2.prev = _context2.next) {\n case 0:\n results = [];\n _iteratorNormalCompletion = true;\n _didIteratorError = false;\n _iteratorError = undefined;\n _context2.prev = 4;\n _iterator = this.applyCollection.all()[Symbol.iterator]();\n\n case 6:\n if (_iteratorNormalCompletion = (_step = _iterator.next()).done) {\n _context2.next = 27;\n break;\n }\n\n payload = _step.value;\n current = this.findBasePayload(payload.uuid);\n /** Could be deleted */\n\n if (current) {\n _context2.next = 12;\n break;\n }\n\n results.push(payload);\n return _context2.abrupt("continue", 24);\n\n case 12:\n decrypted = this.findRelatedPayload(payload.uuid, _Payloads_sources__WEBPACK_IMPORTED_MODULE_3__["PayloadSource"].DecryptedTransient);\n\n if (decrypted) {\n _context2.next = 18;\n break;\n }\n\n if (payload.deleted) {\n _context2.next = 16;\n break;\n }\n\n throw \'Unable to find decrypted counterpart for data conflict.\';\n\n case 16:\n results.push(payload);\n return _context2.abrupt("continue", 24);\n\n case 18:\n delta = new _Payloads_deltas_conflict__WEBPACK_IMPORTED_MODULE_2__["ConflictDelta"](this.baseCollection, current, decrypted, _Payloads_sources__WEBPACK_IMPORTED_MODULE_3__["PayloadSource"].ConflictData);\n _context2.next = 21;\n return delta.resultingCollection();\n\n case 21:\n deltaCollection = _context2.sent;\n payloads = deltaCollection.all();\n Object(_Lib_utils__WEBPACK_IMPORTED_MODULE_6__["extendArray"])(results, payloads);\n\n case 24:\n _iteratorNormalCompletion = true;\n _context2.next = 6;\n break;\n\n case 27:\n _context2.next = 33;\n break;\n\n case 29:\n _context2.prev = 29;\n _context2.t0 = _context2["catch"](4);\n _didIteratorError = true;\n _iteratorError = _context2.t0;\n\n case 33:\n _context2.prev = 33;\n _context2.prev = 34;\n\n if (!_iteratorNormalCompletion && _iterator.return != null) {\n _iterator.return();\n }\n\n case 36:\n _context2.prev = 36;\n\n if (!_didIteratorError) {\n _context2.next = 39;\n break;\n }\n\n throw _iteratorError;\n\n case 39:\n return _context2.finish(36);\n\n case 40:\n return _context2.finish(33);\n\n case 41:\n return _context2.abrupt("return", _Protocol_collection_payload_collection__WEBPACK_IMPORTED_MODULE_4__["ImmutablePayloadCollection"].WithPayloads(results, _Payloads_sources__WEBPACK_IMPORTED_MODULE_3__["PayloadSource"].RemoteRetrieved));\n\n case 42:\n case "end":\n return _context2.stop();\n }\n }\n }, _callee2, this, [[4, 29, 33, 41], [34,, 36, 40]]);\n }));\n\n function collectionsByHandlingDataConflicts() {\n return _collectionsByHandlingDataConflicts.apply(this, arguments);\n }\n\n return collectionsByHandlingDataConflicts;\n }()\n /**\n * UUID conflicts can occur if a user attmpts to import an old data\n * backup with uuids from the old account into a new account.\n * In uuid_conflict, we receive the value we attmpted to save.\n */\n\n }, {\n key: "collectionsByHandlingUuidConflicts",\n value: function () {\n var _collectionsByHandlingUuidConflicts = _asyncToGenerator( /*#__PURE__*/_babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0___default.a.mark(function _callee3() {\n var results, _iteratorNormalCompletion2, _didIteratorError2, _iteratorError2, _iterator2, _step2, payload, decrypted, alternateResults;\n\n return _babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0___default.a.wrap(function _callee3$(_context3) {\n while (1) {\n switch (_context3.prev = _context3.next) {\n case 0:\n results = [];\n _iteratorNormalCompletion2 = true;\n _didIteratorError2 = false;\n _iteratorError2 = undefined;\n _context3.prev = 4;\n _iterator2 = this.applyCollection.all()[Symbol.iterator]();\n\n case 6:\n if (_iteratorNormalCompletion2 = (_step2 = _iterator2.next()).done) {\n _context3.next = 16;\n break;\n }\n\n payload = _step2.value;\n decrypted = this.findRelatedPayload(payload.uuid, _Payloads_sources__WEBPACK_IMPORTED_MODULE_3__["PayloadSource"].DecryptedTransient);\n _context3.next = 11;\n return Object(_Payloads_functions__WEBPACK_IMPORTED_MODULE_5__["PayloadsByAlternatingUuid"])(decrypted, this.baseCollection);\n\n case 11:\n alternateResults = _context3.sent;\n Object(_Lib_utils__WEBPACK_IMPORTED_MODULE_6__["extendArray"])(results, alternateResults);\n\n case 13:\n _iteratorNormalCompletion2 = true;\n _context3.next = 6;\n break;\n\n case 16:\n _context3.next = 22;\n break;\n\n case 18:\n _context3.prev = 18;\n _context3.t0 = _context3["catch"](4);\n _didIteratorError2 = true;\n _iteratorError2 = _context3.t0;\n\n case 22:\n _context3.prev = 22;\n _context3.prev = 23;\n\n if (!_iteratorNormalCompletion2 && _iterator2.return != null) {\n _iterator2.return();\n }\n\n case 25:\n _context3.prev = 25;\n\n if (!_didIteratorError2) {\n _context3.next = 28;\n break;\n }\n\n throw _iteratorError2;\n\n case 28:\n return _context3.finish(25);\n\n case 29:\n return _context3.finish(22);\n\n case 30:\n return _context3.abrupt("return", _Protocol_collection_payload_collection__WEBPACK_IMPORTED_MODULE_4__["ImmutablePayloadCollection"].WithPayloads(results, _Payloads_sources__WEBPACK_IMPORTED_MODULE_3__["PayloadSource"].RemoteRetrieved));\n\n case 31:\n case "end":\n return _context3.stop();\n }\n }\n }, _callee3, this, [[4, 18, 22, 30], [23,, 25, 29]]);\n }));\n\n function collectionsByHandlingUuidConflicts() {\n return _collectionsByHandlingUuidConflicts.apply(this, arguments);\n }\n\n return collectionsByHandlingUuidConflicts;\n }()\n }]);\n\n return DeltaRemoteConflicts;\n}(_Payloads_deltas_delta__WEBPACK_IMPORTED_MODULE_1__["PayloadsDelta"]);//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9saWIvcHJvdG9jb2wvcGF5bG9hZHMvZGVsdGFzL3JlbW90ZV9jb25mbGljdHMudHMuanMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly9TTkxpYnJhcnkvLi9saWIvcHJvdG9jb2wvcGF5bG9hZHMvZGVsdGFzL3JlbW90ZV9jb25mbGljdHMudHM/YjE0ZCJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBQYXlsb2Fkc0RlbHRhIH0gZnJvbSAnQFBheWxvYWRzL2RlbHRhcy9kZWx0YSc7XG5pbXBvcnQgeyBDb25mbGljdERlbHRhIH0gZnJvbSAnQFBheWxvYWRzL2RlbHRhcy9jb25mbGljdCc7XG5pbXBvcnQgeyBQYXlsb2FkU291cmNlIH0gZnJvbSAnQFBheWxvYWRzL3NvdXJjZXMnO1xuaW1wb3J0IHsgSW1tdXRhYmxlUGF5bG9hZENvbGxlY3Rpb24gfSBmcm9tIFwiQFByb3RvY29sL2NvbGxlY3Rpb24vcGF5bG9hZF9jb2xsZWN0aW9uXCI7XG5pbXBvcnQgeyBQYXlsb2Fkc0J5QWx0ZXJuYXRpbmdVdWlkIH0gZnJvbSAnQFBheWxvYWRzL2Z1bmN0aW9ucyc7XG5pbXBvcnQgeyBleHRlbmRBcnJheSB9IGZyb20gJ0BMaWIvdXRpbHMnO1xuZXhwb3J0IGNsYXNzIERlbHRhUmVtb3RlQ29uZmxpY3RzIGV4dGVuZHMgUGF5bG9hZHNEZWx0YSB7XG4gICAgYXN5bmMgcmVzdWx0aW5nQ29sbGVjdGlvbigpIHtcbiAgICAgICAgaWYgKHRoaXMuYXBwbHlDb2xsZWN0aW9uLnNvdXJjZSA9PT0gUGF5bG9hZFNvdXJjZS5Db25mbGljdFV1aWQpIHtcbiAgICAgICAgICAgIHJldHVybiB0aGlzLmNvbGxlY3Rpb25zQnlIYW5kbGluZ1V1aWRDb25mbGljdHMoKTtcbiAgICAgICAgfVxuICAgICAgICBlbHNlIGlmICh0aGlzLmFwcGx5Q29sbGVjdGlvbi5zb3VyY2UgPT09IFBheWxvYWRTb3VyY2UuQ29uZmxpY3REYXRhKSB7XG4gICAgICAgICAgICByZXR1cm4gdGhpcy5jb2xsZWN0aW9uc0J5SGFuZGxpbmdEYXRhQ29uZmxpY3RzKCk7XG4gICAgICAgIH1cbiAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICB0aHJvdyBgVW5oYW5kbGVkIGNvbmZsaWN0IHR5cGUgJHt0aGlzLmFwcGx5Q29sbGVjdGlvbi5zb3VyY2V9YDtcbiAgICAgICAgfVxuICAgIH1cbiAgICBhc3luYyBjb2xsZWN0aW9uc0J5SGFuZGxpbmdEYXRhQ29uZmxpY3RzKCkge1xuICAgICAgICBjb25zdCByZXN1bHRzID0gW107XG4gICAgICAgIGZvciAoY29uc3QgcGF5bG9hZCBvZiB0aGlzLmFwcGx5Q29sbGVjdGlvbi5hbGwoKSkge1xuICAgICAgICAgICAgY29uc3QgY3VycmVudCA9IHRoaXMuZmluZEJhc2VQYXlsb2FkKHBheWxvYWQudXVpZCk7XG4gICAgICAgICAgICAvKiogQ291bGQgYmUgZGVsZXRlZCAqL1xuICAgICAgICAgICAgaWYgKCFjdXJyZW50KSB7XG4gICAgICAgICAgICAgICAgcmVzdWx0cy5wdXNoKHBheWxvYWQpO1xuICAgICAgICAgICAgICAgIGNvbnRpbnVlO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgY29uc3QgZGVjcnlwdGVkID0gdGhpcy5maW5kUmVsYXRlZFBheWxvYWQocGF5bG9hZC51dWlkLCBQYXlsb2FkU291cmNlLkRlY3J5cHRlZFRyYW5zaWVudCk7XG4gICAgICAgICAgICBpZiAoIWRlY3J5cHRlZCkge1xuICAgICAgICAgICAgICAgIC8qKiBEZWNyeXB0ZWQgc2hvdWxkIG9ubHkgYmUgbWlzc2luZyBpbiBjYXNlIG9mIGRlbGV0ZWQgcGF5bG9hZCAqL1xuICAgICAgICAgICAgICAgIGlmICghcGF5bG9hZC5kZWxldGVkKSB7XG4gICAgICAgICAgICAgICAgICAgIHRocm93ICdVbmFibGUgdG8gZmluZCBkZWNyeXB0ZWQgY291bnRlcnBhcnQgZm9yIGRhdGEgY29uZmxpY3QuJztcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgcmVzdWx0cy5wdXNoKHBheWxvYWQpO1xuICAgICAgICAgICAgICAgIGNvbnRpbnVlO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgY29uc3QgZGVsdGEgPSBuZXcgQ29uZmxpY3REZWx0YSh0aGlzLmJhc2VDb2xsZWN0aW9uLCBjdXJyZW50LCBkZWNyeXB0ZWQsIFBheWxvYWRTb3VyY2UuQ29uZmxpY3REYXRhKTtcbiAgICAgICAgICAgIGNvbnN0IGRlbHRhQ29sbGVjdGlvbiA9IGF3YWl0IGRlbHRhLnJlc3VsdGluZ0NvbGxlY3Rpb24oKTtcbiAgICAgICAgICAgIGNvbnN0IHBheWxvYWRzID0gZGVsdGFDb2xsZWN0aW9uLmFsbCgpO1xuICAgICAgICAgICAgZXh0ZW5kQXJyYXkocmVzdWx0cywgcGF5bG9hZHMpO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiBJbW11dGFibGVQYXlsb2FkQ29sbGVjdGlvbi5XaXRoUGF5bG9hZHMocmVzdWx0cywgUGF5bG9hZFNvdXJjZS5SZW1vdGVSZXRyaWV2ZWQpO1xuICAgIH1cbiAgICAvKipcbiAgICAgKiBVVUlEIGNvbmZsaWN0cyBjYW4gb2NjdXIgaWYgYSB1c2VyIGF0dG1wdHMgdG8gaW1wb3J0IGFuIG9sZCBkYXRhXG4gICAgICogYmFja3VwIHdpdGggdXVpZHMgZnJvbSB0aGUgb2xkIGFjY291bnQgaW50byBhIG5ldyBhY2NvdW50LlxuICAgICAqIEluIHV1aWRfY29uZmxpY3QsIHdlIHJlY2VpdmUgdGhlIHZhbHVlIHdlIGF0dG1wdGVkIHRvIHNhdmUuXG4gICAgICovXG4gICAgYXN5bmMgY29sbGVjdGlvbnNCeUhhbmRsaW5nVXVpZENvbmZsaWN0cygpIHtcbiAgICAgICAgY29uc3QgcmVzdWx0cyA9IFtdO1xuICAgICAgICBmb3IgKGNvbnN0IHBheWxvYWQgb2YgdGhpcy5hcHBseUNvbGxlY3Rpb24uYWxsKCkpIHtcbiAgICAgICAgICAgIGNvbnN0IGRlY3J5cHRlZCA9IHRoaXMuZmluZFJlbGF0ZWRQYXlsb2FkKHBheWxvYWQudXVpZCwgUGF5bG9hZFNvdXJjZS5EZWNyeXB0ZWRUcmFuc2llbnQpO1xuICAgICAgICAgICAgY29uc3QgYWx0ZXJuYXRlUmVzdWx0cyA9IGF3YWl0IFBheWxvYWRzQnlBbHRlcm5hdGluZ1V1aWQoZGVjcnlwdGVkLCB0aGlzLmJhc2VDb2xsZWN0aW9uKTtcbiAgICAgICAgICAgIGV4dGVuZEFycmF5KHJlc3VsdHMsIGFsdGVybmF0ZVJlc3VsdHMpO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiBJbW11dGFibGVQYXlsb2FkQ29sbGVjdGlvbi5XaXRoUGF5bG9hZHMocmVzdWx0cywgUGF5bG9hZFNvdXJjZS5SZW1vdGVSZXRyaWV2ZWQpO1xuICAgIH1cbn1cbiJdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQURBO0FBQUE7QUFDQTtBQURBO0FBQUE7QUFDQTtBQURBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUNBO0FBREE7QUFDQTtBQURBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFDQTtBQURBO0FBQ0E7QUFEQTtBQUFBO0FBQ0E7QUFEQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUNBO0FBREE7QUFBQTtBQUFBO0FBQ0E7QUFEQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUNBO0FBREE7QUFBQTtBQUFBO0FBQUE7QUFhQTtBQWJBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFDQTtBQURBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFDQTtBQWFBO0FBQ0E7QUFDQTtBQUNBO0FBakJBO0FBQUE7QUFBQTtBQUFBO0FBQ0E7QUFpQkE7QUFsQkE7QUFDQTtBQURBO0FBcUJBO0FBQ0E7QUF0QkE7QUFBQTtBQUFBO0FBQUE7QUFDQTtBQURBO0FBQUE7QUFBQTtBQUFBO0FBQ0E7QUFEQTtBQUNBO0FBREE7QUEyQkE7QUEzQkE7QUFDQTtBQURBO0FBOEJBO0FBOUJBO0FBQUE7QUFDQTtBQURBO0FBK0JBO0FBQ0E7QUFDQTtBQUNBO0FBbENBO0FBQUE7QUFBQTtBQUFBO0FBQ0E7QUFEQTtBQUFBO0FBQUE7QUFDQTtBQURBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFDQTtBQURBO0FBQUE7QUFBQTtBQUNBO0FBREE7QUFBQTtBQUFBO0FBQ0E7QUFEQTtBQUFBO0FBQ0E7QUFEQTtBQUFBO0FBQUE7QUFBQTtBQUNBO0FBREE7QUFDQTtBQURBO0FBQUE7QUFDQTtBQURBO0FBQUE7QUFDQTtBQURBO0FBQUE7QUFDQTtBQURBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQ0E7QUFEQTtBQUFBO0FBQUE7QUFDQTtBQURBO0FBQUE7QUFxQ0E7Ozs7OztBQXJDQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQ0E7QUFEQTtBQUFBO0FBQUE7QUFBQTtBQTJDQTtBQTNDQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQ0E7QUFEQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQ0E7QUEyQ0E7QUFDQTtBQTdDQTtBQUFBO0FBQ0E7QUFEQTtBQThDQTtBQUNBO0FBQ0E7QUFoREE7QUFBQTtBQUFBO0FBQUE7QUFDQTtBQURBO0FBQUE7QUFBQTtBQUNBO0FBREE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUNBO0FBREE7QUFBQTtBQUFBO0FBQ0E7QUFEQTtBQUFBO0FBQUE7QUFDQTtBQURBO0FBQUE7QUFDQTtBQURBO0FBQUE7QUFBQTtBQUFBO0FBQ0E7QUFEQTtBQUNBO0FBREE7QUFBQTtBQUNBO0FBREE7QUFBQTtBQUNBO0FBREE7QUFBQTtBQUNBO0FBREE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFDQTtBQURBO0FBQUE7QUFBQTtBQUNBO0FBREE7QUFBQTtBQUFBO0FBQ0E7QUFEQTtBQUFBIiwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./lib/protocol/payloads/deltas/remote_conflicts.ts\n')},"./lib/protocol/payloads/deltas/remote_retrieved.ts":
|
||
/*!**********************************************************!*\
|
||
!*** ./lib/protocol/payloads/deltas/remote_retrieved.ts ***!
|
||
\**********************************************************/
|
||
/*! exports provided: DeltaRemoteRetrieved */function(module,__webpack_exports__,__webpack_require__){"use strict";eval('__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "DeltaRemoteRetrieved", function() { return DeltaRemoteRetrieved; });\n/* harmony import */ var _babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @babel/runtime/regenerator */ "./node_modules/@babel/runtime/regenerator/index.js");\n/* harmony import */ var _babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var _Payloads_deltas_conflict__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! @Payloads/deltas/conflict */ "./lib/protocol/payloads/deltas/conflict.ts");\n/* harmony import */ var _Payloads_deltas_delta__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! @Payloads/deltas/delta */ "./lib/protocol/payloads/deltas/delta.ts");\n/* harmony import */ var _Payloads_sources__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! @Payloads/sources */ "./lib/protocol/payloads/sources.ts");\n/* harmony import */ var _Protocol_collection_payload_collection__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! @Protocol/collection/payload_collection */ "./lib/protocol/collection/payload_collection.ts");\n/* harmony import */ var _Lib_utils__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! @Lib/utils */ "./lib/utils.ts");\n\n\nfunction _typeof(obj) { "@babel/helpers - typeof"; if (typeof Symbol === "function" && typeof Symbol.iterator === "symbol") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }; } return _typeof(obj); }\n\nfunction asyncGeneratorStep(gen, resolve, reject, _next, _throw, key, arg) { try { var info = gen[key](arg); var value = info.value; } catch (error) { reject(error); return; } if (info.done) { resolve(value); } else { Promise.resolve(value).then(_next, _throw); } }\n\nfunction _asyncToGenerator(fn) { return function () { var self = this, args = arguments; return new Promise(function (resolve, reject) { var gen = fn.apply(self, args); function _next(value) { asyncGeneratorStep(gen, resolve, reject, _next, _throw, "next", value); } function _throw(err) { asyncGeneratorStep(gen, resolve, reject, _next, _throw, "throw", err); } _next(undefined); }); }; }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } }\n\nfunction _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); } }\n\nfunction _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; }\n\nfunction _possibleConstructorReturn(self, call) { if (call && (_typeof(call) === "object" || typeof call === "function")) { return call; } return _assertThisInitialized(self); }\n\nfunction _assertThisInitialized(self) { if (self === void 0) { throw new ReferenceError("this hasn\'t been initialised - super() hasn\'t been called"); } return self; }\n\nfunction _getPrototypeOf(o) { _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function _getPrototypeOf(o) { return o.__proto__ || Object.getPrototypeOf(o); }; return _getPrototypeOf(o); }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== "function" && superClass !== null) { throw new TypeError("Super expression must either be null or a function"); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, writable: true, configurable: true } }); if (superClass) _setPrototypeOf(subClass, superClass); }\n\nfunction _setPrototypeOf(o, p) { _setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) { o.__proto__ = p; return o; }; return _setPrototypeOf(o, p); }\n\n\n\n\n\n\nvar DeltaRemoteRetrieved = /*#__PURE__*/function (_PayloadsDelta) {\n _inherits(DeltaRemoteRetrieved, _PayloadsDelta);\n\n function DeltaRemoteRetrieved() {\n _classCallCheck(this, DeltaRemoteRetrieved);\n\n return _possibleConstructorReturn(this, _getPrototypeOf(DeltaRemoteRetrieved).apply(this, arguments));\n }\n\n _createClass(DeltaRemoteRetrieved, [{\n key: "resultingCollection",\n value: function () {\n var _resultingCollection = _asyncToGenerator( /*#__PURE__*/_babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0___default.a.mark(function _callee() {\n var filtered, conflicted, _iteratorNormalCompletion, _didIteratorError, _iteratorError, _iterator, _step, received, savedOrSaving, decrypted, base, conflictResults, _i, _conflicted, conflict, _decrypted, current, delta, deltaCollection, payloads;\n\n return _babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0___default.a.wrap(function _callee$(_context) {\n while (1) {\n switch (_context.prev = _context.next) {\n case 0:\n filtered = [];\n conflicted = [];\n /**\n * If we have retrieved an item that was saved as part of this ongoing sync operation,\n * or if the item is locally dirty, filter it out of retrieved_items, and add to potential conflicts.\n */\n\n _iteratorNormalCompletion = true;\n _didIteratorError = false;\n _iteratorError = undefined;\n _context.prev = 5;\n _iterator = this.applyCollection.all()[Symbol.iterator]();\n\n case 7:\n if (_iteratorNormalCompletion = (_step = _iterator.next()).done) {\n _context.next = 27;\n break;\n }\n\n received = _step.value;\n savedOrSaving = this.findRelatedPayload(received.uuid, _Payloads_sources__WEBPACK_IMPORTED_MODULE_3__["PayloadSource"].SavedOrSaving);\n decrypted = this.findRelatedPayload(received.uuid, _Payloads_sources__WEBPACK_IMPORTED_MODULE_3__["PayloadSource"].DecryptedTransient);\n\n if (decrypted) {\n _context.next = 16;\n break;\n }\n\n if (received.deleted) {\n _context.next = 14;\n break;\n }\n\n throw \'Cannot find decrypted for non-deleted payload.\';\n\n case 14:\n filtered.push(received);\n return _context.abrupt("continue", 24);\n\n case 16:\n if (!savedOrSaving) {\n _context.next = 19;\n break;\n }\n\n conflicted.push(decrypted);\n return _context.abrupt("continue", 24);\n\n case 19:\n base = this.findBasePayload(received.uuid);\n\n if (!(base && base.dirty)) {\n _context.next = 23;\n break;\n }\n\n conflicted.push(decrypted);\n return _context.abrupt("continue", 24);\n\n case 23:\n filtered.push(decrypted);\n\n case 24:\n _iteratorNormalCompletion = true;\n _context.next = 7;\n break;\n\n case 27:\n _context.next = 33;\n break;\n\n case 29:\n _context.prev = 29;\n _context.t0 = _context["catch"](5);\n _didIteratorError = true;\n _iteratorError = _context.t0;\n\n case 33:\n _context.prev = 33;\n _context.prev = 34;\n\n if (!_iteratorNormalCompletion && _iterator.return != null) {\n _iterator.return();\n }\n\n case 36:\n _context.prev = 36;\n\n if (!_didIteratorError) {\n _context.next = 39;\n break;\n }\n\n throw _iteratorError;\n\n case 39:\n return _context.finish(36);\n\n case 40:\n return _context.finish(33);\n\n case 41:\n /**\n * For any potential conflict above, we compare the values with current\n * local values, and if they differ, we create a new payload that is a copy\n * of the server payload.\n */\n conflictResults = [];\n _i = 0, _conflicted = conflicted;\n\n case 43:\n if (!(_i < _conflicted.length)) {\n _context.next = 60;\n break;\n }\n\n conflict = _conflicted[_i];\n _decrypted = this.findRelatedPayload(conflict.uuid, _Payloads_sources__WEBPACK_IMPORTED_MODULE_3__["PayloadSource"].DecryptedTransient);\n\n if (_decrypted) {\n _context.next = 48;\n break;\n }\n\n return _context.abrupt("continue", 57);\n\n case 48:\n current = this.findBasePayload(conflict.uuid);\n\n if (current) {\n _context.next = 51;\n break;\n }\n\n return _context.abrupt("continue", 57);\n\n case 51:\n delta = new _Payloads_deltas_conflict__WEBPACK_IMPORTED_MODULE_1__["ConflictDelta"](this.baseCollection, current, _decrypted, _Payloads_sources__WEBPACK_IMPORTED_MODULE_3__["PayloadSource"].ConflictData);\n _context.next = 54;\n return delta.resultingCollection();\n\n case 54:\n deltaCollection = _context.sent;\n payloads = deltaCollection.all();\n Object(_Lib_utils__WEBPACK_IMPORTED_MODULE_5__["extendArray"])(conflictResults, payloads);\n\n case 57:\n _i++;\n _context.next = 43;\n break;\n\n case 60:\n return _context.abrupt("return", _Protocol_collection_payload_collection__WEBPACK_IMPORTED_MODULE_4__["ImmutablePayloadCollection"].WithPayloads(filtered.concat(conflictResults), _Payloads_sources__WEBPACK_IMPORTED_MODULE_3__["PayloadSource"].RemoteRetrieved));\n\n case 61:\n case "end":\n return _context.stop();\n }\n }\n }, _callee, this, [[5, 29, 33, 41], [34,, 36, 40]]);\n }));\n\n function resultingCollection() {\n return _resultingCollection.apply(this, arguments);\n }\n\n return resultingCollection;\n }()\n }]);\n\n return DeltaRemoteRetrieved;\n}(_Payloads_deltas_delta__WEBPACK_IMPORTED_MODULE_2__["PayloadsDelta"]);//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9saWIvcHJvdG9jb2wvcGF5bG9hZHMvZGVsdGFzL3JlbW90ZV9yZXRyaWV2ZWQudHMuanMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly9TTkxpYnJhcnkvLi9saWIvcHJvdG9jb2wvcGF5bG9hZHMvZGVsdGFzL3JlbW90ZV9yZXRyaWV2ZWQudHM/NGFjNCJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb25mbGljdERlbHRhIH0gZnJvbSAnQFBheWxvYWRzL2RlbHRhcy9jb25mbGljdCc7XG5pbXBvcnQgeyBQYXlsb2Fkc0RlbHRhIH0gZnJvbSAnQFBheWxvYWRzL2RlbHRhcy9kZWx0YSc7XG5pbXBvcnQgeyBQYXlsb2FkU291cmNlIH0gZnJvbSAnQFBheWxvYWRzL3NvdXJjZXMnO1xuaW1wb3J0IHsgSW1tdXRhYmxlUGF5bG9hZENvbGxlY3Rpb24gfSBmcm9tIFwiQFByb3RvY29sL2NvbGxlY3Rpb24vcGF5bG9hZF9jb2xsZWN0aW9uXCI7XG5pbXBvcnQgeyBleHRlbmRBcnJheSB9IGZyb20gJ0BMaWIvdXRpbHMnO1xuZXhwb3J0IGNsYXNzIERlbHRhUmVtb3RlUmV0cmlldmVkIGV4dGVuZHMgUGF5bG9hZHNEZWx0YSB7XG4gICAgYXN5bmMgcmVzdWx0aW5nQ29sbGVjdGlvbigpIHtcbiAgICAgICAgY29uc3QgZmlsdGVyZWQgPSBbXTtcbiAgICAgICAgY29uc3QgY29uZmxpY3RlZCA9IFtdO1xuICAgICAgICAvKipcbiAgICAgICAgKiBJZiB3ZSBoYXZlIHJldHJpZXZlZCBhbiBpdGVtIHRoYXQgd2FzIHNhdmVkIGFzIHBhcnQgb2YgdGhpcyBvbmdvaW5nIHN5bmMgb3BlcmF0aW9uLFxuICAgICAgICAqIG9yIGlmIHRoZSBpdGVtIGlzIGxvY2FsbHkgZGlydHksIGZpbHRlciBpdCBvdXQgb2YgcmV0cmlldmVkX2l0ZW1zLCBhbmQgYWRkIHRvIHBvdGVudGlhbCBjb25mbGljdHMuXG4gICAgICAgICovXG4gICAgICAgIGZvciAoY29uc3QgcmVjZWl2ZWQgb2YgdGhpcy5hcHBseUNvbGxlY3Rpb24uYWxsKCkpIHtcbiAgICAgICAgICAgIGNvbnN0IHNhdmVkT3JTYXZpbmcgPSB0aGlzLmZpbmRSZWxhdGVkUGF5bG9hZChyZWNlaXZlZC51dWlkLCBQYXlsb2FkU291cmNlLlNhdmVkT3JTYXZpbmcpO1xuICAgICAgICAgICAgY29uc3QgZGVjcnlwdGVkID0gdGhpcy5maW5kUmVsYXRlZFBheWxvYWQocmVjZWl2ZWQudXVpZCwgUGF5bG9hZFNvdXJjZS5EZWNyeXB0ZWRUcmFuc2llbnQpO1xuICAgICAgICAgICAgaWYgKCFkZWNyeXB0ZWQpIHtcbiAgICAgICAgICAgICAgICAvKiogRGVjcnlwdGVkIHNob3VsZCBvbmx5IGJlIG1pc3NpbmcgaW4gY2FzZSBvZiBkZWxldGVkIHJldHJpZXZlZCBpdGVtICovXG4gICAgICAgICAgICAgICAgaWYgKCFyZWNlaXZlZC5kZWxldGVkKSB7XG4gICAgICAgICAgICAgICAgICAgIHRocm93ICdDYW5ub3QgZmluZCBkZWNyeXB0ZWQgZm9yIG5vbi1kZWxldGVkIHBheWxvYWQuJztcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgZmlsdGVyZWQucHVzaChyZWNlaXZlZCk7XG4gICAgICAgICAgICAgICAgY29udGludWU7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBpZiAoc2F2ZWRPclNhdmluZykge1xuICAgICAgICAgICAgICAgIGNvbmZsaWN0ZWQucHVzaChkZWNyeXB0ZWQpO1xuICAgICAgICAgICAgICAgIGNvbnRpbnVlO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgY29uc3QgYmFzZSA9IHRoaXMuZmluZEJhc2VQYXlsb2FkKHJlY2VpdmVkLnV1aWQpO1xuICAgICAgICAgICAgaWYgKGJhc2UgJiYgYmFzZS5kaXJ0eSkge1xuICAgICAgICAgICAgICAgIGNvbmZsaWN0ZWQucHVzaChkZWNyeXB0ZWQpO1xuICAgICAgICAgICAgICAgIGNvbnRpbnVlO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgZmlsdGVyZWQucHVzaChkZWNyeXB0ZWQpO1xuICAgICAgICB9XG4gICAgICAgIC8qKlxuICAgICAgICAgKiBGb3IgYW55IHBvdGVudGlhbCBjb25mbGljdCBhYm92ZSwgd2UgY29tcGFyZSB0aGUgdmFsdWVzIHdpdGggY3VycmVudFxuICAgICAgICAgKiBsb2NhbCB2YWx1ZXMsIGFuZCBpZiB0aGV5IGRpZmZlciwgd2UgY3JlYXRlIGEgbmV3IHBheWxvYWQgdGhhdCBpcyBhIGNvcHlcbiAgICAgICAgICogb2YgdGhlIHNlcnZlciBwYXlsb2FkLlxuICAgICAgICAgKi9cbiAgICAgICAgY29uc3QgY29uZmxpY3RSZXN1bHRzID0gW107XG4gICAgICAgIGZvciAoY29uc3QgY29uZmxpY3Qgb2YgY29uZmxpY3RlZCkge1xuICAgICAgICAgICAgY29uc3QgZGVjcnlwdGVkID0gdGhpcy5maW5kUmVsYXRlZFBheWxvYWQoY29uZmxpY3QudXVpZCwgUGF5bG9hZFNvdXJjZS5EZWNyeXB0ZWRUcmFuc2llbnQpO1xuICAgICAgICAgICAgaWYgKCFkZWNyeXB0ZWQpIHtcbiAgICAgICAgICAgICAgICBjb250aW51ZTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGNvbnN0IGN1cnJlbnQgPSB0aGlzLmZpbmRCYXNlUGF5bG9hZChjb25mbGljdC51dWlkKTtcbiAgICAgICAgICAgIGlmICghY3VycmVudCkge1xuICAgICAgICAgICAgICAgIGNvbnRpbnVlO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgY29uc3QgZGVsdGEgPSBuZXcgQ29uZmxpY3REZWx0YSh0aGlzLmJhc2VDb2xsZWN0aW9uLCBjdXJyZW50LCBkZWNyeXB0ZWQsIFBheWxvYWRTb3VyY2UuQ29uZmxpY3REYXRhKTtcbiAgICAgICAgICAgIGNvbnN0IGRlbHRhQ29sbGVjdGlvbiA9IGF3YWl0IGRlbHRhLnJlc3VsdGluZ0NvbGxlY3Rpb24oKTtcbiAgICAgICAgICAgIGNvbnN0IHBheWxvYWRzID0gZGVsdGFDb2xsZWN0aW9uLmFsbCgpO1xuICAgICAgICAgICAgZXh0ZW5kQXJyYXkoY29uZmxpY3RSZXN1bHRzLCBwYXlsb2Fkcyk7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIEltbXV0YWJsZVBheWxvYWRDb2xsZWN0aW9uLldpdGhQYXlsb2FkcyhmaWx0ZXJlZC5jb25jYXQoY29uZmxpY3RSZXN1bHRzKSwgUGF5bG9hZFNvdXJjZS5SZW1vdGVSZXRyaWV2ZWQpO1xuICAgIH1cbn1cbiJdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQURBO0FBQUE7QUFDQTtBQURBO0FBQUE7QUFDQTtBQURBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFDQTtBQURBO0FBQUE7QUFBQTtBQUFBO0FBRUE7QUFDQTtBQUNBOzs7OztBQUpBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFDQTtBQURBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFDQTtBQU9BO0FBQ0E7QUFDQTtBQUNBO0FBWEE7QUFBQTtBQUFBO0FBQUE7QUFDQTtBQURBO0FBQUE7QUFBQTtBQUFBO0FBQ0E7QUFEQTtBQUNBO0FBREE7QUFnQkE7QUFoQkE7QUFDQTtBQURBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFDQTtBQW1CQTtBQXBCQTtBQUNBO0FBREE7QUF1QkE7QUFDQTtBQXhCQTtBQUFBO0FBQUE7QUFBQTtBQUNBO0FBd0JBO0FBekJBO0FBQ0E7QUFEQTtBQTRCQTtBQUNBO0FBN0JBO0FBQUE7QUFBQTtBQUFBO0FBQ0E7QUFEQTtBQUFBO0FBQUE7QUFDQTtBQURBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFDQTtBQURBO0FBQUE7QUFBQTtBQUNBO0FBREE7QUFBQTtBQUFBO0FBQ0E7QUFEQTtBQUFBO0FBQ0E7QUFEQTtBQUFBO0FBQUE7QUFBQTtBQUNBO0FBREE7QUFDQTtBQURBO0FBQUE7QUFDQTtBQURBO0FBQUE7QUFDQTtBQURBO0FBOEJBOzs7OztBQUtBO0FBbkNBO0FBQ0E7QUFEQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQ0E7QUFtQ0E7QUFDQTtBQUNBO0FBdENBO0FBQUE7QUFBQTtBQUFBO0FBQ0E7QUFEQTtBQUNBO0FBREE7QUF5Q0E7QUFDQTtBQTFDQTtBQUFBO0FBQUE7QUFBQTtBQUNBO0FBREE7QUFDQTtBQURBO0FBNkNBO0FBN0NBO0FBQUE7QUFDQTtBQURBO0FBOENBO0FBQ0E7QUFDQTtBQUNBO0FBakRBO0FBQUE7QUFBQTtBQUFBO0FBQ0E7QUFEQTtBQUFBO0FBQ0E7QUFEQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUNBO0FBREE7QUFBQTtBQUFBO0FBQ0E7QUFEQTtBQUFBO0FBQUE7QUFDQTtBQURBO0FBQUEiLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./lib/protocol/payloads/deltas/remote_retrieved.ts\n')},"./lib/protocol/payloads/deltas/remote_saved.ts":
|
||
/*!******************************************************!*\
|
||
!*** ./lib/protocol/payloads/deltas/remote_saved.ts ***!
|
||
\******************************************************/
|
||
/*! exports provided: DeltaRemoteSaved */function(module,__webpack_exports__,__webpack_require__){"use strict";eval('__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "DeltaRemoteSaved", function() { return DeltaRemoteSaved; });\n/* harmony import */ var _babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @babel/runtime/regenerator */ "./node_modules/@babel/runtime/regenerator/index.js");\n/* harmony import */ var _babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var _Payloads_deltas_delta__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! @Payloads/deltas/delta */ "./lib/protocol/payloads/deltas/delta.ts");\n/* harmony import */ var _Payloads_sources__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! @Payloads/sources */ "./lib/protocol/payloads/sources.ts");\n/* harmony import */ var _Protocol_collection_payload_collection__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! @Protocol/collection/payload_collection */ "./lib/protocol/collection/payload_collection.ts");\n/* harmony import */ var _Payloads_generator__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! @Payloads/generator */ "./lib/protocol/payloads/generator.ts");\n\n\nfunction _typeof(obj) { "@babel/helpers - typeof"; if (typeof Symbol === "function" && typeof Symbol.iterator === "symbol") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }; } return _typeof(obj); }\n\nfunction asyncGeneratorStep(gen, resolve, reject, _next, _throw, key, arg) { try { var info = gen[key](arg); var value = info.value; } catch (error) { reject(error); return; } if (info.done) { resolve(value); } else { Promise.resolve(value).then(_next, _throw); } }\n\nfunction _asyncToGenerator(fn) { return function () { var self = this, args = arguments; return new Promise(function (resolve, reject) { var gen = fn.apply(self, args); function _next(value) { asyncGeneratorStep(gen, resolve, reject, _next, _throw, "next", value); } function _throw(err) { asyncGeneratorStep(gen, resolve, reject, _next, _throw, "throw", err); } _next(undefined); }); }; }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } }\n\nfunction _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); } }\n\nfunction _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; }\n\nfunction _possibleConstructorReturn(self, call) { if (call && (_typeof(call) === "object" || typeof call === "function")) { return call; } return _assertThisInitialized(self); }\n\nfunction _assertThisInitialized(self) { if (self === void 0) { throw new ReferenceError("this hasn\'t been initialised - super() hasn\'t been called"); } return self; }\n\nfunction _getPrototypeOf(o) { _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function _getPrototypeOf(o) { return o.__proto__ || Object.getPrototypeOf(o); }; return _getPrototypeOf(o); }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== "function" && superClass !== null) { throw new TypeError("Super expression must either be null or a function"); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, writable: true, configurable: true } }); if (superClass) _setPrototypeOf(subClass, superClass); }\n\nfunction _setPrototypeOf(o, p) { _setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) { o.__proto__ = p; return o; }; return _setPrototypeOf(o, p); }\n\n\n\n\n\nvar DeltaRemoteSaved = /*#__PURE__*/function (_PayloadsDelta) {\n _inherits(DeltaRemoteSaved, _PayloadsDelta);\n\n function DeltaRemoteSaved() {\n _classCallCheck(this, DeltaRemoteSaved);\n\n return _possibleConstructorReturn(this, _getPrototypeOf(DeltaRemoteSaved).apply(this, arguments));\n }\n\n _createClass(DeltaRemoteSaved, [{\n key: "resultingCollection",\n value: function () {\n var _resultingCollection = _asyncToGenerator( /*#__PURE__*/_babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0___default.a.mark(function _callee() {\n var processed, _iteratorNormalCompletion, _didIteratorError, _iteratorError, _iterator, _step, payload, current, deletedState, result;\n\n return _babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0___default.a.wrap(function _callee$(_context) {\n while (1) {\n switch (_context.prev = _context.next) {\n case 0:\n processed = [];\n _iteratorNormalCompletion = true;\n _didIteratorError = false;\n _iteratorError = undefined;\n _context.prev = 4;\n\n for (_iterator = this.applyCollection.all()[Symbol.iterator](); !(_iteratorNormalCompletion = (_step = _iterator.next()).done); _iteratorNormalCompletion = true) {\n payload = _step.value;\n current = this.findBasePayload(payload.uuid);\n /** If we save an item, but while in transit it is deleted locally, we want to keep\n * local deletion status, and not old deleted value that was sent to server. */\n\n deletedState = current ? current.deleted : payload.deleted;\n result = Object(_Payloads_generator__WEBPACK_IMPORTED_MODULE_4__["CreateSourcedPayloadFromObject"])(payload, _Payloads_sources__WEBPACK_IMPORTED_MODULE_2__["PayloadSource"].RemoteSaved, {\n lastSyncEnd: new Date(),\n deleted: deletedState\n });\n processed.push(result);\n }\n\n _context.next = 12;\n break;\n\n case 8:\n _context.prev = 8;\n _context.t0 = _context["catch"](4);\n _didIteratorError = true;\n _iteratorError = _context.t0;\n\n case 12:\n _context.prev = 12;\n _context.prev = 13;\n\n if (!_iteratorNormalCompletion && _iterator.return != null) {\n _iterator.return();\n }\n\n case 15:\n _context.prev = 15;\n\n if (!_didIteratorError) {\n _context.next = 18;\n break;\n }\n\n throw _iteratorError;\n\n case 18:\n return _context.finish(15);\n\n case 19:\n return _context.finish(12);\n\n case 20:\n return _context.abrupt("return", _Protocol_collection_payload_collection__WEBPACK_IMPORTED_MODULE_3__["ImmutablePayloadCollection"].WithPayloads(processed, _Payloads_sources__WEBPACK_IMPORTED_MODULE_2__["PayloadSource"].RemoteSaved));\n\n case 21:\n case "end":\n return _context.stop();\n }\n }\n }, _callee, this, [[4, 8, 12, 20], [13,, 15, 19]]);\n }));\n\n function resultingCollection() {\n return _resultingCollection.apply(this, arguments);\n }\n\n return resultingCollection;\n }()\n }]);\n\n return DeltaRemoteSaved;\n}(_Payloads_deltas_delta__WEBPACK_IMPORTED_MODULE_1__["PayloadsDelta"]);//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9saWIvcHJvdG9jb2wvcGF5bG9hZHMvZGVsdGFzL3JlbW90ZV9zYXZlZC50cy5qcyIsInNvdXJjZXMiOlsid2VicGFjazovL1NOTGlicmFyeS8uL2xpYi9wcm90b2NvbC9wYXlsb2Fkcy9kZWx0YXMvcmVtb3RlX3NhdmVkLnRzP2MyZGUiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgUGF5bG9hZHNEZWx0YSB9IGZyb20gJ0BQYXlsb2Fkcy9kZWx0YXMvZGVsdGEnO1xuaW1wb3J0IHsgUGF5bG9hZFNvdXJjZSB9IGZyb20gJ0BQYXlsb2Fkcy9zb3VyY2VzJztcbmltcG9ydCB7IEltbXV0YWJsZVBheWxvYWRDb2xsZWN0aW9uIH0gZnJvbSBcIkBQcm90b2NvbC9jb2xsZWN0aW9uL3BheWxvYWRfY29sbGVjdGlvblwiO1xuaW1wb3J0IHsgQ3JlYXRlU291cmNlZFBheWxvYWRGcm9tT2JqZWN0IH0gZnJvbSAnQFBheWxvYWRzL2dlbmVyYXRvcic7XG5leHBvcnQgY2xhc3MgRGVsdGFSZW1vdGVTYXZlZCBleHRlbmRzIFBheWxvYWRzRGVsdGEge1xuICAgIGFzeW5jIHJlc3VsdGluZ0NvbGxlY3Rpb24oKSB7XG4gICAgICAgIGNvbnN0IHByb2Nlc3NlZCA9IFtdO1xuICAgICAgICBmb3IgKGNvbnN0IHBheWxvYWQgb2YgdGhpcy5hcHBseUNvbGxlY3Rpb24uYWxsKCkpIHtcbiAgICAgICAgICAgIGNvbnN0IGN1cnJlbnQgPSB0aGlzLmZpbmRCYXNlUGF5bG9hZChwYXlsb2FkLnV1aWQpO1xuICAgICAgICAgICAgLyoqIElmIHdlIHNhdmUgYW4gaXRlbSwgYnV0IHdoaWxlIGluIHRyYW5zaXQgaXQgaXMgZGVsZXRlZCBsb2NhbGx5LCB3ZSB3YW50IHRvIGtlZXBcbiAgICAgICAgICAgICAqIGxvY2FsIGRlbGV0aW9uIHN0YXR1cywgYW5kIG5vdCBvbGQgZGVsZXRlZCB2YWx1ZSB0aGF0IHdhcyBzZW50IHRvIHNlcnZlci4gKi9cbiAgICAgICAgICAgIGNvbnN0IGRlbGV0ZWRTdGF0ZSA9IGN1cnJlbnQgPyBjdXJyZW50LmRlbGV0ZWQgOiBwYXlsb2FkLmRlbGV0ZWQ7XG4gICAgICAgICAgICBjb25zdCByZXN1bHQgPSBDcmVhdGVTb3VyY2VkUGF5bG9hZEZyb21PYmplY3QocGF5bG9hZCwgUGF5bG9hZFNvdXJjZS5SZW1vdGVTYXZlZCwge1xuICAgICAgICAgICAgICAgIGxhc3RTeW5jRW5kOiBuZXcgRGF0ZSgpLFxuICAgICAgICAgICAgICAgIGRlbGV0ZWQ6IGRlbGV0ZWRTdGF0ZVxuICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICBwcm9jZXNzZWQucHVzaChyZXN1bHQpO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiBJbW11dGFibGVQYXlsb2FkQ29sbGVjdGlvbi5XaXRoUGF5bG9hZHMocHJvY2Vzc2VkLCBQYXlsb2FkU291cmNlLlJlbW90ZVNhdmVkKTtcbiAgICB9XG59XG4iXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFEQTtBQUFBO0FBQ0E7QUFEQTtBQUFBO0FBQ0E7QUFEQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQ0E7QUFEQTtBQUFBO0FBQUE7QUFBQTtBQUVBO0FBRkE7QUFBQTtBQUFBO0FBQUE7QUFDQTtBQUVBO0FBQUE7QUFDQTtBQUNBOzs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUZBO0FBSUE7QUFDQTtBQUNBO0FBZEE7QUFBQTtBQUNBO0FBREE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUNBO0FBREE7QUFBQTtBQUFBO0FBQ0E7QUFEQTtBQUFBO0FBQUE7QUFDQTtBQURBO0FBQUE7QUFDQTtBQURBO0FBQUE7QUFBQTtBQUFBO0FBQ0E7QUFEQTtBQUNBO0FBREE7QUFBQTtBQUNBO0FBREE7QUFBQTtBQUNBO0FBREE7QUFBQTtBQUNBO0FBREE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFDQTtBQURBO0FBQUE7QUFBQTtBQUNBO0FBREE7QUFBQTtBQUFBO0FBQ0E7QUFEQTtBQUFBIiwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./lib/protocol/payloads/deltas/remote_saved.ts\n')},"./lib/protocol/payloads/deltas/strategies.ts":
|
||
/*!****************************************************!*\
|
||
!*** ./lib/protocol/payloads/deltas/strategies.ts ***!
|
||
\****************************************************/
|
||
/*! exports provided: ConflictStrategy */function(module,__webpack_exports__,__webpack_require__){"use strict";eval('__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "ConflictStrategy", function() { return ConflictStrategy; });\nvar ConflictStrategy;\n\n(function (ConflictStrategy) {\n ConflictStrategy[ConflictStrategy["KeepLeft"] = 1] = "KeepLeft";\n ConflictStrategy[ConflictStrategy["KeepRight"] = 2] = "KeepRight";\n ConflictStrategy[ConflictStrategy["KeepLeftDuplicateRight"] = 3] = "KeepLeftDuplicateRight";\n ConflictStrategy[ConflictStrategy["DuplicateLeftKeepRight"] = 4] = "DuplicateLeftKeepRight";\n ConflictStrategy[ConflictStrategy["KeepLeftMergeRefs"] = 5] = "KeepLeftMergeRefs";\n})(ConflictStrategy || (ConflictStrategy = {}));\n\n;//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9saWIvcHJvdG9jb2wvcGF5bG9hZHMvZGVsdGFzL3N0cmF0ZWdpZXMudHMuanMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly9TTkxpYnJhcnkvLi9saWIvcHJvdG9jb2wvcGF5bG9hZHMvZGVsdGFzL3N0cmF0ZWdpZXMudHM/NGJlMCJdLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgdmFyIENvbmZsaWN0U3RyYXRlZ3k7XG4oZnVuY3Rpb24gKENvbmZsaWN0U3RyYXRlZ3kpIHtcbiAgICBDb25mbGljdFN0cmF0ZWd5W0NvbmZsaWN0U3RyYXRlZ3lbXCJLZWVwTGVmdFwiXSA9IDFdID0gXCJLZWVwTGVmdFwiO1xuICAgIENvbmZsaWN0U3RyYXRlZ3lbQ29uZmxpY3RTdHJhdGVneVtcIktlZXBSaWdodFwiXSA9IDJdID0gXCJLZWVwUmlnaHRcIjtcbiAgICBDb25mbGljdFN0cmF0ZWd5W0NvbmZsaWN0U3RyYXRlZ3lbXCJLZWVwTGVmdER1cGxpY2F0ZVJpZ2h0XCJdID0gM10gPSBcIktlZXBMZWZ0RHVwbGljYXRlUmlnaHRcIjtcbiAgICBDb25mbGljdFN0cmF0ZWd5W0NvbmZsaWN0U3RyYXRlZ3lbXCJEdXBsaWNhdGVMZWZ0S2VlcFJpZ2h0XCJdID0gNF0gPSBcIkR1cGxpY2F0ZUxlZnRLZWVwUmlnaHRcIjtcbiAgICBDb25mbGljdFN0cmF0ZWd5W0NvbmZsaWN0U3RyYXRlZ3lbXCJLZWVwTGVmdE1lcmdlUmVmc1wiXSA9IDVdID0gXCJLZWVwTGVmdE1lcmdlUmVmc1wiO1xufSkoQ29uZmxpY3RTdHJhdGVneSB8fCAoQ29uZmxpY3RTdHJhdGVneSA9IHt9KSk7XG47XG4iXSwibWFwcGluZ3MiOiJBQUFBO0FBQUE7QUFBQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBIiwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./lib/protocol/payloads/deltas/strategies.ts\n')},"./lib/protocol/payloads/fields.ts":
|
||
/*!*****************************************!*\
|
||
!*** ./lib/protocol/payloads/fields.ts ***!
|
||
\*****************************************/
|
||
/*! exports provided: PayloadField */function(module,__webpack_exports__,__webpack_require__){"use strict";eval('__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "PayloadField", function() { return PayloadField; });\nvar PayloadField;\n\n(function (PayloadField) {\n PayloadField["Uuid"] = "uuid";\n PayloadField["ContentType"] = "content_type";\n PayloadField["ItemsKeyId"] = "items_key_id";\n PayloadField["EncItemKey"] = "enc_item_key";\n PayloadField["Content"] = "content";\n PayloadField["CreatedAt"] = "created_at";\n PayloadField["UpdatedAt"] = "updated_at";\n PayloadField["Deleted"] = "deleted";\n PayloadField["Legacy003AuthHash"] = "auth_hash";\n PayloadField["Legacy003AuthParams"] = "auth_params";\n PayloadField["Dirty"] = "dirty";\n PayloadField["DirtiedDate"] = "dirtiedDate";\n PayloadField["WaitingForKey"] = "waitingForKey";\n PayloadField["ErrorDecrypting"] = "errorDecrypting";\n PayloadField["ErrorDecryptingChanged"] = "errorDecryptingValueChanged";\n PayloadField["LastSyncBegan"] = "lastSyncBegan";\n PayloadField["LastSyncEnd"] = "lastSyncEnd";\n})(PayloadField || (PayloadField = {}));\n\n;//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9saWIvcHJvdG9jb2wvcGF5bG9hZHMvZmllbGRzLnRzLmpzIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vU05MaWJyYXJ5Ly4vbGliL3Byb3RvY29sL3BheWxvYWRzL2ZpZWxkcy50cz9lMzAwIl0sInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCB2YXIgUGF5bG9hZEZpZWxkO1xuKGZ1bmN0aW9uIChQYXlsb2FkRmllbGQpIHtcbiAgICBQYXlsb2FkRmllbGRbXCJVdWlkXCJdID0gXCJ1dWlkXCI7XG4gICAgUGF5bG9hZEZpZWxkW1wiQ29udGVudFR5cGVcIl0gPSBcImNvbnRlbnRfdHlwZVwiO1xuICAgIFBheWxvYWRGaWVsZFtcIkl0ZW1zS2V5SWRcIl0gPSBcIml0ZW1zX2tleV9pZFwiO1xuICAgIFBheWxvYWRGaWVsZFtcIkVuY0l0ZW1LZXlcIl0gPSBcImVuY19pdGVtX2tleVwiO1xuICAgIFBheWxvYWRGaWVsZFtcIkNvbnRlbnRcIl0gPSBcImNvbnRlbnRcIjtcbiAgICBQYXlsb2FkRmllbGRbXCJDcmVhdGVkQXRcIl0gPSBcImNyZWF0ZWRfYXRcIjtcbiAgICBQYXlsb2FkRmllbGRbXCJVcGRhdGVkQXRcIl0gPSBcInVwZGF0ZWRfYXRcIjtcbiAgICBQYXlsb2FkRmllbGRbXCJEZWxldGVkXCJdID0gXCJkZWxldGVkXCI7XG4gICAgUGF5bG9hZEZpZWxkW1wiTGVnYWN5MDAzQXV0aEhhc2hcIl0gPSBcImF1dGhfaGFzaFwiO1xuICAgIFBheWxvYWRGaWVsZFtcIkxlZ2FjeTAwM0F1dGhQYXJhbXNcIl0gPSBcImF1dGhfcGFyYW1zXCI7XG4gICAgUGF5bG9hZEZpZWxkW1wiRGlydHlcIl0gPSBcImRpcnR5XCI7XG4gICAgUGF5bG9hZEZpZWxkW1wiRGlydGllZERhdGVcIl0gPSBcImRpcnRpZWREYXRlXCI7XG4gICAgUGF5bG9hZEZpZWxkW1wiV2FpdGluZ0ZvcktleVwiXSA9IFwid2FpdGluZ0ZvcktleVwiO1xuICAgIFBheWxvYWRGaWVsZFtcIkVycm9yRGVjcnlwdGluZ1wiXSA9IFwiZXJyb3JEZWNyeXB0aW5nXCI7XG4gICAgUGF5bG9hZEZpZWxkW1wiRXJyb3JEZWNyeXB0aW5nQ2hhbmdlZFwiXSA9IFwiZXJyb3JEZWNyeXB0aW5nVmFsdWVDaGFuZ2VkXCI7XG4gICAgUGF5bG9hZEZpZWxkW1wiTGFzdFN5bmNCZWdhblwiXSA9IFwibGFzdFN5bmNCZWdhblwiO1xuICAgIFBheWxvYWRGaWVsZFtcIkxhc3RTeW5jRW5kXCJdID0gXCJsYXN0U3luY0VuZFwiO1xufSkoUGF5bG9hZEZpZWxkIHx8IChQYXlsb2FkRmllbGQgPSB7fSkpO1xuO1xuIl0sIm1hcHBpbmdzIjoiQUFBQTtBQUFBO0FBQUE7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQSIsInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./lib/protocol/payloads/fields.ts\n')},"./lib/protocol/payloads/formats.ts":
|
||
/*!******************************************!*\
|
||
!*** ./lib/protocol/payloads/formats.ts ***!
|
||
\******************************************/
|
||
/*! exports provided: PayloadFormat */function(module,__webpack_exports__,__webpack_require__){"use strict";eval('__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "PayloadFormat", function() { return PayloadFormat; });\nvar PayloadFormat;\n\n(function (PayloadFormat) {\n PayloadFormat[PayloadFormat["EncryptedString"] = 0] = "EncryptedString";\n PayloadFormat[PayloadFormat["DecryptedBareObject"] = 1] = "DecryptedBareObject";\n PayloadFormat[PayloadFormat["DecryptedBase64String"] = 2] = "DecryptedBase64String";\n PayloadFormat[PayloadFormat["Deleted"] = 3] = "Deleted";\n})(PayloadFormat || (PayloadFormat = {}));\n\n;//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9saWIvcHJvdG9jb2wvcGF5bG9hZHMvZm9ybWF0cy50cy5qcyIsInNvdXJjZXMiOlsid2VicGFjazovL1NOTGlicmFyeS8uL2xpYi9wcm90b2NvbC9wYXlsb2Fkcy9mb3JtYXRzLnRzPzczNjQiXSwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0IHZhciBQYXlsb2FkRm9ybWF0O1xuKGZ1bmN0aW9uIChQYXlsb2FkRm9ybWF0KSB7XG4gICAgUGF5bG9hZEZvcm1hdFtQYXlsb2FkRm9ybWF0W1wiRW5jcnlwdGVkU3RyaW5nXCJdID0gMF0gPSBcIkVuY3J5cHRlZFN0cmluZ1wiO1xuICAgIFBheWxvYWRGb3JtYXRbUGF5bG9hZEZvcm1hdFtcIkRlY3J5cHRlZEJhcmVPYmplY3RcIl0gPSAxXSA9IFwiRGVjcnlwdGVkQmFyZU9iamVjdFwiO1xuICAgIFBheWxvYWRGb3JtYXRbUGF5bG9hZEZvcm1hdFtcIkRlY3J5cHRlZEJhc2U2NFN0cmluZ1wiXSA9IDJdID0gXCJEZWNyeXB0ZWRCYXNlNjRTdHJpbmdcIjtcbiAgICBQYXlsb2FkRm9ybWF0W1BheWxvYWRGb3JtYXRbXCJEZWxldGVkXCJdID0gM10gPSBcIkRlbGV0ZWRcIjtcbn0pKFBheWxvYWRGb3JtYXQgfHwgKFBheWxvYWRGb3JtYXQgPSB7fSkpO1xuO1xuIl0sIm1hcHBpbmdzIjoiQUFBQTtBQUFBO0FBQUE7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUEiLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./lib/protocol/payloads/formats.ts\n')},"./lib/protocol/payloads/functions.ts":
|
||
/*!********************************************!*\
|
||
!*** ./lib/protocol/payloads/functions.ts ***!
|
||
\********************************************/
|
||
/*! exports provided: PayloadsByDuplicating, PayloadsByAlternatingUuid, PayloadContentsEqual */function(module,__webpack_exports__,__webpack_require__){"use strict";eval('__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "PayloadsByDuplicating", function() { return PayloadsByDuplicating; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "PayloadsByAlternatingUuid", function() { return PayloadsByAlternatingUuid; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "PayloadContentsEqual", function() { return PayloadContentsEqual; });\n/* harmony import */ var _babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @babel/runtime/regenerator */ "./node_modules/@babel/runtime/regenerator/index.js");\n/* harmony import */ var _babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var _models_core_item__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./../../models/core/item */ "./lib/models/core/item.ts");\n/* harmony import */ var _models_app_component__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./../../models/app/component */ "./lib/models/app/component.ts");\n/* harmony import */ var _Models_generator__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! @Models/generator */ "./lib/models/generator.ts");\n/* harmony import */ var lodash_remove__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! lodash/remove */ "./node_modules/lodash/remove.js");\n/* harmony import */ var lodash_remove__WEBPACK_IMPORTED_MODULE_4___default = /*#__PURE__*/__webpack_require__.n(lodash_remove__WEBPACK_IMPORTED_MODULE_4__);\n/* harmony import */ var _Payloads_generator__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! @Payloads/generator */ "./lib/protocol/payloads/generator.ts");\n/* harmony import */ var _Lib_utils__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! @Lib/utils */ "./lib/utils.ts");\n/* harmony import */ var _Lib_uuid__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! @Lib/uuid */ "./lib/uuid.ts");\n/* harmony import */ var _Lib_models__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! @Lib/models */ "./lib/models/index.ts");\n\n\nfunction ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly) symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); keys.push.apply(keys, symbols); } return keys; }\n\nfunction _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; if (i % 2) { ownKeys(Object(source), true).forEach(function (key) { _defineProperty(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } } return target; }\n\nfunction asyncGeneratorStep(gen, resolve, reject, _next, _throw, key, arg) { try { var info = gen[key](arg); var value = info.value; } catch (error) { reject(error); return; } if (info.done) { resolve(value); } else { Promise.resolve(value).then(_next, _throw); } }\n\nfunction _asyncToGenerator(fn) { return function () { var self = this, args = arguments; return new Promise(function (resolve, reject) { var gen = fn.apply(self, args); function _next(value) { asyncGeneratorStep(gen, resolve, reject, _next, _throw, "next", value); } function _throw(err) { asyncGeneratorStep(gen, resolve, reject, _next, _throw, "throw", err); } _next(undefined); }); }; }\n\nfunction _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\n\n\n\n\n\n\n\n\n\n\nfunction NoteDuplicationAffectedPayloads(basePayload, duplicatePayload, baseCollection) {\n /** If note has editor, maintain editor relationship in duplicate note */\n var components = baseCollection.all(_Lib_models__WEBPACK_IMPORTED_MODULE_8__["ContentType"].Component).map(function (payload) {\n return Object(_Models_generator__WEBPACK_IMPORTED_MODULE_3__["CreateItemFromPayload"])(payload);\n });\n var editor = components.filter(function (c) {\n return c.area === _models_app_component__WEBPACK_IMPORTED_MODULE_2__["ComponentArea"].Editor;\n }).find(function (e) {\n return e.isExplicitlyEnabledForItem(basePayload.uuid);\n });\n\n if (!editor) {\n return undefined;\n }\n /** Modify the editor to include new note */\n\n\n var mutator = new _models_app_component__WEBPACK_IMPORTED_MODULE_2__["ComponentMutator"](editor, _models_core_item__WEBPACK_IMPORTED_MODULE_1__["MutationType"].Internal);\n mutator.associateWithItem(duplicatePayload.uuid);\n var result = mutator.getResult();\n return [result];\n}\n\nvar AffectorMapping = _defineProperty({}, _Lib_models__WEBPACK_IMPORTED_MODULE_8__["ContentType"].Note, NoteDuplicationAffectedPayloads);\n/**\n * Copies payload and assigns it a new uuid.\n * @returns An array of payloads that have changed as a result of copying.\n */\n\n\nfunction PayloadsByDuplicating(_x, _x2, _x3) {\n return _PayloadsByDuplicating.apply(this, arguments);\n}\n/**\n * Return the payloads that result if you alternated the uuid for the payload.\n * Alternating a UUID involves instructing related items to drop old references of a uuid\n * for the new one.\n * @returns An array of payloads that have changed as a result of copying.\n */\n\nfunction _PayloadsByDuplicating() {\n _PayloadsByDuplicating = _asyncToGenerator( /*#__PURE__*/_babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0___default.a.mark(function _callee(payload, baseCollection, isConflict) {\n var results, override, copy, referencing, updatedReferencing, affector, affected;\n return _babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0___default.a.wrap(function _callee$(_context) {\n while (1) {\n switch (_context.prev = _context.next) {\n case 0:\n results = [];\n _context.next = 3;\n return _Lib_uuid__WEBPACK_IMPORTED_MODULE_7__["Uuid"].GenerateUuid();\n\n case 3:\n _context.t0 = _context.sent;\n _context.t1 = new Date();\n override = {\n uuid: _context.t0,\n dirty: true,\n dirtiedDate: _context.t1,\n lastSyncBegan: null,\n lastSyncEnd: null\n };\n\n if (isConflict) {\n override.content = _objectSpread({}, payload.safeContent, {\n conflict_of: payload.uuid\n });\n }\n\n copy = Object(_Payloads_generator__WEBPACK_IMPORTED_MODULE_5__["CopyPayload"])(payload, override);\n results.push(copy);\n /**\n * Get the payloads that make reference to payload and add the copy.\n */\n\n referencing = baseCollection.elementsReferencingElement(payload);\n _context.next = 12;\n return PayloadsByUpdatingReferences(referencing, [{\n uuid: copy.uuid,\n content_type: copy.content_type\n }]);\n\n case 12:\n updatedReferencing = _context.sent;\n Object(_Lib_utils__WEBPACK_IMPORTED_MODULE_6__["extendArray"])(results, updatedReferencing);\n affector = AffectorMapping[payload.content_type];\n\n if (affector) {\n affected = affector(payload, copy, baseCollection);\n\n if (affected) {\n Object(_Lib_utils__WEBPACK_IMPORTED_MODULE_6__["extendArray"])(results, affected);\n }\n }\n\n return _context.abrupt("return", results);\n\n case 17:\n case "end":\n return _context.stop();\n }\n }\n }, _callee);\n }));\n return _PayloadsByDuplicating.apply(this, arguments);\n}\n\nfunction PayloadsByAlternatingUuid(_x4, _x5) {\n return _PayloadsByAlternatingUuid.apply(this, arguments);\n}\n\nfunction _PayloadsByAlternatingUuid() {\n _PayloadsByAlternatingUuid = _asyncToGenerator( /*#__PURE__*/_babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0___default.a.mark(function _callee2(payload, baseCollection) {\n var results, copy, referencing, updatedReferencing, updatedSelf;\n return _babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0___default.a.wrap(function _callee2$(_context2) {\n while (1) {\n switch (_context2.prev = _context2.next) {\n case 0:\n results = [];\n /**\n * We need to clone payload and give it a new uuid,\n * then delete item with old uuid from db (cannot modify uuids in our IndexedDB setup)\n */\n\n _context2.t0 = _Payloads_generator__WEBPACK_IMPORTED_MODULE_5__["CopyPayload"];\n _context2.t1 = payload;\n _context2.next = 5;\n return _Lib_uuid__WEBPACK_IMPORTED_MODULE_7__["Uuid"].GenerateUuid();\n\n case 5:\n _context2.t2 = _context2.sent;\n _context2.t3 = new Date();\n _context2.t4 = {\n uuid: _context2.t2,\n dirty: true,\n dirtiedDate: _context2.t3,\n lastSyncBegan: null,\n lastSyncEnd: null\n };\n copy = (0, _context2.t0)(_context2.t1, _context2.t4);\n results.push(copy);\n /**\n * Get the payloads that make reference to payload and remove\n * payload as a relationship, instead adding the new copy.\n */\n\n referencing = baseCollection.elementsReferencingElement(payload);\n _context2.next = 13;\n return PayloadsByUpdatingReferences(referencing, [{\n uuid: copy.uuid,\n content_type: copy.content_type\n }], [payload.uuid]);\n\n case 13:\n updatedReferencing = _context2.sent;\n Object(_Lib_utils__WEBPACK_IMPORTED_MODULE_6__["extendArray"])(results, updatedReferencing);\n updatedSelf = Object(_Payloads_generator__WEBPACK_IMPORTED_MODULE_5__["CopyPayload"])(payload, {\n deleted: true,\n\n /** Do not set as dirty; this item is non-syncable\n and should be immediately discarded */\n dirty: false,\n content: undefined\n });\n results.push(updatedSelf);\n return _context2.abrupt("return", results);\n\n case 18:\n case "end":\n return _context2.stop();\n }\n }\n }, _callee2);\n }));\n return _PayloadsByAlternatingUuid.apply(this, arguments);\n}\n\nfunction PayloadsByUpdatingReferences(_x6, _x7, _x8) {\n return _PayloadsByUpdatingReferences.apply(this, arguments);\n}\n/**\n * Compares the .content fields for equality, creating new SNItem objects\n * to properly handle .content intricacies.\n */\n\n\nfunction _PayloadsByUpdatingReferences() {\n _PayloadsByUpdatingReferences = _asyncToGenerator( /*#__PURE__*/_babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0___default.a.mark(function _callee3(payloads, add, removeIds) {\n var results, _iteratorNormalCompletion, _didIteratorError, _iteratorError, _iterator, _step, payload, references, _iteratorNormalCompletion2, _didIteratorError2, _iteratorError2, _iterator2, _step2, reference, _iteratorNormalCompletion3, _didIteratorError3, _iteratorError3, _iterator3, _step3, id, result;\n\n return _babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0___default.a.wrap(function _callee3$(_context3) {\n while (1) {\n switch (_context3.prev = _context3.next) {\n case 0:\n results = [];\n _iteratorNormalCompletion = true;\n _didIteratorError = false;\n _iteratorError = undefined;\n _context3.prev = 4;\n _iterator = payloads[Symbol.iterator]();\n\n case 6:\n if (_iteratorNormalCompletion = (_step = _iterator.next()).done) {\n _context3.next = 54;\n break;\n }\n\n payload = _step.value;\n references = payload.contentObject.references.slice();\n\n if (!add) {\n _context3.next = 29;\n break;\n }\n\n _iteratorNormalCompletion2 = true;\n _didIteratorError2 = false;\n _iteratorError2 = undefined;\n _context3.prev = 13;\n\n for (_iterator2 = add[Symbol.iterator](); !(_iteratorNormalCompletion2 = (_step2 = _iterator2.next()).done); _iteratorNormalCompletion2 = true) {\n reference = _step2.value;\n references.push(reference);\n }\n\n _context3.next = 21;\n break;\n\n case 17:\n _context3.prev = 17;\n _context3.t0 = _context3["catch"](13);\n _didIteratorError2 = true;\n _iteratorError2 = _context3.t0;\n\n case 21:\n _context3.prev = 21;\n _context3.prev = 22;\n\n if (!_iteratorNormalCompletion2 && _iterator2.return != null) {\n _iterator2.return();\n }\n\n case 24:\n _context3.prev = 24;\n\n if (!_didIteratorError2) {\n _context3.next = 27;\n break;\n }\n\n throw _iteratorError2;\n\n case 27:\n return _context3.finish(24);\n\n case 28:\n return _context3.finish(21);\n\n case 29:\n if (!removeIds) {\n _context3.next = 49;\n break;\n }\n\n _iteratorNormalCompletion3 = true;\n _didIteratorError3 = false;\n _iteratorError3 = undefined;\n _context3.prev = 33;\n\n for (_iterator3 = removeIds[Symbol.iterator](); !(_iteratorNormalCompletion3 = (_step3 = _iterator3.next()).done); _iteratorNormalCompletion3 = true) {\n id = _step3.value;\n lodash_remove__WEBPACK_IMPORTED_MODULE_4___default()(references, {\n uuid: id\n });\n }\n\n _context3.next = 41;\n break;\n\n case 37:\n _context3.prev = 37;\n _context3.t1 = _context3["catch"](33);\n _didIteratorError3 = true;\n _iteratorError3 = _context3.t1;\n\n case 41:\n _context3.prev = 41;\n _context3.prev = 42;\n\n if (!_iteratorNormalCompletion3 && _iterator3.return != null) {\n _iterator3.return();\n }\n\n case 44:\n _context3.prev = 44;\n\n if (!_didIteratorError3) {\n _context3.next = 47;\n break;\n }\n\n throw _iteratorError3;\n\n case 47:\n return _context3.finish(44);\n\n case 48:\n return _context3.finish(41);\n\n case 49:\n result = Object(_Payloads_generator__WEBPACK_IMPORTED_MODULE_5__["CopyPayload"])(payload, {\n dirty: true,\n dirtiedDate: new Date(),\n content: _objectSpread({}, payload.safeContent, {\n references: references\n })\n });\n results.push(result);\n\n case 51:\n _iteratorNormalCompletion = true;\n _context3.next = 6;\n break;\n\n case 54:\n _context3.next = 60;\n break;\n\n case 56:\n _context3.prev = 56;\n _context3.t2 = _context3["catch"](4);\n _didIteratorError = true;\n _iteratorError = _context3.t2;\n\n case 60:\n _context3.prev = 60;\n _context3.prev = 61;\n\n if (!_iteratorNormalCompletion && _iterator.return != null) {\n _iterator.return();\n }\n\n case 63:\n _context3.prev = 63;\n\n if (!_didIteratorError) {\n _context3.next = 66;\n break;\n }\n\n throw _iteratorError;\n\n case 66:\n return _context3.finish(63);\n\n case 67:\n return _context3.finish(60);\n\n case 68:\n return _context3.abrupt("return", results);\n\n case 69:\n case "end":\n return _context3.stop();\n }\n }\n }, _callee3, null, [[4, 56, 60, 68], [13, 17, 21, 29], [22,, 24, 28], [33, 37, 41, 49], [42,, 44, 48], [61,, 63, 67]]);\n }));\n return _PayloadsByUpdatingReferences.apply(this, arguments);\n}\n\nfunction PayloadContentsEqual(payloadA, payloadB) {\n var itemA = Object(_Models_generator__WEBPACK_IMPORTED_MODULE_3__["CreateItemFromPayload"])(payloadA);\n var itemB = Object(_Models_generator__WEBPACK_IMPORTED_MODULE_3__["CreateItemFromPayload"])(payloadB);\n return itemA.isItemContentEqualWith(itemB);\n}//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9saWIvcHJvdG9jb2wvcGF5bG9hZHMvZnVuY3Rpb25zLnRzLmpzIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vU05MaWJyYXJ5Ly4vbGliL3Byb3RvY29sL3BheWxvYWRzL2Z1bmN0aW9ucy50cz81YjNhIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IE11dGF0aW9uVHlwZSB9IGZyb20gJy4vLi4vLi4vbW9kZWxzL2NvcmUvaXRlbSc7XG5pbXBvcnQgeyBDb21wb25lbnRBcmVhLCBDb21wb25lbnRNdXRhdG9yIH0gZnJvbSAnLi8uLi8uLi9tb2RlbHMvYXBwL2NvbXBvbmVudCc7XG5pbXBvcnQgeyBDcmVhdGVJdGVtRnJvbVBheWxvYWQgfSBmcm9tICdATW9kZWxzL2dlbmVyYXRvcic7XG5pbXBvcnQgcmVtb3ZlIGZyb20gJ2xvZGFzaC9yZW1vdmUnO1xuaW1wb3J0IHsgQ29weVBheWxvYWQgfSBmcm9tICdAUGF5bG9hZHMvZ2VuZXJhdG9yJztcbmltcG9ydCB7IGV4dGVuZEFycmF5IH0gZnJvbSAnQExpYi91dGlscyc7XG5pbXBvcnQgeyBVdWlkIH0gZnJvbSAnQExpYi91dWlkJztcbmltcG9ydCB7IENvbnRlbnRUeXBlIH0gZnJvbSAnQExpYi9tb2RlbHMnO1xuZnVuY3Rpb24gTm90ZUR1cGxpY2F0aW9uQWZmZWN0ZWRQYXlsb2FkcyhiYXNlUGF5bG9hZCwgZHVwbGljYXRlUGF5bG9hZCwgYmFzZUNvbGxlY3Rpb24pIHtcbiAgICAvKiogSWYgbm90ZSBoYXMgZWRpdG9yLCBtYWludGFpbiBlZGl0b3IgcmVsYXRpb25zaGlwIGluIGR1cGxpY2F0ZSBub3RlICovXG4gICAgY29uc3QgY29tcG9uZW50cyA9IGJhc2VDb2xsZWN0aW9uLmFsbChDb250ZW50VHlwZS5Db21wb25lbnQpLm1hcCgocGF5bG9hZCkgPT4ge1xuICAgICAgICByZXR1cm4gQ3JlYXRlSXRlbUZyb21QYXlsb2FkKHBheWxvYWQpO1xuICAgIH0pO1xuICAgIGNvbnN0IGVkaXRvciA9IGNvbXBvbmVudHMuZmlsdGVyKChjKSA9PiBjLmFyZWEgPT09IENvbXBvbmVudEFyZWEuRWRpdG9yKS5maW5kKChlKSA9PiB7XG4gICAgICAgIHJldHVybiBlLmlzRXhwbGljaXRseUVuYWJsZWRGb3JJdGVtKGJhc2VQYXlsb2FkLnV1aWQpO1xuICAgIH0pO1xuICAgIGlmICghZWRpdG9yKSB7XG4gICAgICAgIHJldHVybiB1bmRlZmluZWQ7XG4gICAgfVxuICAgIC8qKiBNb2RpZnkgdGhlIGVkaXRvciB0byBpbmNsdWRlIG5ldyBub3RlICovXG4gICAgY29uc3QgbXV0YXRvciA9IG5ldyBDb21wb25lbnRNdXRhdG9yKGVkaXRvciwgTXV0YXRpb25UeXBlLkludGVybmFsKTtcbiAgICBtdXRhdG9yLmFzc29jaWF0ZVdpdGhJdGVtKGR1cGxpY2F0ZVBheWxvYWQudXVpZCk7XG4gICAgY29uc3QgcmVzdWx0ID0gbXV0YXRvci5nZXRSZXN1bHQoKTtcbiAgICByZXR1cm4gW3Jlc3VsdF07XG59XG5jb25zdCBBZmZlY3Rvck1hcHBpbmcgPSB7XG4gICAgW0NvbnRlbnRUeXBlLk5vdGVdOiBOb3RlRHVwbGljYXRpb25BZmZlY3RlZFBheWxvYWRzXG59O1xuLyoqXG4gKiBDb3BpZXMgcGF5bG9hZCBhbmQgYXNzaWducyBpdCBhIG5ldyB1dWlkLlxuICogQHJldHVybnMgQW4gYXJyYXkgb2YgcGF5bG9hZHMgdGhhdCBoYXZlIGNoYW5nZWQgYXMgYSByZXN1bHQgb2YgY29weWluZy5cbiAqL1xuZXhwb3J0IGFzeW5jIGZ1bmN0aW9uIFBheWxvYWRzQnlEdXBsaWNhdGluZyhwYXlsb2FkLCBiYXNlQ29sbGVjdGlvbiwgaXNDb25mbGljdCkge1xuICAgIGNvbnN0IHJlc3VsdHMgPSBbXTtcbiAgICBjb25zdCBvdmVycmlkZSA9IHtcbiAgICAgICAgdXVpZDogYXdhaXQgVXVpZC5HZW5lcmF0ZVV1aWQoKSxcbiAgICAgICAgZGlydHk6IHRydWUsXG4gICAgICAgIGRpcnRpZWREYXRlOiBuZXcgRGF0ZSgpLFxuICAgICAgICBsYXN0U3luY0JlZ2FuOiBudWxsLFxuICAgICAgICBsYXN0U3luY0VuZDogbnVsbCxcbiAgICB9O1xuICAgIGlmIChpc0NvbmZsaWN0KSB7XG4gICAgICAgIG92ZXJyaWRlLmNvbnRlbnQgPSB7XG4gICAgICAgICAgICAuLi5wYXlsb2FkLnNhZmVDb250ZW50LFxuICAgICAgICAgICAgY29uZmxpY3Rfb2Y6IHBheWxvYWQudXVpZCxcbiAgICAgICAgfTtcbiAgICB9XG4gICAgY29uc3QgY29weSA9IENvcHlQYXlsb2FkKHBheWxvYWQsIG92ZXJyaWRlKTtcbiAgICByZXN1bHRzLnB1c2goY29weSk7XG4gICAgLyoqXG4gICAgICogR2V0IHRoZSBwYXlsb2FkcyB0aGF0IG1ha2UgcmVmZXJlbmNlIHRvIHBheWxvYWQgYW5kIGFkZCB0aGUgY29weS5cbiAgICAgKi9cbiAgICBjb25zdCByZWZlcmVuY2luZyA9IGJhc2VDb2xsZWN0aW9uLmVsZW1lbnRzUmVmZXJlbmNpbmdFbGVtZW50KHBheWxvYWQpO1xuICAgIGNvbnN0IHVwZGF0ZWRSZWZlcmVuY2luZyA9IGF3YWl0IFBheWxvYWRzQnlVcGRhdGluZ1JlZmVyZW5jZXMocmVmZXJlbmNpbmcsIFt7XG4gICAgICAgICAgICB1dWlkOiBjb3B5LnV1aWQsXG4gICAgICAgICAgICBjb250ZW50X3R5cGU6IGNvcHkuY29udGVudF90eXBlXG4gICAgICAgIH1dKTtcbiAgICBleHRlbmRBcnJheShyZXN1bHRzLCB1cGRhdGVkUmVmZXJlbmNpbmcpO1xuICAgIGNvbnN0IGFmZmVjdG9yID0gQWZmZWN0b3JNYXBwaW5nW3BheWxvYWQuY29udGVudF90eXBlXTtcbiAgICBpZiAoYWZmZWN0b3IpIHtcbiAgICAgICAgY29uc3QgYWZmZWN0ZWQgPSBhZmZlY3RvcihwYXlsb2FkLCBjb3B5LCBiYXNlQ29sbGVjdGlvbik7XG4gICAgICAgIGlmIChhZmZlY3RlZCkge1xuICAgICAgICAgICAgZXh0ZW5kQXJyYXkocmVzdWx0cywgYWZmZWN0ZWQpO1xuICAgICAgICB9XG4gICAgfVxuICAgIHJldHVybiByZXN1bHRzO1xufVxuLyoqXG4gKiBSZXR1cm4gdGhlIHBheWxvYWRzIHRoYXQgcmVzdWx0IGlmIHlvdSBhbHRlcm5hdGVkIHRoZSB1dWlkIGZvciB0aGUgcGF5bG9hZC5cbiAqIEFsdGVybmF0aW5nIGEgVVVJRCBpbnZvbHZlcyBpbnN0cnVjdGluZyByZWxhdGVkIGl0ZW1zIHRvIGRyb3Agb2xkIHJlZmVyZW5jZXMgb2YgYSB1dWlkXG4gKiBmb3IgdGhlIG5ldyBvbmUuXG4gKiBAcmV0dXJucyBBbiBhcnJheSBvZiBwYXlsb2FkcyB0aGF0IGhhdmUgY2hhbmdlZCBhcyBhIHJlc3VsdCBvZiBjb3B5aW5nLlxuICovXG5leHBvcnQgYXN5bmMgZnVuY3Rpb24gUGF5bG9hZHNCeUFsdGVybmF0aW5nVXVpZChwYXlsb2FkLCBiYXNlQ29sbGVjdGlvbikge1xuICAgIGNvbnN0IHJlc3VsdHMgPSBbXTtcbiAgICAvKipcbiAgICAqIFdlIG5lZWQgdG8gY2xvbmUgcGF5bG9hZCBhbmQgZ2l2ZSBpdCBhIG5ldyB1dWlkLFxuICAgICogdGhlbiBkZWxldGUgaXRlbSB3aXRoIG9sZCB1dWlkIGZyb20gZGIgKGNhbm5vdCBtb2RpZnkgdXVpZHMgaW4gb3VyIEluZGV4ZWREQiBzZXR1cClcbiAgICAqL1xuICAgIGNvbnN0IGNvcHkgPSBDb3B5UGF5bG9hZChwYXlsb2FkLCB7XG4gICAgICAgIHV1aWQ6IGF3YWl0IFV1aWQuR2VuZXJhdGVVdWlkKCksXG4gICAgICAgIGRpcnR5OiB0cnVlLFxuICAgICAgICBkaXJ0aWVkRGF0ZTogbmV3IERhdGUoKSxcbiAgICAgICAgbGFzdFN5bmNCZWdhbjogbnVsbCxcbiAgICAgICAgbGFzdFN5bmNFbmQ6IG51bGwsXG4gICAgfSk7XG4gICAgcmVzdWx0cy5wdXNoKGNvcHkpO1xuICAgIC8qKlxuICAgICAqIEdldCB0aGUgcGF5bG9hZHMgdGhhdCBtYWtlIHJlZmVyZW5jZSB0byBwYXlsb2FkIGFuZCByZW1vdmVcbiAgICAgKiBwYXlsb2FkIGFzIGEgcmVsYXRpb25zaGlwLCBpbnN0ZWFkIGFkZGluZyB0aGUgbmV3IGNvcHkuXG4gICAgICovXG4gICAgY29uc3QgcmVmZXJlbmNpbmcgPSBiYXNlQ29sbGVjdGlvbi5lbGVtZW50c1JlZmVyZW5jaW5nRWxlbWVudChwYXlsb2FkKTtcbiAgICBjb25zdCB1cGRhdGVkUmVmZXJlbmNpbmcgPSBhd2FpdCBQYXlsb2Fkc0J5VXBkYXRpbmdSZWZlcmVuY2VzKHJlZmVyZW5jaW5nLCBbe1xuICAgICAgICAgICAgdXVpZDogY29weS51dWlkLFxuICAgICAgICAgICAgY29udGVudF90eXBlOiBjb3B5LmNvbnRlbnRfdHlwZVxuICAgICAgICB9XSwgW3BheWxvYWQudXVpZF0pO1xuICAgIGV4dGVuZEFycmF5KHJlc3VsdHMsIHVwZGF0ZWRSZWZlcmVuY2luZyk7XG4gICAgY29uc3QgdXBkYXRlZFNlbGYgPSBDb3B5UGF5bG9hZChwYXlsb2FkLCB7XG4gICAgICAgIGRlbGV0ZWQ6IHRydWUsXG4gICAgICAgIC8qKiBEbyBub3Qgc2V0IGFzIGRpcnR5OyB0aGlzIGl0ZW0gaXMgbm9uLXN5bmNhYmxlXG4gICAgICAgICAgYW5kIHNob3VsZCBiZSBpbW1lZGlhdGVseSBkaXNjYXJkZWQgKi9cbiAgICAgICAgZGlydHk6IGZhbHNlLFxuICAgICAgICBjb250ZW50OiB1bmRlZmluZWRcbiAgICB9KTtcbiAgICByZXN1bHRzLnB1c2godXBkYXRlZFNlbGYpO1xuICAgIHJldHVybiByZXN1bHRzO1xufVxuYXN5bmMgZnVuY3Rpb24gUGF5bG9hZHNCeVVwZGF0aW5nUmVmZXJlbmNlcyhwYXlsb2FkcywgYWRkLCByZW1vdmVJZHMpIHtcbiAgICBjb25zdCByZXN1bHRzID0gW107XG4gICAgZm9yIChjb25zdCBwYXlsb2FkIG9mIHBheWxvYWRzKSB7XG4gICAgICAgIGNvbnN0IHJlZmVyZW5jZXMgPSBwYXlsb2FkLmNvbnRlbnRPYmplY3QucmVmZXJlbmNlcy5zbGljZSgpO1xuICAgICAgICBpZiAoYWRkKSB7XG4gICAgICAgICAgICBmb3IgKGNvbnN0IHJlZmVyZW5jZSBvZiBhZGQpIHtcbiAgICAgICAgICAgICAgICByZWZlcmVuY2VzLnB1c2gocmVmZXJlbmNlKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICBpZiAocmVtb3ZlSWRzKSB7XG4gICAgICAgICAgICBmb3IgKGNvbnN0IGlkIG9mIHJlbW92ZUlkcykge1xuICAgICAgICAgICAgICAgIHJlbW92ZShyZWZlcmVuY2VzLCB7IHV1aWQ6IGlkIH0pO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIGNvbnN0IHJlc3VsdCA9IENvcHlQYXlsb2FkKHBheWxvYWQsIHtcbiAgICAgICAgICAgIGRpcnR5OiB0cnVlLFxuICAgICAgICAgICAgZGlydGllZERhdGU6IG5ldyBEYXRlKCksXG4gICAgICAgICAgICBjb250ZW50OiB7XG4gICAgICAgICAgICAgICAgLi4ucGF5bG9hZC5zYWZlQ29udGVudCxcbiAgICAgICAgICAgICAgICByZWZlcmVuY2VzOiByZWZlcmVuY2VzXG4gICAgICAgICAgICB9XG4gICAgICAgIH0pO1xuICAgICAgICByZXN1bHRzLnB1c2gocmVzdWx0KTtcbiAgICB9XG4gICAgcmV0dXJuIHJlc3VsdHM7XG59XG4vKipcbiAqIENvbXBhcmVzIHRoZSAuY29udGVudCBmaWVsZHMgZm9yIGVxdWFsaXR5LCBjcmVhdGluZyBuZXcgU05JdGVtIG9iamVjdHNcbiAqIHRvIHByb3Blcmx5IGhhbmRsZSAuY29udGVudCBpbnRyaWNhY2llcy5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIFBheWxvYWRDb250ZW50c0VxdWFsKHBheWxvYWRBLCBwYXlsb2FkQikge1xuICAgIGNvbnN0IGl0ZW1BID0gQ3JlYXRlSXRlbUZyb21QYXlsb2FkKHBheWxvYWRBKTtcbiAgICBjb25zdCBpdGVtQiA9IENyZWF0ZUl0ZW1Gcm9tUGF5bG9hZChwYXlsb2FkQik7XG4gICAgcmV0dXJuIGl0ZW1BLmlzSXRlbUNvbnRlbnRFcXVhbFdpdGgoaXRlbUIpO1xufVxuIl0sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBREE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFHQTs7Ozs7O0FBSUE7QUFBQTtBQUFBO0FBbUNBOzs7Ozs7OztBQW5DQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFDQTtBQURBO0FBQUE7QUFDQTtBQURBO0FBQUE7QUFBQTtBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQVBBO0FBQ0E7QUFRQTtBQUNBO0FBRUE7QUFGQTtBQUlBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7Ozs7QUFHQTtBQXBCQTtBQUFBO0FBc0JBO0FBQ0E7QUFGQTtBQUNBO0FBdEJBO0FBcUJBO0FBSUE7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQWpDQTtBQUNBO0FBREE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7Ozs7QUF5Q0E7QUFBQTtBQUFBO0FBQ0E7O0FBREE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQ0E7QUFDQTs7Ozs7QUFGQTtBQUFBO0FBQUE7QUFBQTtBQUNBO0FBREE7QUFBQTtBQUFBO0FBQUE7QUFPQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBWEE7QUFNQTtBQU9BO0FBQ0E7Ozs7O0FBSUE7QUFsQkE7QUFBQTtBQW9CQTtBQUNBO0FBRkE7QUFDQTtBQXBCQTtBQW1CQTtBQUlBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7O0FBRUE7QUFDQTtBQUxBO0FBT0E7QUEvQkE7QUFDQTtBQURBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBOzs7O0FBa0NBOzs7QUEwQkE7Ozs7Ozs7QUExQkE7QUFBQTtBQUNBO0FBREE7QUFBQTtBQUFBO0FBQUE7QUFDQTtBQURBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFDQTtBQURBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUpBO0FBQUE7QUFBQTtBQUFBO0FBQ0E7QUFEQTtBQUFBO0FBQUE7QUFBQTtBQUNBO0FBSUE7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQVJBO0FBQUE7QUFDQTtBQURBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFDQTtBQURBO0FBQUE7QUFBQTtBQUNBO0FBREE7QUFBQTtBQUFBO0FBQ0E7QUFEQTtBQUFBO0FBQ0E7QUFEQTtBQUFBO0FBQUE7QUFBQTtBQUNBO0FBREE7QUFDQTtBQURBO0FBQUE7QUFDQTtBQURBO0FBQUE7QUFDQTtBQURBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFDQTtBQURBO0FBQUE7QUFBQTtBQUFBO0FBQ0E7QUFTQTtBQUFBO0FBQ0E7QUFBQTtBQUFBO0FBQ0E7QUFDQTtBQWJBO0FBQUE7QUFDQTtBQURBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFDQTtBQURBO0FBQUE7QUFBQTtBQUNBO0FBREE7QUFBQTtBQUFBO0FBQ0E7QUFEQTtBQUFBO0FBQ0E7QUFEQTtBQUFBO0FBQUE7QUFBQTtBQUNBO0FBREE7QUFDQTtBQURBO0FBQUE7QUFDQTtBQURBO0FBQUE7QUFDQTtBQURBO0FBY0E7QUFDQTtBQUNBO0FBQ0E7QUFFQTtBQUZBO0FBSEE7QUFRQTtBQUNBO0FBdkJBO0FBQUE7QUFBQTtBQUFBO0FBQ0E7QUFEQTtBQUFBO0FBQUE7QUFDQTtBQURBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFDQTtBQURBO0FBQUE7QUFBQTtBQUNBO0FBREE7QUFBQTtBQUFBO0FBQ0E7QUFEQTtBQUFBO0FBQ0E7QUFEQTtBQUFBO0FBQUE7QUFBQTtBQUNBO0FBREE7QUFDQTtBQURBO0FBQUE7QUFDQTtBQURBO0FBQUE7QUFDQTtBQURBO0FBQUE7QUFDQTtBQURBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBOzs7O0FBOEJBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EiLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./lib/protocol/payloads/functions.ts\n')},"./lib/protocol/payloads/generator.ts":
|
||
/*!********************************************!*\
|
||
!*** ./lib/protocol/payloads/generator.ts ***!
|
||
\********************************************/
|
||
/*! exports provided: CreateMaxPayloadFromAnyObject, PayloadByMerging, CreateIntentPayloadFromObject, CreateSourcedPayloadFromObject, CopyPayload, CreateEncryptionParameters, CopyEncryptionParameters, payloadFieldsForSource */function(module,__webpack_exports__,__webpack_require__){"use strict";eval('__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "CreateMaxPayloadFromAnyObject", function() { return CreateMaxPayloadFromAnyObject; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "PayloadByMerging", function() { return PayloadByMerging; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "CreateIntentPayloadFromObject", function() { return CreateIntentPayloadFromObject; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "CreateSourcedPayloadFromObject", function() { return CreateSourcedPayloadFromObject; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "CopyPayload", function() { return CopyPayload; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "CreateEncryptionParameters", function() { return CreateEncryptionParameters; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "CopyEncryptionParameters", function() { return CopyEncryptionParameters; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "payloadFieldsForSource", function() { return payloadFieldsForSource; });\n/* harmony import */ var _Payloads_pure_payload__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @Payloads/pure_payload */ "./lib/protocol/payloads/pure_payload.ts");\n/* harmony import */ var _Payloads_sources__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! @Payloads/sources */ "./lib/protocol/payloads/sources.ts");\n/* harmony import */ var _Protocol_intents__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! @Protocol/intents */ "./lib/protocol/intents.ts");\n/* harmony import */ var _Lib_utils__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! @Lib/utils */ "./lib/utils.ts");\n/* harmony import */ var _Payloads_fields__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! @Payloads/fields */ "./lib/protocol/payloads/fields.ts");\n\n\n\n\n\n/** The MaxItemPayload represents a payload with all possible fields */\n\nvar MaxPayloadFields = [_Payloads_fields__WEBPACK_IMPORTED_MODULE_4__["PayloadField"].Uuid, _Payloads_fields__WEBPACK_IMPORTED_MODULE_4__["PayloadField"].ContentType, _Payloads_fields__WEBPACK_IMPORTED_MODULE_4__["PayloadField"].ItemsKeyId, _Payloads_fields__WEBPACK_IMPORTED_MODULE_4__["PayloadField"].EncItemKey, _Payloads_fields__WEBPACK_IMPORTED_MODULE_4__["PayloadField"].Content, _Payloads_fields__WEBPACK_IMPORTED_MODULE_4__["PayloadField"].CreatedAt, _Payloads_fields__WEBPACK_IMPORTED_MODULE_4__["PayloadField"].UpdatedAt, _Payloads_fields__WEBPACK_IMPORTED_MODULE_4__["PayloadField"].Deleted, _Payloads_fields__WEBPACK_IMPORTED_MODULE_4__["PayloadField"].Legacy003AuthHash, _Payloads_fields__WEBPACK_IMPORTED_MODULE_4__["PayloadField"].Legacy003AuthParams, _Payloads_fields__WEBPACK_IMPORTED_MODULE_4__["PayloadField"].Dirty, _Payloads_fields__WEBPACK_IMPORTED_MODULE_4__["PayloadField"].DirtiedDate, _Payloads_fields__WEBPACK_IMPORTED_MODULE_4__["PayloadField"].ErrorDecrypting, _Payloads_fields__WEBPACK_IMPORTED_MODULE_4__["PayloadField"].ErrorDecryptingChanged, _Payloads_fields__WEBPACK_IMPORTED_MODULE_4__["PayloadField"].WaitingForKey, _Payloads_fields__WEBPACK_IMPORTED_MODULE_4__["PayloadField"].LastSyncBegan, _Payloads_fields__WEBPACK_IMPORTED_MODULE_4__["PayloadField"].LastSyncEnd];\nvar EncryptionParametersFields = [_Payloads_fields__WEBPACK_IMPORTED_MODULE_4__["PayloadField"].Uuid, _Payloads_fields__WEBPACK_IMPORTED_MODULE_4__["PayloadField"].ItemsKeyId, _Payloads_fields__WEBPACK_IMPORTED_MODULE_4__["PayloadField"].EncItemKey, _Payloads_fields__WEBPACK_IMPORTED_MODULE_4__["PayloadField"].Content, _Payloads_fields__WEBPACK_IMPORTED_MODULE_4__["PayloadField"].Legacy003AuthHash, _Payloads_fields__WEBPACK_IMPORTED_MODULE_4__["PayloadField"].ErrorDecrypting, _Payloads_fields__WEBPACK_IMPORTED_MODULE_4__["PayloadField"].ErrorDecryptingChanged, _Payloads_fields__WEBPACK_IMPORTED_MODULE_4__["PayloadField"].WaitingForKey];\nvar FilePayloadFields = [_Payloads_fields__WEBPACK_IMPORTED_MODULE_4__["PayloadField"].Uuid, _Payloads_fields__WEBPACK_IMPORTED_MODULE_4__["PayloadField"].ContentType, _Payloads_fields__WEBPACK_IMPORTED_MODULE_4__["PayloadField"].ItemsKeyId, _Payloads_fields__WEBPACK_IMPORTED_MODULE_4__["PayloadField"].EncItemKey, _Payloads_fields__WEBPACK_IMPORTED_MODULE_4__["PayloadField"].Content, _Payloads_fields__WEBPACK_IMPORTED_MODULE_4__["PayloadField"].CreatedAt, _Payloads_fields__WEBPACK_IMPORTED_MODULE_4__["PayloadField"].UpdatedAt, _Payloads_fields__WEBPACK_IMPORTED_MODULE_4__["PayloadField"].Legacy003AuthHash];\nvar StoragePayloadFields = [_Payloads_fields__WEBPACK_IMPORTED_MODULE_4__["PayloadField"].Uuid, _Payloads_fields__WEBPACK_IMPORTED_MODULE_4__["PayloadField"].ContentType, _Payloads_fields__WEBPACK_IMPORTED_MODULE_4__["PayloadField"].ItemsKeyId, _Payloads_fields__WEBPACK_IMPORTED_MODULE_4__["PayloadField"].EncItemKey, _Payloads_fields__WEBPACK_IMPORTED_MODULE_4__["PayloadField"].Content, _Payloads_fields__WEBPACK_IMPORTED_MODULE_4__["PayloadField"].CreatedAt, _Payloads_fields__WEBPACK_IMPORTED_MODULE_4__["PayloadField"].UpdatedAt, _Payloads_fields__WEBPACK_IMPORTED_MODULE_4__["PayloadField"].Deleted, _Payloads_fields__WEBPACK_IMPORTED_MODULE_4__["PayloadField"].Legacy003AuthHash, _Payloads_fields__WEBPACK_IMPORTED_MODULE_4__["PayloadField"].Legacy003AuthParams, _Payloads_fields__WEBPACK_IMPORTED_MODULE_4__["PayloadField"].Dirty, _Payloads_fields__WEBPACK_IMPORTED_MODULE_4__["PayloadField"].DirtiedDate, _Payloads_fields__WEBPACK_IMPORTED_MODULE_4__["PayloadField"].ErrorDecrypting, _Payloads_fields__WEBPACK_IMPORTED_MODULE_4__["PayloadField"].WaitingForKey];\nvar ServerPayloadFields = [_Payloads_fields__WEBPACK_IMPORTED_MODULE_4__["PayloadField"].Uuid, _Payloads_fields__WEBPACK_IMPORTED_MODULE_4__["PayloadField"].ContentType, _Payloads_fields__WEBPACK_IMPORTED_MODULE_4__["PayloadField"].ItemsKeyId, _Payloads_fields__WEBPACK_IMPORTED_MODULE_4__["PayloadField"].EncItemKey, _Payloads_fields__WEBPACK_IMPORTED_MODULE_4__["PayloadField"].Content, _Payloads_fields__WEBPACK_IMPORTED_MODULE_4__["PayloadField"].CreatedAt, _Payloads_fields__WEBPACK_IMPORTED_MODULE_4__["PayloadField"].UpdatedAt, _Payloads_fields__WEBPACK_IMPORTED_MODULE_4__["PayloadField"].Deleted, _Payloads_fields__WEBPACK_IMPORTED_MODULE_4__["PayloadField"].Legacy003AuthHash];\nvar SessionHistoryPayloadFields = [_Payloads_fields__WEBPACK_IMPORTED_MODULE_4__["PayloadField"].Uuid, _Payloads_fields__WEBPACK_IMPORTED_MODULE_4__["PayloadField"].ContentType, _Payloads_fields__WEBPACK_IMPORTED_MODULE_4__["PayloadField"].Content, _Payloads_fields__WEBPACK_IMPORTED_MODULE_4__["PayloadField"].UpdatedAt];\n/** Represents a payload with permissible fields for when a\n * payload is retrieved from a component for saving */\n\nvar ComponentRetrievedPayloadFields = [_Payloads_fields__WEBPACK_IMPORTED_MODULE_4__["PayloadField"].Uuid, _Payloads_fields__WEBPACK_IMPORTED_MODULE_4__["PayloadField"].Content, _Payloads_fields__WEBPACK_IMPORTED_MODULE_4__["PayloadField"].CreatedAt];\n/** Represents a payload with permissible fields for when a\n * component wants to create a new item */\n\nvar ComponentCreatedPayloadFields = [_Payloads_fields__WEBPACK_IMPORTED_MODULE_4__["PayloadField"].Uuid, _Payloads_fields__WEBPACK_IMPORTED_MODULE_4__["PayloadField"].Content, _Payloads_fields__WEBPACK_IMPORTED_MODULE_4__["PayloadField"].ContentType, _Payloads_fields__WEBPACK_IMPORTED_MODULE_4__["PayloadField"].CreatedAt];\n/**\n * The saved server item payload represents the payload we want to map\n * when mapping saved_items from the server. We only want to map the\n * updated_at value the server returns for the item, and basically\n * nothing else.\n */\n\nvar ServerSavedPayloadFields = [_Payloads_fields__WEBPACK_IMPORTED_MODULE_4__["PayloadField"].Uuid, _Payloads_fields__WEBPACK_IMPORTED_MODULE_4__["PayloadField"].ContentType, _Payloads_fields__WEBPACK_IMPORTED_MODULE_4__["PayloadField"].UpdatedAt, _Payloads_fields__WEBPACK_IMPORTED_MODULE_4__["PayloadField"].Deleted, _Payloads_fields__WEBPACK_IMPORTED_MODULE_4__["PayloadField"].Dirty, _Payloads_fields__WEBPACK_IMPORTED_MODULE_4__["PayloadField"].LastSyncEnd];\nfunction CreateMaxPayloadFromAnyObject(object, override) {\n return CreatePayload(object, MaxPayloadFields.slice(), undefined, override);\n}\n/**\n * Makes a new payload by starting with input payload, then overriding values of all\n * keys of mergeWith.fields. If wanting to merge only specific fields, pass an array of\n * fields. If override value is passed, values in here take final precedence, including\n * above both payload and mergeWith values.\n */\n\nfunction PayloadByMerging(payload, mergeWith, fields, override) {\n var resultOverride = {};\n var useFields = fields || mergeWith.fields;\n var _iteratorNormalCompletion = true;\n var _didIteratorError = false;\n var _iteratorError = undefined;\n\n try {\n for (var _iterator = useFields[Symbol.iterator](), _step; !(_iteratorNormalCompletion = (_step = _iterator.next()).done); _iteratorNormalCompletion = true) {\n var field = _step.value;\n resultOverride[field] = mergeWith[field];\n }\n } catch (err) {\n _didIteratorError = true;\n _iteratorError = err;\n } finally {\n try {\n if (!_iteratorNormalCompletion && _iterator.return != null) {\n _iterator.return();\n }\n } finally {\n if (_didIteratorError) {\n throw _iteratorError;\n }\n }\n }\n\n if (override) {\n var keys = Object.keys(override);\n\n for (var _i = 0, _keys = keys; _i < _keys.length; _i++) {\n var key = _keys[_i];\n resultOverride[key] = override[key];\n }\n }\n\n return CopyPayload(payload, resultOverride);\n}\nfunction CreateIntentPayloadFromObject(object, intent, override) {\n var payloadFields = payloadFieldsForIntent(intent);\n return CreatePayload(object, payloadFields, _Payloads_sources__WEBPACK_IMPORTED_MODULE_1__["PayloadSource"].Constructor, override);\n}\nfunction CreateSourcedPayloadFromObject(object, source, override) {\n var payloadFields = payloadFieldsForSource(source);\n return CreatePayload(object, payloadFields, source, override);\n}\nfunction CopyPayload(payload, override) {\n return CreatePayload(payload, payload.fields, payload.source, override);\n}\n\nfunction CreatePayload(object, fields, source, override) {\n var rawPayload = Object(_Lib_utils__WEBPACK_IMPORTED_MODULE_3__["pickByCopy"])(object, fields);\n var overrideFields = override instanceof _Payloads_pure_payload__WEBPACK_IMPORTED_MODULE_0__["PurePayload"] ? override.fields.slice() : Object.keys(override || []);\n var _iteratorNormalCompletion2 = true;\n var _didIteratorError2 = false;\n var _iteratorError2 = undefined;\n\n try {\n for (var _iterator2 = overrideFields[Symbol.iterator](), _step2; !(_iteratorNormalCompletion2 = (_step2 = _iterator2.next()).done); _iteratorNormalCompletion2 = true) {\n var field = _step2.value;\n var value = override[field];\n rawPayload[field] = value ? Object(_Lib_utils__WEBPACK_IMPORTED_MODULE_3__["Copy"])(value) : value;\n }\n } catch (err) {\n _didIteratorError2 = true;\n _iteratorError2 = err;\n } finally {\n try {\n if (!_iteratorNormalCompletion2 && _iterator2.return != null) {\n _iterator2.return();\n }\n } finally {\n if (_didIteratorError2) {\n throw _iteratorError2;\n }\n }\n }\n\n var newFields = Object(_Lib_utils__WEBPACK_IMPORTED_MODULE_3__["uniqueArray"])(fields.concat(overrideFields));\n return new _Payloads_pure_payload__WEBPACK_IMPORTED_MODULE_0__["PurePayload"](rawPayload, newFields, source || _Payloads_sources__WEBPACK_IMPORTED_MODULE_1__["PayloadSource"].Constructor);\n}\n\nfunction CreateEncryptionParameters(raw) {\n var fields = Object.keys(raw);\n return CreatePayload(raw, fields);\n}\nfunction CopyEncryptionParameters(raw, override) {\n return CreatePayload(raw, EncryptionParametersFields.slice(), undefined, override);\n}\n\nfunction payloadFieldsForIntent(intent) {\n if (intent === _Protocol_intents__WEBPACK_IMPORTED_MODULE_2__["EncryptionIntent"].FileEncrypted || intent === _Protocol_intents__WEBPACK_IMPORTED_MODULE_2__["EncryptionIntent"].FileDecrypted || intent === _Protocol_intents__WEBPACK_IMPORTED_MODULE_2__["EncryptionIntent"].FilePreferEncrypted) {\n return FilePayloadFields.slice();\n }\n\n if (intent === _Protocol_intents__WEBPACK_IMPORTED_MODULE_2__["EncryptionIntent"].LocalStoragePreferEncrypted || intent === _Protocol_intents__WEBPACK_IMPORTED_MODULE_2__["EncryptionIntent"].LocalStorageDecrypted || intent === _Protocol_intents__WEBPACK_IMPORTED_MODULE_2__["EncryptionIntent"].LocalStorageEncrypted) {\n return StoragePayloadFields.slice();\n }\n\n if (intent === _Protocol_intents__WEBPACK_IMPORTED_MODULE_2__["EncryptionIntent"].Sync || intent === _Protocol_intents__WEBPACK_IMPORTED_MODULE_2__["EncryptionIntent"].SyncDecrypted) {\n return ServerPayloadFields.slice();\n } else {\n throw "No payload fields found for intent ".concat(intent);\n }\n}\n\nfunction payloadFieldsForSource(source) {\n if (source === _Payloads_sources__WEBPACK_IMPORTED_MODULE_1__["PayloadSource"].FileImport) {\n return FilePayloadFields.slice();\n }\n\n if (source === _Payloads_sources__WEBPACK_IMPORTED_MODULE_1__["PayloadSource"].SessionHistory) {\n return SessionHistoryPayloadFields.slice();\n }\n\n if (source === _Payloads_sources__WEBPACK_IMPORTED_MODULE_1__["PayloadSource"].ComponentRetrieved) {\n return ComponentRetrievedPayloadFields.slice();\n }\n\n if (source === _Payloads_sources__WEBPACK_IMPORTED_MODULE_1__["PayloadSource"].ComponentCreated) {\n return ComponentCreatedPayloadFields.slice();\n }\n\n if (source === _Payloads_sources__WEBPACK_IMPORTED_MODULE_1__["PayloadSource"].LocalRetrieved || source === _Payloads_sources__WEBPACK_IMPORTED_MODULE_1__["PayloadSource"].LocalChanged) {\n return StoragePayloadFields.slice();\n }\n\n if (source === _Payloads_sources__WEBPACK_IMPORTED_MODULE_1__["PayloadSource"].RemoteRetrieved || source === _Payloads_sources__WEBPACK_IMPORTED_MODULE_1__["PayloadSource"].ConflictData || source === _Payloads_sources__WEBPACK_IMPORTED_MODULE_1__["PayloadSource"].ConflictUuid) {\n return ServerPayloadFields.slice();\n }\n\n if (source === _Payloads_sources__WEBPACK_IMPORTED_MODULE_1__["PayloadSource"].LocalSaved || source === _Payloads_sources__WEBPACK_IMPORTED_MODULE_1__["PayloadSource"].RemoteSaved) {\n return ServerSavedPayloadFields.slice();\n } else {\n throw "No payload fields found for source ".concat(source);\n }\n}//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9saWIvcHJvdG9jb2wvcGF5bG9hZHMvZ2VuZXJhdG9yLnRzLmpzIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vU05MaWJyYXJ5Ly4vbGliL3Byb3RvY29sL3BheWxvYWRzL2dlbmVyYXRvci50cz85NzkxIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IFB1cmVQYXlsb2FkIH0gZnJvbSAnQFBheWxvYWRzL3B1cmVfcGF5bG9hZCc7XG5pbXBvcnQgeyBQYXlsb2FkU291cmNlIH0gZnJvbSAnQFBheWxvYWRzL3NvdXJjZXMnO1xuaW1wb3J0IHsgRW5jcnlwdGlvbkludGVudCB9IGZyb20gJ0BQcm90b2NvbC9pbnRlbnRzJztcbmltcG9ydCB7IENvcHksIHBpY2tCeUNvcHksIHVuaXF1ZUFycmF5LCB9IGZyb20gJ0BMaWIvdXRpbHMnO1xuaW1wb3J0IHsgUGF5bG9hZEZpZWxkIH0gZnJvbSAnQFBheWxvYWRzL2ZpZWxkcyc7XG4vKiogVGhlIE1heEl0ZW1QYXlsb2FkIHJlcHJlc2VudHMgYSBwYXlsb2FkIHdpdGggYWxsIHBvc3NpYmxlIGZpZWxkcyAqL1xuY29uc3QgTWF4UGF5bG9hZEZpZWxkcyA9IFtcbiAgICBQYXlsb2FkRmllbGQuVXVpZCxcbiAgICBQYXlsb2FkRmllbGQuQ29udGVudFR5cGUsXG4gICAgUGF5bG9hZEZpZWxkLkl0ZW1zS2V5SWQsXG4gICAgUGF5bG9hZEZpZWxkLkVuY0l0ZW1LZXksXG4gICAgUGF5bG9hZEZpZWxkLkNvbnRlbnQsXG4gICAgUGF5bG9hZEZpZWxkLkNyZWF0ZWRBdCxcbiAgICBQYXlsb2FkRmllbGQuVXBkYXRlZEF0LFxuICAgIFBheWxvYWRGaWVsZC5EZWxldGVkLFxuICAgIFBheWxvYWRGaWVsZC5MZWdhY3kwMDNBdXRoSGFzaCxcbiAgICBQYXlsb2FkRmllbGQuTGVnYWN5MDAzQXV0aFBhcmFtcyxcbiAgICBQYXlsb2FkRmllbGQuRGlydHksXG4gICAgUGF5bG9hZEZpZWxkLkRpcnRpZWREYXRlLFxuICAgIFBheWxvYWRGaWVsZC5FcnJvckRlY3J5cHRpbmcsXG4gICAgUGF5bG9hZEZpZWxkLkVycm9yRGVjcnlwdGluZ0NoYW5nZWQsXG4gICAgUGF5bG9hZEZpZWxkLldhaXRpbmdGb3JLZXksXG4gICAgUGF5bG9hZEZpZWxkLkxhc3RTeW5jQmVnYW4sXG4gICAgUGF5bG9hZEZpZWxkLkxhc3RTeW5jRW5kLFxuXTtcbmNvbnN0IEVuY3J5cHRpb25QYXJhbWV0ZXJzRmllbGRzID0gW1xuICAgIFBheWxvYWRGaWVsZC5VdWlkLFxuICAgIFBheWxvYWRGaWVsZC5JdGVtc0tleUlkLFxuICAgIFBheWxvYWRGaWVsZC5FbmNJdGVtS2V5LFxuICAgIFBheWxvYWRGaWVsZC5Db250ZW50LFxuICAgIFBheWxvYWRGaWVsZC5MZWdhY3kwMDNBdXRoSGFzaCxcbiAgICBQYXlsb2FkRmllbGQuRXJyb3JEZWNyeXB0aW5nLFxuICAgIFBheWxvYWRGaWVsZC5FcnJvckRlY3J5cHRpbmdDaGFuZ2VkLFxuICAgIFBheWxvYWRGaWVsZC5XYWl0aW5nRm9yS2V5XG5dO1xuY29uc3QgRmlsZVBheWxvYWRGaWVsZHMgPSBbXG4gICAgUGF5bG9hZEZpZWxkLlV1aWQsXG4gICAgUGF5bG9hZEZpZWxkLkNvbnRlbnRUeXBlLFxuICAgIFBheWxvYWRGaWVsZC5JdGVtc0tleUlkLFxuICAgIFBheWxvYWRGaWVsZC5FbmNJdGVtS2V5LFxuICAgIFBheWxvYWRGaWVsZC5Db250ZW50LFxuICAgIFBheWxvYWRGaWVsZC5DcmVhdGVkQXQsXG4gICAgUGF5bG9hZEZpZWxkLlVwZGF0ZWRBdCxcbiAgICBQYXlsb2FkRmllbGQuTGVnYWN5MDAzQXV0aEhhc2hcbl07XG5jb25zdCBTdG9yYWdlUGF5bG9hZEZpZWxkcyA9IFtcbiAgICBQYXlsb2FkRmllbGQuVXVpZCxcbiAgICBQYXlsb2FkRmllbGQuQ29udGVudFR5cGUsXG4gICAgUGF5bG9hZEZpZWxkLkl0ZW1zS2V5SWQsXG4gICAgUGF5bG9hZEZpZWxkLkVuY0l0ZW1LZXksXG4gICAgUGF5bG9hZEZpZWxkLkNvbnRlbnQsXG4gICAgUGF5bG9hZEZpZWxkLkNyZWF0ZWRBdCxcbiAgICBQYXlsb2FkRmllbGQuVXBkYXRlZEF0LFxuICAgIFBheWxvYWRGaWVsZC5EZWxldGVkLFxuICAgIFBheWxvYWRGaWVsZC5MZWdhY3kwMDNBdXRoSGFzaCxcbiAgICBQYXlsb2FkRmllbGQuTGVnYWN5MDAzQXV0aFBhcmFtcyxcbiAgICBQYXlsb2FkRmllbGQuRGlydHksXG4gICAgUGF5bG9hZEZpZWxkLkRpcnRpZWREYXRlLFxuICAgIFBheWxvYWRGaWVsZC5FcnJvckRlY3J5cHRpbmcsXG4gICAgUGF5bG9hZEZpZWxkLldhaXRpbmdGb3JLZXlcbl07XG5jb25zdCBTZXJ2ZXJQYXlsb2FkRmllbGRzID0gW1xuICAgIFBheWxvYWRGaWVsZC5VdWlkLFxuICAgIFBheWxvYWRGaWVsZC5Db250ZW50VHlwZSxcbiAgICBQYXlsb2FkRmllbGQuSXRlbXNLZXlJZCxcbiAgICBQYXlsb2FkRmllbGQuRW5jSXRlbUtleSxcbiAgICBQYXlsb2FkRmllbGQuQ29udGVudCxcbiAgICBQYXlsb2FkRmllbGQuQ3JlYXRlZEF0LFxuICAgIFBheWxvYWRGaWVsZC5VcGRhdGVkQXQsXG4gICAgUGF5bG9hZEZpZWxkLkRlbGV0ZWQsXG4gICAgUGF5bG9hZEZpZWxkLkxlZ2FjeTAwM0F1dGhIYXNoXG5dO1xuY29uc3QgU2Vzc2lvbkhpc3RvcnlQYXlsb2FkRmllbGRzID0gW1xuICAgIFBheWxvYWRGaWVsZC5VdWlkLFxuICAgIFBheWxvYWRGaWVsZC5Db250ZW50VHlwZSxcbiAgICBQYXlsb2FkRmllbGQuQ29udGVudCxcbiAgICBQYXlsb2FkRmllbGQuVXBkYXRlZEF0LFxuXTtcbi8qKiBSZXByZXNlbnRzIGEgcGF5bG9hZCB3aXRoIHBlcm1pc3NpYmxlIGZpZWxkcyBmb3Igd2hlbiBhXG4gKiBwYXlsb2FkIGlzIHJldHJpZXZlZCBmcm9tIGEgY29tcG9uZW50IGZvciBzYXZpbmcgKi9cbmNvbnN0IENvbXBvbmVudFJldHJpZXZlZFBheWxvYWRGaWVsZHMgPSBbXG4gICAgUGF5bG9hZEZpZWxkLlV1aWQsXG4gICAgUGF5bG9hZEZpZWxkLkNvbnRlbnQsXG4gICAgUGF5bG9hZEZpZWxkLkNyZWF0ZWRBdFxuXTtcbi8qKiBSZXByZXNlbnRzIGEgcGF5bG9hZCB3aXRoIHBlcm1pc3NpYmxlIGZpZWxkcyBmb3Igd2hlbiBhXG4gKiBjb21wb25lbnQgd2FudHMgdG8gY3JlYXRlIGEgbmV3IGl0ZW0gKi9cbmNvbnN0IENvbXBvbmVudENyZWF0ZWRQYXlsb2FkRmllbGRzID0gW1xuICAgIFBheWxvYWRGaWVsZC5VdWlkLFxuICAgIFBheWxvYWRGaWVsZC5Db250ZW50LFxuICAgIFBheWxvYWRGaWVsZC5Db250ZW50VHlwZSxcbiAgICBQYXlsb2FkRmllbGQuQ3JlYXRlZEF0XG5dO1xuLyoqXG4gKiBUaGUgc2F2ZWQgc2VydmVyIGl0ZW0gcGF5bG9hZCByZXByZXNlbnRzIHRoZSBwYXlsb2FkIHdlIHdhbnQgdG8gbWFwXG4gKiB3aGVuIG1hcHBpbmcgc2F2ZWRfaXRlbXMgZnJvbSB0aGUgc2VydmVyLiBXZSBvbmx5IHdhbnQgdG8gbWFwIHRoZVxuICogdXBkYXRlZF9hdCB2YWx1ZSB0aGUgc2VydmVyIHJldHVybnMgZm9yIHRoZSBpdGVtLCBhbmQgYmFzaWNhbGx5XG4gKiBub3RoaW5nIGVsc2UuXG4gKi9cbmNvbnN0IFNlcnZlclNhdmVkUGF5bG9hZEZpZWxkcyA9IFtcbiAgICBQYXlsb2FkRmllbGQuVXVpZCxcbiAgICBQYXlsb2FkRmllbGQuQ29udGVudFR5cGUsXG4gICAgUGF5bG9hZEZpZWxkLlVwZGF0ZWRBdCxcbiAgICBQYXlsb2FkRmllbGQuRGVsZXRlZCxcbiAgICBQYXlsb2FkRmllbGQuRGlydHksXG4gICAgUGF5bG9hZEZpZWxkLkxhc3RTeW5jRW5kXG5dO1xuZXhwb3J0IGZ1bmN0aW9uIENyZWF0ZU1heFBheWxvYWRGcm9tQW55T2JqZWN0KG9iamVjdCwgb3ZlcnJpZGUpIHtcbiAgICByZXR1cm4gQ3JlYXRlUGF5bG9hZChvYmplY3QsIE1heFBheWxvYWRGaWVsZHMuc2xpY2UoKSwgdW5kZWZpbmVkLCBvdmVycmlkZSk7XG59XG4vKipcbiAqIE1ha2VzIGEgbmV3IHBheWxvYWQgYnkgc3RhcnRpbmcgd2l0aCBpbnB1dCBwYXlsb2FkLCB0aGVuIG92ZXJyaWRpbmcgdmFsdWVzIG9mIGFsbFxuICoga2V5cyBvZiBtZXJnZVdpdGguZmllbGRzLiBJZiB3YW50aW5nIHRvIG1lcmdlIG9ubHkgc3BlY2lmaWMgZmllbGRzLCBwYXNzIGFuIGFycmF5IG9mXG4gKiBmaWVsZHMuIElmIG92ZXJyaWRlIHZhbHVlIGlzIHBhc3NlZCwgdmFsdWVzIGluIGhlcmUgdGFrZSBmaW5hbCBwcmVjZWRlbmNlLCBpbmNsdWRpbmdcbiAqIGFib3ZlIGJvdGggcGF5bG9hZCBhbmQgbWVyZ2VXaXRoIHZhbHVlcy5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIFBheWxvYWRCeU1lcmdpbmcocGF5bG9hZCwgbWVyZ2VXaXRoLCBmaWVsZHMsIG92ZXJyaWRlKSB7XG4gICAgY29uc3QgcmVzdWx0T3ZlcnJpZGUgPSB7fTtcbiAgICBjb25zdCB1c2VGaWVsZHMgPSBmaWVsZHMgfHwgbWVyZ2VXaXRoLmZpZWxkcztcbiAgICBmb3IgKGNvbnN0IGZpZWxkIG9mIHVzZUZpZWxkcykge1xuICAgICAgICByZXN1bHRPdmVycmlkZVtmaWVsZF0gPSBtZXJnZVdpdGhbZmllbGRdO1xuICAgIH1cbiAgICBpZiAob3ZlcnJpZGUpIHtcbiAgICAgICAgY29uc3Qga2V5cyA9IE9iamVjdC5rZXlzKG92ZXJyaWRlKTtcbiAgICAgICAgZm9yIChjb25zdCBrZXkgb2Yga2V5cykge1xuICAgICAgICAgICAgcmVzdWx0T3ZlcnJpZGVba2V5XSA9IG92ZXJyaWRlW2tleV07XG4gICAgICAgIH1cbiAgICB9XG4gICAgcmV0dXJuIENvcHlQYXlsb2FkKHBheWxvYWQsIHJlc3VsdE92ZXJyaWRlKTtcbn1cbmV4cG9ydCBmdW5jdGlvbiBDcmVhdGVJbnRlbnRQYXlsb2FkRnJvbU9iamVjdChvYmplY3QsIGludGVudCwgb3ZlcnJpZGUpIHtcbiAgICBjb25zdCBwYXlsb2FkRmllbGRzID0gcGF5bG9hZEZpZWxkc0ZvckludGVudChpbnRlbnQpO1xuICAgIHJldHVybiBDcmVhdGVQYXlsb2FkKG9iamVjdCwgcGF5bG9hZEZpZWxkcywgUGF5bG9hZFNvdXJjZS5Db25zdHJ1Y3Rvciwgb3ZlcnJpZGUpO1xufVxuZXhwb3J0IGZ1bmN0aW9uIENyZWF0ZVNvdXJjZWRQYXlsb2FkRnJvbU9iamVjdChvYmplY3QsIHNvdXJjZSwgb3ZlcnJpZGUpIHtcbiAgICBjb25zdCBwYXlsb2FkRmllbGRzID0gcGF5bG9hZEZpZWxkc0ZvclNvdXJjZShzb3VyY2UpO1xuICAgIHJldHVybiBDcmVhdGVQYXlsb2FkKG9iamVjdCwgcGF5bG9hZEZpZWxkcywgc291cmNlLCBvdmVycmlkZSk7XG59XG5leHBvcnQgZnVuY3Rpb24gQ29weVBheWxvYWQocGF5bG9hZCwgb3ZlcnJpZGUpIHtcbiAgICByZXR1cm4gQ3JlYXRlUGF5bG9hZChwYXlsb2FkLCBwYXlsb2FkLmZpZWxkcywgcGF5bG9hZC5zb3VyY2UsIG92ZXJyaWRlKTtcbn1cbmZ1bmN0aW9uIENyZWF0ZVBheWxvYWQob2JqZWN0LCBmaWVsZHMsIHNvdXJjZSwgb3ZlcnJpZGUpIHtcbiAgICBjb25zdCByYXdQYXlsb2FkID0gcGlja0J5Q29weShvYmplY3QsIGZpZWxkcyk7XG4gICAgY29uc3Qgb3ZlcnJpZGVGaWVsZHMgPSBvdmVycmlkZSBpbnN0YW5jZW9mIFB1cmVQYXlsb2FkXG4gICAgICAgID8gb3ZlcnJpZGUuZmllbGRzLnNsaWNlKClcbiAgICAgICAgOiBPYmplY3Qua2V5cyhvdmVycmlkZSB8fCBbXSk7XG4gICAgZm9yIChjb25zdCBmaWVsZCBvZiBvdmVycmlkZUZpZWxkcykge1xuICAgICAgICBjb25zdCB2YWx1ZSA9IG92ZXJyaWRlW2ZpZWxkXTtcbiAgICAgICAgcmF3UGF5bG9hZFtmaWVsZF0gPSB2YWx1ZSA/IENvcHkodmFsdWUpIDogdmFsdWU7XG4gICAgfVxuICAgIGNvbnN0IG5ld0ZpZWxkcyA9IHVuaXF1ZUFycmF5KGZpZWxkcy5jb25jYXQob3ZlcnJpZGVGaWVsZHMpKTtcbiAgICByZXR1cm4gbmV3IFB1cmVQYXlsb2FkKHJhd1BheWxvYWQsIG5ld0ZpZWxkcywgc291cmNlIHx8IFBheWxvYWRTb3VyY2UuQ29uc3RydWN0b3IpO1xufVxuZXhwb3J0IGZ1bmN0aW9uIENyZWF0ZUVuY3J5cHRpb25QYXJhbWV0ZXJzKHJhdykge1xuICAgIGNvbnN0IGZpZWxkcyA9IE9iamVjdC5rZXlzKHJhdyk7XG4gICAgcmV0dXJuIENyZWF0ZVBheWxvYWQocmF3LCBmaWVsZHMpO1xufVxuZXhwb3J0IGZ1bmN0aW9uIENvcHlFbmNyeXB0aW9uUGFyYW1ldGVycyhyYXcsIG92ZXJyaWRlKSB7XG4gICAgcmV0dXJuIENyZWF0ZVBheWxvYWQocmF3LCBFbmNyeXB0aW9uUGFyYW1ldGVyc0ZpZWxkcy5zbGljZSgpLCB1bmRlZmluZWQsIG92ZXJyaWRlKTtcbn1cbmZ1bmN0aW9uIHBheWxvYWRGaWVsZHNGb3JJbnRlbnQoaW50ZW50KSB7XG4gICAgaWYgKChpbnRlbnQgPT09IEVuY3J5cHRpb25JbnRlbnQuRmlsZUVuY3J5cHRlZCB8fFxuICAgICAgICBpbnRlbnQgPT09IEVuY3J5cHRpb25JbnRlbnQuRmlsZURlY3J5cHRlZCB8fFxuICAgICAgICBpbnRlbnQgPT09IEVuY3J5cHRpb25JbnRlbnQuRmlsZVByZWZlckVuY3J5cHRlZCkpIHtcbiAgICAgICAgcmV0dXJuIEZpbGVQYXlsb2FkRmllbGRzLnNsaWNlKCk7XG4gICAgfVxuICAgIGlmICgoaW50ZW50ID09PSBFbmNyeXB0aW9uSW50ZW50LkxvY2FsU3RvcmFnZVByZWZlckVuY3J5cHRlZCB8fFxuICAgICAgICBpbnRlbnQgPT09IEVuY3J5cHRpb25JbnRlbnQuTG9jYWxTdG9yYWdlRGVjcnlwdGVkIHx8XG4gICAgICAgIGludGVudCA9PT0gRW5jcnlwdGlvbkludGVudC5Mb2NhbFN0b3JhZ2VFbmNyeXB0ZWQpKSB7XG4gICAgICAgIHJldHVybiBTdG9yYWdlUGF5bG9hZEZpZWxkcy5zbGljZSgpO1xuICAgIH1cbiAgICBpZiAoKGludGVudCA9PT0gRW5jcnlwdGlvbkludGVudC5TeW5jIHx8XG4gICAgICAgIGludGVudCA9PT0gRW5jcnlwdGlvbkludGVudC5TeW5jRGVjcnlwdGVkKSkge1xuICAgICAgICByZXR1cm4gU2VydmVyUGF5bG9hZEZpZWxkcy5zbGljZSgpO1xuICAgIH1cbiAgICBlbHNlIHtcbiAgICAgICAgdGhyb3cgYE5vIHBheWxvYWQgZmllbGRzIGZvdW5kIGZvciBpbnRlbnQgJHtpbnRlbnR9YDtcbiAgICB9XG59XG5leHBvcnQgZnVuY3Rpb24gcGF5bG9hZEZpZWxkc0ZvclNvdXJjZShzb3VyY2UpIHtcbiAgICBpZiAoc291cmNlID09PSBQYXlsb2FkU291cmNlLkZpbGVJbXBvcnQpIHtcbiAgICAgICAgcmV0dXJuIEZpbGVQYXlsb2FkRmllbGRzLnNsaWNlKCk7XG4gICAgfVxuICAgIGlmIChzb3VyY2UgPT09IFBheWxvYWRTb3VyY2UuU2Vzc2lvbkhpc3RvcnkpIHtcbiAgICAgICAgcmV0dXJuIFNlc3Npb25IaXN0b3J5UGF5bG9hZEZpZWxkcy5zbGljZSgpO1xuICAgIH1cbiAgICBpZiAoc291cmNlID09PSBQYXlsb2FkU291cmNlLkNvbXBvbmVudFJldHJpZXZlZCkge1xuICAgICAgICByZXR1cm4gQ29tcG9uZW50UmV0cmlldmVkUGF5bG9hZEZpZWxkcy5zbGljZSgpO1xuICAgIH1cbiAgICBpZiAoc291cmNlID09PSBQYXlsb2FkU291cmNlLkNvbXBvbmVudENyZWF0ZWQpIHtcbiAgICAgICAgcmV0dXJuIENvbXBvbmVudENyZWF0ZWRQYXlsb2FkRmllbGRzLnNsaWNlKCk7XG4gICAgfVxuICAgIGlmICgoc291cmNlID09PSBQYXlsb2FkU291cmNlLkxvY2FsUmV0cmlldmVkIHx8XG4gICAgICAgIHNvdXJjZSA9PT0gUGF5bG9hZFNvdXJjZS5Mb2NhbENoYW5nZWQpKSB7XG4gICAgICAgIHJldHVybiBTdG9yYWdlUGF5bG9hZEZpZWxkcy5zbGljZSgpO1xuICAgIH1cbiAgICBpZiAoKHNvdXJjZSA9PT0gUGF5bG9hZFNvdXJjZS5SZW1vdGVSZXRyaWV2ZWQgfHxcbiAgICAgICAgc291cmNlID09PSBQYXlsb2FkU291cmNlLkNvbmZsaWN0RGF0YSB8fFxuICAgICAgICBzb3VyY2UgPT09IFBheWxvYWRTb3VyY2UuQ29uZmxpY3RVdWlkKSkge1xuICAgICAgICByZXR1cm4gU2VydmVyUGF5bG9hZEZpZWxkcy5zbGljZSgpO1xuICAgIH1cbiAgICBpZiAoKHNvdXJjZSA9PT0gUGF5bG9hZFNvdXJjZS5Mb2NhbFNhdmVkIHx8XG4gICAgICAgIHNvdXJjZSA9PT0gUGF5bG9hZFNvdXJjZS5SZW1vdGVTYXZlZCkpIHtcbiAgICAgICAgcmV0dXJuIFNlcnZlclNhdmVkUGF5bG9hZEZpZWxkcy5zbGljZSgpO1xuICAgIH1cbiAgICBlbHNlIHtcbiAgICAgICAgdGhyb3cgYE5vIHBheWxvYWQgZmllbGRzIGZvdW5kIGZvciBzb3VyY2UgJHtzb3VyY2V9YDtcbiAgICB9XG59XG4iXSwibWFwcGluZ3MiOiJBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBbUJBO0FBVUE7QUFVQTtBQWdCQTtBQVdBO0FBTUE7OztBQUVBO0FBS0E7OztBQUVBO0FBTUE7Ozs7Ozs7QUFNQTtBQVFBO0FBQ0E7QUFDQTtBQUNBOzs7Ozs7O0FBTUE7QUFDQTtBQUNBO0FBRkE7QUFBQTtBQUFBO0FBQ0E7QUFEQTtBQUdBO0FBQUE7QUFDQTtBQUNBO0FBTEE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUNBO0FBS0E7QUFDQTtBQUNBO0FBQUE7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUZBO0FBQUE7QUFBQTtBQUNBO0FBREE7QUFLQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBUkE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUNBO0FBUUE7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUdBO0FBQ0E7QUFDQTtBQUFBO0FBR0E7QUFDQTtBQUNBO0FBQUE7QUFFQTtBQUNBO0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFFQTtBQUNBO0FBQ0E7QUFBQTtBQUdBO0FBQ0E7QUFDQTtBQUFBO0FBRUE7QUFDQTtBQUVBO0FBQ0E7QUFDQSIsInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./lib/protocol/payloads/generator.ts\n')},"./lib/protocol/payloads/pure_payload.ts":
|
||
/*!***********************************************!*\
|
||
!*** ./lib/protocol/payloads/pure_payload.ts ***!
|
||
\***********************************************/
|
||
/*! exports provided: PurePayload */function(module,__webpack_exports__,__webpack_require__){"use strict";eval('__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "PurePayload", function() { return PurePayload; });\n/* harmony import */ var _Models_functions__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @Models/functions */ "./lib/models/functions.ts");\n/* harmony import */ var _fields__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./fields */ "./lib/protocol/payloads/fields.ts");\n/* harmony import */ var _Payloads_sources__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! @Payloads/sources */ "./lib/protocol/payloads/sources.ts");\n/* harmony import */ var _Protocol_versions__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! @Protocol/versions */ "./lib/protocol/versions.ts");\n/* harmony import */ var _Lib_utils__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! @Lib/utils */ "./lib/utils.ts");\n/* harmony import */ var _Payloads_formats__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! @Payloads/formats */ "./lib/protocol/payloads/formats.ts");\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } }\n\nfunction _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); } }\n\nfunction _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; }\n\n\n\n\n\n\n\n/**\n * A payload is a vehicle in which item data is transported or persisted.\n * This class represents an abstract PurePayload which does not have any fields. Instead,\n * subclasses must override the `fields` static method to return which fields this particular\n * class of payload contains. For example, a ServerItemPayload is a transmission vehicle for\n * transporting an item to the server, and does not contain fields like PayloadFields.Dirty.\n * However, a StorageItemPayload is a persistence vehicle for saving payloads to disk, and does contain\n * PayloadsFields.Dirty.\n *\n * Payloads are completely immutable and may not be modified after creation. Payloads should\n * not be created directly using the constructor, but instead created using the generators avaiable\n * in generator.js.\n *\n * Payloads also have a content format. Formats can either be\n * DecryptedBase64String, EncryptedString, or DecryptedBareObject.\n */\n\nvar PurePayload = /*#__PURE__*/function () {\n function PurePayload(rawPayload, fields, source) {\n _classCallCheck(this, PurePayload);\n\n if (fields) {\n this.fields = fields;\n } else {\n this.fields = Object.keys(rawPayload);\n }\n\n if (source) {\n this.source = source;\n } else {\n this.source = _Payloads_sources__WEBPACK_IMPORTED_MODULE_2__["PayloadSource"].Constructor;\n }\n\n this.uuid = rawPayload.uuid;\n\n if (!this.uuid && this.fields.includes(_fields__WEBPACK_IMPORTED_MODULE_1__["PayloadField"].Uuid)) {\n throw Error(\'uuid is null, yet this payloads fields indicate it shouldnt be.\');\n }\n\n this.content_type = rawPayload.content_type;\n\n if (rawPayload.content) {\n if (Object(_Lib_utils__WEBPACK_IMPORTED_MODULE_4__["isObject"])(rawPayload.content)) {\n this.content = Object(_Models_functions__WEBPACK_IMPORTED_MODULE_0__["FillItemContent"])(rawPayload.content);\n } else {\n this.content = rawPayload.content;\n }\n }\n\n this.deleted = rawPayload.deleted;\n this.items_key_id = rawPayload.items_key_id;\n this.enc_item_key = rawPayload.enc_item_key;\n /** Fallback to initializing with now date */\n\n this.created_at = new Date(rawPayload.created_at || new Date());\n /** Fallback to initializing with 0 epoch date */\n\n this.updated_at = new Date(rawPayload.updated_at || new Date(0));\n this.dirtiedDate = new Date(rawPayload.dirtiedDate);\n this.dirty = rawPayload.dirty;\n this.errorDecrypting = rawPayload.errorDecrypting;\n this.waitingForKey = rawPayload.waitingForKey;\n this.errorDecryptingValueChanged = rawPayload.errorDecryptingValueChanged;\n this.lastSyncBegan = rawPayload.lastSyncBegan ? new Date(rawPayload.lastSyncBegan) : undefined;\n this.lastSyncEnd = rawPayload.lastSyncEnd ? new Date(rawPayload.lastSyncEnd) : undefined;\n this.auth_hash = rawPayload.auth_hash;\n this.auth_params = rawPayload.auth_params;\n\n if (Object(_Lib_utils__WEBPACK_IMPORTED_MODULE_4__["isString"])(this.content)) {\n if (this.content.startsWith(_Protocol_versions__WEBPACK_IMPORTED_MODULE_3__["ProtocolVersion"].V000Base64Decrypted)) {\n this.format = _Payloads_formats__WEBPACK_IMPORTED_MODULE_5__["PayloadFormat"].DecryptedBase64String;\n } else {\n this.format = _Payloads_formats__WEBPACK_IMPORTED_MODULE_5__["PayloadFormat"].EncryptedString;\n }\n } else if (Object(_Lib_utils__WEBPACK_IMPORTED_MODULE_4__["isObject"])(this.content)) {\n this.format = _Payloads_formats__WEBPACK_IMPORTED_MODULE_5__["PayloadFormat"].DecryptedBareObject;\n } else {\n this.format = _Payloads_formats__WEBPACK_IMPORTED_MODULE_5__["PayloadFormat"].Deleted;\n }\n\n if (Object(_Lib_utils__WEBPACK_IMPORTED_MODULE_4__["isString"])(this.content)) {\n this.version = this.content.substring(0, _Protocol_versions__WEBPACK_IMPORTED_MODULE_3__["ProtocolVersion"].VersionLength);\n } else if (this.content) {\n this.version = this.content.version;\n }\n\n Object(_Lib_utils__WEBPACK_IMPORTED_MODULE_4__["deepFreeze"])(this);\n }\n /**\n * Returns a generic object with all payload fields except any that are meta-data\n * related (such as `fields`, `dirtiedDate`, etc). "Ejected" means a payload for\n * generic, non-contextual consumption, such as saving to a backup file or syncing\n * with a server.\n */\n\n\n _createClass(PurePayload, [{\n key: "ejected",\n value: function ejected() {\n var optionalFields = [_fields__WEBPACK_IMPORTED_MODULE_1__["PayloadField"].Legacy003AuthHash, _fields__WEBPACK_IMPORTED_MODULE_1__["PayloadField"].Deleted];\n var nonRequiredFields = [_fields__WEBPACK_IMPORTED_MODULE_1__["PayloadField"].DirtiedDate, _fields__WEBPACK_IMPORTED_MODULE_1__["PayloadField"].ErrorDecrypting, _fields__WEBPACK_IMPORTED_MODULE_1__["PayloadField"].ErrorDecryptingChanged, _fields__WEBPACK_IMPORTED_MODULE_1__["PayloadField"].WaitingForKey, _fields__WEBPACK_IMPORTED_MODULE_1__["PayloadField"].LastSyncBegan, _fields__WEBPACK_IMPORTED_MODULE_1__["PayloadField"].LastSyncEnd];\n var result = {};\n var _iteratorNormalCompletion = true;\n var _didIteratorError = false;\n var _iteratorError = undefined;\n\n try {\n for (var _iterator = this.fields[Symbol.iterator](), _step; !(_iteratorNormalCompletion = (_step = _iterator.next()).done); _iteratorNormalCompletion = true) {\n var field = _step.value;\n\n if (nonRequiredFields.includes(field)) {\n continue;\n }\n\n var value = this[field];\n\n if (Object(_Lib_utils__WEBPACK_IMPORTED_MODULE_4__["isNullOrUndefined"])(value) && optionalFields.includes(field)) {\n continue;\n }\n\n result[field] = value;\n }\n } catch (err) {\n _didIteratorError = true;\n _iteratorError = err;\n } finally {\n try {\n if (!_iteratorNormalCompletion && _iterator.return != null) {\n _iterator.return();\n }\n } finally {\n if (_didIteratorError) {\n throw _iteratorError;\n }\n }\n }\n\n return result;\n }\n }, {\n key: "safeContent",\n get: function get() {\n if (this.format === _Payloads_formats__WEBPACK_IMPORTED_MODULE_5__["PayloadFormat"].DecryptedBareObject) {\n return this.content;\n } else {\n return {};\n }\n }\n /** Defined to allow singular API with Payloadable type (PurePayload | SNItem) */\n\n }, {\n key: "references",\n get: function get() {\n return this.safeReferences;\n }\n }, {\n key: "safeReferences",\n get: function get() {\n return this.safeContent.references || [];\n }\n }, {\n key: "contentObject",\n get: function get() {\n if (this.format !== _Payloads_formats__WEBPACK_IMPORTED_MODULE_5__["PayloadFormat"].DecryptedBareObject) {\n throw Error(\'Attempting to access non-object content as object\');\n }\n\n return this.content;\n }\n }, {\n key: "contentString",\n get: function get() {\n if (this.format === _Payloads_formats__WEBPACK_IMPORTED_MODULE_5__["PayloadFormat"].DecryptedBareObject) {\n throw Error(\'Attempting to access non-string content as string\');\n }\n\n return this.content;\n }\n /**\n * Whether a payload can be discarded and removed from storage.\n * This value is true if a payload is marked as deleted and not dirty.\n */\n\n }, {\n key: "discardable",\n get: function get() {\n return this.deleted && !this.dirty;\n }\n }]);\n\n return PurePayload;\n}();//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9saWIvcHJvdG9jb2wvcGF5bG9hZHMvcHVyZV9wYXlsb2FkLnRzLmpzIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vU05MaWJyYXJ5Ly4vbGliL3Byb3RvY29sL3BheWxvYWRzL3B1cmVfcGF5bG9hZC50cz9iZjJkIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEZpbGxJdGVtQ29udGVudCB9IGZyb20gJ0BNb2RlbHMvZnVuY3Rpb25zJztcbmltcG9ydCB7IFBheWxvYWRGaWVsZCB9IGZyb20gJy4vZmllbGRzJztcbmltcG9ydCB7IFBheWxvYWRTb3VyY2UgfSBmcm9tICdAUGF5bG9hZHMvc291cmNlcyc7XG5pbXBvcnQgeyBQcm90b2NvbFZlcnNpb24gfSBmcm9tICdAUHJvdG9jb2wvdmVyc2lvbnMnO1xuaW1wb3J0IHsgaXNTdHJpbmcsIGlzT2JqZWN0LCBkZWVwRnJlZXplLCBpc051bGxPclVuZGVmaW5lZCB9IGZyb20gJ0BMaWIvdXRpbHMnO1xuaW1wb3J0IHsgUGF5bG9hZEZvcm1hdCB9IGZyb20gJ0BQYXlsb2Fkcy9mb3JtYXRzJztcbi8qKlxuICogQSBwYXlsb2FkIGlzIGEgdmVoaWNsZSBpbiB3aGljaCBpdGVtIGRhdGEgaXMgdHJhbnNwb3J0ZWQgb3IgcGVyc2lzdGVkLlxuICogVGhpcyBjbGFzcyByZXByZXNlbnRzIGFuIGFic3RyYWN0IFB1cmVQYXlsb2FkIHdoaWNoIGRvZXMgbm90IGhhdmUgYW55IGZpZWxkcy4gSW5zdGVhZCxcbiAqIHN1YmNsYXNzZXMgbXVzdCBvdmVycmlkZSB0aGUgYGZpZWxkc2Agc3RhdGljIG1ldGhvZCB0byByZXR1cm4gd2hpY2ggZmllbGRzIHRoaXMgcGFydGljdWxhclxuICogY2xhc3Mgb2YgcGF5bG9hZCBjb250YWlucy4gRm9yIGV4YW1wbGUsIGEgU2VydmVySXRlbVBheWxvYWQgaXMgYSB0cmFuc21pc3Npb24gdmVoaWNsZSBmb3JcbiAqIHRyYW5zcG9ydGluZyBhbiBpdGVtIHRvIHRoZSBzZXJ2ZXIsIGFuZCBkb2VzIG5vdCBjb250YWluIGZpZWxkcyBsaWtlIFBheWxvYWRGaWVsZHMuRGlydHkuXG4gKiBIb3dldmVyLCBhIFN0b3JhZ2VJdGVtUGF5bG9hZCBpcyBhIHBlcnNpc3RlbmNlIHZlaGljbGUgZm9yIHNhdmluZyBwYXlsb2FkcyB0byBkaXNrLCBhbmQgZG9lcyBjb250YWluXG4gKiBQYXlsb2Fkc0ZpZWxkcy5EaXJ0eS5cbiAqXG4gKiBQYXlsb2FkcyBhcmUgY29tcGxldGVseSBpbW11dGFibGUgYW5kIG1heSBub3QgYmUgbW9kaWZpZWQgYWZ0ZXIgY3JlYXRpb24uIFBheWxvYWRzIHNob3VsZFxuICogbm90IGJlIGNyZWF0ZWQgZGlyZWN0bHkgdXNpbmcgdGhlIGNvbnN0cnVjdG9yLCBidXQgaW5zdGVhZCBjcmVhdGVkIHVzaW5nIHRoZSBnZW5lcmF0b3JzIGF2YWlhYmxlXG4gKiBpbiBnZW5lcmF0b3IuanMuXG4gKlxuICogUGF5bG9hZHMgYWxzbyBoYXZlIGEgY29udGVudCBmb3JtYXQuIEZvcm1hdHMgY2FuIGVpdGhlciBiZVxuICogRGVjcnlwdGVkQmFzZTY0U3RyaW5nLCBFbmNyeXB0ZWRTdHJpbmcsIG9yIERlY3J5cHRlZEJhcmVPYmplY3QuXG4gKi9cbmV4cG9ydCBjbGFzcyBQdXJlUGF5bG9hZCB7XG4gICAgY29uc3RydWN0b3IocmF3UGF5bG9hZCwgZmllbGRzLCBzb3VyY2UpIHtcbiAgICAgICAgaWYgKGZpZWxkcykge1xuICAgICAgICAgICAgdGhpcy5maWVsZHMgPSBmaWVsZHM7XG4gICAgICAgIH1cbiAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICB0aGlzLmZpZWxkcyA9IE9iamVjdC5rZXlzKHJhd1BheWxvYWQpO1xuICAgICAgICB9XG4gICAgICAgIGlmIChzb3VyY2UpIHtcbiAgICAgICAgICAgIHRoaXMuc291cmNlID0gc291cmNlO1xuICAgICAgICB9XG4gICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgdGhpcy5zb3VyY2UgPSBQYXlsb2FkU291cmNlLkNvbnN0cnVjdG9yO1xuICAgICAgICB9XG4gICAgICAgIHRoaXMudXVpZCA9IHJhd1BheWxvYWQudXVpZDtcbiAgICAgICAgaWYgKCF0aGlzLnV1aWQgJiYgdGhpcy5maWVsZHMuaW5jbHVkZXMoUGF5bG9hZEZpZWxkLlV1aWQpKSB7XG4gICAgICAgICAgICB0aHJvdyBFcnJvcigndXVpZCBpcyBudWxsLCB5ZXQgdGhpcyBwYXlsb2FkcyBmaWVsZHMgaW5kaWNhdGUgaXQgc2hvdWxkbnQgYmUuJyk7XG4gICAgICAgIH1cbiAgICAgICAgdGhpcy5jb250ZW50X3R5cGUgPSByYXdQYXlsb2FkLmNvbnRlbnRfdHlwZTtcbiAgICAgICAgaWYgKHJhd1BheWxvYWQuY29udGVudCkge1xuICAgICAgICAgICAgaWYgKGlzT2JqZWN0KHJhd1BheWxvYWQuY29udGVudCkpIHtcbiAgICAgICAgICAgICAgICB0aGlzLmNvbnRlbnQgPSBGaWxsSXRlbUNvbnRlbnQocmF3UGF5bG9hZC5jb250ZW50KTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgICAgIHRoaXMuY29udGVudCA9IHJhd1BheWxvYWQuY29udGVudDtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICB0aGlzLmRlbGV0ZWQgPSByYXdQYXlsb2FkLmRlbGV0ZWQ7XG4gICAgICAgIHRoaXMuaXRlbXNfa2V5X2lkID0gcmF3UGF5bG9hZC5pdGVtc19rZXlfaWQ7XG4gICAgICAgIHRoaXMuZW5jX2l0ZW1fa2V5ID0gcmF3UGF5bG9hZC5lbmNfaXRlbV9rZXk7XG4gICAgICAgIC8qKiBGYWxsYmFjayB0byBpbml0aWFsaXppbmcgd2l0aCBub3cgZGF0ZSAqL1xuICAgICAgICB0aGlzLmNyZWF0ZWRfYXQgPSBuZXcgRGF0ZShyYXdQYXlsb2FkLmNyZWF0ZWRfYXQgfHwgbmV3IERhdGUoKSk7XG4gICAgICAgIC8qKiBGYWxsYmFjayB0byBpbml0aWFsaXppbmcgd2l0aCAwIGVwb2NoIGRhdGUgKi9cbiAgICAgICAgdGhpcy51cGRhdGVkX2F0ID0gbmV3IERhdGUocmF3UGF5bG9hZC51cGRhdGVkX2F0IHx8IG5ldyBEYXRlKDApKTtcbiAgICAgICAgdGhpcy5kaXJ0aWVkRGF0ZSA9IG5ldyBEYXRlKHJhd1BheWxvYWQuZGlydGllZERhdGUpO1xuICAgICAgICB0aGlzLmRpcnR5ID0gcmF3UGF5bG9hZC5kaXJ0eTtcbiAgICAgICAgdGhpcy5lcnJvckRlY3J5cHRpbmcgPSByYXdQYXlsb2FkLmVycm9yRGVjcnlwdGluZztcbiAgICAgICAgdGhpcy53YWl0aW5nRm9yS2V5ID0gcmF3UGF5bG9hZC53YWl0aW5nRm9yS2V5O1xuICAgICAgICB0aGlzLmVycm9yRGVjcnlwdGluZ1ZhbHVlQ2hhbmdlZCA9IHJhd1BheWxvYWQuZXJyb3JEZWNyeXB0aW5nVmFsdWVDaGFuZ2VkO1xuICAgICAgICB0aGlzLmxhc3RTeW5jQmVnYW4gPSByYXdQYXlsb2FkLmxhc3RTeW5jQmVnYW4gPyBuZXcgRGF0ZShyYXdQYXlsb2FkLmxhc3RTeW5jQmVnYW4pIDogdW5kZWZpbmVkO1xuICAgICAgICB0aGlzLmxhc3RTeW5jRW5kID0gcmF3UGF5bG9hZC5sYXN0U3luY0VuZCA/IG5ldyBEYXRlKHJhd1BheWxvYWQubGFzdFN5bmNFbmQpIDogdW5kZWZpbmVkO1xuICAgICAgICB0aGlzLmF1dGhfaGFzaCA9IHJhd1BheWxvYWQuYXV0aF9oYXNoO1xuICAgICAgICB0aGlzLmF1dGhfcGFyYW1zID0gcmF3UGF5bG9hZC5hdXRoX3BhcmFtcztcbiAgICAgICAgaWYgKGlzU3RyaW5nKHRoaXMuY29udGVudCkpIHtcbiAgICAgICAgICAgIGlmICh0aGlzLmNvbnRlbnQuc3RhcnRzV2l0aChQcm90b2NvbFZlcnNpb24uVjAwMEJhc2U2NERlY3J5cHRlZCkpIHtcbiAgICAgICAgICAgICAgICB0aGlzLmZvcm1hdCA9IFBheWxvYWRGb3JtYXQuRGVjcnlwdGVkQmFzZTY0U3RyaW5nO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICAgICAgdGhpcy5mb3JtYXQgPSBQYXlsb2FkRm9ybWF0LkVuY3J5cHRlZFN0cmluZztcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICBlbHNlIGlmIChpc09iamVjdCh0aGlzLmNvbnRlbnQpKSB7XG4gICAgICAgICAgICB0aGlzLmZvcm1hdCA9IFBheWxvYWRGb3JtYXQuRGVjcnlwdGVkQmFyZU9iamVjdDtcbiAgICAgICAgfVxuICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgIHRoaXMuZm9ybWF0ID0gUGF5bG9hZEZvcm1hdC5EZWxldGVkO1xuICAgICAgICB9XG4gICAgICAgIGlmIChpc1N0cmluZyh0aGlzLmNvbnRlbnQpKSB7XG4gICAgICAgICAgICB0aGlzLnZlcnNpb24gPSB0aGlzLmNvbnRlbnQuc3Vic3RyaW5nKDAsIFByb3RvY29sVmVyc2lvbi5WZXJzaW9uTGVuZ3RoKTtcbiAgICAgICAgfVxuICAgICAgICBlbHNlIGlmICh0aGlzLmNvbnRlbnQpIHtcbiAgICAgICAgICAgIHRoaXMudmVyc2lvbiA9IHRoaXMuY29udGVudC52ZXJzaW9uO1xuICAgICAgICB9XG4gICAgICAgIGRlZXBGcmVlemUodGhpcyk7XG4gICAgfVxuICAgIC8qKlxuICAgICAqIFJldHVybnMgYSBnZW5lcmljIG9iamVjdCB3aXRoIGFsbCBwYXlsb2FkIGZpZWxkcyBleGNlcHQgYW55IHRoYXQgYXJlIG1ldGEtZGF0YVxuICAgICAqIHJlbGF0ZWQgKHN1Y2ggYXMgYGZpZWxkc2AsIGBkaXJ0aWVkRGF0ZWAsIGV0YykuIFwiRWplY3RlZFwiIG1lYW5zIGEgcGF5bG9hZCBmb3JcbiAgICAgKiBnZW5lcmljLCBub24tY29udGV4dHVhbCBjb25zdW1wdGlvbiwgc3VjaCBhcyBzYXZpbmcgdG8gYSBiYWNrdXAgZmlsZSBvciBzeW5jaW5nXG4gICAgICogd2l0aCBhIHNlcnZlci5cbiAgICAgKi9cbiAgICBlamVjdGVkKCkge1xuICAgICAgICBjb25zdCBvcHRpb25hbEZpZWxkcyA9IFtcbiAgICAgICAgICAgIFBheWxvYWRGaWVsZC5MZWdhY3kwMDNBdXRoSGFzaCxcbiAgICAgICAgICAgIFBheWxvYWRGaWVsZC5EZWxldGVkXG4gICAgICAgIF07XG4gICAgICAgIGNvbnN0IG5vblJlcXVpcmVkRmllbGRzID0gW1xuICAgICAgICAgICAgUGF5bG9hZEZpZWxkLkRpcnRpZWREYXRlLFxuICAgICAgICAgICAgUGF5bG9hZEZpZWxkLkVycm9yRGVjcnlwdGluZyxcbiAgICAgICAgICAgIFBheWxvYWRGaWVsZC5FcnJvckRlY3J5cHRpbmdDaGFuZ2VkLFxuICAgICAgICAgICAgUGF5bG9hZEZpZWxkLldhaXRpbmdGb3JLZXksXG4gICAgICAgICAgICBQYXlsb2FkRmllbGQuTGFzdFN5bmNCZWdhbixcbiAgICAgICAgICAgIFBheWxvYWRGaWVsZC5MYXN0U3luY0VuZFxuICAgICAgICBdO1xuICAgICAgICBjb25zdCByZXN1bHQgPSB7fTtcbiAgICAgICAgZm9yIChjb25zdCBmaWVsZCBvZiB0aGlzLmZpZWxkcykge1xuICAgICAgICAgICAgaWYgKG5vblJlcXVpcmVkRmllbGRzLmluY2x1ZGVzKGZpZWxkKSkge1xuICAgICAgICAgICAgICAgIGNvbnRpbnVlO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgY29uc3QgdmFsdWUgPSB0aGlzW2ZpZWxkXTtcbiAgICAgICAgICAgIGlmIChpc051bGxPclVuZGVmaW5lZCh2YWx1ZSkgJiYgb3B0aW9uYWxGaWVsZHMuaW5jbHVkZXMoZmllbGQpKSB7XG4gICAgICAgICAgICAgICAgY29udGludWU7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICByZXN1bHRbZmllbGRdID0gdmFsdWU7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHJlc3VsdDtcbiAgICB9XG4gICAgZ2V0IHNhZmVDb250ZW50KCkge1xuICAgICAgICBpZiAodGhpcy5mb3JtYXQgPT09IFBheWxvYWRGb3JtYXQuRGVjcnlwdGVkQmFyZU9iamVjdCkge1xuICAgICAgICAgICAgcmV0dXJuIHRoaXMuY29udGVudDtcbiAgICAgICAgfVxuICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgIHJldHVybiB7fTtcbiAgICAgICAgfVxuICAgIH1cbiAgICAvKiogRGVmaW5lZCB0byBhbGxvdyBzaW5ndWxhciBBUEkgd2l0aCBQYXlsb2FkYWJsZSB0eXBlIChQdXJlUGF5bG9hZCB8IFNOSXRlbSkgKi9cbiAgICBnZXQgcmVmZXJlbmNlcygpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuc2FmZVJlZmVyZW5jZXM7XG4gICAgfVxuICAgIGdldCBzYWZlUmVmZXJlbmNlcygpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuc2FmZUNvbnRlbnQucmVmZXJlbmNlcyB8fCBbXTtcbiAgICB9XG4gICAgZ2V0IGNvbnRlbnRPYmplY3QoKSB7XG4gICAgICAgIGlmICh0aGlzLmZvcm1hdCAhPT0gUGF5bG9hZEZvcm1hdC5EZWNyeXB0ZWRCYXJlT2JqZWN0KSB7XG4gICAgICAgICAgICB0aHJvdyBFcnJvcignQXR0ZW1wdGluZyB0byBhY2Nlc3Mgbm9uLW9iamVjdCBjb250ZW50IGFzIG9iamVjdCcpO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiB0aGlzLmNvbnRlbnQ7XG4gICAgfVxuICAgIGdldCBjb250ZW50U3RyaW5nKCkge1xuICAgICAgICBpZiAodGhpcy5mb3JtYXQgPT09IFBheWxvYWRGb3JtYXQuRGVjcnlwdGVkQmFyZU9iamVjdCkge1xuICAgICAgICAgICAgdGhyb3cgRXJyb3IoJ0F0dGVtcHRpbmcgdG8gYWNjZXNzIG5vbi1zdHJpbmcgY29udGVudCBhcyBzdHJpbmcnKTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gdGhpcy5jb250ZW50O1xuICAgIH1cbiAgICAvKipcbiAgICAgKiBXaGV0aGVyIGEgcGF5bG9hZCBjYW4gYmUgZGlzY2FyZGVkIGFuZCByZW1vdmVkIGZyb20gc3RvcmFnZS5cbiAgICAgKiBUaGlzIHZhbHVlIGlzIHRydWUgaWYgYSBwYXlsb2FkIGlzIG1hcmtlZCBhcyBkZWxldGVkIGFuZCBub3QgZGlydHkuXG4gICAgICovXG4gICAgZ2V0IGRpc2NhcmRhYmxlKCkge1xuICAgICAgICByZXR1cm4gdGhpcy5kZWxldGVkICYmICF0aGlzLmRpcnR5O1xuICAgIH1cbn1cbiJdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFnQkE7QUFDQTtBQUFBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFFQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFFQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFFQTtBQUNBO0FBQ0E7QUFFQTtBQUNBO0FBRUE7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBRUE7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUNBOzs7Ozs7OztBQWpFQTtBQUFBO0FBQUE7QUF3RUE7QUFJQTtBQVFBO0FBYkE7QUFBQTtBQUFBO0FBQ0E7QUFEQTtBQWNBO0FBQUE7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQXZCQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQ0E7QUF1QkE7QUFDQTtBQWhHQTtBQUFBO0FBQUE7QUFrR0E7QUFDQTtBQUNBO0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQTFHQTtBQUFBO0FBQUE7QUEyR0E7QUFDQTtBQTVHQTtBQUFBO0FBQUE7QUE4R0E7QUFDQTtBQS9HQTtBQUFBO0FBQUE7QUFpSEE7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBckhBO0FBQUE7QUFBQTtBQXVIQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTs7Ozs7QUE1SEE7QUFBQTtBQUFBO0FBaUlBO0FBQ0E7QUFsSUE7QUFDQTtBQURBO0FBQUEiLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./lib/protocol/payloads/pure_payload.ts\n')},"./lib/protocol/payloads/sources.ts":
|
||
/*!******************************************!*\
|
||
!*** ./lib/protocol/payloads/sources.ts ***!
|
||
\******************************************/
|
||
/*! exports provided: PayloadSource, isPayloadSourceRetrieved */function(module,__webpack_exports__,__webpack_require__){"use strict";eval('__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "PayloadSource", function() { return PayloadSource; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "isPayloadSourceRetrieved", function() { return isPayloadSourceRetrieved; });\nvar PayloadSource;\n\n(function (PayloadSource) {\n PayloadSource[PayloadSource["RemoteRetrieved"] = 1] = "RemoteRetrieved";\n PayloadSource[PayloadSource["RemoteSaved"] = 2] = "RemoteSaved";\n /* The payload returned by offline sync operation */\n\n PayloadSource[PayloadSource["LocalSaved"] = 3] = "LocalSaved";\n PayloadSource[PayloadSource["LocalRetrieved"] = 4] = "LocalRetrieved";\n /* Payload when a client modifies item property then maps it to update UI.\n This also indicates that the item was dirtied*/\n\n PayloadSource[PayloadSource["LocalChanged"] = 5] = "LocalChanged";\n /** Payloads retrieved from an external\n extension/component */\n\n PayloadSource[PayloadSource["ComponentRetrieved"] = 6] = "ComponentRetrieved";\n /** When a component is installed by the desktop\n and some of its values change */\n\n PayloadSource[PayloadSource["DesktopInstalled"] = 7] = "DesktopInstalled";\n /** aciton-based Extensions like note history */\n\n PayloadSource[PayloadSource["RemoteActionRetrieved"] = 8] = "RemoteActionRetrieved";\n PayloadSource[PayloadSource["FileImport"] = 9] = "FileImport";\n PayloadSource[PayloadSource["RemoteConflict"] = 10] = "RemoteConflict";\n PayloadSource[PayloadSource["ImportConflict"] = 11] = "ImportConflict";\n /** Payloads that are saved or saving in the\n current sync request */\n\n PayloadSource[PayloadSource["SavedOrSaving"] = 12] = "SavedOrSaving";\n /** Payloads that have been decrypted for the convenience\n of consumers who can only work with decrypted formats. The\n decrypted payloads exist in transient, ephemeral space, and\n are not used in anyway. */\n\n PayloadSource[PayloadSource["DecryptedTransient"] = 13] = "DecryptedTransient";\n PayloadSource[PayloadSource["ConflictUuid"] = 14] = "ConflictUuid";\n PayloadSource[PayloadSource["ConflictData"] = 15] = "ConflictData";\n PayloadSource[PayloadSource["SessionHistory"] = 16] = "SessionHistory";\n /** Payloads with a source of Constructor means that the payload was created\n * in isolated space by the caller, and does not yet have any app-related affiliation. */\n\n PayloadSource[PayloadSource["Constructor"] = 17] = "Constructor";\n /** Payloads received from an external component with the intention of creating a new item */\n\n PayloadSource[PayloadSource["ComponentCreated"] = 18] = "ComponentCreated";\n /** When the payloads are about to sync, they are emitted by the sync service with updated\n * values of lastSyncBegan. Payloads emitted from this source indicate that these payloads\n * have been saved to disk, and are about to be synced */\n\n PayloadSource[PayloadSource["PreSyncSave"] = 19] = "PreSyncSave";\n})(PayloadSource || (PayloadSource = {}));\n\n;\nfunction isPayloadSourceRetrieved(source) {\n return [PayloadSource.RemoteRetrieved, PayloadSource.ComponentRetrieved, PayloadSource.RemoteActionRetrieved].includes(source);\n}//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9saWIvcHJvdG9jb2wvcGF5bG9hZHMvc291cmNlcy50cy5qcyIsInNvdXJjZXMiOlsid2VicGFjazovL1NOTGlicmFyeS8uL2xpYi9wcm90b2NvbC9wYXlsb2Fkcy9zb3VyY2VzLnRzP2U5MTciXSwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0IHZhciBQYXlsb2FkU291cmNlO1xuKGZ1bmN0aW9uIChQYXlsb2FkU291cmNlKSB7XG4gICAgUGF5bG9hZFNvdXJjZVtQYXlsb2FkU291cmNlW1wiUmVtb3RlUmV0cmlldmVkXCJdID0gMV0gPSBcIlJlbW90ZVJldHJpZXZlZFwiO1xuICAgIFBheWxvYWRTb3VyY2VbUGF5bG9hZFNvdXJjZVtcIlJlbW90ZVNhdmVkXCJdID0gMl0gPSBcIlJlbW90ZVNhdmVkXCI7XG4gICAgLyogVGhlIHBheWxvYWQgcmV0dXJuZWQgYnkgb2ZmbGluZSBzeW5jIG9wZXJhdGlvbiAqL1xuICAgIFBheWxvYWRTb3VyY2VbUGF5bG9hZFNvdXJjZVtcIkxvY2FsU2F2ZWRcIl0gPSAzXSA9IFwiTG9jYWxTYXZlZFwiO1xuICAgIFBheWxvYWRTb3VyY2VbUGF5bG9hZFNvdXJjZVtcIkxvY2FsUmV0cmlldmVkXCJdID0gNF0gPSBcIkxvY2FsUmV0cmlldmVkXCI7XG4gICAgLyogUGF5bG9hZCB3aGVuIGEgY2xpZW50IG1vZGlmaWVzIGl0ZW0gcHJvcGVydHkgdGhlbiBtYXBzIGl0IHRvIHVwZGF0ZSBVSS5cbiAgICBUaGlzIGFsc28gaW5kaWNhdGVzIHRoYXQgdGhlIGl0ZW0gd2FzIGRpcnRpZWQqL1xuICAgIFBheWxvYWRTb3VyY2VbUGF5bG9hZFNvdXJjZVtcIkxvY2FsQ2hhbmdlZFwiXSA9IDVdID0gXCJMb2NhbENoYW5nZWRcIjtcbiAgICAvKiogUGF5bG9hZHMgcmV0cmlldmVkIGZyb20gYW4gZXh0ZXJuYWxcbiAgICAgZXh0ZW5zaW9uL2NvbXBvbmVudCAqL1xuICAgIFBheWxvYWRTb3VyY2VbUGF5bG9hZFNvdXJjZVtcIkNvbXBvbmVudFJldHJpZXZlZFwiXSA9IDZdID0gXCJDb21wb25lbnRSZXRyaWV2ZWRcIjtcbiAgICAvKiogV2hlbiBhIGNvbXBvbmVudCBpcyBpbnN0YWxsZWQgYnkgdGhlIGRlc2t0b3BcbiAgICAgYW5kIHNvbWUgb2YgaXRzIHZhbHVlcyBjaGFuZ2UgKi9cbiAgICBQYXlsb2FkU291cmNlW1BheWxvYWRTb3VyY2VbXCJEZXNrdG9wSW5zdGFsbGVkXCJdID0gN10gPSBcIkRlc2t0b3BJbnN0YWxsZWRcIjtcbiAgICAvKiogYWNpdG9uLWJhc2VkIEV4dGVuc2lvbnMgbGlrZSBub3RlIGhpc3RvcnkgKi9cbiAgICBQYXlsb2FkU291cmNlW1BheWxvYWRTb3VyY2VbXCJSZW1vdGVBY3Rpb25SZXRyaWV2ZWRcIl0gPSA4XSA9IFwiUmVtb3RlQWN0aW9uUmV0cmlldmVkXCI7XG4gICAgUGF5bG9hZFNvdXJjZVtQYXlsb2FkU291cmNlW1wiRmlsZUltcG9ydFwiXSA9IDldID0gXCJGaWxlSW1wb3J0XCI7XG4gICAgUGF5bG9hZFNvdXJjZVtQYXlsb2FkU291cmNlW1wiUmVtb3RlQ29uZmxpY3RcIl0gPSAxMF0gPSBcIlJlbW90ZUNvbmZsaWN0XCI7XG4gICAgUGF5bG9hZFNvdXJjZVtQYXlsb2FkU291cmNlW1wiSW1wb3J0Q29uZmxpY3RcIl0gPSAxMV0gPSBcIkltcG9ydENvbmZsaWN0XCI7XG4gICAgLyoqIFBheWxvYWRzIHRoYXQgYXJlIHNhdmVkIG9yIHNhdmluZyBpbiB0aGVcbiAgICAgY3VycmVudCBzeW5jIHJlcXVlc3QgKi9cbiAgICBQYXlsb2FkU291cmNlW1BheWxvYWRTb3VyY2VbXCJTYXZlZE9yU2F2aW5nXCJdID0gMTJdID0gXCJTYXZlZE9yU2F2aW5nXCI7XG4gICAgLyoqIFBheWxvYWRzIHRoYXQgaGF2ZSBiZWVuIGRlY3J5cHRlZCBmb3IgdGhlIGNvbnZlbmllbmNlXG4gICAgIG9mIGNvbnN1bWVycyB3aG8gY2FuIG9ubHkgd29yayB3aXRoIGRlY3J5cHRlZCBmb3JtYXRzLiBUaGVcbiAgICAgZGVjcnlwdGVkIHBheWxvYWRzIGV4aXN0IGluIHRyYW5zaWVudCwgZXBoZW1lcmFsIHNwYWNlLCBhbmRcbiAgICAgYXJlIG5vdCB1c2VkIGluIGFueXdheS4gKi9cbiAgICBQYXlsb2FkU291cmNlW1BheWxvYWRTb3VyY2VbXCJEZWNyeXB0ZWRUcmFuc2llbnRcIl0gPSAxM10gPSBcIkRlY3J5cHRlZFRyYW5zaWVudFwiO1xuICAgIFBheWxvYWRTb3VyY2VbUGF5bG9hZFNvdXJjZVtcIkNvbmZsaWN0VXVpZFwiXSA9IDE0XSA9IFwiQ29uZmxpY3RVdWlkXCI7XG4gICAgUGF5bG9hZFNvdXJjZVtQYXlsb2FkU291cmNlW1wiQ29uZmxpY3REYXRhXCJdID0gMTVdID0gXCJDb25mbGljdERhdGFcIjtcbiAgICBQYXlsb2FkU291cmNlW1BheWxvYWRTb3VyY2VbXCJTZXNzaW9uSGlzdG9yeVwiXSA9IDE2XSA9IFwiU2Vzc2lvbkhpc3RvcnlcIjtcbiAgICAvKiogUGF5bG9hZHMgd2l0aCBhIHNvdXJjZSBvZiBDb25zdHJ1Y3RvciBtZWFucyB0aGF0IHRoZSBwYXlsb2FkIHdhcyBjcmVhdGVkXG4gICAgICogaW4gaXNvbGF0ZWQgc3BhY2UgYnkgdGhlIGNhbGxlciwgYW5kIGRvZXMgbm90IHlldCBoYXZlIGFueSBhcHAtcmVsYXRlZCBhZmZpbGlhdGlvbi4gKi9cbiAgICBQYXlsb2FkU291cmNlW1BheWxvYWRTb3VyY2VbXCJDb25zdHJ1Y3RvclwiXSA9IDE3XSA9IFwiQ29uc3RydWN0b3JcIjtcbiAgICAvKiogUGF5bG9hZHMgcmVjZWl2ZWQgZnJvbSBhbiBleHRlcm5hbCBjb21wb25lbnQgd2l0aCB0aGUgaW50ZW50aW9uIG9mIGNyZWF0aW5nIGEgbmV3IGl0ZW0gKi9cbiAgICBQYXlsb2FkU291cmNlW1BheWxvYWRTb3VyY2VbXCJDb21wb25lbnRDcmVhdGVkXCJdID0gMThdID0gXCJDb21wb25lbnRDcmVhdGVkXCI7XG4gICAgLyoqIFdoZW4gdGhlIHBheWxvYWRzIGFyZSBhYm91dCB0byBzeW5jLCB0aGV5IGFyZSBlbWl0dGVkIGJ5IHRoZSBzeW5jIHNlcnZpY2Ugd2l0aCB1cGRhdGVkXG4gICAgICogdmFsdWVzIG9mIGxhc3RTeW5jQmVnYW4uIFBheWxvYWRzIGVtaXR0ZWQgZnJvbSB0aGlzIHNvdXJjZSBpbmRpY2F0ZSB0aGF0IHRoZXNlIHBheWxvYWRzXG4gICAgICogaGF2ZSBiZWVuIHNhdmVkIHRvIGRpc2ssIGFuZCBhcmUgYWJvdXQgdG8gYmUgc3luY2VkICovXG4gICAgUGF5bG9hZFNvdXJjZVtQYXlsb2FkU291cmNlW1wiUHJlU3luY1NhdmVcIl0gPSAxOV0gPSBcIlByZVN5bmNTYXZlXCI7XG59KShQYXlsb2FkU291cmNlIHx8IChQYXlsb2FkU291cmNlID0ge30pKTtcbjtcbmV4cG9ydCBmdW5jdGlvbiBpc1BheWxvYWRTb3VyY2VSZXRyaWV2ZWQoc291cmNlKSB7XG4gICAgcmV0dXJuIFtcbiAgICAgICAgUGF5bG9hZFNvdXJjZS5SZW1vdGVSZXRyaWV2ZWQsXG4gICAgICAgIFBheWxvYWRTb3VyY2UuQ29tcG9uZW50UmV0cmlldmVkLFxuICAgICAgICBQYXlsb2FkU291cmNlLlJlbW90ZUFjdGlvblJldHJpZXZlZFxuICAgIF0uaW5jbHVkZXMoc291cmNlKTtcbn1cbiJdLCJtYXBwaW5ncyI6IkFBQUE7QUFBQTtBQUFBO0FBQUE7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7OztBQUVBO0FBQ0E7OztBQUVBO0FBQ0E7OztBQUVBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7OztBQUVBO0FBQ0E7Ozs7O0FBSUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7O0FBRUE7QUFDQTtBQUNBO0FBQUE7QUFDQTs7OztBQUdBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUtBIiwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./lib/protocol/payloads/sources.ts\n')},"./lib/protocol/root_key.ts":
|
||
/*!**********************************!*\
|
||
!*** ./lib/protocol/root_key.ts ***!
|
||
\**********************************/
|
||
/*! exports provided: SNRootKey */function(module,__webpack_exports__,__webpack_require__){"use strict";eval('__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "SNRootKey", function() { return SNRootKey; });\n/* harmony import */ var _babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @babel/runtime/regenerator */ "./node_modules/@babel/runtime/regenerator/index.js");\n/* harmony import */ var _babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var _Models_functions__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! @Models/functions */ "./lib/models/functions.ts");\n/* harmony import */ var _Payloads_generator__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! @Payloads/generator */ "./lib/protocol/payloads/generator.ts");\n/* harmony import */ var _Models_core_item__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! @Models/core/item */ "./lib/models/core/item.ts");\n/* harmony import */ var _Models_content_types__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! @Models/content_types */ "./lib/models/content_types.ts");\n/* harmony import */ var _Protocol_versions__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! @Protocol/versions */ "./lib/protocol/versions.ts");\n/* harmony import */ var _Lib_uuid__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! @Lib/uuid */ "./lib/uuid.ts");\n\n\nfunction _typeof(obj) { "@babel/helpers - typeof"; if (typeof Symbol === "function" && typeof Symbol.iterator === "symbol") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }; } return _typeof(obj); }\n\nfunction asyncGeneratorStep(gen, resolve, reject, _next, _throw, key, arg) { try { var info = gen[key](arg); var value = info.value; } catch (error) { reject(error); return; } if (info.done) { resolve(value); } else { Promise.resolve(value).then(_next, _throw); } }\n\nfunction _asyncToGenerator(fn) { return function () { var self = this, args = arguments; return new Promise(function (resolve, reject) { var gen = fn.apply(self, args); function _next(value) { asyncGeneratorStep(gen, resolve, reject, _next, _throw, "next", value); } function _throw(err) { asyncGeneratorStep(gen, resolve, reject, _next, _throw, "throw", err); } _next(undefined); }); }; }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } }\n\nfunction _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); } }\n\nfunction _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; }\n\nfunction _possibleConstructorReturn(self, call) { if (call && (_typeof(call) === "object" || typeof call === "function")) { return call; } return _assertThisInitialized(self); }\n\nfunction _assertThisInitialized(self) { if (self === void 0) { throw new ReferenceError("this hasn\'t been initialised - super() hasn\'t been called"); } return self; }\n\nfunction _getPrototypeOf(o) { _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function _getPrototypeOf(o) { return o.__proto__ || Object.getPrototypeOf(o); }; return _getPrototypeOf(o); }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== "function" && superClass !== null) { throw new TypeError("Super expression must either be null or a function"); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, writable: true, configurable: true } }); if (superClass) _setPrototypeOf(subClass, superClass); }\n\nfunction _setPrototypeOf(o, p) { _setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) { o.__proto__ = p; return o; }; return _setPrototypeOf(o, p); }\n\n\n\n\n\n\n\n/**\n * A root key is a local only construct that houses the key used for the encryption\n * and decryption of items keys. A root key extends SNItem for local convenience, but is\n * not part of the syncing or storage ecosystem—root keys are managed independently.\n */\n\nvar SNRootKey = /*#__PURE__*/function (_SNItem) {\n _inherits(SNRootKey, _SNItem);\n\n function SNRootKey() {\n _classCallCheck(this, SNRootKey);\n\n return _possibleConstructorReturn(this, _getPrototypeOf(SNRootKey).apply(this, arguments));\n }\n\n _createClass(SNRootKey, [{\n key: "compare",\n\n /**\n * Compares two keys for equality\n */\n value: function compare(otherKey) {\n if (this.version !== otherKey.version) {\n return false;\n }\n\n var hasServerPassword = this.serverPassword && otherKey.serverPassword;\n return this.masterKey === otherKey.masterKey && (!hasServerPassword || this.serverPassword === otherKey.serverPassword);\n }\n /**\n * @returns Object containg key/values that should be extracted from key for local saving.\n */\n\n }, {\n key: "getPersistableValue",\n value: function getPersistableValue() {\n var values = {\n version: this.version\n };\n\n if (this.masterKey) {\n values.masterKey = this.masterKey;\n }\n\n if (this.dataAuthenticationKey) {\n values.dataAuthenticationKey = this.dataAuthenticationKey;\n }\n\n return values;\n }\n }, {\n key: "version",\n get: function get() {\n if (!this.payload.safeContent.version) {\n throw \'Attempting to create key without version.\';\n }\n\n return this.payload.safeContent.version;\n }\n }, {\n key: "isRootKey",\n get: function get() {\n return true;\n }\n /**\n * When the root key is used to encrypt items, we use the masterKey directly.\n */\n\n }, {\n key: "itemsKey",\n get: function get() {\n return this.masterKey;\n }\n }, {\n key: "masterKey",\n get: function get() {\n return this.payload.safeContent.masterKey;\n }\n }, {\n key: "serverPassword",\n get: function get() {\n return this.payload.safeContent.serverPassword;\n }\n /** 003 and below only. */\n\n }, {\n key: "dataAuthenticationKey",\n get: function get() {\n return this.payload.safeContent.dataAuthenticationKey;\n }\n }], [{\n key: "Create",\n value: function () {\n var _Create = _asyncToGenerator( /*#__PURE__*/_babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0___default.a.mark(function _callee(content, uuid) {\n var payload;\n return _babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0___default.a.wrap(function _callee$(_context) {\n while (1) {\n switch (_context.prev = _context.next) {\n case 0:\n if (uuid) {\n _context.next = 4;\n break;\n }\n\n _context.next = 3;\n return _Lib_uuid__WEBPACK_IMPORTED_MODULE_6__["Uuid"].GenerateUuid();\n\n case 3:\n uuid = _context.sent;\n\n case 4:\n if (!content.version) {\n if (content.dataAuthenticationKey) {\n /**\n * If there\'s no version stored, it must be either 001 or 002.\n * If there\'s a dataAuthenticationKey, it has to be 002. Otherwise it\'s 001.\n */\n content.version = _Protocol_versions__WEBPACK_IMPORTED_MODULE_5__["ProtocolVersion"].V002;\n } else {\n content.version = _Protocol_versions__WEBPACK_IMPORTED_MODULE_5__["ProtocolVersion"].V001;\n }\n }\n\n payload = Object(_Payloads_generator__WEBPACK_IMPORTED_MODULE_2__["CreateMaxPayloadFromAnyObject"])({\n uuid: uuid,\n content_type: _Models_content_types__WEBPACK_IMPORTED_MODULE_4__["ContentType"].RootKey,\n content: Object(_Models_functions__WEBPACK_IMPORTED_MODULE_1__["FillItemContent"])(content)\n });\n return _context.abrupt("return", new SNRootKey(payload));\n\n case 7:\n case "end":\n return _context.stop();\n }\n }\n }, _callee);\n }));\n\n function Create(_x, _x2) {\n return _Create.apply(this, arguments);\n }\n\n return Create;\n }()\n }]);\n\n return SNRootKey;\n}(_Models_core_item__WEBPACK_IMPORTED_MODULE_3__["SNItem"]);//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9saWIvcHJvdG9jb2wvcm9vdF9rZXkudHMuanMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly9TTkxpYnJhcnkvLi9saWIvcHJvdG9jb2wvcm9vdF9rZXkudHM/OGE1YSJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBGaWxsSXRlbUNvbnRlbnQgfSBmcm9tICdATW9kZWxzL2Z1bmN0aW9ucyc7XG5pbXBvcnQgeyBDcmVhdGVNYXhQYXlsb2FkRnJvbUFueU9iamVjdCB9IGZyb20gJ0BQYXlsb2Fkcy9nZW5lcmF0b3InO1xuaW1wb3J0IHsgU05JdGVtIH0gZnJvbSAnQE1vZGVscy9jb3JlL2l0ZW0nO1xuaW1wb3J0IHsgQ29udGVudFR5cGUgfSBmcm9tICdATW9kZWxzL2NvbnRlbnRfdHlwZXMnO1xuaW1wb3J0IHsgUHJvdG9jb2xWZXJzaW9uIH0gZnJvbSAnQFByb3RvY29sL3ZlcnNpb25zJztcbmltcG9ydCB7IFV1aWQgfSBmcm9tICdATGliL3V1aWQnO1xuLyoqXG4gKiBBIHJvb3Qga2V5IGlzIGEgbG9jYWwgb25seSBjb25zdHJ1Y3QgdGhhdCBob3VzZXMgdGhlIGtleSB1c2VkIGZvciB0aGUgZW5jcnlwdGlvblxuICogYW5kIGRlY3J5cHRpb24gb2YgaXRlbXMga2V5cy4gQSByb290IGtleSBleHRlbmRzIFNOSXRlbSBmb3IgbG9jYWwgY29udmVuaWVuY2UsIGJ1dCBpc1xuICogbm90IHBhcnQgb2YgdGhlIHN5bmNpbmcgb3Igc3RvcmFnZSBlY29zeXN0ZW3igJRyb290IGtleXMgYXJlIG1hbmFnZWQgaW5kZXBlbmRlbnRseS5cbiAqL1xuZXhwb3J0IGNsYXNzIFNOUm9vdEtleSBleHRlbmRzIFNOSXRlbSB7XG4gICAgc3RhdGljIGFzeW5jIENyZWF0ZShjb250ZW50LCB1dWlkKSB7XG4gICAgICAgIGlmICghdXVpZCkge1xuICAgICAgICAgICAgdXVpZCA9IGF3YWl0IFV1aWQuR2VuZXJhdGVVdWlkKCk7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKCFjb250ZW50LnZlcnNpb24pIHtcbiAgICAgICAgICAgIGlmIChjb250ZW50LmRhdGFBdXRoZW50aWNhdGlvbktleSkge1xuICAgICAgICAgICAgICAgIC8qKlxuICAgICAgICAgICAgICAgICAqIElmIHRoZXJlJ3Mgbm8gdmVyc2lvbiBzdG9yZWQsIGl0IG11c3QgYmUgZWl0aGVyIDAwMSBvciAwMDIuXG4gICAgICAgICAgICAgICAgICogSWYgdGhlcmUncyBhIGRhdGFBdXRoZW50aWNhdGlvbktleSwgaXQgaGFzIHRvIGJlIDAwMi4gT3RoZXJ3aXNlIGl0J3MgMDAxLlxuICAgICAgICAgICAgICAgICAqL1xuICAgICAgICAgICAgICAgIGNvbnRlbnQudmVyc2lvbiA9IFByb3RvY29sVmVyc2lvbi5WMDAyO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICAgICAgY29udGVudC52ZXJzaW9uID0gUHJvdG9jb2xWZXJzaW9uLlYwMDE7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgY29uc3QgcGF5bG9hZCA9IENyZWF0ZU1heFBheWxvYWRGcm9tQW55T2JqZWN0KHtcbiAgICAgICAgICAgIHV1aWQ6IHV1aWQsXG4gICAgICAgICAgICBjb250ZW50X3R5cGU6IENvbnRlbnRUeXBlLlJvb3RLZXksXG4gICAgICAgICAgICBjb250ZW50OiBGaWxsSXRlbUNvbnRlbnQoY29udGVudClcbiAgICAgICAgfSk7XG4gICAgICAgIHJldHVybiBuZXcgU05Sb290S2V5KHBheWxvYWQpO1xuICAgIH1cbiAgICBnZXQgdmVyc2lvbigpIHtcbiAgICAgICAgaWYgKCF0aGlzLnBheWxvYWQuc2FmZUNvbnRlbnQudmVyc2lvbikge1xuICAgICAgICAgICAgdGhyb3cgJ0F0dGVtcHRpbmcgdG8gY3JlYXRlIGtleSB3aXRob3V0IHZlcnNpb24uJztcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gdGhpcy5wYXlsb2FkLnNhZmVDb250ZW50LnZlcnNpb247XG4gICAgfVxuICAgIGdldCBpc1Jvb3RLZXkoKSB7XG4gICAgICAgIHJldHVybiB0cnVlO1xuICAgIH1cbiAgICAvKipcbiAgICAgKiBXaGVuIHRoZSByb290IGtleSBpcyB1c2VkIHRvIGVuY3J5cHQgaXRlbXMsIHdlIHVzZSB0aGUgbWFzdGVyS2V5IGRpcmVjdGx5LlxuICAgICAqL1xuICAgIGdldCBpdGVtc0tleSgpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMubWFzdGVyS2V5O1xuICAgIH1cbiAgICBnZXQgbWFzdGVyS2V5KCkge1xuICAgICAgICByZXR1cm4gdGhpcy5wYXlsb2FkLnNhZmVDb250ZW50Lm1hc3RlcktleTtcbiAgICB9XG4gICAgZ2V0IHNlcnZlclBhc3N3b3JkKCkge1xuICAgICAgICByZXR1cm4gdGhpcy5wYXlsb2FkLnNhZmVDb250ZW50LnNlcnZlclBhc3N3b3JkO1xuICAgIH1cbiAgICAvKiogMDAzIGFuZCBiZWxvdyBvbmx5LiAqL1xuICAgIGdldCBkYXRhQXV0aGVudGljYXRpb25LZXkoKSB7XG4gICAgICAgIHJldHVybiB0aGlzLnBheWxvYWQuc2FmZUNvbnRlbnQuZGF0YUF1dGhlbnRpY2F0aW9uS2V5O1xuICAgIH1cbiAgICAvKipcbiAgICAgKiBDb21wYXJlcyB0d28ga2V5cyBmb3IgZXF1YWxpdHlcbiAgICAgKi9cbiAgICBjb21wYXJlKG90aGVyS2V5KSB7XG4gICAgICAgIGlmICh0aGlzLnZlcnNpb24gIT09IG90aGVyS2V5LnZlcnNpb24pIHtcbiAgICAgICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgICAgfVxuICAgICAgICBjb25zdCBoYXNTZXJ2ZXJQYXNzd29yZCA9IHRoaXMuc2VydmVyUGFzc3dvcmQgJiYgb3RoZXJLZXkuc2VydmVyUGFzc3dvcmQ7XG4gICAgICAgIHJldHVybiAodGhpcy5tYXN0ZXJLZXkgPT09IG90aGVyS2V5Lm1hc3RlcktleSAmJlxuICAgICAgICAgICAgKCFoYXNTZXJ2ZXJQYXNzd29yZCB8fCB0aGlzLnNlcnZlclBhc3N3b3JkID09PSBvdGhlcktleS5zZXJ2ZXJQYXNzd29yZCkpO1xuICAgIH1cbiAgICAvKipcbiAgICAgKiBAcmV0dXJucyBPYmplY3QgY29udGFpbmcga2V5L3ZhbHVlcyB0aGF0IHNob3VsZCBiZSBleHRyYWN0ZWQgZnJvbSBrZXkgZm9yIGxvY2FsIHNhdmluZy5cbiAgICAgKi9cbiAgICBnZXRQZXJzaXN0YWJsZVZhbHVlKCkge1xuICAgICAgICBjb25zdCB2YWx1ZXMgPSB7XG4gICAgICAgICAgICB2ZXJzaW9uOiB0aGlzLnZlcnNpb25cbiAgICAgICAgfTtcbiAgICAgICAgaWYgKHRoaXMubWFzdGVyS2V5KSB7XG4gICAgICAgICAgICB2YWx1ZXMubWFzdGVyS2V5ID0gdGhpcy5tYXN0ZXJLZXk7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKHRoaXMuZGF0YUF1dGhlbnRpY2F0aW9uS2V5KSB7XG4gICAgICAgICAgICB2YWx1ZXMuZGF0YUF1dGhlbnRpY2F0aW9uS2V5ID0gdGhpcy5kYXRhQXV0aGVudGljYXRpb25LZXk7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHZhbHVlcztcbiAgICB9XG59XG4iXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7Ozs7O0FBS0E7QUFBQTtBQUNBO0FBREE7QUFBQTtBQUNBO0FBREE7QUFBQTtBQUNBO0FBREE7QUFBQTtBQUNBO0FBZ0RBOzs7QUFqREE7QUFxREE7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBRUE7QUFDQTs7OztBQTVEQTtBQUFBO0FBQUE7QUFnRUE7QUFDQTtBQURBO0FBQ0E7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQTFFQTtBQUFBO0FBQUE7QUF5QkE7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBN0JBO0FBQUE7QUFBQTtBQStCQTtBQUNBO0FBQ0E7Ozs7QUFqQ0E7QUFBQTtBQUFBO0FBcUNBO0FBQ0E7QUF0Q0E7QUFBQTtBQUFBO0FBd0NBO0FBQ0E7QUF6Q0E7QUFBQTtBQUFBO0FBMkNBO0FBQ0E7QUFDQTtBQUNBO0FBOUNBO0FBQUE7QUFBQTtBQStDQTtBQUNBO0FBaERBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQ0E7QUFEQTtBQUFBO0FBQ0E7QUFEQTtBQUdBO0FBQ0E7QUFKQTtBQUtBO0FBQ0E7QUFDQTs7OztBQUlBO0FBQ0E7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBSEE7QUFqQkE7QUFDQTtBQURBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQ0E7QUFEQTtBQUFBO0FBQUE7QUFDQTtBQURBO0FBQUE7QUFBQTtBQUNBO0FBREE7QUFBQSIsInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./lib/protocol/root_key.ts\n')},"./lib/protocol/versions.ts":
|
||
/*!**********************************!*\
|
||
!*** ./lib/protocol/versions.ts ***!
|
||
\**********************************/
|
||
/*! exports provided: ProtocolVersion, compareVersions */function(module,__webpack_exports__,__webpack_require__){"use strict";eval('__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "ProtocolVersion", function() { return ProtocolVersion; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "compareVersions", function() { return compareVersions; });\nvar ProtocolVersion;\n\n(function (ProtocolVersion) {\n ProtocolVersion["V000Base64Decrypted"] = "000";\n ProtocolVersion["V001"] = "001";\n ProtocolVersion["V002"] = "002";\n ProtocolVersion["V003"] = "003";\n ProtocolVersion["V004"] = "004";\n ProtocolVersion[ProtocolVersion["VersionLength"] = 3] = "VersionLength";\n})(ProtocolVersion || (ProtocolVersion = {}));\n\n;\n/**\n * -1 if a < b\n * 0 if a == b\n * 1 is a > b\n */\n\nfunction compareVersions(a, b) {\n var aNum = Number(a);\n var bNum = Number(b);\n return aNum - bNum;\n}//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9saWIvcHJvdG9jb2wvdmVyc2lvbnMudHMuanMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly9TTkxpYnJhcnkvLi9saWIvcHJvdG9jb2wvdmVyc2lvbnMudHM/NmNlMiJdLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgdmFyIFByb3RvY29sVmVyc2lvbjtcbihmdW5jdGlvbiAoUHJvdG9jb2xWZXJzaW9uKSB7XG4gICAgUHJvdG9jb2xWZXJzaW9uW1wiVjAwMEJhc2U2NERlY3J5cHRlZFwiXSA9IFwiMDAwXCI7XG4gICAgUHJvdG9jb2xWZXJzaW9uW1wiVjAwMVwiXSA9IFwiMDAxXCI7XG4gICAgUHJvdG9jb2xWZXJzaW9uW1wiVjAwMlwiXSA9IFwiMDAyXCI7XG4gICAgUHJvdG9jb2xWZXJzaW9uW1wiVjAwM1wiXSA9IFwiMDAzXCI7XG4gICAgUHJvdG9jb2xWZXJzaW9uW1wiVjAwNFwiXSA9IFwiMDA0XCI7XG4gICAgUHJvdG9jb2xWZXJzaW9uW1Byb3RvY29sVmVyc2lvbltcIlZlcnNpb25MZW5ndGhcIl0gPSAzXSA9IFwiVmVyc2lvbkxlbmd0aFwiO1xufSkoUHJvdG9jb2xWZXJzaW9uIHx8IChQcm90b2NvbFZlcnNpb24gPSB7fSkpO1xuO1xuLyoqXG4gKiAgLTEgaWYgYSA8IGJcbiAqICAwIGlmIGEgPT0gYlxuICogIDEgaXMgYSA+IGJcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGNvbXBhcmVWZXJzaW9ucyhhLCBiKSB7XG4gICAgY29uc3QgYU51bSA9IE51bWJlcihhKTtcbiAgICBjb25zdCBiTnVtID0gTnVtYmVyKGIpO1xuICAgIHJldHVybiBhTnVtIC0gYk51bTtcbn1cbiJdLCJtYXBwaW5ncyI6IkFBQUE7QUFBQTtBQUFBO0FBQUE7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7Ozs7OztBQUtBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EiLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./lib/protocol/versions.ts\n')},"./lib/services/actions_service.ts":
|
||
/*!*****************************************!*\
|
||
!*** ./lib/services/actions_service.ts ***!
|
||
\*****************************************/
|
||
/*! exports provided: SNActionsService */function(module,__webpack_exports__,__webpack_require__){"use strict";eval('__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "SNActionsService", function() { return SNActionsService; });\n/* harmony import */ var _babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @babel/runtime/regenerator */ "./node_modules/@babel/runtime/regenerator/index.js");\n/* harmony import */ var _babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var _models_app_action__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./../models/app/action */ "./lib/models/app/action.ts");\n/* harmony import */ var _models_content_types__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./../models/content_types */ "./lib/models/content_types.ts");\n/* harmony import */ var _Payloads_sources__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! @Payloads/sources */ "./lib/protocol/payloads/sources.ts");\n/* harmony import */ var _Protocol_intents__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! @Protocol/intents */ "./lib/protocol/intents.ts");\n/* harmony import */ var _Lib_services_pure_service__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! @Lib/services/pure_service */ "./lib/services/pure_service.ts");\n/* harmony import */ var _Payloads_generator__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! @Payloads/generator */ "./lib/protocol/payloads/generator.ts");\n\n\nfunction _typeof(obj) { "@babel/helpers - typeof"; if (typeof Symbol === "function" && typeof Symbol.iterator === "symbol") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }; } return _typeof(obj); }\n\nfunction asyncGeneratorStep(gen, resolve, reject, _next, _throw, key, arg) { try { var info = gen[key](arg); var value = info.value; } catch (error) { reject(error); return; } if (info.done) { resolve(value); } else { Promise.resolve(value).then(_next, _throw); } }\n\nfunction _asyncToGenerator(fn) { return function () { var self = this, args = arguments; return new Promise(function (resolve, reject) { var gen = fn.apply(self, args); function _next(value) { asyncGeneratorStep(gen, resolve, reject, _next, _throw, "next", value); } function _throw(err) { asyncGeneratorStep(gen, resolve, reject, _next, _throw, "throw", err); } _next(undefined); }); }; }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } }\n\nfunction _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); } }\n\nfunction _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; }\n\nfunction _possibleConstructorReturn(self, call) { if (call && (_typeof(call) === "object" || typeof call === "function")) { return call; } return _assertThisInitialized(self); }\n\nfunction _assertThisInitialized(self) { if (self === void 0) { throw new ReferenceError("this hasn\'t been initialised - super() hasn\'t been called"); } return self; }\n\nfunction _get(target, property, receiver) { if (typeof Reflect !== "undefined" && Reflect.get) { _get = Reflect.get; } else { _get = function _get(target, property, receiver) { var base = _superPropBase(target, property); if (!base) return; var desc = Object.getOwnPropertyDescriptor(base, property); if (desc.get) { return desc.get.call(receiver); } return desc.value; }; } return _get(target, property, receiver || target); }\n\nfunction _superPropBase(object, property) { while (!Object.prototype.hasOwnProperty.call(object, property)) { object = _getPrototypeOf(object); if (object === null) break; } return object; }\n\nfunction _getPrototypeOf(o) { _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function _getPrototypeOf(o) { return o.__proto__ || Object.getPrototypeOf(o); }; return _getPrototypeOf(o); }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== "function" && superClass !== null) { throw new TypeError("Super expression must either be null or a function"); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, writable: true, configurable: true } }); if (superClass) _setPrototypeOf(subClass, superClass); }\n\nfunction _setPrototypeOf(o, p) { _setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) { o.__proto__ = p; return o; }; return _setPrototypeOf(o, p); }\n\n\n\n\n\n\n\n/**\n * The Actions Service allows clients to interact with action-based extensions.\n * Action-based extensions are mostly RESTful actions that can push a local value or\n * retrieve a remote value and act on it accordingly.\n * There are 4 action types:\n * `get`: performs a GET request on an endpoint to retrieve an item value, and merges the\n * value onto the local item value. For example, you can GET an item\'s older revision\n * value and replace the current value with the revision.\n * `render`: performs a GET request, and displays the result in the UI. This action does not\n * affect data unless action is taken explicitely in the UI after the data is presented.\n * `show`: opens the action\'s URL in a browser.\n * `post`: sends an item\'s data to a remote service. This is used for example by Listed\n * to allow publishing a note to a user\'s blog.\n */\n\nvar SNActionsService = /*#__PURE__*/function (_PureService) {\n _inherits(SNActionsService, _PureService);\n\n function SNActionsService(itemManager, alertService, deviceInterface, httpService, modelManager, protocolService, syncService) {\n var _this;\n\n _classCallCheck(this, SNActionsService);\n\n _this = _possibleConstructorReturn(this, _getPrototypeOf(SNActionsService).call(this));\n _this.previousPasswords = [];\n _this.itemManager = itemManager;\n _this.alertService = alertService;\n _this.deviceInterface = deviceInterface;\n _this.httpService = httpService;\n _this.modelManager = modelManager;\n _this.protocolService = protocolService;\n _this.syncService = syncService;\n _this.previousPasswords = [];\n return _this;\n }\n /** @override */\n\n\n _createClass(SNActionsService, [{\n key: "deinit",\n value: function deinit() {\n this.itemManager = undefined;\n this.alertService = undefined;\n this.deviceInterface = undefined;\n this.httpService = undefined;\n this.modelManager = undefined;\n this.protocolService = undefined;\n this.syncService = undefined;\n this.previousPasswords.length = 0;\n\n _get(_getPrototypeOf(SNActionsService.prototype), "deinit", this).call(this);\n }\n }, {\n key: "getExtensions",\n value: function getExtensions() {\n return this.itemManager.nonErroredItemsForContentType(_models_content_types__WEBPACK_IMPORTED_MODULE_2__["ContentType"].ActionsExtension);\n }\n }, {\n key: "extensionsInContextOfItem",\n value: function extensionsInContextOfItem(item) {\n return this.getExtensions().filter(function (ext) {\n return ext.supported_types.includes(item.content_type) || ext.actionsWithContextForItem(item).length > 0;\n });\n }\n /**\n * Loads an extension in the context of a certain item.\n * The server then has the chance to respond with actions that are\n * relevant just to this item. The response extension is not saved,\n * just displayed as a one-time thing.\n */\n\n }, {\n key: "loadExtensionInContextOfItem",\n value: function () {\n var _loadExtensionInContextOfItem = _asyncToGenerator( /*#__PURE__*/_babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0___default.a.mark(function _callee(extension, item) {\n var _this2 = this;\n\n var params;\n return _babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0___default.a.wrap(function _callee$(_context) {\n while (1) {\n switch (_context.prev = _context.next) {\n case 0:\n params = {\n content_type: item.content_type,\n item_uuid: item.uuid\n };\n return _context.abrupt("return", this.httpService.getAbsolute(extension.url, params).then(function (response) {\n var description = response.description || extension.description;\n var supported_types = response.supported_types || extension.supported_types;\n var actions = response.actions ? response.actions.map(function (action) {\n return new _models_app_action__WEBPACK_IMPORTED_MODULE_1__["Action"](action);\n }) : [];\n\n _this2.itemManager.changeActionsExtension(extension.uuid, function (mutator) {\n mutator.description = description;\n mutator.supported_types = supported_types;\n mutator.actions = actions;\n });\n\n return extension;\n }).catch(function (response) {\n console.error(\'Error loading extension\', response);\n return null;\n }));\n\n case 2:\n case "end":\n return _context.stop();\n }\n }\n }, _callee, this);\n }));\n\n function loadExtensionInContextOfItem(_x, _x2) {\n return _loadExtensionInContextOfItem.apply(this, arguments);\n }\n\n return loadExtensionInContextOfItem;\n }()\n }, {\n key: "runAction",\n value: function () {\n var _runAction = _asyncToGenerator( /*#__PURE__*/_babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0___default.a.mark(function _callee2(action, item, passwordRequestHandler) {\n var result;\n return _babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0___default.a.wrap(function _callee2$(_context2) {\n while (1) {\n switch (_context2.prev = _context2.next) {\n case 0:\n action.running = true;\n _context2.t0 = action.verb;\n _context2.next = _context2.t0 === \'get\' ? 4 : _context2.t0 === \'render\' ? 8 : _context2.t0 === \'show\' ? 12 : _context2.t0 === \'post\' ? 16 : 20;\n break;\n\n case 4:\n _context2.next = 6;\n return this.handleGetAction(action, passwordRequestHandler);\n\n case 6:\n result = _context2.sent;\n return _context2.abrupt("break", 21);\n\n case 8:\n _context2.next = 10;\n return this.handleRenderAction(action, passwordRequestHandler);\n\n case 10:\n result = _context2.sent;\n return _context2.abrupt("break", 21);\n\n case 12:\n _context2.next = 14;\n return this.handleShowAction(action);\n\n case 14:\n result = _context2.sent;\n return _context2.abrupt("break", 21);\n\n case 16:\n _context2.next = 18;\n return this.handlePostAction(action, item);\n\n case 18:\n result = _context2.sent;\n return _context2.abrupt("break", 21);\n\n case 20:\n return _context2.abrupt("break", 21);\n\n case 21:\n action.lastExecuted = new Date();\n action.running = false;\n return _context2.abrupt("return", result);\n\n case 24:\n case "end":\n return _context2.stop();\n }\n }\n }, _callee2, this);\n }));\n\n function runAction(_x3, _x4, _x5) {\n return _runAction.apply(this, arguments);\n }\n\n return runAction;\n }()\n }, {\n key: "handleGetAction",\n value: function () {\n var _handleGetAction = _asyncToGenerator( /*#__PURE__*/_babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0___default.a.mark(function _callee3(action, passwordRequestHandler) {\n var _this3 = this;\n\n return _babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0___default.a.wrap(function _callee3$(_context3) {\n while (1) {\n switch (_context3.prev = _context3.next) {\n case 0:\n return _context3.abrupt("return", new Promise(function (resolve) {\n _this3.alertService.confirm("Are you sure you want to replace the current note contents with this action\'s results?", undefined, undefined, undefined, function () {\n _this3.runConfirmedGetAction(action, passwordRequestHandler).then(function (response) {\n resolve(response);\n });\n });\n }));\n\n case 1:\n case "end":\n return _context3.stop();\n }\n }\n }, _callee3);\n }));\n\n function handleGetAction(_x6, _x7) {\n return _handleGetAction.apply(this, arguments);\n }\n\n return handleGetAction;\n }()\n }, {\n key: "runConfirmedGetAction",\n value: function () {\n var _runConfirmedGetAction = _asyncToGenerator( /*#__PURE__*/_babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0___default.a.mark(function _callee4(action, passwordRequestHandler) {\n var _this4 = this;\n\n var response, payload;\n return _babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0___default.a.wrap(function _callee4$(_context4) {\n while (1) {\n switch (_context4.prev = _context4.next) {\n case 0:\n _context4.next = 2;\n return this.httpService.getAbsolute(action.url).catch(function (response) {\n var error = response && response.error || {\n message: \'An issue occurred while processing this action. Please try again.\'\n };\n\n _this4.alertService.alert(error.message);\n\n action.error = true;\n return {\n error: error\n };\n });\n\n case 2:\n response = _context4.sent;\n\n if (!response.error) {\n _context4.next = 5;\n break;\n }\n\n return _context4.abrupt("return", {\n response: response\n });\n\n case 5:\n action.error = false;\n _context4.next = 8;\n return this.payloadByDecryptingResponse(response, passwordRequestHandler);\n\n case 8:\n payload = _context4.sent;\n _context4.next = 11;\n return this.modelManager.emitPayload(Object(_Payloads_generator__WEBPACK_IMPORTED_MODULE_6__["CopyPayload"])(payload, {\n dirty: true,\n dirtiedDate: new Date()\n }), _Payloads_sources__WEBPACK_IMPORTED_MODULE_3__["PayloadSource"].RemoteActionRetrieved);\n\n case 11:\n this.syncService.sync();\n return _context4.abrupt("return", {\n response: response,\n item: response.item\n });\n\n case 13:\n case "end":\n return _context4.stop();\n }\n }\n }, _callee4, this);\n }));\n\n function runConfirmedGetAction(_x8, _x9) {\n return _runConfirmedGetAction.apply(this, arguments);\n }\n\n return runConfirmedGetAction;\n }()\n }, {\n key: "handleRenderAction",\n value: function () {\n var _handleRenderAction = _asyncToGenerator( /*#__PURE__*/_babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0___default.a.mark(function _callee6(action, passwordRequestHandler) {\n var _this5 = this;\n\n var response;\n return _babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0___default.a.wrap(function _callee6$(_context6) {\n while (1) {\n switch (_context6.prev = _context6.next) {\n case 0:\n _context6.next = 2;\n return this.httpService.getAbsolute(action.url).then( /*#__PURE__*/function () {\n var _ref = _asyncToGenerator( /*#__PURE__*/_babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0___default.a.mark(function _callee5(response) {\n var payload, item;\n return _babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0___default.a.wrap(function _callee5$(_context5) {\n while (1) {\n switch (_context5.prev = _context5.next) {\n case 0:\n action.error = false;\n _context5.next = 3;\n return _this5.payloadByDecryptingResponse(response, passwordRequestHandler);\n\n case 3:\n payload = _context5.sent;\n\n if (!payload) {\n _context5.next = 7;\n break;\n }\n\n item = _this5.itemManager.createItem(payload.content_type, payload.contentObject);\n return _context5.abrupt("return", {\n response: response,\n item: item\n });\n\n case 7:\n case "end":\n return _context5.stop();\n }\n }\n }, _callee5);\n }));\n\n return function (_x12) {\n return _ref.apply(this, arguments);\n };\n }()).catch(function (response) {\n var error = response && response.error || {\n message: \'An issue occurred while processing this action. Please try again.\'\n };\n\n _this5.alertService.alert(error.message);\n\n action.error = true;\n return {\n error: error\n };\n });\n\n case 2:\n response = _context6.sent;\n return _context6.abrupt("return", {\n response: response\n });\n\n case 4:\n case "end":\n return _context6.stop();\n }\n }\n }, _callee6, this);\n }));\n\n function handleRenderAction(_x10, _x11) {\n return _handleRenderAction.apply(this, arguments);\n }\n\n return handleRenderAction;\n }()\n }, {\n key: "payloadByDecryptingResponse",\n value: function () {\n var _payloadByDecryptingResponse = _asyncToGenerator( /*#__PURE__*/_babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0___default.a.mark(function _callee7(response, passwordRequestHandler, key) {\n var payload, decryptedPayload, triedPasswords, _iteratorNormalCompletion, _didIteratorError, _iteratorError, _iterator, _step, passwordCandidate, _key, nestedResponse, password;\n\n return _babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0___default.a.wrap(function _callee7$(_context7) {\n while (1) {\n switch (_context7.prev = _context7.next) {\n case 0:\n payload = Object(_Payloads_generator__WEBPACK_IMPORTED_MODULE_6__["CreateMaxPayloadFromAnyObject"])(response.item);\n _context7.next = 3;\n return this.protocolService.payloadByDecryptingPayload(payload, key);\n\n case 3:\n decryptedPayload = _context7.sent;\n\n if (decryptedPayload.errorDecrypting) {\n _context7.next = 6;\n break;\n }\n\n return _context7.abrupt("return", decryptedPayload);\n\n case 6:\n if (response.auth_params) {\n _context7.next = 9;\n break;\n }\n\n /**\n * In some cases revisions were missing auth params.\n * Instruct the user to email us to get this remedied.\n */\n this.alertService.alert("We were unable to decrypt this revision using your current keys, \\n and this revision is missing metadata that would allow us to try different \\n keys to decrypt it. This can likely be fixed with some manual intervention. \\n Please email hello@standardnotes.org for assistance.");\n return _context7.abrupt("return", undefined);\n\n case 9:\n /* Try previous passwords */\n triedPasswords = [];\n _iteratorNormalCompletion = true;\n _didIteratorError = false;\n _iteratorError = undefined;\n _context7.prev = 13;\n _iterator = this.previousPasswords[Symbol.iterator]();\n\n case 15:\n if (_iteratorNormalCompletion = (_step = _iterator.next()).done) {\n _context7.next = 33;\n break;\n }\n\n passwordCandidate = _step.value;\n\n if (!triedPasswords.includes(passwordCandidate)) {\n _context7.next = 19;\n break;\n }\n\n return _context7.abrupt("continue", 30);\n\n case 19:\n triedPasswords.push(passwordCandidate);\n _context7.next = 22;\n return this.protocolService.computeRootKey(passwordCandidate, response.auth_params);\n\n case 22:\n _key = _context7.sent;\n\n if (_key) {\n _context7.next = 25;\n break;\n }\n\n return _context7.abrupt("continue", 30);\n\n case 25:\n _context7.next = 27;\n return this.payloadByDecryptingResponse(response, passwordRequestHandler, _key);\n\n case 27:\n nestedResponse = _context7.sent;\n\n if (!nestedResponse) {\n _context7.next = 30;\n break;\n }\n\n return _context7.abrupt("return", nestedResponse);\n\n case 30:\n _iteratorNormalCompletion = true;\n _context7.next = 15;\n break;\n\n case 33:\n _context7.next = 39;\n break;\n\n case 35:\n _context7.prev = 35;\n _context7.t0 = _context7["catch"](13);\n _didIteratorError = true;\n _iteratorError = _context7.t0;\n\n case 39:\n _context7.prev = 39;\n _context7.prev = 40;\n\n if (!_iteratorNormalCompletion && _iterator.return != null) {\n _iterator.return();\n }\n\n case 42:\n _context7.prev = 42;\n\n if (!_didIteratorError) {\n _context7.next = 45;\n break;\n }\n\n throw _iteratorError;\n\n case 45:\n return _context7.finish(42);\n\n case 46:\n return _context7.finish(39);\n\n case 47:\n _context7.next = 49;\n return passwordRequestHandler();\n\n case 49:\n password = _context7.sent;\n this.previousPasswords.push(password);\n return _context7.abrupt("return", this.payloadByDecryptingResponse(response, passwordRequestHandler, key));\n\n case 52:\n case "end":\n return _context7.stop();\n }\n }\n }, _callee7, this, [[13, 35, 39, 47], [40,, 42, 46]]);\n }));\n\n function payloadByDecryptingResponse(_x13, _x14, _x15) {\n return _payloadByDecryptingResponse.apply(this, arguments);\n }\n\n return payloadByDecryptingResponse;\n }()\n }, {\n key: "handlePostAction",\n value: function () {\n var _handlePostAction = _asyncToGenerator( /*#__PURE__*/_babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0___default.a.mark(function _callee8(action, item) {\n var _this6 = this;\n\n var decrypted, itemParams, params;\n return _babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0___default.a.wrap(function _callee8$(_context8) {\n while (1) {\n switch (_context8.prev = _context8.next) {\n case 0:\n decrypted = action.access_type === \'decrypted\';\n _context8.next = 3;\n return this.outgoingPayloadForItem(item, decrypted);\n\n case 3:\n itemParams = _context8.sent;\n params = {\n items: [itemParams]\n };\n return _context8.abrupt("return", this.httpService.postAbsolute(action.url, params).then(function (response) {\n action.error = false;\n return {\n response: response\n };\n }).catch(function (response) {\n action.error = true;\n console.error(\'Action error response:\', response);\n\n _this6.alertService.alert(\'An issue occurred while processing this action. Please try again.\');\n\n return {\n response: response\n };\n }));\n\n case 6:\n case "end":\n return _context8.stop();\n }\n }\n }, _callee8, this);\n }));\n\n function handlePostAction(_x16, _x17) {\n return _handlePostAction.apply(this, arguments);\n }\n\n return handlePostAction;\n }()\n }, {\n key: "handleShowAction",\n value: function () {\n var _handleShowAction = _asyncToGenerator( /*#__PURE__*/_babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0___default.a.mark(function _callee9(action) {\n return _babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0___default.a.wrap(function _callee9$(_context9) {\n while (1) {\n switch (_context9.prev = _context9.next) {\n case 0:\n this.deviceInterface.openUrl(action.url);\n return _context9.abrupt("return", {\n response: undefined\n });\n\n case 2:\n case "end":\n return _context9.stop();\n }\n }\n }, _callee9, this);\n }));\n\n function handleShowAction(_x18) {\n return _handleShowAction.apply(this, arguments);\n }\n\n return handleShowAction;\n }()\n }, {\n key: "outgoingPayloadForItem",\n value: function () {\n var _outgoingPayloadForItem = _asyncToGenerator( /*#__PURE__*/_babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0___default.a.mark(function _callee10(item) {\n var decrypted,\n intent,\n encrypted,\n _args10 = arguments;\n return _babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0___default.a.wrap(function _callee10$(_context10) {\n while (1) {\n switch (_context10.prev = _context10.next) {\n case 0:\n decrypted = _args10.length > 1 && _args10[1] !== undefined ? _args10[1] : false;\n intent = decrypted ? _Protocol_intents__WEBPACK_IMPORTED_MODULE_4__["EncryptionIntent"].FileDecrypted : _Protocol_intents__WEBPACK_IMPORTED_MODULE_4__["EncryptionIntent"].FileEncrypted;\n _context10.next = 4;\n return this.protocolService.payloadByEncryptingPayload(item.payloadRepresentation(), intent);\n\n case 4:\n encrypted = _context10.sent;\n return _context10.abrupt("return", encrypted.ejected());\n\n case 6:\n case "end":\n return _context10.stop();\n }\n }\n }, _callee10, this);\n }));\n\n function outgoingPayloadForItem(_x19) {\n return _outgoingPayloadForItem.apply(this, arguments);\n }\n\n return outgoingPayloadForItem;\n }()\n }]);\n\n return SNActionsService;\n}(_Lib_services_pure_service__WEBPACK_IMPORTED_MODULE_5__["PureService"]);//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9saWIvc2VydmljZXMvYWN0aW9uc19zZXJ2aWNlLnRzLmpzIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vU05MaWJyYXJ5Ly4vbGliL3NlcnZpY2VzL2FjdGlvbnNfc2VydmljZS50cz8wNDJmIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEFjdGlvbiB9IGZyb20gJy4vLi4vbW9kZWxzL2FwcC9hY3Rpb24nO1xuaW1wb3J0IHsgQ29udGVudFR5cGUgfSBmcm9tICcuLy4uL21vZGVscy9jb250ZW50X3R5cGVzJztcbmltcG9ydCB7IFBheWxvYWRTb3VyY2UgfSBmcm9tICdAUGF5bG9hZHMvc291cmNlcyc7XG5pbXBvcnQgeyBFbmNyeXB0aW9uSW50ZW50IH0gZnJvbSAnQFByb3RvY29sL2ludGVudHMnO1xuaW1wb3J0IHsgUHVyZVNlcnZpY2UgfSBmcm9tICdATGliL3NlcnZpY2VzL3B1cmVfc2VydmljZSc7XG5pbXBvcnQgeyBDb3B5UGF5bG9hZCwgQ3JlYXRlTWF4UGF5bG9hZEZyb21BbnlPYmplY3QgfSBmcm9tICdAUGF5bG9hZHMvZ2VuZXJhdG9yJztcbi8qKlxuICogVGhlIEFjdGlvbnMgU2VydmljZSBhbGxvd3MgY2xpZW50cyB0byBpbnRlcmFjdCB3aXRoIGFjdGlvbi1iYXNlZCBleHRlbnNpb25zLlxuICogQWN0aW9uLWJhc2VkIGV4dGVuc2lvbnMgYXJlIG1vc3RseSBSRVNUZnVsIGFjdGlvbnMgdGhhdCBjYW4gcHVzaCBhIGxvY2FsIHZhbHVlIG9yXG4gKiByZXRyaWV2ZSBhIHJlbW90ZSB2YWx1ZSBhbmQgYWN0IG9uIGl0IGFjY29yZGluZ2x5LlxuICogVGhlcmUgYXJlIDQgYWN0aW9uIHR5cGVzOlxuICogYGdldGA6IHBlcmZvcm1zIGEgR0VUIHJlcXVlc3Qgb24gYW4gZW5kcG9pbnQgdG8gcmV0cmlldmUgYW4gaXRlbSB2YWx1ZSwgYW5kIG1lcmdlcyB0aGVcbiAqICAgICAgdmFsdWUgb250byB0aGUgbG9jYWwgaXRlbSB2YWx1ZS4gRm9yIGV4YW1wbGUsIHlvdSBjYW4gR0VUIGFuIGl0ZW0ncyBvbGRlciByZXZpc2lvblxuICogICAgICB2YWx1ZSBhbmQgcmVwbGFjZSB0aGUgY3VycmVudCB2YWx1ZSB3aXRoIHRoZSByZXZpc2lvbi5cbiAqIGByZW5kZXJgOiBwZXJmb3JtcyBhIEdFVCByZXF1ZXN0LCBhbmQgZGlzcGxheXMgdGhlIHJlc3VsdCBpbiB0aGUgVUkuIFRoaXMgYWN0aW9uIGRvZXMgbm90XG4gKiAgICAgICAgIGFmZmVjdCBkYXRhIHVubGVzcyBhY3Rpb24gaXMgdGFrZW4gZXhwbGljaXRlbHkgaW4gdGhlIFVJIGFmdGVyIHRoZSBkYXRhIGlzIHByZXNlbnRlZC5cbiAqIGBzaG93YDogb3BlbnMgdGhlIGFjdGlvbidzIFVSTCBpbiBhIGJyb3dzZXIuXG4gKiBgcG9zdGA6IHNlbmRzIGFuIGl0ZW0ncyBkYXRhIHRvIGEgcmVtb3RlIHNlcnZpY2UuIFRoaXMgaXMgdXNlZCBmb3IgZXhhbXBsZSBieSBMaXN0ZWRcbiAqICAgICAgIHRvIGFsbG93IHB1Ymxpc2hpbmcgYSBub3RlIHRvIGEgdXNlcidzIGJsb2cuXG4gKi9cbmV4cG9ydCBjbGFzcyBTTkFjdGlvbnNTZXJ2aWNlIGV4dGVuZHMgUHVyZVNlcnZpY2Uge1xuICAgIGNvbnN0cnVjdG9yKGl0ZW1NYW5hZ2VyLCBhbGVydFNlcnZpY2UsIGRldmljZUludGVyZmFjZSwgaHR0cFNlcnZpY2UsIG1vZGVsTWFuYWdlciwgcHJvdG9jb2xTZXJ2aWNlLCBzeW5jU2VydmljZSkge1xuICAgICAgICBzdXBlcigpO1xuICAgICAgICB0aGlzLnByZXZpb3VzUGFzc3dvcmRzID0gW107XG4gICAgICAgIHRoaXMuaXRlbU1hbmFnZXIgPSBpdGVtTWFuYWdlcjtcbiAgICAgICAgdGhpcy5hbGVydFNlcnZpY2UgPSBhbGVydFNlcnZpY2U7XG4gICAgICAgIHRoaXMuZGV2aWNlSW50ZXJmYWNlID0gZGV2aWNlSW50ZXJmYWNlO1xuICAgICAgICB0aGlzLmh0dHBTZXJ2aWNlID0gaHR0cFNlcnZpY2U7XG4gICAgICAgIHRoaXMubW9kZWxNYW5hZ2VyID0gbW9kZWxNYW5hZ2VyO1xuICAgICAgICB0aGlzLnByb3RvY29sU2VydmljZSA9IHByb3RvY29sU2VydmljZTtcbiAgICAgICAgdGhpcy5zeW5jU2VydmljZSA9IHN5bmNTZXJ2aWNlO1xuICAgICAgICB0aGlzLnByZXZpb3VzUGFzc3dvcmRzID0gW107XG4gICAgfVxuICAgIC8qKiBAb3ZlcnJpZGUgKi9cbiAgICBkZWluaXQoKSB7XG4gICAgICAgIHRoaXMuaXRlbU1hbmFnZXIgPSB1bmRlZmluZWQ7XG4gICAgICAgIHRoaXMuYWxlcnRTZXJ2aWNlID0gdW5kZWZpbmVkO1xuICAgICAgICB0aGlzLmRldmljZUludGVyZmFjZSA9IHVuZGVmaW5lZDtcbiAgICAgICAgdGhpcy5odHRwU2VydmljZSA9IHVuZGVmaW5lZDtcbiAgICAgICAgdGhpcy5tb2RlbE1hbmFnZXIgPSB1bmRlZmluZWQ7XG4gICAgICAgIHRoaXMucHJvdG9jb2xTZXJ2aWNlID0gdW5kZWZpbmVkO1xuICAgICAgICB0aGlzLnN5bmNTZXJ2aWNlID0gdW5kZWZpbmVkO1xuICAgICAgICB0aGlzLnByZXZpb3VzUGFzc3dvcmRzLmxlbmd0aCA9IDA7XG4gICAgICAgIHN1cGVyLmRlaW5pdCgpO1xuICAgIH1cbiAgICBnZXRFeHRlbnNpb25zKCkge1xuICAgICAgICByZXR1cm4gdGhpcy5pdGVtTWFuYWdlclxuICAgICAgICAgICAgLm5vbkVycm9yZWRJdGVtc0ZvckNvbnRlbnRUeXBlKENvbnRlbnRUeXBlLkFjdGlvbnNFeHRlbnNpb24pO1xuICAgIH1cbiAgICBleHRlbnNpb25zSW5Db250ZXh0T2ZJdGVtKGl0ZW0pIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuZ2V0RXh0ZW5zaW9ucygpLmZpbHRlcigoZXh0KSA9PiB7XG4gICAgICAgICAgICByZXR1cm4gZXh0LnN1cHBvcnRlZF90eXBlcy5pbmNsdWRlcyhpdGVtLmNvbnRlbnRfdHlwZSkgfHxcbiAgICAgICAgICAgICAgICBleHQuYWN0aW9uc1dpdGhDb250ZXh0Rm9ySXRlbShpdGVtKS5sZW5ndGggPiAwO1xuICAgICAgICB9KTtcbiAgICB9XG4gICAgLyoqXG4gICAgICogTG9hZHMgYW4gZXh0ZW5zaW9uIGluIHRoZSBjb250ZXh0IG9mIGEgY2VydGFpbiBpdGVtLlxuICAgICAqIFRoZSBzZXJ2ZXIgdGhlbiBoYXMgdGhlIGNoYW5jZSB0byByZXNwb25kIHdpdGggYWN0aW9ucyB0aGF0IGFyZVxuICAgICAqIHJlbGV2YW50IGp1c3QgdG8gdGhpcyBpdGVtLiBUaGUgcmVzcG9uc2UgZXh0ZW5zaW9uIGlzIG5vdCBzYXZlZCxcbiAgICAgKiBqdXN0IGRpc3BsYXllZCBhcyBhIG9uZS10aW1lIHRoaW5nLlxuICAgICovXG4gICAgYXN5bmMgbG9hZEV4dGVuc2lvbkluQ29udGV4dE9mSXRlbShleHRlbnNpb24sIGl0ZW0pIHtcbiAgICAgICAgY29uc3QgcGFyYW1zID0ge1xuICAgICAgICAgICAgY29udGVudF90eXBlOiBpdGVtLmNvbnRlbnRfdHlwZSxcbiAgICAgICAgICAgIGl0ZW1fdXVpZDogaXRlbS51dWlkXG4gICAgICAgIH07XG4gICAgICAgIHJldHVybiB0aGlzLmh0dHBTZXJ2aWNlLmdldEFic29sdXRlKGV4dGVuc2lvbi51cmwsIHBhcmFtcykudGhlbigocmVzcG9uc2UpID0+IHtcbiAgICAgICAgICAgIGNvbnN0IGRlc2NyaXB0aW9uID0gcmVzcG9uc2UuZGVzY3JpcHRpb24gfHwgZXh0ZW5zaW9uLmRlc2NyaXB0aW9uO1xuICAgICAgICAgICAgY29uc3Qgc3VwcG9ydGVkX3R5cGVzID0gcmVzcG9uc2Uuc3VwcG9ydGVkX3R5cGVzIHx8IGV4dGVuc2lvbi5zdXBwb3J0ZWRfdHlwZXM7XG4gICAgICAgICAgICBjb25zdCBhY3Rpb25zID0gKHJlc3BvbnNlLmFjdGlvbnNcbiAgICAgICAgICAgICAgICA/IHJlc3BvbnNlLmFjdGlvbnMubWFwKChhY3Rpb24pID0+IHtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIG5ldyBBY3Rpb24oYWN0aW9uKTtcbiAgICAgICAgICAgICAgICB9KVxuICAgICAgICAgICAgICAgIDogW10pO1xuICAgICAgICAgICAgdGhpcy5pdGVtTWFuYWdlci5jaGFuZ2VBY3Rpb25zRXh0ZW5zaW9uKGV4dGVuc2lvbi51dWlkLCAobXV0YXRvcikgPT4ge1xuICAgICAgICAgICAgICAgIG11dGF0b3IuZGVzY3JpcHRpb24gPSBkZXNjcmlwdGlvbjtcbiAgICAgICAgICAgICAgICBtdXRhdG9yLnN1cHBvcnRlZF90eXBlcyA9IHN1cHBvcnRlZF90eXBlcztcbiAgICAgICAgICAgICAgICBtdXRhdG9yLmFjdGlvbnMgPSBhY3Rpb25zO1xuICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICByZXR1cm4gZXh0ZW5zaW9uO1xuICAgICAgICB9KS5jYXRjaCgocmVzcG9uc2UpID0+IHtcbiAgICAgICAgICAgIGNvbnNvbGUuZXJyb3IoJ0Vycm9yIGxvYWRpbmcgZXh0ZW5zaW9uJywgcmVzcG9uc2UpO1xuICAgICAgICAgICAgcmV0dXJuIG51bGw7XG4gICAgICAgIH0pO1xuICAgIH1cbiAgICBhc3luYyBydW5BY3Rpb24oYWN0aW9uLCBpdGVtLCBwYXNzd29yZFJlcXVlc3RIYW5kbGVyKSB7XG4gICAgICAgIGFjdGlvbi5ydW5uaW5nID0gdHJ1ZTtcbiAgICAgICAgbGV0IHJlc3VsdDtcbiAgICAgICAgc3dpdGNoIChhY3Rpb24udmVyYikge1xuICAgICAgICAgICAgY2FzZSAnZ2V0JzpcbiAgICAgICAgICAgICAgICByZXN1bHQgPSBhd2FpdCB0aGlzLmhhbmRsZUdldEFjdGlvbihhY3Rpb24sIHBhc3N3b3JkUmVxdWVzdEhhbmRsZXIpO1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgY2FzZSAncmVuZGVyJzpcbiAgICAgICAgICAgICAgICByZXN1bHQgPSBhd2FpdCB0aGlzLmhhbmRsZVJlbmRlckFjdGlvbihhY3Rpb24sIHBhc3N3b3JkUmVxdWVzdEhhbmRsZXIpO1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgY2FzZSAnc2hvdyc6XG4gICAgICAgICAgICAgICAgcmVzdWx0ID0gYXdhaXQgdGhpcy5oYW5kbGVTaG93QWN0aW9uKGFjdGlvbik7XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICBjYXNlICdwb3N0JzpcbiAgICAgICAgICAgICAgICByZXN1bHQgPSBhd2FpdCB0aGlzLmhhbmRsZVBvc3RBY3Rpb24oYWN0aW9uLCBpdGVtKTtcbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIGRlZmF1bHQ6XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgIH1cbiAgICAgICAgYWN0aW9uLmxhc3RFeGVjdXRlZCA9IG5ldyBEYXRlKCk7XG4gICAgICAgIGFjdGlvbi5ydW5uaW5nID0gZmFsc2U7XG4gICAgICAgIHJldHVybiByZXN1bHQ7XG4gICAgfVxuICAgIGFzeW5jIGhhbmRsZUdldEFjdGlvbihhY3Rpb24sIHBhc3N3b3JkUmVxdWVzdEhhbmRsZXIpIHtcbiAgICAgICAgcmV0dXJuIG5ldyBQcm9taXNlKChyZXNvbHZlKSA9PiB7XG4gICAgICAgICAgICB0aGlzLmFsZXJ0U2VydmljZS5jb25maXJtKFwiQXJlIHlvdSBzdXJlIHlvdSB3YW50IHRvIHJlcGxhY2UgdGhlIGN1cnJlbnQgbm90ZSBjb250ZW50cyB3aXRoIHRoaXMgYWN0aW9uJ3MgcmVzdWx0cz9cIiwgdW5kZWZpbmVkLCB1bmRlZmluZWQsIHVuZGVmaW5lZCwgKCkgPT4ge1xuICAgICAgICAgICAgICAgIHRoaXMucnVuQ29uZmlybWVkR2V0QWN0aW9uKGFjdGlvbiwgcGFzc3dvcmRSZXF1ZXN0SGFuZGxlcilcbiAgICAgICAgICAgICAgICAgICAgLnRoZW4oKHJlc3BvbnNlKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgIHJlc29sdmUocmVzcG9uc2UpO1xuICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgfSk7XG4gICAgICAgIH0pO1xuICAgIH1cbiAgICBhc3luYyBydW5Db25maXJtZWRHZXRBY3Rpb24oYWN0aW9uLCBwYXNzd29yZFJlcXVlc3RIYW5kbGVyKSB7XG4gICAgICAgIGNvbnN0IHJlc3BvbnNlID0gYXdhaXQgdGhpcy5odHRwU2VydmljZS5nZXRBYnNvbHV0ZShhY3Rpb24udXJsKVxuICAgICAgICAgICAgLmNhdGNoKChyZXNwb25zZSkgPT4ge1xuICAgICAgICAgICAgY29uc3QgZXJyb3IgPSAocmVzcG9uc2UgJiYgcmVzcG9uc2UuZXJyb3IpXG4gICAgICAgICAgICAgICAgfHwgeyBtZXNzYWdlOiAnQW4gaXNzdWUgb2NjdXJyZWQgd2hpbGUgcHJvY2Vzc2luZyB0aGlzIGFjdGlvbi4gUGxlYXNlIHRyeSBhZ2Fpbi4nIH07XG4gICAgICAgICAgICB0aGlzLmFsZXJ0U2VydmljZS5hbGVydChlcnJvci5tZXNzYWdlKTtcbiAgICAgICAgICAgIGFjdGlvbi5lcnJvciA9IHRydWU7XG4gICAgICAgICAgICByZXR1cm4geyBlcnJvcjogZXJyb3IgfTtcbiAgICAgICAgfSk7XG4gICAgICAgIGlmIChyZXNwb25zZS5lcnJvcikge1xuICAgICAgICAgICAgcmV0dXJuIHsgcmVzcG9uc2UgfTtcbiAgICAgICAgfVxuICAgICAgICBhY3Rpb24uZXJyb3IgPSBmYWxzZTtcbiAgICAgICAgY29uc3QgcGF5bG9hZCA9IGF3YWl0IHRoaXMucGF5bG9hZEJ5RGVjcnlwdGluZ1Jlc3BvbnNlKHJlc3BvbnNlLCBwYXNzd29yZFJlcXVlc3RIYW5kbGVyKTtcbiAgICAgICAgYXdhaXQgdGhpcy5tb2RlbE1hbmFnZXIuZW1pdFBheWxvYWQoQ29weVBheWxvYWQocGF5bG9hZCwge1xuICAgICAgICAgICAgZGlydHk6IHRydWUsXG4gICAgICAgICAgICBkaXJ0aWVkRGF0ZTogbmV3IERhdGUoKVxuICAgICAgICB9KSwgUGF5bG9hZFNvdXJjZS5SZW1vdGVBY3Rpb25SZXRyaWV2ZWQpO1xuICAgICAgICB0aGlzLnN5bmNTZXJ2aWNlLnN5bmMoKTtcbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgIHJlc3BvbnNlOiByZXNwb25zZSxcbiAgICAgICAgICAgIGl0ZW06IHJlc3BvbnNlLml0ZW1cbiAgICAgICAgfTtcbiAgICB9XG4gICAgYXN5bmMgaGFuZGxlUmVuZGVyQWN0aW9uKGFjdGlvbiwgcGFzc3dvcmRSZXF1ZXN0SGFuZGxlcikge1xuICAgICAgICBjb25zdCByZXNwb25zZSA9IGF3YWl0IHRoaXMuaHR0cFNlcnZpY2UuZ2V0QWJzb2x1dGUoYWN0aW9uLnVybCkudGhlbihhc3luYyAocmVzcG9uc2UpID0+IHtcbiAgICAgICAgICAgIGFjdGlvbi5lcnJvciA9IGZhbHNlO1xuICAgICAgICAgICAgY29uc3QgcGF5bG9hZCA9IGF3YWl0IHRoaXMucGF5bG9hZEJ5RGVjcnlwdGluZ1Jlc3BvbnNlKHJlc3BvbnNlLCBwYXNzd29yZFJlcXVlc3RIYW5kbGVyKTtcbiAgICAgICAgICAgIGlmIChwYXlsb2FkKSB7XG4gICAgICAgICAgICAgICAgY29uc3QgaXRlbSA9IHRoaXMuaXRlbU1hbmFnZXIuY3JlYXRlSXRlbShwYXlsb2FkLmNvbnRlbnRfdHlwZSwgcGF5bG9hZC5jb250ZW50T2JqZWN0KTtcbiAgICAgICAgICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgICAgICAgICByZXNwb25zZTogcmVzcG9uc2UsXG4gICAgICAgICAgICAgICAgICAgIGl0ZW06IGl0ZW1cbiAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgfVxuICAgICAgICB9KS5jYXRjaCgocmVzcG9uc2UpID0+IHtcbiAgICAgICAgICAgIGNvbnN0IGVycm9yID0gKHJlc3BvbnNlICYmIHJlc3BvbnNlLmVycm9yKVxuICAgICAgICAgICAgICAgIHx8IHsgbWVzc2FnZTogJ0FuIGlzc3VlIG9jY3VycmVkIHdoaWxlIHByb2Nlc3NpbmcgdGhpcyBhY3Rpb24uIFBsZWFzZSB0cnkgYWdhaW4uJyB9O1xuICAgICAgICAgICAgdGhpcy5hbGVydFNlcnZpY2UuYWxlcnQoZXJyb3IubWVzc2FnZSk7XG4gICAgICAgICAgICBhY3Rpb24uZXJyb3IgPSB0cnVlO1xuICAgICAgICAgICAgcmV0dXJuIHsgZXJyb3I6IGVycm9yIH07XG4gICAgICAgIH0pO1xuICAgICAgICByZXR1cm4geyByZXNwb25zZSB9O1xuICAgIH1cbiAgICBhc3luYyBwYXlsb2FkQnlEZWNyeXB0aW5nUmVzcG9uc2UocmVzcG9uc2UsIHBhc3N3b3JkUmVxdWVzdEhhbmRsZXIsIGtleSkge1xuICAgICAgICBjb25zdCBwYXlsb2FkID0gQ3JlYXRlTWF4UGF5bG9hZEZyb21BbnlPYmplY3QocmVzcG9uc2UuaXRlbSk7XG4gICAgICAgIGNvbnN0IGRlY3J5cHRlZFBheWxvYWQgPSBhd2FpdCB0aGlzLnByb3RvY29sU2VydmljZS5wYXlsb2FkQnlEZWNyeXB0aW5nUGF5bG9hZChwYXlsb2FkLCBrZXkpO1xuICAgICAgICBpZiAoIWRlY3J5cHRlZFBheWxvYWQuZXJyb3JEZWNyeXB0aW5nKSB7XG4gICAgICAgICAgICByZXR1cm4gZGVjcnlwdGVkUGF5bG9hZDtcbiAgICAgICAgfVxuICAgICAgICBpZiAoIXJlc3BvbnNlLmF1dGhfcGFyYW1zKSB7XG4gICAgICAgICAgICAvKipcbiAgICAgICAgICAgICAqIEluIHNvbWUgY2FzZXMgcmV2aXNpb25zIHdlcmUgbWlzc2luZyBhdXRoIHBhcmFtcy5cbiAgICAgICAgICAgICAqIEluc3RydWN0IHRoZSB1c2VyIHRvIGVtYWlsIHVzIHRvIGdldCB0aGlzIHJlbWVkaWVkLlxuICAgICAgICAgICAgICovXG4gICAgICAgICAgICB0aGlzLmFsZXJ0U2VydmljZS5hbGVydChgV2Ugd2VyZSB1bmFibGUgdG8gZGVjcnlwdCB0aGlzIHJldmlzaW9uIHVzaW5nIHlvdXIgY3VycmVudCBrZXlzLCBcbiAgICAgICAgYW5kIHRoaXMgcmV2aXNpb24gaXMgbWlzc2luZyBtZXRhZGF0YSB0aGF0IHdvdWxkIGFsbG93IHVzIHRvIHRyeSBkaWZmZXJlbnQgXG4gICAgICAgIGtleXMgdG8gZGVjcnlwdCBpdC4gVGhpcyBjYW4gbGlrZWx5IGJlIGZpeGVkIHdpdGggc29tZSBtYW51YWwgaW50ZXJ2ZW50aW9uLiBcbiAgICAgICAgUGxlYXNlIGVtYWlsIGhlbGxvQHN0YW5kYXJkbm90ZXMub3JnIGZvciBhc3Npc3RhbmNlLmApO1xuICAgICAgICAgICAgcmV0dXJuIHVuZGVmaW5lZDtcbiAgICAgICAgfVxuICAgICAgICAvKiBUcnkgcHJldmlvdXMgcGFzc3dvcmRzICovXG4gICAgICAgIGNvbnN0IHRyaWVkUGFzc3dvcmRzID0gW107XG4gICAgICAgIGZvciAoY29uc3QgcGFzc3dvcmRDYW5kaWRhdGUgb2YgdGhpcy5wcmV2aW91c1Bhc3N3b3Jkcykge1xuICAgICAgICAgICAgaWYgKHRyaWVkUGFzc3dvcmRzLmluY2x1ZGVzKHBhc3N3b3JkQ2FuZGlkYXRlKSkge1xuICAgICAgICAgICAgICAgIGNvbnRpbnVlO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgdHJpZWRQYXNzd29yZHMucHVzaChwYXNzd29yZENhbmRpZGF0ZSk7XG4gICAgICAgICAgICBjb25zdCBrZXkgPSBhd2FpdCB0aGlzLnByb3RvY29sU2VydmljZS5jb21wdXRlUm9vdEtleShwYXNzd29yZENhbmRpZGF0ZSwgcmVzcG9uc2UuYXV0aF9wYXJhbXMpO1xuICAgICAgICAgICAgaWYgKCFrZXkpIHtcbiAgICAgICAgICAgICAgICBjb250aW51ZTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGNvbnN0IG5lc3RlZFJlc3BvbnNlID0gYXdhaXQgdGhpcy5wYXlsb2FkQnlEZWNyeXB0aW5nUmVzcG9uc2UocmVzcG9uc2UsIHBhc3N3b3JkUmVxdWVzdEhhbmRsZXIsIGtleSk7XG4gICAgICAgICAgICBpZiAobmVzdGVkUmVzcG9uc2UpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gbmVzdGVkUmVzcG9uc2U7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgLyoqIFByb21wdCBmb3Igb3RoZXIgcGFzc3dvcmRzICovXG4gICAgICAgIGNvbnN0IHBhc3N3b3JkID0gYXdhaXQgcGFzc3dvcmRSZXF1ZXN0SGFuZGxlcigpO1xuICAgICAgICB0aGlzLnByZXZpb3VzUGFzc3dvcmRzLnB1c2gocGFzc3dvcmQpO1xuICAgICAgICByZXR1cm4gdGhpcy5wYXlsb2FkQnlEZWNyeXB0aW5nUmVzcG9uc2UocmVzcG9uc2UsIHBhc3N3b3JkUmVxdWVzdEhhbmRsZXIsIGtleSk7XG4gICAgfVxuICAgIGFzeW5jIGhhbmRsZVBvc3RBY3Rpb24oYWN0aW9uLCBpdGVtKSB7XG4gICAgICAgIGNvbnN0IGRlY3J5cHRlZCA9IGFjdGlvbi5hY2Nlc3NfdHlwZSA9PT0gJ2RlY3J5cHRlZCc7XG4gICAgICAgIGNvbnN0IGl0ZW1QYXJhbXMgPSBhd2FpdCB0aGlzLm91dGdvaW5nUGF5bG9hZEZvckl0ZW0oaXRlbSwgZGVjcnlwdGVkKTtcbiAgICAgICAgY29uc3QgcGFyYW1zID0ge1xuICAgICAgICAgICAgaXRlbXM6IFtpdGVtUGFyYW1zXVxuICAgICAgICB9O1xuICAgICAgICByZXR1cm4gdGhpcy5odHRwU2VydmljZS5wb3N0QWJzb2x1dGUoYWN0aW9uLnVybCwgcGFyYW1zKS50aGVuKChyZXNwb25zZSkgPT4ge1xuICAgICAgICAgICAgYWN0aW9uLmVycm9yID0gZmFsc2U7XG4gICAgICAgICAgICByZXR1cm4geyByZXNwb25zZTogcmVzcG9uc2UgfTtcbiAgICAgICAgfSkuY2F0Y2goKHJlc3BvbnNlKSA9PiB7XG4gICAgICAgICAgICBhY3Rpb24uZXJyb3IgPSB0cnVlO1xuICAgICAgICAgICAgY29uc29sZS5lcnJvcignQWN0aW9uIGVycm9yIHJlc3BvbnNlOicsIHJlc3BvbnNlKTtcbiAgICAgICAgICAgIHRoaXMuYWxlcnRTZXJ2aWNlLmFsZXJ0KCdBbiBpc3N1ZSBvY2N1cnJlZCB3aGlsZSBwcm9jZXNzaW5nIHRoaXMgYWN0aW9uLiBQbGVhc2UgdHJ5IGFnYWluLicpO1xuICAgICAgICAgICAgcmV0dXJuIHsgcmVzcG9uc2U6IHJlc3BvbnNlIH07XG4gICAgICAgIH0pO1xuICAgIH1cbiAgICBhc3luYyBoYW5kbGVTaG93QWN0aW9uKGFjdGlvbikge1xuICAgICAgICB0aGlzLmRldmljZUludGVyZmFjZS5vcGVuVXJsKGFjdGlvbi51cmwpO1xuICAgICAgICByZXR1cm4geyByZXNwb25zZTogdW5kZWZpbmVkIH07XG4gICAgfVxuICAgIGFzeW5jIG91dGdvaW5nUGF5bG9hZEZvckl0ZW0oaXRlbSwgZGVjcnlwdGVkID0gZmFsc2UpIHtcbiAgICAgICAgY29uc3QgaW50ZW50ID0gZGVjcnlwdGVkXG4gICAgICAgICAgICA/IEVuY3J5cHRpb25JbnRlbnQuRmlsZURlY3J5cHRlZFxuICAgICAgICAgICAgOiBFbmNyeXB0aW9uSW50ZW50LkZpbGVFbmNyeXB0ZWQ7XG4gICAgICAgIGNvbnN0IGVuY3J5cHRlZCA9IGF3YWl0IHRoaXMucHJvdG9jb2xTZXJ2aWNlLnBheWxvYWRCeUVuY3J5cHRpbmdQYXlsb2FkKGl0ZW0ucGF5bG9hZFJlcHJlc2VudGF0aW9uKCksIGludGVudCk7XG4gICAgICAgIHJldHVybiBlbmNyeXB0ZWQuZWplY3RlZCgpO1xuICAgIH1cbn1cbiJdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7Ozs7Ozs7Ozs7Ozs7O0FBY0E7QUFBQTtBQUNBO0FBQUE7QUFBQTtBQUNBO0FBREE7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBVkE7QUFXQTtBQUNBO0FBQ0E7QUFDQTtBQWZBO0FBQUE7QUFBQTtBQWVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUF4QkE7QUFBQTtBQUFBO0FBMEJBO0FBRUE7QUE1QkE7QUFBQTtBQUFBO0FBOEJBO0FBQ0E7QUFFQTtBQUNBO0FBQ0E7Ozs7Ozs7QUFuQ0E7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUNBO0FBREE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQTBDQTtBQUNBO0FBQ0E7QUFGQTtBQTFDQTtBQStDQTtBQUNBO0FBQ0E7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFoRUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFDQTtBQURBO0FBQUE7QUFBQTtBQUNBO0FBREE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQWtFQTtBQWxFQTtBQUFBO0FBQUE7QUFDQTtBQURBO0FBQUE7QUFBQTtBQUNBO0FBREE7QUFzRUE7QUF0RUE7QUFDQTtBQURBO0FBQUE7QUFBQTtBQUNBO0FBREE7QUF5RUE7QUF6RUE7QUFDQTtBQURBO0FBQUE7QUFBQTtBQUNBO0FBREE7QUE0RUE7QUE1RUE7QUFDQTtBQURBO0FBQUE7QUFBQTtBQUNBO0FBREE7QUErRUE7QUEvRUE7QUFDQTtBQURBO0FBQUE7QUFDQTtBQURBO0FBb0ZBO0FBQ0E7QUFyRkE7QUFDQTtBQURBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQ0E7QUFEQTtBQUFBO0FBQUE7QUFDQTtBQURBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQ0E7QUFEQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBMEZBO0FBQ0E7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBakdBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQ0E7QUFEQTtBQUFBO0FBQUE7QUFDQTtBQURBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQ0E7QUFEQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQXFHQTtBQUNBO0FBQUE7QUFDQTtBQUFBO0FBQ0E7QUFBQTtBQUNBO0FBQUE7QUFBQTtBQUNBO0FBQ0E7QUEzR0E7QUFtR0E7QUFDQTtBQXBHQTtBQUFBO0FBQUE7QUFBQTtBQUNBO0FBREE7QUE0R0E7QUFBQTtBQUNBO0FBN0dBO0FBOEdBO0FBOUdBO0FBQUE7QUFDQTtBQURBO0FBK0dBO0FBL0dBO0FBQUE7QUFpSEE7QUFDQTtBQUZBO0FBQ0E7QUFqSEE7QUFvSEE7QUFwSEE7QUFzSEE7QUFDQTtBQUZBO0FBQ0E7QUF0SEE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFDQTtBQURBO0FBQUE7QUFBQTtBQUNBO0FBREE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFDQTtBQURBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBMkhBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUNBO0FBREE7QUFBQTtBQUNBO0FBREE7QUFFQTtBQUNBO0FBSEE7QUFBQTtBQUFBO0FBQUE7QUFDQTtBQUdBO0FBSkE7QUFNQTtBQUNBO0FBRkE7QUFDQTtBQU5BO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQ0E7QUFEQTtBQUFBO0FBQUE7QUFBQTtBQVdBO0FBQ0E7QUFBQTtBQUNBO0FBQUE7QUFDQTtBQUFBO0FBQ0E7QUFBQTtBQUFBO0FBQ0E7QUFDQTtBQTVJQTtBQTJIQTtBQTNIQTtBQTRJQTtBQUFBO0FBQ0E7QUE3SUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFDQTtBQURBO0FBQUE7QUFBQTtBQUNBO0FBREE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFDQTtBQURBO0FBQUE7QUFBQTtBQUFBO0FBK0lBO0FBL0lBO0FBQUE7QUFDQTtBQURBO0FBZ0pBO0FBQ0E7QUFqSkE7QUFBQTtBQUFBO0FBQUE7QUFDQTtBQURBO0FBQ0E7QUFEQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQ0E7QUFvSkE7Ozs7QUFJQTtBQXpKQTtBQUNBO0FBREE7QUErSkE7QUFDQTtBQWhLQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQ0E7QUFEQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQ0E7QUFnS0E7QUFDQTtBQWxLQTtBQUFBO0FBQUE7QUFBQTtBQUNBO0FBREE7QUFDQTtBQURBO0FBcUtBO0FBcktBO0FBQUE7QUFDQTtBQURBO0FBc0tBO0FBQ0E7QUF2S0E7QUFBQTtBQUFBO0FBQUE7QUFDQTtBQURBO0FBQ0E7QUFEQTtBQUFBO0FBQUE7QUFDQTtBQURBO0FBMEtBO0FBQ0E7QUEzS0E7QUFBQTtBQUFBO0FBQUE7QUFDQTtBQURBO0FBQ0E7QUFEQTtBQUFBO0FBQUE7QUFBQTtBQUNBO0FBREE7QUFBQTtBQUFBO0FBQ0E7QUFEQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQ0E7QUFEQTtBQUFBO0FBQUE7QUFDQTtBQURBO0FBQUE7QUFBQTtBQUNBO0FBREE7QUFBQTtBQUNBO0FBREE7QUFBQTtBQUFBO0FBQUE7QUFDQTtBQURBO0FBQ0E7QUFEQTtBQUFBO0FBQ0E7QUFEQTtBQUFBO0FBQ0E7QUFEQTtBQUFBO0FBQUE7QUFDQTtBQURBO0FBZ0xBO0FBQ0E7QUFqTEE7QUFDQTtBQURBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQ0E7QUFEQTtBQUFBO0FBQUE7QUFDQTtBQURBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQ0E7QUFEQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBcUxBO0FBckxBO0FBQUE7QUFDQTtBQURBO0FBc0xBO0FBQ0E7QUFDQTtBQURBO0FBdkxBO0FBMkxBO0FBQ0E7QUFBQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQUE7QUFBQTtBQUFBO0FBQ0E7QUFDQTtBQW5NQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUNBO0FBREE7QUFBQTtBQUFBO0FBQ0E7QUFEQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQXFNQTtBQXJNQTtBQXNNQTtBQUFBO0FBQ0E7QUF2TUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFDQTtBQURBO0FBQUE7QUFBQTtBQUNBO0FBREE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQXdNQTtBQUNBO0FBek1BO0FBQUE7QUFDQTtBQURBO0FBNE1BO0FBNU1BO0FBQ0E7QUFEQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUNBO0FBREE7QUFBQTtBQUFBO0FBQ0E7QUFEQTtBQUFBO0FBQUE7QUFDQTtBQURBO0FBQUEiLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./lib/services/actions_service.ts\n')},"./lib/services/alert_service.ts":
|
||
/*!***************************************!*\
|
||
!*** ./lib/services/alert_service.ts ***!
|
||
\***************************************/
|
||
/*! exports provided: SNAlertService */function(module,__webpack_exports__,__webpack_require__){"use strict";eval('__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "SNAlertService", function() { return SNAlertService; });\n/* harmony import */ var _babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @babel/runtime/regenerator */ "./node_modules/@babel/runtime/regenerator/index.js");\n/* harmony import */ var _babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var _Lib_services_pure_service__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! @Lib/services/pure_service */ "./lib/services/pure_service.ts");\n\n\nfunction _typeof(obj) { "@babel/helpers - typeof"; if (typeof Symbol === "function" && typeof Symbol.iterator === "symbol") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }; } return _typeof(obj); }\n\nfunction asyncGeneratorStep(gen, resolve, reject, _next, _throw, key, arg) { try { var info = gen[key](arg); var value = info.value; } catch (error) { reject(error); return; } if (info.done) { resolve(value); } else { Promise.resolve(value).then(_next, _throw); } }\n\nfunction _asyncToGenerator(fn) { return function () { var self = this, args = arguments; return new Promise(function (resolve, reject) { var gen = fn.apply(self, args); function _next(value) { asyncGeneratorStep(gen, resolve, reject, _next, _throw, "next", value); } function _throw(err) { asyncGeneratorStep(gen, resolve, reject, _next, _throw, "throw", err); } _next(undefined); }); }; }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } }\n\nfunction _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); } }\n\nfunction _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; }\n\nfunction _possibleConstructorReturn(self, call) { if (call && (_typeof(call) === "object" || typeof call === "function")) { return call; } return _assertThisInitialized(self); }\n\nfunction _assertThisInitialized(self) { if (self === void 0) { throw new ReferenceError("this hasn\'t been initialised - super() hasn\'t been called"); } return self; }\n\nfunction _get(target, property, receiver) { if (typeof Reflect !== "undefined" && Reflect.get) { _get = Reflect.get; } else { _get = function _get(target, property, receiver) { var base = _superPropBase(target, property); if (!base) return; var desc = Object.getOwnPropertyDescriptor(base, property); if (desc.get) { return desc.get.call(receiver); } return desc.value; }; } return _get(target, property, receiver || target); }\n\nfunction _superPropBase(object, property) { while (!Object.prototype.hasOwnProperty.call(object, property)) { object = _getPrototypeOf(object); if (object === null) break; } return object; }\n\nfunction _getPrototypeOf(o) { _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function _getPrototypeOf(o) { return o.__proto__ || Object.getPrototypeOf(o); }; return _getPrototypeOf(o); }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== "function" && superClass !== null) { throw new TypeError("Super expression must either be null or a function"); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, writable: true, configurable: true } }); if (superClass) _setPrototypeOf(subClass, superClass); }\n\nfunction _setPrototypeOf(o, p) { _setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) { o.__proto__ = p; return o; }; return _setPrototypeOf(o, p); }\n\n\n/**\n * Can be subclassed to provide custom alert/confirm implementation.\n * Defaults to using browser alert() and confirm().\n */\n\nvar SNAlertService = /*#__PURE__*/function (_PureService) {\n _inherits(SNAlertService, _PureService);\n\n function SNAlertService(deviceInterface) {\n var _this;\n\n _classCallCheck(this, SNAlertService);\n\n _this = _possibleConstructorReturn(this, _getPrototypeOf(SNAlertService).call(this));\n _this.deviceInterface = deviceInterface;\n return _this;\n }\n\n _createClass(SNAlertService, [{\n key: "deinit",\n value: function deinit() {\n this.deviceInterface = undefined;\n\n _get(_getPrototypeOf(SNAlertService.prototype), "deinit", this).call(this);\n }\n }, {\n key: "alert",\n value: function () {\n var _alert = _asyncToGenerator( /*#__PURE__*/_babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0___default.a.mark(function _callee(text, title) {\n var closeButtonText,\n onClose,\n _args = arguments;\n return _babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0___default.a.wrap(function _callee$(_context) {\n while (1) {\n switch (_context.prev = _context.next) {\n case 0:\n closeButtonText = _args.length > 2 && _args[2] !== undefined ? _args[2] : \'OK\';\n onClose = _args.length > 3 ? _args[3] : undefined;\n return _context.abrupt("return", new Promise(function (resolve, reject) {\n window.alert(text);\n resolve();\n }));\n\n case 3:\n case "end":\n return _context.stop();\n }\n }\n }, _callee);\n }));\n\n function alert(_x, _x2) {\n return _alert.apply(this, arguments);\n }\n\n return alert;\n }()\n }, {\n key: "confirm",\n value: function () {\n var _confirm = _asyncToGenerator( /*#__PURE__*/_babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0___default.a.mark(function _callee2(text, title) {\n var confirmButtonText,\n cancelButtonText,\n onConfirm,\n onCancel,\n destructive,\n _args2 = arguments;\n return _babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0___default.a.wrap(function _callee2$(_context2) {\n while (1) {\n switch (_context2.prev = _context2.next) {\n case 0:\n confirmButtonText = _args2.length > 2 && _args2[2] !== undefined ? _args2[2] : \'Confirm\';\n cancelButtonText = _args2.length > 3 && _args2[3] !== undefined ? _args2[3] : \'Cancel\';\n onConfirm = _args2.length > 4 ? _args2[4] : undefined;\n onCancel = _args2.length > 5 ? _args2[5] : undefined;\n destructive = _args2.length > 6 && _args2[6] !== undefined ? _args2[6] : false;\n return _context2.abrupt("return", new Promise(function (resolve, reject) {\n if (window.confirm(text)) {\n resolve();\n } else {\n // eslint-disable-next-line prefer-promise-reject-errors\n reject();\n }\n }));\n\n case 6:\n case "end":\n return _context2.stop();\n }\n }\n }, _callee2);\n }));\n\n function confirm(_x3, _x4) {\n return _confirm.apply(this, arguments);\n }\n\n return confirm;\n }()\n }]);\n\n return SNAlertService;\n}(_Lib_services_pure_service__WEBPACK_IMPORTED_MODULE_1__["PureService"]);//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9saWIvc2VydmljZXMvYWxlcnRfc2VydmljZS50cy5qcyIsInNvdXJjZXMiOlsid2VicGFjazovL1NOTGlicmFyeS8uL2xpYi9zZXJ2aWNlcy9hbGVydF9zZXJ2aWNlLnRzP2YyNTEiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgUHVyZVNlcnZpY2UgfSBmcm9tICdATGliL3NlcnZpY2VzL3B1cmVfc2VydmljZSc7XG4vKipcbiAqIENhbiBiZSBzdWJjbGFzc2VkIHRvIHByb3ZpZGUgY3VzdG9tIGFsZXJ0L2NvbmZpcm0gaW1wbGVtZW50YXRpb24uXG4gKiBEZWZhdWx0cyB0byB1c2luZyBicm93c2VyIGFsZXJ0KCkgYW5kIGNvbmZpcm0oKS5cbiAqL1xuZXhwb3J0IGNsYXNzIFNOQWxlcnRTZXJ2aWNlIGV4dGVuZHMgUHVyZVNlcnZpY2Uge1xuICAgIGNvbnN0cnVjdG9yKGRldmljZUludGVyZmFjZSkge1xuICAgICAgICBzdXBlcigpO1xuICAgICAgICB0aGlzLmRldmljZUludGVyZmFjZSA9IGRldmljZUludGVyZmFjZTtcbiAgICB9XG4gICAgZGVpbml0KCkge1xuICAgICAgICB0aGlzLmRldmljZUludGVyZmFjZSA9IHVuZGVmaW5lZDtcbiAgICAgICAgc3VwZXIuZGVpbml0KCk7XG4gICAgfVxuICAgIGFzeW5jIGFsZXJ0KHRleHQsIHRpdGxlLCBjbG9zZUJ1dHRvblRleHQgPSAnT0snLCBvbkNsb3NlKSB7XG4gICAgICAgIHJldHVybiBuZXcgUHJvbWlzZSgocmVzb2x2ZSwgcmVqZWN0KSA9PiB7XG4gICAgICAgICAgICB3aW5kb3cuYWxlcnQodGV4dCk7XG4gICAgICAgICAgICByZXNvbHZlKCk7XG4gICAgICAgIH0pO1xuICAgIH1cbiAgICBhc3luYyBjb25maXJtKHRleHQsIHRpdGxlLCBjb25maXJtQnV0dG9uVGV4dCA9ICdDb25maXJtJywgY2FuY2VsQnV0dG9uVGV4dCA9ICdDYW5jZWwnLCBvbkNvbmZpcm0sIG9uQ2FuY2VsLCBkZXN0cnVjdGl2ZSA9IGZhbHNlKSB7XG4gICAgICAgIHJldHVybiBuZXcgUHJvbWlzZSgocmVzb2x2ZSwgcmVqZWN0KSA9PiB7XG4gICAgICAgICAgICBpZiAod2luZG93LmNvbmZpcm0odGV4dCkpIHtcbiAgICAgICAgICAgICAgICByZXNvbHZlKCk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgICAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgcHJlZmVyLXByb21pc2UtcmVqZWN0LWVycm9yc1xuICAgICAgICAgICAgICAgIHJlamVjdCgpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9KTtcbiAgICB9XG59XG4iXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQUFBO0FBQ0E7Ozs7O0FBSUE7QUFBQTtBQUNBO0FBQUE7QUFBQTtBQUNBO0FBREE7QUFDQTtBQUFBO0FBQ0E7QUFGQTtBQUdBO0FBQ0E7QUFMQTtBQUFBO0FBQUE7QUFNQTtBQUNBO0FBQUE7QUFDQTtBQVJBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFTQTtBQUFBO0FBVEE7QUFXQTtBQUNBO0FBQ0E7QUFDQTtBQWRBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQ0E7QUFEQTtBQUFBO0FBQUE7QUFDQTtBQURBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBZUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQWZBO0FBaUJBO0FBQ0E7QUFDQTtBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUF6QkE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFDQTtBQURBO0FBQUE7QUFBQTtBQUNBO0FBREE7QUFBQTtBQUFBO0FBQ0E7QUFEQTtBQUFBIiwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./lib/services/alert_service.ts\n')},"./lib/services/api/api_service.ts":
|
||
/*!*****************************************!*\
|
||
!*** ./lib/services/api/api_service.ts ***!
|
||
\*****************************************/
|
||
/*! exports provided: SNApiService */function(module,__webpack_exports__,__webpack_require__){"use strict";eval('__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "SNApiService", function() { return SNApiService; });\n/* harmony import */ var _babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @babel/runtime/regenerator */ "./node_modules/@babel/runtime/regenerator/index.js");\n/* harmony import */ var _babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var _session__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./session */ "./lib/services/api/session.ts");\n/* harmony import */ var _http_service__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./http_service */ "./lib/services/api/http_service.ts");\n/* harmony import */ var lodash_merge__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! lodash/merge */ "./node_modules/lodash/merge.js");\n/* harmony import */ var lodash_merge__WEBPACK_IMPORTED_MODULE_3___default = /*#__PURE__*/__webpack_require__.n(lodash_merge__WEBPACK_IMPORTED_MODULE_3__);\n/* harmony import */ var _Services_api_keys__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! @Services/api/keys */ "./lib/services/api/keys.ts");\n/* harmony import */ var _Services_api_messages__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! @Services/api/messages */ "./lib/services/api/messages.ts");\n/* harmony import */ var _Services_pure_service__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! @Services/pure_service */ "./lib/services/pure_service.ts");\n/* harmony import */ var _Lib_utils__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! @Lib/utils */ "./lib/utils.ts");\n/* harmony import */ var _Lib_storage_keys__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! @Lib/storage_keys */ "./lib/storage_keys.ts");\n\n\nfunction _typeof(obj) { "@babel/helpers - typeof"; if (typeof Symbol === "function" && typeof Symbol.iterator === "symbol") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }; } return _typeof(obj); }\n\nfunction ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly) symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); keys.push.apply(keys, symbols); } return keys; }\n\nfunction _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; if (i % 2) { ownKeys(Object(source), true).forEach(function (key) { _defineProperty(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } } return target; }\n\nfunction _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\n\nfunction asyncGeneratorStep(gen, resolve, reject, _next, _throw, key, arg) { try { var info = gen[key](arg); var value = info.value; } catch (error) { reject(error); return; } if (info.done) { resolve(value); } else { Promise.resolve(value).then(_next, _throw); } }\n\nfunction _asyncToGenerator(fn) { return function () { var self = this, args = arguments; return new Promise(function (resolve, reject) { var gen = fn.apply(self, args); function _next(value) { asyncGeneratorStep(gen, resolve, reject, _next, _throw, "next", value); } function _throw(err) { asyncGeneratorStep(gen, resolve, reject, _next, _throw, "throw", err); } _next(undefined); }); }; }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } }\n\nfunction _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); } }\n\nfunction _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; }\n\nfunction _possibleConstructorReturn(self, call) { if (call && (_typeof(call) === "object" || typeof call === "function")) { return call; } return _assertThisInitialized(self); }\n\nfunction _assertThisInitialized(self) { if (self === void 0) { throw new ReferenceError("this hasn\'t been initialised - super() hasn\'t been called"); } return self; }\n\nfunction _get(target, property, receiver) { if (typeof Reflect !== "undefined" && Reflect.get) { _get = Reflect.get; } else { _get = function _get(target, property, receiver) { var base = _superPropBase(target, property); if (!base) return; var desc = Object.getOwnPropertyDescriptor(base, property); if (desc.get) { return desc.get.call(receiver); } return desc.value; }; } return _get(target, property, receiver || target); }\n\nfunction _superPropBase(object, property) { while (!Object.prototype.hasOwnProperty.call(object, property)) { object = _getPrototypeOf(object); if (object === null) break; } return object; }\n\nfunction _getPrototypeOf(o) { _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function _getPrototypeOf(o) { return o.__proto__ || Object.getPrototypeOf(o); }; return _getPrototypeOf(o); }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== "function" && superClass !== null) { throw new TypeError("Super expression must either be null or a function"); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, writable: true, configurable: true } }); if (superClass) _setPrototypeOf(subClass, superClass); }\n\nfunction _setPrototypeOf(o, p) { _setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) { o.__proto__ = p; return o; }; return _setPrototypeOf(o, p); }\n\n\n\n\n\n\n\n\n\nvar REQUEST_PATH_KEY_PARAMS = \'/auth/params\';\nvar REQUEST_PATH_REGISTER = \'/auth\';\nvar REQUEST_PATH_LOGIN = \'/auth/sign_in\';\nvar REQUEST_PATH_CHANGE_PW = \'/auth/change_pw\';\nvar REQUEST_PATH_SYNC = \'/items/sync\';\nvar REQUEST_PATH_LOGOUT = \'/auth/sign_out\';\nvar REQUEST_PATH_SESSION_REFRESH = \'/session/refresh\';\nvar API_VERSION = \'20200115\';\nvar SNApiService = /*#__PURE__*/function (_PureService) {\n _inherits(SNApiService, _PureService);\n\n function SNApiService(httpService, storageService) {\n var _this;\n\n _classCallCheck(this, SNApiService);\n\n _this = _possibleConstructorReturn(this, _getPrototypeOf(SNApiService).call(this));\n _this.registering = false;\n _this.authenticating = false;\n _this.changing = false;\n _this.refreshingSession = false;\n _this.httpService = httpService;\n _this.storageService = storageService;\n return _this;\n }\n /** @override */\n\n\n _createClass(SNApiService, [{\n key: "deinit",\n value: function deinit() {\n this.httpService = undefined;\n this.storageService = undefined;\n this.host = undefined;\n this.session = undefined;\n\n _get(_getPrototypeOf(SNApiService.prototype), "deinit", this).call(this);\n }\n }, {\n key: "loadHost",\n value: function () {\n var _loadHost = _asyncToGenerator( /*#__PURE__*/_babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0___default.a.mark(function _callee() {\n var storedValue;\n return _babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0___default.a.wrap(function _callee$(_context) {\n while (1) {\n switch (_context.prev = _context.next) {\n case 0:\n _context.next = 2;\n return this.storageService.getValue(_Lib_storage_keys__WEBPACK_IMPORTED_MODULE_8__["StorageKey"].ServerHost);\n\n case 2:\n storedValue = _context.sent;\n this.host = storedValue || window._default_sync_server;\n\n case 4:\n case "end":\n return _context.stop();\n }\n }\n }, _callee, this);\n }));\n\n function loadHost() {\n return _loadHost.apply(this, arguments);\n }\n\n return loadHost;\n }()\n }, {\n key: "setHost",\n value: function () {\n var _setHost = _asyncToGenerator( /*#__PURE__*/_babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0___default.a.mark(function _callee2(host) {\n return _babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0___default.a.wrap(function _callee2$(_context2) {\n while (1) {\n switch (_context2.prev = _context2.next) {\n case 0:\n this.host = host;\n _context2.next = 3;\n return this.storageService.setValue(_Lib_storage_keys__WEBPACK_IMPORTED_MODULE_8__["StorageKey"].ServerHost, host);\n\n case 3:\n case "end":\n return _context2.stop();\n }\n }\n }, _callee2, this);\n }));\n\n function setHost(_x) {\n return _setHost.apply(this, arguments);\n }\n\n return setHost;\n }()\n }, {\n key: "getHost",\n value: function () {\n var _getHost = _asyncToGenerator( /*#__PURE__*/_babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0___default.a.mark(function _callee3() {\n return _babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0___default.a.wrap(function _callee3$(_context3) {\n while (1) {\n switch (_context3.prev = _context3.next) {\n case 0:\n return _context3.abrupt("return", this.host);\n\n case 1:\n case "end":\n return _context3.stop();\n }\n }\n }, _callee3, this);\n }));\n\n function getHost() {\n return _getHost.apply(this, arguments);\n }\n\n return getHost;\n }()\n }, {\n key: "setSession",\n value: function () {\n var _setSession = _asyncToGenerator( /*#__PURE__*/_babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0___default.a.mark(function _callee4(session) {\n var persist,\n _args4 = arguments;\n return _babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0___default.a.wrap(function _callee4$(_context4) {\n while (1) {\n switch (_context4.prev = _context4.next) {\n case 0:\n persist = _args4.length > 1 && _args4[1] !== undefined ? _args4[1] : true;\n this.session = session;\n\n if (!persist) {\n _context4.next = 5;\n break;\n }\n\n _context4.next = 5;\n return this.storageService.setValue(_Lib_storage_keys__WEBPACK_IMPORTED_MODULE_8__["StorageKey"].Session, session);\n\n case 5:\n case "end":\n return _context4.stop();\n }\n }\n }, _callee4, this);\n }));\n\n function setSession(_x2) {\n return _setSession.apply(this, arguments);\n }\n\n return setSession;\n }()\n }, {\n key: "getSession",\n value: function getSession() {\n return this.session;\n }\n }, {\n key: "path",\n value: function () {\n var _path2 = _asyncToGenerator( /*#__PURE__*/_babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0___default.a.mark(function _callee5(_path) {\n var host;\n return _babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0___default.a.wrap(function _callee5$(_context5) {\n while (1) {\n switch (_context5.prev = _context5.next) {\n case 0:\n _context5.next = 2;\n return this.getHost();\n\n case 2:\n host = _context5.sent;\n\n if (host) {\n _context5.next = 5;\n break;\n }\n\n throw "Attempting to build path ".concat(_path, " with no host.");\n\n case 5:\n if (_path) {\n _context5.next = 7;\n break;\n }\n\n throw \'Attempting to build path with null path.\';\n\n case 7:\n return _context5.abrupt("return", Object(_Lib_utils__WEBPACK_IMPORTED_MODULE_7__["joinPaths"])(host, _path));\n\n case 8:\n case "end":\n return _context5.stop();\n }\n }\n }, _callee5, this);\n }));\n\n function path(_x3) {\n return _path2.apply(this, arguments);\n }\n\n return path;\n }()\n }, {\n key: "params",\n value: function params(inParams) {\n var params = lodash_merge__WEBPACK_IMPORTED_MODULE_3___default()(inParams, _defineProperty({}, _Services_api_keys__WEBPACK_IMPORTED_MODULE_4__["ApiEndpointParam"].ApiVersion, API_VERSION));\n return params;\n }\n }, {\n key: "createErrorResponse",\n value: function createErrorResponse(message) {\n return {\n error: {\n message: message\n }\n };\n }\n }, {\n key: "errorResponseWithFallbackMessage",\n value: function errorResponseWithFallbackMessage(response, message) {\n if (!response.error.message) {\n response.error.message = message;\n }\n\n return response;\n }\n /**\n * @param mfaKeyPath The params path the server expects for authentication against\n * a particular mfa challenge. A value of foo would mean the server\n * would receive parameters as params[\'foo\'] with value equal to mfaCode.\n * @param mfaCode The mfa challenge response value.\n */\n\n }, {\n key: "getAccountKeyParams",\n value: function () {\n var _getAccountKeyParams = _asyncToGenerator( /*#__PURE__*/_babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0___default.a.mark(function _callee6(email, mfaKeyPath, mfaCode) {\n var _this2 = this;\n\n var url, params, response;\n return _babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0___default.a.wrap(function _callee6$(_context6) {\n while (1) {\n switch (_context6.prev = _context6.next) {\n case 0:\n _context6.next = 2;\n return this.path(REQUEST_PATH_KEY_PARAMS);\n\n case 2:\n url = _context6.sent;\n params = this.params({\n email: email\n });\n\n if (mfaKeyPath) {\n params[mfaKeyPath] = mfaCode;\n }\n\n _context6.next = 7;\n return this.httpService.getAbsolute(url, params).catch(function (errorResponse) {\n return _this2.errorResponseWithFallbackMessage(errorResponse, _Services_api_messages__WEBPACK_IMPORTED_MODULE_5__["API_MESSAGE_GENERIC_INVALID_LOGIN"]);\n });\n\n case 7:\n response = _context6.sent;\n return _context6.abrupt("return", response);\n\n case 9:\n case "end":\n return _context6.stop();\n }\n }\n }, _callee6, this);\n }));\n\n function getAccountKeyParams(_x4, _x5, _x6) {\n return _getAccountKeyParams.apply(this, arguments);\n }\n\n return getAccountKeyParams;\n }()\n }, {\n key: "register",\n value: function () {\n var _register = _asyncToGenerator( /*#__PURE__*/_babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0___default.a.mark(function _callee7(email, serverPassword, keyParams) {\n var _this3 = this;\n\n var url, params, response;\n return _babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0___default.a.wrap(function _callee7$(_context7) {\n while (1) {\n switch (_context7.prev = _context7.next) {\n case 0:\n if (!this.registering) {\n _context7.next = 2;\n break;\n }\n\n return _context7.abrupt("return", this.createErrorResponse(_Services_api_messages__WEBPACK_IMPORTED_MODULE_5__["API_MESSAGE_REGISTRATION_IN_PROGRESS"]));\n\n case 2:\n this.registering = true;\n _context7.next = 5;\n return this.path(REQUEST_PATH_REGISTER);\n\n case 5:\n url = _context7.sent;\n params = this.params(_objectSpread({\n password: serverPassword,\n email: email\n }, keyParams.getPortableValue()));\n _context7.next = 9;\n return this.httpService.postAbsolute(url, params).catch(function (errorResponse) {\n return _this3.errorResponseWithFallbackMessage(errorResponse, _Services_api_messages__WEBPACK_IMPORTED_MODULE_5__["API_MESSAGE_GENERIC_REGISTRATION_FAIL"]);\n });\n\n case 9:\n response = _context7.sent;\n this.registering = false;\n return _context7.abrupt("return", response);\n\n case 12:\n case "end":\n return _context7.stop();\n }\n }\n }, _callee7, this);\n }));\n\n function register(_x7, _x8, _x9) {\n return _register.apply(this, arguments);\n }\n\n return register;\n }()\n }, {\n key: "signIn",\n value: function () {\n var _signIn = _asyncToGenerator( /*#__PURE__*/_babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0___default.a.mark(function _callee8(email, serverPassword, mfaKeyPath, mfaCode) {\n var _this4 = this;\n\n var url, params, response;\n return _babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0___default.a.wrap(function _callee8$(_context8) {\n while (1) {\n switch (_context8.prev = _context8.next) {\n case 0:\n if (!this.authenticating) {\n _context8.next = 2;\n break;\n }\n\n return _context8.abrupt("return", this.createErrorResponse(_Services_api_messages__WEBPACK_IMPORTED_MODULE_5__["API_MESSAGE_LOGIN_IN_PROGRESS"]));\n\n case 2:\n this.authenticating = true;\n _context8.next = 5;\n return this.path(REQUEST_PATH_LOGIN);\n\n case 5:\n url = _context8.sent;\n params = this.params({\n email: email,\n password: serverPassword\n });\n\n if (mfaKeyPath) {\n params[mfaKeyPath] = mfaCode;\n }\n\n _context8.next = 10;\n return this.httpService.postAbsolute(url, params).catch(function (errorResponse) {\n return _this4.errorResponseWithFallbackMessage(errorResponse, _Services_api_messages__WEBPACK_IMPORTED_MODULE_5__["API_MESSAGE_GENERIC_INVALID_LOGIN"]);\n });\n\n case 10:\n response = _context8.sent;\n this.authenticating = false;\n return _context8.abrupt("return", response);\n\n case 13:\n case "end":\n return _context8.stop();\n }\n }\n }, _callee8, this);\n }));\n\n function signIn(_x10, _x11, _x12, _x13) {\n return _signIn.apply(this, arguments);\n }\n\n return signIn;\n }()\n }, {\n key: "signOut",\n value: function () {\n var _signOut = _asyncToGenerator( /*#__PURE__*/_babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0___default.a.mark(function _callee9() {\n var url;\n return _babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0___default.a.wrap(function _callee9$(_context9) {\n while (1) {\n switch (_context9.prev = _context9.next) {\n case 0:\n _context9.next = 2;\n return this.path(REQUEST_PATH_LOGOUT);\n\n case 2:\n url = _context9.sent;\n return _context9.abrupt("return", this.httpService.postAbsolute(url, undefined, this.session.accessToken));\n\n case 4:\n case "end":\n return _context9.stop();\n }\n }\n }, _callee9, this);\n }));\n\n function signOut() {\n return _signOut.apply(this, arguments);\n }\n\n return signOut;\n }()\n }, {\n key: "changePassword",\n value: function () {\n var _changePassword = _asyncToGenerator( /*#__PURE__*/_babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0___default.a.mark(function _callee11(currentServerPassword, newServerPassword, newKeyParams) {\n var _this5 = this;\n\n var url, params, response;\n return _babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0___default.a.wrap(function _callee11$(_context11) {\n while (1) {\n switch (_context11.prev = _context11.next) {\n case 0:\n if (!this.changing) {\n _context11.next = 2;\n break;\n }\n\n return _context11.abrupt("return", this.createErrorResponse(_Services_api_messages__WEBPACK_IMPORTED_MODULE_5__["API_MESSAGE_CHANGE_PW_IN_PROGRESS"]));\n\n case 2:\n if (!this.refreshingSession) {\n _context11.next = 4;\n break;\n }\n\n return _context11.abrupt("return", this.createErrorResponse(_Services_api_messages__WEBPACK_IMPORTED_MODULE_5__["API_MESSAGE_TOKEN_REFRESH_IN_PROGRESS"]));\n\n case 4:\n this.changing = true;\n _context11.next = 7;\n return this.path(REQUEST_PATH_CHANGE_PW);\n\n case 7:\n url = _context11.sent;\n params = this.params(_objectSpread({\n current_password: currentServerPassword,\n new_password: newServerPassword\n }, newKeyParams.getPortableValue()));\n _context11.next = 11;\n return this.httpService.postAbsolute(url, params, this.session.accessToken).catch( /*#__PURE__*/function () {\n var _ref = _asyncToGenerator( /*#__PURE__*/_babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0___default.a.mark(function _callee10(errorResponse) {\n return _babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0___default.a.wrap(function _callee10$(_context10) {\n while (1) {\n switch (_context10.prev = _context10.next) {\n case 0:\n if (!_this5.httpService.isErrorResponseExpiredToken(errorResponse)) {\n _context10.next = 2;\n break;\n }\n\n return _context10.abrupt("return", _this5.refreshSessionThenRetryRequest({\n verb: _http_service__WEBPACK_IMPORTED_MODULE_2__["HttpVerb"].Post,\n url: url,\n params: params\n }));\n\n case 2:\n return _context10.abrupt("return", _this5.errorResponseWithFallbackMessage(errorResponse, _Services_api_messages__WEBPACK_IMPORTED_MODULE_5__["API_MESSAGE_GENERIC_CHANGE_PW_FAIL"]));\n\n case 3:\n case "end":\n return _context10.stop();\n }\n }\n }, _callee10);\n }));\n\n return function (_x17) {\n return _ref.apply(this, arguments);\n };\n }());\n\n case 11:\n response = _context11.sent;\n this.changing = false;\n return _context11.abrupt("return", response);\n\n case 14:\n case "end":\n return _context11.stop();\n }\n }\n }, _callee11, this);\n }));\n\n function changePassword(_x14, _x15, _x16) {\n return _changePassword.apply(this, arguments);\n }\n\n return changePassword;\n }()\n }, {\n key: "sync",\n value: function () {\n var _sync = _asyncToGenerator( /*#__PURE__*/_babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0___default.a.mark(function _callee13(payloads, lastSyncToken, paginationToken, limit) {\n var _this$params,\n _this6 = this;\n\n var checkIntegrity,\n contentType,\n customEvent,\n url,\n params,\n response,\n _args13 = arguments;\n return _babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0___default.a.wrap(function _callee13$(_context13) {\n while (1) {\n switch (_context13.prev = _context13.next) {\n case 0:\n checkIntegrity = _args13.length > 4 && _args13[4] !== undefined ? _args13[4] : false;\n contentType = _args13.length > 5 ? _args13[5] : undefined;\n customEvent = _args13.length > 6 ? _args13[6] : undefined;\n\n if (!this.refreshingSession) {\n _context13.next = 5;\n break;\n }\n\n return _context13.abrupt("return", this.createErrorResponse(_Services_api_messages__WEBPACK_IMPORTED_MODULE_5__["API_MESSAGE_TOKEN_REFRESH_IN_PROGRESS"]));\n\n case 5:\n _context13.next = 7;\n return this.path(REQUEST_PATH_SYNC);\n\n case 7:\n url = _context13.sent;\n params = this.params((_this$params = {}, _defineProperty(_this$params, _Services_api_keys__WEBPACK_IMPORTED_MODULE_4__["ApiEndpointParam"].SyncPayloads, payloads.map(function (p) {\n return p.ejected();\n })), _defineProperty(_this$params, _Services_api_keys__WEBPACK_IMPORTED_MODULE_4__["ApiEndpointParam"].LastSyncToken, lastSyncToken), _defineProperty(_this$params, _Services_api_keys__WEBPACK_IMPORTED_MODULE_4__["ApiEndpointParam"].PaginationToken, paginationToken), _defineProperty(_this$params, _Services_api_keys__WEBPACK_IMPORTED_MODULE_4__["ApiEndpointParam"].IntegrityCheck, checkIntegrity), _defineProperty(_this$params, _Services_api_keys__WEBPACK_IMPORTED_MODULE_4__["ApiEndpointParam"].SyncDlLimit, limit), _defineProperty(_this$params, "content_type", contentType), _defineProperty(_this$params, "event", customEvent), _this$params));\n _context13.next = 11;\n return this.httpService.postAbsolute(url, params, this.session.accessToken).catch( /*#__PURE__*/function () {\n var _ref2 = _asyncToGenerator( /*#__PURE__*/_babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0___default.a.mark(function _callee12(errorResponse) {\n return _babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0___default.a.wrap(function _callee12$(_context12) {\n while (1) {\n switch (_context12.prev = _context12.next) {\n case 0:\n if (!_this6.httpService.isErrorResponseExpiredToken(errorResponse)) {\n _context12.next = 2;\n break;\n }\n\n return _context12.abrupt("return", _this6.refreshSessionThenRetryRequest({\n verb: _http_service__WEBPACK_IMPORTED_MODULE_2__["HttpVerb"].Post,\n url: url,\n params: params\n }));\n\n case 2:\n return _context12.abrupt("return", _this6.errorResponseWithFallbackMessage(errorResponse, _Services_api_messages__WEBPACK_IMPORTED_MODULE_5__["API_MESSAGE_GENERIC_SYNC_FAIL"]));\n\n case 3:\n case "end":\n return _context12.stop();\n }\n }\n }, _callee12);\n }));\n\n return function (_x22) {\n return _ref2.apply(this, arguments);\n };\n }());\n\n case 11:\n response = _context13.sent;\n return _context13.abrupt("return", response);\n\n case 13:\n case "end":\n return _context13.stop();\n }\n }\n }, _callee13, this);\n }));\n\n function sync(_x18, _x19, _x20, _x21) {\n return _sync.apply(this, arguments);\n }\n\n return sync;\n }()\n }, {\n key: "refreshSessionThenRetryRequest",\n value: function () {\n var _refreshSessionThenRetryRequest = _asyncToGenerator( /*#__PURE__*/_babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0___default.a.mark(function _callee14(httpRequest) {\n var _this7 = this;\n\n return _babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0___default.a.wrap(function _callee14$(_context14) {\n while (1) {\n switch (_context14.prev = _context14.next) {\n case 0:\n return _context14.abrupt("return", this.refreshSession().then(function (sessionResponse) {\n if (sessionResponse === null || sessionResponse === void 0 ? void 0 : sessionResponse.error) {\n return sessionResponse;\n } else {\n return _this7.httpService.runHttp(_objectSpread({}, httpRequest, {\n authentication: _this7.session.accessToken\n }));\n }\n }));\n\n case 1:\n case "end":\n return _context14.stop();\n }\n }\n }, _callee14, this);\n }));\n\n function refreshSessionThenRetryRequest(_x23) {\n return _refreshSessionThenRetryRequest.apply(this, arguments);\n }\n\n return refreshSessionThenRetryRequest;\n }()\n }, {\n key: "refreshSession",\n value: function () {\n var _refreshSession = _asyncToGenerator( /*#__PURE__*/_babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0___default.a.mark(function _callee16() {\n var _this8 = this;\n\n var url, params, result;\n return _babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0___default.a.wrap(function _callee16$(_context16) {\n while (1) {\n switch (_context16.prev = _context16.next) {\n case 0:\n if (!this.refreshingSession) {\n _context16.next = 2;\n break;\n }\n\n return _context16.abrupt("return", this.createErrorResponse(_Services_api_messages__WEBPACK_IMPORTED_MODULE_5__["API_MESSAGE_TOKEN_REFRESH_IN_PROGRESS"]));\n\n case 2:\n this.refreshingSession = true;\n _context16.next = 5;\n return this.path(REQUEST_PATH_SESSION_REFRESH);\n\n case 5:\n url = _context16.sent;\n params = this.params({\n access_token: this.session.accessToken,\n refresh_token: this.session.refreshToken\n });\n _context16.next = 9;\n return this.httpService.postAbsolute(url, params).then( /*#__PURE__*/function () {\n var _ref3 = _asyncToGenerator( /*#__PURE__*/_babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0___default.a.mark(function _callee15(response) {\n var session;\n return _babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0___default.a.wrap(function _callee15$(_context15) {\n while (1) {\n switch (_context15.prev = _context15.next) {\n case 0:\n session = _session__WEBPACK_IMPORTED_MODULE_1__["Session"].FromResponse(response);\n _context15.next = 3;\n return _this8.setSession(session);\n\n case 3:\n return _context15.abrupt("return", response);\n\n case 4:\n case "end":\n return _context15.stop();\n }\n }\n }, _callee15);\n }));\n\n return function (_x24) {\n return _ref3.apply(this, arguments);\n };\n }()).catch(function (errorResponse) {\n return _this8.errorResponseWithFallbackMessage(errorResponse, _Services_api_messages__WEBPACK_IMPORTED_MODULE_5__["API_MESSAGE_GENERIC_TOKEN_REFRESH_FAIL"]);\n });\n\n case 9:\n result = _context16.sent;\n this.refreshingSession = false;\n return _context16.abrupt("return", result);\n\n case 12:\n case "end":\n return _context16.stop();\n }\n }\n }, _callee16, this);\n }));\n\n function refreshSession() {\n return _refreshSession.apply(this, arguments);\n }\n\n return refreshSession;\n }()\n }]);\n\n return SNApiService;\n}(_Services_pure_service__WEBPACK_IMPORTED_MODULE_6__["PureService"]);//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9saWIvc2VydmljZXMvYXBpL2FwaV9zZXJ2aWNlLnRzLmpzIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vU05MaWJyYXJ5Ly4vbGliL3NlcnZpY2VzL2FwaS9hcGlfc2VydmljZS50cz80MDQ3Il0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IFNlc3Npb24gfSBmcm9tICcuL3Nlc3Npb24nO1xuaW1wb3J0IHsgSHR0cFZlcmIgfSBmcm9tICcuL2h0dHBfc2VydmljZSc7XG5pbXBvcnQgbWVyZ2UgZnJvbSAnbG9kYXNoL21lcmdlJztcbmltcG9ydCB7IEFwaUVuZHBvaW50UGFyYW0gfSBmcm9tICdAU2VydmljZXMvYXBpL2tleXMnO1xuaW1wb3J0ICogYXMgbWVzc2FnZXMgZnJvbSAnQFNlcnZpY2VzL2FwaS9tZXNzYWdlcyc7XG5pbXBvcnQgeyBQdXJlU2VydmljZSB9IGZyb20gJ0BTZXJ2aWNlcy9wdXJlX3NlcnZpY2UnO1xuaW1wb3J0IHsgam9pblBhdGhzIH0gZnJvbSAnQExpYi91dGlscyc7XG5pbXBvcnQgeyBTdG9yYWdlS2V5IH0gZnJvbSAnQExpYi9zdG9yYWdlX2tleXMnO1xuY29uc3QgUkVRVUVTVF9QQVRIX0tFWV9QQVJBTVMgPSAnL2F1dGgvcGFyYW1zJztcbmNvbnN0IFJFUVVFU1RfUEFUSF9SRUdJU1RFUiA9ICcvYXV0aCc7XG5jb25zdCBSRVFVRVNUX1BBVEhfTE9HSU4gPSAnL2F1dGgvc2lnbl9pbic7XG5jb25zdCBSRVFVRVNUX1BBVEhfQ0hBTkdFX1BXID0gJy9hdXRoL2NoYW5nZV9wdyc7XG5jb25zdCBSRVFVRVNUX1BBVEhfU1lOQyA9ICcvaXRlbXMvc3luYyc7XG5jb25zdCBSRVFVRVNUX1BBVEhfTE9HT1VUID0gJy9hdXRoL3NpZ25fb3V0JztcbmNvbnN0IFJFUVVFU1RfUEFUSF9TRVNTSU9OX1JFRlJFU0ggPSAnL3Nlc3Npb24vcmVmcmVzaCc7XG5jb25zdCBBUElfVkVSU0lPTiA9ICcyMDIwMDExNSc7XG5leHBvcnQgY2xhc3MgU05BcGlTZXJ2aWNlIGV4dGVuZHMgUHVyZVNlcnZpY2Uge1xuICAgIGNvbnN0cnVjdG9yKGh0dHBTZXJ2aWNlLCBzdG9yYWdlU2VydmljZSkge1xuICAgICAgICBzdXBlcigpO1xuICAgICAgICB0aGlzLnJlZ2lzdGVyaW5nID0gZmFsc2U7XG4gICAgICAgIHRoaXMuYXV0aGVudGljYXRpbmcgPSBmYWxzZTtcbiAgICAgICAgdGhpcy5jaGFuZ2luZyA9IGZhbHNlO1xuICAgICAgICB0aGlzLnJlZnJlc2hpbmdTZXNzaW9uID0gZmFsc2U7XG4gICAgICAgIHRoaXMuaHR0cFNlcnZpY2UgPSBodHRwU2VydmljZTtcbiAgICAgICAgdGhpcy5zdG9yYWdlU2VydmljZSA9IHN0b3JhZ2VTZXJ2aWNlO1xuICAgIH1cbiAgICAvKiogQG92ZXJyaWRlICovXG4gICAgZGVpbml0KCkge1xuICAgICAgICB0aGlzLmh0dHBTZXJ2aWNlID0gdW5kZWZpbmVkO1xuICAgICAgICB0aGlzLnN0b3JhZ2VTZXJ2aWNlID0gdW5kZWZpbmVkO1xuICAgICAgICB0aGlzLmhvc3QgPSB1bmRlZmluZWQ7XG4gICAgICAgIHRoaXMuc2Vzc2lvbiA9IHVuZGVmaW5lZDtcbiAgICAgICAgc3VwZXIuZGVpbml0KCk7XG4gICAgfVxuICAgIGFzeW5jIGxvYWRIb3N0KCkge1xuICAgICAgICBjb25zdCBzdG9yZWRWYWx1ZSA9IGF3YWl0IHRoaXMuc3RvcmFnZVNlcnZpY2UuZ2V0VmFsdWUoU3RvcmFnZUtleS5TZXJ2ZXJIb3N0KTtcbiAgICAgICAgdGhpcy5ob3N0ID0gc3RvcmVkVmFsdWUgfHwgd2luZG93Ll9kZWZhdWx0X3N5bmNfc2VydmVyO1xuICAgIH1cbiAgICBhc3luYyBzZXRIb3N0KGhvc3QpIHtcbiAgICAgICAgdGhpcy5ob3N0ID0gaG9zdDtcbiAgICAgICAgYXdhaXQgdGhpcy5zdG9yYWdlU2VydmljZS5zZXRWYWx1ZShTdG9yYWdlS2V5LlNlcnZlckhvc3QsIGhvc3QpO1xuICAgIH1cbiAgICBhc3luYyBnZXRIb3N0KCkge1xuICAgICAgICByZXR1cm4gdGhpcy5ob3N0O1xuICAgIH1cbiAgICBhc3luYyBzZXRTZXNzaW9uKHNlc3Npb24sIHBlcnNpc3QgPSB0cnVlKSB7XG4gICAgICAgIHRoaXMuc2Vzc2lvbiA9IHNlc3Npb247XG4gICAgICAgIGlmIChwZXJzaXN0KSB7XG4gICAgICAgICAgICBhd2FpdCB0aGlzLnN0b3JhZ2VTZXJ2aWNlLnNldFZhbHVlKFN0b3JhZ2VLZXkuU2Vzc2lvbiwgc2Vzc2lvbik7XG4gICAgICAgIH1cbiAgICB9XG4gICAgZ2V0U2Vzc2lvbigpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuc2Vzc2lvbjtcbiAgICB9XG4gICAgYXN5bmMgcGF0aChwYXRoKSB7XG4gICAgICAgIGNvbnN0IGhvc3QgPSBhd2FpdCB0aGlzLmdldEhvc3QoKTtcbiAgICAgICAgaWYgKCFob3N0KSB7XG4gICAgICAgICAgICB0aHJvdyBgQXR0ZW1wdGluZyB0byBidWlsZCBwYXRoICR7cGF0aH0gd2l0aCBubyBob3N0LmA7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKCFwYXRoKSB7XG4gICAgICAgICAgICB0aHJvdyAnQXR0ZW1wdGluZyB0byBidWlsZCBwYXRoIHdpdGggbnVsbCBwYXRoLic7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIGpvaW5QYXRocyhob3N0LCBwYXRoKTtcbiAgICB9XG4gICAgcGFyYW1zKGluUGFyYW1zKSB7XG4gICAgICAgIGNvbnN0IHBhcmFtcyA9IG1lcmdlKGluUGFyYW1zLCB7XG4gICAgICAgICAgICBbQXBpRW5kcG9pbnRQYXJhbS5BcGlWZXJzaW9uXTogQVBJX1ZFUlNJT05cbiAgICAgICAgfSk7XG4gICAgICAgIHJldHVybiBwYXJhbXM7XG4gICAgfVxuICAgIGNyZWF0ZUVycm9yUmVzcG9uc2UobWVzc2FnZSkge1xuICAgICAgICByZXR1cm4geyBlcnJvcjogeyBtZXNzYWdlOiBtZXNzYWdlIH0gfTtcbiAgICB9XG4gICAgZXJyb3JSZXNwb25zZVdpdGhGYWxsYmFja01lc3NhZ2UocmVzcG9uc2UsIG1lc3NhZ2UpIHtcbiAgICAgICAgaWYgKCFyZXNwb25zZS5lcnJvci5tZXNzYWdlKSB7XG4gICAgICAgICAgICByZXNwb25zZS5lcnJvci5tZXNzYWdlID0gbWVzc2FnZTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gcmVzcG9uc2U7XG4gICAgfVxuICAgIC8qKlxuICAgICAqIEBwYXJhbSBtZmFLZXlQYXRoICBUaGUgcGFyYW1zIHBhdGggdGhlIHNlcnZlciBleHBlY3RzIGZvciBhdXRoZW50aWNhdGlvbiBhZ2FpbnN0XG4gICAgICogICAgICAgICAgICAgICAgICAgIGEgcGFydGljdWxhciBtZmEgY2hhbGxlbmdlLiBBIHZhbHVlIG9mIGZvbyB3b3VsZCBtZWFuIHRoZSBzZXJ2ZXJcbiAgICAgKiAgICAgICAgICAgICAgICAgICAgd291bGQgcmVjZWl2ZSBwYXJhbWV0ZXJzIGFzIHBhcmFtc1snZm9vJ10gd2l0aCB2YWx1ZSBlcXVhbCB0byBtZmFDb2RlLlxuICAgICAqIEBwYXJhbSBtZmFDb2RlICAgICBUaGUgbWZhIGNoYWxsZW5nZSByZXNwb25zZSB2YWx1ZS5cbiAgICAgKi9cbiAgICBhc3luYyBnZXRBY2NvdW50S2V5UGFyYW1zKGVtYWlsLCBtZmFLZXlQYXRoLCBtZmFDb2RlKSB7XG4gICAgICAgIGNvbnN0IHVybCA9IGF3YWl0IHRoaXMucGF0aChSRVFVRVNUX1BBVEhfS0VZX1BBUkFNUyk7XG4gICAgICAgIGNvbnN0IHBhcmFtcyA9IHRoaXMucGFyYW1zKHtcbiAgICAgICAgICAgIGVtYWlsOiBlbWFpbFxuICAgICAgICB9KTtcbiAgICAgICAgaWYgKG1mYUtleVBhdGgpIHtcbiAgICAgICAgICAgIHBhcmFtc1ttZmFLZXlQYXRoXSA9IG1mYUNvZGU7XG4gICAgICAgIH1cbiAgICAgICAgY29uc3QgcmVzcG9uc2UgPSBhd2FpdCB0aGlzLmh0dHBTZXJ2aWNlLmdldEFic29sdXRlKHVybCwgcGFyYW1zKVxuICAgICAgICAgICAgLmNhdGNoKChlcnJvclJlc3BvbnNlKSA9PiB7XG4gICAgICAgICAgICByZXR1cm4gdGhpcy5lcnJvclJlc3BvbnNlV2l0aEZhbGxiYWNrTWVzc2FnZShlcnJvclJlc3BvbnNlLCBtZXNzYWdlcy5BUElfTUVTU0FHRV9HRU5FUklDX0lOVkFMSURfTE9HSU4pO1xuICAgICAgICB9KTtcbiAgICAgICAgcmV0dXJuIHJlc3BvbnNlO1xuICAgIH1cbiAgICBhc3luYyByZWdpc3RlcihlbWFpbCwgc2VydmVyUGFzc3dvcmQsIGtleVBhcmFtcykge1xuICAgICAgICBpZiAodGhpcy5yZWdpc3RlcmluZykge1xuICAgICAgICAgICAgcmV0dXJuIHRoaXMuY3JlYXRlRXJyb3JSZXNwb25zZShtZXNzYWdlcy5BUElfTUVTU0FHRV9SRUdJU1RSQVRJT05fSU5fUFJPR1JFU1MpO1xuICAgICAgICB9XG4gICAgICAgIHRoaXMucmVnaXN0ZXJpbmcgPSB0cnVlO1xuICAgICAgICBjb25zdCB1cmwgPSBhd2FpdCB0aGlzLnBhdGgoUkVRVUVTVF9QQVRIX1JFR0lTVEVSKTtcbiAgICAgICAgY29uc3QgcGFyYW1zID0gdGhpcy5wYXJhbXMoe1xuICAgICAgICAgICAgcGFzc3dvcmQ6IHNlcnZlclBhc3N3b3JkLFxuICAgICAgICAgICAgZW1haWw6IGVtYWlsLFxuICAgICAgICAgICAgLi4ua2V5UGFyYW1zLmdldFBvcnRhYmxlVmFsdWUoKVxuICAgICAgICB9KTtcbiAgICAgICAgY29uc3QgcmVzcG9uc2UgPSBhd2FpdCB0aGlzLmh0dHBTZXJ2aWNlLnBvc3RBYnNvbHV0ZSh1cmwsIHBhcmFtcylcbiAgICAgICAgICAgIC5jYXRjaCgoZXJyb3JSZXNwb25zZSkgPT4ge1xuICAgICAgICAgICAgcmV0dXJuIHRoaXMuZXJyb3JSZXNwb25zZVdpdGhGYWxsYmFja01lc3NhZ2UoZXJyb3JSZXNwb25zZSwgbWVzc2FnZXMuQVBJX01FU1NBR0VfR0VORVJJQ19SRUdJU1RSQVRJT05fRkFJTCk7XG4gICAgICAgIH0pO1xuICAgICAgICB0aGlzLnJlZ2lzdGVyaW5nID0gZmFsc2U7XG4gICAgICAgIHJldHVybiByZXNwb25zZTtcbiAgICB9XG4gICAgYXN5bmMgc2lnbkluKGVtYWlsLCBzZXJ2ZXJQYXNzd29yZCwgbWZhS2V5UGF0aCwgbWZhQ29kZSkge1xuICAgICAgICBpZiAodGhpcy5hdXRoZW50aWNhdGluZykge1xuICAgICAgICAgICAgcmV0dXJuIHRoaXMuY3JlYXRlRXJyb3JSZXNwb25zZShtZXNzYWdlcy5BUElfTUVTU0FHRV9MT0dJTl9JTl9QUk9HUkVTUyk7XG4gICAgICAgIH1cbiAgICAgICAgdGhpcy5hdXRoZW50aWNhdGluZyA9IHRydWU7XG4gICAgICAgIGNvbnN0IHVybCA9IGF3YWl0IHRoaXMucGF0aChSRVFVRVNUX1BBVEhfTE9HSU4pO1xuICAgICAgICBjb25zdCBwYXJhbXMgPSB0aGlzLnBhcmFtcyh7XG4gICAgICAgICAgICBlbWFpbDogZW1haWwsXG4gICAgICAgICAgICBwYXNzd29yZDogc2VydmVyUGFzc3dvcmRcbiAgICAgICAgfSk7XG4gICAgICAgIGlmIChtZmFLZXlQYXRoKSB7XG4gICAgICAgICAgICBwYXJhbXNbbWZhS2V5UGF0aF0gPSBtZmFDb2RlO1xuICAgICAgICB9XG4gICAgICAgIGNvbnN0IHJlc3BvbnNlID0gYXdhaXQgdGhpcy5odHRwU2VydmljZS5wb3N0QWJzb2x1dGUodXJsLCBwYXJhbXMpLmNhdGNoKChlcnJvclJlc3BvbnNlKSA9PiB7XG4gICAgICAgICAgICByZXR1cm4gdGhpcy5lcnJvclJlc3BvbnNlV2l0aEZhbGxiYWNrTWVzc2FnZShlcnJvclJlc3BvbnNlLCBtZXNzYWdlcy5BUElfTUVTU0FHRV9HRU5FUklDX0lOVkFMSURfTE9HSU4pO1xuICAgICAgICB9KTtcbiAgICAgICAgdGhpcy5hdXRoZW50aWNhdGluZyA9IGZhbHNlO1xuICAgICAgICByZXR1cm4gcmVzcG9uc2U7XG4gICAgfVxuICAgIGFzeW5jIHNpZ25PdXQoKSB7XG4gICAgICAgIGNvbnN0IHVybCA9IGF3YWl0IHRoaXMucGF0aChSRVFVRVNUX1BBVEhfTE9HT1VUKTtcbiAgICAgICAgcmV0dXJuIHRoaXMuaHR0cFNlcnZpY2UucG9zdEFic29sdXRlKHVybCwgdW5kZWZpbmVkLCB0aGlzLnNlc3Npb24uYWNjZXNzVG9rZW4pO1xuICAgIH1cbiAgICBhc3luYyBjaGFuZ2VQYXNzd29yZChjdXJyZW50U2VydmVyUGFzc3dvcmQsIG5ld1NlcnZlclBhc3N3b3JkLCBuZXdLZXlQYXJhbXMpIHtcbiAgICAgICAgaWYgKHRoaXMuY2hhbmdpbmcpIHtcbiAgICAgICAgICAgIHJldHVybiB0aGlzLmNyZWF0ZUVycm9yUmVzcG9uc2UobWVzc2FnZXMuQVBJX01FU1NBR0VfQ0hBTkdFX1BXX0lOX1BST0dSRVNTKTtcbiAgICAgICAgfVxuICAgICAgICBpZiAodGhpcy5yZWZyZXNoaW5nU2Vzc2lvbikge1xuICAgICAgICAgICAgcmV0dXJuIHRoaXMuY3JlYXRlRXJyb3JSZXNwb25zZShtZXNzYWdlcy5BUElfTUVTU0FHRV9UT0tFTl9SRUZSRVNIX0lOX1BST0dSRVNTKTtcbiAgICAgICAgfVxuICAgICAgICB0aGlzLmNoYW5naW5nID0gdHJ1ZTtcbiAgICAgICAgY29uc3QgdXJsID0gYXdhaXQgdGhpcy5wYXRoKFJFUVVFU1RfUEFUSF9DSEFOR0VfUFcpO1xuICAgICAgICBjb25zdCBwYXJhbXMgPSB0aGlzLnBhcmFtcyh7XG4gICAgICAgICAgICBjdXJyZW50X3Bhc3N3b3JkOiBjdXJyZW50U2VydmVyUGFzc3dvcmQsXG4gICAgICAgICAgICBuZXdfcGFzc3dvcmQ6IG5ld1NlcnZlclBhc3N3b3JkLFxuICAgICAgICAgICAgLi4ubmV3S2V5UGFyYW1zLmdldFBvcnRhYmxlVmFsdWUoKVxuICAgICAgICB9KTtcbiAgICAgICAgY29uc3QgcmVzcG9uc2UgPSBhd2FpdCB0aGlzLmh0dHBTZXJ2aWNlLnBvc3RBYnNvbHV0ZSh1cmwsIHBhcmFtcywgdGhpcy5zZXNzaW9uLmFjY2Vzc1Rva2VuKS5jYXRjaChhc3luYyAoZXJyb3JSZXNwb25zZSkgPT4ge1xuICAgICAgICAgICAgaWYgKHRoaXMuaHR0cFNlcnZpY2UuaXNFcnJvclJlc3BvbnNlRXhwaXJlZFRva2VuKGVycm9yUmVzcG9uc2UpKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIHRoaXMucmVmcmVzaFNlc3Npb25UaGVuUmV0cnlSZXF1ZXN0KHtcbiAgICAgICAgICAgICAgICAgICAgdmVyYjogSHR0cFZlcmIuUG9zdCxcbiAgICAgICAgICAgICAgICAgICAgdXJsLFxuICAgICAgICAgICAgICAgICAgICBwYXJhbXNcbiAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHJldHVybiB0aGlzLmVycm9yUmVzcG9uc2VXaXRoRmFsbGJhY2tNZXNzYWdlKGVycm9yUmVzcG9uc2UsIG1lc3NhZ2VzLkFQSV9NRVNTQUdFX0dFTkVSSUNfQ0hBTkdFX1BXX0ZBSUwpO1xuICAgICAgICB9KTtcbiAgICAgICAgdGhpcy5jaGFuZ2luZyA9IGZhbHNlO1xuICAgICAgICByZXR1cm4gcmVzcG9uc2U7XG4gICAgfVxuICAgIGFzeW5jIHN5bmMocGF5bG9hZHMsIGxhc3RTeW5jVG9rZW4sIHBhZ2luYXRpb25Ub2tlbiwgbGltaXQsIGNoZWNrSW50ZWdyaXR5ID0gZmFsc2UsIGNvbnRlbnRUeXBlLCBjdXN0b21FdmVudCkge1xuICAgICAgICBpZiAodGhpcy5yZWZyZXNoaW5nU2Vzc2lvbikge1xuICAgICAgICAgICAgcmV0dXJuIHRoaXMuY3JlYXRlRXJyb3JSZXNwb25zZShtZXNzYWdlcy5BUElfTUVTU0FHRV9UT0tFTl9SRUZSRVNIX0lOX1BST0dSRVNTKTtcbiAgICAgICAgfVxuICAgICAgICBjb25zdCB1cmwgPSBhd2FpdCB0aGlzLnBhdGgoUkVRVUVTVF9QQVRIX1NZTkMpO1xuICAgICAgICBjb25zdCBwYXJhbXMgPSB0aGlzLnBhcmFtcyh7XG4gICAgICAgICAgICBbQXBpRW5kcG9pbnRQYXJhbS5TeW5jUGF5bG9hZHNdOiBwYXlsb2Fkcy5tYXAoKHApID0+IHAuZWplY3RlZCgpKSxcbiAgICAgICAgICAgIFtBcGlFbmRwb2ludFBhcmFtLkxhc3RTeW5jVG9rZW5dOiBsYXN0U3luY1Rva2VuLFxuICAgICAgICAgICAgW0FwaUVuZHBvaW50UGFyYW0uUGFnaW5hdGlvblRva2VuXTogcGFnaW5hdGlvblRva2VuLFxuICAgICAgICAgICAgW0FwaUVuZHBvaW50UGFyYW0uSW50ZWdyaXR5Q2hlY2tdOiBjaGVja0ludGVncml0eSxcbiAgICAgICAgICAgIFtBcGlFbmRwb2ludFBhcmFtLlN5bmNEbExpbWl0XTogbGltaXQsXG4gICAgICAgICAgICBjb250ZW50X3R5cGU6IGNvbnRlbnRUeXBlLFxuICAgICAgICAgICAgZXZlbnQ6IGN1c3RvbUV2ZW50XG4gICAgICAgIH0pO1xuICAgICAgICBjb25zdCByZXNwb25zZSA9IGF3YWl0IHRoaXMuaHR0cFNlcnZpY2UucG9zdEFic29sdXRlKHVybCwgcGFyYW1zLCB0aGlzLnNlc3Npb24uYWNjZXNzVG9rZW4pLmNhdGNoKGFzeW5jIChlcnJvclJlc3BvbnNlKSA9PiB7XG4gICAgICAgICAgICBpZiAodGhpcy5odHRwU2VydmljZS5pc0Vycm9yUmVzcG9uc2VFeHBpcmVkVG9rZW4oZXJyb3JSZXNwb25zZSkpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gdGhpcy5yZWZyZXNoU2Vzc2lvblRoZW5SZXRyeVJlcXVlc3Qoe1xuICAgICAgICAgICAgICAgICAgICB2ZXJiOiBIdHRwVmVyYi5Qb3N0LFxuICAgICAgICAgICAgICAgICAgICB1cmwsXG4gICAgICAgICAgICAgICAgICAgIHBhcmFtc1xuICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgcmV0dXJuIHRoaXMuZXJyb3JSZXNwb25zZVdpdGhGYWxsYmFja01lc3NhZ2UoZXJyb3JSZXNwb25zZSwgbWVzc2FnZXMuQVBJX01FU1NBR0VfR0VORVJJQ19TWU5DX0ZBSUwpO1xuICAgICAgICB9KTtcbiAgICAgICAgcmV0dXJuIHJlc3BvbnNlO1xuICAgIH1cbiAgICBhc3luYyByZWZyZXNoU2Vzc2lvblRoZW5SZXRyeVJlcXVlc3QoaHR0cFJlcXVlc3QpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMucmVmcmVzaFNlc3Npb24oKS50aGVuKChzZXNzaW9uUmVzcG9uc2UpID0+IHtcbiAgICAgICAgICAgIGlmIChzZXNzaW9uUmVzcG9uc2U/LmVycm9yKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIHNlc3Npb25SZXNwb25zZTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgICAgIHJldHVybiB0aGlzLmh0dHBTZXJ2aWNlLnJ1bkh0dHAoe1xuICAgICAgICAgICAgICAgICAgICAuLi5odHRwUmVxdWVzdCxcbiAgICAgICAgICAgICAgICAgICAgYXV0aGVudGljYXRpb246IHRoaXMuc2Vzc2lvbi5hY2Nlc3NUb2tlblxuICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgfVxuICAgICAgICB9KTtcbiAgICB9XG4gICAgYXN5bmMgcmVmcmVzaFNlc3Npb24oKSB7XG4gICAgICAgIGlmICh0aGlzLnJlZnJlc2hpbmdTZXNzaW9uKSB7XG4gICAgICAgICAgICByZXR1cm4gdGhpcy5jcmVhdGVFcnJvclJlc3BvbnNlKG1lc3NhZ2VzLkFQSV9NRVNTQUdFX1RPS0VOX1JFRlJFU0hfSU5fUFJPR1JFU1MpO1xuICAgICAgICB9XG4gICAgICAgIHRoaXMucmVmcmVzaGluZ1Nlc3Npb24gPSB0cnVlO1xuICAgICAgICBjb25zdCB1cmwgPSBhd2FpdCB0aGlzLnBhdGgoUkVRVUVTVF9QQVRIX1NFU1NJT05fUkVGUkVTSCk7XG4gICAgICAgIGNvbnN0IHBhcmFtcyA9IHRoaXMucGFyYW1zKHtcbiAgICAgICAgICAgIGFjY2Vzc190b2tlbjogdGhpcy5zZXNzaW9uLmFjY2Vzc1Rva2VuLFxuICAgICAgICAgICAgcmVmcmVzaF90b2tlbjogdGhpcy5zZXNzaW9uLnJlZnJlc2hUb2tlblxuICAgICAgICB9KTtcbiAgICAgICAgY29uc3QgcmVzdWx0ID0gYXdhaXQgdGhpcy5odHRwU2VydmljZS5wb3N0QWJzb2x1dGUodXJsLCBwYXJhbXMpLnRoZW4oYXN5bmMgKHJlc3BvbnNlKSA9PiB7XG4gICAgICAgICAgICBjb25zdCBzZXNzaW9uID0gU2Vzc2lvbi5Gcm9tUmVzcG9uc2UocmVzcG9uc2UpO1xuICAgICAgICAgICAgYXdhaXQgdGhpcy5zZXRTZXNzaW9uKHNlc3Npb24pO1xuICAgICAgICAgICAgcmV0dXJuIHJlc3BvbnNlO1xuICAgICAgICB9KS5jYXRjaCgoZXJyb3JSZXNwb25zZSkgPT4ge1xuICAgICAgICAgICAgcmV0dXJuIHRoaXMuZXJyb3JSZXNwb25zZVdpdGhGYWxsYmFja01lc3NhZ2UoZXJyb3JSZXNwb25zZSwgbWVzc2FnZXMuQVBJX01FU1NBR0VfR0VORVJJQ19UT0tFTl9SRUZSRVNIX0ZBSUwpO1xuICAgICAgICB9KTtcbiAgICAgICAgdGhpcy5yZWZyZXNoaW5nU2Vzc2lvbiA9IGZhbHNlO1xuICAgICAgICByZXR1cm4gcmVzdWx0O1xuICAgIH1cbn1cbiJdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUFBO0FBQUE7QUFDQTtBQURBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQVBBO0FBUUE7QUFDQTtBQUNBO0FBQ0E7QUFaQTtBQUFBO0FBQUE7QUFZQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQWpCQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQ0E7QUFEQTtBQW1CQTtBQUNBO0FBQ0E7QUFyQkE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFDQTtBQURBO0FBQUE7QUFBQTtBQUNBO0FBREE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUF1QkE7QUF2QkE7QUFBQTtBQUNBO0FBREE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFDQTtBQURBO0FBQUE7QUFBQTtBQUNBO0FBREE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUNBO0FBREE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFDQTtBQURBO0FBQUE7QUFBQTtBQUNBO0FBREE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBNkJBO0FBQ0E7QUFDQTtBQS9CQTtBQUFBO0FBQUE7QUFBQTtBQUNBO0FBREE7QUFBQTtBQUNBO0FBREE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFDQTtBQURBO0FBQUE7QUFBQTtBQUNBO0FBREE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQW9DQTtBQUNBO0FBckNBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFDQTtBQURBO0FBdUNBO0FBQ0E7QUF4Q0E7QUFBQTtBQUFBO0FBQUE7QUFDQTtBQURBO0FBQ0E7QUFEQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQ0E7QUFEQTtBQUNBO0FBREE7QUFBQTtBQUNBO0FBREE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFDQTtBQURBO0FBQUE7QUFBQTtBQUNBO0FBREE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQWlEQTtBQUdBO0FBQ0E7QUFyREE7QUFBQTtBQUFBO0FBdURBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFDQTtBQXhEQTtBQUFBO0FBQUE7QUEwREE7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7Ozs7Ozs7QUEvREE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUNBO0FBREE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFDQTtBQURBO0FBc0VBO0FBQ0E7QUFDQTtBQURBO0FBQ0E7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQTdFQTtBQUFBO0FBK0VBO0FBQ0E7QUFDQTtBQWpGQTtBQTZFQTtBQTdFQTtBQUNBO0FBREE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFDQTtBQURBO0FBQUE7QUFBQTtBQUNBO0FBREE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFDQTtBQURBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUNBO0FBREE7QUFDQTtBQURBO0FBdUZBO0FBdkZBO0FBQUE7QUFDQTtBQURBO0FBd0ZBO0FBQ0E7QUFDQTtBQUNBO0FBRkE7QUF6RkE7QUFBQTtBQWdHQTtBQUNBO0FBQ0E7QUFsR0E7QUE4RkE7QUFJQTtBQWxHQTtBQUNBO0FBREE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFDQTtBQURBO0FBQUE7QUFBQTtBQUNBO0FBREE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFDQTtBQURBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUNBO0FBREE7QUFDQTtBQURBO0FBeUdBO0FBekdBO0FBQUE7QUFDQTtBQURBO0FBMEdBO0FBQ0E7QUFDQTtBQUNBO0FBRkE7QUFDQTtBQUdBO0FBQ0E7QUFDQTtBQUNBO0FBbEhBO0FBQUE7QUFtSEE7QUFDQTtBQUNBO0FBckhBO0FBa0hBO0FBR0E7QUFySEE7QUFDQTtBQURBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQ0E7QUFEQTtBQUFBO0FBQUE7QUFDQTtBQURBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQ0E7QUFEQTtBQXlIQTtBQXpIQTtBQUNBO0FBREE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFDQTtBQURBO0FBQUE7QUFBQTtBQUNBO0FBREE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFDQTtBQURBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUNBO0FBREE7QUFDQTtBQURBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFDQTtBQURBO0FBQ0E7QUFEQTtBQW1JQTtBQW5JQTtBQUFBO0FBQ0E7QUFEQTtBQW9JQTtBQUNBO0FBQ0E7QUFDQTtBQUZBO0FBcklBO0FBQUE7QUEwSUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQ0E7QUFEQTtBQUdBO0FBQ0E7QUFDQTtBQUhBO0FBQ0E7QUFIQTtBQUFBO0FBQ0E7QUFEQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUNBO0FBREE7QUFBQTtBQUFBO0FBQUE7QUFDQTtBQTNJQTtBQTBJQTtBQVVBO0FBcEpBO0FBQ0E7QUFEQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUNBO0FBREE7QUFBQTtBQUFBO0FBQ0E7QUFEQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQ0E7QUFEQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBdUpBO0FBQUE7QUFBQTtBQUNBO0FBeEpBO0FBQUE7QUFBQTtBQUFBO0FBQ0E7QUFEQTtBQUNBO0FBREE7QUFBQTtBQUFBO0FBQ0E7QUFEQTtBQTJKQTtBQUNBO0FBQ0E7QUFBQTtBQTdKQTtBQUFBO0FBcUtBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUNBO0FBREE7QUFHQTtBQUNBO0FBQ0E7QUFIQTtBQUNBO0FBSEE7QUFBQTtBQUNBO0FBREE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFDQTtBQURBO0FBQUE7QUFBQTtBQUFBO0FBQ0E7QUF0S0E7QUFxS0E7QUFyS0E7QUFDQTtBQURBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQ0E7QUFEQTtBQUFBO0FBQUE7QUFDQTtBQURBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQ0E7QUFEQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBbUxBO0FBQ0E7QUFDQTtBQUVBO0FBRUE7QUFGQTtBQUlBO0FBQ0E7QUFDQTtBQTdMQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUNBO0FBREE7QUFBQTtBQUFBO0FBQ0E7QUFEQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUNBO0FBREE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQ0E7QUFEQTtBQUNBO0FBREE7QUFrTUE7QUFsTUE7QUFBQTtBQUNBO0FBREE7QUFtTUE7QUFDQTtBQUNBO0FBQ0E7QUFGQTtBQXBNQTtBQUFBO0FBd01BO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUNBO0FBREE7QUFBQTtBQUNBO0FBREE7QUFBQTtBQUNBO0FBREE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFDQTtBQURBO0FBQUE7QUFBQTtBQUFBO0FBS0E7QUFDQTtBQUNBO0FBL01BO0FBd01BO0FBT0E7QUEvTUE7QUFDQTtBQURBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQ0E7QUFEQTtBQUFBO0FBQUE7QUFDQTtBQURBO0FBQUE7QUFBQTtBQUNBO0FBREE7QUFBQSIsInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./lib/services/api/api_service.ts\n')},"./lib/services/api/http_service.ts":
|
||
/*!******************************************!*\
|
||
!*** ./lib/services/api/http_service.ts ***!
|
||
\******************************************/
|
||
/*! exports provided: HttpVerb, SNHttpService */function(module,__webpack_exports__,__webpack_require__){"use strict";eval('__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "HttpVerb", function() { return HttpVerb; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "SNHttpService", function() { return SNHttpService; });\n/* harmony import */ var _babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @babel/runtime/regenerator */ "./node_modules/@babel/runtime/regenerator/index.js");\n/* harmony import */ var _babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var _Lib_services_pure_service__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! @Lib/services/pure_service */ "./lib/services/pure_service.ts");\n\n\nfunction _typeof(obj) { "@babel/helpers - typeof"; if (typeof Symbol === "function" && typeof Symbol.iterator === "symbol") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }; } return _typeof(obj); }\n\nfunction asyncGeneratorStep(gen, resolve, reject, _next, _throw, key, arg) { try { var info = gen[key](arg); var value = info.value; } catch (error) { reject(error); return; } if (info.done) { resolve(value); } else { Promise.resolve(value).then(_next, _throw); } }\n\nfunction _asyncToGenerator(fn) { return function () { var self = this, args = arguments; return new Promise(function (resolve, reject) { var gen = fn.apply(self, args); function _next(value) { asyncGeneratorStep(gen, resolve, reject, _next, _throw, "next", value); } function _throw(err) { asyncGeneratorStep(gen, resolve, reject, _next, _throw, "throw", err); } _next(undefined); }); }; }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } }\n\nfunction _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); } }\n\nfunction _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; }\n\nfunction _possibleConstructorReturn(self, call) { if (call && (_typeof(call) === "object" || typeof call === "function")) { return call; } return _assertThisInitialized(self); }\n\nfunction _assertThisInitialized(self) { if (self === void 0) { throw new ReferenceError("this hasn\'t been initialised - super() hasn\'t been called"); } return self; }\n\nfunction _getPrototypeOf(o) { _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function _getPrototypeOf(o) { return o.__proto__ || Object.getPrototypeOf(o); }; return _getPrototypeOf(o); }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== "function" && superClass !== null) { throw new TypeError("Super expression must either be null or a function"); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, writable: true, configurable: true } }); if (superClass) _setPrototypeOf(subClass, superClass); }\n\nfunction _setPrototypeOf(o, p) { _setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) { o.__proto__ = p; return o; }; return _setPrototypeOf(o, p); }\n\n\nvar HttpVerb;\n\n(function (HttpVerb) {\n HttpVerb["Get"] = "get";\n HttpVerb["Post"] = "post";\n HttpVerb["Patch"] = "patch";\n})(HttpVerb || (HttpVerb = {}));\n\nvar REQUEST_READY_STATE_COMPLETED = 4;\nvar HTTP_STATUS_MIN_SUCCESS = 200;\nvar HTTP_STATUS_MAX_SUCCESS = 299;\nvar HTTP_STATUS_EXPIRED_ACCESS_TOKEN = 498;\n/**\n * A non-SNJS specific wrapper for XMLHttpRequests\n */\n\nvar SNHttpService = /*#__PURE__*/function (_PureService) {\n _inherits(SNHttpService, _PureService);\n\n function SNHttpService() {\n _classCallCheck(this, SNHttpService);\n\n return _possibleConstructorReturn(this, _getPrototypeOf(SNHttpService).apply(this, arguments));\n }\n\n _createClass(SNHttpService, [{\n key: "getAbsolute",\n value: function () {\n var _getAbsolute = _asyncToGenerator( /*#__PURE__*/_babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0___default.a.mark(function _callee(url, params, authentication) {\n return _babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0___default.a.wrap(function _callee$(_context) {\n while (1) {\n switch (_context.prev = _context.next) {\n case 0:\n return _context.abrupt("return", this.runHttp({\n url: url,\n params: params,\n verb: HttpVerb.Get,\n authentication: authentication\n }));\n\n case 1:\n case "end":\n return _context.stop();\n }\n }\n }, _callee, this);\n }));\n\n function getAbsolute(_x, _x2, _x3) {\n return _getAbsolute.apply(this, arguments);\n }\n\n return getAbsolute;\n }()\n }, {\n key: "postAbsolute",\n value: function () {\n var _postAbsolute = _asyncToGenerator( /*#__PURE__*/_babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0___default.a.mark(function _callee2(url, params, authentication) {\n return _babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0___default.a.wrap(function _callee2$(_context2) {\n while (1) {\n switch (_context2.prev = _context2.next) {\n case 0:\n return _context2.abrupt("return", this.runHttp({\n url: url,\n params: params,\n verb: HttpVerb.Post,\n authentication: authentication\n }));\n\n case 1:\n case "end":\n return _context2.stop();\n }\n }\n }, _callee2, this);\n }));\n\n function postAbsolute(_x4, _x5, _x6) {\n return _postAbsolute.apply(this, arguments);\n }\n\n return postAbsolute;\n }()\n }, {\n key: "patchAbsolute",\n value: function () {\n var _patchAbsolute = _asyncToGenerator( /*#__PURE__*/_babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0___default.a.mark(function _callee3(url, params, authentication) {\n return _babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0___default.a.wrap(function _callee3$(_context3) {\n while (1) {\n switch (_context3.prev = _context3.next) {\n case 0:\n return _context3.abrupt("return", this.runHttp({\n url: url,\n params: params,\n verb: HttpVerb.Patch,\n authentication: authentication\n }));\n\n case 1:\n case "end":\n return _context3.stop();\n }\n }\n }, _callee3, this);\n }));\n\n function patchAbsolute(_x7, _x8, _x9) {\n return _patchAbsolute.apply(this, arguments);\n }\n\n return patchAbsolute;\n }()\n }, {\n key: "runHttp",\n value: function () {\n var _runHttp = _asyncToGenerator( /*#__PURE__*/_babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0___default.a.mark(function _callee4(httpRequest) {\n var request;\n return _babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0___default.a.wrap(function _callee4$(_context4) {\n while (1) {\n switch (_context4.prev = _context4.next) {\n case 0:\n request = this.createXmlRequest(httpRequest);\n return _context4.abrupt("return", this.runRequest(request, httpRequest.verb, httpRequest.params));\n\n case 2:\n case "end":\n return _context4.stop();\n }\n }\n }, _callee4, this);\n }));\n\n function runHttp(_x10) {\n return _runHttp.apply(this, arguments);\n }\n\n return runHttp;\n }()\n }, {\n key: "createXmlRequest",\n value: function createXmlRequest(httpRequest) {\n var request = new XMLHttpRequest();\n\n if (httpRequest.params && httpRequest.verb === HttpVerb.Get && Object.keys(httpRequest.params).length > 0) {\n httpRequest.url = this.urlForUrlAndParams(httpRequest.url, httpRequest.params);\n }\n\n request.open(httpRequest.verb, httpRequest.url, true);\n request.setRequestHeader(\'Content-type\', \'application/json\');\n\n if (httpRequest.authentication) {\n request.setRequestHeader(\'Authorization\', \'Bearer \' + httpRequest.authentication);\n }\n\n return request;\n }\n }, {\n key: "runRequest",\n value: function () {\n var _runRequest = _asyncToGenerator( /*#__PURE__*/_babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0___default.a.mark(function _callee5(request, verb, params) {\n var _this = this;\n\n return _babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0___default.a.wrap(function _callee5$(_context5) {\n while (1) {\n switch (_context5.prev = _context5.next) {\n case 0:\n return _context5.abrupt("return", new Promise(function (resolve, reject) {\n request.onreadystatechange = function () {\n _this.stateChangeHandlerForRequest(request, resolve, reject);\n };\n\n if (verb === HttpVerb.Post || verb === HttpVerb.Patch) {\n request.send(JSON.stringify(params));\n } else {\n request.send();\n }\n }));\n\n case 1:\n case "end":\n return _context5.stop();\n }\n }\n }, _callee5);\n }));\n\n function runRequest(_x11, _x12, _x13) {\n return _runRequest.apply(this, arguments);\n }\n\n return runRequest;\n }()\n }, {\n key: "stateChangeHandlerForRequest",\n value: function stateChangeHandlerForRequest(request, resolve, reject) {\n if (request.readyState !== REQUEST_READY_STATE_COMPLETED) {\n return;\n }\n\n var httpStatus = request.status;\n var response = {\n status: httpStatus\n };\n\n try {\n var body = JSON.parse(request.responseText);\n Object.assign(response, body);\n } catch (error) {}\n\n if (httpStatus >= HTTP_STATUS_MIN_SUCCESS && httpStatus <= HTTP_STATUS_MAX_SUCCESS) {\n resolve(response);\n } else {\n if (!response.error) {\n response.error = {\n status: httpStatus\n };\n }\n\n reject(response);\n }\n }\n }, {\n key: "urlForUrlAndParams",\n value: function urlForUrlAndParams(url, params) {\n var keyValueString = Object.keys(params).map(function (key) {\n return key + \'=\' + encodeURIComponent(params[key]);\n }).join(\'&\');\n\n if (url.includes(\'?\')) {\n return url + \'&\' + keyValueString;\n } else {\n return url + \'?\' + keyValueString;\n }\n }\n }, {\n key: "isErrorResponseExpiredToken",\n value: function isErrorResponseExpiredToken(errorResponse) {\n return errorResponse.status === HTTP_STATUS_EXPIRED_ACCESS_TOKEN;\n }\n }]);\n\n return SNHttpService;\n}(_Lib_services_pure_service__WEBPACK_IMPORTED_MODULE_1__["PureService"]);//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9saWIvc2VydmljZXMvYXBpL2h0dHBfc2VydmljZS50cy5qcyIsInNvdXJjZXMiOlsid2VicGFjazovL1NOTGlicmFyeS8uL2xpYi9zZXJ2aWNlcy9hcGkvaHR0cF9zZXJ2aWNlLnRzPzllNTkiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgUHVyZVNlcnZpY2UgfSBmcm9tICdATGliL3NlcnZpY2VzL3B1cmVfc2VydmljZSc7XG5leHBvcnQgdmFyIEh0dHBWZXJiO1xuKGZ1bmN0aW9uIChIdHRwVmVyYikge1xuICAgIEh0dHBWZXJiW1wiR2V0XCJdID0gXCJnZXRcIjtcbiAgICBIdHRwVmVyYltcIlBvc3RcIl0gPSBcInBvc3RcIjtcbiAgICBIdHRwVmVyYltcIlBhdGNoXCJdID0gXCJwYXRjaFwiO1xufSkoSHR0cFZlcmIgfHwgKEh0dHBWZXJiID0ge30pKTtcbmNvbnN0IFJFUVVFU1RfUkVBRFlfU1RBVEVfQ09NUExFVEVEID0gNDtcbmNvbnN0IEhUVFBfU1RBVFVTX01JTl9TVUNDRVNTID0gMjAwO1xuY29uc3QgSFRUUF9TVEFUVVNfTUFYX1NVQ0NFU1MgPSAyOTk7XG5jb25zdCBIVFRQX1NUQVRVU19FWFBJUkVEX0FDQ0VTU19UT0tFTiA9IDQ5ODtcbi8qKlxuICogQSBub24tU05KUyBzcGVjaWZpYyB3cmFwcGVyIGZvciBYTUxIdHRwUmVxdWVzdHNcbiAqL1xuZXhwb3J0IGNsYXNzIFNOSHR0cFNlcnZpY2UgZXh0ZW5kcyBQdXJlU2VydmljZSB7XG4gICAgYXN5bmMgZ2V0QWJzb2x1dGUodXJsLCBwYXJhbXMsIGF1dGhlbnRpY2F0aW9uKSB7XG4gICAgICAgIHJldHVybiB0aGlzLnJ1bkh0dHAoeyB1cmwsIHBhcmFtcywgdmVyYjogSHR0cFZlcmIuR2V0LCBhdXRoZW50aWNhdGlvbiB9KTtcbiAgICB9XG4gICAgYXN5bmMgcG9zdEFic29sdXRlKHVybCwgcGFyYW1zLCBhdXRoZW50aWNhdGlvbikge1xuICAgICAgICByZXR1cm4gdGhpcy5ydW5IdHRwKHsgdXJsLCBwYXJhbXMsIHZlcmI6IEh0dHBWZXJiLlBvc3QsIGF1dGhlbnRpY2F0aW9uIH0pO1xuICAgIH1cbiAgICBhc3luYyBwYXRjaEFic29sdXRlKHVybCwgcGFyYW1zLCBhdXRoZW50aWNhdGlvbikge1xuICAgICAgICByZXR1cm4gdGhpcy5ydW5IdHRwKHsgdXJsLCBwYXJhbXMsIHZlcmI6IEh0dHBWZXJiLlBhdGNoLCBhdXRoZW50aWNhdGlvbiB9KTtcbiAgICB9XG4gICAgYXN5bmMgcnVuSHR0cChodHRwUmVxdWVzdCkge1xuICAgICAgICBjb25zdCByZXF1ZXN0ID0gdGhpcy5jcmVhdGVYbWxSZXF1ZXN0KGh0dHBSZXF1ZXN0KTtcbiAgICAgICAgcmV0dXJuIHRoaXMucnVuUmVxdWVzdChyZXF1ZXN0LCBodHRwUmVxdWVzdC52ZXJiLCBodHRwUmVxdWVzdC5wYXJhbXMpO1xuICAgIH1cbiAgICBjcmVhdGVYbWxSZXF1ZXN0KGh0dHBSZXF1ZXN0KSB7XG4gICAgICAgIGNvbnN0IHJlcXVlc3QgPSBuZXcgWE1MSHR0cFJlcXVlc3QoKTtcbiAgICAgICAgaWYgKGh0dHBSZXF1ZXN0LnBhcmFtcyAmJlxuICAgICAgICAgICAgaHR0cFJlcXVlc3QudmVyYiA9PT0gSHR0cFZlcmIuR2V0XG4gICAgICAgICAgICAmJiBPYmplY3Qua2V5cyhodHRwUmVxdWVzdC5wYXJhbXMpLmxlbmd0aCA+IDApIHtcbiAgICAgICAgICAgIGh0dHBSZXF1ZXN0LnVybCA9IHRoaXMudXJsRm9yVXJsQW5kUGFyYW1zKGh0dHBSZXF1ZXN0LnVybCwgaHR0cFJlcXVlc3QucGFyYW1zKTtcbiAgICAgICAgfVxuICAgICAgICByZXF1ZXN0Lm9wZW4oaHR0cFJlcXVlc3QudmVyYiwgaHR0cFJlcXVlc3QudXJsLCB0cnVlKTtcbiAgICAgICAgcmVxdWVzdC5zZXRSZXF1ZXN0SGVhZGVyKCdDb250ZW50LXR5cGUnLCAnYXBwbGljYXRpb24vanNvbicpO1xuICAgICAgICBpZiAoaHR0cFJlcXVlc3QuYXV0aGVudGljYXRpb24pIHtcbiAgICAgICAgICAgIHJlcXVlc3Quc2V0UmVxdWVzdEhlYWRlcignQXV0aG9yaXphdGlvbicsICdCZWFyZXIgJyArIGh0dHBSZXF1ZXN0LmF1dGhlbnRpY2F0aW9uKTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gcmVxdWVzdDtcbiAgICB9XG4gICAgYXN5bmMgcnVuUmVxdWVzdChyZXF1ZXN0LCB2ZXJiLCBwYXJhbXMpIHtcbiAgICAgICAgcmV0dXJuIG5ldyBQcm9taXNlKChyZXNvbHZlLCByZWplY3QpID0+IHtcbiAgICAgICAgICAgIHJlcXVlc3Qub25yZWFkeXN0YXRlY2hhbmdlID0gKCkgPT4ge1xuICAgICAgICAgICAgICAgIHRoaXMuc3RhdGVDaGFuZ2VIYW5kbGVyRm9yUmVxdWVzdChyZXF1ZXN0LCByZXNvbHZlLCByZWplY3QpO1xuICAgICAgICAgICAgfTtcbiAgICAgICAgICAgIGlmICh2ZXJiID09PSBIdHRwVmVyYi5Qb3N0IHx8IHZlcmIgPT09IEh0dHBWZXJiLlBhdGNoKSB7XG4gICAgICAgICAgICAgICAgcmVxdWVzdC5zZW5kKEpTT04uc3RyaW5naWZ5KHBhcmFtcykpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICAgICAgcmVxdWVzdC5zZW5kKCk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH0pO1xuICAgIH1cbiAgICBzdGF0ZUNoYW5nZUhhbmRsZXJGb3JSZXF1ZXN0KHJlcXVlc3QsIHJlc29sdmUsIHJlamVjdCkge1xuICAgICAgICBpZiAocmVxdWVzdC5yZWFkeVN0YXRlICE9PSBSRVFVRVNUX1JFQURZX1NUQVRFX0NPTVBMRVRFRCkge1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG4gICAgICAgIGNvbnN0IGh0dHBTdGF0dXMgPSByZXF1ZXN0LnN0YXR1cztcbiAgICAgICAgbGV0IHJlc3BvbnNlID0ge1xuICAgICAgICAgICAgc3RhdHVzOiBodHRwU3RhdHVzXG4gICAgICAgIH07XG4gICAgICAgIHRyeSB7XG4gICAgICAgICAgICBjb25zdCBib2R5ID0gSlNPTi5wYXJzZShyZXF1ZXN0LnJlc3BvbnNlVGV4dCk7XG4gICAgICAgICAgICBPYmplY3QuYXNzaWduKHJlc3BvbnNlLCBib2R5KTtcbiAgICAgICAgfVxuICAgICAgICBjYXRjaCAoZXJyb3IpIHsgfVxuICAgICAgICBpZiAoKGh0dHBTdGF0dXMgPj0gSFRUUF9TVEFUVVNfTUlOX1NVQ0NFU1NcbiAgICAgICAgICAgICYmIGh0dHBTdGF0dXMgPD0gSFRUUF9TVEFUVVNfTUFYX1NVQ0NFU1MpKSB7XG4gICAgICAgICAgICByZXNvbHZlKHJlc3BvbnNlKTtcbiAgICAgICAgfVxuICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgIGlmICghcmVzcG9uc2UuZXJyb3IpIHtcbiAgICAgICAgICAgICAgICByZXNwb25zZS5lcnJvciA9IHsgc3RhdHVzOiBodHRwU3RhdHVzIH07XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICByZWplY3QocmVzcG9uc2UpO1xuICAgICAgICB9XG4gICAgfVxuICAgIHVybEZvclVybEFuZFBhcmFtcyh1cmwsIHBhcmFtcykge1xuICAgICAgICBjb25zdCBrZXlWYWx1ZVN0cmluZyA9IE9iamVjdC5rZXlzKHBhcmFtcykubWFwKChrZXkpID0+IHtcbiAgICAgICAgICAgIHJldHVybiBrZXkgKyAnPScgKyBlbmNvZGVVUklDb21wb25lbnQocGFyYW1zW2tleV0pO1xuICAgICAgICB9KS5qb2luKCcmJyk7XG4gICAgICAgIGlmICh1cmwuaW5jbHVkZXMoJz8nKSkge1xuICAgICAgICAgICAgcmV0dXJuIHVybCArICcmJyArIGtleVZhbHVlU3RyaW5nO1xuICAgICAgICB9XG4gICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgcmV0dXJuIHVybCArICc/JyArIGtleVZhbHVlU3RyaW5nO1xuICAgICAgICB9XG4gICAgfVxuICAgIGlzRXJyb3JSZXNwb25zZUV4cGlyZWRUb2tlbihlcnJvclJlc3BvbnNlKSB7XG4gICAgICAgIHJldHVybiBlcnJvclJlc3BvbnNlLnN0YXR1cyA9PT0gSFRUUF9TVEFUVVNfRVhQSVJFRF9BQ0NFU1NfVE9LRU47XG4gICAgfVxufVxuIl0sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFBQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOzs7O0FBR0E7QUFBQTtBQUNBO0FBREE7QUFBQTtBQUNBO0FBREE7QUFBQTtBQUNBO0FBREE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBRUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUNBO0FBSEE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFDQTtBQURBO0FBQUE7QUFBQTtBQUNBO0FBREE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUtBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFDQTtBQU5BO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQ0E7QUFEQTtBQUFBO0FBQUE7QUFDQTtBQURBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFRQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQ0E7QUFUQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUNBO0FBREE7QUFBQTtBQUFBO0FBQ0E7QUFEQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBV0E7QUFYQTtBQUNBO0FBREE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFDQTtBQURBO0FBQUE7QUFBQTtBQUNBO0FBREE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQWVBO0FBQ0E7QUFBQTtBQUdBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQTNCQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQ0E7QUFEQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBOEJBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUF4Q0E7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFDQTtBQURBO0FBQUE7QUFBQTtBQUNBO0FBREE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQTBDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQURBO0FBQ0E7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFFQTtBQUNBO0FBRUE7QUFDQTtBQUFBO0FBQUE7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBaEVBO0FBQUE7QUFBQTtBQWtFQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUVBO0FBQ0E7QUFDQTtBQTNFQTtBQUFBO0FBQUE7QUE2RUE7QUFDQTtBQTlFQTtBQUNBO0FBREE7QUFBQSIsInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./lib/services/api/http_service.ts\n')},"./lib/services/api/keys.ts":
|
||
/*!**********************************!*\
|
||
!*** ./lib/services/api/keys.ts ***!
|
||
\**********************************/
|
||
/*! exports provided: ApiEndpointParam */function(module,__webpack_exports__,__webpack_require__){"use strict";eval('__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "ApiEndpointParam", function() { return ApiEndpointParam; });\nvar ApiEndpointParam;\n\n(function (ApiEndpointParam) {\n ApiEndpointParam["LastSyncToken"] = "sync_token";\n ApiEndpointParam["PaginationToken"] = "cursor_token";\n ApiEndpointParam["IntegrityCheck"] = "compute_integrity";\n ApiEndpointParam["IntegrityResult"] = "integrity_hash";\n ApiEndpointParam["SyncDlLimit"] = "limit";\n ApiEndpointParam["SyncPayloads"] = "items";\n ApiEndpointParam["ApiVersion"] = "api";\n})(ApiEndpointParam || (ApiEndpointParam = {}));\n\n;//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9saWIvc2VydmljZXMvYXBpL2tleXMudHMuanMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly9TTkxpYnJhcnkvLi9saWIvc2VydmljZXMvYXBpL2tleXMudHM/MzA4MSJdLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgdmFyIEFwaUVuZHBvaW50UGFyYW07XG4oZnVuY3Rpb24gKEFwaUVuZHBvaW50UGFyYW0pIHtcbiAgICBBcGlFbmRwb2ludFBhcmFtW1wiTGFzdFN5bmNUb2tlblwiXSA9IFwic3luY190b2tlblwiO1xuICAgIEFwaUVuZHBvaW50UGFyYW1bXCJQYWdpbmF0aW9uVG9rZW5cIl0gPSBcImN1cnNvcl90b2tlblwiO1xuICAgIEFwaUVuZHBvaW50UGFyYW1bXCJJbnRlZ3JpdHlDaGVja1wiXSA9IFwiY29tcHV0ZV9pbnRlZ3JpdHlcIjtcbiAgICBBcGlFbmRwb2ludFBhcmFtW1wiSW50ZWdyaXR5UmVzdWx0XCJdID0gXCJpbnRlZ3JpdHlfaGFzaFwiO1xuICAgIEFwaUVuZHBvaW50UGFyYW1bXCJTeW5jRGxMaW1pdFwiXSA9IFwibGltaXRcIjtcbiAgICBBcGlFbmRwb2ludFBhcmFtW1wiU3luY1BheWxvYWRzXCJdID0gXCJpdGVtc1wiO1xuICAgIEFwaUVuZHBvaW50UGFyYW1bXCJBcGlWZXJzaW9uXCJdID0gXCJhcGlcIjtcbn0pKEFwaUVuZHBvaW50UGFyYW0gfHwgKEFwaUVuZHBvaW50UGFyYW0gPSB7fSkpO1xuO1xuIl0sIm1hcHBpbmdzIjoiQUFBQTtBQUFBO0FBQUE7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUEiLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./lib/services/api/keys.ts\n')},"./lib/services/api/messages.ts":
|
||
/*!**************************************!*\
|
||
!*** ./lib/services/api/messages.ts ***!
|
||
\**************************************/
|
||
/*! exports provided: API_MESSAGE_GENERIC_INVALID_LOGIN, API_MESSAGE_GENERIC_REGISTRATION_FAIL, API_MESSAGE_GENERIC_CHANGE_PW_FAIL, API_MESSAGE_GENERIC_SYNC_FAIL, API_MESSAGE_REGISTRATION_IN_PROGRESS, API_MESSAGE_LOGIN_IN_PROGRESS, API_MESSAGE_CHANGE_PW_IN_PROGRESS, API_MESSAGE_FALLBACK_LOGIN_FAIL, API_MESSAGE_GENERIC_TOKEN_REFRESH_FAIL, API_MESSAGE_TOKEN_REFRESH_IN_PROGRESS, UNSUPPORTED_PROTOCOL_VERSION, EXPIRED_PROTOCOL_VERSION, OUTDATED_PROTOCOL_VERSION, UNSUPPORTED_KEY_DERIVATION, INVALID_PASSWORD_COST, INVALID_PASSWORD, OUTDATED_PROTOCOL_ALERT_TITLE, OUTDATED_PROTOCOL_ALERT_IGNORE, InsufficientPasswordMessage, StrictSignInFailed */function(module,__webpack_exports__,__webpack_require__){"use strict";eval('__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "API_MESSAGE_GENERIC_INVALID_LOGIN", function() { return API_MESSAGE_GENERIC_INVALID_LOGIN; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "API_MESSAGE_GENERIC_REGISTRATION_FAIL", function() { return API_MESSAGE_GENERIC_REGISTRATION_FAIL; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "API_MESSAGE_GENERIC_CHANGE_PW_FAIL", function() { return API_MESSAGE_GENERIC_CHANGE_PW_FAIL; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "API_MESSAGE_GENERIC_SYNC_FAIL", function() { return API_MESSAGE_GENERIC_SYNC_FAIL; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "API_MESSAGE_REGISTRATION_IN_PROGRESS", function() { return API_MESSAGE_REGISTRATION_IN_PROGRESS; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "API_MESSAGE_LOGIN_IN_PROGRESS", function() { return API_MESSAGE_LOGIN_IN_PROGRESS; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "API_MESSAGE_CHANGE_PW_IN_PROGRESS", function() { return API_MESSAGE_CHANGE_PW_IN_PROGRESS; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "API_MESSAGE_FALLBACK_LOGIN_FAIL", function() { return API_MESSAGE_FALLBACK_LOGIN_FAIL; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "API_MESSAGE_GENERIC_TOKEN_REFRESH_FAIL", function() { return API_MESSAGE_GENERIC_TOKEN_REFRESH_FAIL; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "API_MESSAGE_TOKEN_REFRESH_IN_PROGRESS", function() { return API_MESSAGE_TOKEN_REFRESH_IN_PROGRESS; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "UNSUPPORTED_PROTOCOL_VERSION", function() { return UNSUPPORTED_PROTOCOL_VERSION; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "EXPIRED_PROTOCOL_VERSION", function() { return EXPIRED_PROTOCOL_VERSION; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "OUTDATED_PROTOCOL_VERSION", function() { return OUTDATED_PROTOCOL_VERSION; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "UNSUPPORTED_KEY_DERIVATION", function() { return UNSUPPORTED_KEY_DERIVATION; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "INVALID_PASSWORD_COST", function() { return INVALID_PASSWORD_COST; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "INVALID_PASSWORD", function() { return INVALID_PASSWORD; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "OUTDATED_PROTOCOL_ALERT_TITLE", function() { return OUTDATED_PROTOCOL_ALERT_TITLE; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "OUTDATED_PROTOCOL_ALERT_IGNORE", function() { return OUTDATED_PROTOCOL_ALERT_IGNORE; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "InsufficientPasswordMessage", function() { return InsufficientPasswordMessage; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "StrictSignInFailed", function() { return StrictSignInFailed; });\nvar API_MESSAGE_GENERIC_INVALID_LOGIN = \'A server error occurred while trying to sign in. Please try again.\';\nvar API_MESSAGE_GENERIC_REGISTRATION_FAIL = \'A server error occurred while trying to register. Please try again.\';\nvar API_MESSAGE_GENERIC_CHANGE_PW_FAIL = "Something went wrong while changing your password.\\n Your password was not changed. Please try again.";\nvar API_MESSAGE_GENERIC_SYNC_FAIL = \'Could not connect to server.\';\nvar API_MESSAGE_REGISTRATION_IN_PROGRESS = \'An existing registration request is already in progress.\';\nvar API_MESSAGE_LOGIN_IN_PROGRESS = \'An existing sign in request is already in progress.\';\nvar API_MESSAGE_CHANGE_PW_IN_PROGRESS = \'An existing change password request is already in progress.\';\nvar API_MESSAGE_FALLBACK_LOGIN_FAIL = \'Invalid email or password.\';\nvar API_MESSAGE_GENERIC_TOKEN_REFRESH_FAIL = "A server error occurred while trying to refresh your session.\\n Please try again.";\nvar API_MESSAGE_TOKEN_REFRESH_IN_PROGRESS = "Your account session is being renewed with the server. Please try your request again.";\nvar UNSUPPORTED_PROTOCOL_VERSION = "This version of the application does not support your\\n newer account type. Please upgrade to the latest version\\n of Standard Notes to sign in.";\nvar EXPIRED_PROTOCOL_VERSION = "The protocol version associated with your account is\\n outdated and no longer supported by this application.\\n Please visit standardnotes.org/help/security for more\\n information.";\nvar OUTDATED_PROTOCOL_VERSION = "The encryption version for your account is outdated and\\n requires upgrade. You may proceed with login, but are\\n advised to perform a security update using the web or\\n desktop application. Please visit\\n standardnotes.org/help/security for more information.";\nvar UNSUPPORTED_KEY_DERIVATION = "Your account was created on a platform with higher security\\n capabilities than this browser supports. If we attempted\\n to generate your login keys here, it would take hours. Please\\n use a browser with more up to date security capabilities,\\n like Google Chrome or Firefox, to log in.";\nvar INVALID_PASSWORD_COST = "Unable to login due to insecure password parameters.\\n Please visit standardnotes.org/help/security for\\n more information.";\nvar INVALID_PASSWORD = "Invalid password.";\nvar OUTDATED_PROTOCOL_ALERT_TITLE = \'Update Recommended\';\nvar OUTDATED_PROTOCOL_ALERT_IGNORE = \'Sign In\';\nfunction InsufficientPasswordMessage(minimum) {\n return "\\n Your password must be at least ".concat(minimum, " characters in length.\\n For your security, please choose a longer password or,\\n ideally, a passphrase, and try again.\\n ");\n}\nfunction StrictSignInFailed(current, latest) {\n return "\\n Strict Sign In has refused the server\'s sign-in parameters.\\n The latest account version is ".concat(latest, ", but the server is reporting a \\n version of ").concat(current, " for your account. If you\'d like to proceed\\n with sign in anyway, please disable Strict Sign In and try again.\\n ");\n}//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9saWIvc2VydmljZXMvYXBpL21lc3NhZ2VzLnRzLmpzIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vU05MaWJyYXJ5Ly4vbGliL3NlcnZpY2VzL2FwaS9tZXNzYWdlcy50cz8yM2VmIl0sInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCBjb25zdCBBUElfTUVTU0FHRV9HRU5FUklDX0lOVkFMSURfTE9HSU4gPSAnQSBzZXJ2ZXIgZXJyb3Igb2NjdXJyZWQgd2hpbGUgdHJ5aW5nIHRvIHNpZ24gaW4uIFBsZWFzZSB0cnkgYWdhaW4uJztcbmV4cG9ydCBjb25zdCBBUElfTUVTU0FHRV9HRU5FUklDX1JFR0lTVFJBVElPTl9GQUlMID0gJ0Egc2VydmVyIGVycm9yIG9jY3VycmVkIHdoaWxlIHRyeWluZyB0byByZWdpc3Rlci4gUGxlYXNlIHRyeSBhZ2Fpbi4nO1xuZXhwb3J0IGNvbnN0IEFQSV9NRVNTQUdFX0dFTkVSSUNfQ0hBTkdFX1BXX0ZBSUwgPSBgU29tZXRoaW5nIHdlbnQgd3Jvbmcgd2hpbGUgY2hhbmdpbmcgeW91ciBwYXNzd29yZC5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFlvdXIgcGFzc3dvcmQgd2FzIG5vdCBjaGFuZ2VkLiBQbGVhc2UgdHJ5IGFnYWluLmA7XG5leHBvcnQgY29uc3QgQVBJX01FU1NBR0VfR0VORVJJQ19TWU5DX0ZBSUwgPSAnQ291bGQgbm90IGNvbm5lY3QgdG8gc2VydmVyLic7XG5leHBvcnQgY29uc3QgQVBJX01FU1NBR0VfUkVHSVNUUkFUSU9OX0lOX1BST0dSRVNTID0gJ0FuIGV4aXN0aW5nIHJlZ2lzdHJhdGlvbiByZXF1ZXN0IGlzIGFscmVhZHkgaW4gcHJvZ3Jlc3MuJztcbmV4cG9ydCBjb25zdCBBUElfTUVTU0FHRV9MT0dJTl9JTl9QUk9HUkVTUyA9ICdBbiBleGlzdGluZyBzaWduIGluIHJlcXVlc3QgaXMgYWxyZWFkeSBpbiBwcm9ncmVzcy4nO1xuZXhwb3J0IGNvbnN0IEFQSV9NRVNTQUdFX0NIQU5HRV9QV19JTl9QUk9HUkVTUyA9ICdBbiBleGlzdGluZyBjaGFuZ2UgcGFzc3dvcmQgcmVxdWVzdCBpcyBhbHJlYWR5IGluIHByb2dyZXNzLic7XG5leHBvcnQgY29uc3QgQVBJX01FU1NBR0VfRkFMTEJBQ0tfTE9HSU5fRkFJTCA9ICdJbnZhbGlkIGVtYWlsIG9yIHBhc3N3b3JkLic7XG5leHBvcnQgY29uc3QgQVBJX01FU1NBR0VfR0VORVJJQ19UT0tFTl9SRUZSRVNIX0ZBSUwgPSBgQSBzZXJ2ZXIgZXJyb3Igb2NjdXJyZWQgd2hpbGUgdHJ5aW5nIHRvIHJlZnJlc2ggeW91ciBzZXNzaW9uLlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUGxlYXNlIHRyeSBhZ2Fpbi5gO1xuZXhwb3J0IGNvbnN0IEFQSV9NRVNTQUdFX1RPS0VOX1JFRlJFU0hfSU5fUFJPR1JFU1MgPSBgWW91ciBhY2NvdW50IHNlc3Npb24gaXMgYmVpbmcgcmVuZXdlZCB3aXRoIHRoZSBzZXJ2ZXIuIFxcXG5QbGVhc2UgdHJ5IHlvdXIgcmVxdWVzdCBhZ2Fpbi5gO1xuZXhwb3J0IGNvbnN0IFVOU1VQUE9SVEVEX1BST1RPQ09MX1ZFUlNJT04gPSBgVGhpcyB2ZXJzaW9uIG9mIHRoZSBhcHBsaWNhdGlvbiBkb2VzIG5vdCBzdXBwb3J0IHlvdXJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5ld2VyIGFjY291bnQgdHlwZS4gUGxlYXNlIHVwZ3JhZGUgdG8gdGhlIGxhdGVzdCB2ZXJzaW9uXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvZiBTdGFuZGFyZCBOb3RlcyB0byBzaWduIGluLmA7XG5leHBvcnQgY29uc3QgRVhQSVJFRF9QUk9UT0NPTF9WRVJTSU9OID0gYFRoZSBwcm90b2NvbCB2ZXJzaW9uIGFzc29jaWF0ZWQgd2l0aCB5b3VyIGFjY291bnQgaXNcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG91dGRhdGVkIGFuZCBubyBsb25nZXIgc3VwcG9ydGVkIGJ5IHRoaXMgYXBwbGljYXRpb24uXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQbGVhc2UgdmlzaXQgc3RhbmRhcmRub3Rlcy5vcmcvaGVscC9zZWN1cml0eSBmb3IgbW9yZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW5mb3JtYXRpb24uYDtcbmV4cG9ydCBjb25zdCBPVVREQVRFRF9QUk9UT0NPTF9WRVJTSU9OID0gYFRoZSBlbmNyeXB0aW9uIHZlcnNpb24gZm9yIHlvdXIgYWNjb3VudCBpcyBvdXRkYXRlZCBhbmRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlcXVpcmVzIHVwZ3JhZGUuIFlvdSBtYXkgcHJvY2VlZCB3aXRoIGxvZ2luLCBidXQgYXJlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhZHZpc2VkIHRvIHBlcmZvcm0gYSBzZWN1cml0eSB1cGRhdGUgdXNpbmcgdGhlIHdlYiBvclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGVza3RvcCBhcHBsaWNhdGlvbi4gUGxlYXNlIHZpc2l0XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGFuZGFyZG5vdGVzLm9yZy9oZWxwL3NlY3VyaXR5IGZvciBtb3JlIGluZm9ybWF0aW9uLmA7XG5leHBvcnQgY29uc3QgVU5TVVBQT1JURURfS0VZX0RFUklWQVRJT04gPSBgWW91ciBhY2NvdW50IHdhcyBjcmVhdGVkIG9uIGEgcGxhdGZvcm0gd2l0aCBoaWdoZXIgc2VjdXJpdHlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhcGFiaWxpdGllcyB0aGFuIHRoaXMgYnJvd3NlciBzdXBwb3J0cy4gSWYgd2UgYXR0ZW1wdGVkXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0byBnZW5lcmF0ZSB5b3VyIGxvZ2luIGtleXMgaGVyZSwgaXQgd291bGQgdGFrZSBob3Vycy4gUGxlYXNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1c2UgYSBicm93c2VyIHdpdGggbW9yZSB1cCB0byBkYXRlIHNlY3VyaXR5IGNhcGFiaWxpdGllcyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxpa2UgR29vZ2xlIENocm9tZSBvciBGaXJlZm94LCB0byBsb2cgaW4uYDtcbmV4cG9ydCBjb25zdCBJTlZBTElEX1BBU1NXT1JEX0NPU1QgPSBgVW5hYmxlIHRvIGxvZ2luIGR1ZSB0byBpbnNlY3VyZSBwYXNzd29yZCBwYXJhbWV0ZXJzLlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUGxlYXNlIHZpc2l0IHN0YW5kYXJkbm90ZXMub3JnL2hlbHAvc2VjdXJpdHkgZm9yXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtb3JlIGluZm9ybWF0aW9uLmA7XG5leHBvcnQgY29uc3QgSU5WQUxJRF9QQVNTV09SRCA9IGBJbnZhbGlkIHBhc3N3b3JkLmA7XG5leHBvcnQgY29uc3QgT1VUREFURURfUFJPVE9DT0xfQUxFUlRfVElUTEUgPSAnVXBkYXRlIFJlY29tbWVuZGVkJztcbmV4cG9ydCBjb25zdCBPVVREQVRFRF9QUk9UT0NPTF9BTEVSVF9JR05PUkUgPSAnU2lnbiBJbic7XG5leHBvcnQgZnVuY3Rpb24gSW5zdWZmaWNpZW50UGFzc3dvcmRNZXNzYWdlKG1pbmltdW0pIHtcbiAgICByZXR1cm4gYFxuICAgICAgICAgIFlvdXIgcGFzc3dvcmQgbXVzdCBiZSBhdCBsZWFzdCAke21pbmltdW19IGNoYXJhY3RlcnMgaW4gbGVuZ3RoLlxuICAgICAgICAgIEZvciB5b3VyIHNlY3VyaXR5LCBwbGVhc2UgY2hvb3NlIGEgbG9uZ2VyIHBhc3N3b3JkIG9yLFxuICAgICAgICAgIGlkZWFsbHksIGEgcGFzc3BocmFzZSwgYW5kIHRyeSBhZ2Fpbi5cbiAgICAgICAgIGA7XG59XG5leHBvcnQgZnVuY3Rpb24gU3RyaWN0U2lnbkluRmFpbGVkKGN1cnJlbnQsIGxhdGVzdCkge1xuICAgIHJldHVybiBgXG4gICAgICAgICAgU3RyaWN0IFNpZ24gSW4gaGFzIHJlZnVzZWQgdGhlIHNlcnZlcidzIHNpZ24taW4gcGFyYW1ldGVycy5cbiAgICAgICAgICBUaGUgbGF0ZXN0IGFjY291bnQgdmVyc2lvbiBpcyAke2xhdGVzdH0sIGJ1dCB0aGUgc2VydmVyIGlzIHJlcG9ydGluZyBhIFxuICAgICAgICAgIHZlcnNpb24gb2YgJHtjdXJyZW50fSBmb3IgeW91ciBhY2NvdW50LiBJZiB5b3UnZCBsaWtlIHRvIHByb2NlZWRcbiAgICAgICAgICB3aXRoIHNpZ24gaW4gYW55d2F5LCBwbGVhc2UgZGlzYWJsZSBTdHJpY3QgU2lnbiBJbiBhbmQgdHJ5IGFnYWluLlxuICAgICAgICAgIGA7XG59XG4iXSwibWFwcGluZ3MiOiJBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQ0E7QUFDQTtBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUVBO0FBRUE7QUFHQTtBQUlBO0FBS0E7QUFLQTtBQUdBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFLQTtBQUNBO0FBQ0E7QUFNQSIsInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./lib/services/api/messages.ts\n')},"./lib/services/api/session.ts":
|
||
/*!*************************************!*\
|
||
!*** ./lib/services/api/session.ts ***!
|
||
\*************************************/
|
||
/*! exports provided: Session */function(module,__webpack_exports__,__webpack_require__){"use strict";eval('__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "Session", function() { return Session; });\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } }\n\nfunction _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); } }\n\nfunction _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; }\n\nvar Session = /*#__PURE__*/function () {\n function Session(accessToken, expireAt, refreshToken, validUntil) {\n _classCallCheck(this, Session);\n\n this.accessToken = accessToken;\n this.expireAt = expireAt;\n this.refreshToken = refreshToken;\n this.validUntil = validUntil;\n }\n\n _createClass(Session, [{\n key: "getExpireAt",\n value: function getExpireAt() {\n return this.expireAt || 0;\n }\n }, {\n key: "canExpire",\n value: function canExpire() {\n return this.getExpireAt() > 0;\n }\n }, {\n key: "isExpired",\n value: function isExpired() {\n if (!this.canExpire()) {\n return false;\n }\n\n return this.getExpireAt() < Date.now();\n }\n }], [{\n key: "FromRaw",\n value: function FromRaw(raw) {\n return new Session(raw.accessToken, raw.expireAt, raw.refreshToken, raw.validUntil);\n }\n }, {\n key: "FromResponse",\n value: function FromResponse(response) {\n var _response$session, _response$session2, _response$session3;\n\n var accessToken = response.token;\n var expireAt = (_response$session = response.session) === null || _response$session === void 0 ? void 0 : _response$session.expire_at;\n var refreshToken = (_response$session2 = response.session) === null || _response$session2 === void 0 ? void 0 : _response$session2.refresh_token;\n var validUntil = (_response$session3 = response.session) === null || _response$session3 === void 0 ? void 0 : _response$session3.valid_until;\n return new Session(accessToken, expireAt, refreshToken, validUntil);\n }\n }]);\n\n return Session;\n}();//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9saWIvc2VydmljZXMvYXBpL3Nlc3Npb24udHMuanMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly9TTkxpYnJhcnkvLi9saWIvc2VydmljZXMvYXBpL3Nlc3Npb24udHM/NmUyZSJdLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgY2xhc3MgU2Vzc2lvbiB7XG4gICAgY29uc3RydWN0b3IoYWNjZXNzVG9rZW4sIGV4cGlyZUF0LCByZWZyZXNoVG9rZW4sIHZhbGlkVW50aWwpIHtcbiAgICAgICAgdGhpcy5hY2Nlc3NUb2tlbiA9IGFjY2Vzc1Rva2VuO1xuICAgICAgICB0aGlzLmV4cGlyZUF0ID0gZXhwaXJlQXQ7XG4gICAgICAgIHRoaXMucmVmcmVzaFRva2VuID0gcmVmcmVzaFRva2VuO1xuICAgICAgICB0aGlzLnZhbGlkVW50aWwgPSB2YWxpZFVudGlsO1xuICAgIH1cbiAgICBzdGF0aWMgRnJvbVJhdyhyYXcpIHtcbiAgICAgICAgcmV0dXJuIG5ldyBTZXNzaW9uKHJhdy5hY2Nlc3NUb2tlbiwgcmF3LmV4cGlyZUF0LCByYXcucmVmcmVzaFRva2VuLCByYXcudmFsaWRVbnRpbCk7XG4gICAgfVxuICAgIHN0YXRpYyBGcm9tUmVzcG9uc2UocmVzcG9uc2UpIHtcbiAgICAgICAgY29uc3QgYWNjZXNzVG9rZW4gPSByZXNwb25zZS50b2tlbjtcbiAgICAgICAgY29uc3QgZXhwaXJlQXQgPSByZXNwb25zZS5zZXNzaW9uPy5leHBpcmVfYXQ7XG4gICAgICAgIGNvbnN0IHJlZnJlc2hUb2tlbiA9IHJlc3BvbnNlLnNlc3Npb24/LnJlZnJlc2hfdG9rZW47XG4gICAgICAgIGNvbnN0IHZhbGlkVW50aWwgPSByZXNwb25zZS5zZXNzaW9uPy52YWxpZF91bnRpbDtcbiAgICAgICAgcmV0dXJuIG5ldyBTZXNzaW9uKGFjY2Vzc1Rva2VuLCBleHBpcmVBdCwgcmVmcmVzaFRva2VuLCB2YWxpZFVudGlsKTtcbiAgICB9XG4gICAgZ2V0RXhwaXJlQXQoKSB7XG4gICAgICAgIHJldHVybiB0aGlzLmV4cGlyZUF0IHx8IDA7XG4gICAgfVxuICAgIGNhbkV4cGlyZSgpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuZ2V0RXhwaXJlQXQoKSA+IDA7XG4gICAgfVxuICAgIGlzRXhwaXJlZCgpIHtcbiAgICAgICAgaWYgKCF0aGlzLmNhbkV4cGlyZSgpKSB7XG4gICAgICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHRoaXMuZ2V0RXhwaXJlQXQoKSA8IERhdGUubm93KCk7XG4gICAgfVxufVxuIl0sIm1hcHBpbmdzIjoiOzs7Ozs7OztBQUFBO0FBQ0E7QUFBQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBUEE7QUFBQTtBQUFBO0FBa0JBO0FBQ0E7QUFuQkE7QUFBQTtBQUFBO0FBcUJBO0FBQ0E7QUF0QkE7QUFBQTtBQUFBO0FBd0JBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQTVCQTtBQUFBO0FBQUE7QUFRQTtBQUNBO0FBVEE7QUFBQTtBQUFBO0FBVUE7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQWhCQTtBQUNBO0FBREE7QUFBQSIsInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./lib/services/api/session.ts\n')},"./lib/services/api/session_manager.ts":
|
||
/*!*********************************************!*\
|
||
!*** ./lib/services/api/session_manager.ts ***!
|
||
\*********************************************/
|
||
/*! exports provided: MINIMUM_PASSWORD_LENGTH, SNSessionManager */function(module,__webpack_exports__,__webpack_require__){"use strict";eval('__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "MINIMUM_PASSWORD_LENGTH", function() { return MINIMUM_PASSWORD_LENGTH; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "SNSessionManager", function() { return SNSessionManager; });\n/* harmony import */ var _babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @babel/runtime/regenerator */ "./node_modules/@babel/runtime/regenerator/index.js");\n/* harmony import */ var _babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var _Lib_services_pure_service__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! @Lib/services/pure_service */ "./lib/services/pure_service.ts");\n/* harmony import */ var _Lib_utils__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! @Lib/utils */ "./lib/utils.ts");\n/* harmony import */ var _Lib_storage_keys__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! @Lib/storage_keys */ "./lib/storage_keys.ts");\n/* harmony import */ var _Lib_services_api_session__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! @Lib/services/api/session */ "./lib/services/api/session.ts");\n/* harmony import */ var _messages__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ./messages */ "./lib/services/api/messages.ts");\n\n\nfunction _typeof(obj) { "@babel/helpers - typeof"; if (typeof Symbol === "function" && typeof Symbol.iterator === "symbol") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }; } return _typeof(obj); }\n\nfunction asyncGeneratorStep(gen, resolve, reject, _next, _throw, key, arg) { try { var info = gen[key](arg); var value = info.value; } catch (error) { reject(error); return; } if (info.done) { resolve(value); } else { Promise.resolve(value).then(_next, _throw); } }\n\nfunction _asyncToGenerator(fn) { return function () { var self = this, args = arguments; return new Promise(function (resolve, reject) { var gen = fn.apply(self, args); function _next(value) { asyncGeneratorStep(gen, resolve, reject, _next, _throw, "next", value); } function _throw(err) { asyncGeneratorStep(gen, resolve, reject, _next, _throw, "throw", err); } _next(undefined); }); }; }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } }\n\nfunction _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); } }\n\nfunction _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; }\n\nfunction _possibleConstructorReturn(self, call) { if (call && (_typeof(call) === "object" || typeof call === "function")) { return call; } return _assertThisInitialized(self); }\n\nfunction _assertThisInitialized(self) { if (self === void 0) { throw new ReferenceError("this hasn\'t been initialised - super() hasn\'t been called"); } return self; }\n\nfunction _get(target, property, receiver) { if (typeof Reflect !== "undefined" && Reflect.get) { _get = Reflect.get; } else { _get = function _get(target, property, receiver) { var base = _superPropBase(target, property); if (!base) return; var desc = Object.getOwnPropertyDescriptor(base, property); if (desc.get) { return desc.get.call(receiver); } return desc.value; }; } return _get(target, property, receiver || target); }\n\nfunction _superPropBase(object, property) { while (!Object.prototype.hasOwnProperty.call(object, property)) { object = _getPrototypeOf(object); if (object === null) break; } return object; }\n\nfunction _getPrototypeOf(o) { _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function _getPrototypeOf(o) { return o.__proto__ || Object.getPrototypeOf(o); }; return _getPrototypeOf(o); }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== "function" && superClass !== null) { throw new TypeError("Super expression must either be null or a function"); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, writable: true, configurable: true } }); if (superClass) _setPrototypeOf(subClass, superClass); }\n\nfunction _setPrototypeOf(o, p) { _setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) { o.__proto__ = p; return o; }; return _setPrototypeOf(o, p); }\n\n\n\n\n\n\nvar MINIMUM_PASSWORD_LENGTH = 8;\n/**\n * The session manager is responsible for loading initial user state, and any relevant\n * server credentials, such as the session token. It also exposes methods for registering\n * for a new account, signing into an existing one, or changing an account password.\n */\n\nvar SNSessionManager = /*#__PURE__*/function (_PureService) {\n _inherits(SNSessionManager, _PureService);\n\n function SNSessionManager(storageService, apiService, alertService, protocolService) {\n var _this;\n\n _classCallCheck(this, SNSessionManager);\n\n _this = _possibleConstructorReturn(this, _getPrototypeOf(SNSessionManager).call(this));\n _this.protocolService = protocolService;\n _this.storageService = storageService;\n _this.apiService = apiService;\n _this.alertService = alertService;\n return _this;\n }\n\n _createClass(SNSessionManager, [{\n key: "deinit",\n value: function deinit() {\n this.protocolService = undefined;\n this.storageService = undefined;\n this.apiService = undefined;\n this.alertService = undefined;\n this.user = undefined;\n\n _get(_getPrototypeOf(SNSessionManager.prototype), "deinit", this).call(this);\n }\n }, {\n key: "initializeFromDisk",\n value: function () {\n var _initializeFromDisk = _asyncToGenerator( /*#__PURE__*/_babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0___default.a.mark(function _callee() {\n var uuid, rawSession;\n return _babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0___default.a.wrap(function _callee$(_context) {\n while (1) {\n switch (_context.prev = _context.next) {\n case 0:\n _context.next = 2;\n return this.storageService.getValue(_Lib_storage_keys__WEBPACK_IMPORTED_MODULE_3__["StorageKey"].User);\n\n case 2:\n this.user = _context.sent;\n\n if (this.user) {\n _context.next = 8;\n break;\n }\n\n _context.next = 6;\n return this.storageService.getValue(_Lib_storage_keys__WEBPACK_IMPORTED_MODULE_3__["StorageKey"].LegacyUuid);\n\n case 6:\n uuid = _context.sent;\n\n if (uuid) {\n this.user = {\n uuid: uuid\n };\n }\n\n case 8:\n _context.next = 10;\n return this.storageService.getValue(_Lib_storage_keys__WEBPACK_IMPORTED_MODULE_3__["StorageKey"].Session);\n\n case 10:\n rawSession = _context.sent;\n\n if (!rawSession) {\n _context.next = 14;\n break;\n }\n\n _context.next = 14;\n return this.setSession(_Lib_services_api_session__WEBPACK_IMPORTED_MODULE_4__["Session"].FromRaw(rawSession), false);\n\n case 14:\n case "end":\n return _context.stop();\n }\n }\n }, _callee, this);\n }));\n\n function initializeFromDisk() {\n return _initializeFromDisk.apply(this, arguments);\n }\n\n return initializeFromDisk;\n }()\n }, {\n key: "setSession",\n value: function () {\n var _setSession = _asyncToGenerator( /*#__PURE__*/_babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0___default.a.mark(function _callee2(session) {\n var persist,\n _args2 = arguments;\n return _babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0___default.a.wrap(function _callee2$(_context2) {\n while (1) {\n switch (_context2.prev = _context2.next) {\n case 0:\n persist = _args2.length > 1 && _args2[1] !== undefined ? _args2[1] : true;\n _context2.next = 3;\n return this.apiService.setSession(session, persist);\n\n case 3:\n case "end":\n return _context2.stop();\n }\n }\n }, _callee2, this);\n }));\n\n function setSession(_x) {\n return _setSession.apply(this, arguments);\n }\n\n return setSession;\n }()\n }, {\n key: "online",\n value: function online() {\n return !this.offline();\n }\n }, {\n key: "offline",\n value: function offline() {\n return Object(_Lib_utils__WEBPACK_IMPORTED_MODULE_2__["isNullOrUndefined"])(this.apiService.getSession());\n }\n }, {\n key: "getUser",\n value: function getUser() {\n return this.user;\n }\n }, {\n key: "signOut",\n value: function () {\n var _signOut = _asyncToGenerator( /*#__PURE__*/_babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0___default.a.mark(function _callee3() {\n var session;\n return _babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0___default.a.wrap(function _callee3$(_context3) {\n while (1) {\n switch (_context3.prev = _context3.next) {\n case 0:\n this.user = undefined;\n _context3.next = 3;\n return this.apiService.getSession();\n\n case 3:\n session = _context3.sent;\n\n if (session && session.canExpire()) {\n this.apiService.signOut();\n }\n\n case 5:\n case "end":\n return _context3.stop();\n }\n }\n }, _callee3, this);\n }));\n\n function signOut() {\n return _signOut.apply(this, arguments);\n }\n\n return signOut;\n }()\n }, {\n key: "register",\n value: function () {\n var _register = _asyncToGenerator( /*#__PURE__*/_babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0___default.a.mark(function _callee5(email, password) {\n var _this2 = this;\n\n var result, serverPassword, keyParams, rootKey;\n return _babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0___default.a.wrap(function _callee5$(_context5) {\n while (1) {\n switch (_context5.prev = _context5.next) {\n case 0:\n if (!(password.length < MINIMUM_PASSWORD_LENGTH)) {\n _context5.next = 2;\n break;\n }\n\n return _context5.abrupt("return", {\n response: this.apiService.createErrorResponse(_messages__WEBPACK_IMPORTED_MODULE_5__["InsufficientPasswordMessage"](MINIMUM_PASSWORD_LENGTH))\n });\n\n case 2:\n _context5.next = 4;\n return this.protocolService.createRootKey(email, password);\n\n case 4:\n result = _context5.sent;\n serverPassword = result.key.serverPassword;\n keyParams = result.keyParams;\n rootKey = result.key;\n return _context5.abrupt("return", this.apiService.register(email, serverPassword, keyParams).then( /*#__PURE__*/function () {\n var _ref = _asyncToGenerator( /*#__PURE__*/_babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0___default.a.mark(function _callee4(response) {\n return _babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0___default.a.wrap(function _callee4$(_context4) {\n while (1) {\n switch (_context4.prev = _context4.next) {\n case 0:\n _context4.next = 2;\n return _this2.handleAuthResponse(response);\n\n case 2:\n return _context4.abrupt("return", {\n response: response,\n keyParams: keyParams,\n rootKey: rootKey\n });\n\n case 3:\n case "end":\n return _context4.stop();\n }\n }\n }, _callee4);\n }));\n\n return function (_x4) {\n return _ref.apply(this, arguments);\n };\n }()));\n\n case 9:\n case "end":\n return _context5.stop();\n }\n }\n }, _callee5, this);\n }));\n\n function register(_x2, _x3) {\n return _register.apply(this, arguments);\n }\n\n return register;\n }()\n }, {\n key: "signIn",\n value: function () {\n var _signIn = _asyncToGenerator( /*#__PURE__*/_babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0___default.a.mark(function _callee7(email, password) {\n var _this3 = this;\n\n var strict,\n mfaKeyPath,\n mfaCode,\n paramsResponse,\n rawKeyParams,\n keyParams,\n minimum,\n message,\n confirmed,\n latest,\n _ref2,\n rootKey,\n serverPassword,\n _args7 = arguments;\n\n return _babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0___default.a.wrap(function _callee7$(_context7) {\n while (1) {\n switch (_context7.prev = _context7.next) {\n case 0:\n strict = _args7.length > 2 && _args7[2] !== undefined ? _args7[2] : false;\n mfaKeyPath = _args7.length > 3 ? _args7[3] : undefined;\n mfaCode = _args7.length > 4 ? _args7[4] : undefined;\n _context7.next = 5;\n return this.apiService.getAccountKeyParams(email, mfaKeyPath, mfaCode);\n\n case 5:\n paramsResponse = _context7.sent;\n\n if (!paramsResponse.error) {\n _context7.next = 8;\n break;\n }\n\n return _context7.abrupt("return", {\n response: paramsResponse\n });\n\n case 8:\n rawKeyParams = {\n pw_cost: paramsResponse.pw_cost,\n pw_nonce: paramsResponse.pw_nonce,\n identifier: paramsResponse.identifier,\n email: paramsResponse.email,\n pw_salt: paramsResponse.pw_salt,\n version: paramsResponse.version\n };\n keyParams = this.protocolService.createKeyParams(rawKeyParams);\n\n if (!(!keyParams || !keyParams.version)) {\n _context7.next = 12;\n break;\n }\n\n return _context7.abrupt("return", {\n response: this.apiService.createErrorResponse(_messages__WEBPACK_IMPORTED_MODULE_5__["API_MESSAGE_FALLBACK_LOGIN_FAIL"])\n });\n\n case 12:\n if (this.protocolService.supportedVersions().includes(keyParams.version)) {\n _context7.next = 18;\n break;\n }\n\n if (!this.protocolService.isVersionNewerThanLibraryVersion(keyParams.version)) {\n _context7.next = 17;\n break;\n }\n\n return _context7.abrupt("return", {\n response: this.apiService.createErrorResponse(_messages__WEBPACK_IMPORTED_MODULE_5__["UNSUPPORTED_PROTOCOL_VERSION"])\n });\n\n case 17:\n return _context7.abrupt("return", {\n response: this.apiService.createErrorResponse(_messages__WEBPACK_IMPORTED_MODULE_5__["EXPIRED_PROTOCOL_VERSION"])\n });\n\n case 18:\n if (!this.protocolService.isProtocolVersionOutdated(keyParams.version)) {\n _context7.next = 29;\n break;\n }\n\n /* Cost minimums only apply to now outdated versions (001 and 002) */\n minimum = this.protocolService.costMinimumForVersion(keyParams.version);\n\n if (!(keyParams.kdfIterations < minimum)) {\n _context7.next = 22;\n break;\n }\n\n return _context7.abrupt("return", {\n response: this.apiService.createErrorResponse(_messages__WEBPACK_IMPORTED_MODULE_5__["INVALID_PASSWORD_COST"])\n });\n\n case 22:\n ;\n message = _messages__WEBPACK_IMPORTED_MODULE_5__["OUTDATED_PROTOCOL_VERSION"];\n _context7.next = 26;\n return this.alertService.confirm(message, _messages__WEBPACK_IMPORTED_MODULE_5__["OUTDATED_PROTOCOL_ALERT_TITLE"], _messages__WEBPACK_IMPORTED_MODULE_5__["OUTDATED_PROTOCOL_ALERT_IGNORE"]).catch(function () {\n /* No-op */\n });\n\n case 26:\n confirmed = _context7.sent;\n\n if (confirmed) {\n _context7.next = 29;\n break;\n }\n\n return _context7.abrupt("return", {\n response: this.apiService.createErrorResponse(_messages__WEBPACK_IMPORTED_MODULE_5__["API_MESSAGE_FALLBACK_LOGIN_FAIL"])\n });\n\n case 29:\n if (this.protocolService.platformSupportsKeyDerivation(keyParams)) {\n _context7.next = 31;\n break;\n }\n\n return _context7.abrupt("return", {\n response: this.apiService.createErrorResponse(_messages__WEBPACK_IMPORTED_MODULE_5__["UNSUPPORTED_KEY_DERIVATION"])\n });\n\n case 31:\n if (!strict) {\n _context7.next = 35;\n break;\n }\n\n latest = this.protocolService.getLatestVersion();\n\n if (!(keyParams.version !== latest)) {\n _context7.next = 35;\n break;\n }\n\n return _context7.abrupt("return", {\n response: this.apiService.createErrorResponse(_messages__WEBPACK_IMPORTED_MODULE_5__["StrictSignInFailed"](keyParams.version, latest))\n });\n\n case 35:\n _context7.next = 37;\n return this.protocolService.computeRootKey(password, keyParams).then(function (rootKey) {\n return {\n rootKey: rootKey,\n serverPassword: rootKey.serverPassword\n };\n });\n\n case 37:\n _ref2 = _context7.sent;\n rootKey = _ref2.rootKey;\n serverPassword = _ref2.serverPassword;\n return _context7.abrupt("return", this.apiService.signIn(email, serverPassword, mfaKeyPath, mfaCode).then( /*#__PURE__*/function () {\n var _ref3 = _asyncToGenerator( /*#__PURE__*/_babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0___default.a.mark(function _callee6(response) {\n return _babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0___default.a.wrap(function _callee6$(_context6) {\n while (1) {\n switch (_context6.prev = _context6.next) {\n case 0:\n _context6.next = 2;\n return _this3.handleAuthResponse(response);\n\n case 2:\n return _context6.abrupt("return", {\n response: response,\n keyParams: keyParams,\n rootKey: rootKey\n });\n\n case 3:\n case "end":\n return _context6.stop();\n }\n }\n }, _callee6);\n }));\n\n return function (_x7) {\n return _ref3.apply(this, arguments);\n };\n }()));\n\n case 41:\n case "end":\n return _context7.stop();\n }\n }\n }, _callee7, this);\n }));\n\n function signIn(_x5, _x6) {\n return _signIn.apply(this, arguments);\n }\n\n return signIn;\n }()\n }, {\n key: "changePassword",\n value: function () {\n var _changePassword = _asyncToGenerator( /*#__PURE__*/_babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0___default.a.mark(function _callee8(currentServerPassword, newServerPassword, newKeyParams) {\n var response;\n return _babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0___default.a.wrap(function _callee8$(_context8) {\n while (1) {\n switch (_context8.prev = _context8.next) {\n case 0:\n _context8.next = 2;\n return this.apiService.changePassword(currentServerPassword, newServerPassword, newKeyParams);\n\n case 2:\n response = _context8.sent;\n _context8.next = 5;\n return this.handleAuthResponse(response);\n\n case 5:\n return _context8.abrupt("return", response);\n\n case 6:\n case "end":\n return _context8.stop();\n }\n }\n }, _callee8, this);\n }));\n\n function changePassword(_x8, _x9, _x10) {\n return _changePassword.apply(this, arguments);\n }\n\n return changePassword;\n }()\n }, {\n key: "handleAuthResponse",\n value: function () {\n var _handleAuthResponse = _asyncToGenerator( /*#__PURE__*/_babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0___default.a.mark(function _callee9(response) {\n var user, session;\n return _babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0___default.a.wrap(function _callee9$(_context9) {\n while (1) {\n switch (_context9.prev = _context9.next) {\n case 0:\n if (!response.error) {\n _context9.next = 2;\n break;\n }\n\n return _context9.abrupt("return");\n\n case 2:\n user = response.user;\n this.user = user;\n _context9.next = 6;\n return this.storageService.setValue(_Lib_storage_keys__WEBPACK_IMPORTED_MODULE_3__["StorageKey"].User, user);\n\n case 6:\n if (!response.token) {\n _context9.next = 10;\n break;\n }\n\n session = _Lib_services_api_session__WEBPACK_IMPORTED_MODULE_4__["Session"].FromResponse(response);\n _context9.next = 10;\n return this.setSession(session);\n\n case 10:\n case "end":\n return _context9.stop();\n }\n }\n }, _callee9, this);\n }));\n\n function handleAuthResponse(_x11) {\n return _handleAuthResponse.apply(this, arguments);\n }\n\n return handleAuthResponse;\n }()\n }]);\n\n return SNSessionManager;\n}(_Lib_services_pure_service__WEBPACK_IMPORTED_MODULE_1__["PureService"]);//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9saWIvc2VydmljZXMvYXBpL3Nlc3Npb25fbWFuYWdlci50cy5qcyIsInNvdXJjZXMiOlsid2VicGFjazovL1NOTGlicmFyeS8uL2xpYi9zZXJ2aWNlcy9hcGkvc2Vzc2lvbl9tYW5hZ2VyLnRzP2VjOTUiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgUHVyZVNlcnZpY2UgfSBmcm9tICdATGliL3NlcnZpY2VzL3B1cmVfc2VydmljZSc7XG5pbXBvcnQgeyBpc051bGxPclVuZGVmaW5lZCB9IGZyb20gJ0BMaWIvdXRpbHMnO1xuaW1wb3J0IHsgU3RvcmFnZUtleSB9IGZyb20gJ0BMaWIvc3RvcmFnZV9rZXlzJztcbmltcG9ydCB7IFNlc3Npb24gfSBmcm9tICdATGliL3NlcnZpY2VzL2FwaS9zZXNzaW9uJztcbmltcG9ydCAqIGFzIG1lc3NhZ2VzIGZyb20gJy4vbWVzc2FnZXMnO1xuZXhwb3J0IGNvbnN0IE1JTklNVU1fUEFTU1dPUkRfTEVOR1RIID0gODtcbi8qKlxuICogVGhlIHNlc3Npb24gbWFuYWdlciBpcyByZXNwb25zaWJsZSBmb3IgbG9hZGluZyBpbml0aWFsIHVzZXIgc3RhdGUsIGFuZCBhbnkgcmVsZXZhbnRcbiAqIHNlcnZlciBjcmVkZW50aWFscywgc3VjaCBhcyB0aGUgc2Vzc2lvbiB0b2tlbi4gSXQgYWxzbyBleHBvc2VzIG1ldGhvZHMgZm9yIHJlZ2lzdGVyaW5nXG4gKiBmb3IgYSBuZXcgYWNjb3VudCwgc2lnbmluZyBpbnRvIGFuIGV4aXN0aW5nIG9uZSwgb3IgY2hhbmdpbmcgYW4gYWNjb3VudCBwYXNzd29yZC5cbiAqL1xuZXhwb3J0IGNsYXNzIFNOU2Vzc2lvbk1hbmFnZXIgZXh0ZW5kcyBQdXJlU2VydmljZSB7XG4gICAgY29uc3RydWN0b3Ioc3RvcmFnZVNlcnZpY2UsIGFwaVNlcnZpY2UsIGFsZXJ0U2VydmljZSwgcHJvdG9jb2xTZXJ2aWNlKSB7XG4gICAgICAgIHN1cGVyKCk7XG4gICAgICAgIHRoaXMucHJvdG9jb2xTZXJ2aWNlID0gcHJvdG9jb2xTZXJ2aWNlO1xuICAgICAgICB0aGlzLnN0b3JhZ2VTZXJ2aWNlID0gc3RvcmFnZVNlcnZpY2U7XG4gICAgICAgIHRoaXMuYXBpU2VydmljZSA9IGFwaVNlcnZpY2U7XG4gICAgICAgIHRoaXMuYWxlcnRTZXJ2aWNlID0gYWxlcnRTZXJ2aWNlO1xuICAgIH1cbiAgICBkZWluaXQoKSB7XG4gICAgICAgIHRoaXMucHJvdG9jb2xTZXJ2aWNlID0gdW5kZWZpbmVkO1xuICAgICAgICB0aGlzLnN0b3JhZ2VTZXJ2aWNlID0gdW5kZWZpbmVkO1xuICAgICAgICB0aGlzLmFwaVNlcnZpY2UgPSB1bmRlZmluZWQ7XG4gICAgICAgIHRoaXMuYWxlcnRTZXJ2aWNlID0gdW5kZWZpbmVkO1xuICAgICAgICB0aGlzLnVzZXIgPSB1bmRlZmluZWQ7XG4gICAgICAgIHN1cGVyLmRlaW5pdCgpO1xuICAgIH1cbiAgICBhc3luYyBpbml0aWFsaXplRnJvbURpc2soKSB7XG4gICAgICAgIHRoaXMudXNlciA9IGF3YWl0IHRoaXMuc3RvcmFnZVNlcnZpY2UuZ2V0VmFsdWUoU3RvcmFnZUtleS5Vc2VyKTtcbiAgICAgICAgaWYgKCF0aGlzLnVzZXIpIHtcbiAgICAgICAgICAgIC8qKiBAbGVnYWN5IENoZWNrIGZvciB1dWlkLiAqL1xuICAgICAgICAgICAgY29uc3QgdXVpZCA9IGF3YWl0IHRoaXMuc3RvcmFnZVNlcnZpY2UuZ2V0VmFsdWUoU3RvcmFnZUtleS5MZWdhY3lVdWlkKTtcbiAgICAgICAgICAgIGlmICh1dWlkKSB7XG4gICAgICAgICAgICAgICAgdGhpcy51c2VyID0geyB1dWlkOiB1dWlkIH07XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgY29uc3QgcmF3U2Vzc2lvbiA9IGF3YWl0IHRoaXMuc3RvcmFnZVNlcnZpY2UuZ2V0VmFsdWUoU3RvcmFnZUtleS5TZXNzaW9uKTtcbiAgICAgICAgaWYgKHJhd1Nlc3Npb24pIHtcbiAgICAgICAgICAgIGF3YWl0IHRoaXMuc2V0U2Vzc2lvbihTZXNzaW9uLkZyb21SYXcocmF3U2Vzc2lvbiksIGZhbHNlKTtcbiAgICAgICAgfVxuICAgIH1cbiAgICBhc3luYyBzZXRTZXNzaW9uKHNlc3Npb24sIHBlcnNpc3QgPSB0cnVlKSB7XG4gICAgICAgIGF3YWl0IHRoaXMuYXBpU2VydmljZS5zZXRTZXNzaW9uKHNlc3Npb24sIHBlcnNpc3QpO1xuICAgIH1cbiAgICBvbmxpbmUoKSB7XG4gICAgICAgIHJldHVybiAhdGhpcy5vZmZsaW5lKCk7XG4gICAgfVxuICAgIG9mZmxpbmUoKSB7XG4gICAgICAgIHJldHVybiBpc051bGxPclVuZGVmaW5lZCh0aGlzLmFwaVNlcnZpY2UuZ2V0U2Vzc2lvbigpKTtcbiAgICB9XG4gICAgZ2V0VXNlcigpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMudXNlcjtcbiAgICB9XG4gICAgYXN5bmMgc2lnbk91dCgpIHtcbiAgICAgICAgdGhpcy51c2VyID0gdW5kZWZpbmVkO1xuICAgICAgICBjb25zdCBzZXNzaW9uID0gYXdhaXQgdGhpcy5hcGlTZXJ2aWNlLmdldFNlc3Npb24oKTtcbiAgICAgICAgaWYgKHNlc3Npb24gJiYgc2Vzc2lvbi5jYW5FeHBpcmUoKSkge1xuICAgICAgICAgICAgdGhpcy5hcGlTZXJ2aWNlLnNpZ25PdXQoKTtcbiAgICAgICAgfVxuICAgIH1cbiAgICBhc3luYyByZWdpc3RlcihlbWFpbCwgcGFzc3dvcmQpIHtcbiAgICAgICAgaWYgKHBhc3N3b3JkLmxlbmd0aCA8IE1JTklNVU1fUEFTU1dPUkRfTEVOR1RIKSB7XG4gICAgICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgICAgIHJlc3BvbnNlOiB0aGlzLmFwaVNlcnZpY2UuY3JlYXRlRXJyb3JSZXNwb25zZShtZXNzYWdlcy5JbnN1ZmZpY2llbnRQYXNzd29yZE1lc3NhZ2UoTUlOSU1VTV9QQVNTV09SRF9MRU5HVEgpKVxuICAgICAgICAgICAgfTtcbiAgICAgICAgfVxuICAgICAgICBjb25zdCByZXN1bHQgPSBhd2FpdCB0aGlzLnByb3RvY29sU2VydmljZS5jcmVhdGVSb290S2V5KGVtYWlsLCBwYXNzd29yZCk7XG4gICAgICAgIGNvbnN0IHNlcnZlclBhc3N3b3JkID0gcmVzdWx0LmtleS5zZXJ2ZXJQYXNzd29yZDtcbiAgICAgICAgY29uc3Qga2V5UGFyYW1zID0gcmVzdWx0LmtleVBhcmFtcztcbiAgICAgICAgY29uc3Qgcm9vdEtleSA9IHJlc3VsdC5rZXk7XG4gICAgICAgIHJldHVybiB0aGlzLmFwaVNlcnZpY2UucmVnaXN0ZXIoZW1haWwsIHNlcnZlclBhc3N3b3JkLCBrZXlQYXJhbXMpLnRoZW4oYXN5bmMgKHJlc3BvbnNlKSA9PiB7XG4gICAgICAgICAgICBhd2FpdCB0aGlzLmhhbmRsZUF1dGhSZXNwb25zZShyZXNwb25zZSk7XG4gICAgICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgICAgIHJlc3BvbnNlOiByZXNwb25zZSxcbiAgICAgICAgICAgICAgICBrZXlQYXJhbXM6IGtleVBhcmFtcyxcbiAgICAgICAgICAgICAgICByb290S2V5OiByb290S2V5XG4gICAgICAgICAgICB9O1xuICAgICAgICB9KTtcbiAgICB9XG4gICAgYXN5bmMgc2lnbkluKGVtYWlsLCBwYXNzd29yZCwgc3RyaWN0ID0gZmFsc2UsIG1mYUtleVBhdGgsIG1mYUNvZGUpIHtcbiAgICAgICAgY29uc3QgcGFyYW1zUmVzcG9uc2UgPSBhd2FpdCB0aGlzLmFwaVNlcnZpY2UuZ2V0QWNjb3VudEtleVBhcmFtcyhlbWFpbCwgbWZhS2V5UGF0aCwgbWZhQ29kZSk7XG4gICAgICAgIGlmIChwYXJhbXNSZXNwb25zZS5lcnJvcikge1xuICAgICAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgICAgICByZXNwb25zZTogcGFyYW1zUmVzcG9uc2VcbiAgICAgICAgICAgIH07XG4gICAgICAgIH1cbiAgICAgICAgY29uc3QgcmF3S2V5UGFyYW1zID0ge1xuICAgICAgICAgICAgcHdfY29zdDogcGFyYW1zUmVzcG9uc2UucHdfY29zdCxcbiAgICAgICAgICAgIHB3X25vbmNlOiBwYXJhbXNSZXNwb25zZS5wd19ub25jZSxcbiAgICAgICAgICAgIGlkZW50aWZpZXI6IHBhcmFtc1Jlc3BvbnNlLmlkZW50aWZpZXIsXG4gICAgICAgICAgICBlbWFpbDogcGFyYW1zUmVzcG9uc2UuZW1haWwsXG4gICAgICAgICAgICBwd19zYWx0OiBwYXJhbXNSZXNwb25zZS5wd19zYWx0LFxuICAgICAgICAgICAgdmVyc2lvbjogcGFyYW1zUmVzcG9uc2UudmVyc2lvblxuICAgICAgICB9O1xuICAgICAgICBjb25zdCBrZXlQYXJhbXMgPSB0aGlzLnByb3RvY29sU2VydmljZS5jcmVhdGVLZXlQYXJhbXMocmF3S2V5UGFyYW1zKTtcbiAgICAgICAgaWYgKCFrZXlQYXJhbXMgfHwgIWtleVBhcmFtcy52ZXJzaW9uKSB7XG4gICAgICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgICAgIHJlc3BvbnNlOiB0aGlzLmFwaVNlcnZpY2UuY3JlYXRlRXJyb3JSZXNwb25zZShtZXNzYWdlcy5BUElfTUVTU0FHRV9GQUxMQkFDS19MT0dJTl9GQUlMKVxuICAgICAgICAgICAgfTtcbiAgICAgICAgfVxuICAgICAgICBpZiAoIXRoaXMucHJvdG9jb2xTZXJ2aWNlLnN1cHBvcnRlZFZlcnNpb25zKCkuaW5jbHVkZXMoa2V5UGFyYW1zLnZlcnNpb24pKSB7XG4gICAgICAgICAgICBpZiAodGhpcy5wcm90b2NvbFNlcnZpY2UuaXNWZXJzaW9uTmV3ZXJUaGFuTGlicmFyeVZlcnNpb24oa2V5UGFyYW1zLnZlcnNpb24pKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgICAgICAgICAgcmVzcG9uc2U6IHRoaXMuYXBpU2VydmljZS5jcmVhdGVFcnJvclJlc3BvbnNlKG1lc3NhZ2VzLlVOU1VQUE9SVEVEX1BST1RPQ09MX1ZFUlNJT04pXG4gICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICAgICAgICAgIHJlc3BvbnNlOiB0aGlzLmFwaVNlcnZpY2UuY3JlYXRlRXJyb3JSZXNwb25zZShtZXNzYWdlcy5FWFBJUkVEX1BST1RPQ09MX1ZFUlNJT04pXG4gICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICBpZiAodGhpcy5wcm90b2NvbFNlcnZpY2UuaXNQcm90b2NvbFZlcnNpb25PdXRkYXRlZChrZXlQYXJhbXMudmVyc2lvbikpIHtcbiAgICAgICAgICAgIC8qIENvc3QgbWluaW11bXMgb25seSBhcHBseSB0byBub3cgb3V0ZGF0ZWQgdmVyc2lvbnMgKDAwMSBhbmQgMDAyKSAqL1xuICAgICAgICAgICAgY29uc3QgbWluaW11bSA9IHRoaXMucHJvdG9jb2xTZXJ2aWNlLmNvc3RNaW5pbXVtRm9yVmVyc2lvbihrZXlQYXJhbXMudmVyc2lvbik7XG4gICAgICAgICAgICBpZiAoa2V5UGFyYW1zLmtkZkl0ZXJhdGlvbnMgPCBtaW5pbXVtKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgICAgICAgICAgcmVzcG9uc2U6IHRoaXMuYXBpU2VydmljZS5jcmVhdGVFcnJvclJlc3BvbnNlKG1lc3NhZ2VzLklOVkFMSURfUEFTU1dPUkRfQ09TVClcbiAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgO1xuICAgICAgICAgICAgY29uc3QgbWVzc2FnZSA9IG1lc3NhZ2VzLk9VVERBVEVEX1BST1RPQ09MX1ZFUlNJT047XG4gICAgICAgICAgICBjb25zdCBjb25maXJtZWQgPSBhd2FpdCB0aGlzLmFsZXJ0U2VydmljZS5jb25maXJtKG1lc3NhZ2UsIG1lc3NhZ2VzLk9VVERBVEVEX1BST1RPQ09MX0FMRVJUX1RJVExFLCBtZXNzYWdlcy5PVVREQVRFRF9QUk9UT0NPTF9BTEVSVF9JR05PUkUpLmNhdGNoKCgpID0+IHtcbiAgICAgICAgICAgICAgICAvKiBOby1vcCAqL1xuICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICBpZiAoIWNvbmZpcm1lZCkge1xuICAgICAgICAgICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICAgICAgICAgIHJlc3BvbnNlOiB0aGlzLmFwaVNlcnZpY2UuY3JlYXRlRXJyb3JSZXNwb25zZShtZXNzYWdlcy5BUElfTUVTU0FHRV9GQUxMQkFDS19MT0dJTl9GQUlMKVxuICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgaWYgKCF0aGlzLnByb3RvY29sU2VydmljZS5wbGF0Zm9ybVN1cHBvcnRzS2V5RGVyaXZhdGlvbihrZXlQYXJhbXMpKSB7XG4gICAgICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgICAgIHJlc3BvbnNlOiB0aGlzLmFwaVNlcnZpY2UuY3JlYXRlRXJyb3JSZXNwb25zZShtZXNzYWdlcy5VTlNVUFBPUlRFRF9LRVlfREVSSVZBVElPTilcbiAgICAgICAgICAgIH07XG4gICAgICAgIH1cbiAgICAgICAgaWYgKHN0cmljdCkge1xuICAgICAgICAgICAgY29uc3QgbGF0ZXN0ID0gdGhpcy5wcm90b2NvbFNlcnZpY2UuZ2V0TGF0ZXN0VmVyc2lvbigpO1xuICAgICAgICAgICAgaWYgKGtleVBhcmFtcy52ZXJzaW9uICE9PSBsYXRlc3QpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgICAgICAgICByZXNwb25zZTogdGhpcy5hcGlTZXJ2aWNlLmNyZWF0ZUVycm9yUmVzcG9uc2UobWVzc2FnZXMuU3RyaWN0U2lnbkluRmFpbGVkKGtleVBhcmFtcy52ZXJzaW9uLCBsYXRlc3QpKVxuICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgY29uc3QgeyByb290S2V5LCBzZXJ2ZXJQYXNzd29yZCB9ID0gYXdhaXQgdGhpcy5wcm90b2NvbFNlcnZpY2UuY29tcHV0ZVJvb3RLZXkocGFzc3dvcmQsIGtleVBhcmFtcykudGhlbigocm9vdEtleSkgPT4ge1xuICAgICAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgICAgICByb290S2V5OiByb290S2V5LFxuICAgICAgICAgICAgICAgIHNlcnZlclBhc3N3b3JkOiByb290S2V5LnNlcnZlclBhc3N3b3JkXG4gICAgICAgICAgICB9O1xuICAgICAgICB9KTtcbiAgICAgICAgcmV0dXJuIHRoaXMuYXBpU2VydmljZS5zaWduSW4oZW1haWwsIHNlcnZlclBhc3N3b3JkLCBtZmFLZXlQYXRoLCBtZmFDb2RlKS50aGVuKGFzeW5jIChyZXNwb25zZSkgPT4ge1xuICAgICAgICAgICAgYXdhaXQgdGhpcy5oYW5kbGVBdXRoUmVzcG9uc2UocmVzcG9uc2UpO1xuICAgICAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgICAgICByZXNwb25zZTogcmVzcG9uc2UsXG4gICAgICAgICAgICAgICAga2V5UGFyYW1zOiBrZXlQYXJhbXMsXG4gICAgICAgICAgICAgICAgcm9vdEtleTogcm9vdEtleVxuICAgICAgICAgICAgfTtcbiAgICAgICAgfSk7XG4gICAgfVxuICAgIGFzeW5jIGNoYW5nZVBhc3N3b3JkKGN1cnJlbnRTZXJ2ZXJQYXNzd29yZCwgbmV3U2VydmVyUGFzc3dvcmQsIG5ld0tleVBhcmFtcykge1xuICAgICAgICBjb25zdCByZXNwb25zZSA9IGF3YWl0IHRoaXMuYXBpU2VydmljZS5jaGFuZ2VQYXNzd29yZChjdXJyZW50U2VydmVyUGFzc3dvcmQsIG5ld1NlcnZlclBhc3N3b3JkLCBuZXdLZXlQYXJhbXMpO1xuICAgICAgICBhd2FpdCB0aGlzLmhhbmRsZUF1dGhSZXNwb25zZShyZXNwb25zZSk7XG4gICAgICAgIHJldHVybiByZXNwb25zZTtcbiAgICB9XG4gICAgYXN5bmMgaGFuZGxlQXV0aFJlc3BvbnNlKHJlc3BvbnNlKSB7XG4gICAgICAgIGlmIChyZXNwb25zZS5lcnJvcikge1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG4gICAgICAgIGNvbnN0IHVzZXIgPSByZXNwb25zZS51c2VyO1xuICAgICAgICB0aGlzLnVzZXIgPSB1c2VyO1xuICAgICAgICBhd2FpdCB0aGlzLnN0b3JhZ2VTZXJ2aWNlLnNldFZhbHVlKFN0b3JhZ2VLZXkuVXNlciwgdXNlcik7XG4gICAgICAgIC8qXG4gICAgICAgICAgVGhlIHRva2VuIGZyb20gcmVzcG9uc2UgY2FuIGJlIHVuZGVmaW5lZCBpZiB0aGUgdXNlciBpcyB1c2luZyBzZXNzaW9uIHRva2VucyAocHJvdG9jb2wgdmVyc2lvbiA+PSAwMDQpLlxuICAgICAgICAgIFdlIHNob3VsZCBjYWxsIHNldFNlc3Npb24gb25seSBpZiB0aGUgc2Vzc2lvbiBpcyB1cGRhdGVkIHdpdGggYSBuZXcgdG9rZW4uXG4gICAgICAgICovXG4gICAgICAgIGlmIChyZXNwb25zZS50b2tlbikge1xuICAgICAgICAgICAgY29uc3Qgc2Vzc2lvbiA9IFNlc3Npb24uRnJvbVJlc3BvbnNlKHJlc3BvbnNlKTtcbiAgICAgICAgICAgIGF3YWl0IHRoaXMuc2V0U2Vzc2lvbihzZXNzaW9uKTtcbiAgICAgICAgfVxuICAgIH1cbn1cbiJdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7Ozs7O0FBS0E7QUFBQTtBQUNBO0FBQUE7QUFBQTtBQUNBO0FBREE7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFMQTtBQU1BO0FBQ0E7QUFSQTtBQUFBO0FBQUE7QUFTQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBZkE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUNBO0FBREE7QUFpQkE7QUFDQTtBQWxCQTtBQUFBO0FBQUE7QUFBQTtBQUNBO0FBREE7QUFBQTtBQUNBO0FBREE7QUFvQkE7QUFDQTtBQUFBO0FBQ0E7QUFBQTtBQUFBO0FBQ0E7QUFDQTtBQXhCQTtBQUFBO0FBQUE7QUFDQTtBQURBO0FBeUJBO0FBQ0E7QUExQkE7QUFBQTtBQUFBO0FBQUE7QUFDQTtBQURBO0FBQUE7QUFDQTtBQURBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQ0E7QUFEQTtBQUFBO0FBQUE7QUFDQTtBQURBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQThCQTtBQTlCQTtBQUFBO0FBQ0E7QUFEQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUNBO0FBREE7QUFBQTtBQUFBO0FBQ0E7QUFEQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBa0NBO0FBQ0E7QUFuQ0E7QUFBQTtBQUFBO0FBcUNBO0FBQ0E7QUF0Q0E7QUFBQTtBQUFBO0FBd0NBO0FBQ0E7QUF6Q0E7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBMkNBO0FBM0NBO0FBQUE7QUFDQTtBQURBO0FBNENBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQWhEQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUNBO0FBREE7QUFBQTtBQUFBO0FBQ0E7QUFEQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUNBO0FBREE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQ0E7QUFEQTtBQW9EQTtBQURBO0FBQ0E7QUFwREE7QUFBQTtBQUFBO0FBQ0E7QUFEQTtBQXVEQTtBQUNBO0FBQ0E7QUFDQTtBQTFEQTtBQTJEQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUNBO0FBREE7QUFBQTtBQUdBO0FBQ0E7QUFDQTtBQUhBO0FBQ0E7QUFIQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUNBO0FBREE7QUFBQTtBQUFBO0FBQUE7QUFDQTtBQTVEQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUNBO0FBREE7QUFBQTtBQUFBO0FBQ0E7QUFEQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUNBO0FBREE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUNBO0FBREE7QUFBQTtBQUFBO0FBQUE7QUFvRUE7QUFBQTtBQUFBO0FBcEVBO0FBQUE7QUFDQTtBQURBO0FBcUVBO0FBQ0E7QUF0RUE7QUFBQTtBQUFBO0FBQUE7QUFDQTtBQURBO0FBd0VBO0FBREE7QUFDQTtBQXhFQTtBQTJFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQU5BO0FBUUE7QUFDQTtBQXBGQTtBQUFBO0FBQUE7QUFBQTtBQUNBO0FBREE7QUFzRkE7QUFEQTtBQUNBO0FBdEZBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFDQTtBQURBO0FBQUE7QUFBQTtBQUFBO0FBQ0E7QUFEQTtBQTRGQTtBQURBO0FBQ0E7QUE1RkE7QUFBQTtBQWlHQTtBQURBO0FBQ0E7QUFqR0E7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUNBO0FBcUdBO0FBQ0E7QUFDQTtBQXhHQTtBQUFBO0FBQUE7QUFBQTtBQUNBO0FBREE7QUEwR0E7QUFEQTtBQUNBO0FBMUdBO0FBNkdBO0FBQ0E7QUE5R0E7QUFBQTtBQWdIQTtBQUNBO0FBQ0E7QUFsSEE7QUErR0E7QUFDQTtBQWhIQTtBQUFBO0FBQUE7QUFBQTtBQUNBO0FBREE7QUFvSEE7QUFEQTtBQUNBO0FBcEhBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFDQTtBQURBO0FBMEhBO0FBREE7QUFDQTtBQTFIQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQ0E7QUE2SEE7QUFDQTtBQS9IQTtBQUFBO0FBQUE7QUFBQTtBQUNBO0FBREE7QUFpSUE7QUFEQTtBQUNBO0FBaklBO0FBQUE7QUFBQTtBQXNJQTtBQUNBO0FBQ0E7QUFGQTtBQUlBO0FBQ0E7QUEzSUE7QUFBQTtBQXFJQTtBQUFBO0FBcklBO0FBMklBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQ0E7QUFEQTtBQUFBO0FBR0E7QUFDQTtBQUNBO0FBSEE7QUFDQTtBQUhBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQ0E7QUFEQTtBQUFBO0FBQUE7QUFBQTtBQUNBO0FBNUlBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQ0E7QUFEQTtBQUFBO0FBQUE7QUFDQTtBQURBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQ0E7QUFEQTtBQXFKQTtBQXJKQTtBQUFBO0FBQ0E7QUFEQTtBQUFBO0FBQ0E7QUFEQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUNBO0FBREE7QUFBQTtBQUFBO0FBQ0E7QUFEQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFDQTtBQURBO0FBQ0E7QUFEQTtBQTZKQTtBQUNBO0FBOUpBO0FBQUE7QUFDQTtBQURBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFDQTtBQW9LQTtBQXJLQTtBQUFBO0FBQ0E7QUFEQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUNBO0FBREE7QUFBQTtBQUFBO0FBQ0E7QUFEQTtBQUFBO0FBQUE7QUFDQTtBQURBO0FBQUEiLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./lib/services/api/session_manager.ts\n')},"./lib/services/application_service.ts":
|
||
/*!*********************************************!*\
|
||
!*** ./lib/services/application_service.ts ***!
|
||
\*********************************************/
|
||
/*! exports provided: ApplicationService */function(module,__webpack_exports__,__webpack_require__){"use strict";eval('__webpack_require__.r(__webpack_exports__);\n/* WEBPACK VAR INJECTION */(function(setImmediate) {/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "ApplicationService", function() { return ApplicationService; });\n/* harmony import */ var _babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @babel/runtime/regenerator */ "./node_modules/@babel/runtime/regenerator/index.js");\n/* harmony import */ var _babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var _Services_pure_service__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! @Services/pure_service */ "./lib/services/pure_service.ts");\n/* harmony import */ var _Lib_events__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! @Lib/events */ "./lib/events.ts");\n\n\nfunction _typeof(obj) { "@babel/helpers - typeof"; if (typeof Symbol === "function" && typeof Symbol.iterator === "symbol") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }; } return _typeof(obj); }\n\nfunction asyncGeneratorStep(gen, resolve, reject, _next, _throw, key, arg) { try { var info = gen[key](arg); var value = info.value; } catch (error) { reject(error); return; } if (info.done) { resolve(value); } else { Promise.resolve(value).then(_next, _throw); } }\n\nfunction _asyncToGenerator(fn) { return function () { var self = this, args = arguments; return new Promise(function (resolve, reject) { var gen = fn.apply(self, args); function _next(value) { asyncGeneratorStep(gen, resolve, reject, _next, _throw, "next", value); } function _throw(err) { asyncGeneratorStep(gen, resolve, reject, _next, _throw, "throw", err); } _next(undefined); }); }; }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } }\n\nfunction _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); } }\n\nfunction _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; }\n\nfunction _possibleConstructorReturn(self, call) { if (call && (_typeof(call) === "object" || typeof call === "function")) { return call; } return _assertThisInitialized(self); }\n\nfunction _assertThisInitialized(self) { if (self === void 0) { throw new ReferenceError("this hasn\'t been initialised - super() hasn\'t been called"); } return self; }\n\nfunction _get(target, property, receiver) { if (typeof Reflect !== "undefined" && Reflect.get) { _get = Reflect.get; } else { _get = function _get(target, property, receiver) { var base = _superPropBase(target, property); if (!base) return; var desc = Object.getOwnPropertyDescriptor(base, property); if (desc.get) { return desc.get.call(receiver); } return desc.value; }; } return _get(target, property, receiver || target); }\n\nfunction _superPropBase(object, property) { while (!Object.prototype.hasOwnProperty.call(object, property)) { object = _getPrototypeOf(object); if (object === null) break; } return object; }\n\nfunction _getPrototypeOf(o) { _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function _getPrototypeOf(o) { return o.__proto__ || Object.getPrototypeOf(o); }; return _getPrototypeOf(o); }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== "function" && superClass !== null) { throw new TypeError("Super expression must either be null or a function"); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, writable: true, configurable: true } }); if (superClass) _setPrototypeOf(subClass, superClass); }\n\nfunction _setPrototypeOf(o, p) { _setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) { o.__proto__ = p; return o; }; return _setPrototypeOf(o, p); }\n\n\n\nvar ApplicationService = /*#__PURE__*/function (_PureService) {\n _inherits(ApplicationService, _PureService);\n\n function ApplicationService(application) {\n var _this;\n\n _classCallCheck(this, ApplicationService);\n\n _this = _possibleConstructorReturn(this, _getPrototypeOf(ApplicationService).call(this));\n _this.application = application;\n /* Allow caller constructor to finish setting instance variables before triggering callbacks */\n\n setImmediate(function () {\n _this.addAppEventObserver();\n });\n return _this;\n }\n\n _createClass(ApplicationService, [{\n key: "deinit",\n value: function deinit() {\n this.application = undefined;\n this.unsubApp();\n this.unsubApp = undefined;\n\n _get(_getPrototypeOf(ApplicationService.prototype), "deinit", this).call(this);\n }\n }, {\n key: "addAppEventObserver",\n value: function addAppEventObserver() {\n var _this2 = this;\n\n if (this.application.isStarted()) {\n this.onAppStart();\n }\n\n if (this.application.isLaunched()) {\n this.onAppLaunch();\n }\n\n this.unsubApp = this.application.addEventObserver( /*#__PURE__*/function () {\n var _ref = _asyncToGenerator( /*#__PURE__*/_babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0___default.a.mark(function _callee(event) {\n return _babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0___default.a.wrap(function _callee$(_context) {\n while (1) {\n switch (_context.prev = _context.next) {\n case 0:\n _this2.onAppEvent(event);\n\n if (!(event === _Lib_events__WEBPACK_IMPORTED_MODULE_2__["ApplicationEvent"].Started)) {\n _context.next = 6;\n break;\n }\n\n _context.next = 4;\n return _this2.onAppStart();\n\n case 4:\n _context.next = 12;\n break;\n\n case 6:\n if (!(event === _Lib_events__WEBPACK_IMPORTED_MODULE_2__["ApplicationEvent"].Launched)) {\n _context.next = 11;\n break;\n }\n\n _context.next = 9;\n return _this2.onAppLaunch();\n\n case 9:\n _context.next = 12;\n break;\n\n case 11:\n if (event === _Lib_events__WEBPACK_IMPORTED_MODULE_2__["ApplicationEvent"].CompletedFullSync) {\n _this2.onAppFullSync();\n } else if (event === _Lib_events__WEBPACK_IMPORTED_MODULE_2__["ApplicationEvent"].CompletedIncrementalSync) {\n _this2.onAppIncrementalSync();\n } else if (event === _Lib_events__WEBPACK_IMPORTED_MODULE_2__["ApplicationEvent"].KeyStatusChanged) {\n _this2.onAppKeyChange();\n }\n\n case 12:\n case "end":\n return _context.stop();\n }\n }\n }, _callee);\n }));\n\n return function (_x) {\n return _ref.apply(this, arguments);\n };\n }());\n }\n }, {\n key: "onAppEvent",\n value: function onAppEvent(event) {\n /** Optional override */\n }\n }, {\n key: "onAppStart",\n value: function () {\n var _onAppStart = _asyncToGenerator( /*#__PURE__*/_babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0___default.a.mark(function _callee2() {\n return _babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0___default.a.wrap(function _callee2$(_context2) {\n while (1) {\n switch (_context2.prev = _context2.next) {\n case 0:\n case "end":\n return _context2.stop();\n }\n }\n }, _callee2);\n }));\n\n function onAppStart() {\n return _onAppStart.apply(this, arguments);\n }\n\n return onAppStart;\n }()\n }, {\n key: "onAppLaunch",\n value: function () {\n var _onAppLaunch = _asyncToGenerator( /*#__PURE__*/_babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0___default.a.mark(function _callee3() {\n return _babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0___default.a.wrap(function _callee3$(_context3) {\n while (1) {\n switch (_context3.prev = _context3.next) {\n case 0:\n case "end":\n return _context3.stop();\n }\n }\n }, _callee3);\n }));\n\n function onAppLaunch() {\n return _onAppLaunch.apply(this, arguments);\n }\n\n return onAppLaunch;\n }()\n }, {\n key: "onAppKeyChange",\n value: function () {\n var _onAppKeyChange = _asyncToGenerator( /*#__PURE__*/_babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0___default.a.mark(function _callee4() {\n return _babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0___default.a.wrap(function _callee4$(_context4) {\n while (1) {\n switch (_context4.prev = _context4.next) {\n case 0:\n case "end":\n return _context4.stop();\n }\n }\n }, _callee4);\n }));\n\n function onAppKeyChange() {\n return _onAppKeyChange.apply(this, arguments);\n }\n\n return onAppKeyChange;\n }()\n }, {\n key: "onAppIncrementalSync",\n value: function onAppIncrementalSync() {\n /** Optional override */\n }\n }, {\n key: "onAppFullSync",\n value: function onAppFullSync() {\n /** Optional override */\n }\n }]);\n\n return ApplicationService;\n}(_Services_pure_service__WEBPACK_IMPORTED_MODULE_1__["PureService"]);\n/* WEBPACK VAR INJECTION */}.call(this, __webpack_require__(/*! ./../../node_modules/timers-browserify/main.js */ "./node_modules/timers-browserify/main.js").setImmediate))//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9saWIvc2VydmljZXMvYXBwbGljYXRpb25fc2VydmljZS50cy5qcyIsInNvdXJjZXMiOlsid2VicGFjazovL1NOTGlicmFyeS8uL2xpYi9zZXJ2aWNlcy9hcHBsaWNhdGlvbl9zZXJ2aWNlLnRzP2MyYzEiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgUHVyZVNlcnZpY2UgfSBmcm9tICdAU2VydmljZXMvcHVyZV9zZXJ2aWNlJztcbmltcG9ydCB7IEFwcGxpY2F0aW9uRXZlbnQgfSBmcm9tICdATGliL2V2ZW50cyc7XG5leHBvcnQgY2xhc3MgQXBwbGljYXRpb25TZXJ2aWNlIGV4dGVuZHMgUHVyZVNlcnZpY2Uge1xuICAgIGNvbnN0cnVjdG9yKGFwcGxpY2F0aW9uKSB7XG4gICAgICAgIHN1cGVyKCk7XG4gICAgICAgIHRoaXMuYXBwbGljYXRpb24gPSBhcHBsaWNhdGlvbjtcbiAgICAgICAgLyogQWxsb3cgY2FsbGVyIGNvbnN0cnVjdG9yIHRvIGZpbmlzaCBzZXR0aW5nIGluc3RhbmNlIHZhcmlhYmxlcyBiZWZvcmUgdHJpZ2dlcmluZyBjYWxsYmFja3MgKi9cbiAgICAgICAgc2V0SW1tZWRpYXRlKCgpID0+IHtcbiAgICAgICAgICAgIHRoaXMuYWRkQXBwRXZlbnRPYnNlcnZlcigpO1xuICAgICAgICB9KTtcbiAgICB9XG4gICAgZGVpbml0KCkge1xuICAgICAgICB0aGlzLmFwcGxpY2F0aW9uID0gdW5kZWZpbmVkO1xuICAgICAgICB0aGlzLnVuc3ViQXBwKCk7XG4gICAgICAgIHRoaXMudW5zdWJBcHAgPSB1bmRlZmluZWQ7XG4gICAgICAgIHN1cGVyLmRlaW5pdCgpO1xuICAgIH1cbiAgICBhZGRBcHBFdmVudE9ic2VydmVyKCkge1xuICAgICAgICBpZiAodGhpcy5hcHBsaWNhdGlvbi5pc1N0YXJ0ZWQoKSkge1xuICAgICAgICAgICAgdGhpcy5vbkFwcFN0YXJ0KCk7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKHRoaXMuYXBwbGljYXRpb24uaXNMYXVuY2hlZCgpKSB7XG4gICAgICAgICAgICB0aGlzLm9uQXBwTGF1bmNoKCk7XG4gICAgICAgIH1cbiAgICAgICAgdGhpcy51bnN1YkFwcCA9IHRoaXMuYXBwbGljYXRpb24uYWRkRXZlbnRPYnNlcnZlcihhc3luYyAoZXZlbnQpID0+IHtcbiAgICAgICAgICAgIHRoaXMub25BcHBFdmVudChldmVudCk7XG4gICAgICAgICAgICBpZiAoZXZlbnQgPT09IEFwcGxpY2F0aW9uRXZlbnQuU3RhcnRlZCkge1xuICAgICAgICAgICAgICAgIGF3YWl0IHRoaXMub25BcHBTdGFydCgpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgZWxzZSBpZiAoZXZlbnQgPT09IEFwcGxpY2F0aW9uRXZlbnQuTGF1bmNoZWQpIHtcbiAgICAgICAgICAgICAgICBhd2FpdCB0aGlzLm9uQXBwTGF1bmNoKCk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBlbHNlIGlmIChldmVudCA9PT0gQXBwbGljYXRpb25FdmVudC5Db21wbGV0ZWRGdWxsU3luYykge1xuICAgICAgICAgICAgICAgIHRoaXMub25BcHBGdWxsU3luYygpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgZWxzZSBpZiAoZXZlbnQgPT09IEFwcGxpY2F0aW9uRXZlbnQuQ29tcGxldGVkSW5jcmVtZW50YWxTeW5jKSB7XG4gICAgICAgICAgICAgICAgdGhpcy5vbkFwcEluY3JlbWVudGFsU3luYygpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgZWxzZSBpZiAoZXZlbnQgPT09IEFwcGxpY2F0aW9uRXZlbnQuS2V5U3RhdHVzQ2hhbmdlZCkge1xuICAgICAgICAgICAgICAgIHRoaXMub25BcHBLZXlDaGFuZ2UoKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSk7XG4gICAgfVxuICAgIG9uQXBwRXZlbnQoZXZlbnQpIHtcbiAgICAgICAgLyoqIE9wdGlvbmFsIG92ZXJyaWRlICovXG4gICAgfVxuICAgIGFzeW5jIG9uQXBwU3RhcnQoKSB7XG4gICAgICAgIC8qKiBPcHRpb25hbCBvdmVycmlkZSAqL1xuICAgIH1cbiAgICBhc3luYyBvbkFwcExhdW5jaCgpIHtcbiAgICAgICAgLyoqIE9wdGlvbmFsIG92ZXJyaWRlICovXG4gICAgfVxuICAgIGFzeW5jIG9uQXBwS2V5Q2hhbmdlKCkge1xuICAgICAgICAvKiogT3B0aW9uYWwgb3ZlcnJpZGUgKi9cbiAgICB9XG4gICAgb25BcHBJbmNyZW1lbnRhbFN5bmMoKSB7XG4gICAgICAgIC8qKiBPcHRpb25hbCBvdmVycmlkZSAqL1xuICAgIH1cbiAgICBvbkFwcEZ1bGxTeW5jKCkge1xuICAgICAgICAvKiogT3B0aW9uYWwgb3ZlcnJpZGUgKi9cbiAgICB9XG59XG4iXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFBQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQUE7QUFBQTtBQUNBO0FBREE7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBTkE7QUFPQTtBQUNBO0FBVEE7QUFBQTtBQUFBO0FBVUE7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBZEE7QUFBQTtBQUFBO0FBZUE7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFDQTtBQUNBO0FBRkE7QUFBQTtBQUFBO0FBQUE7QUFDQTtBQURBO0FBQUE7QUFDQTtBQURBO0FBQUE7QUFBQTtBQUNBO0FBREE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUNBO0FBREE7QUFBQTtBQUNBO0FBREE7QUFBQTtBQUFBO0FBQ0E7QUFEQTtBQVFBO0FBQ0E7QUFDQTtBQUVBO0FBQ0E7QUFFQTtBQUNBO0FBQ0E7QUFqQkE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFDQTtBQURBO0FBQUE7QUFBQTtBQUFBO0FBa0JBO0FBeENBO0FBQUE7QUFBQTtBQTBDQTtBQUNBO0FBM0NBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFDQTtBQURBO0FBQUE7QUFBQTtBQUNBO0FBREE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFDQTtBQURBO0FBQUE7QUFBQTtBQUNBO0FBREE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFDQTtBQURBO0FBQUE7QUFBQTtBQUNBO0FBREE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQXNEQTtBQUNBO0FBdkRBO0FBQUE7QUFBQTtBQXlEQTtBQUNBO0FBMURBO0FBQ0E7QUFEQTtBQUFBO0EiLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./lib/services/application_service.ts\n')},"./lib/services/challenge/challenge_operation.ts":
|
||
/*!*******************************************************!*\
|
||
!*** ./lib/services/challenge/challenge_operation.ts ***!
|
||
\*******************************************************/
|
||
/*! exports provided: ChallengeOperation */function(module,__webpack_exports__,__webpack_require__){"use strict";eval('__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "ChallengeOperation", function() { return ChallengeOperation; });\n/* harmony import */ var _Lib_utils__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @Lib/utils */ "./lib/utils.ts");\n/* harmony import */ var _Lib_challenges__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! @Lib/challenges */ "./lib/challenges.ts");\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } }\n\nfunction _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); } }\n\nfunction _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; }\n\n\n\n/**\n * A challenge operation stores user-submitted values and callbacks.\n * When its values are updated, it will trigger the associated callbacks (valid/invalid/complete)\n */\n\nvar ChallengeOperation = /*#__PURE__*/function () {\n /**\n * @param resolve the promise resolve function to be called\n * when this challenge completes or cancels\n */\n function ChallengeOperation(challenge, resolve) {\n _classCallCheck(this, ChallengeOperation);\n\n this.challenge = challenge;\n this.resolve = resolve;\n this.validValues = [];\n this.invalidValues = [];\n this.artifacts = {};\n }\n /**\n * Mark this challenge as complete, triggering the resolve function,\n * as well as notifying the client\n */\n\n\n _createClass(ChallengeOperation, [{\n key: "complete",\n value: function complete(response) {\n var _this$resolve, _this$onComplete;\n\n if (!response) {\n response = new _Lib_challenges__WEBPACK_IMPORTED_MODULE_1__["ChallengeResponse"](this.challenge, this.validValues, this.artifacts);\n }\n\n (_this$resolve = this.resolve) === null || _this$resolve === void 0 ? void 0 : _this$resolve.call(this, response);\n (_this$onComplete = this.onComplete) === null || _this$onComplete === void 0 ? void 0 : _this$onComplete.call(this);\n }\n }, {\n key: "cancel",\n value: function cancel() {\n var _this$resolve2, _this$onCancel;\n\n (_this$resolve2 = this.resolve) === null || _this$resolve2 === void 0 ? void 0 : _this$resolve2.call(this, null);\n (_this$onCancel = this.onCancel) === null || _this$onCancel === void 0 ? void 0 : _this$onCancel.call(this);\n }\n /**\n * @returns Returns true if the challenge has received all valid responses\n */\n\n }, {\n key: "isFinished",\n value: function isFinished() {\n return this.validValues.length === this.challenge.types.length;\n }\n /**\n * Sets the values validation status, as well as handles subsequent actions,\n * such as completing the operation if all valid values are supplied, as well as\n * notifying the client of this new value\'s validation status.\n */\n\n }, {\n key: "setValueStatus",\n value: function setValueStatus(value, valid, artifacts) {\n var valuesArray = valid ? this.validValues : this.invalidValues;\n var matching = valuesArray.find(function (v) {\n return v.type === value.type;\n });\n\n if (matching) {\n Object(_Lib_utils__WEBPACK_IMPORTED_MODULE_0__["removeFromArray"])(valuesArray, matching);\n }\n\n valuesArray.push(value);\n Object.assign(this.artifacts, artifacts);\n\n if (this.isFinished()) {\n this.complete();\n } else {\n if (valid) {\n var _this$onValidValue;\n\n (_this$onValidValue = this.onValidValue) === null || _this$onValidValue === void 0 ? void 0 : _this$onValidValue.call(this, value);\n } else {\n var _this$onInvalidValue;\n\n (_this$onInvalidValue = this.onInvalidValue) === null || _this$onInvalidValue === void 0 ? void 0 : _this$onInvalidValue.call(this, value);\n }\n }\n }\n }]);\n\n return ChallengeOperation;\n}();//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9saWIvc2VydmljZXMvY2hhbGxlbmdlL2NoYWxsZW5nZV9vcGVyYXRpb24udHMuanMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly9TTkxpYnJhcnkvLi9saWIvc2VydmljZXMvY2hhbGxlbmdlL2NoYWxsZW5nZV9vcGVyYXRpb24udHM/NmViNyJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyByZW1vdmVGcm9tQXJyYXkgfSBmcm9tIFwiQExpYi91dGlsc1wiO1xuaW1wb3J0IHsgQ2hhbGxlbmdlUmVzcG9uc2UsIH0gZnJvbSBcIkBMaWIvY2hhbGxlbmdlc1wiO1xuLyoqXG4gKiBBIGNoYWxsZW5nZSBvcGVyYXRpb24gc3RvcmVzIHVzZXItc3VibWl0dGVkIHZhbHVlcyBhbmQgY2FsbGJhY2tzLlxuICogV2hlbiBpdHMgdmFsdWVzIGFyZSB1cGRhdGVkLCBpdCB3aWxsIHRyaWdnZXIgdGhlIGFzc29jaWF0ZWQgY2FsbGJhY2tzICh2YWxpZC9pbnZhbGlkL2NvbXBsZXRlKVxuICovXG5leHBvcnQgY2xhc3MgQ2hhbGxlbmdlT3BlcmF0aW9uIHtcbiAgICAvKipcbiAgICAgKiBAcGFyYW0gcmVzb2x2ZSB0aGUgcHJvbWlzZSByZXNvbHZlIGZ1bmN0aW9uIHRvIGJlIGNhbGxlZFxuICAgICAqIHdoZW4gdGhpcyBjaGFsbGVuZ2UgY29tcGxldGVzIG9yIGNhbmNlbHNcbiAgICAgKi9cbiAgICBjb25zdHJ1Y3RvcihjaGFsbGVuZ2UsIHJlc29sdmUpIHtcbiAgICAgICAgdGhpcy5jaGFsbGVuZ2UgPSBjaGFsbGVuZ2U7XG4gICAgICAgIHRoaXMucmVzb2x2ZSA9IHJlc29sdmU7XG4gICAgICAgIHRoaXMudmFsaWRWYWx1ZXMgPSBbXTtcbiAgICAgICAgdGhpcy5pbnZhbGlkVmFsdWVzID0gW107XG4gICAgICAgIHRoaXMuYXJ0aWZhY3RzID0ge307XG4gICAgfVxuICAgIC8qKlxuICAgICAqIE1hcmsgdGhpcyBjaGFsbGVuZ2UgYXMgY29tcGxldGUsIHRyaWdnZXJpbmcgdGhlIHJlc29sdmUgZnVuY3Rpb24sXG4gICAgICogYXMgd2VsbCBhcyBub3RpZnlpbmcgdGhlIGNsaWVudFxuICAgICAqL1xuICAgIGNvbXBsZXRlKHJlc3BvbnNlKSB7XG4gICAgICAgIGlmICghcmVzcG9uc2UpIHtcbiAgICAgICAgICAgIHJlc3BvbnNlID0gbmV3IENoYWxsZW5nZVJlc3BvbnNlKHRoaXMuY2hhbGxlbmdlLCB0aGlzLnZhbGlkVmFsdWVzLCB0aGlzLmFydGlmYWN0cyk7XG4gICAgICAgIH1cbiAgICAgICAgdGhpcy5yZXNvbHZlPy4ocmVzcG9uc2UpO1xuICAgICAgICB0aGlzLm9uQ29tcGxldGU/LigpO1xuICAgIH1cbiAgICBjYW5jZWwoKSB7XG4gICAgICAgIHRoaXMucmVzb2x2ZT8uKG51bGwpO1xuICAgICAgICB0aGlzLm9uQ2FuY2VsPy4oKTtcbiAgICB9XG4gICAgLyoqXG4gICAgICogQHJldHVybnMgUmV0dXJucyB0cnVlIGlmIHRoZSBjaGFsbGVuZ2UgaGFzIHJlY2VpdmVkIGFsbCB2YWxpZCByZXNwb25zZXNcbiAgICAgKi9cbiAgICBpc0ZpbmlzaGVkKCkge1xuICAgICAgICByZXR1cm4gdGhpcy52YWxpZFZhbHVlcy5sZW5ndGggPT09IHRoaXMuY2hhbGxlbmdlLnR5cGVzLmxlbmd0aDtcbiAgICB9XG4gICAgLyoqXG4gICAgICogU2V0cyB0aGUgdmFsdWVzIHZhbGlkYXRpb24gc3RhdHVzLCBhcyB3ZWxsIGFzIGhhbmRsZXMgc3Vic2VxdWVudCBhY3Rpb25zLFxuICAgICAqIHN1Y2ggYXMgY29tcGxldGluZyB0aGUgb3BlcmF0aW9uIGlmIGFsbCB2YWxpZCB2YWx1ZXMgYXJlIHN1cHBsaWVkLCBhcyB3ZWxsIGFzXG4gICAgICogbm90aWZ5aW5nIHRoZSBjbGllbnQgb2YgdGhpcyBuZXcgdmFsdWUncyB2YWxpZGF0aW9uIHN0YXR1cy5cbiAgICAgKi9cbiAgICBzZXRWYWx1ZVN0YXR1cyh2YWx1ZSwgdmFsaWQsIGFydGlmYWN0cykge1xuICAgICAgICBjb25zdCB2YWx1ZXNBcnJheSA9IHZhbGlkID8gdGhpcy52YWxpZFZhbHVlcyA6IHRoaXMuaW52YWxpZFZhbHVlcztcbiAgICAgICAgY29uc3QgbWF0Y2hpbmcgPSB2YWx1ZXNBcnJheS5maW5kKCh2KSA9PiB2LnR5cGUgPT09IHZhbHVlLnR5cGUpO1xuICAgICAgICBpZiAobWF0Y2hpbmcpIHtcbiAgICAgICAgICAgIHJlbW92ZUZyb21BcnJheSh2YWx1ZXNBcnJheSwgbWF0Y2hpbmcpO1xuICAgICAgICB9XG4gICAgICAgIHZhbHVlc0FycmF5LnB1c2godmFsdWUpO1xuICAgICAgICBPYmplY3QuYXNzaWduKHRoaXMuYXJ0aWZhY3RzLCBhcnRpZmFjdHMpO1xuICAgICAgICBpZiAodGhpcy5pc0ZpbmlzaGVkKCkpIHtcbiAgICAgICAgICAgIHRoaXMuY29tcGxldGUoKTtcbiAgICAgICAgfVxuICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgIGlmICh2YWxpZCkge1xuICAgICAgICAgICAgICAgIHRoaXMub25WYWxpZFZhbHVlPy4odmFsdWUpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICAgICAgdGhpcy5vbkludmFsaWRWYWx1ZT8uKHZhbHVlKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgIH1cbn1cbiJdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7OztBQUFBO0FBQ0E7QUFDQTs7Ozs7QUFJQTtBQUNBOzs7O0FBSUE7QUFBQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7Ozs7OztBQVpBO0FBQUE7QUFBQTtBQWdCQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUF0QkE7QUFBQTtBQUFBO0FBdUJBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTs7OztBQTNCQTtBQUFBO0FBQUE7QUErQkE7QUFDQTtBQUNBOzs7Ozs7QUFqQ0E7QUFBQTtBQUFBO0FBdUNBO0FBQ0E7QUFBQTtBQUFBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUVBO0FBQUE7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUF6REE7QUFDQTtBQURBO0FBQUEiLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./lib/services/challenge/challenge_operation.ts\n')},"./lib/services/challenge/challenge_service.ts":
|
||
/*!*****************************************************!*\
|
||
!*** ./lib/services/challenge/challenge_service.ts ***!
|
||
\*****************************************************/
|
||
/*! exports provided: ChallengeService */function(module,__webpack_exports__,__webpack_require__){"use strict";eval('__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "ChallengeService", function() { return ChallengeService; });\n/* harmony import */ var _babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @babel/runtime/regenerator */ "./node_modules/@babel/runtime/regenerator/index.js");\n/* harmony import */ var _babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var _Lib_services_pure_service__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! @Lib/services/pure_service */ "./lib/services/pure_service.ts");\n/* harmony import */ var _Lib_storage_keys__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! @Lib/storage_keys */ "./lib/storage_keys.ts");\n/* harmony import */ var _Services_storage_service__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! @Services/storage_service */ "./lib/services/storage_service.ts");\n/* harmony import */ var _Lib_challenges__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! @Lib/challenges */ "./lib/challenges.ts");\n/* harmony import */ var _challenge_operation__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ./challenge_operation */ "./lib/services/challenge/challenge_operation.ts");\n\n\nfunction _typeof(obj) { "@babel/helpers - typeof"; if (typeof Symbol === "function" && typeof Symbol.iterator === "symbol") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }; } return _typeof(obj); }\n\nfunction asyncGeneratorStep(gen, resolve, reject, _next, _throw, key, arg) { try { var info = gen[key](arg); var value = info.value; } catch (error) { reject(error); return; } if (info.done) { resolve(value); } else { Promise.resolve(value).then(_next, _throw); } }\n\nfunction _asyncToGenerator(fn) { return function () { var self = this, args = arguments; return new Promise(function (resolve, reject) { var gen = fn.apply(self, args); function _next(value) { asyncGeneratorStep(gen, resolve, reject, _next, _throw, "next", value); } function _throw(err) { asyncGeneratorStep(gen, resolve, reject, _next, _throw, "throw", err); } _next(undefined); }); }; }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } }\n\nfunction _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); } }\n\nfunction _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; }\n\nfunction _possibleConstructorReturn(self, call) { if (call && (_typeof(call) === "object" || typeof call === "function")) { return call; } return _assertThisInitialized(self); }\n\nfunction _assertThisInitialized(self) { if (self === void 0) { throw new ReferenceError("this hasn\'t been initialised - super() hasn\'t been called"); } return self; }\n\nfunction _get(target, property, receiver) { if (typeof Reflect !== "undefined" && Reflect.get) { _get = Reflect.get; } else { _get = function _get(target, property, receiver) { var base = _superPropBase(target, property); if (!base) return; var desc = Object.getOwnPropertyDescriptor(base, property); if (desc.get) { return desc.get.call(receiver); } return desc.value; }; } return _get(target, property, receiver || target); }\n\nfunction _superPropBase(object, property) { while (!Object.prototype.hasOwnProperty.call(object, property)) { object = _getPrototypeOf(object); if (object === null) break; } return object; }\n\nfunction _getPrototypeOf(o) { _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function _getPrototypeOf(o) { return o.__proto__ || Object.getPrototypeOf(o); }; return _getPrototypeOf(o); }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== "function" && superClass !== null) { throw new TypeError("Super expression must either be null or a function"); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, writable: true, configurable: true } }); if (superClass) _setPrototypeOf(subClass, superClass); }\n\nfunction _setPrototypeOf(o, p) { _setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) { o.__proto__ = p; return o; }; return _setPrototypeOf(o, p); }\n\n\n\n\n\n\n/**\n * The challenge service creates, updates and keeps track of running challenge operations.\n */\n\nvar ChallengeService = /*#__PURE__*/function (_PureService) {\n _inherits(ChallengeService, _PureService);\n\n function ChallengeService(storageService, protocolService) {\n var _this;\n\n _classCallCheck(this, ChallengeService);\n\n _this = _possibleConstructorReturn(this, _getPrototypeOf(ChallengeService).call(this));\n _this.challengeOperations = {};\n _this.storageService = storageService;\n _this.protocolService = protocolService;\n return _this;\n }\n /** @override */\n\n\n _createClass(ChallengeService, [{\n key: "deinit",\n value: function deinit() {\n this.storageService = undefined;\n this.protocolService = undefined;\n this.sendChallenge = undefined;\n\n _get(_getPrototypeOf(ChallengeService.prototype), "deinit", this).call(this);\n }\n /**\n * Resolves when the challenge has been completed.\n */\n\n }, {\n key: "promptForChallengeResponse",\n value: function promptForChallengeResponse(challenge) {\n var _this2 = this;\n\n return new Promise(function (resolve) {\n _this2.createOrGetChallengeOperation(challenge, resolve);\n });\n }\n /**\n * Resolves when the user has submitted values which the caller can use\n * to run custom validations.\n */\n\n }, {\n key: "promptForChallengeResponseWithCustomValidation",\n value: function promptForChallengeResponseWithCustomValidation(challenge) {\n var operation = this.createOrGetChallengeOperation(challenge);\n return new Promise(function (resolve) {\n operation.customValidator = resolve;\n });\n }\n }, {\n key: "validateChallengeValue",\n value: function validateChallengeValue(value) {\n switch (value.type) {\n case _Lib_challenges__WEBPACK_IMPORTED_MODULE_4__["ChallengeType"].LocalPasscode:\n return this.protocolService.validatePasscode(value.value);\n\n case _Lib_challenges__WEBPACK_IMPORTED_MODULE_4__["ChallengeType"].AccountPassword:\n return this.protocolService.validateAccountPassword(value.value);\n\n case _Lib_challenges__WEBPACK_IMPORTED_MODULE_4__["ChallengeType"].Biometric:\n return Promise.resolve({\n valid: value.value === true\n });\n }\n }\n }, {\n key: "getLaunchChallenge",\n value: function () {\n var _getLaunchChallenge = _asyncToGenerator( /*#__PURE__*/_babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0___default.a.mark(function _callee() {\n var types, hasPasscode, biometricPrefs, biometricEnabled;\n return _babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0___default.a.wrap(function _callee$(_context) {\n while (1) {\n switch (_context.prev = _context.next) {\n case 0:\n types = [];\n hasPasscode = this.protocolService.hasPasscode();\n\n if (hasPasscode) {\n types.push(_Lib_challenges__WEBPACK_IMPORTED_MODULE_4__["ChallengeType"].LocalPasscode);\n }\n\n _context.next = 5;\n return this.storageService.getValue(_Lib_storage_keys__WEBPACK_IMPORTED_MODULE_2__["StorageKey"].BiometricPrefs, _Services_storage_service__WEBPACK_IMPORTED_MODULE_3__["StorageValueModes"].Nonwrapped);\n\n case 5:\n biometricPrefs = _context.sent;\n biometricEnabled = biometricPrefs && biometricPrefs.enabled;\n\n if (biometricEnabled) {\n types.push(_Lib_challenges__WEBPACK_IMPORTED_MODULE_4__["ChallengeType"].Biometric);\n }\n\n if (!(types.length > 0)) {\n _context.next = 12;\n break;\n }\n\n return _context.abrupt("return", new _Lib_challenges__WEBPACK_IMPORTED_MODULE_4__["Challenge"](types, _Lib_challenges__WEBPACK_IMPORTED_MODULE_4__["ChallengeReason"].ApplicationUnlock));\n\n case 12:\n return _context.abrupt("return", null);\n\n case 13:\n case "end":\n return _context.stop();\n }\n }\n }, _callee, this);\n }));\n\n function getLaunchChallenge() {\n return _getLaunchChallenge.apply(this, arguments);\n }\n\n return getLaunchChallenge;\n }()\n }, {\n key: "isPasscodeLocked",\n value: function isPasscodeLocked() {\n return this.protocolService.rootKeyNeedsUnwrapping();\n }\n }, {\n key: "enableBiometrics",\n value: function () {\n var _enableBiometrics = _asyncToGenerator( /*#__PURE__*/_babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0___default.a.mark(function _callee2() {\n return _babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0___default.a.wrap(function _callee2$(_context2) {\n while (1) {\n switch (_context2.prev = _context2.next) {\n case 0:\n _context2.next = 2;\n return this.storageService.setValue(_Lib_storage_keys__WEBPACK_IMPORTED_MODULE_2__["StorageKey"].BiometricPrefs, {\n enabled: true\n }, _Services_storage_service__WEBPACK_IMPORTED_MODULE_3__["StorageValueModes"].Nonwrapped);\n\n case 2:\n case "end":\n return _context2.stop();\n }\n }\n }, _callee2, this);\n }));\n\n function enableBiometrics() {\n return _enableBiometrics.apply(this, arguments);\n }\n\n return enableBiometrics;\n }()\n }, {\n key: "setChallengeCallbacks",\n value: function setChallengeCallbacks(challenge, onValidValue, onInvalidValue, onComplete, onCancel) {\n var operation = this.getChallengeOperation(challenge);\n operation.onValidValue = onValidValue;\n operation.onInvalidValue = onInvalidValue;\n operation.onComplete = onComplete;\n operation.onCancel = onCancel;\n }\n }, {\n key: "createOrGetChallengeOperation",\n value: function createOrGetChallengeOperation(challenge, resolve) {\n var operation = this.getChallengeOperation(challenge);\n\n if (!operation) {\n operation = new _challenge_operation__WEBPACK_IMPORTED_MODULE_5__["ChallengeOperation"](challenge, resolve);\n this.challengeOperations[challenge.id] = operation;\n this.sendChallenge(challenge);\n }\n\n operation.resolve = resolve;\n return operation;\n }\n }, {\n key: "getChallengeOperation",\n value: function getChallengeOperation(challenge) {\n return this.challengeOperations[challenge.id];\n }\n }, {\n key: "deleteChallengeOperation",\n value: function deleteChallengeOperation(operation) {\n delete this.challengeOperations[operation.challenge.id];\n }\n }, {\n key: "cancelChallenge",\n value: function cancelChallenge(challenge) {\n var operation = this.challengeOperations[challenge.id];\n operation.cancel();\n this.deleteChallengeOperation(operation);\n }\n }, {\n key: "submitValuesForChallenge",\n value: function () {\n var _submitValuesForChallenge = _asyncToGenerator( /*#__PURE__*/_babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0___default.a.mark(function _callee3(challenge, values) {\n var operation, _iteratorNormalCompletion, _didIteratorError, _iteratorError, _iterator, _step, value, _ref, valid, artifacts;\n\n return _babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0___default.a.wrap(function _callee3$(_context3) {\n while (1) {\n switch (_context3.prev = _context3.next) {\n case 0:\n if (!(values.length === 0)) {\n _context3.next = 2;\n break;\n }\n\n throw Error("Attempting to submit 0 values for challenge");\n\n case 2:\n operation = this.getChallengeOperation(challenge);\n\n if (!operation.customValidator) {\n _context3.next = 7;\n break;\n }\n\n operation.customValidator(values);\n _context3.next = 37;\n break;\n\n case 7:\n _iteratorNormalCompletion = true;\n _didIteratorError = false;\n _iteratorError = undefined;\n _context3.prev = 10;\n _iterator = values[Symbol.iterator]();\n\n case 12:\n if (_iteratorNormalCompletion = (_step = _iterator.next()).done) {\n _context3.next = 23;\n break;\n }\n\n value = _step.value;\n _context3.next = 16;\n return this.validateChallengeValue(value);\n\n case 16:\n _ref = _context3.sent;\n valid = _ref.valid;\n artifacts = _ref.artifacts;\n this.setValidationStatusForChallenge(challenge, value, valid, artifacts);\n\n case 20:\n _iteratorNormalCompletion = true;\n _context3.next = 12;\n break;\n\n case 23:\n _context3.next = 29;\n break;\n\n case 25:\n _context3.prev = 25;\n _context3.t0 = _context3["catch"](10);\n _didIteratorError = true;\n _iteratorError = _context3.t0;\n\n case 29:\n _context3.prev = 29;\n _context3.prev = 30;\n\n if (!_iteratorNormalCompletion && _iterator.return != null) {\n _iterator.return();\n }\n\n case 32:\n _context3.prev = 32;\n\n if (!_didIteratorError) {\n _context3.next = 35;\n break;\n }\n\n throw _iteratorError;\n\n case 35:\n return _context3.finish(32);\n\n case 36:\n return _context3.finish(29);\n\n case 37:\n case "end":\n return _context3.stop();\n }\n }\n }, _callee3, this, [[10, 25, 29, 37], [30,, 32, 36]]);\n }));\n\n function submitValuesForChallenge(_x, _x2) {\n return _submitValuesForChallenge.apply(this, arguments);\n }\n\n return submitValuesForChallenge;\n }()\n }, {\n key: "setValidationStatusForChallenge",\n value: function setValidationStatusForChallenge(challenge, value, valid, artifacts) {\n var operation = this.getChallengeOperation(challenge);\n operation.setValueStatus(value, valid, artifacts);\n\n if (operation.isFinished()) {\n this.deleteChallengeOperation(operation);\n }\n }\n }]);\n\n return ChallengeService;\n}(_Lib_services_pure_service__WEBPACK_IMPORTED_MODULE_1__["PureService"]);//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9saWIvc2VydmljZXMvY2hhbGxlbmdlL2NoYWxsZW5nZV9zZXJ2aWNlLnRzLmpzIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vU05MaWJyYXJ5Ly4vbGliL3NlcnZpY2VzL2NoYWxsZW5nZS9jaGFsbGVuZ2Vfc2VydmljZS50cz82MTAwIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IFB1cmVTZXJ2aWNlIH0gZnJvbSBcIkBMaWIvc2VydmljZXMvcHVyZV9zZXJ2aWNlXCI7XG5pbXBvcnQgeyBTdG9yYWdlS2V5IH0gZnJvbSBcIkBMaWIvc3RvcmFnZV9rZXlzXCI7XG5pbXBvcnQgeyBTdG9yYWdlVmFsdWVNb2RlcyB9IGZyb20gXCJAU2VydmljZXMvc3RvcmFnZV9zZXJ2aWNlXCI7XG5pbXBvcnQgeyBDaGFsbGVuZ2UsIENoYWxsZW5nZVR5cGUsIENoYWxsZW5nZVJlYXNvbiwgfSBmcm9tIFwiQExpYi9jaGFsbGVuZ2VzXCI7XG5pbXBvcnQgeyBDaGFsbGVuZ2VPcGVyYXRpb24gfSBmcm9tIFwiLi9jaGFsbGVuZ2Vfb3BlcmF0aW9uXCI7XG4vKipcbiAqIFRoZSBjaGFsbGVuZ2Ugc2VydmljZSBjcmVhdGVzLCB1cGRhdGVzIGFuZCBrZWVwcyB0cmFjayBvZiBydW5uaW5nIGNoYWxsZW5nZSBvcGVyYXRpb25zLlxuICovXG5leHBvcnQgY2xhc3MgQ2hhbGxlbmdlU2VydmljZSBleHRlbmRzIFB1cmVTZXJ2aWNlIHtcbiAgICBjb25zdHJ1Y3RvcihzdG9yYWdlU2VydmljZSwgcHJvdG9jb2xTZXJ2aWNlKSB7XG4gICAgICAgIHN1cGVyKCk7XG4gICAgICAgIHRoaXMuY2hhbGxlbmdlT3BlcmF0aW9ucyA9IHt9O1xuICAgICAgICB0aGlzLnN0b3JhZ2VTZXJ2aWNlID0gc3RvcmFnZVNlcnZpY2U7XG4gICAgICAgIHRoaXMucHJvdG9jb2xTZXJ2aWNlID0gcHJvdG9jb2xTZXJ2aWNlO1xuICAgIH1cbiAgICAvKiogQG92ZXJyaWRlICovXG4gICAgZGVpbml0KCkge1xuICAgICAgICB0aGlzLnN0b3JhZ2VTZXJ2aWNlID0gdW5kZWZpbmVkO1xuICAgICAgICB0aGlzLnByb3RvY29sU2VydmljZSA9IHVuZGVmaW5lZDtcbiAgICAgICAgdGhpcy5zZW5kQ2hhbGxlbmdlID0gdW5kZWZpbmVkO1xuICAgICAgICBzdXBlci5kZWluaXQoKTtcbiAgICB9XG4gICAgLyoqXG4gICAgICogUmVzb2x2ZXMgd2hlbiB0aGUgY2hhbGxlbmdlIGhhcyBiZWVuIGNvbXBsZXRlZC5cbiAgICAgKi9cbiAgICBwcm9tcHRGb3JDaGFsbGVuZ2VSZXNwb25zZShjaGFsbGVuZ2UpIHtcbiAgICAgICAgcmV0dXJuIG5ldyBQcm9taXNlKChyZXNvbHZlKSA9PiB7XG4gICAgICAgICAgICB0aGlzLmNyZWF0ZU9yR2V0Q2hhbGxlbmdlT3BlcmF0aW9uKGNoYWxsZW5nZSwgcmVzb2x2ZSk7XG4gICAgICAgIH0pO1xuICAgIH1cbiAgICAvKipcbiAgICAgKiBSZXNvbHZlcyB3aGVuIHRoZSB1c2VyIGhhcyBzdWJtaXR0ZWQgdmFsdWVzIHdoaWNoIHRoZSBjYWxsZXIgY2FuIHVzZVxuICAgICAqIHRvIHJ1biBjdXN0b20gdmFsaWRhdGlvbnMuXG4gICAgICovXG4gICAgcHJvbXB0Rm9yQ2hhbGxlbmdlUmVzcG9uc2VXaXRoQ3VzdG9tVmFsaWRhdGlvbihjaGFsbGVuZ2UpIHtcbiAgICAgICAgY29uc3Qgb3BlcmF0aW9uID0gdGhpcy5jcmVhdGVPckdldENoYWxsZW5nZU9wZXJhdGlvbihjaGFsbGVuZ2UpO1xuICAgICAgICByZXR1cm4gbmV3IFByb21pc2UoKHJlc29sdmUpID0+IHtcbiAgICAgICAgICAgIG9wZXJhdGlvbi5jdXN0b21WYWxpZGF0b3IgPSByZXNvbHZlO1xuICAgICAgICB9KTtcbiAgICB9XG4gICAgdmFsaWRhdGVDaGFsbGVuZ2VWYWx1ZSh2YWx1ZSkge1xuICAgICAgICBzd2l0Y2ggKHZhbHVlLnR5cGUpIHtcbiAgICAgICAgICAgIGNhc2UgQ2hhbGxlbmdlVHlwZS5Mb2NhbFBhc3Njb2RlOlxuICAgICAgICAgICAgICAgIHJldHVybiB0aGlzLnByb3RvY29sU2VydmljZS52YWxpZGF0ZVBhc3Njb2RlKHZhbHVlLnZhbHVlKTtcbiAgICAgICAgICAgIGNhc2UgQ2hhbGxlbmdlVHlwZS5BY2NvdW50UGFzc3dvcmQ6XG4gICAgICAgICAgICAgICAgcmV0dXJuIHRoaXMucHJvdG9jb2xTZXJ2aWNlLnZhbGlkYXRlQWNjb3VudFBhc3N3b3JkKHZhbHVlLnZhbHVlKTtcbiAgICAgICAgICAgIGNhc2UgQ2hhbGxlbmdlVHlwZS5CaW9tZXRyaWM6XG4gICAgICAgICAgICAgICAgcmV0dXJuIFByb21pc2UucmVzb2x2ZSh7IHZhbGlkOiB2YWx1ZS52YWx1ZSA9PT0gdHJ1ZSB9KTtcbiAgICAgICAgfVxuICAgIH1cbiAgICBhc3luYyBnZXRMYXVuY2hDaGFsbGVuZ2UoKSB7XG4gICAgICAgIGNvbnN0IHR5cGVzID0gW107XG4gICAgICAgIGNvbnN0IGhhc1Bhc3Njb2RlID0gdGhpcy5wcm90b2NvbFNlcnZpY2UuaGFzUGFzc2NvZGUoKTtcbiAgICAgICAgaWYgKGhhc1Bhc3Njb2RlKSB7XG4gICAgICAgICAgICB0eXBlcy5wdXNoKENoYWxsZW5nZVR5cGUuTG9jYWxQYXNzY29kZSk7XG4gICAgICAgIH1cbiAgICAgICAgY29uc3QgYmlvbWV0cmljUHJlZnMgPSBhd2FpdCB0aGlzLnN0b3JhZ2VTZXJ2aWNlLmdldFZhbHVlKFN0b3JhZ2VLZXkuQmlvbWV0cmljUHJlZnMsIFN0b3JhZ2VWYWx1ZU1vZGVzLk5vbndyYXBwZWQpO1xuICAgICAgICBjb25zdCBiaW9tZXRyaWNFbmFibGVkID0gYmlvbWV0cmljUHJlZnMgJiYgYmlvbWV0cmljUHJlZnMuZW5hYmxlZDtcbiAgICAgICAgaWYgKGJpb21ldHJpY0VuYWJsZWQpIHtcbiAgICAgICAgICAgIHR5cGVzLnB1c2goQ2hhbGxlbmdlVHlwZS5CaW9tZXRyaWMpO1xuICAgICAgICB9XG4gICAgICAgIGlmICh0eXBlcy5sZW5ndGggPiAwKSB7XG4gICAgICAgICAgICByZXR1cm4gbmV3IENoYWxsZW5nZSh0eXBlcywgQ2hhbGxlbmdlUmVhc29uLkFwcGxpY2F0aW9uVW5sb2NrKTtcbiAgICAgICAgfVxuICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgIHJldHVybiBudWxsO1xuICAgICAgICB9XG4gICAgfVxuICAgIGlzUGFzc2NvZGVMb2NrZWQoKSB7XG4gICAgICAgIHJldHVybiB0aGlzLnByb3RvY29sU2VydmljZS5yb290S2V5TmVlZHNVbndyYXBwaW5nKCk7XG4gICAgfVxuICAgIGFzeW5jIGVuYWJsZUJpb21ldHJpY3MoKSB7XG4gICAgICAgIGF3YWl0IHRoaXMuc3RvcmFnZVNlcnZpY2Uuc2V0VmFsdWUoU3RvcmFnZUtleS5CaW9tZXRyaWNQcmVmcywgeyBlbmFibGVkOiB0cnVlIH0sIFN0b3JhZ2VWYWx1ZU1vZGVzLk5vbndyYXBwZWQpO1xuICAgIH1cbiAgICBzZXRDaGFsbGVuZ2VDYWxsYmFja3MoY2hhbGxlbmdlLCBvblZhbGlkVmFsdWUsIG9uSW52YWxpZFZhbHVlLCBvbkNvbXBsZXRlLCBvbkNhbmNlbCkge1xuICAgICAgICBjb25zdCBvcGVyYXRpb24gPSB0aGlzLmdldENoYWxsZW5nZU9wZXJhdGlvbihjaGFsbGVuZ2UpO1xuICAgICAgICBvcGVyYXRpb24ub25WYWxpZFZhbHVlID0gb25WYWxpZFZhbHVlO1xuICAgICAgICBvcGVyYXRpb24ub25JbnZhbGlkVmFsdWUgPSBvbkludmFsaWRWYWx1ZTtcbiAgICAgICAgb3BlcmF0aW9uLm9uQ29tcGxldGUgPSBvbkNvbXBsZXRlO1xuICAgICAgICBvcGVyYXRpb24ub25DYW5jZWwgPSBvbkNhbmNlbDtcbiAgICB9XG4gICAgY3JlYXRlT3JHZXRDaGFsbGVuZ2VPcGVyYXRpb24oY2hhbGxlbmdlLCByZXNvbHZlKSB7XG4gICAgICAgIGxldCBvcGVyYXRpb24gPSB0aGlzLmdldENoYWxsZW5nZU9wZXJhdGlvbihjaGFsbGVuZ2UpO1xuICAgICAgICBpZiAoIW9wZXJhdGlvbikge1xuICAgICAgICAgICAgb3BlcmF0aW9uID0gbmV3IENoYWxsZW5nZU9wZXJhdGlvbihjaGFsbGVuZ2UsIHJlc29sdmUpO1xuICAgICAgICAgICAgdGhpcy5jaGFsbGVuZ2VPcGVyYXRpb25zW2NoYWxsZW5nZS5pZF0gPSBvcGVyYXRpb247XG4gICAgICAgICAgICB0aGlzLnNlbmRDaGFsbGVuZ2UoY2hhbGxlbmdlKTtcbiAgICAgICAgfVxuICAgICAgICBvcGVyYXRpb24ucmVzb2x2ZSA9IHJlc29sdmU7XG4gICAgICAgIHJldHVybiBvcGVyYXRpb247XG4gICAgfVxuICAgIGdldENoYWxsZW5nZU9wZXJhdGlvbihjaGFsbGVuZ2UpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuY2hhbGxlbmdlT3BlcmF0aW9uc1tjaGFsbGVuZ2UuaWRdO1xuICAgIH1cbiAgICBkZWxldGVDaGFsbGVuZ2VPcGVyYXRpb24ob3BlcmF0aW9uKSB7XG4gICAgICAgIGRlbGV0ZSB0aGlzLmNoYWxsZW5nZU9wZXJhdGlvbnNbb3BlcmF0aW9uLmNoYWxsZW5nZS5pZF07XG4gICAgfVxuICAgIGNhbmNlbENoYWxsZW5nZShjaGFsbGVuZ2UpIHtcbiAgICAgICAgY29uc3Qgb3BlcmF0aW9uID0gdGhpcy5jaGFsbGVuZ2VPcGVyYXRpb25zW2NoYWxsZW5nZS5pZF07XG4gICAgICAgIG9wZXJhdGlvbi5jYW5jZWwoKTtcbiAgICAgICAgdGhpcy5kZWxldGVDaGFsbGVuZ2VPcGVyYXRpb24ob3BlcmF0aW9uKTtcbiAgICB9XG4gICAgYXN5bmMgc3VibWl0VmFsdWVzRm9yQ2hhbGxlbmdlKGNoYWxsZW5nZSwgdmFsdWVzKSB7XG4gICAgICAgIGlmICh2YWx1ZXMubGVuZ3RoID09PSAwKSB7XG4gICAgICAgICAgICB0aHJvdyBFcnJvcihcIkF0dGVtcHRpbmcgdG8gc3VibWl0IDAgdmFsdWVzIGZvciBjaGFsbGVuZ2VcIik7XG4gICAgICAgIH1cbiAgICAgICAgY29uc3Qgb3BlcmF0aW9uID0gdGhpcy5nZXRDaGFsbGVuZ2VPcGVyYXRpb24oY2hhbGxlbmdlKTtcbiAgICAgICAgaWYgKG9wZXJhdGlvbi5jdXN0b21WYWxpZGF0b3IpIHtcbiAgICAgICAgICAgIG9wZXJhdGlvbi5jdXN0b21WYWxpZGF0b3IodmFsdWVzKTtcbiAgICAgICAgfVxuICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgIGZvciAoY29uc3QgdmFsdWUgb2YgdmFsdWVzKSB7XG4gICAgICAgICAgICAgICAgY29uc3QgeyB2YWxpZCwgYXJ0aWZhY3RzIH0gPSBhd2FpdCB0aGlzLnZhbGlkYXRlQ2hhbGxlbmdlVmFsdWUodmFsdWUpO1xuICAgICAgICAgICAgICAgIHRoaXMuc2V0VmFsaWRhdGlvblN0YXR1c0ZvckNoYWxsZW5nZShjaGFsbGVuZ2UsIHZhbHVlLCB2YWxpZCwgYXJ0aWZhY3RzKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgIH1cbiAgICBzZXRWYWxpZGF0aW9uU3RhdHVzRm9yQ2hhbGxlbmdlKGNoYWxsZW5nZSwgdmFsdWUsIHZhbGlkLCBhcnRpZmFjdHMpIHtcbiAgICAgICAgY29uc3Qgb3BlcmF0aW9uID0gdGhpcy5nZXRDaGFsbGVuZ2VPcGVyYXRpb24oY2hhbGxlbmdlKTtcbiAgICAgICAgb3BlcmF0aW9uLnNldFZhbHVlU3RhdHVzKHZhbHVlLCB2YWxpZCwgYXJ0aWZhY3RzKTtcbiAgICAgICAgaWYgKG9wZXJhdGlvbi5pc0ZpbmlzaGVkKCkpIHtcbiAgICAgICAgICAgIHRoaXMuZGVsZXRlQ2hhbGxlbmdlT3BlcmF0aW9uKG9wZXJhdGlvbik7XG4gICAgICAgIH1cbiAgICB9XG59XG4iXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7Ozs7QUFHQTtBQUFBO0FBQ0E7QUFBQTtBQUFBO0FBQ0E7QUFEQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFKQTtBQUtBO0FBQ0E7QUFDQTtBQUNBO0FBVEE7QUFBQTtBQUFBO0FBU0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7Ozs7QUFkQTtBQUFBO0FBQUE7QUFpQkE7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7Ozs7O0FBdEJBO0FBQUE7QUFBQTtBQTJCQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBL0JBO0FBQUE7QUFBQTtBQWlDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFBQTtBQUFBO0FBTkE7QUFRQTtBQXpDQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUEyQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFoREE7QUFBQTtBQUNBO0FBREE7QUFnREE7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFyREE7QUFBQTtBQUFBO0FBQUE7QUFDQTtBQURBO0FBQ0E7QUFEQTtBQUFBO0FBQ0E7QUFEQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUNBO0FBREE7QUFBQTtBQUFBO0FBQ0E7QUFEQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBNkRBO0FBQ0E7QUE5REE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFnRUE7QUFBQTtBQUNBO0FBakVBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQ0E7QUFEQTtBQUFBO0FBQUE7QUFDQTtBQURBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFtRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBeEVBO0FBQUE7QUFBQTtBQTBFQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBbEZBO0FBQUE7QUFBQTtBQW9GQTtBQUNBO0FBckZBO0FBQUE7QUFBQTtBQXVGQTtBQUNBO0FBeEZBO0FBQUE7QUFBQTtBQTBGQTtBQUNBO0FBQ0E7QUFDQTtBQTdGQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQ0E7QUFEQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQ0E7QUFEQTtBQUNBO0FBREE7QUFrR0E7QUFDQTtBQW5HQTtBQUFBO0FBQUE7QUFBQTtBQUNBO0FBbUdBO0FBcEdBO0FBQUE7QUFDQTtBQURBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUNBO0FBREE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUNBO0FBc0dBO0FBdkdBO0FBQUE7QUFDQTtBQURBO0FBQUE7QUF3R0E7QUFBQTtBQUNBO0FBQ0E7QUExR0E7QUFBQTtBQUFBO0FBQUE7QUFDQTtBQURBO0FBQUE7QUFBQTtBQUNBO0FBREE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUNBO0FBREE7QUFBQTtBQUFBO0FBQ0E7QUFEQTtBQUFBO0FBQUE7QUFDQTtBQURBO0FBQUE7QUFDQTtBQURBO0FBQUE7QUFBQTtBQUFBO0FBQ0E7QUFEQTtBQUNBO0FBREE7QUFBQTtBQUNBO0FBREE7QUFBQTtBQUNBO0FBREE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFDQTtBQURBO0FBQUE7QUFBQTtBQUNBO0FBREE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQThHQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQW5IQTtBQUNBO0FBREE7QUFBQSIsInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./lib/services/challenge/challenge_service.ts\n')},"./lib/services/component_manager.ts":
|
||
/*!*******************************************!*\
|
||
!*** ./lib/services/component_manager.ts ***!
|
||
\*******************************************/
|
||
/*! exports provided: SNComponentManager */function(module,__webpack_exports__,__webpack_require__){"use strict";eval('__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "SNComponentManager", function() { return SNComponentManager; });\n/* harmony import */ var _babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @babel/runtime/regenerator */ "./node_modules/@babel/runtime/regenerator/index.js");\n/* harmony import */ var _babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var _Models_functions__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! @Models/functions */ "./lib/models/functions.ts");\n/* harmony import */ var _Models_generator__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! @Models/generator */ "./lib/models/generator.ts");\n/* harmony import */ var _models_content_types__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./../models/content_types */ "./lib/models/content_types.ts");\n/* harmony import */ var _protocol_payloads_sources__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ./../protocol/payloads/sources */ "./lib/protocol/payloads/sources.ts");\n/* harmony import */ var _Payloads_generator__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! @Payloads/generator */ "./lib/protocol/payloads/generator.ts");\n/* harmony import */ var _Models_core_item__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! @Models/core/item */ "./lib/models/core/item.ts");\n/* harmony import */ var lodash_find__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! lodash/find */ "./node_modules/lodash/find.js");\n/* harmony import */ var lodash_find__WEBPACK_IMPORTED_MODULE_7___default = /*#__PURE__*/__webpack_require__.n(lodash_find__WEBPACK_IMPORTED_MODULE_7__);\n/* harmony import */ var lodash_uniq__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! lodash/uniq */ "./node_modules/lodash/uniq.js");\n/* harmony import */ var lodash_uniq__WEBPACK_IMPORTED_MODULE_8___default = /*#__PURE__*/__webpack_require__.n(lodash_uniq__WEBPACK_IMPORTED_MODULE_8__);\n/* harmony import */ var lodash_remove__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(/*! lodash/remove */ "./node_modules/lodash/remove.js");\n/* harmony import */ var lodash_remove__WEBPACK_IMPORTED_MODULE_9___default = /*#__PURE__*/__webpack_require__.n(lodash_remove__WEBPACK_IMPORTED_MODULE_9__);\n/* harmony import */ var _Lib_services_pure_service__WEBPACK_IMPORTED_MODULE_10__ = __webpack_require__(/*! @Lib/services/pure_service */ "./lib/services/pure_service.ts");\n/* harmony import */ var _Models_app_component__WEBPACK_IMPORTED_MODULE_11__ = __webpack_require__(/*! @Models/app/component */ "./lib/models/app/component.ts");\n/* harmony import */ var _Lib_uuid__WEBPACK_IMPORTED_MODULE_12__ = __webpack_require__(/*! @Lib/uuid */ "./lib/uuid.ts");\n/* harmony import */ var _Lib_utils__WEBPACK_IMPORTED_MODULE_13__ = __webpack_require__(/*! @Lib/utils */ "./lib/utils.ts");\n/* harmony import */ var _Lib_platforms__WEBPACK_IMPORTED_MODULE_14__ = __webpack_require__(/*! @Lib/platforms */ "./lib/platforms.ts");\n\n\nfunction _typeof(obj) { "@babel/helpers - typeof"; if (typeof Symbol === "function" && typeof Symbol.iterator === "symbol") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }; } return _typeof(obj); }\n\nfunction _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\n\nfunction asyncGeneratorStep(gen, resolve, reject, _next, _throw, key, arg) { try { var info = gen[key](arg); var value = info.value; } catch (error) { reject(error); return; } if (info.done) { resolve(value); } else { Promise.resolve(value).then(_next, _throw); } }\n\nfunction _asyncToGenerator(fn) { return function () { var self = this, args = arguments; return new Promise(function (resolve, reject) { var gen = fn.apply(self, args); function _next(value) { asyncGeneratorStep(gen, resolve, reject, _next, _throw, "next", value); } function _throw(err) { asyncGeneratorStep(gen, resolve, reject, _next, _throw, "throw", err); } _next(undefined); }); }; }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } }\n\nfunction _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); } }\n\nfunction _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; }\n\nfunction _possibleConstructorReturn(self, call) { if (call && (_typeof(call) === "object" || typeof call === "function")) { return call; } return _assertThisInitialized(self); }\n\nfunction _assertThisInitialized(self) { if (self === void 0) { throw new ReferenceError("this hasn\'t been initialised - super() hasn\'t been called"); } return self; }\n\nfunction _get(target, property, receiver) { if (typeof Reflect !== "undefined" && Reflect.get) { _get = Reflect.get; } else { _get = function _get(target, property, receiver) { var base = _superPropBase(target, property); if (!base) return; var desc = Object.getOwnPropertyDescriptor(base, property); if (desc.get) { return desc.get.call(receiver); } return desc.value; }; } return _get(target, property, receiver || target); }\n\nfunction _superPropBase(object, property) { while (!Object.prototype.hasOwnProperty.call(object, property)) { object = _getPrototypeOf(object); if (object === null) break; } return object; }\n\nfunction _getPrototypeOf(o) { _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function _getPrototypeOf(o) { return o.__proto__ || Object.getPrototypeOf(o); }; return _getPrototypeOf(o); }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== "function" && superClass !== null) { throw new TypeError("Super expression must either be null or a function"); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, writable: true, configurable: true } }); if (superClass) _setPrototypeOf(subClass, superClass); }\n\nfunction _setPrototypeOf(o, p) { _setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) { o.__proto__ = p; return o; }; return _setPrototypeOf(o, p); }\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\nvar DESKTOP_URL_PREFIX = \'sn://\';\nvar LOCAL_HOST = \'localhost\';\nvar CUSTOM_LOCAL_HOST = \'sn.local\';\nvar ANDROID_LOCAL_HOST = \'10.0.2.2\';\n/* This domain will be used to save context item client data */\n\nvar ComponentDataDomain = \'org.standardnotes.sn.components\';\n/**\n * Responsible for orchestrating component functionality, including editors, themes,\n * and other components. The component manager primarily deals with iframes, and orchestrates\n * sending and receiving messages to and from frames via the postMessage API.\n */\n\nvar SNComponentManager = /*#__PURE__*/function (_PureService) {\n _inherits(SNComponentManager, _PureService);\n\n function SNComponentManager(itemManager, syncService, alertService, environment, platform, timeout) {\n var _this;\n\n _classCallCheck(this, SNComponentManager);\n\n _this = _possibleConstructorReturn(this, _getPrototypeOf(SNComponentManager).call(this));\n _this.componentState = {};\n _this.streamObservers = [];\n _this.contextStreamObservers = [];\n _this.activeComponents = [];\n _this.permissionDialogs = [];\n _this.handlers = [];\n\n _this.detectFocusChange = function () {\n var activeComponents = _this.itemManager.findItems(_this.activeComponents);\n\n var _iteratorNormalCompletion = true;\n var _didIteratorError = false;\n var _iteratorError = undefined;\n\n try {\n var _loop = function _loop() {\n var component = _step.value;\n\n if (document.activeElement === _this.iframeForComponent(component.uuid)) {\n _this.timeout(function () {\n _this.focusChangedForComponent(component);\n });\n\n return "break";\n }\n };\n\n for (var _iterator = activeComponents[Symbol.iterator](), _step; !(_iteratorNormalCompletion = (_step = _iterator.next()).done); _iteratorNormalCompletion = true) {\n var _ret = _loop();\n\n if (_ret === "break") break;\n }\n } catch (err) {\n _didIteratorError = true;\n _iteratorError = err;\n } finally {\n try {\n if (!_iteratorNormalCompletion && _iterator.return != null) {\n _iterator.return();\n }\n } finally {\n if (_didIteratorError) {\n throw _iteratorError;\n }\n }\n }\n };\n\n _this.onWindowMessage = function (event) {\n /** Make sure this message is for us */\n if (event.data.sessionKey) {\n _this.log(\'Component manager received message\', event.data);\n\n _this.handleMessage(_this.componentForSessionKey(event.data.sessionKey), event.data);\n }\n };\n\n _this.timeout = timeout || setTimeout.bind(window);\n _this.itemManager = itemManager;\n _this.syncService = syncService;\n _this.alertService = alertService;\n _this.environment = environment;\n _this.platform = platform;\n\n _this.configureForGeneralUsage();\n\n if (environment !== _Lib_platforms__WEBPACK_IMPORTED_MODULE_14__["Environment"].Mobile) {\n _this.configureForNonMobileUsage();\n }\n\n return _this;\n }\n\n _createClass(SNComponentManager, [{\n key: "componentsForArea",\n value: function componentsForArea(area) {\n return this.components.filter(function (component) {\n return component.area === area;\n });\n }\n /** @override */\n\n }, {\n key: "deinit",\n value: function deinit() {\n _get(_getPrototypeOf(SNComponentManager.prototype), "deinit", this).call(this);\n\n this.streamObservers.length = 0;\n this.contextStreamObservers.length = 0;\n this.activeComponents.length = 0;\n this.permissionDialogs.length = 0;\n this.handlers.length = 0;\n this.itemManager = undefined;\n this.syncService = undefined;\n this.alertService = undefined;\n this.removeItemObserver();\n this.removeItemObserver = null;\n\n if (window) {\n window.removeEventListener(\'focus\', this.detectFocusChange, true);\n window.removeEventListener(\'blur\', this.detectFocusChange, true);\n window.removeEventListener(\'message\', this.onWindowMessage);\n }\n }\n }, {\n key: "setDesktopManager",\n value: function setDesktopManager(desktopManager) {\n this.desktopManager = desktopManager;\n this.configureForDesktop();\n }\n }, {\n key: "configureForGeneralUsage",\n value: function configureForGeneralUsage() {\n var _this2 = this;\n\n this.removeItemObserver = this.itemManager.addObserver(_models_content_types__WEBPACK_IMPORTED_MODULE_3__["ContentType"].Any, function (changed, inserted, discarded, source, sourceKey) {\n var items = Object(_Lib_utils__WEBPACK_IMPORTED_MODULE_13__["concatArrays"])(changed, inserted, discarded);\n var syncedComponents = items.filter(function (item) {\n return item.content_type === _models_content_types__WEBPACK_IMPORTED_MODULE_3__["ContentType"].Component || item.content_type === _models_content_types__WEBPACK_IMPORTED_MODULE_3__["ContentType"].Theme;\n });\n /**\n * We only want to sync if the item source is Retrieved, not RemoteSaved to avoid\n * recursion caused by the component being modified and saved after it is updated.\n */\n\n if (syncedComponents.length > 0 && source !== _protocol_payloads_sources__WEBPACK_IMPORTED_MODULE_4__["PayloadSource"].RemoteSaved) {\n /* Ensure any component in our data is installed by the system */\n if (_this2.isDesktop) {\n _this2.desktopManager.syncComponentsInstallation(syncedComponents);\n }\n }\n\n var _iteratorNormalCompletion2 = true;\n var _didIteratorError2 = false;\n var _iteratorError2 = undefined;\n\n try {\n for (var _iterator2 = syncedComponents[Symbol.iterator](), _step2; !(_iteratorNormalCompletion2 = (_step2 = _iterator2.next()).done); _iteratorNormalCompletion2 = true) {\n var component = _step2.value;\n\n var isInActive = _this2.activeComponents.includes(component.uuid);\n\n if (component.active && !component.deleted && !isInActive) {\n _this2.activateComponent(component.uuid);\n } else if (!component.active && isInActive) {\n _this2.deactivateComponent(component.uuid);\n }\n }\n /* LocalChanged is not interesting to send to observers. For local changes,\n we wait until the item is set to dirty before notifying observers, where the mapping\n source would be PayloadSource.LocalChanged */\n\n } catch (err) {\n _didIteratorError2 = true;\n _iteratorError2 = err;\n } finally {\n try {\n if (!_iteratorNormalCompletion2 && _iterator2.return != null) {\n _iterator2.return();\n }\n } finally {\n if (_didIteratorError2) {\n throw _iteratorError2;\n }\n }\n }\n\n if (source !== _protocol_payloads_sources__WEBPACK_IMPORTED_MODULE_4__["PayloadSource"].LocalChanged) {\n _this2.notifyStreamObservers(items, source, sourceKey);\n }\n });\n }\n }, {\n key: "notifyStreamObservers",\n value: function notifyStreamObservers(allItems, source, sourceKey) {\n var _this3 = this;\n\n var _iteratorNormalCompletion3 = true;\n var _didIteratorError3 = false;\n var _iteratorError3 = undefined;\n\n try {\n var _loop2 = function _loop2() {\n var observer = _step3.value;\n\n if (sourceKey && sourceKey === observer.componentUuid) {\n /* Don\'t notify source of change, as it is the originator, doesn\'t need duplicate event. */\n return "continue";\n }\n\n var relevantItems = allItems.filter(function (item) {\n return observer.contentTypes.indexOf(item.content_type) !== -1;\n });\n\n if (relevantItems.length === 0) {\n return "continue";\n }\n\n var requiredPermissions = [{\n name: _Models_app_component__WEBPACK_IMPORTED_MODULE_11__["ComponentAction"].StreamItems,\n content_types: observer.contentTypes.sort()\n }];\n\n _this3.runWithPermissions(observer.componentUuid, requiredPermissions, function () {\n _this3.sendItemsInReply(observer.componentUuid, relevantItems, observer.originalMessage);\n });\n };\n\n for (var _iterator3 = this.streamObservers[Symbol.iterator](), _step3; !(_iteratorNormalCompletion3 = (_step3 = _iterator3.next()).done); _iteratorNormalCompletion3 = true) {\n var _ret2 = _loop2();\n\n if (_ret2 === "continue") continue;\n }\n } catch (err) {\n _didIteratorError3 = true;\n _iteratorError3 = err;\n } finally {\n try {\n if (!_iteratorNormalCompletion3 && _iterator3.return != null) {\n _iterator3.return();\n }\n } finally {\n if (_didIteratorError3) {\n throw _iteratorError3;\n }\n }\n }\n\n var requiredContextPermissions = [{\n name: _Models_app_component__WEBPACK_IMPORTED_MODULE_11__["ComponentAction"].StreamContextItem\n }];\n var _iteratorNormalCompletion4 = true;\n var _didIteratorError4 = false;\n var _iteratorError4 = undefined;\n\n try {\n var _loop3 = function _loop3() {\n var observer = _step4.value;\n\n if (sourceKey && sourceKey === observer.componentUuid) {\n /* Don\'t notify source of change, as it is the originator, doesn\'t need duplicate event. */\n return "continue";\n }\n\n var _iteratorNormalCompletion5 = true;\n var _didIteratorError5 = false;\n var _iteratorError5 = undefined;\n\n try {\n for (var _iterator5 = _this3.handlers[Symbol.iterator](), _step5; !(_iteratorNormalCompletion5 = (_step5 = _iterator5.next()).done); _iteratorNormalCompletion5 = true) {\n var handler = _step5.value;\n\n if (!handler.areas.includes(observer.area) && !handler.areas.includes(_Models_app_component__WEBPACK_IMPORTED_MODULE_11__["ComponentArea"].Any)) {\n continue;\n }\n\n if (handler.contextRequestHandler) {\n var itemInContext = handler.contextRequestHandler(observer.componentUuid);\n\n if (itemInContext) {\n var _ret4 = function () {\n var matchingItem = lodash_find__WEBPACK_IMPORTED_MODULE_7___default()(allItems, {\n uuid: itemInContext.uuid\n });\n\n if (matchingItem) {\n if (matchingItem.deleted) {\n return "continue";\n }\n\n _this3.runWithPermissions(observer.componentUuid, requiredContextPermissions, function () {\n _this3.sendContextItemInReply(observer.componentUuid, matchingItem, observer.originalMessage, source);\n });\n }\n }();\n\n if (_ret4 === "continue") continue;\n }\n }\n }\n } catch (err) {\n _didIteratorError5 = true;\n _iteratorError5 = err;\n } finally {\n try {\n if (!_iteratorNormalCompletion5 && _iterator5.return != null) {\n _iterator5.return();\n }\n } finally {\n if (_didIteratorError5) {\n throw _iteratorError5;\n }\n }\n }\n };\n\n for (var _iterator4 = this.contextStreamObservers[Symbol.iterator](), _step4; !(_iteratorNormalCompletion4 = (_step4 = _iterator4.next()).done); _iteratorNormalCompletion4 = true) {\n var _ret3 = _loop3();\n\n if (_ret3 === "continue") continue;\n }\n } catch (err) {\n _didIteratorError4 = true;\n _iteratorError4 = err;\n } finally {\n try {\n if (!_iteratorNormalCompletion4 && _iterator4.return != null) {\n _iterator4.return();\n }\n } finally {\n if (_didIteratorError4) {\n throw _iteratorError4;\n }\n }\n }\n }\n }, {\n key: "isNativeExtension",\n value: function isNativeExtension(component) {\n var nativeUrls = [window._extensions_manager_location, window._batch_manager_location];\n var hostedUrl = component.hosted_url;\n var localUrl = component.local_url && component.local_url.replace(DESKTOP_URL_PREFIX, \'\');\n return nativeUrls.includes(hostedUrl) || nativeUrls.includes(localUrl);\n }\n }, {\n key: "configureForNonMobileUsage",\n value: function configureForNonMobileUsage() {\n window.addEventListener ? window.addEventListener(\'focus\', this.detectFocusChange, true) : window.attachEvent(\'onfocusout\', this.detectFocusChange);\n window.addEventListener ? window.addEventListener(\'blur\', this.detectFocusChange, true) : window.attachEvent(\'onblur\', this.detectFocusChange);\n /* On mobile, events listeners are handled by a respective component */\n\n window.addEventListener(\'message\', this.onWindowMessage);\n }\n }, {\n key: "configureForDesktop",\n value: function configureForDesktop() {\n var _this4 = this;\n\n this.desktopManager.registerUpdateObserver(function (component) {\n /* Reload theme if active */\n if (component.active && component.isTheme()) {\n _this4.postActiveThemesToAllComponents();\n }\n });\n }\n }, {\n key: "postActiveThemesToAllComponents",\n value: function postActiveThemesToAllComponents() {\n var _iteratorNormalCompletion6 = true;\n var _didIteratorError6 = false;\n var _iteratorError6 = undefined;\n\n try {\n for (var _iterator6 = this.components[Symbol.iterator](), _step6; !(_iteratorNormalCompletion6 = (_step6 = _iterator6.next()).done); _iteratorNormalCompletion6 = true) {\n var component = _step6.value;\n var componentState = this.findOrCreateDataForComponent(component);\n /* Skip over components that are themes themselves,\n or components that are not active, or components that don\'t have a window */\n\n if (component.isTheme() || !component.active || !componentState.window) {\n continue;\n }\n\n this.postActiveThemesToComponent(component);\n }\n } catch (err) {\n _didIteratorError6 = true;\n _iteratorError6 = err;\n } finally {\n try {\n if (!_iteratorNormalCompletion6 && _iterator6.return != null) {\n _iterator6.return();\n }\n } finally {\n if (_didIteratorError6) {\n throw _iteratorError6;\n }\n }\n }\n }\n }, {\n key: "getActiveThemes",\n value: function getActiveThemes() {\n return this.componentsForArea(_Models_app_component__WEBPACK_IMPORTED_MODULE_11__["ComponentArea"].Themes).filter(function (theme) {\n return theme.active;\n });\n }\n }, {\n key: "urlsForActiveThemes",\n value: function urlsForActiveThemes() {\n var themes = this.getActiveThemes();\n var urls = [];\n var _iteratorNormalCompletion7 = true;\n var _didIteratorError7 = false;\n var _iteratorError7 = undefined;\n\n try {\n for (var _iterator7 = themes[Symbol.iterator](), _step7; !(_iteratorNormalCompletion7 = (_step7 = _iterator7.next()).done); _iteratorNormalCompletion7 = true) {\n var theme = _step7.value;\n var url = this.urlForComponent(theme);\n\n if (url) {\n urls.push(url);\n }\n }\n } catch (err) {\n _didIteratorError7 = true;\n _iteratorError7 = err;\n } finally {\n try {\n if (!_iteratorNormalCompletion7 && _iterator7.return != null) {\n _iterator7.return();\n }\n } finally {\n if (_didIteratorError7) {\n throw _iteratorError7;\n }\n }\n }\n\n return urls;\n }\n }, {\n key: "postActiveThemesToComponent",\n value: function postActiveThemesToComponent(component) {\n var urls = this.urlsForActiveThemes();\n var data = {\n themes: urls\n };\n var message = {\n action: _Models_app_component__WEBPACK_IMPORTED_MODULE_11__["ComponentAction"].ActivateThemes,\n data: data\n };\n this.sendMessageToComponent(component, message);\n }\n }, {\n key: "contextItemDidChangeInArea",\n value: function contextItemDidChangeInArea(area) {\n var _iteratorNormalCompletion8 = true;\n var _didIteratorError8 = false;\n var _iteratorError8 = undefined;\n\n try {\n for (var _iterator8 = this.handlers[Symbol.iterator](), _step8; !(_iteratorNormalCompletion8 = (_step8 = _iterator8.next()).done); _iteratorNormalCompletion8 = true) {\n var handler = _step8.value;\n\n if (!handler.areas.includes(area) && !handler.areas.includes(_Models_app_component__WEBPACK_IMPORTED_MODULE_11__["ComponentArea"].Any)) {\n continue;\n }\n\n var observers = this.contextStreamObservers.filter(function (observer) {\n return observer.area === area;\n });\n var _iteratorNormalCompletion9 = true;\n var _didIteratorError9 = false;\n var _iteratorError9 = undefined;\n\n try {\n for (var _iterator9 = observers[Symbol.iterator](), _step9; !(_iteratorNormalCompletion9 = (_step9 = _iterator9.next()).done); _iteratorNormalCompletion9 = true) {\n var observer = _step9.value;\n\n if (handler.contextRequestHandler) {\n var itemInContext = handler.contextRequestHandler(observer.componentUuid);\n\n if (itemInContext) {\n this.sendContextItemInReply(observer.componentUuid, itemInContext, observer.originalMessage);\n }\n }\n }\n } catch (err) {\n _didIteratorError9 = true;\n _iteratorError9 = err;\n } finally {\n try {\n if (!_iteratorNormalCompletion9 && _iterator9.return != null) {\n _iterator9.return();\n }\n } finally {\n if (_didIteratorError9) {\n throw _iteratorError9;\n }\n }\n }\n }\n } catch (err) {\n _didIteratorError8 = true;\n _iteratorError8 = err;\n } finally {\n try {\n if (!_iteratorNormalCompletion8 && _iterator8.return != null) {\n _iterator8.return();\n }\n } finally {\n if (_didIteratorError8) {\n throw _iteratorError8;\n }\n }\n }\n }\n }, {\n key: "isComponentHidden",\n value: function isComponentHidden(component) {\n var componentState = this.findOrCreateDataForComponent(component);\n return componentState.hidden;\n }\n }, {\n key: "setComponentHidden",\n value: function setComponentHidden(component, hidden) {\n /* A hidden component will not receive messages. However, when a component is unhidden,\n * we need to send it any items it may have registered streaming for. */\n var componentState = this.findOrCreateDataForComponent(component);\n\n if (hidden) {\n componentState.hidden = true;\n } else if (componentState.hidden) {\n componentState.hidden = false;\n var contextObserver = lodash_find__WEBPACK_IMPORTED_MODULE_7___default()(this.contextStreamObservers, {\n identifier: component.uuid\n });\n\n if (contextObserver) {\n this.handleStreamContextItemMessage(component, contextObserver.originalMessage);\n }\n\n var streamObserver = lodash_find__WEBPACK_IMPORTED_MODULE_7___default()(this.streamObservers, {\n identifier: component.uuid\n });\n\n if (streamObserver) {\n this.handleStreamItemsMessage(component, streamObserver.originalMessage);\n }\n }\n }\n }, {\n key: "jsonForItem",\n value: function jsonForItem(item, component, source) {\n var isMetadatUpdate = source === _protocol_payloads_sources__WEBPACK_IMPORTED_MODULE_4__["PayloadSource"].RemoteSaved || source === _protocol_payloads_sources__WEBPACK_IMPORTED_MODULE_4__["PayloadSource"].LocalSaved;\n /** The data all components store into */\n\n var componentData = item.getDomainData(ComponentDataDomain) || {};\n /** The data for this particular component */\n\n var clientData = componentData[component.getClientDataKey()] || {};\n var params = {\n uuid: item.uuid,\n content_type: item.content_type,\n created_at: item.created_at,\n updated_at: item.updated_at,\n deleted: item.deleted,\n isMetadataUpdate: isMetadatUpdate,\n content: item.content,\n clientData: clientData\n };\n this.removePrivatePropertiesFromResponseItems([params], component);\n return params;\n }\n }, {\n key: "sendItemsInReply",\n value: function sendItemsInReply(componentUuid, items, message, source) {\n var _this5 = this;\n\n var component = this.itemManager.findItem(componentUuid);\n this.log(\'Component manager send items in reply\', component, items, message);\n var responseData = {};\n var mapped = items.map(function (item) {\n return _this5.jsonForItem(item, component, source);\n });\n responseData.items = mapped;\n this.replyToMessage(component, message, responseData);\n }\n }, {\n key: "sendContextItemInReply",\n value: function sendContextItemInReply(componentUuid, item, originalMessage, source) {\n var component = this.itemManager.findItem(componentUuid);\n this.log(\'Component manager send context item in reply\', component, item, originalMessage);\n var response = {\n item: this.jsonForItem(item, component, source)\n };\n this.replyToMessage(component, originalMessage, response);\n }\n }, {\n key: "replyToMessage",\n value: function replyToMessage(component, originalMessage, replyData) {\n var reply = {\n action: _Models_app_component__WEBPACK_IMPORTED_MODULE_11__["ComponentAction"].Reply,\n original: originalMessage,\n data: replyData\n };\n this.sendMessageToComponent(component, reply);\n }\n }, {\n key: "sendMessageToComponent",\n value: function sendMessageToComponent(component, message) {\n var permissibleActionsWhileHidden = [_Models_app_component__WEBPACK_IMPORTED_MODULE_11__["ComponentAction"].ComponentRegistered, _Models_app_component__WEBPACK_IMPORTED_MODULE_11__["ComponentAction"].ActivateThemes];\n var componentState = this.findOrCreateDataForComponent(component);\n\n if (componentState.hidden && !permissibleActionsWhileHidden.includes(message.action)) {\n this.log(\'Component disabled for current item, ignoring messages.\', component.name);\n return;\n }\n\n this.log(\'Component manager send message to component\', component, message);\n var origin = this.urlForComponent(component);\n\n if (!origin || !componentState.window) {\n this.alertService.alert("Standard Notes is trying to communicate with ".concat(component.name, ", \\n but an error is occurring. Please restart this extension and try again."));\n }\n\n if (!origin.startsWith(\'http\') && !origin.startsWith(\'file\')) {\n /* Native extension running in web, prefix current host */\n origin = window.location.href + origin;\n }\n /* Mobile messaging requires json */\n\n\n componentState.window.postMessage(this.isMobile ? JSON.stringify(message) : message, origin);\n }\n }, {\n key: "urlForComponent",\n value: function urlForComponent(component) {\n /* offlineOnly is available only on desktop, and not on web or mobile. */\n if (component.offlineOnly && !this.isDesktop) {\n return null;\n }\n\n if (component.offlineOnly || this.isDesktop && component.local_url) {\n return component.local_url && component.local_url.replace(DESKTOP_URL_PREFIX, this.desktopManager.getExtServerHost());\n } else {\n var url = component.hosted_url || component.legacy_url;\n\n if (this.isMobile) {\n var localReplacement = this.platform === _Lib_platforms__WEBPACK_IMPORTED_MODULE_14__["Platform"].Ios ? LOCAL_HOST : ANDROID_LOCAL_HOST;\n url = url.replace(LOCAL_HOST, localReplacement).replace(CUSTOM_LOCAL_HOST, localReplacement);\n }\n\n return url;\n }\n }\n }, {\n key: "componentForUrl",\n value: function componentForUrl(url) {\n return this.components.filter(function (component) {\n return component.hosted_url === url || component.legacy_url === url;\n })[0];\n }\n }, {\n key: "sessionKeyForComponent",\n value: function sessionKeyForComponent(component) {\n var componentState = this.findOrCreateDataForComponent(component);\n return componentState.sessionKey;\n }\n }, {\n key: "componentForSessionKey",\n value: function componentForSessionKey(key) {\n var _this6 = this;\n\n var component;\n\n var _loop4 = function _loop4() {\n var uuid = _Object$keys[_i];\n var data = _this6.componentState[uuid];\n\n if ((data === null || data === void 0 ? void 0 : data.sessionKey) === key) {\n component = _this6.components.find(function (c) {\n return c.uuid === uuid;\n });\n return "break";\n }\n };\n\n for (var _i = 0, _Object$keys = Object.keys(this.componentState); _i < _Object$keys.length; _i++) {\n var _ret5 = _loop4();\n\n if (_ret5 === "break") break;\n }\n\n if (!component) {\n var _iteratorNormalCompletion10 = true;\n var _didIteratorError10 = false;\n var _iteratorError10 = undefined;\n\n try {\n for (var _iterator10 = this.handlers[Symbol.iterator](), _step10; !(_iteratorNormalCompletion10 = (_step10 = _iterator10.next()).done); _iteratorNormalCompletion10 = true) {\n var handler = _step10.value;\n\n if (handler.componentForSessionKeyHandler) {\n component = handler.componentForSessionKeyHandler(key);\n\n if (component) {\n break;\n }\n }\n }\n } catch (err) {\n _didIteratorError10 = true;\n _iteratorError10 = err;\n } finally {\n try {\n if (!_iteratorNormalCompletion10 && _iterator10.return != null) {\n _iterator10.return();\n }\n } finally {\n if (_didIteratorError10) {\n throw _iteratorError10;\n }\n }\n }\n }\n\n return component;\n }\n }, {\n key: "handleMessage",\n value: function handleMessage(component, message) {\n var _this7 = this;\n\n if (!component) {\n this.log(\'Component not defined for message, returning\', message);\n this.alertService.alert(\'An extension is trying to communicate with Standard Notes,\' + \'but there is an error establishing a bridge. Please restart the app and try again.\');\n return;\n }\n\n var readwriteActions = [_Models_app_component__WEBPACK_IMPORTED_MODULE_11__["ComponentAction"].SaveItems, _Models_app_component__WEBPACK_IMPORTED_MODULE_11__["ComponentAction"].AssociateItem, _Models_app_component__WEBPACK_IMPORTED_MODULE_11__["ComponentAction"].DeassociateItem, _Models_app_component__WEBPACK_IMPORTED_MODULE_11__["ComponentAction"].CreateItem, _Models_app_component__WEBPACK_IMPORTED_MODULE_11__["ComponentAction"].CreateItems, _Models_app_component__WEBPACK_IMPORTED_MODULE_11__["ComponentAction"].DeleteItems, _Models_app_component__WEBPACK_IMPORTED_MODULE_11__["ComponentAction"].SetComponentData];\n var readonlyState = this.getReadonlyStateForComponent(component);\n\n if (readonlyState.readonly && readwriteActions.includes(message.action)) {\n this.alertService.alert("The extension ".concat(component.name, " is trying to save, but it is in a locked state and cannot accept changes."));\n return;\n }\n\n if (message.action === _Models_app_component__WEBPACK_IMPORTED_MODULE_11__["ComponentAction"].StreamItems) {\n this.handleStreamItemsMessage(component, message);\n } else if (message.action === _Models_app_component__WEBPACK_IMPORTED_MODULE_11__["ComponentAction"].StreamContextItem) {\n this.handleStreamContextItemMessage(component, message);\n } else if (message.action === _Models_app_component__WEBPACK_IMPORTED_MODULE_11__["ComponentAction"].SetComponentData) {\n this.handleSetComponentDataMessage(component, message);\n } else if (message.action === _Models_app_component__WEBPACK_IMPORTED_MODULE_11__["ComponentAction"].DeleteItems) {\n this.handleDeleteItemsMessage(component, message);\n } else if (message.action === _Models_app_component__WEBPACK_IMPORTED_MODULE_11__["ComponentAction"].CreateItems || message.action === _Models_app_component__WEBPACK_IMPORTED_MODULE_11__["ComponentAction"].CreateItem) {\n this.handleCreateItemsMessage(component, message);\n } else if (message.action === _Models_app_component__WEBPACK_IMPORTED_MODULE_11__["ComponentAction"].SaveItems) {\n this.handleSaveItemsMessage(component, message);\n } else if (message.action === _Models_app_component__WEBPACK_IMPORTED_MODULE_11__["ComponentAction"].ToggleActivateComponent) {\n var componentToToggle = this.itemManager.findItem(message.data.uuid);\n this.handleToggleComponentMessage(componentToToggle, message);\n } else if (message.action === _Models_app_component__WEBPACK_IMPORTED_MODULE_11__["ComponentAction"].RequestPermissions) {\n this.handleRequestPermissionsMessage(component, message);\n } else if (message.action === _Models_app_component__WEBPACK_IMPORTED_MODULE_11__["ComponentAction"].InstallLocalComponent) {\n this.handleInstallLocalComponentMessage(component, message);\n } else if (message.action === _Models_app_component__WEBPACK_IMPORTED_MODULE_11__["ComponentAction"].DuplicateItem) {\n this.handleDuplicateItemMessage(component, message);\n }\n\n var _iteratorNormalCompletion11 = true;\n var _didIteratorError11 = false;\n var _iteratorError11 = undefined;\n\n try {\n var _loop5 = function _loop5() {\n var handler = _step11.value;\n\n if (handler.actionHandler && (handler.areas.includes(component.area) || handler.areas.includes(_Models_app_component__WEBPACK_IMPORTED_MODULE_11__["ComponentArea"].Any))) {\n _this7.timeout(function () {\n handler.actionHandler(component, message.action, message.data);\n });\n }\n };\n\n for (var _iterator11 = this.handlers[Symbol.iterator](), _step11; !(_iteratorNormalCompletion11 = (_step11 = _iterator11.next()).done); _iteratorNormalCompletion11 = true) {\n _loop5();\n }\n } catch (err) {\n _didIteratorError11 = true;\n _iteratorError11 = err;\n } finally {\n try {\n if (!_iteratorNormalCompletion11 && _iterator11.return != null) {\n _iterator11.return();\n }\n } finally {\n if (_didIteratorError11) {\n throw _iteratorError11;\n }\n }\n }\n }\n }, {\n key: "removePrivatePropertiesFromResponseItems",\n value: function removePrivatePropertiesFromResponseItems(responseItems, component) {\n var includeUrls = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : false;\n\n if (component) {\n /* System extensions can bypass this step */\n if (this.isNativeExtension(component)) {\n return;\n }\n }\n /* Don\'t allow component to overwrite these properties. */\n\n\n var privateContentProperties = [\'autoupdateDisabled\', \'permissions\', \'active\'];\n\n if (includeUrls) {\n privateContentProperties = privateContentProperties.concat([\'url\', \'hosted_url\', \'local_url\']);\n }\n\n var _iteratorNormalCompletion12 = true;\n var _didIteratorError12 = false;\n var _iteratorError12 = undefined;\n\n try {\n for (var _iterator12 = responseItems[Symbol.iterator](), _step12; !(_iteratorNormalCompletion12 = (_step12 = _iterator12.next()).done); _iteratorNormalCompletion12 = true) {\n var responseItem = _step12.value;\n var _iteratorNormalCompletion13 = true;\n var _didIteratorError13 = false;\n var _iteratorError13 = undefined;\n\n try {\n for (var _iterator13 = privateContentProperties[Symbol.iterator](), _step13; !(_iteratorNormalCompletion13 = (_step13 = _iterator13.next()).done); _iteratorNormalCompletion13 = true) {\n var prop = _step13.value;\n delete responseItem.content[prop];\n }\n } catch (err) {\n _didIteratorError13 = true;\n _iteratorError13 = err;\n } finally {\n try {\n if (!_iteratorNormalCompletion13 && _iterator13.return != null) {\n _iterator13.return();\n }\n } finally {\n if (_didIteratorError13) {\n throw _iteratorError13;\n }\n }\n }\n }\n } catch (err) {\n _didIteratorError12 = true;\n _iteratorError12 = err;\n } finally {\n try {\n if (!_iteratorNormalCompletion12 && _iterator12.return != null) {\n _iterator12.return();\n }\n } finally {\n if (_didIteratorError12) {\n throw _iteratorError12;\n }\n }\n }\n }\n }, {\n key: "handleStreamItemsMessage",\n value: function handleStreamItemsMessage(component, message) {\n var _this8 = this;\n\n var requiredPermissions = [{\n name: _Models_app_component__WEBPACK_IMPORTED_MODULE_11__["ComponentAction"].StreamItems,\n content_types: message.data.content_types.sort()\n }];\n this.runWithPermissions(component.uuid, requiredPermissions, function () {\n if (!lodash_find__WEBPACK_IMPORTED_MODULE_7___default()(_this8.streamObservers, {\n identifier: component.uuid\n })) {\n /* For pushing laster as changes come in */\n _this8.streamObservers.push({\n identifier: component.uuid,\n componentUuid: component.uuid,\n area: component.area,\n originalMessage: message,\n contentTypes: message.data.content_types\n });\n }\n /* Push immediately now */\n\n\n var items = [];\n var _iteratorNormalCompletion14 = true;\n var _didIteratorError14 = false;\n var _iteratorError14 = undefined;\n\n try {\n for (var _iterator14 = message.data.content_types[Symbol.iterator](), _step14; !(_iteratorNormalCompletion14 = (_step14 = _iterator14.next()).done); _iteratorNormalCompletion14 = true) {\n var contentType = _step14.value;\n Object(_Lib_utils__WEBPACK_IMPORTED_MODULE_13__["extendArray"])(items, _this8.itemManager.nonErroredItemsForContentType(contentType));\n }\n } catch (err) {\n _didIteratorError14 = true;\n _iteratorError14 = err;\n } finally {\n try {\n if (!_iteratorNormalCompletion14 && _iterator14.return != null) {\n _iterator14.return();\n }\n } finally {\n if (_didIteratorError14) {\n throw _iteratorError14;\n }\n }\n }\n\n _this8.sendItemsInReply(component.uuid, items, message);\n });\n }\n }, {\n key: "handleStreamContextItemMessage",\n value: function handleStreamContextItemMessage(component, message) {\n var _this9 = this;\n\n var requiredPermissions = [{\n name: _Models_app_component__WEBPACK_IMPORTED_MODULE_11__["ComponentAction"].StreamContextItem\n }];\n this.runWithPermissions(component.uuid, requiredPermissions, function () {\n if (!lodash_find__WEBPACK_IMPORTED_MODULE_7___default()(_this9.contextStreamObservers, {\n identifier: component.uuid\n })) {\n _this9.contextStreamObservers.push({\n identifier: component.uuid,\n componentUuid: component.uuid,\n area: component.area,\n originalMessage: message\n });\n }\n\n var _iteratorNormalCompletion15 = true;\n var _didIteratorError15 = false;\n var _iteratorError15 = undefined;\n\n try {\n for (var _iterator15 = _this9.handlersForArea(component.area)[Symbol.iterator](), _step15; !(_iteratorNormalCompletion15 = (_step15 = _iterator15.next()).done); _iteratorNormalCompletion15 = true) {\n var handler = _step15.value;\n\n if (handler.contextRequestHandler) {\n var itemInContext = handler.contextRequestHandler(component.uuid);\n\n if (itemInContext) {\n _this9.sendContextItemInReply(component.uuid, itemInContext, message);\n }\n }\n }\n } catch (err) {\n _didIteratorError15 = true;\n _iteratorError15 = err;\n } finally {\n try {\n if (!_iteratorNormalCompletion15 && _iterator15.return != null) {\n _iterator15.return();\n }\n } finally {\n if (_didIteratorError15) {\n throw _iteratorError15;\n }\n }\n }\n });\n }\n }, {\n key: "isItemIdWithinComponentContextJurisdiction",\n value: function isItemIdWithinComponentContextJurisdiction(uuid, component) {\n var itemIdsInJurisdiction = this.itemIdsInContextJurisdictionForComponent(component);\n return itemIdsInJurisdiction.includes(uuid);\n }\n /* Returns items that given component has context permissions for */\n\n }, {\n key: "itemIdsInContextJurisdictionForComponent",\n value: function itemIdsInContextJurisdictionForComponent(component) {\n var itemIds = [];\n var _iteratorNormalCompletion16 = true;\n var _didIteratorError16 = false;\n var _iteratorError16 = undefined;\n\n try {\n for (var _iterator16 = this.handlersForArea(component.area)[Symbol.iterator](), _step16; !(_iteratorNormalCompletion16 = (_step16 = _iterator16.next()).done); _iteratorNormalCompletion16 = true) {\n var handler = _step16.value;\n\n if (handler.contextRequestHandler) {\n var itemInContext = handler.contextRequestHandler(component.uuid);\n\n if (itemInContext) {\n itemIds.push(itemInContext.uuid);\n }\n }\n }\n } catch (err) {\n _didIteratorError16 = true;\n _iteratorError16 = err;\n } finally {\n try {\n if (!_iteratorNormalCompletion16 && _iterator16.return != null) {\n _iterator16.return();\n }\n } finally {\n if (_didIteratorError16) {\n throw _iteratorError16;\n }\n }\n }\n\n return itemIds;\n }\n }, {\n key: "handlersForArea",\n value: function handlersForArea(area) {\n return this.handlers.filter(function (candidate) {\n return candidate.areas.includes(area);\n });\n }\n }, {\n key: "handleSaveItemsMessage",\n value: function () {\n var _handleSaveItemsMessage = _asyncToGenerator( /*#__PURE__*/_babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0___default.a.mark(function _callee2(component, message) {\n var _this10 = this;\n\n var responsePayloads, requiredPermissions, itemIdsInContextJurisdiction, pendingResponseItems, _iteratorNormalCompletion17, _didIteratorError17, _iteratorError17, _iterator17, _step17, responseItem, requiredContentTypes;\n\n return _babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0___default.a.wrap(function _callee2$(_context2) {\n while (1) {\n switch (_context2.prev = _context2.next) {\n case 0:\n responsePayloads = message.data.items;\n requiredPermissions = [];\n itemIdsInContextJurisdiction = this.itemIdsInContextJurisdictionForComponent(component);\n /* Pending as in needed to be accounted for in permissions. */\n\n pendingResponseItems = responsePayloads.slice();\n _iteratorNormalCompletion17 = true;\n _didIteratorError17 = false;\n _iteratorError17 = undefined;\n _context2.prev = 7;\n _iterator17 = responsePayloads.slice()[Symbol.iterator]();\n\n case 9:\n if (_iteratorNormalCompletion17 = (_step17 = _iterator17.next()).done) {\n _context2.next = 18;\n break;\n }\n\n responseItem = _step17.value;\n\n if (!itemIdsInContextJurisdiction.includes(responseItem.uuid)) {\n _context2.next = 15;\n break;\n }\n\n requiredPermissions.push({\n name: _Models_app_component__WEBPACK_IMPORTED_MODULE_11__["ComponentAction"].StreamContextItem\n });\n Object(_Lib_utils__WEBPACK_IMPORTED_MODULE_13__["removeFromArray"])(pendingResponseItems, responseItem);\n /* We break because there can only be one context item */\n\n return _context2.abrupt("break", 18);\n\n case 15:\n _iteratorNormalCompletion17 = true;\n _context2.next = 9;\n break;\n\n case 18:\n _context2.next = 24;\n break;\n\n case 20:\n _context2.prev = 20;\n _context2.t0 = _context2["catch"](7);\n _didIteratorError17 = true;\n _iteratorError17 = _context2.t0;\n\n case 24:\n _context2.prev = 24;\n _context2.prev = 25;\n\n if (!_iteratorNormalCompletion17 && _iterator17.return != null) {\n _iterator17.return();\n }\n\n case 27:\n _context2.prev = 27;\n\n if (!_didIteratorError17) {\n _context2.next = 30;\n break;\n }\n\n throw _iteratorError17;\n\n case 30:\n return _context2.finish(27);\n\n case 31:\n return _context2.finish(24);\n\n case 32:\n /* Check to see if additional privileges are required */\n if (pendingResponseItems.length > 0) {\n requiredContentTypes = lodash_uniq__WEBPACK_IMPORTED_MODULE_8___default()(pendingResponseItems.map(function (item) {\n return item.content_type;\n })).sort();\n requiredPermissions.push({\n name: _Models_app_component__WEBPACK_IMPORTED_MODULE_11__["ComponentAction"].StreamItems,\n content_types: requiredContentTypes\n });\n }\n\n this.runWithPermissions(component.uuid, requiredPermissions, /*#__PURE__*/_asyncToGenerator( /*#__PURE__*/_babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0___default.a.mark(function _callee() {\n var uuids, items, lockedCount, itemNoun, auxVerb, payloads;\n return _babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0___default.a.wrap(function _callee$(_context) {\n while (1) {\n switch (_context.prev = _context.next) {\n case 0:\n _this10.removePrivatePropertiesFromResponseItems(responsePayloads, component, true);\n /* Filter locked items */\n\n\n uuids = Object(_Models_functions__WEBPACK_IMPORTED_MODULE_1__["Uuids"])(responsePayloads);\n items = _this10.itemManager.findItems(uuids, true);\n lockedCount = 0;\n items.forEach(function (item, index) {\n if (!item) {\n var responseItem = responsePayloads[index]; // An item this extension is trying to save was possibly removed locally, notify user\n\n _this10.alertService.alert("The extension ".concat(component.name, " is trying to save an item with type ") + "".concat(responseItem.content_type, ", but that item does not exist .") + "Please restart this extension and try again.");\n\n return;\n }\n\n if (item.locked) {\n lodash_remove__WEBPACK_IMPORTED_MODULE_9___default()(responsePayloads, {\n uuid: item.uuid\n });\n lockedCount++;\n }\n });\n\n if (!(lockedCount > 0)) {\n _context.next = 10;\n break;\n }\n\n itemNoun = lockedCount === 1 ? \'item\' : \'items\';\n auxVerb = lockedCount === 1 ? \'is\' : \'are\';\n\n _this10.alertService.alert("".concat(lockedCount, " ").concat(itemNoun, " you are attempting to save ").concat(auxVerb, " locked and cannot be edited."), \'Items Locked\');\n\n return _context.abrupt("return");\n\n case 10:\n payloads = responsePayloads.map(function (responseItem) {\n return Object(_Payloads_generator__WEBPACK_IMPORTED_MODULE_5__["CreateSourcedPayloadFromObject"])(responseItem, _protocol_payloads_sources__WEBPACK_IMPORTED_MODULE_4__["PayloadSource"].ComponentRetrieved);\n });\n _context.next = 13;\n return _this10.itemManager.changeItems(uuids, function (mutator) {\n var payload = Object(_Lib_utils__WEBPACK_IMPORTED_MODULE_13__["searchArray"])(payloads, {\n uuid: mutator.getUuid()\n });\n mutator.mergePayload(payload);\n var responseItem = Object(_Lib_utils__WEBPACK_IMPORTED_MODULE_13__["searchArray"])(responsePayloads, {\n uuid: mutator.getUuid()\n });\n\n if (responseItem.clientData) {\n var allComponentData = Object(_Lib_utils__WEBPACK_IMPORTED_MODULE_13__["Copy"])(mutator.getItem().getDomainData(ComponentDataDomain) || {});\n allComponentData[component.getClientDataKey()] = responseItem.clientData;\n mutator.setDomainData(allComponentData, ComponentDataDomain);\n }\n }, _Models_core_item__WEBPACK_IMPORTED_MODULE_6__["MutationType"].UserInteraction, _protocol_payloads_sources__WEBPACK_IMPORTED_MODULE_4__["PayloadSource"].ComponentRetrieved, component.uuid);\n\n case 13:\n _this10.syncService.sync().then(function () {\n /* Allow handlers to be notified when a save begins and ends, to update the UI */\n var saveMessage = Object.assign({}, message);\n saveMessage.action = _Models_app_component__WEBPACK_IMPORTED_MODULE_11__["ComponentAction"].SaveSuccess;\n\n _this10.replyToMessage(component, message, {});\n\n _this10.handleMessage(component, saveMessage);\n }).catch(function () {\n var saveMessage = Object.assign({}, message);\n saveMessage.action = _Models_app_component__WEBPACK_IMPORTED_MODULE_11__["ComponentAction"].SaveError;\n\n _this10.replyToMessage(component, message, {\n error: _Models_app_component__WEBPACK_IMPORTED_MODULE_11__["ComponentAction"].SaveError\n });\n\n _this10.handleMessage(component, saveMessage);\n });\n\n case 14:\n case "end":\n return _context.stop();\n }\n }\n }, _callee);\n })));\n\n case 34:\n case "end":\n return _context2.stop();\n }\n }\n }, _callee2, this, [[7, 20, 24, 32], [25,, 27, 31]]);\n }));\n\n function handleSaveItemsMessage(_x, _x2) {\n return _handleSaveItemsMessage.apply(this, arguments);\n }\n\n return handleSaveItemsMessage;\n }()\n }, {\n key: "handleDuplicateItemMessage",\n value: function handleDuplicateItemMessage(component, message) {\n var _this11 = this;\n\n var itemParams = message.data.item;\n var item = this.itemManager.findItem(itemParams.uuid);\n var requiredPermissions = [{\n name: _Models_app_component__WEBPACK_IMPORTED_MODULE_11__["ComponentAction"].StreamItems,\n content_types: [item.content_type]\n }];\n this.runWithPermissions(component.uuid, requiredPermissions, /*#__PURE__*/_asyncToGenerator( /*#__PURE__*/_babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0___default.a.mark(function _callee3() {\n var duplicate;\n return _babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0___default.a.wrap(function _callee3$(_context3) {\n while (1) {\n switch (_context3.prev = _context3.next) {\n case 0:\n _context3.next = 2;\n return _this11.itemManager.duplicateItem(item.uuid);\n\n case 2:\n duplicate = _context3.sent;\n\n _this11.syncService.sync();\n\n _this11.replyToMessage(component, message, {\n item: _this11.jsonForItem(duplicate, component)\n });\n\n case 5:\n case "end":\n return _context3.stop();\n }\n }\n }, _callee3);\n })));\n }\n }, {\n key: "handleCreateItemsMessage",\n value: function handleCreateItemsMessage(component, message) {\n var _this12 = this;\n\n var responseItems = message.data.item ? [message.data.item] : message.data.items;\n var uniqueContentTypes = lodash_uniq__WEBPACK_IMPORTED_MODULE_8___default()(responseItems.map(function (item) {\n return item.content_type;\n }));\n var requiredPermissions = [{\n name: _Models_app_component__WEBPACK_IMPORTED_MODULE_11__["ComponentAction"].StreamItems,\n content_types: uniqueContentTypes\n }];\n this.runWithPermissions(component.uuid, requiredPermissions, /*#__PURE__*/_asyncToGenerator( /*#__PURE__*/_babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0___default.a.mark(function _callee4() {\n var processedItems, _iteratorNormalCompletion18, _didIteratorError18, _iteratorError18, _loop6, _iterator18, _step18, reply;\n\n return _babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0___default.a.wrap(function _callee4$(_context5) {\n while (1) {\n switch (_context5.prev = _context5.next) {\n case 0:\n _this12.removePrivatePropertiesFromResponseItems(responseItems, component);\n\n processedItems = [];\n _iteratorNormalCompletion18 = true;\n _didIteratorError18 = false;\n _iteratorError18 = undefined;\n _context5.prev = 5;\n _loop6 = /*#__PURE__*/_babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0___default.a.mark(function _loop6() {\n var responseItem, payload, template, item;\n return _babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0___default.a.wrap(function _loop6$(_context4) {\n while (1) {\n switch (_context4.prev = _context4.next) {\n case 0:\n responseItem = _step18.value;\n\n if (responseItem.uuid) {\n _context4.next = 5;\n break;\n }\n\n _context4.next = 4;\n return _Lib_uuid__WEBPACK_IMPORTED_MODULE_12__["Uuid"].GenerateUuid();\n\n case 4:\n responseItem.uuid = _context4.sent;\n\n case 5:\n payload = Object(_Payloads_generator__WEBPACK_IMPORTED_MODULE_5__["CreateSourcedPayloadFromObject"])(responseItem, _protocol_payloads_sources__WEBPACK_IMPORTED_MODULE_4__["PayloadSource"].ComponentCreated);\n template = Object(_Models_generator__WEBPACK_IMPORTED_MODULE_2__["CreateItemFromPayload"])(payload);\n _context4.next = 9;\n return _this12.itemManager.insertItem(template);\n\n case 9:\n item = _context4.sent;\n _context4.next = 12;\n return _this12.itemManager.changeItem(item.uuid, function (mutator) {\n if (responseItem.clientData) {\n var allComponentData = Object(_Lib_utils__WEBPACK_IMPORTED_MODULE_13__["Copy"])(item.getDomainData(ComponentDataDomain) || {});\n allComponentData[component.getClientDataKey()] = responseItem.clientData;\n mutator.setDomainData(allComponentData, ComponentDataDomain);\n }\n }, _Models_core_item__WEBPACK_IMPORTED_MODULE_6__["MutationType"].UserInteraction, _protocol_payloads_sources__WEBPACK_IMPORTED_MODULE_4__["PayloadSource"].ComponentCreated, component.uuid);\n\n case 12:\n processedItems.push(item);\n\n case 13:\n case "end":\n return _context4.stop();\n }\n }\n }, _loop6);\n });\n _iterator18 = responseItems[Symbol.iterator]();\n\n case 8:\n if (_iteratorNormalCompletion18 = (_step18 = _iterator18.next()).done) {\n _context5.next = 13;\n break;\n }\n\n return _context5.delegateYield(_loop6(), "t0", 10);\n\n case 10:\n _iteratorNormalCompletion18 = true;\n _context5.next = 8;\n break;\n\n case 13:\n _context5.next = 19;\n break;\n\n case 15:\n _context5.prev = 15;\n _context5.t1 = _context5["catch"](5);\n _didIteratorError18 = true;\n _iteratorError18 = _context5.t1;\n\n case 19:\n _context5.prev = 19;\n _context5.prev = 20;\n\n if (!_iteratorNormalCompletion18 && _iterator18.return != null) {\n _iterator18.return();\n }\n\n case 22:\n _context5.prev = 22;\n\n if (!_didIteratorError18) {\n _context5.next = 25;\n break;\n }\n\n throw _iteratorError18;\n\n case 25:\n return _context5.finish(22);\n\n case 26:\n return _context5.finish(19);\n\n case 27:\n _this12.syncService.sync();\n\n reply = message.action === _Models_app_component__WEBPACK_IMPORTED_MODULE_11__["ComponentAction"].CreateItem ? {\n item: _this12.jsonForItem(processedItems[0], component)\n } : {\n items: processedItems.map(function (item) {\n return _this12.jsonForItem(item, component);\n })\n };\n\n _this12.replyToMessage(component, message, reply);\n\n case 30:\n case "end":\n return _context5.stop();\n }\n }\n }, _callee4, null, [[5, 15, 19, 27], [20,, 22, 26]]);\n })));\n }\n }, {\n key: "handleDeleteItemsMessage",\n value: function handleDeleteItemsMessage(component, message) {\n var _this13 = this;\n\n var requiredContentTypes = lodash_uniq__WEBPACK_IMPORTED_MODULE_8___default()(message.data.items.map(function (item) {\n return item.content_type;\n })).sort();\n var requiredPermissions = [{\n name: _Models_app_component__WEBPACK_IMPORTED_MODULE_11__["ComponentAction"].StreamItems,\n content_types: requiredContentTypes\n }];\n this.runWithPermissions(component.uuid, requiredPermissions, /*#__PURE__*/_asyncToGenerator( /*#__PURE__*/_babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0___default.a.mark(function _callee5() {\n var itemsData, noun, reply, didConfirm, _iteratorNormalCompletion19, _didIteratorError19, _iteratorError19, _iterator19, _step19, itemData, item;\n\n return _babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0___default.a.wrap(function _callee5$(_context6) {\n while (1) {\n switch (_context6.prev = _context6.next) {\n case 0:\n itemsData = message.data.items;\n noun = itemsData.length === 1 ? \'item\' : \'items\';\n reply = null;\n didConfirm = true;\n _context6.next = 6;\n return _this13.alertService.confirm("Are you sure you want to delete ".concat(itemsData.length, " ").concat(noun, "?")).catch(function () {\n didConfirm = false;\n });\n\n case 6:\n if (!didConfirm) {\n _context6.next = 44;\n break;\n }\n\n /* Filter for any components and deactivate before deleting */\n _iteratorNormalCompletion19 = true;\n _didIteratorError19 = false;\n _iteratorError19 = undefined;\n _context6.prev = 10;\n _iterator19 = itemsData[Symbol.iterator]();\n\n case 12:\n if (_iteratorNormalCompletion19 = (_step19 = _iterator19.next()).done) {\n _context6.next = 26;\n break;\n }\n\n itemData = _step19.value;\n item = _this13.itemManager.findItem(itemData.uuid);\n\n if (item) {\n _context6.next = 18;\n break;\n }\n\n _this13.alertService.alert(\'The item you are trying to delete cannot be found.\');\n\n return _context6.abrupt("continue", 23);\n\n case 18:\n if (![_models_content_types__WEBPACK_IMPORTED_MODULE_3__["ContentType"].Component, _models_content_types__WEBPACK_IMPORTED_MODULE_3__["ContentType"].Theme].includes(item.content_type)) {\n _context6.next = 21;\n break;\n }\n\n _context6.next = 21;\n return _this13.deactivateComponent(item.uuid);\n\n case 21:\n _context6.next = 23;\n return _this13.itemManager.setItemToBeDeleted(item.uuid);\n\n case 23:\n _iteratorNormalCompletion19 = true;\n _context6.next = 12;\n break;\n\n case 26:\n _context6.next = 32;\n break;\n\n case 28:\n _context6.prev = 28;\n _context6.t0 = _context6["catch"](10);\n _didIteratorError19 = true;\n _iteratorError19 = _context6.t0;\n\n case 32:\n _context6.prev = 32;\n _context6.prev = 33;\n\n if (!_iteratorNormalCompletion19 && _iterator19.return != null) {\n _iterator19.return();\n }\n\n case 35:\n _context6.prev = 35;\n\n if (!_didIteratorError19) {\n _context6.next = 38;\n break;\n }\n\n throw _iteratorError19;\n\n case 38:\n return _context6.finish(35);\n\n case 39:\n return _context6.finish(32);\n\n case 40:\n _this13.syncService.sync();\n\n reply = {\n deleted: true\n };\n _context6.next = 45;\n break;\n\n case 44:\n /* Rejected by user */\n reply = {\n deleted: false\n };\n\n case 45:\n _this13.replyToMessage(component, message, reply);\n\n case 46:\n case "end":\n return _context6.stop();\n }\n }\n }, _callee5, null, [[10, 28, 32, 40], [33,, 35, 39]]);\n })));\n }\n }, {\n key: "handleRequestPermissionsMessage",\n value: function handleRequestPermissionsMessage(component, message) {\n var _this14 = this;\n\n this.runWithPermissions(component.uuid, message.data.permissions, function () {\n _this14.replyToMessage(component, message, {\n approved: true\n });\n });\n }\n }, {\n key: "handleSetComponentDataMessage",\n value: function handleSetComponentDataMessage(component, message) {\n var _this15 = this;\n\n /* A component setting its own data does not require special permissions */\n this.runWithPermissions(component.uuid, [], /*#__PURE__*/_asyncToGenerator( /*#__PURE__*/_babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0___default.a.mark(function _callee6() {\n return _babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0___default.a.wrap(function _callee6$(_context7) {\n while (1) {\n switch (_context7.prev = _context7.next) {\n case 0:\n _context7.next = 2;\n return _this15.itemManager.changeComponent(component.uuid, function (mutator) {\n mutator.componentData = message.data.componentData;\n });\n\n case 2:\n _this15.syncService.sync();\n\n case 3:\n case "end":\n return _context7.stop();\n }\n }\n }, _callee6);\n })));\n }\n }, {\n key: "handleToggleComponentMessage",\n value: function handleToggleComponentMessage(targetComponent, message) {\n this.toggleComponent(targetComponent);\n }\n }, {\n key: "toggleComponent",\n value: function () {\n var _toggleComponent = _asyncToGenerator( /*#__PURE__*/_babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0___default.a.mark(function _callee8(component) {\n var _this16 = this;\n\n var theme, activeThemes;\n return _babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0___default.a.wrap(function _callee8$(_context9) {\n while (1) {\n switch (_context9.prev = _context9.next) {\n case 0:\n if (!(component.area === _Models_app_component__WEBPACK_IMPORTED_MODULE_11__["ComponentArea"].Modal)) {\n _context9.next = 4;\n break;\n }\n\n this.openModalComponent(component);\n _context9.next = 19;\n break;\n\n case 4:\n if (!component.active) {\n _context9.next = 9;\n break;\n }\n\n _context9.next = 7;\n return this.deactivateComponent(component.uuid);\n\n case 7:\n _context9.next = 19;\n break;\n\n case 9:\n if (!(component.content_type === _models_content_types__WEBPACK_IMPORTED_MODULE_3__["ContentType"].Theme)) {\n _context9.next = 17;\n break;\n }\n\n theme = component;\n /* Deactive currently active theme if new theme is not layerable */\n\n activeThemes = this.getActiveThemes();\n /* Activate current before deactivating others, so as not to flicker */\n\n _context9.next = 14;\n return this.activateComponent(component.uuid);\n\n case 14:\n if (!theme.isLayerable()) {\n setTimeout( /*#__PURE__*/_asyncToGenerator( /*#__PURE__*/_babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0___default.a.mark(function _callee7() {\n var _iteratorNormalCompletion20, _didIteratorError20, _iteratorError20, _iterator20, _step20, candidate;\n\n return _babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0___default.a.wrap(function _callee7$(_context8) {\n while (1) {\n switch (_context8.prev = _context8.next) {\n case 0:\n _iteratorNormalCompletion20 = true;\n _didIteratorError20 = false;\n _iteratorError20 = undefined;\n _context8.prev = 3;\n _iterator20 = activeThemes[Symbol.iterator]();\n\n case 5:\n if (_iteratorNormalCompletion20 = (_step20 = _iterator20.next()).done) {\n _context8.next = 13;\n break;\n }\n\n candidate = _step20.value;\n\n if (!(candidate && !candidate.isLayerable())) {\n _context8.next = 10;\n break;\n }\n\n _context8.next = 10;\n return _this16.deactivateComponent(candidate.uuid);\n\n case 10:\n _iteratorNormalCompletion20 = true;\n _context8.next = 5;\n break;\n\n case 13:\n _context8.next = 19;\n break;\n\n case 15:\n _context8.prev = 15;\n _context8.t0 = _context8["catch"](3);\n _didIteratorError20 = true;\n _iteratorError20 = _context8.t0;\n\n case 19:\n _context8.prev = 19;\n _context8.prev = 20;\n\n if (!_iteratorNormalCompletion20 && _iterator20.return != null) {\n _iterator20.return();\n }\n\n case 22:\n _context8.prev = 22;\n\n if (!_didIteratorError20) {\n _context8.next = 25;\n break;\n }\n\n throw _iteratorError20;\n\n case 25:\n return _context8.finish(22);\n\n case 26:\n return _context8.finish(19);\n\n case 27:\n case "end":\n return _context8.stop();\n }\n }\n }, _callee7, null, [[3, 15, 19, 27], [20,, 22, 26]]);\n })), 10);\n }\n\n _context9.next = 19;\n break;\n\n case 17:\n _context9.next = 19;\n return this.activateComponent(component.uuid);\n\n case 19:\n case "end":\n return _context9.stop();\n }\n }\n }, _callee8, this);\n }));\n\n function toggleComponent(_x3) {\n return _toggleComponent.apply(this, arguments);\n }\n\n return toggleComponent;\n }()\n }, {\n key: "handleInstallLocalComponentMessage",\n value: function handleInstallLocalComponentMessage(sourceComponent, message) {\n /* Only native extensions have this permission */\n if (!this.isNativeExtension(sourceComponent)) {\n return;\n }\n\n var targetComponent = this.itemManager.findItem(message.data.uuid);\n this.desktopManager.installComponent(targetComponent);\n }\n }, {\n key: "runWithPermissions",\n value: function runWithPermissions(componentUuid, requiredPermissions, runFunction) {\n var component = this.itemManager.findItem(componentUuid);\n /* Make copy as not to mutate input values */\n\n requiredPermissions = Object(_Lib_utils__WEBPACK_IMPORTED_MODULE_13__["Copy"])(requiredPermissions);\n var acquiredPermissions = component.permissions;\n var _iteratorNormalCompletion21 = true;\n var _didIteratorError21 = false;\n var _iteratorError21 = undefined;\n\n try {\n var _loop7 = function _loop7() {\n var required = _step21.value;\n\n /* Remove anything we already have */\n var respectiveAcquired = acquiredPermissions.find(function (candidate) {\n return candidate.name === required.name;\n });\n\n if (!respectiveAcquired) {\n return "continue";\n }\n /* We now match on name, lets substract from required.content_types anything we have in acquired. */\n\n\n var requiredContentTypes = required.content_types;\n\n if (!requiredContentTypes) {\n /* If this permission does not require any content types (i.e stream-context-item)\n then we can remove this from required since we match by name (respectiveAcquired.name === required.name) */\n Object(_Lib_utils__WEBPACK_IMPORTED_MODULE_13__["filterFromArray"])(requiredPermissions, required);\n return "continue";\n }\n\n var _iteratorNormalCompletion22 = true;\n var _didIteratorError22 = false;\n var _iteratorError22 = undefined;\n\n try {\n for (var _iterator22 = respectiveAcquired.content_types[Symbol.iterator](), _step22; !(_iteratorNormalCompletion22 = (_step22 = _iterator22.next()).done); _iteratorNormalCompletion22 = true) {\n var acquiredContentType = _step22.value;\n Object(_Lib_utils__WEBPACK_IMPORTED_MODULE_13__["removeFromArray"])(requiredContentTypes, acquiredContentType);\n }\n } catch (err) {\n _didIteratorError22 = true;\n _iteratorError22 = err;\n } finally {\n try {\n if (!_iteratorNormalCompletion22 && _iterator22.return != null) {\n _iterator22.return();\n }\n } finally {\n if (_didIteratorError22) {\n throw _iteratorError22;\n }\n }\n }\n\n if (requiredContentTypes.length === 0) {\n /* We\'ve removed all acquired and end up with zero, means we already have all these permissions */\n Object(_Lib_utils__WEBPACK_IMPORTED_MODULE_13__["filterFromArray"])(requiredPermissions, required);\n }\n };\n\n for (var _iterator21 = requiredPermissions.slice()[Symbol.iterator](), _step21; !(_iteratorNormalCompletion21 = (_step21 = _iterator21.next()).done); _iteratorNormalCompletion21 = true) {\n var _ret6 = _loop7();\n\n if (_ret6 === "continue") continue;\n }\n } catch (err) {\n _didIteratorError21 = true;\n _iteratorError21 = err;\n } finally {\n try {\n if (!_iteratorNormalCompletion21 && _iterator21.return != null) {\n _iterator21.return();\n }\n } finally {\n if (_didIteratorError21) {\n throw _iteratorError21;\n }\n }\n }\n\n if (requiredPermissions.length > 0) {\n this.promptForPermissions(component, requiredPermissions, /*#__PURE__*/function () {\n var _ref7 = _asyncToGenerator( /*#__PURE__*/_babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0___default.a.mark(function _callee9(approved) {\n return _babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0___default.a.wrap(function _callee9$(_context10) {\n while (1) {\n switch (_context10.prev = _context10.next) {\n case 0:\n if (approved) {\n runFunction();\n }\n\n case 1:\n case "end":\n return _context10.stop();\n }\n }\n }, _callee9);\n }));\n\n return function (_x4) {\n return _ref7.apply(this, arguments);\n };\n }());\n } else {\n runFunction();\n }\n }\n }, {\n key: "promptForPermissions",\n value: function promptForPermissions(component, permissions, callback) {\n var _this17 = this;\n\n var params = {\n component: component,\n permissions: permissions,\n permissionsString: this.permissionsStringForPermissions(permissions, component),\n actionBlock: callback,\n callback: function () {\n var _callback = _asyncToGenerator( /*#__PURE__*/_babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0___default.a.mark(function _callee10(approved) {\n return _babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0___default.a.wrap(function _callee10$(_context11) {\n while (1) {\n switch (_context11.prev = _context11.next) {\n case 0:\n if (!approved) {\n _context11.next = 5;\n break;\n }\n\n _this17.log("Changing component to expand permissions", component);\n\n _context11.next = 4;\n return _this17.itemManager.changeItem(component.uuid, function (m) {\n var componentPermissions = Object(_Lib_utils__WEBPACK_IMPORTED_MODULE_13__["Copy"])(component.permissions);\n var _iteratorNormalCompletion23 = true;\n var _didIteratorError23 = false;\n var _iteratorError23 = undefined;\n\n try {\n var _loop8 = function _loop8() {\n var permission = _step23.value;\n var matchingPermission = componentPermissions.find(function (candidate) {\n return candidate.name === permission.name;\n });\n\n if (!matchingPermission) {\n componentPermissions.push(permission);\n } else {\n /* Permission already exists, but content_types may have been expanded */\n var contentTypes = matchingPermission.content_types || [];\n matchingPermission.content_types = lodash_uniq__WEBPACK_IMPORTED_MODULE_8___default()(contentTypes.concat(permission.content_types));\n }\n };\n\n for (var _iterator23 = permissions[Symbol.iterator](), _step23; !(_iteratorNormalCompletion23 = (_step23 = _iterator23.next()).done); _iteratorNormalCompletion23 = true) {\n _loop8();\n }\n } catch (err) {\n _didIteratorError23 = true;\n _iteratorError23 = err;\n } finally {\n try {\n if (!_iteratorNormalCompletion23 && _iterator23.return != null) {\n _iterator23.return();\n }\n } finally {\n if (_didIteratorError23) {\n throw _iteratorError23;\n }\n }\n }\n\n var mutator = m;\n mutator.permissions = componentPermissions;\n });\n\n case 4:\n _this17.syncService.sync();\n\n case 5:\n _this17.permissionDialogs = _this17.permissionDialogs.filter(function (pendingDialog) {\n /* Remove self */\n if (pendingDialog === params) {\n pendingDialog.actionBlock && pendingDialog.actionBlock(approved);\n return false;\n }\n\n var containsObjectSubset = function containsObjectSubset(source, target) {\n return !target.some(function (val) {\n return !source.find(function (candidate) {\n return JSON.stringify(candidate) === JSON.stringify(val);\n });\n });\n };\n\n if (pendingDialog.component === component) {\n /* remove pending dialogs that are encapsulated by already approved permissions, and run its function */\n if (pendingDialog.permissions === permissions || containsObjectSubset(permissions, pendingDialog.permissions)) {\n /* If approved, run the action block. Otherwise, if canceled, cancel any\n pending ones as well, since the user was explicit in their intentions */\n if (approved) {\n pendingDialog.actionBlock && pendingDialog.actionBlock(approved);\n }\n\n return false;\n }\n }\n\n return true;\n });\n\n if (_this17.permissionDialogs.length > 0) {\n _this17.presentPermissionsDialog(_this17.permissionDialogs[0]);\n }\n\n case 7:\n case "end":\n return _context11.stop();\n }\n }\n }, _callee10);\n }));\n\n function callback(_x5) {\n return _callback.apply(this, arguments);\n }\n\n return callback;\n }()\n };\n /**\n * Since these calls are asyncronous, multiple dialogs may be requested at the same time.\n * We only want to present one and trigger all callbacks based on one modal result\n */\n\n var existingDialog = lodash_find__WEBPACK_IMPORTED_MODULE_7___default()(this.permissionDialogs, {\n component: component\n });\n this.permissionDialogs.push(params);\n\n if (!existingDialog) {\n this.presentPermissionsDialog(params);\n } else {\n this.log(\'Existing dialog, not presenting.\');\n }\n }\n }, {\n key: "presentPermissionsDialog",\n value: function presentPermissionsDialog(dialog) {\n throw \'Must override SNComponentManager.presentPermissionsDialog\';\n }\n }, {\n key: "openModalComponent",\n value: function openModalComponent(component) {\n throw \'Must override SNComponentManager.presentPermissionsDialog\';\n }\n }, {\n key: "registerHandler",\n value: function registerHandler(handler) {\n var _this18 = this;\n\n this.handlers.push(handler);\n return function () {\n var matching = lodash_find__WEBPACK_IMPORTED_MODULE_7___default()(_this18.handlers, {\n identifier: handler.identifier\n });\n\n if (!matching) {\n _this18.log(\'Attempting to deregister non-existing handler\');\n\n return;\n }\n\n Object(_Lib_utils__WEBPACK_IMPORTED_MODULE_13__["removeFromArray"])(_this18.handlers, matching);\n };\n }\n }, {\n key: "findOrCreateDataForComponent",\n value: function findOrCreateDataForComponent(component) {\n var data = this.componentState[component.uuid];\n\n if (!data) {\n data = {};\n this.componentState[component.uuid] = data;\n }\n\n return data;\n }\n }, {\n key: "setReadonlyStateForComponent",\n value: function setReadonlyStateForComponent(component, readonly) {\n var lockReadonly = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : false;\n var data = this.findOrCreateDataForComponent(component);\n data.readonly = readonly;\n data.lockReadonly = lockReadonly;\n }\n }, {\n key: "getReadonlyStateForComponent",\n value: function getReadonlyStateForComponent(component) {\n var data = this.findOrCreateDataForComponent(component);\n return {\n readonly: data.readonly,\n lockReadonly: data.lockReadonly\n };\n }\n /** Called by other views when the iframe is ready */\n\n }, {\n key: "registerComponentWindow",\n value: function () {\n var _registerComponentWindow = _asyncToGenerator( /*#__PURE__*/_babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0___default.a.mark(function _callee11(component, componentWindow) {\n var data;\n return _babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0___default.a.wrap(function _callee11$(_context12) {\n while (1) {\n switch (_context12.prev = _context12.next) {\n case 0:\n this.log(\'Register component window\', component);\n data = this.findOrCreateDataForComponent(component);\n\n if (data.window === componentWindow) {\n this.log(\'Web|componentManager\', \'attempting to re-register same component window.\');\n }\n\n this.log(\'Web|componentManager|registerComponentWindow\', component);\n data.window = componentWindow;\n _context12.next = 7;\n return _Lib_uuid__WEBPACK_IMPORTED_MODULE_12__["Uuid"].GenerateUuid();\n\n case 7:\n data.sessionKey = _context12.sent;\n this.sendMessageToComponent(component, {\n action: _Models_app_component__WEBPACK_IMPORTED_MODULE_11__["ComponentAction"].ComponentRegistered,\n sessionKey: data.sessionKey,\n componentData: component.componentData,\n data: {\n uuid: component.uuid,\n environment: Object(_Lib_platforms__WEBPACK_IMPORTED_MODULE_14__["environmentToString"])(this.environment),\n platform: Object(_Lib_platforms__WEBPACK_IMPORTED_MODULE_14__["platformToString"])(this.platform),\n activeThemeUrls: this.urlsForActiveThemes()\n }\n });\n this.postActiveThemesToComponent(component);\n\n if (this.desktopManager) {\n this.desktopManager.notifyComponentActivation(component);\n }\n\n case 11:\n case "end":\n return _context12.stop();\n }\n }\n }, _callee11, this);\n }));\n\n function registerComponentWindow(_x6, _x7) {\n return _registerComponentWindow.apply(this, arguments);\n }\n\n return registerComponentWindow;\n }()\n }, {\n key: "registerComponent",\n value: function registerComponent(uuid) {\n this.log(\'Registering component\', uuid);\n Object(_Lib_utils__WEBPACK_IMPORTED_MODULE_13__["addIfUnique"])(this.activeComponents, uuid);\n var component = this.itemManager.findItem(uuid);\n var _iteratorNormalCompletion24 = true;\n var _didIteratorError24 = false;\n var _iteratorError24 = undefined;\n\n try {\n for (var _iterator24 = this.handlers[Symbol.iterator](), _step24; !(_iteratorNormalCompletion24 = (_step24 = _iterator24.next()).done); _iteratorNormalCompletion24 = true) {\n var handler = _step24.value;\n\n if (handler.areas.includes(component.area) || handler.areas.includes(_Models_app_component__WEBPACK_IMPORTED_MODULE_11__["ComponentArea"].Any)) {\n handler.activationHandler && handler.activationHandler(component);\n }\n }\n } catch (err) {\n _didIteratorError24 = true;\n _iteratorError24 = err;\n } finally {\n try {\n if (!_iteratorNormalCompletion24 && _iterator24.return != null) {\n _iterator24.return();\n }\n } finally {\n if (_didIteratorError24) {\n throw _iteratorError24;\n }\n }\n }\n\n if (component.area === _Models_app_component__WEBPACK_IMPORTED_MODULE_11__["ComponentArea"].Themes) {\n this.postActiveThemesToAllComponents();\n }\n }\n }, {\n key: "activateComponent",\n value: function () {\n var _activateComponent = _asyncToGenerator( /*#__PURE__*/_babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0___default.a.mark(function _callee12(uuid) {\n var component;\n return _babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0___default.a.wrap(function _callee12$(_context13) {\n while (1) {\n switch (_context13.prev = _context13.next) {\n case 0:\n this.log(\'Activating component\', uuid);\n component = this.itemManager.findItem(uuid);\n\n if (component.active) {\n _context13.next = 5;\n break;\n }\n\n _context13.next = 5;\n return this.itemManager.changeComponent(component.uuid, function (mutator) {\n mutator.active = true;\n });\n\n case 5:\n this.registerComponent(uuid);\n this.syncService.sync();\n\n case 7:\n case "end":\n return _context13.stop();\n }\n }\n }, _callee12, this);\n }));\n\n function activateComponent(_x8) {\n return _activateComponent.apply(this, arguments);\n }\n\n return activateComponent;\n }()\n }, {\n key: "deregisterComponent",\n value: function deregisterComponent(uuid) {\n this.log(\'Degregistering component\', uuid);\n var component = this.itemManager.findItem(uuid);\n Object(_Lib_utils__WEBPACK_IMPORTED_MODULE_13__["removeFromArray"])(this.activeComponents, uuid);\n delete this.componentState[component.uuid];\n var _iteratorNormalCompletion25 = true;\n var _didIteratorError25 = false;\n var _iteratorError25 = undefined;\n\n try {\n for (var _iterator25 = this.handlers[Symbol.iterator](), _step25; !(_iteratorNormalCompletion25 = (_step25 = _iterator25.next()).done); _iteratorNormalCompletion25 = true) {\n var handler = _step25.value;\n\n if (handler.areas.includes(component.area) || handler.areas.includes(_Models_app_component__WEBPACK_IMPORTED_MODULE_11__["ComponentArea"].Any)) {\n handler.activationHandler && handler.activationHandler(component);\n }\n }\n } catch (err) {\n _didIteratorError25 = true;\n _iteratorError25 = err;\n } finally {\n try {\n if (!_iteratorNormalCompletion25 && _iterator25.return != null) {\n _iterator25.return();\n }\n } finally {\n if (_didIteratorError25) {\n throw _iteratorError25;\n }\n }\n }\n\n this.streamObservers = this.streamObservers.filter(function (o) {\n return o.componentUuid !== uuid;\n });\n this.contextStreamObservers = this.contextStreamObservers.filter(function (o) {\n return o.componentUuid !== uuid;\n });\n\n if (component.area === _Models_app_component__WEBPACK_IMPORTED_MODULE_11__["ComponentArea"].Themes) {\n this.postActiveThemesToAllComponents();\n }\n }\n }, {\n key: "deactivateComponent",\n value: function () {\n var _deactivateComponent = _asyncToGenerator( /*#__PURE__*/_babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0___default.a.mark(function _callee13(uuid) {\n var _this$itemManager;\n\n var component;\n return _babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0___default.a.wrap(function _callee13$(_context14) {\n while (1) {\n switch (_context14.prev = _context14.next) {\n case 0:\n this.log(\'Deactivating component\', uuid);\n component = (_this$itemManager = this.itemManager) === null || _this$itemManager === void 0 ? void 0 : _this$itemManager.findItem(uuid);\n\n if (!component.active) {\n _context14.next = 5;\n break;\n }\n\n _context14.next = 5;\n return this.itemManager.changeComponent(component.uuid, function (mutator) {\n mutator.active = false;\n });\n\n case 5:\n this.findOrCreateDataForComponent(component).sessionKey = undefined;\n this.deregisterComponent(uuid);\n this.syncService.sync();\n\n case 8:\n case "end":\n return _context14.stop();\n }\n }\n }, _callee13, this);\n }));\n\n function deactivateComponent(_x9) {\n return _deactivateComponent.apply(this, arguments);\n }\n\n return deactivateComponent;\n }()\n }, {\n key: "reloadComponent",\n value: function () {\n var _reloadComponent = _asyncToGenerator( /*#__PURE__*/_babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0___default.a.mark(function _callee15(uuid) {\n var _this$itemManager2,\n _this19 = this;\n\n var component;\n return _babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0___default.a.wrap(function _callee15$(_context16) {\n while (1) {\n switch (_context16.prev = _context16.next) {\n case 0:\n this.log(\'Reloading component\', uuid);\n /* Do soft deactivate */\n\n component = (_this$itemManager2 = this.itemManager) === null || _this$itemManager2 === void 0 ? void 0 : _this$itemManager2.findItem(uuid);\n _context16.next = 4;\n return this.itemManager.changeComponent(component.uuid, function (mutator) {\n mutator.active = false;\n });\n\n case 4:\n this.deregisterComponent(component.uuid);\n /* Do soft activate */\n\n return _context16.abrupt("return", new Promise(function (resolve) {\n _this19.timeout( /*#__PURE__*/_asyncToGenerator( /*#__PURE__*/_babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0___default.a.mark(function _callee14() {\n return _babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0___default.a.wrap(function _callee14$(_context15) {\n while (1) {\n switch (_context15.prev = _context15.next) {\n case 0:\n _context15.next = 2;\n return _this19.itemManager.changeComponent(component.uuid, function (mutator) {\n mutator.active = true;\n });\n\n case 2:\n _this19.registerComponent(component.uuid);\n\n resolve();\n\n case 4:\n case "end":\n return _context15.stop();\n }\n }\n }, _callee14);\n })));\n }));\n\n case 6:\n case "end":\n return _context16.stop();\n }\n }\n }, _callee15, this);\n }));\n\n function reloadComponent(_x10) {\n return _reloadComponent.apply(this, arguments);\n }\n\n return reloadComponent;\n }()\n }, {\n key: "deleteComponent",\n value: function () {\n var _deleteComponent = _asyncToGenerator( /*#__PURE__*/_babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0___default.a.mark(function _callee16(uuid) {\n return _babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0___default.a.wrap(function _callee16$(_context17) {\n while (1) {\n switch (_context17.prev = _context17.next) {\n case 0:\n _context17.next = 2;\n return this.itemManager.setItemToBeDeleted(uuid);\n\n case 2:\n this.syncService.sync();\n\n case 3:\n case "end":\n return _context17.stop();\n }\n }\n }, _callee16, this);\n }));\n\n function deleteComponent(_x11) {\n return _deleteComponent.apply(this, arguments);\n }\n\n return deleteComponent;\n }()\n }, {\n key: "isComponentActive",\n value: function isComponentActive(component) {\n return component.active;\n }\n }, {\n key: "iframeForComponent",\n value: function iframeForComponent(uuid) {\n var iframes = Array.from(document.getElementsByTagName(\'iframe\'));\n\n for (var _i2 = 0, _iframes = iframes; _i2 < _iframes.length; _i2++) {\n var frame = _iframes[_i2];\n var componentId = frame.dataset.componentId;\n\n if (componentId === uuid) {\n return frame;\n }\n }\n }\n }, {\n key: "focusChangedForComponent",\n value: function focusChangedForComponent(component) {\n var focused = document.activeElement === this.iframeForComponent(component.uuid);\n var _iteratorNormalCompletion26 = true;\n var _didIteratorError26 = false;\n var _iteratorError26 = undefined;\n\n try {\n for (var _iterator26 = this.handlers[Symbol.iterator](), _step26; !(_iteratorNormalCompletion26 = (_step26 = _iterator26.next()).done); _iteratorNormalCompletion26 = true) {\n var handler = _step26.value;\n\n /* Notify all handlers, and not just ones that match this component type */\n handler.focusHandler && handler.focusHandler(component, focused);\n }\n } catch (err) {\n _didIteratorError26 = true;\n _iteratorError26 = err;\n } finally {\n try {\n if (!_iteratorNormalCompletion26 && _iterator26.return != null) {\n _iterator26.return();\n }\n } finally {\n if (_didIteratorError26) {\n throw _iteratorError26;\n }\n }\n }\n }\n }, {\n key: "handleSetSizeEvent",\n value: function handleSetSizeEvent(component, data) {\n var setSize = function setSize(element, size) {\n var widthString = Object(_Lib_utils__WEBPACK_IMPORTED_MODULE_13__["isString"])(size.width) ? size.width : "".concat(data.width, "px");\n var heightString = Object(_Lib_utils__WEBPACK_IMPORTED_MODULE_13__["isString"])(size.height) ? size.height : "".concat(data.height, "px");\n\n if (element) {\n element.setAttribute(\'style\', "width:".concat(widthString, "; height:").concat(heightString, ";"));\n }\n };\n\n if (component.area === _Models_app_component__WEBPACK_IMPORTED_MODULE_11__["ComponentArea"].Rooms || component.area === _Models_app_component__WEBPACK_IMPORTED_MODULE_11__["ComponentArea"].Modal) {\n var selector = component.area === _Models_app_component__WEBPACK_IMPORTED_MODULE_11__["ComponentArea"].Rooms ? \'inner\' : \'outer\';\n var content = document.getElementById("component-content-".concat(selector, "-").concat(component.uuid));\n\n if (content) {\n setSize(content, data);\n }\n } else {\n var iframe = this.iframeForComponent(component.uuid);\n\n if (!iframe) {\n return;\n }\n\n setSize(iframe, data);\n /**\n * On Firefox, resizing a component iframe does not seem to have an effect with\n * editor-stack extensions. Sizing the parent does the trick, however, we can\'t do\n * this globally, otherwise, areas like the note-tags will not be able to expand\n * outside of the bounds (to display autocomplete, for example).\n */\n\n if (component.area === _Models_app_component__WEBPACK_IMPORTED_MODULE_11__["ComponentArea"].EditorStack) {\n var parent = iframe.parentElement;\n\n if (parent) {\n setSize(parent, data);\n }\n }\n }\n }\n }, {\n key: "editorForNote",\n value: function editorForNote(note) {\n var editors = this.componentsForArea(_Models_app_component__WEBPACK_IMPORTED_MODULE_11__["ComponentArea"].Editor);\n var _iteratorNormalCompletion27 = true;\n var _didIteratorError27 = false;\n var _iteratorError27 = undefined;\n\n try {\n for (var _iterator27 = editors[Symbol.iterator](), _step27; !(_iteratorNormalCompletion27 = (_step27 = _iterator27.next()).done); _iteratorNormalCompletion27 = true) {\n var editor = _step27.value;\n\n if (editor.isExplicitlyEnabledForItem(note.uuid)) {\n return editor;\n }\n }\n } catch (err) {\n _didIteratorError27 = true;\n _iteratorError27 = err;\n } finally {\n try {\n if (!_iteratorNormalCompletion27 && _iterator27.return != null) {\n _iterator27.return();\n }\n } finally {\n if (_didIteratorError27) {\n throw _iteratorError27;\n }\n }\n }\n\n var defaultEditor;\n /* No editor found for note. Use default editor, if note does not prefer system editor */\n\n if (this.isMobile) {\n if (!note.mobilePrefersPlainEditor) {\n defaultEditor = this.getDefaultEditor();\n }\n } else {\n if (!note.prefersPlainEditor) {\n defaultEditor = this.getDefaultEditor();\n }\n }\n\n if (defaultEditor && !defaultEditor.isExplicitlyDisabledForItem(note.uuid)) {\n return defaultEditor;\n } else {\n return undefined;\n }\n }\n }, {\n key: "getDefaultEditor",\n value: function getDefaultEditor() {\n var editors = this.componentsForArea(_Models_app_component__WEBPACK_IMPORTED_MODULE_11__["ComponentArea"].Editor);\n\n if (this.isMobile) {\n return editors.filter(function (e) {\n return e.isMobileDefault;\n })[0];\n } else {\n return editors.filter(function (e) {\n return e.isDefaultEditor();\n })[0];\n }\n }\n }, {\n key: "permissionsStringForPermissions",\n value: function permissionsStringForPermissions(permissions, component) {\n var finalString = \'\';\n var permissionsCount = permissions.length;\n\n var addSeparator = function addSeparator(index, length) {\n if (index > 0) {\n if (index === length - 1) {\n if (length === 2) {\n return \' and \';\n } else {\n return \', and \';\n }\n } else {\n return \', \';\n }\n }\n\n return \'\';\n };\n\n permissions.forEach(function (permission, index) {\n if (permission.name === _Models_app_component__WEBPACK_IMPORTED_MODULE_11__["ComponentAction"].StreamItems) {\n var types = permission.content_types.map(function (type) {\n var desc = Object(_models_content_types__WEBPACK_IMPORTED_MODULE_3__["displayStringForContentType"])(type);\n\n if (desc) {\n return desc + \'s\';\n } else {\n return \'items of type \' + type;\n }\n });\n var typesString = \'\';\n\n for (var i = 0; i < types.length; i++) {\n var type = types[i];\n typesString += addSeparator(i, types.length + permissionsCount - index - 1);\n typesString += type;\n }\n\n finalString += addSeparator(index, permissionsCount);\n finalString += typesString;\n\n if (types.length >= 2 && index < permissionsCount - 1) {\n /* If you have a list of types, and still an additional root-level\n permission coming up, add a comma */\n finalString += \', \';\n }\n } else if (permission.name === _Models_app_component__WEBPACK_IMPORTED_MODULE_11__["ComponentAction"].StreamContextItem) {\n var _mapping;\n\n var mapping = (_mapping = {}, _defineProperty(_mapping, _Models_app_component__WEBPACK_IMPORTED_MODULE_11__["ComponentArea"].EditorStack, \'working note\'), _defineProperty(_mapping, _Models_app_component__WEBPACK_IMPORTED_MODULE_11__["ComponentArea"].NoteTags, \'working note\'), _defineProperty(_mapping, _Models_app_component__WEBPACK_IMPORTED_MODULE_11__["ComponentArea"].Editor, \'working note\'), _mapping);\n finalString += addSeparator(index, permissionsCount);\n finalString += mapping[component.area];\n }\n });\n return finalString + \'.\';\n }\n }, {\n key: "isDesktop",\n get: function get() {\n return this.environment === _Lib_platforms__WEBPACK_IMPORTED_MODULE_14__["Environment"].Desktop;\n }\n }, {\n key: "isMobile",\n get: function get() {\n return this.environment === _Lib_platforms__WEBPACK_IMPORTED_MODULE_14__["Environment"].Mobile;\n }\n }, {\n key: "components",\n get: function get() {\n return this.itemManager.getItems([_models_content_types__WEBPACK_IMPORTED_MODULE_3__["ContentType"].Component, _models_content_types__WEBPACK_IMPORTED_MODULE_3__["ContentType"].Theme]);\n }\n }]);\n\n return SNComponentManager;\n}(_Lib_services_pure_service__WEBPACK_IMPORTED_MODULE_10__["PureService"]);//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9saWIvc2VydmljZXMvY29tcG9uZW50X21hbmFnZXIudHMuanMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly9TTkxpYnJhcnkvLi9saWIvc2VydmljZXMvY29tcG9uZW50X21hbmFnZXIudHM/ODFlMSJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBVdWlkcyB9IGZyb20gJ0BNb2RlbHMvZnVuY3Rpb25zJztcbmltcG9ydCB7IENyZWF0ZUl0ZW1Gcm9tUGF5bG9hZCB9IGZyb20gJ0BNb2RlbHMvZ2VuZXJhdG9yJztcbmltcG9ydCB7IENvbnRlbnRUeXBlLCBkaXNwbGF5U3RyaW5nRm9yQ29udGVudFR5cGUgfSBmcm9tICcuLy4uL21vZGVscy9jb250ZW50X3R5cGVzJztcbmltcG9ydCB7IFBheWxvYWRTb3VyY2UgfSBmcm9tICcuLy4uL3Byb3RvY29sL3BheWxvYWRzL3NvdXJjZXMnO1xuaW1wb3J0IHsgQ3JlYXRlU291cmNlZFBheWxvYWRGcm9tT2JqZWN0IH0gZnJvbSAnQFBheWxvYWRzL2dlbmVyYXRvcic7XG5pbXBvcnQgeyBNdXRhdGlvblR5cGUgfSBmcm9tICdATW9kZWxzL2NvcmUvaXRlbSc7XG5pbXBvcnQgZmluZCBmcm9tICdsb2Rhc2gvZmluZCc7XG5pbXBvcnQgdW5pcSBmcm9tICdsb2Rhc2gvdW5pcSc7XG5pbXBvcnQgcmVtb3ZlIGZyb20gJ2xvZGFzaC9yZW1vdmUnO1xuaW1wb3J0IHsgUHVyZVNlcnZpY2UgfSBmcm9tICdATGliL3NlcnZpY2VzL3B1cmVfc2VydmljZSc7XG5pbXBvcnQgeyBDb21wb25lbnRBcmVhLCBDb21wb25lbnRBY3Rpb24gfSBmcm9tICdATW9kZWxzL2FwcC9jb21wb25lbnQnO1xuaW1wb3J0IHsgVXVpZCB9IGZyb20gJ0BMaWIvdXVpZCc7XG5pbXBvcnQgeyBDb3B5LCBpc1N0cmluZywgZXh0ZW5kQXJyYXksIHJlbW92ZUZyb21BcnJheSwgc2VhcmNoQXJyYXksIGNvbmNhdEFycmF5cywgYWRkSWZVbmlxdWUsIGZpbHRlckZyb21BcnJheSB9IGZyb20gJ0BMaWIvdXRpbHMnO1xuaW1wb3J0IHsgUGxhdGZvcm0sIEVudmlyb25tZW50LCBwbGF0Zm9ybVRvU3RyaW5nLCBlbnZpcm9ubWVudFRvU3RyaW5nIH0gZnJvbSAnQExpYi9wbGF0Zm9ybXMnO1xuY29uc3QgREVTS1RPUF9VUkxfUFJFRklYID0gJ3NuOi8vJztcbmNvbnN0IExPQ0FMX0hPU1QgPSAnbG9jYWxob3N0JztcbmNvbnN0IENVU1RPTV9MT0NBTF9IT1NUID0gJ3NuLmxvY2FsJztcbmNvbnN0IEFORFJPSURfTE9DQUxfSE9TVCA9ICcxMC4wLjIuMic7XG4vKiBUaGlzIGRvbWFpbiB3aWxsIGJlIHVzZWQgdG8gc2F2ZSBjb250ZXh0IGl0ZW0gY2xpZW50IGRhdGEgKi9cbmNvbnN0IENvbXBvbmVudERhdGFEb21haW4gPSAnb3JnLnN0YW5kYXJkbm90ZXMuc24uY29tcG9uZW50cyc7XG4vKipcbiAqIFJlc3BvbnNpYmxlIGZvciBvcmNoZXN0cmF0aW5nIGNvbXBvbmVudCBmdW5jdGlvbmFsaXR5LCBpbmNsdWRpbmcgZWRpdG9ycywgdGhlbWVzLFxuICogYW5kIG90aGVyIGNvbXBvbmVudHMuIFRoZSBjb21wb25lbnQgbWFuYWdlciBwcmltYXJpbHkgZGVhbHMgd2l0aCBpZnJhbWVzLCBhbmQgb3JjaGVzdHJhdGVzXG4gKiBzZW5kaW5nIGFuZCByZWNlaXZpbmcgbWVzc2FnZXMgdG8gYW5kIGZyb20gZnJhbWVzIHZpYSB0aGUgcG9zdE1lc3NhZ2UgQVBJLlxuICovXG5leHBvcnQgY2xhc3MgU05Db21wb25lbnRNYW5hZ2VyIGV4dGVuZHMgUHVyZVNlcnZpY2Uge1xuICAgIGNvbnN0cnVjdG9yKGl0ZW1NYW5hZ2VyLCBzeW5jU2VydmljZSwgYWxlcnRTZXJ2aWNlLCBlbnZpcm9ubWVudCwgcGxhdGZvcm0sIHRpbWVvdXQpIHtcbiAgICAgICAgc3VwZXIoKTtcbiAgICAgICAgdGhpcy5jb21wb25lbnRTdGF0ZSA9IHt9O1xuICAgICAgICB0aGlzLnN0cmVhbU9ic2VydmVycyA9IFtdO1xuICAgICAgICB0aGlzLmNvbnRleHRTdHJlYW1PYnNlcnZlcnMgPSBbXTtcbiAgICAgICAgdGhpcy5hY3RpdmVDb21wb25lbnRzID0gW107XG4gICAgICAgIHRoaXMucGVybWlzc2lvbkRpYWxvZ3MgPSBbXTtcbiAgICAgICAgdGhpcy5oYW5kbGVycyA9IFtdO1xuICAgICAgICB0aGlzLmRldGVjdEZvY3VzQ2hhbmdlID0gKCkgPT4ge1xuICAgICAgICAgICAgY29uc3QgYWN0aXZlQ29tcG9uZW50cyA9IHRoaXMuaXRlbU1hbmFnZXIuZmluZEl0ZW1zKHRoaXMuYWN0aXZlQ29tcG9uZW50cyk7XG4gICAgICAgICAgICBmb3IgKGNvbnN0IGNvbXBvbmVudCBvZiBhY3RpdmVDb21wb25lbnRzKSB7XG4gICAgICAgICAgICAgICAgaWYgKGRvY3VtZW50LmFjdGl2ZUVsZW1lbnQgPT09IHRoaXMuaWZyYW1lRm9yQ29tcG9uZW50KGNvbXBvbmVudC51dWlkKSkge1xuICAgICAgICAgICAgICAgICAgICB0aGlzLnRpbWVvdXQoKCkgPT4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5mb2N1c0NoYW5nZWRGb3JDb21wb25lbnQoY29tcG9uZW50KTtcbiAgICAgICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgfTtcbiAgICAgICAgdGhpcy5vbldpbmRvd01lc3NhZ2UgPSAoZXZlbnQpID0+IHtcbiAgICAgICAgICAgIC8qKiBNYWtlIHN1cmUgdGhpcyBtZXNzYWdlIGlzIGZvciB1cyAqL1xuICAgICAgICAgICAgaWYgKGV2ZW50LmRhdGEuc2Vzc2lvbktleSkge1xuICAgICAgICAgICAgICAgIHRoaXMubG9nKCdDb21wb25lbnQgbWFuYWdlciByZWNlaXZlZCBtZXNzYWdlJywgZXZlbnQuZGF0YSk7XG4gICAgICAgICAgICAgICAgdGhpcy5oYW5kbGVNZXNzYWdlKHRoaXMuY29tcG9uZW50Rm9yU2Vzc2lvbktleShldmVudC5kYXRhLnNlc3Npb25LZXkpLCBldmVudC5kYXRhKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfTtcbiAgICAgICAgdGhpcy50aW1lb3V0ID0gdGltZW91dCB8fCBzZXRUaW1lb3V0LmJpbmQod2luZG93KTtcbiAgICAgICAgdGhpcy5pdGVtTWFuYWdlciA9IGl0ZW1NYW5hZ2VyO1xuICAgICAgICB0aGlzLnN5bmNTZXJ2aWNlID0gc3luY1NlcnZpY2U7XG4gICAgICAgIHRoaXMuYWxlcnRTZXJ2aWNlID0gYWxlcnRTZXJ2aWNlO1xuICAgICAgICB0aGlzLmVudmlyb25tZW50ID0gZW52aXJvbm1lbnQ7XG4gICAgICAgIHRoaXMucGxhdGZvcm0gPSBwbGF0Zm9ybTtcbiAgICAgICAgdGhpcy5jb25maWd1cmVGb3JHZW5lcmFsVXNhZ2UoKTtcbiAgICAgICAgaWYgKGVudmlyb25tZW50ICE9PSBFbnZpcm9ubWVudC5Nb2JpbGUpIHtcbiAgICAgICAgICAgIHRoaXMuY29uZmlndXJlRm9yTm9uTW9iaWxlVXNhZ2UoKTtcbiAgICAgICAgfVxuICAgIH1cbiAgICBnZXQgaXNEZXNrdG9wKCkge1xuICAgICAgICByZXR1cm4gdGhpcy5lbnZpcm9ubWVudCA9PT0gRW52aXJvbm1lbnQuRGVza3RvcDtcbiAgICB9XG4gICAgZ2V0IGlzTW9iaWxlKCkge1xuICAgICAgICByZXR1cm4gdGhpcy5lbnZpcm9ubWVudCA9PT0gRW52aXJvbm1lbnQuTW9iaWxlO1xuICAgIH1cbiAgICBnZXQgY29tcG9uZW50cygpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuaXRlbU1hbmFnZXIuZ2V0SXRlbXMoW1xuICAgICAgICAgICAgQ29udGVudFR5cGUuQ29tcG9uZW50LFxuICAgICAgICAgICAgQ29udGVudFR5cGUuVGhlbWVcbiAgICAgICAgXSk7XG4gICAgfVxuICAgIGNvbXBvbmVudHNGb3JBcmVhKGFyZWEpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuY29tcG9uZW50cy5maWx0ZXIoKGNvbXBvbmVudCkgPT4ge1xuICAgICAgICAgICAgcmV0dXJuIGNvbXBvbmVudC5hcmVhID09PSBhcmVhO1xuICAgICAgICB9KTtcbiAgICB9XG4gICAgLyoqIEBvdmVycmlkZSAqL1xuICAgIGRlaW5pdCgpIHtcbiAgICAgICAgc3VwZXIuZGVpbml0KCk7XG4gICAgICAgIHRoaXMuc3RyZWFtT2JzZXJ2ZXJzLmxlbmd0aCA9IDA7XG4gICAgICAgIHRoaXMuY29udGV4dFN0cmVhbU9ic2VydmVycy5sZW5ndGggPSAwO1xuICAgICAgICB0aGlzLmFjdGl2ZUNvbXBvbmVudHMubGVuZ3RoID0gMDtcbiAgICAgICAgdGhpcy5wZXJtaXNzaW9uRGlhbG9ncy5sZW5ndGggPSAwO1xuICAgICAgICB0aGlzLmhhbmRsZXJzLmxlbmd0aCA9IDA7XG4gICAgICAgIHRoaXMuaXRlbU1hbmFnZXIgPSB1bmRlZmluZWQ7XG4gICAgICAgIHRoaXMuc3luY1NlcnZpY2UgPSB1bmRlZmluZWQ7XG4gICAgICAgIHRoaXMuYWxlcnRTZXJ2aWNlID0gdW5kZWZpbmVkO1xuICAgICAgICB0aGlzLnJlbW92ZUl0ZW1PYnNlcnZlcigpO1xuICAgICAgICB0aGlzLnJlbW92ZUl0ZW1PYnNlcnZlciA9IG51bGw7XG4gICAgICAgIGlmICh3aW5kb3cpIHtcbiAgICAgICAgICAgIHdpbmRvdy5yZW1vdmVFdmVudExpc3RlbmVyKCdmb2N1cycsIHRoaXMuZGV0ZWN0Rm9jdXNDaGFuZ2UsIHRydWUpO1xuICAgICAgICAgICAgd2luZG93LnJlbW92ZUV2ZW50TGlzdGVuZXIoJ2JsdXInLCB0aGlzLmRldGVjdEZvY3VzQ2hhbmdlLCB0cnVlKTtcbiAgICAgICAgICAgIHdpbmRvdy5yZW1vdmVFdmVudExpc3RlbmVyKCdtZXNzYWdlJywgdGhpcy5vbldpbmRvd01lc3NhZ2UpO1xuICAgICAgICB9XG4gICAgfVxuICAgIHNldERlc2t0b3BNYW5hZ2VyKGRlc2t0b3BNYW5hZ2VyKSB7XG4gICAgICAgIHRoaXMuZGVza3RvcE1hbmFnZXIgPSBkZXNrdG9wTWFuYWdlcjtcbiAgICAgICAgdGhpcy5jb25maWd1cmVGb3JEZXNrdG9wKCk7XG4gICAgfVxuICAgIGNvbmZpZ3VyZUZvckdlbmVyYWxVc2FnZSgpIHtcbiAgICAgICAgdGhpcy5yZW1vdmVJdGVtT2JzZXJ2ZXIgPSB0aGlzLml0ZW1NYW5hZ2VyLmFkZE9ic2VydmVyKENvbnRlbnRUeXBlLkFueSwgKGNoYW5nZWQsIGluc2VydGVkLCBkaXNjYXJkZWQsIHNvdXJjZSwgc291cmNlS2V5KSA9PiB7XG4gICAgICAgICAgICBjb25zdCBpdGVtcyA9IGNvbmNhdEFycmF5cyhjaGFuZ2VkLCBpbnNlcnRlZCwgZGlzY2FyZGVkKTtcbiAgICAgICAgICAgIGNvbnN0IHN5bmNlZENvbXBvbmVudHMgPSBpdGVtcy5maWx0ZXIoKGl0ZW0pID0+IHtcbiAgICAgICAgICAgICAgICByZXR1cm4gKGl0ZW0uY29udGVudF90eXBlID09PSBDb250ZW50VHlwZS5Db21wb25lbnQgfHxcbiAgICAgICAgICAgICAgICAgICAgaXRlbS5jb250ZW50X3R5cGUgPT09IENvbnRlbnRUeXBlLlRoZW1lKTtcbiAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgLyoqXG4gICAgICAgICAgICAgKiBXZSBvbmx5IHdhbnQgdG8gc3luYyBpZiB0aGUgaXRlbSBzb3VyY2UgaXMgUmV0cmlldmVkLCBub3QgUmVtb3RlU2F2ZWQgdG8gYXZvaWRcbiAgICAgICAgICAgICAqIHJlY3Vyc2lvbiBjYXVzZWQgYnkgdGhlIGNvbXBvbmVudCBiZWluZyBtb2RpZmllZCBhbmQgc2F2ZWQgYWZ0ZXIgaXQgaXMgdXBkYXRlZC5cbiAgICAgICAgICAgICovXG4gICAgICAgICAgICBpZiAoc3luY2VkQ29tcG9uZW50cy5sZW5ndGggPiAwICYmIHNvdXJjZSAhPT0gUGF5bG9hZFNvdXJjZS5SZW1vdGVTYXZlZCkge1xuICAgICAgICAgICAgICAgIC8qIEVuc3VyZSBhbnkgY29tcG9uZW50IGluIG91ciBkYXRhIGlzIGluc3RhbGxlZCBieSB0aGUgc3lzdGVtICovXG4gICAgICAgICAgICAgICAgaWYgKHRoaXMuaXNEZXNrdG9wKSB7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuZGVza3RvcE1hbmFnZXIuc3luY0NvbXBvbmVudHNJbnN0YWxsYXRpb24oc3luY2VkQ29tcG9uZW50cyk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICAgICAgZm9yIChjb25zdCBjb21wb25lbnQgb2Ygc3luY2VkQ29tcG9uZW50cykge1xuICAgICAgICAgICAgICAgIGNvbnN0IGlzSW5BY3RpdmUgPSB0aGlzLmFjdGl2ZUNvbXBvbmVudHMuaW5jbHVkZXMoY29tcG9uZW50LnV1aWQpO1xuICAgICAgICAgICAgICAgIGlmIChjb21wb25lbnQuYWN0aXZlICYmICFjb21wb25lbnQuZGVsZXRlZCAmJiAhaXNJbkFjdGl2ZSkge1xuICAgICAgICAgICAgICAgICAgICB0aGlzLmFjdGl2YXRlQ29tcG9uZW50KGNvbXBvbmVudC51dWlkKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgZWxzZSBpZiAoIWNvbXBvbmVudC5hY3RpdmUgJiYgaXNJbkFjdGl2ZSkge1xuICAgICAgICAgICAgICAgICAgICB0aGlzLmRlYWN0aXZhdGVDb21wb25lbnQoY29tcG9uZW50LnV1aWQpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIC8qIExvY2FsQ2hhbmdlZCBpcyBub3QgaW50ZXJlc3RpbmcgdG8gc2VuZCB0byBvYnNlcnZlcnMuIEZvciBsb2NhbCBjaGFuZ2VzLFxuICAgICAgICAgICAgd2Ugd2FpdCB1bnRpbCB0aGUgaXRlbSBpcyBzZXQgdG8gZGlydHkgYmVmb3JlIG5vdGlmeWluZyBvYnNlcnZlcnMsIHdoZXJlIHRoZSBtYXBwaW5nXG4gICAgICAgICAgICBzb3VyY2Ugd291bGQgYmUgUGF5bG9hZFNvdXJjZS5Mb2NhbENoYW5nZWQgKi9cbiAgICAgICAgICAgIGlmIChzb3VyY2UgIT09IFBheWxvYWRTb3VyY2UuTG9jYWxDaGFuZ2VkKSB7XG4gICAgICAgICAgICAgICAgdGhpcy5ub3RpZnlTdHJlYW1PYnNlcnZlcnMoaXRlbXMsIHNvdXJjZSwgc291cmNlS2V5KTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSk7XG4gICAgfVxuICAgIG5vdGlmeVN0cmVhbU9ic2VydmVycyhhbGxJdGVtcywgc291cmNlLCBzb3VyY2VLZXkpIHtcbiAgICAgICAgZm9yIChjb25zdCBvYnNlcnZlciBvZiB0aGlzLnN0cmVhbU9ic2VydmVycykge1xuICAgICAgICAgICAgaWYgKHNvdXJjZUtleSAmJiBzb3VyY2VLZXkgPT09IG9ic2VydmVyLmNvbXBvbmVudFV1aWQpIHtcbiAgICAgICAgICAgICAgICAvKiBEb24ndCBub3RpZnkgc291cmNlIG9mIGNoYW5nZSwgYXMgaXQgaXMgdGhlIG9yaWdpbmF0b3IsIGRvZXNuJ3QgbmVlZCBkdXBsaWNhdGUgZXZlbnQuICovXG4gICAgICAgICAgICAgICAgY29udGludWU7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBjb25zdCByZWxldmFudEl0ZW1zID0gYWxsSXRlbXMuZmlsdGVyKChpdGVtKSA9PiB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIG9ic2VydmVyLmNvbnRlbnRUeXBlcy5pbmRleE9mKGl0ZW0uY29udGVudF90eXBlKSAhPT0gLTE7XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIGlmIChyZWxldmFudEl0ZW1zLmxlbmd0aCA9PT0gMCkge1xuICAgICAgICAgICAgICAgIGNvbnRpbnVlO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgY29uc3QgcmVxdWlyZWRQZXJtaXNzaW9ucyA9IFt7XG4gICAgICAgICAgICAgICAgICAgIG5hbWU6IENvbXBvbmVudEFjdGlvbi5TdHJlYW1JdGVtcyxcbiAgICAgICAgICAgICAgICAgICAgY29udGVudF90eXBlczogb2JzZXJ2ZXIuY29udGVudFR5cGVzLnNvcnQoKVxuICAgICAgICAgICAgICAgIH1dO1xuICAgICAgICAgICAgdGhpcy5ydW5XaXRoUGVybWlzc2lvbnMob2JzZXJ2ZXIuY29tcG9uZW50VXVpZCwgcmVxdWlyZWRQZXJtaXNzaW9ucywgKCkgPT4ge1xuICAgICAgICAgICAgICAgIHRoaXMuc2VuZEl0ZW1zSW5SZXBseShvYnNlcnZlci5jb21wb25lbnRVdWlkLCByZWxldmFudEl0ZW1zLCBvYnNlcnZlci5vcmlnaW5hbE1lc3NhZ2UpO1xuICAgICAgICAgICAgfSk7XG4gICAgICAgIH1cbiAgICAgICAgY29uc3QgcmVxdWlyZWRDb250ZXh0UGVybWlzc2lvbnMgPSBbe1xuICAgICAgICAgICAgICAgIG5hbWU6IENvbXBvbmVudEFjdGlvbi5TdHJlYW1Db250ZXh0SXRlbVxuICAgICAgICAgICAgfV07XG4gICAgICAgIGZvciAoY29uc3Qgb2JzZXJ2ZXIgb2YgdGhpcy5jb250ZXh0U3RyZWFtT2JzZXJ2ZXJzKSB7XG4gICAgICAgICAgICBpZiAoc291cmNlS2V5ICYmIHNvdXJjZUtleSA9PT0gb2JzZXJ2ZXIuY29tcG9uZW50VXVpZCkge1xuICAgICAgICAgICAgICAgIC8qIERvbid0IG5vdGlmeSBzb3VyY2Ugb2YgY2hhbmdlLCBhcyBpdCBpcyB0aGUgb3JpZ2luYXRvciwgZG9lc24ndCBuZWVkIGR1cGxpY2F0ZSBldmVudC4gKi9cbiAgICAgICAgICAgICAgICBjb250aW51ZTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGZvciAoY29uc3QgaGFuZGxlciBvZiB0aGlzLmhhbmRsZXJzKSB7XG4gICAgICAgICAgICAgICAgaWYgKCFoYW5kbGVyLmFyZWFzLmluY2x1ZGVzKG9ic2VydmVyLmFyZWEpICYmXG4gICAgICAgICAgICAgICAgICAgICFoYW5kbGVyLmFyZWFzLmluY2x1ZGVzKENvbXBvbmVudEFyZWEuQW55KSkge1xuICAgICAgICAgICAgICAgICAgICBjb250aW51ZTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgaWYgKGhhbmRsZXIuY29udGV4dFJlcXVlc3RIYW5kbGVyKSB7XG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IGl0ZW1JbkNvbnRleHQgPSBoYW5kbGVyLmNvbnRleHRSZXF1ZXN0SGFuZGxlcihvYnNlcnZlci5jb21wb25lbnRVdWlkKTtcbiAgICAgICAgICAgICAgICAgICAgaWYgKGl0ZW1JbkNvbnRleHQpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IG1hdGNoaW5nSXRlbSA9IGZpbmQoYWxsSXRlbXMsIHsgdXVpZDogaXRlbUluQ29udGV4dC51dWlkIH0pO1xuICAgICAgICAgICAgICAgICAgICAgICAgaWYgKG1hdGNoaW5nSXRlbSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChtYXRjaGluZ0l0ZW0uZGVsZXRlZCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb250aW51ZTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5ydW5XaXRoUGVybWlzc2lvbnMob2JzZXJ2ZXIuY29tcG9uZW50VXVpZCwgcmVxdWlyZWRDb250ZXh0UGVybWlzc2lvbnMsICgpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5zZW5kQ29udGV4dEl0ZW1JblJlcGx5KG9ic2VydmVyLmNvbXBvbmVudFV1aWQsIG1hdGNoaW5nSXRlbSwgb2JzZXJ2ZXIub3JpZ2luYWxNZXNzYWdlLCBzb3VyY2UpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfVxuICAgIGlzTmF0aXZlRXh0ZW5zaW9uKGNvbXBvbmVudCkge1xuICAgICAgICBjb25zdCBuYXRpdmVVcmxzID0gW1xuICAgICAgICAgICAgd2luZG93Ll9leHRlbnNpb25zX21hbmFnZXJfbG9jYXRpb24sXG4gICAgICAgICAgICB3aW5kb3cuX2JhdGNoX21hbmFnZXJfbG9jYXRpb25cbiAgICAgICAgXTtcbiAgICAgICAgY29uc3QgaG9zdGVkVXJsID0gY29tcG9uZW50Lmhvc3RlZF91cmw7XG4gICAgICAgIGNvbnN0IGxvY2FsVXJsID0gY29tcG9uZW50LmxvY2FsX3VybCAmJiBjb21wb25lbnQubG9jYWxfdXJsLnJlcGxhY2UoREVTS1RPUF9VUkxfUFJFRklYLCAnJyk7XG4gICAgICAgIHJldHVybiBuYXRpdmVVcmxzLmluY2x1ZGVzKGhvc3RlZFVybCkgfHwgbmF0aXZlVXJscy5pbmNsdWRlcyhsb2NhbFVybCk7XG4gICAgfVxuICAgIGNvbmZpZ3VyZUZvck5vbk1vYmlsZVVzYWdlKCkge1xuICAgICAgICB3aW5kb3cuYWRkRXZlbnRMaXN0ZW5lclxuICAgICAgICAgICAgPyB3aW5kb3cuYWRkRXZlbnRMaXN0ZW5lcignZm9jdXMnLCB0aGlzLmRldGVjdEZvY3VzQ2hhbmdlLCB0cnVlKVxuICAgICAgICAgICAgOiB3aW5kb3cuYXR0YWNoRXZlbnQoJ29uZm9jdXNvdXQnLCB0aGlzLmRldGVjdEZvY3VzQ2hhbmdlKTtcbiAgICAgICAgd2luZG93LmFkZEV2ZW50TGlzdGVuZXJcbiAgICAgICAgICAgID8gd2luZG93LmFkZEV2ZW50TGlzdGVuZXIoJ2JsdXInLCB0aGlzLmRldGVjdEZvY3VzQ2hhbmdlLCB0cnVlKVxuICAgICAgICAgICAgOiB3aW5kb3cuYXR0YWNoRXZlbnQoJ29uYmx1cicsIHRoaXMuZGV0ZWN0Rm9jdXNDaGFuZ2UpO1xuICAgICAgICAvKiBPbiBtb2JpbGUsIGV2ZW50cyBsaXN0ZW5lcnMgYXJlIGhhbmRsZWQgYnkgYSByZXNwZWN0aXZlIGNvbXBvbmVudCAqL1xuICAgICAgICB3aW5kb3cuYWRkRXZlbnRMaXN0ZW5lcignbWVzc2FnZScsIHRoaXMub25XaW5kb3dNZXNzYWdlKTtcbiAgICB9XG4gICAgY29uZmlndXJlRm9yRGVza3RvcCgpIHtcbiAgICAgICAgdGhpcy5kZXNrdG9wTWFuYWdlci5yZWdpc3RlclVwZGF0ZU9ic2VydmVyKChjb21wb25lbnQpID0+IHtcbiAgICAgICAgICAgIC8qIFJlbG9hZCB0aGVtZSBpZiBhY3RpdmUgKi9cbiAgICAgICAgICAgIGlmIChjb21wb25lbnQuYWN0aXZlICYmIGNvbXBvbmVudC5pc1RoZW1lKCkpIHtcbiAgICAgICAgICAgICAgICB0aGlzLnBvc3RBY3RpdmVUaGVtZXNUb0FsbENvbXBvbmVudHMoKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSk7XG4gICAgfVxuICAgIHBvc3RBY3RpdmVUaGVtZXNUb0FsbENvbXBvbmVudHMoKSB7XG4gICAgICAgIGZvciAoY29uc3QgY29tcG9uZW50IG9mIHRoaXMuY29tcG9uZW50cykge1xuICAgICAgICAgICAgY29uc3QgY29tcG9uZW50U3RhdGUgPSB0aGlzLmZpbmRPckNyZWF0ZURhdGFGb3JDb21wb25lbnQoY29tcG9uZW50KTtcbiAgICAgICAgICAgIC8qIFNraXAgb3ZlciBjb21wb25lbnRzIHRoYXQgYXJlIHRoZW1lcyB0aGVtc2VsdmVzLFxuICAgICAgICAgICAgICBvciBjb21wb25lbnRzIHRoYXQgYXJlIG5vdCBhY3RpdmUsIG9yIGNvbXBvbmVudHMgdGhhdCBkb24ndCBoYXZlIGEgd2luZG93ICovXG4gICAgICAgICAgICBpZiAoY29tcG9uZW50LmlzVGhlbWUoKSB8fCAhY29tcG9uZW50LmFjdGl2ZSB8fCAhY29tcG9uZW50U3RhdGUud2luZG93KSB7XG4gICAgICAgICAgICAgICAgY29udGludWU7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICB0aGlzLnBvc3RBY3RpdmVUaGVtZXNUb0NvbXBvbmVudChjb21wb25lbnQpO1xuICAgICAgICB9XG4gICAgfVxuICAgIGdldEFjdGl2ZVRoZW1lcygpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuY29tcG9uZW50c0ZvckFyZWEoQ29tcG9uZW50QXJlYS5UaGVtZXMpLmZpbHRlcigodGhlbWUpID0+IHtcbiAgICAgICAgICAgIHJldHVybiB0aGVtZS5hY3RpdmU7XG4gICAgICAgIH0pO1xuICAgIH1cbiAgICB1cmxzRm9yQWN0aXZlVGhlbWVzKCkge1xuICAgICAgICBjb25zdCB0aGVtZXMgPSB0aGlzLmdldEFjdGl2ZVRoZW1lcygpO1xuICAgICAgICBjb25zdCB1cmxzID0gW107XG4gICAgICAgIGZvciAoY29uc3QgdGhlbWUgb2YgdGhlbWVzKSB7XG4gICAgICAgICAgICBjb25zdCB1cmwgPSB0aGlzLnVybEZvckNvbXBvbmVudCh0aGVtZSk7XG4gICAgICAgICAgICBpZiAodXJsKSB7XG4gICAgICAgICAgICAgICAgdXJscy5wdXNoKHVybCk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHVybHM7XG4gICAgfVxuICAgIHBvc3RBY3RpdmVUaGVtZXNUb0NvbXBvbmVudChjb21wb25lbnQpIHtcbiAgICAgICAgY29uc3QgdXJscyA9IHRoaXMudXJsc0ZvckFjdGl2ZVRoZW1lcygpO1xuICAgICAgICBjb25zdCBkYXRhID0ge1xuICAgICAgICAgICAgdGhlbWVzOiB1cmxzXG4gICAgICAgIH07XG4gICAgICAgIGNvbnN0IG1lc3NhZ2UgPSB7XG4gICAgICAgICAgICBhY3Rpb246IENvbXBvbmVudEFjdGlvbi5BY3RpdmF0ZVRoZW1lcyxcbiAgICAgICAgICAgIGRhdGE6IGRhdGFcbiAgICAgICAgfTtcbiAgICAgICAgdGhpcy5zZW5kTWVzc2FnZVRvQ29tcG9uZW50KGNvbXBvbmVudCwgbWVzc2FnZSk7XG4gICAgfVxuICAgIGNvbnRleHRJdGVtRGlkQ2hhbmdlSW5BcmVhKGFyZWEpIHtcbiAgICAgICAgZm9yIChjb25zdCBoYW5kbGVyIG9mIHRoaXMuaGFuZGxlcnMpIHtcbiAgICAgICAgICAgIGlmICghaGFuZGxlci5hcmVhcy5pbmNsdWRlcyhhcmVhKSAmJlxuICAgICAgICAgICAgICAgICFoYW5kbGVyLmFyZWFzLmluY2x1ZGVzKENvbXBvbmVudEFyZWEuQW55KSkge1xuICAgICAgICAgICAgICAgIGNvbnRpbnVlO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgY29uc3Qgb2JzZXJ2ZXJzID0gdGhpcy5jb250ZXh0U3RyZWFtT2JzZXJ2ZXJzLmZpbHRlcigob2JzZXJ2ZXIpID0+IHtcbiAgICAgICAgICAgICAgICByZXR1cm4gb2JzZXJ2ZXIuYXJlYSA9PT0gYXJlYTtcbiAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgZm9yIChjb25zdCBvYnNlcnZlciBvZiBvYnNlcnZlcnMpIHtcbiAgICAgICAgICAgICAgICBpZiAoaGFuZGxlci5jb250ZXh0UmVxdWVzdEhhbmRsZXIpIHtcbiAgICAgICAgICAgICAgICAgICAgY29uc3QgaXRlbUluQ29udGV4dCA9IGhhbmRsZXIuY29udGV4dFJlcXVlc3RIYW5kbGVyKG9ic2VydmVyLmNvbXBvbmVudFV1aWQpO1xuICAgICAgICAgICAgICAgICAgICBpZiAoaXRlbUluQ29udGV4dCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5zZW5kQ29udGV4dEl0ZW1JblJlcGx5KG9ic2VydmVyLmNvbXBvbmVudFV1aWQsIGl0ZW1JbkNvbnRleHQsIG9ic2VydmVyLm9yaWdpbmFsTWVzc2FnZSk7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICB9XG4gICAgaXNDb21wb25lbnRIaWRkZW4oY29tcG9uZW50KSB7XG4gICAgICAgIGNvbnN0IGNvbXBvbmVudFN0YXRlID0gdGhpcy5maW5kT3JDcmVhdGVEYXRhRm9yQ29tcG9uZW50KGNvbXBvbmVudCk7XG4gICAgICAgIHJldHVybiBjb21wb25lbnRTdGF0ZS5oaWRkZW47XG4gICAgfVxuICAgIHNldENvbXBvbmVudEhpZGRlbihjb21wb25lbnQsIGhpZGRlbikge1xuICAgICAgICAvKiBBIGhpZGRlbiBjb21wb25lbnQgd2lsbCBub3QgcmVjZWl2ZSBtZXNzYWdlcy4gSG93ZXZlciwgd2hlbiBhIGNvbXBvbmVudCBpcyB1bmhpZGRlbixcbiAgICAgICAgICogd2UgbmVlZCB0byBzZW5kIGl0IGFueSBpdGVtcyBpdCBtYXkgaGF2ZSByZWdpc3RlcmVkIHN0cmVhbWluZyBmb3IuICovXG4gICAgICAgIGNvbnN0IGNvbXBvbmVudFN0YXRlID0gdGhpcy5maW5kT3JDcmVhdGVEYXRhRm9yQ29tcG9uZW50KGNvbXBvbmVudCk7XG4gICAgICAgIGlmIChoaWRkZW4pIHtcbiAgICAgICAgICAgIGNvbXBvbmVudFN0YXRlLmhpZGRlbiA9IHRydWU7XG4gICAgICAgIH1cbiAgICAgICAgZWxzZSBpZiAoY29tcG9uZW50U3RhdGUuaGlkZGVuKSB7XG4gICAgICAgICAgICBjb21wb25lbnRTdGF0ZS5oaWRkZW4gPSBmYWxzZTtcbiAgICAgICAgICAgIGNvbnN0IGNvbnRleHRPYnNlcnZlciA9IGZpbmQodGhpcy5jb250ZXh0U3RyZWFtT2JzZXJ2ZXJzLCB7IGlkZW50aWZpZXI6IGNvbXBvbmVudC51dWlkIH0pO1xuICAgICAgICAgICAgaWYgKGNvbnRleHRPYnNlcnZlcikge1xuICAgICAgICAgICAgICAgIHRoaXMuaGFuZGxlU3RyZWFtQ29udGV4dEl0ZW1NZXNzYWdlKGNvbXBvbmVudCwgY29udGV4dE9ic2VydmVyLm9yaWdpbmFsTWVzc2FnZSk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBjb25zdCBzdHJlYW1PYnNlcnZlciA9IGZpbmQodGhpcy5zdHJlYW1PYnNlcnZlcnMsIHsgaWRlbnRpZmllcjogY29tcG9uZW50LnV1aWQgfSk7XG4gICAgICAgICAgICBpZiAoc3RyZWFtT2JzZXJ2ZXIpIHtcbiAgICAgICAgICAgICAgICB0aGlzLmhhbmRsZVN0cmVhbUl0ZW1zTWVzc2FnZShjb21wb25lbnQsIHN0cmVhbU9ic2VydmVyLm9yaWdpbmFsTWVzc2FnZSk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICB9XG4gICAganNvbkZvckl0ZW0oaXRlbSwgY29tcG9uZW50LCBzb3VyY2UpIHtcbiAgICAgICAgY29uc3QgaXNNZXRhZGF0VXBkYXRlID0gc291cmNlID09PSBQYXlsb2FkU291cmNlLlJlbW90ZVNhdmVkIHx8XG4gICAgICAgICAgICBzb3VyY2UgPT09IFBheWxvYWRTb3VyY2UuTG9jYWxTYXZlZDtcbiAgICAgICAgLyoqIFRoZSBkYXRhIGFsbCBjb21wb25lbnRzIHN0b3JlIGludG8gKi9cbiAgICAgICAgY29uc3QgY29tcG9uZW50RGF0YSA9IGl0ZW0uZ2V0RG9tYWluRGF0YShDb21wb25lbnREYXRhRG9tYWluKSB8fCB7fTtcbiAgICAgICAgLyoqIFRoZSBkYXRhIGZvciB0aGlzIHBhcnRpY3VsYXIgY29tcG9uZW50ICovXG4gICAgICAgIGNvbnN0IGNsaWVudERhdGEgPSBjb21wb25lbnREYXRhW2NvbXBvbmVudC5nZXRDbGllbnREYXRhS2V5KCldIHx8IHt9O1xuICAgICAgICBjb25zdCBwYXJhbXMgPSB7XG4gICAgICAgICAgICB1dWlkOiBpdGVtLnV1aWQsXG4gICAgICAgICAgICBjb250ZW50X3R5cGU6IGl0ZW0uY29udGVudF90eXBlLFxuICAgICAgICAgICAgY3JlYXRlZF9hdDogaXRlbS5jcmVhdGVkX2F0LFxuICAgICAgICAgICAgdXBkYXRlZF9hdDogaXRlbS51cGRhdGVkX2F0LFxuICAgICAgICAgICAgZGVsZXRlZDogaXRlbS5kZWxldGVkLFxuICAgICAgICAgICAgaXNNZXRhZGF0YVVwZGF0ZTogaXNNZXRhZGF0VXBkYXRlLFxuICAgICAgICAgICAgY29udGVudDogaXRlbS5jb250ZW50LFxuICAgICAgICAgICAgY2xpZW50RGF0YTogY2xpZW50RGF0YVxuICAgICAgICB9O1xuICAgICAgICB0aGlzLnJlbW92ZVByaXZhdGVQcm9wZXJ0aWVzRnJvbVJlc3BvbnNlSXRlbXMoW3BhcmFtc10sIGNvbXBvbmVudCk7XG4gICAgICAgIHJldHVybiBwYXJhbXM7XG4gICAgfVxuICAgIHNlbmRJdGVtc0luUmVwbHkoY29tcG9uZW50VXVpZCwgaXRlbXMsIG1lc3NhZ2UsIHNvdXJjZSkge1xuICAgICAgICBjb25zdCBjb21wb25lbnQgPSB0aGlzLml0ZW1NYW5hZ2VyLmZpbmRJdGVtKGNvbXBvbmVudFV1aWQpO1xuICAgICAgICB0aGlzLmxvZygnQ29tcG9uZW50IG1hbmFnZXIgc2VuZCBpdGVtcyBpbiByZXBseScsIGNvbXBvbmVudCwgaXRlbXMsIG1lc3NhZ2UpO1xuICAgICAgICBjb25zdCByZXNwb25zZURhdGEgPSB7fTtcbiAgICAgICAgY29uc3QgbWFwcGVkID0gaXRlbXMubWFwKChpdGVtKSA9PiB7XG4gICAgICAgICAgICByZXR1cm4gdGhpcy5qc29uRm9ySXRlbShpdGVtLCBjb21wb25lbnQsIHNvdXJjZSk7XG4gICAgICAgIH0pO1xuICAgICAgICByZXNwb25zZURhdGEuaXRlbXMgPSBtYXBwZWQ7XG4gICAgICAgIHRoaXMucmVwbHlUb01lc3NhZ2UoY29tcG9uZW50LCBtZXNzYWdlLCByZXNwb25zZURhdGEpO1xuICAgIH1cbiAgICBzZW5kQ29udGV4dEl0ZW1JblJlcGx5KGNvbXBvbmVudFV1aWQsIGl0ZW0sIG9yaWdpbmFsTWVzc2FnZSwgc291cmNlKSB7XG4gICAgICAgIGNvbnN0IGNvbXBvbmVudCA9IHRoaXMuaXRlbU1hbmFnZXIuZmluZEl0ZW0oY29tcG9uZW50VXVpZCk7XG4gICAgICAgIHRoaXMubG9nKCdDb21wb25lbnQgbWFuYWdlciBzZW5kIGNvbnRleHQgaXRlbSBpbiByZXBseScsIGNvbXBvbmVudCwgaXRlbSwgb3JpZ2luYWxNZXNzYWdlKTtcbiAgICAgICAgY29uc3QgcmVzcG9uc2UgPSB7XG4gICAgICAgICAgICBpdGVtOiB0aGlzLmpzb25Gb3JJdGVtKGl0ZW0sIGNvbXBvbmVudCwgc291cmNlKVxuICAgICAgICB9O1xuICAgICAgICB0aGlzLnJlcGx5VG9NZXNzYWdlKGNvbXBvbmVudCwgb3JpZ2luYWxNZXNzYWdlLCByZXNwb25zZSk7XG4gICAgfVxuICAgIHJlcGx5VG9NZXNzYWdlKGNvbXBvbmVudCwgb3JpZ2luYWxNZXNzYWdlLCByZXBseURhdGEpIHtcbiAgICAgICAgY29uc3QgcmVwbHkgPSB7XG4gICAgICAgICAgICBhY3Rpb246IENvbXBvbmVudEFjdGlvbi5SZXBseSxcbiAgICAgICAgICAgIG9yaWdpbmFsOiBvcmlnaW5hbE1lc3NhZ2UsXG4gICAgICAgICAgICBkYXRhOiByZXBseURhdGFcbiAgICAgICAgfTtcbiAgICAgICAgdGhpcy5zZW5kTWVzc2FnZVRvQ29tcG9uZW50KGNvbXBvbmVudCwgcmVwbHkpO1xuICAgIH1cbiAgICBzZW5kTWVzc2FnZVRvQ29tcG9uZW50KGNvbXBvbmVudCwgbWVzc2FnZSkge1xuICAgICAgICBjb25zdCBwZXJtaXNzaWJsZUFjdGlvbnNXaGlsZUhpZGRlbiA9IFtcbiAgICAgICAgICAgIENvbXBvbmVudEFjdGlvbi5Db21wb25lbnRSZWdpc3RlcmVkLFxuICAgICAgICAgICAgQ29tcG9uZW50QWN0aW9uLkFjdGl2YXRlVGhlbWVzXG4gICAgICAgIF07XG4gICAgICAgIGNvbnN0IGNvbXBvbmVudFN0YXRlID0gdGhpcy5maW5kT3JDcmVhdGVEYXRhRm9yQ29tcG9uZW50KGNvbXBvbmVudCk7XG4gICAgICAgIGlmIChjb21wb25lbnRTdGF0ZS5oaWRkZW4gJiYgIXBlcm1pc3NpYmxlQWN0aW9uc1doaWxlSGlkZGVuLmluY2x1ZGVzKG1lc3NhZ2UuYWN0aW9uKSkge1xuICAgICAgICAgICAgdGhpcy5sb2coJ0NvbXBvbmVudCBkaXNhYmxlZCBmb3IgY3VycmVudCBpdGVtLCBpZ25vcmluZyBtZXNzYWdlcy4nLCBjb21wb25lbnQubmFtZSk7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cbiAgICAgICAgdGhpcy5sb2coJ0NvbXBvbmVudCBtYW5hZ2VyIHNlbmQgbWVzc2FnZSB0byBjb21wb25lbnQnLCBjb21wb25lbnQsIG1lc3NhZ2UpO1xuICAgICAgICBsZXQgb3JpZ2luID0gdGhpcy51cmxGb3JDb21wb25lbnQoY29tcG9uZW50KTtcbiAgICAgICAgaWYgKCFvcmlnaW4gfHwgIWNvbXBvbmVudFN0YXRlLndpbmRvdykge1xuICAgICAgICAgICAgdGhpcy5hbGVydFNlcnZpY2UuYWxlcnQoYFN0YW5kYXJkIE5vdGVzIGlzIHRyeWluZyB0byBjb21tdW5pY2F0ZSB3aXRoICR7Y29tcG9uZW50Lm5hbWV9LCBcbiAgICAgICAgYnV0IGFuIGVycm9yIGlzIG9jY3VycmluZy4gUGxlYXNlIHJlc3RhcnQgdGhpcyBleHRlbnNpb24gYW5kIHRyeSBhZ2Fpbi5gKTtcbiAgICAgICAgfVxuICAgICAgICBpZiAoIW9yaWdpbi5zdGFydHNXaXRoKCdodHRwJykgJiYgIW9yaWdpbi5zdGFydHNXaXRoKCdmaWxlJykpIHtcbiAgICAgICAgICAgIC8qIE5hdGl2ZSBleHRlbnNpb24gcnVubmluZyBpbiB3ZWIsIHByZWZpeCBjdXJyZW50IGhvc3QgKi9cbiAgICAgICAgICAgIG9yaWdpbiA9IHdpbmRvdy5sb2NhdGlvbi5ocmVmICsgb3JpZ2luO1xuICAgICAgICB9XG4gICAgICAgIC8qIE1vYmlsZSBtZXNzYWdpbmcgcmVxdWlyZXMganNvbiAqL1xuICAgICAgICBjb21wb25lbnRTdGF0ZS53aW5kb3cucG9zdE1lc3NhZ2UodGhpcy5pc01vYmlsZSA/IEpTT04uc3RyaW5naWZ5KG1lc3NhZ2UpIDogbWVzc2FnZSwgb3JpZ2luKTtcbiAgICB9XG4gICAgdXJsRm9yQ29tcG9uZW50KGNvbXBvbmVudCkge1xuICAgICAgICAvKiBvZmZsaW5lT25seSBpcyBhdmFpbGFibGUgb25seSBvbiBkZXNrdG9wLCBhbmQgbm90IG9uIHdlYiBvciBtb2JpbGUuICovXG4gICAgICAgIGlmIChjb21wb25lbnQub2ZmbGluZU9ubHkgJiYgIXRoaXMuaXNEZXNrdG9wKSB7XG4gICAgICAgICAgICByZXR1cm4gbnVsbDtcbiAgICAgICAgfVxuICAgICAgICBpZiAoY29tcG9uZW50Lm9mZmxpbmVPbmx5IHx8ICh0aGlzLmlzRGVza3RvcCAmJiBjb21wb25lbnQubG9jYWxfdXJsKSkge1xuICAgICAgICAgICAgcmV0dXJuIGNvbXBvbmVudC5sb2NhbF91cmxcbiAgICAgICAgICAgICAgICAmJiBjb21wb25lbnQubG9jYWxfdXJsLnJlcGxhY2UoREVTS1RPUF9VUkxfUFJFRklYLCB0aGlzLmRlc2t0b3BNYW5hZ2VyLmdldEV4dFNlcnZlckhvc3QoKSk7XG4gICAgICAgIH1cbiAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICBsZXQgdXJsID0gY29tcG9uZW50Lmhvc3RlZF91cmwgfHwgY29tcG9uZW50LmxlZ2FjeV91cmw7XG4gICAgICAgICAgICBpZiAodGhpcy5pc01vYmlsZSkge1xuICAgICAgICAgICAgICAgIGNvbnN0IGxvY2FsUmVwbGFjZW1lbnQgPSB0aGlzLnBsYXRmb3JtID09PSBQbGF0Zm9ybS5Jb3MgPyBMT0NBTF9IT1NUIDogQU5EUk9JRF9MT0NBTF9IT1NUO1xuICAgICAgICAgICAgICAgIHVybCA9IHVybC5yZXBsYWNlKExPQ0FMX0hPU1QsIGxvY2FsUmVwbGFjZW1lbnQpLnJlcGxhY2UoQ1VTVE9NX0xPQ0FMX0hPU1QsIGxvY2FsUmVwbGFjZW1lbnQpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgcmV0dXJuIHVybDtcbiAgICAgICAgfVxuICAgIH1cbiAgICBjb21wb25lbnRGb3JVcmwodXJsKSB7XG4gICAgICAgIHJldHVybiB0aGlzLmNvbXBvbmVudHMuZmlsdGVyKChjb21wb25lbnQpID0+IHtcbiAgICAgICAgICAgIHJldHVybiBjb21wb25lbnQuaG9zdGVkX3VybCA9PT0gdXJsIHx8IGNvbXBvbmVudC5sZWdhY3lfdXJsID09PSB1cmw7XG4gICAgICAgIH0pWzBdO1xuICAgIH1cbiAgICBzZXNzaW9uS2V5Rm9yQ29tcG9uZW50KGNvbXBvbmVudCkge1xuICAgICAgICBjb25zdCBjb21wb25lbnRTdGF0ZSA9IHRoaXMuZmluZE9yQ3JlYXRlRGF0YUZvckNvbXBvbmVudChjb21wb25lbnQpO1xuICAgICAgICByZXR1cm4gY29tcG9uZW50U3RhdGUuc2Vzc2lvbktleTtcbiAgICB9XG4gICAgY29tcG9uZW50Rm9yU2Vzc2lvbktleShrZXkpIHtcbiAgICAgICAgbGV0IGNvbXBvbmVudDtcbiAgICAgICAgZm9yIChjb25zdCB1dWlkIG9mIE9iamVjdC5rZXlzKHRoaXMuY29tcG9uZW50U3RhdGUpKSB7XG4gICAgICAgICAgICBjb25zdCBkYXRhID0gdGhpcy5jb21wb25lbnRTdGF0ZVt1dWlkXTtcbiAgICAgICAgICAgIGlmIChkYXRhPy5zZXNzaW9uS2V5ID09PSBrZXkpIHtcbiAgICAgICAgICAgICAgICBjb21wb25lbnQgPSB0aGlzLmNvbXBvbmVudHMuZmluZCgoYykgPT4gYy51dWlkID09PSB1dWlkKTtcbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICBpZiAoIWNvbXBvbmVudCkge1xuICAgICAgICAgICAgZm9yIChjb25zdCBoYW5kbGVyIG9mIHRoaXMuaGFuZGxlcnMpIHtcbiAgICAgICAgICAgICAgICBpZiAoaGFuZGxlci5jb21wb25lbnRGb3JTZXNzaW9uS2V5SGFuZGxlcikge1xuICAgICAgICAgICAgICAgICAgICBjb21wb25lbnQgPSBoYW5kbGVyLmNvbXBvbmVudEZvclNlc3Npb25LZXlIYW5kbGVyKGtleSk7XG4gICAgICAgICAgICAgICAgICAgIGlmIChjb21wb25lbnQpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIHJldHVybiBjb21wb25lbnQ7XG4gICAgfVxuICAgIGhhbmRsZU1lc3NhZ2UoY29tcG9uZW50LCBtZXNzYWdlKSB7XG4gICAgICAgIGlmICghY29tcG9uZW50KSB7XG4gICAgICAgICAgICB0aGlzLmxvZygnQ29tcG9uZW50IG5vdCBkZWZpbmVkIGZvciBtZXNzYWdlLCByZXR1cm5pbmcnLCBtZXNzYWdlKTtcbiAgICAgICAgICAgIHRoaXMuYWxlcnRTZXJ2aWNlLmFsZXJ0KCdBbiBleHRlbnNpb24gaXMgdHJ5aW5nIHRvIGNvbW11bmljYXRlIHdpdGggU3RhbmRhcmQgTm90ZXMsJyArXG4gICAgICAgICAgICAgICAgJ2J1dCB0aGVyZSBpcyBhbiBlcnJvciBlc3RhYmxpc2hpbmcgYSBicmlkZ2UuIFBsZWFzZSByZXN0YXJ0IHRoZSBhcHAgYW5kIHRyeSBhZ2Fpbi4nKTtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuICAgICAgICBjb25zdCByZWFkd3JpdGVBY3Rpb25zID0gW1xuICAgICAgICAgICAgQ29tcG9uZW50QWN0aW9uLlNhdmVJdGVtcyxcbiAgICAgICAgICAgIENvbXBvbmVudEFjdGlvbi5Bc3NvY2lhdGVJdGVtLFxuICAgICAgICAgICAgQ29tcG9uZW50QWN0aW9uLkRlYXNzb2NpYXRlSXRlbSxcbiAgICAgICAgICAgIENvbXBvbmVudEFjdGlvbi5DcmVhdGVJdGVtLFxuICAgICAgICAgICAgQ29tcG9uZW50QWN0aW9uLkNyZWF0ZUl0ZW1zLFxuICAgICAgICAgICAgQ29tcG9uZW50QWN0aW9uLkRlbGV0ZUl0ZW1zLFxuICAgICAgICAgICAgQ29tcG9uZW50QWN0aW9uLlNldENvbXBvbmVudERhdGFcbiAgICAgICAgXTtcbiAgICAgICAgY29uc3QgcmVhZG9ubHlTdGF0ZSA9IHRoaXMuZ2V0UmVhZG9ubHlTdGF0ZUZvckNvbXBvbmVudChjb21wb25lbnQpO1xuICAgICAgICBpZiAocmVhZG9ubHlTdGF0ZS5yZWFkb25seSAmJiByZWFkd3JpdGVBY3Rpb25zLmluY2x1ZGVzKG1lc3NhZ2UuYWN0aW9uKSkge1xuICAgICAgICAgICAgdGhpcy5hbGVydFNlcnZpY2UuYWxlcnQoYFRoZSBleHRlbnNpb24gJHtjb21wb25lbnQubmFtZX0gaXMgdHJ5aW5nIHRvIHNhdmUsIGJ1dCBpdCBpcyBpbiBhIGxvY2tlZCBzdGF0ZSBhbmQgY2Fubm90IGFjY2VwdCBjaGFuZ2VzLmApO1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG4gICAgICAgIGlmIChtZXNzYWdlLmFjdGlvbiA9PT0gQ29tcG9uZW50QWN0aW9uLlN0cmVhbUl0ZW1zKSB7XG4gICAgICAgICAgICB0aGlzLmhhbmRsZVN0cmVhbUl0ZW1zTWVzc2FnZShjb21wb25lbnQsIG1lc3NhZ2UpO1xuICAgICAgICB9XG4gICAgICAgIGVsc2UgaWYgKG1lc3NhZ2UuYWN0aW9uID09PSBDb21wb25lbnRBY3Rpb24uU3RyZWFtQ29udGV4dEl0ZW0pIHtcbiAgICAgICAgICAgIHRoaXMuaGFuZGxlU3RyZWFtQ29udGV4dEl0ZW1NZXNzYWdlKGNvbXBvbmVudCwgbWVzc2FnZSk7XG4gICAgICAgIH1cbiAgICAgICAgZWxzZSBpZiAobWVzc2FnZS5hY3Rpb24gPT09IENvbXBvbmVudEFjdGlvbi5TZXRDb21wb25lbnREYXRhKSB7XG4gICAgICAgICAgICB0aGlzLmhhbmRsZVNldENvbXBvbmVudERhdGFNZXNzYWdlKGNvbXBvbmVudCwgbWVzc2FnZSk7XG4gICAgICAgIH1cbiAgICAgICAgZWxzZSBpZiAobWVzc2FnZS5hY3Rpb24gPT09IENvbXBvbmVudEFjdGlvbi5EZWxldGVJdGVtcykge1xuICAgICAgICAgICAgdGhpcy5oYW5kbGVEZWxldGVJdGVtc01lc3NhZ2UoY29tcG9uZW50LCBtZXNzYWdlKTtcbiAgICAgICAgfVxuICAgICAgICBlbHNlIGlmIChtZXNzYWdlLmFjdGlvbiA9PT0gQ29tcG9uZW50QWN0aW9uLkNyZWF0ZUl0ZW1zIHx8XG4gICAgICAgICAgICBtZXNzYWdlLmFjdGlvbiA9PT0gQ29tcG9uZW50QWN0aW9uLkNyZWF0ZUl0ZW0pIHtcbiAgICAgICAgICAgIHRoaXMuaGFuZGxlQ3JlYXRlSXRlbXNNZXNzYWdlKGNvbXBvbmVudCwgbWVzc2FnZSk7XG4gICAgICAgIH1cbiAgICAgICAgZWxzZSBpZiAobWVzc2FnZS5hY3Rpb24gPT09IENvbXBvbmVudEFjdGlvbi5TYXZlSXRlbXMpIHtcbiAgICAgICAgICAgIHRoaXMuaGFuZGxlU2F2ZUl0ZW1zTWVzc2FnZShjb21wb25lbnQsIG1lc3NhZ2UpO1xuICAgICAgICB9XG4gICAgICAgIGVsc2UgaWYgKG1lc3NhZ2UuYWN0aW9uID09PSBDb21wb25lbnRBY3Rpb24uVG9nZ2xlQWN0aXZhdGVDb21wb25lbnQpIHtcbiAgICAgICAgICAgIGNvbnN0IGNvbXBvbmVudFRvVG9nZ2xlID0gdGhpcy5pdGVtTWFuYWdlci5maW5kSXRlbShtZXNzYWdlLmRhdGEudXVpZCk7XG4gICAgICAgICAgICB0aGlzLmhhbmRsZVRvZ2dsZUNvbXBvbmVudE1lc3NhZ2UoY29tcG9uZW50VG9Ub2dnbGUsIG1lc3NhZ2UpO1xuICAgICAgICB9XG4gICAgICAgIGVsc2UgaWYgKG1lc3NhZ2UuYWN0aW9uID09PSBDb21wb25lbnRBY3Rpb24uUmVxdWVzdFBlcm1pc3Npb25zKSB7XG4gICAgICAgICAgICB0aGlzLmhhbmRsZVJlcXVlc3RQZXJtaXNzaW9uc01lc3NhZ2UoY29tcG9uZW50LCBtZXNzYWdlKTtcbiAgICAgICAgfVxuICAgICAgICBlbHNlIGlmIChtZXNzYWdlLmFjdGlvbiA9PT0gQ29tcG9uZW50QWN0aW9uLkluc3RhbGxMb2NhbENvbXBvbmVudCkge1xuICAgICAgICAgICAgdGhpcy5oYW5kbGVJbnN0YWxsTG9jYWxDb21wb25lbnRNZXNzYWdlKGNvbXBvbmVudCwgbWVzc2FnZSk7XG4gICAgICAgIH1cbiAgICAgICAgZWxzZSBpZiAobWVzc2FnZS5hY3Rpb24gPT09IENvbXBvbmVudEFjdGlvbi5EdXBsaWNhdGVJdGVtKSB7XG4gICAgICAgICAgICB0aGlzLmhhbmRsZUR1cGxpY2F0ZUl0ZW1NZXNzYWdlKGNvbXBvbmVudCwgbWVzc2FnZSk7XG4gICAgICAgIH1cbiAgICAgICAgZm9yIChjb25zdCBoYW5kbGVyIG9mIHRoaXMuaGFuZGxlcnMpIHtcbiAgICAgICAgICAgIGlmIChoYW5kbGVyLmFjdGlvbkhhbmRsZXIgJiYgKGhhbmRsZXIuYXJlYXMuaW5jbHVkZXMoY29tcG9uZW50LmFyZWEpIHx8XG4gICAgICAgICAgICAgICAgaGFuZGxlci5hcmVhcy5pbmNsdWRlcyhDb21wb25lbnRBcmVhLkFueSkpKSB7XG4gICAgICAgICAgICAgICAgdGhpcy50aW1lb3V0KCgpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgaGFuZGxlci5hY3Rpb25IYW5kbGVyKGNvbXBvbmVudCwgbWVzc2FnZS5hY3Rpb24sIG1lc3NhZ2UuZGF0YSk7XG4gICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICB9XG4gICAgcmVtb3ZlUHJpdmF0ZVByb3BlcnRpZXNGcm9tUmVzcG9uc2VJdGVtcyhyZXNwb25zZUl0ZW1zLCBjb21wb25lbnQsIGluY2x1ZGVVcmxzID0gZmFsc2UpIHtcbiAgICAgICAgaWYgKGNvbXBvbmVudCkge1xuICAgICAgICAgICAgLyogU3lzdGVtIGV4dGVuc2lvbnMgY2FuIGJ5cGFzcyB0aGlzIHN0ZXAgKi9cbiAgICAgICAgICAgIGlmICh0aGlzLmlzTmF0aXZlRXh0ZW5zaW9uKGNvbXBvbmVudCkpIHtcbiAgICAgICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgLyogRG9uJ3QgYWxsb3cgY29tcG9uZW50IHRvIG92ZXJ3cml0ZSB0aGVzZSBwcm9wZXJ0aWVzLiAqL1xuICAgICAgICBsZXQgcHJpdmF0ZUNvbnRlbnRQcm9wZXJ0aWVzID0gWydhdXRvdXBkYXRlRGlzYWJsZWQnLCAncGVybWlzc2lvbnMnLCAnYWN0aXZlJ107XG4gICAgICAgIGlmIChpbmNsdWRlVXJscykge1xuICAgICAgICAgICAgcHJpdmF0ZUNvbnRlbnRQcm9wZXJ0aWVzID0gcHJpdmF0ZUNvbnRlbnRQcm9wZXJ0aWVzLmNvbmNhdChbXG4gICAgICAgICAgICAgICAgJ3VybCcsICdob3N0ZWRfdXJsJywgJ2xvY2FsX3VybCdcbiAgICAgICAgICAgIF0pO1xuICAgICAgICB9XG4gICAgICAgIGZvciAoY29uc3QgcmVzcG9uc2VJdGVtIG9mIHJlc3BvbnNlSXRlbXMpIHtcbiAgICAgICAgICAgIGZvciAoY29uc3QgcHJvcCBvZiBwcml2YXRlQ29udGVudFByb3BlcnRpZXMpIHtcbiAgICAgICAgICAgICAgICBkZWxldGUgcmVzcG9uc2VJdGVtLmNvbnRlbnRbcHJvcF07XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICB9XG4gICAgaGFuZGxlU3RyZWFtSXRlbXNNZXNzYWdlKGNvbXBvbmVudCwgbWVzc2FnZSkge1xuICAgICAgICBjb25zdCByZXF1aXJlZFBlcm1pc3Npb25zID0gW1xuICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgIG5hbWU6IENvbXBvbmVudEFjdGlvbi5TdHJlYW1JdGVtcyxcbiAgICAgICAgICAgICAgICBjb250ZW50X3R5cGVzOiBtZXNzYWdlLmRhdGEuY29udGVudF90eXBlcy5zb3J0KClcbiAgICAgICAgICAgIH1cbiAgICAgICAgXTtcbiAgICAgICAgdGhpcy5ydW5XaXRoUGVybWlzc2lvbnMoY29tcG9uZW50LnV1aWQsIHJlcXVpcmVkUGVybWlzc2lvbnMsICgpID0+IHtcbiAgICAgICAgICAgIGlmICghZmluZCh0aGlzLnN0cmVhbU9ic2VydmVycywgeyBpZGVudGlmaWVyOiBjb21wb25lbnQudXVpZCB9KSkge1xuICAgICAgICAgICAgICAgIC8qIEZvciBwdXNoaW5nIGxhc3RlciBhcyBjaGFuZ2VzIGNvbWUgaW4gKi9cbiAgICAgICAgICAgICAgICB0aGlzLnN0cmVhbU9ic2VydmVycy5wdXNoKHtcbiAgICAgICAgICAgICAgICAgICAgaWRlbnRpZmllcjogY29tcG9uZW50LnV1aWQsXG4gICAgICAgICAgICAgICAgICAgIGNvbXBvbmVudFV1aWQ6IGNvbXBvbmVudC51dWlkLFxuICAgICAgICAgICAgICAgICAgICBhcmVhOiBjb21wb25lbnQuYXJlYSxcbiAgICAgICAgICAgICAgICAgICAgb3JpZ2luYWxNZXNzYWdlOiBtZXNzYWdlLFxuICAgICAgICAgICAgICAgICAgICBjb250ZW50VHlwZXM6IG1lc3NhZ2UuZGF0YS5jb250ZW50X3R5cGVzXG4gICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICAvKiBQdXNoIGltbWVkaWF0ZWx5IG5vdyAqL1xuICAgICAgICAgICAgY29uc3QgaXRlbXMgPSBbXTtcbiAgICAgICAgICAgIGZvciAoY29uc3QgY29udGVudFR5cGUgb2YgbWVzc2FnZS5kYXRhLmNvbnRlbnRfdHlwZXMpIHtcbiAgICAgICAgICAgICAgICBleHRlbmRBcnJheShpdGVtcywgdGhpcy5pdGVtTWFuYWdlci5ub25FcnJvcmVkSXRlbXNGb3JDb250ZW50VHlwZShjb250ZW50VHlwZSkpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgdGhpcy5zZW5kSXRlbXNJblJlcGx5KGNvbXBvbmVudC51dWlkLCBpdGVtcywgbWVzc2FnZSk7XG4gICAgICAgIH0pO1xuICAgIH1cbiAgICBoYW5kbGVTdHJlYW1Db250ZXh0SXRlbU1lc3NhZ2UoY29tcG9uZW50LCBtZXNzYWdlKSB7XG4gICAgICAgIGNvbnN0IHJlcXVpcmVkUGVybWlzc2lvbnMgPSBbXG4gICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgbmFtZTogQ29tcG9uZW50QWN0aW9uLlN0cmVhbUNvbnRleHRJdGVtXG4gICAgICAgICAgICB9XG4gICAgICAgIF07XG4gICAgICAgIHRoaXMucnVuV2l0aFBlcm1pc3Npb25zKGNvbXBvbmVudC51dWlkLCByZXF1aXJlZFBlcm1pc3Npb25zLCAoKSA9PiB7XG4gICAgICAgICAgICBpZiAoIWZpbmQodGhpcy5jb250ZXh0U3RyZWFtT2JzZXJ2ZXJzLCB7IGlkZW50aWZpZXI6IGNvbXBvbmVudC51dWlkIH0pKSB7XG4gICAgICAgICAgICAgICAgdGhpcy5jb250ZXh0U3RyZWFtT2JzZXJ2ZXJzLnB1c2goe1xuICAgICAgICAgICAgICAgICAgICBpZGVudGlmaWVyOiBjb21wb25lbnQudXVpZCxcbiAgICAgICAgICAgICAgICAgICAgY29tcG9uZW50VXVpZDogY29tcG9uZW50LnV1aWQsXG4gICAgICAgICAgICAgICAgICAgIGFyZWE6IGNvbXBvbmVudC5hcmVhLFxuICAgICAgICAgICAgICAgICAgICBvcmlnaW5hbE1lc3NhZ2U6IG1lc3NhZ2VcbiAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGZvciAoY29uc3QgaGFuZGxlciBvZiB0aGlzLmhhbmRsZXJzRm9yQXJlYShjb21wb25lbnQuYXJlYSkpIHtcbiAgICAgICAgICAgICAgICBpZiAoaGFuZGxlci5jb250ZXh0UmVxdWVzdEhhbmRsZXIpIHtcbiAgICAgICAgICAgICAgICAgICAgY29uc3QgaXRlbUluQ29udGV4dCA9IGhhbmRsZXIuY29udGV4dFJlcXVlc3RIYW5kbGVyKGNvbXBvbmVudC51dWlkKTtcbiAgICAgICAgICAgICAgICAgICAgaWYgKGl0ZW1JbkNvbnRleHQpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuc2VuZENvbnRleHRJdGVtSW5SZXBseShjb21wb25lbnQudXVpZCwgaXRlbUluQ29udGV4dCwgbWVzc2FnZSk7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgIH0pO1xuICAgIH1cbiAgICBpc0l0ZW1JZFdpdGhpbkNvbXBvbmVudENvbnRleHRKdXJpc2RpY3Rpb24odXVpZCwgY29tcG9uZW50KSB7XG4gICAgICAgIGNvbnN0IGl0ZW1JZHNJbkp1cmlzZGljdGlvbiA9IHRoaXMuaXRlbUlkc0luQ29udGV4dEp1cmlzZGljdGlvbkZvckNvbXBvbmVudChjb21wb25lbnQpO1xuICAgICAgICByZXR1cm4gaXRlbUlkc0luSnVyaXNkaWN0aW9uLmluY2x1ZGVzKHV1aWQpO1xuICAgIH1cbiAgICAvKiBSZXR1cm5zIGl0ZW1zIHRoYXQgZ2l2ZW4gY29tcG9uZW50IGhhcyBjb250ZXh0IHBlcm1pc3Npb25zIGZvciAqL1xuICAgIGl0ZW1JZHNJbkNvbnRleHRKdXJpc2RpY3Rpb25Gb3JDb21wb25lbnQoY29tcG9uZW50KSB7XG4gICAgICAgIGNvbnN0IGl0ZW1JZHMgPSBbXTtcbiAgICAgICAgZm9yIChjb25zdCBoYW5kbGVyIG9mIHRoaXMuaGFuZGxlcnNGb3JBcmVhKGNvbXBvbmVudC5hcmVhKSkge1xuICAgICAgICAgICAgaWYgKGhhbmRsZXIuY29udGV4dFJlcXVlc3RIYW5kbGVyKSB7XG4gICAgICAgICAgICAgICAgY29uc3QgaXRlbUluQ29udGV4dCA9IGhhbmRsZXIuY29udGV4dFJlcXVlc3RIYW5kbGVyKGNvbXBvbmVudC51dWlkKTtcbiAgICAgICAgICAgICAgICBpZiAoaXRlbUluQ29udGV4dCkge1xuICAgICAgICAgICAgICAgICAgICBpdGVtSWRzLnB1c2goaXRlbUluQ29udGV4dC51dWlkKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIGl0ZW1JZHM7XG4gICAgfVxuICAgIGhhbmRsZXJzRm9yQXJlYShhcmVhKSB7XG4gICAgICAgIHJldHVybiB0aGlzLmhhbmRsZXJzLmZpbHRlcigoY2FuZGlkYXRlKSA9PiB7XG4gICAgICAgICAgICByZXR1cm4gY2FuZGlkYXRlLmFyZWFzLmluY2x1ZGVzKGFyZWEpO1xuICAgICAgICB9KTtcbiAgICB9XG4gICAgYXN5bmMgaGFuZGxlU2F2ZUl0ZW1zTWVzc2FnZShjb21wb25lbnQsIG1lc3NhZ2UpIHtcbiAgICAgICAgY29uc3QgcmVzcG9uc2VQYXlsb2FkcyA9IG1lc3NhZ2UuZGF0YS5pdGVtcztcbiAgICAgICAgY29uc3QgcmVxdWlyZWRQZXJtaXNzaW9ucyA9IFtdO1xuICAgICAgICBjb25zdCBpdGVtSWRzSW5Db250ZXh0SnVyaXNkaWN0aW9uID0gdGhpcy5pdGVtSWRzSW5Db250ZXh0SnVyaXNkaWN0aW9uRm9yQ29tcG9uZW50KGNvbXBvbmVudCk7XG4gICAgICAgIC8qIFBlbmRpbmcgYXMgaW4gbmVlZGVkIHRvIGJlIGFjY291bnRlZCBmb3IgaW4gcGVybWlzc2lvbnMuICovXG4gICAgICAgIGNvbnN0IHBlbmRpbmdSZXNwb25zZUl0ZW1zID0gcmVzcG9uc2VQYXlsb2Fkcy5zbGljZSgpO1xuICAgICAgICBmb3IgKGNvbnN0IHJlc3BvbnNlSXRlbSBvZiByZXNwb25zZVBheWxvYWRzLnNsaWNlKCkpIHtcbiAgICAgICAgICAgIGlmIChpdGVtSWRzSW5Db250ZXh0SnVyaXNkaWN0aW9uLmluY2x1ZGVzKHJlc3BvbnNlSXRlbS51dWlkKSkge1xuICAgICAgICAgICAgICAgIHJlcXVpcmVkUGVybWlzc2lvbnMucHVzaCh7XG4gICAgICAgICAgICAgICAgICAgIG5hbWU6IENvbXBvbmVudEFjdGlvbi5TdHJlYW1Db250ZXh0SXRlbVxuICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICAgIHJlbW92ZUZyb21BcnJheShwZW5kaW5nUmVzcG9uc2VJdGVtcywgcmVzcG9uc2VJdGVtKTtcbiAgICAgICAgICAgICAgICAvKiBXZSBicmVhayBiZWNhdXNlIHRoZXJlIGNhbiBvbmx5IGJlIG9uZSBjb250ZXh0IGl0ZW0gKi9cbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICAvKiBDaGVjayB0byBzZWUgaWYgYWRkaXRpb25hbCBwcml2aWxlZ2VzIGFyZSByZXF1aXJlZCAqL1xuICAgICAgICBpZiAocGVuZGluZ1Jlc3BvbnNlSXRlbXMubGVuZ3RoID4gMCkge1xuICAgICAgICAgICAgY29uc3QgcmVxdWlyZWRDb250ZW50VHlwZXMgPSB1bmlxKHBlbmRpbmdSZXNwb25zZUl0ZW1zLm1hcCgoaXRlbSkgPT4ge1xuICAgICAgICAgICAgICAgIHJldHVybiBpdGVtLmNvbnRlbnRfdHlwZTtcbiAgICAgICAgICAgIH0pKS5zb3J0KCk7XG4gICAgICAgICAgICByZXF1aXJlZFBlcm1pc3Npb25zLnB1c2goe1xuICAgICAgICAgICAgICAgIG5hbWU6IENvbXBvbmVudEFjdGlvbi5TdHJlYW1JdGVtcyxcbiAgICAgICAgICAgICAgICBjb250ZW50X3R5cGVzOiByZXF1aXJlZENvbnRlbnRUeXBlc1xuICAgICAgICAgICAgfSk7XG4gICAgICAgIH1cbiAgICAgICAgdGhpcy5ydW5XaXRoUGVybWlzc2lvbnMoY29tcG9uZW50LnV1aWQsIHJlcXVpcmVkUGVybWlzc2lvbnMsIGFzeW5jICgpID0+IHtcbiAgICAgICAgICAgIHRoaXMucmVtb3ZlUHJpdmF0ZVByb3BlcnRpZXNGcm9tUmVzcG9uc2VJdGVtcyhyZXNwb25zZVBheWxvYWRzLCBjb21wb25lbnQsIHRydWUpO1xuICAgICAgICAgICAgLyogRmlsdGVyIGxvY2tlZCBpdGVtcyAqL1xuICAgICAgICAgICAgY29uc3QgdXVpZHMgPSBVdWlkcyhyZXNwb25zZVBheWxvYWRzKTtcbiAgICAgICAgICAgIGNvbnN0IGl0ZW1zID0gdGhpcy5pdGVtTWFuYWdlci5maW5kSXRlbXModXVpZHMsIHRydWUpO1xuICAgICAgICAgICAgbGV0IGxvY2tlZENvdW50ID0gMDtcbiAgICAgICAgICAgIGl0ZW1zLmZvckVhY2goKGl0ZW0sIGluZGV4KSA9PiB7XG4gICAgICAgICAgICAgICAgaWYgKCFpdGVtKSB7XG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IHJlc3BvbnNlSXRlbSA9IHJlc3BvbnNlUGF5bG9hZHNbaW5kZXhdO1xuICAgICAgICAgICAgICAgICAgICAvLyBBbiBpdGVtIHRoaXMgZXh0ZW5zaW9uIGlzIHRyeWluZyB0byBzYXZlIHdhcyBwb3NzaWJseSByZW1vdmVkIGxvY2FsbHksIG5vdGlmeSB1c2VyXG4gICAgICAgICAgICAgICAgICAgIHRoaXMuYWxlcnRTZXJ2aWNlLmFsZXJ0KGBUaGUgZXh0ZW5zaW9uICR7Y29tcG9uZW50Lm5hbWV9IGlzIHRyeWluZyB0byBzYXZlIGFuIGl0ZW0gd2l0aCB0eXBlIGAgK1xuICAgICAgICAgICAgICAgICAgICAgICAgYCR7cmVzcG9uc2VJdGVtLmNvbnRlbnRfdHlwZX0sIGJ1dCB0aGF0IGl0ZW0gZG9lcyBub3QgZXhpc3QgLmAgK1xuICAgICAgICAgICAgICAgICAgICAgICAgYFBsZWFzZSByZXN0YXJ0IHRoaXMgZXh0ZW5zaW9uIGFuZCB0cnkgYWdhaW4uYCk7XG4gICAgICAgICAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgaWYgKGl0ZW0ubG9ja2VkKSB7XG4gICAgICAgICAgICAgICAgICAgIHJlbW92ZShyZXNwb25zZVBheWxvYWRzLCB7IHV1aWQ6IGl0ZW0udXVpZCB9KTtcbiAgICAgICAgICAgICAgICAgICAgbG9ja2VkQ291bnQrKztcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIGlmIChsb2NrZWRDb3VudCA+IDApIHtcbiAgICAgICAgICAgICAgICBjb25zdCBpdGVtTm91biA9IGxvY2tlZENvdW50ID09PSAxID8gJ2l0ZW0nIDogJ2l0ZW1zJztcbiAgICAgICAgICAgICAgICBjb25zdCBhdXhWZXJiID0gbG9ja2VkQ291bnQgPT09IDEgPyAnaXMnIDogJ2FyZSc7XG4gICAgICAgICAgICAgICAgdGhpcy5hbGVydFNlcnZpY2UuYWxlcnQoYCR7bG9ja2VkQ291bnR9ICR7aXRlbU5vdW59IHlvdSBhcmUgYXR0ZW1wdGluZyB0byBzYXZlICR7YXV4VmVyYn0gbG9ja2VkIGFuZCBjYW5ub3QgYmUgZWRpdGVkLmAsICdJdGVtcyBMb2NrZWQnKTtcbiAgICAgICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBjb25zdCBwYXlsb2FkcyA9IHJlc3BvbnNlUGF5bG9hZHMubWFwKChyZXNwb25zZUl0ZW0pID0+IHtcbiAgICAgICAgICAgICAgICByZXR1cm4gQ3JlYXRlU291cmNlZFBheWxvYWRGcm9tT2JqZWN0KHJlc3BvbnNlSXRlbSwgUGF5bG9hZFNvdXJjZS5Db21wb25lbnRSZXRyaWV2ZWQpO1xuICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICBhd2FpdCB0aGlzLml0ZW1NYW5hZ2VyLmNoYW5nZUl0ZW1zKHV1aWRzLCAobXV0YXRvcikgPT4ge1xuICAgICAgICAgICAgICAgIGNvbnN0IHBheWxvYWQgPSBzZWFyY2hBcnJheShwYXlsb2FkcywgeyB1dWlkOiBtdXRhdG9yLmdldFV1aWQoKSB9KTtcbiAgICAgICAgICAgICAgICBtdXRhdG9yLm1lcmdlUGF5bG9hZChwYXlsb2FkKTtcbiAgICAgICAgICAgICAgICBjb25zdCByZXNwb25zZUl0ZW0gPSBzZWFyY2hBcnJheShyZXNwb25zZVBheWxvYWRzLCB7IHV1aWQ6IG11dGF0b3IuZ2V0VXVpZCgpIH0pO1xuICAgICAgICAgICAgICAgIGlmIChyZXNwb25zZUl0ZW0uY2xpZW50RGF0YSkge1xuICAgICAgICAgICAgICAgICAgICBjb25zdCBhbGxDb21wb25lbnREYXRhID0gQ29weShtdXRhdG9yLmdldEl0ZW0oKS5nZXREb21haW5EYXRhKENvbXBvbmVudERhdGFEb21haW4pIHx8IHt9KTtcbiAgICAgICAgICAgICAgICAgICAgYWxsQ29tcG9uZW50RGF0YVtjb21wb25lbnQuZ2V0Q2xpZW50RGF0YUtleSgpXSA9IHJlc3BvbnNlSXRlbS5jbGllbnREYXRhO1xuICAgICAgICAgICAgICAgICAgICBtdXRhdG9yLnNldERvbWFpbkRhdGEoYWxsQ29tcG9uZW50RGF0YSwgQ29tcG9uZW50RGF0YURvbWFpbik7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSwgTXV0YXRpb25UeXBlLlVzZXJJbnRlcmFjdGlvbiwgUGF5bG9hZFNvdXJjZS5Db21wb25lbnRSZXRyaWV2ZWQsIGNvbXBvbmVudC51dWlkKTtcbiAgICAgICAgICAgIHRoaXMuc3luY1NlcnZpY2Uuc3luYygpLnRoZW4oKCkgPT4ge1xuICAgICAgICAgICAgICAgIC8qIEFsbG93IGhhbmRsZXJzIHRvIGJlIG5vdGlmaWVkIHdoZW4gYSBzYXZlIGJlZ2lucyBhbmQgZW5kcywgdG8gdXBkYXRlIHRoZSBVSSAqL1xuICAgICAgICAgICAgICAgIGNvbnN0IHNhdmVNZXNzYWdlID0gT2JqZWN0LmFzc2lnbih7fSwgbWVzc2FnZSk7XG4gICAgICAgICAgICAgICAgc2F2ZU1lc3NhZ2UuYWN0aW9uID0gQ29tcG9uZW50QWN0aW9uLlNhdmVTdWNjZXNzO1xuICAgICAgICAgICAgICAgIHRoaXMucmVwbHlUb01lc3NhZ2UoY29tcG9uZW50LCBtZXNzYWdlLCB7fSk7XG4gICAgICAgICAgICAgICAgdGhpcy5oYW5kbGVNZXNzYWdlKGNvbXBvbmVudCwgc2F2ZU1lc3NhZ2UpO1xuICAgICAgICAgICAgfSkuY2F0Y2goKCkgPT4ge1xuICAgICAgICAgICAgICAgIGNvbnN0IHNhdmVNZXNzYWdlID0gT2JqZWN0LmFzc2lnbih7fSwgbWVzc2FnZSk7XG4gICAgICAgICAgICAgICAgc2F2ZU1lc3NhZ2UuYWN0aW9uID0gQ29tcG9uZW50QWN0aW9uLlNhdmVFcnJvcjtcbiAgICAgICAgICAgICAgICB0aGlzLnJlcGx5VG9NZXNzYWdlKGNvbXBvbmVudCwgbWVzc2FnZSwgeyBlcnJvcjogQ29tcG9uZW50QWN0aW9uLlNhdmVFcnJvciB9KTtcbiAgICAgICAgICAgICAgICB0aGlzLmhhbmRsZU1lc3NhZ2UoY29tcG9uZW50LCBzYXZlTWVzc2FnZSk7XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgfSk7XG4gICAgfVxuICAgIGhhbmRsZUR1cGxpY2F0ZUl0ZW1NZXNzYWdlKGNvbXBvbmVudCwgbWVzc2FnZSkge1xuICAgICAgICBjb25zdCBpdGVtUGFyYW1zID0gbWVzc2FnZS5kYXRhLml0ZW07XG4gICAgICAgIGNvbnN0IGl0ZW0gPSB0aGlzLml0ZW1NYW5hZ2VyLmZpbmRJdGVtKGl0ZW1QYXJhbXMudXVpZCk7XG4gICAgICAgIGNvbnN0IHJlcXVpcmVkUGVybWlzc2lvbnMgPSBbXG4gICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgbmFtZTogQ29tcG9uZW50QWN0aW9uLlN0cmVhbUl0ZW1zLFxuICAgICAgICAgICAgICAgIGNvbnRlbnRfdHlwZXM6IFtpdGVtLmNvbnRlbnRfdHlwZV1cbiAgICAgICAgICAgIH1cbiAgICAgICAgXTtcbiAgICAgICAgdGhpcy5ydW5XaXRoUGVybWlzc2lvbnMoY29tcG9uZW50LnV1aWQsIHJlcXVpcmVkUGVybWlzc2lvbnMsIGFzeW5jICgpID0+IHtcbiAgICAgICAgICAgIGNvbnN0IGR1cGxpY2F0ZSA9IGF3YWl0IHRoaXMuaXRlbU1hbmFnZXIuZHVwbGljYXRlSXRlbShpdGVtLnV1aWQpO1xuICAgICAgICAgICAgdGhpcy5zeW5jU2VydmljZS5zeW5jKCk7XG4gICAgICAgICAgICB0aGlzLnJlcGx5VG9NZXNzYWdlKGNvbXBvbmVudCwgbWVzc2FnZSwgeyBpdGVtOiB0aGlzLmpzb25Gb3JJdGVtKGR1cGxpY2F0ZSwgY29tcG9uZW50KSB9KTtcbiAgICAgICAgfSk7XG4gICAgfVxuICAgIGhhbmRsZUNyZWF0ZUl0ZW1zTWVzc2FnZShjb21wb25lbnQsIG1lc3NhZ2UpIHtcbiAgICAgICAgY29uc3QgcmVzcG9uc2VJdGVtcyA9IG1lc3NhZ2UuZGF0YS5pdGVtID8gW21lc3NhZ2UuZGF0YS5pdGVtXSA6IG1lc3NhZ2UuZGF0YS5pdGVtcztcbiAgICAgICAgY29uc3QgdW5pcXVlQ29udGVudFR5cGVzID0gdW5pcShyZXNwb25zZUl0ZW1zLm1hcCgoaXRlbSkgPT4geyByZXR1cm4gaXRlbS5jb250ZW50X3R5cGU7IH0pKTtcbiAgICAgICAgY29uc3QgcmVxdWlyZWRQZXJtaXNzaW9ucyA9IFtcbiAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICBuYW1lOiBDb21wb25lbnRBY3Rpb24uU3RyZWFtSXRlbXMsXG4gICAgICAgICAgICAgICAgY29udGVudF90eXBlczogdW5pcXVlQ29udGVudFR5cGVzXG4gICAgICAgICAgICB9XG4gICAgICAgIF07XG4gICAgICAgIHRoaXMucnVuV2l0aFBlcm1pc3Npb25zKGNvbXBvbmVudC51dWlkLCByZXF1aXJlZFBlcm1pc3Npb25zLCBhc3luYyAoKSA9PiB7XG4gICAgICAgICAgICB0aGlzLnJlbW92ZVByaXZhdGVQcm9wZXJ0aWVzRnJvbVJlc3BvbnNlSXRlbXMocmVzcG9uc2VJdGVtcywgY29tcG9uZW50KTtcbiAgICAgICAgICAgIGNvbnN0IHByb2Nlc3NlZEl0ZW1zID0gW107XG4gICAgICAgICAgICBmb3IgKGNvbnN0IHJlc3BvbnNlSXRlbSBvZiByZXNwb25zZUl0ZW1zKSB7XG4gICAgICAgICAgICAgICAgaWYgKCFyZXNwb25zZUl0ZW0udXVpZCkge1xuICAgICAgICAgICAgICAgICAgICByZXNwb25zZUl0ZW0udXVpZCA9IGF3YWl0IFV1aWQuR2VuZXJhdGVVdWlkKCk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGNvbnN0IHBheWxvYWQgPSBDcmVhdGVTb3VyY2VkUGF5bG9hZEZyb21PYmplY3QocmVzcG9uc2VJdGVtLCBQYXlsb2FkU291cmNlLkNvbXBvbmVudENyZWF0ZWQpO1xuICAgICAgICAgICAgICAgIGNvbnN0IHRlbXBsYXRlID0gQ3JlYXRlSXRlbUZyb21QYXlsb2FkKHBheWxvYWQpO1xuICAgICAgICAgICAgICAgIGNvbnN0IGl0ZW0gPSBhd2FpdCB0aGlzLml0ZW1NYW5hZ2VyLmluc2VydEl0ZW0odGVtcGxhdGUpO1xuICAgICAgICAgICAgICAgIGF3YWl0IHRoaXMuaXRlbU1hbmFnZXIuY2hhbmdlSXRlbShpdGVtLnV1aWQsIChtdXRhdG9yKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgIGlmIChyZXNwb25zZUl0ZW0uY2xpZW50RGF0YSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgYWxsQ29tcG9uZW50RGF0YSA9IENvcHkoaXRlbS5nZXREb21haW5EYXRhKENvbXBvbmVudERhdGFEb21haW4pIHx8IHt9KTtcbiAgICAgICAgICAgICAgICAgICAgICAgIGFsbENvbXBvbmVudERhdGFbY29tcG9uZW50LmdldENsaWVudERhdGFLZXkoKV0gPSByZXNwb25zZUl0ZW0uY2xpZW50RGF0YTtcbiAgICAgICAgICAgICAgICAgICAgICAgIG11dGF0b3Iuc2V0RG9tYWluRGF0YShhbGxDb21wb25lbnREYXRhLCBDb21wb25lbnREYXRhRG9tYWluKTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH0sIE11dGF0aW9uVHlwZS5Vc2VySW50ZXJhY3Rpb24sIFBheWxvYWRTb3VyY2UuQ29tcG9uZW50Q3JlYXRlZCwgY29tcG9uZW50LnV1aWQpO1xuICAgICAgICAgICAgICAgIHByb2Nlc3NlZEl0ZW1zLnB1c2goaXRlbSk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICB0aGlzLnN5bmNTZXJ2aWNlLnN5bmMoKTtcbiAgICAgICAgICAgIGNvbnN0IHJlcGx5ID0gbWVzc2FnZS5hY3Rpb24gPT09IENvbXBvbmVudEFjdGlvbi5DcmVhdGVJdGVtXG4gICAgICAgICAgICAgICAgPyB7IGl0ZW06IHRoaXMuanNvbkZvckl0ZW0ocHJvY2Vzc2VkSXRlbXNbMF0sIGNvbXBvbmVudCkgfVxuICAgICAgICAgICAgICAgIDogeyBpdGVtczogcHJvY2Vzc2VkSXRlbXMubWFwKChpdGVtKSA9PiB7IHJldHVybiB0aGlzLmpzb25Gb3JJdGVtKGl0ZW0sIGNvbXBvbmVudCk7IH0pIH07XG4gICAgICAgICAgICB0aGlzLnJlcGx5VG9NZXNzYWdlKGNvbXBvbmVudCwgbWVzc2FnZSwgcmVwbHkpO1xuICAgICAgICB9KTtcbiAgICB9XG4gICAgaGFuZGxlRGVsZXRlSXRlbXNNZXNzYWdlKGNvbXBvbmVudCwgbWVzc2FnZSkge1xuICAgICAgICBjb25zdCByZXF1aXJlZENvbnRlbnRUeXBlcyA9IHVuaXEobWVzc2FnZS5kYXRhLml0ZW1zLm1hcCgoaXRlbSkgPT4geyByZXR1cm4gaXRlbS5jb250ZW50X3R5cGU7IH0pKS5zb3J0KCk7XG4gICAgICAgIGNvbnN0IHJlcXVpcmVkUGVybWlzc2lvbnMgPSBbXG4gICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgbmFtZTogQ29tcG9uZW50QWN0aW9uLlN0cmVhbUl0ZW1zLFxuICAgICAgICAgICAgICAgIGNvbnRlbnRfdHlwZXM6IHJlcXVpcmVkQ29udGVudFR5cGVzXG4gICAgICAgICAgICB9XG4gICAgICAgIF07XG4gICAgICAgIHRoaXMucnVuV2l0aFBlcm1pc3Npb25zKGNvbXBvbmVudC51dWlkLCByZXF1aXJlZFBlcm1pc3Npb25zLCBhc3luYyAoKSA9PiB7XG4gICAgICAgICAgICBjb25zdCBpdGVtc0RhdGEgPSBtZXNzYWdlLmRhdGEuaXRlbXM7XG4gICAgICAgICAgICBjb25zdCBub3VuID0gaXRlbXNEYXRhLmxlbmd0aCA9PT0gMSA/ICdpdGVtJyA6ICdpdGVtcyc7XG4gICAgICAgICAgICBsZXQgcmVwbHkgPSBudWxsO1xuICAgICAgICAgICAgbGV0IGRpZENvbmZpcm0gPSB0cnVlO1xuICAgICAgICAgICAgYXdhaXQgdGhpcy5hbGVydFNlcnZpY2UuY29uZmlybShgQXJlIHlvdSBzdXJlIHlvdSB3YW50IHRvIGRlbGV0ZSAke2l0ZW1zRGF0YS5sZW5ndGh9ICR7bm91bn0/YCkuY2F0Y2goKCkgPT4ge1xuICAgICAgICAgICAgICAgIGRpZENvbmZpcm0gPSBmYWxzZTtcbiAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgaWYgKGRpZENvbmZpcm0pIHtcbiAgICAgICAgICAgICAgICAvKiBGaWx0ZXIgZm9yIGFueSBjb21wb25lbnRzIGFuZCBkZWFjdGl2YXRlIGJlZm9yZSBkZWxldGluZyAqL1xuICAgICAgICAgICAgICAgIGZvciAoY29uc3QgaXRlbURhdGEgb2YgaXRlbXNEYXRhKSB7XG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IGl0ZW0gPSB0aGlzLml0ZW1NYW5hZ2VyLmZpbmRJdGVtKGl0ZW1EYXRhLnV1aWQpO1xuICAgICAgICAgICAgICAgICAgICBpZiAoIWl0ZW0pIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuYWxlcnRTZXJ2aWNlLmFsZXJ0KCdUaGUgaXRlbSB5b3UgYXJlIHRyeWluZyB0byBkZWxldGUgY2Fubm90IGJlIGZvdW5kLicpO1xuICAgICAgICAgICAgICAgICAgICAgICAgY29udGludWU7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgaWYgKFtDb250ZW50VHlwZS5Db21wb25lbnQsIENvbnRlbnRUeXBlLlRoZW1lXS5pbmNsdWRlcyhpdGVtLmNvbnRlbnRfdHlwZSkpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGF3YWl0IHRoaXMuZGVhY3RpdmF0ZUNvbXBvbmVudChpdGVtLnV1aWQpO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIGF3YWl0IHRoaXMuaXRlbU1hbmFnZXIuc2V0SXRlbVRvQmVEZWxldGVkKGl0ZW0udXVpZCk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIHRoaXMuc3luY1NlcnZpY2Uuc3luYygpO1xuICAgICAgICAgICAgICAgIHJlcGx5ID0geyBkZWxldGVkOiB0cnVlIH07XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgICAgICAvKiBSZWplY3RlZCBieSB1c2VyICovXG4gICAgICAgICAgICAgICAgcmVwbHkgPSB7IGRlbGV0ZWQ6IGZhbHNlIH07XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICB0aGlzLnJlcGx5VG9NZXNzYWdlKGNvbXBvbmVudCwgbWVzc2FnZSwgcmVwbHkpO1xuICAgICAgICB9KTtcbiAgICB9XG4gICAgaGFuZGxlUmVxdWVzdFBlcm1pc3Npb25zTWVzc2FnZShjb21wb25lbnQsIG1lc3NhZ2UpIHtcbiAgICAgICAgdGhpcy5ydW5XaXRoUGVybWlzc2lvbnMoY29tcG9uZW50LnV1aWQsIG1lc3NhZ2UuZGF0YS5wZXJtaXNzaW9ucywgKCkgPT4ge1xuICAgICAgICAgICAgdGhpcy5yZXBseVRvTWVzc2FnZShjb21wb25lbnQsIG1lc3NhZ2UsIHsgYXBwcm92ZWQ6IHRydWUgfSk7XG4gICAgICAgIH0pO1xuICAgIH1cbiAgICBoYW5kbGVTZXRDb21wb25lbnREYXRhTWVzc2FnZShjb21wb25lbnQsIG1lc3NhZ2UpIHtcbiAgICAgICAgLyogQSBjb21wb25lbnQgc2V0dGluZyBpdHMgb3duIGRhdGEgZG9lcyBub3QgcmVxdWlyZSBzcGVjaWFsIHBlcm1pc3Npb25zICovXG4gICAgICAgIHRoaXMucnVuV2l0aFBlcm1pc3Npb25zKGNvbXBvbmVudC51dWlkLCBbXSwgYXN5bmMgKCkgPT4ge1xuICAgICAgICAgICAgYXdhaXQgdGhpcy5pdGVtTWFuYWdlci5jaGFuZ2VDb21wb25lbnQoY29tcG9uZW50LnV1aWQsIChtdXRhdG9yKSA9PiB7XG4gICAgICAgICAgICAgICAgbXV0YXRvci5jb21wb25lbnREYXRhID0gbWVzc2FnZS5kYXRhLmNvbXBvbmVudERhdGE7XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIHRoaXMuc3luY1NlcnZpY2Uuc3luYygpO1xuICAgICAgICB9KTtcbiAgICB9XG4gICAgaGFuZGxlVG9nZ2xlQ29tcG9uZW50TWVzc2FnZSh0YXJnZXRDb21wb25lbnQsIG1lc3NhZ2UpIHtcbiAgICAgICAgdGhpcy50b2dnbGVDb21wb25lbnQodGFyZ2V0Q29tcG9uZW50KTtcbiAgICB9XG4gICAgYXN5bmMgdG9nZ2xlQ29tcG9uZW50KGNvbXBvbmVudCkge1xuICAgICAgICBpZiAoY29tcG9uZW50LmFyZWEgPT09IENvbXBvbmVudEFyZWEuTW9kYWwpIHtcbiAgICAgICAgICAgIHRoaXMub3Blbk1vZGFsQ29tcG9uZW50KGNvbXBvbmVudCk7XG4gICAgICAgIH1cbiAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICBpZiAoY29tcG9uZW50LmFjdGl2ZSkge1xuICAgICAgICAgICAgICAgIGF3YWl0IHRoaXMuZGVhY3RpdmF0ZUNvbXBvbmVudChjb21wb25lbnQudXVpZCk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgICAgICBpZiAoY29tcG9uZW50LmNvbnRlbnRfdHlwZSA9PT0gQ29udGVudFR5cGUuVGhlbWUpIHtcbiAgICAgICAgICAgICAgICAgICAgY29uc3QgdGhlbWUgPSBjb21wb25lbnQ7XG4gICAgICAgICAgICAgICAgICAgIC8qIERlYWN0aXZlIGN1cnJlbnRseSBhY3RpdmUgdGhlbWUgaWYgbmV3IHRoZW1lIGlzIG5vdCBsYXllcmFibGUgKi9cbiAgICAgICAgICAgICAgICAgICAgY29uc3QgYWN0aXZlVGhlbWVzID0gdGhpcy5nZXRBY3RpdmVUaGVtZXMoKTtcbiAgICAgICAgICAgICAgICAgICAgLyogQWN0aXZhdGUgY3VycmVudCBiZWZvcmUgZGVhY3RpdmF0aW5nIG90aGVycywgc28gYXMgbm90IHRvIGZsaWNrZXIgKi9cbiAgICAgICAgICAgICAgICAgICAgYXdhaXQgdGhpcy5hY3RpdmF0ZUNvbXBvbmVudChjb21wb25lbnQudXVpZCk7XG4gICAgICAgICAgICAgICAgICAgIGlmICghdGhlbWUuaXNMYXllcmFibGUoKSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgc2V0VGltZW91dChhc3luYyAoKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgZm9yIChjb25zdCBjYW5kaWRhdGUgb2YgYWN0aXZlVGhlbWVzKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChjYW5kaWRhdGUgJiYgIWNhbmRpZGF0ZS5pc0xheWVyYWJsZSgpKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhd2FpdCB0aGlzLmRlYWN0aXZhdGVDb21wb25lbnQoY2FuZGlkYXRlLnV1aWQpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgfSwgMTApO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICBhd2FpdCB0aGlzLmFjdGl2YXRlQ29tcG9uZW50KGNvbXBvbmVudC51dWlkKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICB9XG4gICAgaGFuZGxlSW5zdGFsbExvY2FsQ29tcG9uZW50TWVzc2FnZShzb3VyY2VDb21wb25lbnQsIG1lc3NhZ2UpIHtcbiAgICAgICAgLyogT25seSBuYXRpdmUgZXh0ZW5zaW9ucyBoYXZlIHRoaXMgcGVybWlzc2lvbiAqL1xuICAgICAgICBpZiAoIXRoaXMuaXNOYXRpdmVFeHRlbnNpb24oc291cmNlQ29tcG9uZW50KSkge1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG4gICAgICAgIGNvbnN0IHRhcmdldENvbXBvbmVudCA9IHRoaXMuaXRlbU1hbmFnZXIuZmluZEl0ZW0obWVzc2FnZS5kYXRhLnV1aWQpO1xuICAgICAgICB0aGlzLmRlc2t0b3BNYW5hZ2VyLmluc3RhbGxDb21wb25lbnQodGFyZ2V0Q29tcG9uZW50KTtcbiAgICB9XG4gICAgcnVuV2l0aFBlcm1pc3Npb25zKGNvbXBvbmVudFV1aWQsIHJlcXVpcmVkUGVybWlzc2lvbnMsIHJ1bkZ1bmN0aW9uKSB7XG4gICAgICAgIGNvbnN0IGNvbXBvbmVudCA9IHRoaXMuaXRlbU1hbmFnZXIuZmluZEl0ZW0oY29tcG9uZW50VXVpZCk7XG4gICAgICAgIC8qIE1ha2UgY29weSBhcyBub3QgdG8gbXV0YXRlIGlucHV0IHZhbHVlcyAqL1xuICAgICAgICByZXF1aXJlZFBlcm1pc3Npb25zID0gQ29weShyZXF1aXJlZFBlcm1pc3Npb25zKTtcbiAgICAgICAgY29uc3QgYWNxdWlyZWRQZXJtaXNzaW9ucyA9IGNvbXBvbmVudC5wZXJtaXNzaW9ucztcbiAgICAgICAgZm9yIChjb25zdCByZXF1aXJlZCBvZiByZXF1aXJlZFBlcm1pc3Npb25zLnNsaWNlKCkpIHtcbiAgICAgICAgICAgIC8qIFJlbW92ZSBhbnl0aGluZyB3ZSBhbHJlYWR5IGhhdmUgKi9cbiAgICAgICAgICAgIGNvbnN0IHJlc3BlY3RpdmVBY3F1aXJlZCA9IGFjcXVpcmVkUGVybWlzc2lvbnMuZmluZCgoY2FuZGlkYXRlKSA9PiBjYW5kaWRhdGUubmFtZSA9PT0gcmVxdWlyZWQubmFtZSk7XG4gICAgICAgICAgICBpZiAoIXJlc3BlY3RpdmVBY3F1aXJlZCkge1xuICAgICAgICAgICAgICAgIGNvbnRpbnVlO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgLyogV2Ugbm93IG1hdGNoIG9uIG5hbWUsIGxldHMgc3Vic3RyYWN0IGZyb20gcmVxdWlyZWQuY29udGVudF90eXBlcyBhbnl0aGluZyB3ZSBoYXZlIGluIGFjcXVpcmVkLiAqL1xuICAgICAgICAgICAgY29uc3QgcmVxdWlyZWRDb250ZW50VHlwZXMgPSByZXF1aXJlZC5jb250ZW50X3R5cGVzO1xuICAgICAgICAgICAgaWYgKCFyZXF1aXJlZENvbnRlbnRUeXBlcykge1xuICAgICAgICAgICAgICAgIC8qIElmIHRoaXMgcGVybWlzc2lvbiBkb2VzIG5vdCByZXF1aXJlIGFueSBjb250ZW50IHR5cGVzIChpLmUgc3RyZWFtLWNvbnRleHQtaXRlbSlcbiAgICAgICAgICAgICAgICAgIHRoZW4gd2UgY2FuIHJlbW92ZSB0aGlzIGZyb20gcmVxdWlyZWQgc2luY2Ugd2UgbWF0Y2ggYnkgbmFtZSAocmVzcGVjdGl2ZUFjcXVpcmVkLm5hbWUgPT09IHJlcXVpcmVkLm5hbWUpICovXG4gICAgICAgICAgICAgICAgZmlsdGVyRnJvbUFycmF5KHJlcXVpcmVkUGVybWlzc2lvbnMsIHJlcXVpcmVkKTtcbiAgICAgICAgICAgICAgICBjb250aW51ZTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGZvciAoY29uc3QgYWNxdWlyZWRDb250ZW50VHlwZSBvZiByZXNwZWN0aXZlQWNxdWlyZWQuY29udGVudF90eXBlcykge1xuICAgICAgICAgICAgICAgIHJlbW92ZUZyb21BcnJheShyZXF1aXJlZENvbnRlbnRUeXBlcywgYWNxdWlyZWRDb250ZW50VHlwZSk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBpZiAocmVxdWlyZWRDb250ZW50VHlwZXMubGVuZ3RoID09PSAwKSB7XG4gICAgICAgICAgICAgICAgLyogV2UndmUgcmVtb3ZlZCBhbGwgYWNxdWlyZWQgYW5kIGVuZCB1cCB3aXRoIHplcm8sIG1lYW5zIHdlIGFscmVhZHkgaGF2ZSBhbGwgdGhlc2UgcGVybWlzc2lvbnMgKi9cbiAgICAgICAgICAgICAgICBmaWx0ZXJGcm9tQXJyYXkocmVxdWlyZWRQZXJtaXNzaW9ucywgcmVxdWlyZWQpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIGlmIChyZXF1aXJlZFBlcm1pc3Npb25zLmxlbmd0aCA+IDApIHtcbiAgICAgICAgICAgIHRoaXMucHJvbXB0Rm9yUGVybWlzc2lvbnMoY29tcG9uZW50LCByZXF1aXJlZFBlcm1pc3Npb25zLCBhc3luYyAoYXBwcm92ZWQpID0+IHtcbiAgICAgICAgICAgICAgICBpZiAoYXBwcm92ZWQpIHtcbiAgICAgICAgICAgICAgICAgICAgcnVuRnVuY3Rpb24oKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgfVxuICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgIHJ1bkZ1bmN0aW9uKCk7XG4gICAgICAgIH1cbiAgICB9XG4gICAgcHJvbXB0Rm9yUGVybWlzc2lvbnMoY29tcG9uZW50LCBwZXJtaXNzaW9ucywgY2FsbGJhY2spIHtcbiAgICAgICAgY29uc3QgcGFyYW1zID0ge1xuICAgICAgICAgICAgY29tcG9uZW50OiBjb21wb25lbnQsXG4gICAgICAgICAgICBwZXJtaXNzaW9uczogcGVybWlzc2lvbnMsXG4gICAgICAgICAgICBwZXJtaXNzaW9uc1N0cmluZzogdGhpcy5wZXJtaXNzaW9uc1N0cmluZ0ZvclBlcm1pc3Npb25zKHBlcm1pc3Npb25zLCBjb21wb25lbnQpLFxuICAgICAgICAgICAgYWN0aW9uQmxvY2s6IGNhbGxiYWNrLFxuICAgICAgICAgICAgY2FsbGJhY2s6IGFzeW5jIChhcHByb3ZlZCkgPT4ge1xuICAgICAgICAgICAgICAgIGlmIChhcHByb3ZlZCkge1xuICAgICAgICAgICAgICAgICAgICB0aGlzLmxvZyhcIkNoYW5naW5nIGNvbXBvbmVudCB0byBleHBhbmQgcGVybWlzc2lvbnNcIiwgY29tcG9uZW50KTtcbiAgICAgICAgICAgICAgICAgICAgYXdhaXQgdGhpcy5pdGVtTWFuYWdlci5jaGFuZ2VJdGVtKGNvbXBvbmVudC51dWlkLCAobSkgPT4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgY29tcG9uZW50UGVybWlzc2lvbnMgPSBDb3B5KGNvbXBvbmVudC5wZXJtaXNzaW9ucyk7XG4gICAgICAgICAgICAgICAgICAgICAgICBmb3IgKGNvbnN0IHBlcm1pc3Npb24gb2YgcGVybWlzc2lvbnMpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBtYXRjaGluZ1Blcm1pc3Npb24gPSBjb21wb25lbnRQZXJtaXNzaW9uc1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAuZmluZCgoY2FuZGlkYXRlKSA9PiBjYW5kaWRhdGUubmFtZSA9PT0gcGVybWlzc2lvbi5uYW1lKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoIW1hdGNoaW5nUGVybWlzc2lvbikge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb21wb25lbnRQZXJtaXNzaW9ucy5wdXNoKHBlcm1pc3Npb24pO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogUGVybWlzc2lvbiBhbHJlYWR5IGV4aXN0cywgYnV0IGNvbnRlbnRfdHlwZXMgbWF5IGhhdmUgYmVlbiBleHBhbmRlZCAqL1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBjb250ZW50VHlwZXMgPSBtYXRjaGluZ1Blcm1pc3Npb24uY29udGVudF90eXBlcyB8fCBbXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbWF0Y2hpbmdQZXJtaXNzaW9uLmNvbnRlbnRfdHlwZXMgPSB1bmlxKGNvbnRlbnRUeXBlcy5jb25jYXQocGVybWlzc2lvbi5jb250ZW50X3R5cGVzKSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgbXV0YXRvciA9IG07XG4gICAgICAgICAgICAgICAgICAgICAgICBtdXRhdG9yLnBlcm1pc3Npb25zID0gY29tcG9uZW50UGVybWlzc2lvbnM7XG4gICAgICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICAgICAgICB0aGlzLnN5bmNTZXJ2aWNlLnN5bmMoKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgdGhpcy5wZXJtaXNzaW9uRGlhbG9ncyA9IHRoaXMucGVybWlzc2lvbkRpYWxvZ3MuZmlsdGVyKChwZW5kaW5nRGlhbG9nKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgIC8qIFJlbW92ZSBzZWxmICovXG4gICAgICAgICAgICAgICAgICAgIGlmIChwZW5kaW5nRGlhbG9nID09PSBwYXJhbXMpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHBlbmRpbmdEaWFsb2cuYWN0aW9uQmxvY2sgJiYgcGVuZGluZ0RpYWxvZy5hY3Rpb25CbG9jayhhcHByb3ZlZCk7XG4gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgY29uc3QgY29udGFpbnNPYmplY3RTdWJzZXQgPSAoc291cmNlLCB0YXJnZXQpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiAhdGFyZ2V0LnNvbWUodmFsID0+ICFzb3VyY2UuZmluZCgoY2FuZGlkYXRlKSA9PiBKU09OLnN0cmluZ2lmeShjYW5kaWRhdGUpID09PSBKU09OLnN0cmluZ2lmeSh2YWwpKSk7XG4gICAgICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICAgICAgICAgIGlmIChwZW5kaW5nRGlhbG9nLmNvbXBvbmVudCA9PT0gY29tcG9uZW50KSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAvKiByZW1vdmUgcGVuZGluZyBkaWFsb2dzIHRoYXQgYXJlIGVuY2Fwc3VsYXRlZCBieSBhbHJlYWR5IGFwcHJvdmVkIHBlcm1pc3Npb25zLCBhbmQgcnVuIGl0cyBmdW5jdGlvbiAqL1xuICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHBlbmRpbmdEaWFsb2cucGVybWlzc2lvbnMgPT09IHBlcm1pc3Npb25zIHx8IGNvbnRhaW5zT2JqZWN0U3Vic2V0KHBlcm1pc3Npb25zLCBwZW5kaW5nRGlhbG9nLnBlcm1pc3Npb25zKSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIElmIGFwcHJvdmVkLCBydW4gdGhlIGFjdGlvbiBibG9jay4gT3RoZXJ3aXNlLCBpZiBjYW5jZWxlZCwgY2FuY2VsIGFueVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBlbmRpbmcgb25lcyBhcyB3ZWxsLCBzaW5jZSB0aGUgdXNlciB3YXMgZXhwbGljaXQgaW4gdGhlaXIgaW50ZW50aW9ucyAqL1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChhcHByb3ZlZCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwZW5kaW5nRGlhbG9nLmFjdGlvbkJsb2NrICYmIHBlbmRpbmdEaWFsb2cuYWN0aW9uQmxvY2soYXBwcm92ZWQpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgICAgaWYgKHRoaXMucGVybWlzc2lvbkRpYWxvZ3MubGVuZ3RoID4gMCkge1xuICAgICAgICAgICAgICAgICAgICB0aGlzLnByZXNlbnRQZXJtaXNzaW9uc0RpYWxvZyh0aGlzLnBlcm1pc3Npb25EaWFsb2dzWzBdKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgIH07XG4gICAgICAgIC8qKlxuICAgICAgICAgKiBTaW5jZSB0aGVzZSBjYWxscyBhcmUgYXN5bmNyb25vdXMsIG11bHRpcGxlIGRpYWxvZ3MgbWF5IGJlIHJlcXVlc3RlZCBhdCB0aGUgc2FtZSB0aW1lLlxuICAgICAgICAgKiBXZSBvbmx5IHdhbnQgdG8gcHJlc2VudCBvbmUgYW5kIHRyaWdnZXIgYWxsIGNhbGxiYWNrcyBiYXNlZCBvbiBvbmUgbW9kYWwgcmVzdWx0XG4gICAgICAgICAqL1xuICAgICAgICBjb25zdCBleGlzdGluZ0RpYWxvZyA9IGZpbmQodGhpcy5wZXJtaXNzaW9uRGlhbG9ncywgeyBjb21wb25lbnQ6IGNvbXBvbmVudCB9KTtcbiAgICAgICAgdGhpcy5wZXJtaXNzaW9uRGlhbG9ncy5wdXNoKHBhcmFtcyk7XG4gICAgICAgIGlmICghZXhpc3RpbmdEaWFsb2cpIHtcbiAgICAgICAgICAgIHRoaXMucHJlc2VudFBlcm1pc3Npb25zRGlhbG9nKHBhcmFtcyk7XG4gICAgICAgIH1cbiAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICB0aGlzLmxvZygnRXhpc3RpbmcgZGlhbG9nLCBub3QgcHJlc2VudGluZy4nKTtcbiAgICAgICAgfVxuICAgIH1cbiAgICBwcmVzZW50UGVybWlzc2lvbnNEaWFsb2coZGlhbG9nKSB7XG4gICAgICAgIHRocm93ICdNdXN0IG92ZXJyaWRlIFNOQ29tcG9uZW50TWFuYWdlci5wcmVzZW50UGVybWlzc2lvbnNEaWFsb2cnO1xuICAgIH1cbiAgICBvcGVuTW9kYWxDb21wb25lbnQoY29tcG9uZW50KSB7XG4gICAgICAgIHRocm93ICdNdXN0IG92ZXJyaWRlIFNOQ29tcG9uZW50TWFuYWdlci5wcmVzZW50UGVybWlzc2lvbnNEaWFsb2cnO1xuICAgIH1cbiAgICByZWdpc3RlckhhbmRsZXIoaGFuZGxlcikge1xuICAgICAgICB0aGlzLmhhbmRsZXJzLnB1c2goaGFuZGxlcik7XG4gICAgICAgIHJldHVybiAoKSA9PiB7XG4gICAgICAgICAgICBjb25zdCBtYXRjaGluZyA9IGZpbmQodGhpcy5oYW5kbGVycywgeyBpZGVudGlmaWVyOiBoYW5kbGVyLmlkZW50aWZpZXIgfSk7XG4gICAgICAgICAgICBpZiAoIW1hdGNoaW5nKSB7XG4gICAgICAgICAgICAgICAgdGhpcy5sb2coJ0F0dGVtcHRpbmcgdG8gZGVyZWdpc3RlciBub24tZXhpc3RpbmcgaGFuZGxlcicpO1xuICAgICAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHJlbW92ZUZyb21BcnJheSh0aGlzLmhhbmRsZXJzLCBtYXRjaGluZyk7XG4gICAgICAgIH07XG4gICAgfVxuICAgIGZpbmRPckNyZWF0ZURhdGFGb3JDb21wb25lbnQoY29tcG9uZW50KSB7XG4gICAgICAgIGxldCBkYXRhID0gdGhpcy5jb21wb25lbnRTdGF0ZVtjb21wb25lbnQudXVpZF07XG4gICAgICAgIGlmICghZGF0YSkge1xuICAgICAgICAgICAgZGF0YSA9IHt9O1xuICAgICAgICAgICAgdGhpcy5jb21wb25lbnRTdGF0ZVtjb21wb25lbnQudXVpZF0gPSBkYXRhO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiBkYXRhO1xuICAgIH1cbiAgICBzZXRSZWFkb25seVN0YXRlRm9yQ29tcG9uZW50KGNvbXBvbmVudCwgcmVhZG9ubHksIGxvY2tSZWFkb25seSA9IGZhbHNlKSB7XG4gICAgICAgIGNvbnN0IGRhdGEgPSB0aGlzLmZpbmRPckNyZWF0ZURhdGFGb3JDb21wb25lbnQoY29tcG9uZW50KTtcbiAgICAgICAgZGF0YS5yZWFkb25seSA9IHJlYWRvbmx5O1xuICAgICAgICBkYXRhLmxvY2tSZWFkb25seSA9IGxvY2tSZWFkb25seTtcbiAgICB9XG4gICAgZ2V0UmVhZG9ubHlTdGF0ZUZvckNvbXBvbmVudChjb21wb25lbnQpIHtcbiAgICAgICAgY29uc3QgZGF0YSA9IHRoaXMuZmluZE9yQ3JlYXRlRGF0YUZvckNvbXBvbmVudChjb21wb25lbnQpO1xuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgcmVhZG9ubHk6IGRhdGEucmVhZG9ubHksXG4gICAgICAgICAgICBsb2NrUmVhZG9ubHk6IGRhdGEubG9ja1JlYWRvbmx5XG4gICAgICAgIH07XG4gICAgfVxuICAgIC8qKiBDYWxsZWQgYnkgb3RoZXIgdmlld3Mgd2hlbiB0aGUgaWZyYW1lIGlzIHJlYWR5ICovXG4gICAgYXN5bmMgcmVnaXN0ZXJDb21wb25lbnRXaW5kb3coY29tcG9uZW50LCBjb21wb25lbnRXaW5kb3cpIHtcbiAgICAgICAgdGhpcy5sb2coJ1JlZ2lzdGVyIGNvbXBvbmVudCB3aW5kb3cnLCBjb21wb25lbnQpO1xuICAgICAgICBjb25zdCBkYXRhID0gdGhpcy5maW5kT3JDcmVhdGVEYXRhRm9yQ29tcG9uZW50KGNvbXBvbmVudCk7XG4gICAgICAgIGlmIChkYXRhLndpbmRvdyA9PT0gY29tcG9uZW50V2luZG93KSB7XG4gICAgICAgICAgICB0aGlzLmxvZygnV2VifGNvbXBvbmVudE1hbmFnZXInLCAnYXR0ZW1wdGluZyB0byByZS1yZWdpc3RlciBzYW1lIGNvbXBvbmVudCB3aW5kb3cuJyk7XG4gICAgICAgIH1cbiAgICAgICAgdGhpcy5sb2coJ1dlYnxjb21wb25lbnRNYW5hZ2VyfHJlZ2lzdGVyQ29tcG9uZW50V2luZG93JywgY29tcG9uZW50KTtcbiAgICAgICAgZGF0YS53aW5kb3cgPSBjb21wb25lbnRXaW5kb3c7XG4gICAgICAgIGRhdGEuc2Vzc2lvbktleSA9IGF3YWl0IFV1aWQuR2VuZXJhdGVVdWlkKCk7XG4gICAgICAgIHRoaXMuc2VuZE1lc3NhZ2VUb0NvbXBvbmVudChjb21wb25lbnQsIHtcbiAgICAgICAgICAgIGFjdGlvbjogQ29tcG9uZW50QWN0aW9uLkNvbXBvbmVudFJlZ2lzdGVyZWQsXG4gICAgICAgICAgICBzZXNzaW9uS2V5OiBkYXRhLnNlc3Npb25LZXksXG4gICAgICAgICAgICBjb21wb25lbnREYXRhOiBjb21wb25lbnQuY29tcG9uZW50RGF0YSxcbiAgICAgICAgICAgIGRhdGE6IHtcbiAgICAgICAgICAgICAgICB1dWlkOiBjb21wb25lbnQudXVpZCxcbiAgICAgICAgICAgICAgICBlbnZpcm9ubWVudDogZW52aXJvbm1lbnRUb1N0cmluZyh0aGlzLmVudmlyb25tZW50KSxcbiAgICAgICAgICAgICAgICBwbGF0Zm9ybTogcGxhdGZvcm1Ub1N0cmluZyh0aGlzLnBsYXRmb3JtKSxcbiAgICAgICAgICAgICAgICBhY3RpdmVUaGVtZVVybHM6IHRoaXMudXJsc0ZvckFjdGl2ZVRoZW1lcygpXG4gICAgICAgICAgICB9XG4gICAgICAgIH0pO1xuICAgICAgICB0aGlzLnBvc3RBY3RpdmVUaGVtZXNUb0NvbXBvbmVudChjb21wb25lbnQpO1xuICAgICAgICBpZiAodGhpcy5kZXNrdG9wTWFuYWdlcikge1xuICAgICAgICAgICAgdGhpcy5kZXNrdG9wTWFuYWdlci5ub3RpZnlDb21wb25lbnRBY3RpdmF0aW9uKGNvbXBvbmVudCk7XG4gICAgICAgIH1cbiAgICB9XG4gICAgcmVnaXN0ZXJDb21wb25lbnQodXVpZCkge1xuICAgICAgICB0aGlzLmxvZygnUmVnaXN0ZXJpbmcgY29tcG9uZW50JywgdXVpZCk7XG4gICAgICAgIGFkZElmVW5pcXVlKHRoaXMuYWN0aXZlQ29tcG9uZW50cywgdXVpZCk7XG4gICAgICAgIGNvbnN0IGNvbXBvbmVudCA9IHRoaXMuaXRlbU1hbmFnZXIuZmluZEl0ZW0odXVpZCk7XG4gICAgICAgIGZvciAoY29uc3QgaGFuZGxlciBvZiB0aGlzLmhhbmRsZXJzKSB7XG4gICAgICAgICAgICBpZiAoaGFuZGxlci5hcmVhcy5pbmNsdWRlcyhjb21wb25lbnQuYXJlYSkgfHxcbiAgICAgICAgICAgICAgICBoYW5kbGVyLmFyZWFzLmluY2x1ZGVzKENvbXBvbmVudEFyZWEuQW55KSkge1xuICAgICAgICAgICAgICAgIGhhbmRsZXIuYWN0aXZhdGlvbkhhbmRsZXIgJiYgaGFuZGxlci5hY3RpdmF0aW9uSGFuZGxlcihjb21wb25lbnQpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIGlmIChjb21wb25lbnQuYXJlYSA9PT0gQ29tcG9uZW50QXJlYS5UaGVtZXMpIHtcbiAgICAgICAgICAgIHRoaXMucG9zdEFjdGl2ZVRoZW1lc1RvQWxsQ29tcG9uZW50cygpO1xuICAgICAgICB9XG4gICAgfVxuICAgIGFzeW5jIGFjdGl2YXRlQ29tcG9uZW50KHV1aWQpIHtcbiAgICAgICAgdGhpcy5sb2coJ0FjdGl2YXRpbmcgY29tcG9uZW50JywgdXVpZCk7XG4gICAgICAgIGNvbnN0IGNvbXBvbmVudCA9IHRoaXMuaXRlbU1hbmFnZXIuZmluZEl0ZW0odXVpZCk7XG4gICAgICAgIGlmICghY29tcG9uZW50LmFjdGl2ZSkge1xuICAgICAgICAgICAgYXdhaXQgdGhpcy5pdGVtTWFuYWdlci5jaGFuZ2VDb21wb25lbnQoY29tcG9uZW50LnV1aWQsIChtdXRhdG9yKSA9PiB7XG4gICAgICAgICAgICAgICAgbXV0YXRvci5hY3RpdmUgPSB0cnVlO1xuICAgICAgICAgICAgfSk7XG4gICAgICAgIH1cbiAgICAgICAgdGhpcy5yZWdpc3RlckNvbXBvbmVudCh1dWlkKTtcbiAgICAgICAgdGhpcy5zeW5jU2VydmljZS5zeW5jKCk7XG4gICAgfVxuICAgIGRlcmVnaXN0ZXJDb21wb25lbnQodXVpZCkge1xuICAgICAgICB0aGlzLmxvZygnRGVncmVnaXN0ZXJpbmcgY29tcG9uZW50JywgdXVpZCk7XG4gICAgICAgIGNvbnN0IGNvbXBvbmVudCA9IHRoaXMuaXRlbU1hbmFnZXIuZmluZEl0ZW0odXVpZCk7XG4gICAgICAgIHJlbW92ZUZyb21BcnJheSh0aGlzLmFjdGl2ZUNvbXBvbmVudHMsIHV1aWQpO1xuICAgICAgICBkZWxldGUgdGhpcy5jb21wb25lbnRTdGF0ZVtjb21wb25lbnQudXVpZF07XG4gICAgICAgIGZvciAoY29uc3QgaGFuZGxlciBvZiB0aGlzLmhhbmRsZXJzKSB7XG4gICAgICAgICAgICBpZiAoaGFuZGxlci5hcmVhcy5pbmNsdWRlcyhjb21wb25lbnQuYXJlYSkgfHxcbiAgICAgICAgICAgICAgICBoYW5kbGVyLmFyZWFzLmluY2x1ZGVzKENvbXBvbmVudEFyZWEuQW55KSkge1xuICAgICAgICAgICAgICAgIGhhbmRsZXIuYWN0aXZhdGlvbkhhbmRsZXIgJiYgaGFuZGxlci5hY3RpdmF0aW9uSGFuZGxlcihjb21wb25lbnQpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIHRoaXMuc3RyZWFtT2JzZXJ2ZXJzID0gdGhpcy5zdHJlYW1PYnNlcnZlcnMuZmlsdGVyKChvKSA9PiB7XG4gICAgICAgICAgICByZXR1cm4gby5jb21wb25lbnRVdWlkICE9PSB1dWlkO1xuICAgICAgICB9KTtcbiAgICAgICAgdGhpcy5jb250ZXh0U3RyZWFtT2JzZXJ2ZXJzID0gdGhpcy5jb250ZXh0U3RyZWFtT2JzZXJ2ZXJzLmZpbHRlcigobykgPT4ge1xuICAgICAgICAgICAgcmV0dXJuIG8uY29tcG9uZW50VXVpZCAhPT0gdXVpZDtcbiAgICAgICAgfSk7XG4gICAgICAgIGlmIChjb21wb25lbnQuYXJlYSA9PT0gQ29tcG9uZW50QXJlYS5UaGVtZXMpIHtcbiAgICAgICAgICAgIHRoaXMucG9zdEFjdGl2ZVRoZW1lc1RvQWxsQ29tcG9uZW50cygpO1xuICAgICAgICB9XG4gICAgfVxuICAgIGFzeW5jIGRlYWN0aXZhdGVDb21wb25lbnQodXVpZCkge1xuICAgICAgICB0aGlzLmxvZygnRGVhY3RpdmF0aW5nIGNvbXBvbmVudCcsIHV1aWQpO1xuICAgICAgICBjb25zdCBjb21wb25lbnQgPSB0aGlzLml0ZW1NYW5hZ2VyPy5maW5kSXRlbSh1dWlkKTtcbiAgICAgICAgaWYgKGNvbXBvbmVudC5hY3RpdmUpIHtcbiAgICAgICAgICAgIGF3YWl0IHRoaXMuaXRlbU1hbmFnZXIuY2hhbmdlQ29tcG9uZW50KGNvbXBvbmVudC51dWlkLCAobXV0YXRvcikgPT4ge1xuICAgICAgICAgICAgICAgIG11dGF0b3IuYWN0aXZlID0gZmFsc2U7XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgfVxuICAgICAgICB0aGlzLmZpbmRPckNyZWF0ZURhdGFGb3JDb21wb25lbnQoY29tcG9uZW50KS5zZXNzaW9uS2V5ID0gdW5kZWZpbmVkO1xuICAgICAgICB0aGlzLmRlcmVnaXN0ZXJDb21wb25lbnQodXVpZCk7XG4gICAgICAgIHRoaXMuc3luY1NlcnZpY2Uuc3luYygpO1xuICAgIH1cbiAgICBhc3luYyByZWxvYWRDb21wb25lbnQodXVpZCkge1xuICAgICAgICB0aGlzLmxvZygnUmVsb2FkaW5nIGNvbXBvbmVudCcsIHV1aWQpO1xuICAgICAgICAvKiBEbyBzb2Z0IGRlYWN0aXZhdGUgKi9cbiAgICAgICAgY29uc3QgY29tcG9uZW50ID0gdGhpcy5pdGVtTWFuYWdlcj8uZmluZEl0ZW0odXVpZCk7XG4gICAgICAgIGF3YWl0IHRoaXMuaXRlbU1hbmFnZXIuY2hhbmdlQ29tcG9uZW50KGNvbXBvbmVudC51dWlkLCAobXV0YXRvcikgPT4ge1xuICAgICAgICAgICAgbXV0YXRvci5hY3RpdmUgPSBmYWxzZTtcbiAgICAgICAgfSk7XG4gICAgICAgIHRoaXMuZGVyZWdpc3RlckNvbXBvbmVudChjb21wb25lbnQudXVpZCk7XG4gICAgICAgIC8qIERvIHNvZnQgYWN0aXZhdGUgKi9cbiAgICAgICAgcmV0dXJuIG5ldyBQcm9taXNlKChyZXNvbHZlKSA9PiB7XG4gICAgICAgICAgICB0aGlzLnRpbWVvdXQoYXN5bmMgKCkgPT4ge1xuICAgICAgICAgICAgICAgIGF3YWl0IHRoaXMuaXRlbU1hbmFnZXIuY2hhbmdlQ29tcG9uZW50KGNvbXBvbmVudC51dWlkLCAobXV0YXRvcikgPT4ge1xuICAgICAgICAgICAgICAgICAgICBtdXRhdG9yLmFjdGl2ZSA9IHRydWU7XG4gICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgICAgdGhpcy5yZWdpc3RlckNvbXBvbmVudChjb21wb25lbnQudXVpZCk7XG4gICAgICAgICAgICAgICAgcmVzb2x2ZSgpO1xuICAgICAgICAgICAgfSk7XG4gICAgICAgIH0pO1xuICAgIH1cbiAgICBhc3luYyBkZWxldGVDb21wb25lbnQodXVpZCkge1xuICAgICAgICBhd2FpdCB0aGlzLml0ZW1NYW5hZ2VyLnNldEl0ZW1Ub0JlRGVsZXRlZCh1dWlkKTtcbiAgICAgICAgdGhpcy5zeW5jU2VydmljZS5zeW5jKCk7XG4gICAgfVxuICAgIGlzQ29tcG9uZW50QWN0aXZlKGNvbXBvbmVudCkge1xuICAgICAgICByZXR1cm4gY29tcG9uZW50LmFjdGl2ZTtcbiAgICB9XG4gICAgaWZyYW1lRm9yQ29tcG9uZW50KHV1aWQpIHtcbiAgICAgICAgY29uc3QgaWZyYW1lcyA9IEFycmF5LmZyb20oZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoJ2lmcmFtZScpKTtcbiAgICAgICAgZm9yIChjb25zdCBmcmFtZSBvZiBpZnJhbWVzKSB7XG4gICAgICAgICAgICBjb25zdCBjb21wb25lbnRJZCA9IGZyYW1lLmRhdGFzZXQuY29tcG9uZW50SWQ7XG4gICAgICAgICAgICBpZiAoY29tcG9uZW50SWQgPT09IHV1aWQpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gZnJhbWU7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICB9XG4gICAgZm9jdXNDaGFuZ2VkRm9yQ29tcG9uZW50KGNvbXBvbmVudCkge1xuICAgICAgICBjb25zdCBmb2N1c2VkID0gZG9jdW1lbnQuYWN0aXZlRWxlbWVudCA9PT0gdGhpcy5pZnJhbWVGb3JDb21wb25lbnQoY29tcG9uZW50LnV1aWQpO1xuICAgICAgICBmb3IgKGNvbnN0IGhhbmRsZXIgb2YgdGhpcy5oYW5kbGVycykge1xuICAgICAgICAgICAgLyogTm90aWZ5IGFsbCBoYW5kbGVycywgYW5kIG5vdCBqdXN0IG9uZXMgdGhhdCBtYXRjaCB0aGlzIGNvbXBvbmVudCB0eXBlICovXG4gICAgICAgICAgICBoYW5kbGVyLmZvY3VzSGFuZGxlciAmJiBoYW5kbGVyLmZvY3VzSGFuZGxlcihjb21wb25lbnQsIGZvY3VzZWQpO1xuICAgICAgICB9XG4gICAgfVxuICAgIGhhbmRsZVNldFNpemVFdmVudChjb21wb25lbnQsIGRhdGEpIHtcbiAgICAgICAgY29uc3Qgc2V0U2l6ZSA9IChlbGVtZW50LCBzaXplKSA9PiB7XG4gICAgICAgICAgICBjb25zdCB3aWR0aFN0cmluZyA9IGlzU3RyaW5nKHNpemUud2lkdGgpID8gc2l6ZS53aWR0aCA6IGAke2RhdGEud2lkdGh9cHhgO1xuICAgICAgICAgICAgY29uc3QgaGVpZ2h0U3RyaW5nID0gaXNTdHJpbmcoc2l6ZS5oZWlnaHQpID8gc2l6ZS5oZWlnaHQgOiBgJHtkYXRhLmhlaWdodH1weGA7XG4gICAgICAgICAgICBpZiAoZWxlbWVudCkge1xuICAgICAgICAgICAgICAgIGVsZW1lbnQuc2V0QXR0cmlidXRlKCdzdHlsZScsIGB3aWR0aDoke3dpZHRoU3RyaW5nfTsgaGVpZ2h0OiR7aGVpZ2h0U3RyaW5nfTtgKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfTtcbiAgICAgICAgaWYgKGNvbXBvbmVudC5hcmVhID09PSBDb21wb25lbnRBcmVhLlJvb21zIHx8IGNvbXBvbmVudC5hcmVhID09PSBDb21wb25lbnRBcmVhLk1vZGFsKSB7XG4gICAgICAgICAgICBjb25zdCBzZWxlY3RvciA9IGNvbXBvbmVudC5hcmVhID09PSBDb21wb25lbnRBcmVhLlJvb21zID8gJ2lubmVyJyA6ICdvdXRlcic7XG4gICAgICAgICAgICBjb25zdCBjb250ZW50ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoYGNvbXBvbmVudC1jb250ZW50LSR7c2VsZWN0b3J9LSR7Y29tcG9uZW50LnV1aWR9YCk7XG4gICAgICAgICAgICBpZiAoY29udGVudCkge1xuICAgICAgICAgICAgICAgIHNldFNpemUoY29udGVudCwgZGF0YSk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICBjb25zdCBpZnJhbWUgPSB0aGlzLmlmcmFtZUZvckNvbXBvbmVudChjb21wb25lbnQudXVpZCk7XG4gICAgICAgICAgICBpZiAoIWlmcmFtZSkge1xuICAgICAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHNldFNpemUoaWZyYW1lLCBkYXRhKTtcbiAgICAgICAgICAgIC8qKlxuICAgICAgICAgICAgICogT24gRmlyZWZveCwgcmVzaXppbmcgYSBjb21wb25lbnQgaWZyYW1lIGRvZXMgbm90IHNlZW0gdG8gaGF2ZSBhbiBlZmZlY3Qgd2l0aFxuICAgICAgICAgICAgICogZWRpdG9yLXN0YWNrIGV4dGVuc2lvbnMuIFNpemluZyB0aGUgcGFyZW50IGRvZXMgdGhlIHRyaWNrLCBob3dldmVyLCB3ZSBjYW4ndCBkb1xuICAgICAgICAgICAgICogdGhpcyBnbG9iYWxseSwgb3RoZXJ3aXNlLCBhcmVhcyBsaWtlIHRoZSBub3RlLXRhZ3Mgd2lsbCBub3QgYmUgYWJsZSB0byBleHBhbmRcbiAgICAgICAgICAgICAqIG91dHNpZGUgb2YgdGhlIGJvdW5kcyAodG8gZGlzcGxheSBhdXRvY29tcGxldGUsIGZvciBleGFtcGxlKS5cbiAgICAgICAgICAgICAqL1xuICAgICAgICAgICAgaWYgKGNvbXBvbmVudC5hcmVhID09PSBDb21wb25lbnRBcmVhLkVkaXRvclN0YWNrKSB7XG4gICAgICAgICAgICAgICAgY29uc3QgcGFyZW50ID0gaWZyYW1lLnBhcmVudEVsZW1lbnQ7XG4gICAgICAgICAgICAgICAgaWYgKHBhcmVudCkge1xuICAgICAgICAgICAgICAgICAgICBzZXRTaXplKHBhcmVudCwgZGF0YSk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfVxuICAgIGVkaXRvckZvck5vdGUobm90ZSkge1xuICAgICAgICBjb25zdCBlZGl0b3JzID0gdGhpcy5jb21wb25lbnRzRm9yQXJlYShDb21wb25lbnRBcmVhLkVkaXRvcik7XG4gICAgICAgIGZvciAoY29uc3QgZWRpdG9yIG9mIGVkaXRvcnMpIHtcbiAgICAgICAgICAgIGlmIChlZGl0b3IuaXNFeHBsaWNpdGx5RW5hYmxlZEZvckl0ZW0obm90ZS51dWlkKSkge1xuICAgICAgICAgICAgICAgIHJldHVybiBlZGl0b3I7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgbGV0IGRlZmF1bHRFZGl0b3I7XG4gICAgICAgIC8qIE5vIGVkaXRvciBmb3VuZCBmb3Igbm90ZS4gVXNlIGRlZmF1bHQgZWRpdG9yLCBpZiBub3RlIGRvZXMgbm90IHByZWZlciBzeXN0ZW0gZWRpdG9yICovXG4gICAgICAgIGlmICh0aGlzLmlzTW9iaWxlKSB7XG4gICAgICAgICAgICBpZiAoIW5vdGUubW9iaWxlUHJlZmVyc1BsYWluRWRpdG9yKSB7XG4gICAgICAgICAgICAgICAgZGVmYXVsdEVkaXRvciA9IHRoaXMuZ2V0RGVmYXVsdEVkaXRvcigpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgaWYgKCFub3RlLnByZWZlcnNQbGFpbkVkaXRvcikge1xuICAgICAgICAgICAgICAgIGRlZmF1bHRFZGl0b3IgPSB0aGlzLmdldERlZmF1bHRFZGl0b3IoKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICBpZiAoZGVmYXVsdEVkaXRvciAmJiAhZGVmYXVsdEVkaXRvci5pc0V4cGxpY2l0bHlEaXNhYmxlZEZvckl0ZW0obm90ZS51dWlkKSkge1xuICAgICAgICAgICAgcmV0dXJuIGRlZmF1bHRFZGl0b3I7XG4gICAgICAgIH1cbiAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICByZXR1cm4gdW5kZWZpbmVkO1xuICAgICAgICB9XG4gICAgfVxuICAgIGdldERlZmF1bHRFZGl0b3IoKSB7XG4gICAgICAgIGNvbnN0IGVkaXRvcnMgPSB0aGlzLmNvbXBvbmVudHNGb3JBcmVhKENvbXBvbmVudEFyZWEuRWRpdG9yKTtcbiAgICAgICAgaWYgKHRoaXMuaXNNb2JpbGUpIHtcbiAgICAgICAgICAgIHJldHVybiBlZGl0b3JzLmZpbHRlcihlID0+IHtcbiAgICAgICAgICAgICAgICByZXR1cm4gZS5pc01vYmlsZURlZmF1bHQ7XG4gICAgICAgICAgICB9KVswXTtcbiAgICAgICAgfVxuICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgIHJldHVybiBlZGl0b3JzLmZpbHRlcigoZSkgPT4gZS5pc0RlZmF1bHRFZGl0b3IoKSlbMF07XG4gICAgICAgIH1cbiAgICB9XG4gICAgcGVybWlzc2lvbnNTdHJpbmdGb3JQZXJtaXNzaW9ucyhwZXJtaXNzaW9ucywgY29tcG9uZW50KSB7XG4gICAgICAgIGxldCBmaW5hbFN0cmluZyA9ICcnO1xuICAgICAgICBjb25zdCBwZXJtaXNzaW9uc0NvdW50ID0gcGVybWlzc2lvbnMubGVuZ3RoO1xuICAgICAgICBjb25zdCBhZGRTZXBhcmF0b3IgPSAoaW5kZXgsIGxlbmd0aCkgPT4ge1xuICAgICAgICAgICAgaWYgKGluZGV4ID4gMCkge1xuICAgICAgICAgICAgICAgIGlmIChpbmRleCA9PT0gbGVuZ3RoIC0gMSkge1xuICAgICAgICAgICAgICAgICAgICBpZiAobGVuZ3RoID09PSAyKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gJyBhbmQgJztcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiAnLCBhbmQgJztcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuICcsICc7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICAgICAgcmV0dXJuICcnO1xuICAgICAgICB9O1xuICAgICAgICBwZXJtaXNzaW9ucy5mb3JFYWNoKChwZXJtaXNzaW9uLCBpbmRleCkgPT4ge1xuICAgICAgICAgICAgaWYgKHBlcm1pc3Npb24ubmFtZSA9PT0gQ29tcG9uZW50QWN0aW9uLlN0cmVhbUl0ZW1zKSB7XG4gICAgICAgICAgICAgICAgY29uc3QgdHlwZXMgPSBwZXJtaXNzaW9uLmNvbnRlbnRfdHlwZXMubWFwKCh0eXBlKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IGRlc2MgPSBkaXNwbGF5U3RyaW5nRm9yQ29udGVudFR5cGUodHlwZSk7XG4gICAgICAgICAgICAgICAgICAgIGlmIChkZXNjKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gZGVzYyArICdzJztcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiAnaXRlbXMgb2YgdHlwZSAnICsgdHlwZTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICAgIGxldCB0eXBlc1N0cmluZyA9ICcnO1xuICAgICAgICAgICAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgdHlwZXMubGVuZ3RoOyBpKyspIHtcbiAgICAgICAgICAgICAgICAgICAgY29uc3QgdHlwZSA9IHR5cGVzW2ldO1xuICAgICAgICAgICAgICAgICAgICB0eXBlc1N0cmluZyArPSBhZGRTZXBhcmF0b3IoaSwgdHlwZXMubGVuZ3RoICsgcGVybWlzc2lvbnNDb3VudCAtIGluZGV4IC0gMSk7XG4gICAgICAgICAgICAgICAgICAgIHR5cGVzU3RyaW5nICs9IHR5cGU7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGZpbmFsU3RyaW5nICs9IGFkZFNlcGFyYXRvcihpbmRleCwgcGVybWlzc2lvbnNDb3VudCk7XG4gICAgICAgICAgICAgICAgZmluYWxTdHJpbmcgKz0gdHlwZXNTdHJpbmc7XG4gICAgICAgICAgICAgICAgaWYgKHR5cGVzLmxlbmd0aCA+PSAyICYmIGluZGV4IDwgcGVybWlzc2lvbnNDb3VudCAtIDEpIHtcbiAgICAgICAgICAgICAgICAgICAgLyogSWYgeW91IGhhdmUgYSBsaXN0IG9mIHR5cGVzLCBhbmQgc3RpbGwgYW4gYWRkaXRpb25hbCByb290LWxldmVsXG4gICAgICAgICAgICAgICAgICAgICAgIHBlcm1pc3Npb24gY29taW5nIHVwLCBhZGQgYSBjb21tYSAqL1xuICAgICAgICAgICAgICAgICAgICBmaW5hbFN0cmluZyArPSAnLCAnO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGVsc2UgaWYgKHBlcm1pc3Npb24ubmFtZSA9PT0gQ29tcG9uZW50QWN0aW9uLlN0cmVhbUNvbnRleHRJdGVtKSB7XG4gICAgICAgICAgICAgICAgY29uc3QgbWFwcGluZyA9IHtcbiAgICAgICAgICAgICAgICAgICAgW0NvbXBvbmVudEFyZWEuRWRpdG9yU3RhY2tdOiAnd29ya2luZyBub3RlJyxcbiAgICAgICAgICAgICAgICAgICAgW0NvbXBvbmVudEFyZWEuTm90ZVRhZ3NdOiAnd29ya2luZyBub3RlJyxcbiAgICAgICAgICAgICAgICAgICAgW0NvbXBvbmVudEFyZWEuRWRpdG9yXTogJ3dvcmtpbmcgbm90ZSdcbiAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgICAgIGZpbmFsU3RyaW5nICs9IGFkZFNlcGFyYXRvcihpbmRleCwgcGVybWlzc2lvbnNDb3VudCk7XG4gICAgICAgICAgICAgICAgZmluYWxTdHJpbmcgKz0gbWFwcGluZ1tjb21wb25lbnQuYXJlYV07XG4gICAgICAgICAgICB9XG4gICAgICAgIH0pO1xuICAgICAgICByZXR1cm4gZmluYWxTdHJpbmcgKyAnLic7XG4gICAgfVxufVxuIl0sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTs7Ozs7O0FBS0E7QUFBQTtBQUNBO0FBQUE7QUFBQTtBQUNBO0FBREE7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFGQTtBQUFBO0FBQUE7QUFDQTtBQURBO0FBQUE7QUFBQTtBQUNBO0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFSQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBREE7QUFPQTtBQVRBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFVQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFwQ0E7QUFvQ0E7QUFDQTtBQXRDQTtBQUFBO0FBQUE7QUFtREE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBeERBO0FBQUE7QUFBQTtBQXlEQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQXpFQTtBQUFBO0FBQUE7QUEyRUE7QUFDQTtBQUNBO0FBN0VBO0FBQUE7QUFBQTtBQThFQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFFQTtBQUNBOzs7OztBQUlBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBaEJBO0FBQUE7QUFBQTtBQUNBO0FBREE7QUFnQkE7QUFBQTtBQUNBO0FBQUE7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUVBO0FBQ0E7QUFDQTtBQUNBOzs7O0FBekJBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFDQTtBQTJCQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBL0dBO0FBQUE7QUFBQTtBQWdIQTtBQUNBO0FBREE7QUFBQTtBQUFBO0FBQ0E7QUFEQTtBQUFBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBRkE7QUFDQTtBQUdBO0FBQ0E7QUFDQTtBQWxCQTtBQUNBO0FBQUE7QUFBQTtBQUNBO0FBREE7QUFrQkE7QUFuQkE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUNBO0FBbUJBO0FBQ0E7QUFEQTtBQXBCQTtBQUFBO0FBQUE7QUFDQTtBQURBO0FBQUE7QUFBQTtBQUNBO0FBdUJBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUE1QkE7QUFBQTtBQUFBO0FBQ0E7QUFEQTtBQTRCQTtBQUFBO0FBQ0E7QUFBQTtBQUVBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUFBO0FBQUE7QUFDQTtBQUFBO0FBQUE7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQVRBO0FBQ0E7QUFEQTtBQVVBO0FBQ0E7QUFDQTtBQS9DQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFDQTtBQXNCQTtBQUFBO0FBQ0E7QUFEQTtBQXlCQTtBQWhEQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBaURBO0FBaktBO0FBQUE7QUFBQTtBQW1LQTtBQUlBO0FBQ0E7QUFDQTtBQUNBO0FBMUtBO0FBQUE7QUFBQTtBQTRLQTtBQUdBO0FBR0E7QUFDQTtBQUFBO0FBQ0E7QUFwTEE7QUFBQTtBQUFBO0FBcUxBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQTVMQTtBQUFBO0FBQUE7QUE2TEE7QUFBQTtBQUFBO0FBQ0E7QUFEQTtBQUNBO0FBQUE7QUFDQTtBQUNBOzs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFUQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBVUE7QUF2TUE7QUFBQTtBQUFBO0FBeU1BO0FBQ0E7QUFDQTtBQUNBO0FBNU1BO0FBQUE7QUFBQTtBQThNQTtBQUNBO0FBRkE7QUFBQTtBQUFBO0FBQ0E7QUFEQTtBQUdBO0FBQUE7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFSQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQ0E7QUFRQTtBQUNBO0FBdk5BO0FBQUE7QUFBQTtBQXlOQTtBQUNBO0FBQ0E7QUFEQTtBQUdBO0FBQ0E7QUFDQTtBQUZBO0FBSUE7QUFDQTtBQWxPQTtBQUFBO0FBQUE7QUFtT0E7QUFBQTtBQUFBO0FBQ0E7QUFEQTtBQUNBO0FBQUE7QUFDQTtBQUFBO0FBRUE7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBUEE7QUFBQTtBQUFBO0FBQ0E7QUFEQTtBQVFBO0FBQUE7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFmQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBZ0JBO0FBakJBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFrQkE7QUFyUEE7QUFBQTtBQUFBO0FBdVBBO0FBQ0E7QUFDQTtBQXpQQTtBQUFBO0FBQUE7QUEyUEE7O0FBRUE7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUVBO0FBQ0E7QUFBQTtBQUFBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQUE7QUFBQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQTVRQTtBQUFBO0FBQUE7QUE4UUE7QUFFQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFSQTtBQVVBO0FBQ0E7QUFDQTtBQWhTQTtBQUFBO0FBQUE7QUFpU0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQTFTQTtBQUFBO0FBQUE7QUE0U0E7QUFDQTtBQUNBO0FBQ0E7QUFEQTtBQUdBO0FBQ0E7QUFsVEE7QUFBQTtBQUFBO0FBb1RBO0FBQ0E7QUFDQTtBQUNBO0FBSEE7QUFLQTtBQUNBO0FBMVRBO0FBQUE7QUFBQTtBQTRUQTtBQUlBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUVBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQURBO0FBQ0E7QUFqVkE7QUFBQTtBQUFBO0FBbVZBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBRUE7QUFFQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQW5XQTtBQUFBO0FBQUE7QUFxV0E7QUFDQTtBQUNBO0FBQ0E7QUF4V0E7QUFBQTtBQUFBO0FBMFdBO0FBQ0E7QUFDQTtBQTVXQTtBQUFBO0FBQUE7QUE2V0E7QUFDQTtBQUFBO0FBQ0E7QUFGQTtBQUVBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFBQTtBQUFBO0FBQ0E7QUFDQTtBQVBBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFEQTtBQU1BO0FBQ0E7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUNBO0FBREE7QUFDQTtBQUFBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBUkE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQVNBO0FBQ0E7QUFBQTtBQUNBO0FBallBO0FBQUE7QUFBQTtBQWtZQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBRUE7QUFDQTtBQUNBO0FBQUE7QUFTQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUVBO0FBQ0E7QUFFQTtBQUNBO0FBRUE7QUFDQTtBQUdBO0FBQ0E7QUFFQTtBQUNBO0FBRUE7QUFDQTtBQUNBO0FBRUE7QUFDQTtBQUVBO0FBQ0E7QUFFQTtBQUNBO0FBQ0E7QUFyREE7QUFBQTtBQUFBO0FBQ0E7QUFEQTtBQUFBO0FBQUE7QUFDQTtBQXFEQTtBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBM0RBO0FBQ0E7QUFvREE7QUFBQTtBQU9BO0FBNURBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUE2REE7QUEvYkE7QUFBQTtBQUFBO0FBZ2NBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFEQTtBQUNBO0FBQUE7QUFDQTtBQUdBO0FBQ0E7QUFkQTtBQUFBO0FBQUE7QUFDQTtBQURBO0FBY0E7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUNBO0FBREE7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUhBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFJQTtBQWxCQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBbUJBO0FBbmRBO0FBQUE7QUFBQTtBQW9kQTtBQUNBO0FBQUE7QUFFQTtBQUNBO0FBRkE7QUFLQTtBQUNBO0FBQUE7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBTEE7QUFPQTtBQUNBO0FBQ0E7QUFDQTtBQURBO0FBWkE7QUFBQTtBQUFBO0FBQ0E7QUFEQTtBQWFBO0FBQUE7QUFDQTtBQUNBO0FBZkE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUNBO0FBZUE7QUFDQTtBQUNBO0FBN2VBO0FBQUE7QUFBQTtBQThlQTtBQUNBO0FBQUE7QUFFQTtBQURBO0FBSUE7QUFDQTtBQUFBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBSkE7QUFNQTtBQUNBO0FBVEE7QUFBQTtBQUFBO0FBQ0E7QUFEQTtBQVNBO0FBQUE7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFoQkE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQWlCQTtBQUNBO0FBdGdCQTtBQUFBO0FBQUE7QUF3Z0JBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUE1Z0JBO0FBQUE7QUFBQTtBQTZnQkE7QUFEQTtBQUFBO0FBQUE7QUFDQTtBQURBO0FBRUE7QUFBQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQVRBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFDQTtBQVNBO0FBQ0E7QUF2aEJBO0FBQUE7QUFBQTtBQXloQkE7QUFDQTtBQUNBO0FBQ0E7QUE1aEJBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFDQTtBQURBO0FBQ0E7QUFEQTtBQUFBO0FBQUE7QUFBQTtBQThoQkE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBbGlCQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQ0E7QUFEQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQ0E7QUFraUJBO0FBQ0E7QUFwaUJBO0FBQUE7QUFBQTtBQUFBO0FBQ0E7QUFvaUJBO0FBQ0E7QUFEQTtBQUdBO0FBQ0E7QUFDQTtBQTFpQkE7QUFDQTtBQURBO0FBQUE7QUFBQTtBQUFBO0FBQ0E7QUFEQTtBQUFBO0FBQUE7QUFDQTtBQURBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFDQTtBQURBO0FBQUE7QUFBQTtBQUNBO0FBREE7QUFBQTtBQUFBO0FBQ0E7QUFEQTtBQUFBO0FBQ0E7QUFEQTtBQUFBO0FBQUE7QUFBQTtBQUNBO0FBREE7QUFDQTtBQURBO0FBQUE7QUFDQTtBQURBO0FBQUE7QUFDQTtBQURBO0FBNmlCQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBRkE7QUFJQTtBQUNBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFEQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFFQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQUE7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBcEJBO0FBQUE7QUFBQTtBQUFBO0FBQ0E7QUFvQkE7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQXhCQTtBQUNBO0FBREE7QUEwQkE7QUFDQTtBQUNBO0FBNUJBO0FBQUE7QUE4QkE7QUFBQTtBQUFBO0FBQ0E7QUFDQTtBQUFBO0FBQUE7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBdkNBO0FBdUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQUE7QUFBQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBbkRBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQ0E7QUF4akJBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQ0E7QUFEQTtBQUFBO0FBQUE7QUFDQTtBQURBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUE0bUJBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFFQTtBQUNBO0FBRkE7QUFLQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQ0E7QUFEQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQUE7QUFBQTtBQUFBO0FBQ0E7QUFKQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUtBO0FBMW5CQTtBQUFBO0FBQUE7QUEybkJBO0FBQ0E7QUFBQTtBQUNBO0FBQUE7QUFBQTtBQUNBO0FBRUE7QUFDQTtBQUZBO0FBS0E7QUFBQTtBQUNBO0FBREE7QUFBQTtBQUFBO0FBQUE7QUFDQTtBQUNBO0FBQUE7QUFGQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUdBO0FBQ0E7QUFKQTtBQUFBO0FBQUE7QUFBQTtBQUNBO0FBREE7QUFBQTtBQUNBO0FBREE7QUFLQTtBQUNBO0FBTkE7QUFPQTtBQUNBO0FBUkE7QUFBQTtBQUNBO0FBREE7QUFTQTtBQVRBO0FBQUE7QUFXQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQWpCQTtBQWlCQTtBQUNBO0FBbEJBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFDQTtBQURBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFDQTtBQURBO0FBQ0E7QUFEQTtBQUFBO0FBQUE7QUFBQTtBQUNBO0FBREE7QUFBQTtBQUFBO0FBQ0E7QUFEQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQ0E7QUFEQTtBQUFBO0FBQUE7QUFDQTtBQURBO0FBQUE7QUFBQTtBQUNBO0FBREE7QUFBQTtBQUNBO0FBREE7QUFBQTtBQUFBO0FBQUE7QUFDQTtBQURBO0FBQ0E7QUFEQTtBQUFBO0FBQ0E7QUFEQTtBQUFBO0FBQ0E7QUFEQTtBQW1CQTtBQUNBO0FBQUE7QUFDQTtBQUFBO0FBQ0E7QUFBQTtBQUFBO0FBQUE7QUFDQTtBQUFBO0FBQ0E7QUF4QkE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUF5QkE7QUE3cEJBO0FBQUE7QUFBQTtBQThwQkE7QUFDQTtBQUFBO0FBQUE7QUFBQTtBQUNBO0FBRUE7QUFDQTtBQUZBO0FBS0E7QUFBQTtBQUNBO0FBREE7QUFBQTtBQUFBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUpBO0FBQUE7QUFNQTtBQUNBO0FBQ0E7QUFSQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQ0E7QUFRQTtBQVRBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFDQTtBQURBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFDQTtBQVNBO0FBQ0E7QUFDQTtBQVpBO0FBQUE7QUFBQTtBQUFBO0FBQ0E7QUFZQTtBQUNBO0FBZEE7QUFDQTtBQURBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFDQTtBQURBO0FBQUE7QUFDQTtBQURBO0FBQUE7QUFBQTtBQUNBO0FBREE7QUFBQTtBQUFBO0FBQUE7QUFDQTtBQURBO0FBQUE7QUFBQTtBQUNBO0FBREE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUNBO0FBREE7QUFBQTtBQUFBO0FBQ0E7QUFEQTtBQUFBO0FBQUE7QUFDQTtBQURBO0FBQUE7QUFDQTtBQURBO0FBQUE7QUFBQTtBQUFBO0FBQ0E7QUFEQTtBQUNBO0FBREE7QUFBQTtBQUNBO0FBREE7QUFBQTtBQUNBO0FBREE7QUFxQkE7QUFDQTtBQUFBO0FBQUE7QUFBQTtBQXRCQTtBQUFBO0FBQ0E7QUFEQTtBQXlCQTtBQUNBO0FBQUE7QUFBQTtBQUNBO0FBM0JBO0FBNEJBO0FBQ0E7QUE3QkE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUE4QkE7QUFwc0JBO0FBQUE7QUFBQTtBQXFzQkE7QUFDQTtBQUFBO0FBQ0E7QUFBQTtBQUFBO0FBQ0E7QUFDQTtBQXpzQkE7QUFBQTtBQUFBO0FBMHNCQTtBQUNBO0FBQUE7QUFDQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUVBO0FBQ0E7QUFDQTtBQUpBO0FBSUE7QUFDQTtBQUxBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBTUE7QUFsdEJBO0FBQUE7QUFBQTtBQW90QkE7QUFDQTtBQXJ0QkE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUNBO0FBREE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQ0E7QUF1dEJBO0FBeHRCQTtBQUFBO0FBQ0E7QUFEQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQ0E7QUFEQTtBQUFBO0FBQ0E7QUFEQTtBQUFBO0FBQUE7QUFDQTtBQURBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFDQTtBQSt0QkE7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBcHVCQTtBQUFBO0FBQ0E7QUFEQTtBQXF1QkE7QUFDQTtBQUFBO0FBQ0E7QUFEQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFDQTtBQURBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFDQTtBQUFBO0FBQ0E7QUFGQTtBQUFBO0FBQUE7QUFBQTtBQUNBO0FBREE7QUFBQTtBQUNBO0FBREE7QUFBQTtBQUFBO0FBQUE7QUFDQTtBQURBO0FBQUE7QUFBQTtBQUNBO0FBREE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUNBO0FBREE7QUFBQTtBQUFBO0FBQ0E7QUFEQTtBQUFBO0FBQUE7QUFDQTtBQURBO0FBQUE7QUFDQTtBQURBO0FBQUE7QUFBQTtBQUFBO0FBQ0E7QUFEQTtBQUNBO0FBREE7QUFBQTtBQUNBO0FBREE7QUFBQTtBQUNBO0FBREE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFPQTtBQUNBO0FBOXVCQTtBQUFBO0FBQ0E7QUFEQTtBQUFBO0FBQUE7QUFDQTtBQURBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQ0E7QUFEQTtBQUFBO0FBQUE7QUFDQTtBQURBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFzdkJBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUE1dkJBO0FBQUE7QUFBQTtBQTh2QkE7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUpBO0FBQUE7QUFBQTtBQUNBO0FBREE7QUFBQTtBQUFBO0FBQ0E7QUFLQTtBQUNBO0FBQUE7QUFBQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBREE7QUFDQTtBQUFBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFuQkE7QUFBQTtBQUFBO0FBQ0E7QUFEQTtBQW1CQTtBQUFBO0FBQ0E7QUFDQTtBQXJCQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQ0E7QUFxQkE7QUFDQTtBQUNBO0FBQ0E7QUF6QkE7QUFDQTtBQUlBO0FBQUE7QUFDQTtBQURBO0FBcUJBO0FBMUJBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFDQTtBQTBCQTtBQUNBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBSkE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFDQTtBQURBO0FBQUE7QUFBQTtBQUFBO0FBS0E7QUFFQTtBQUNBO0FBQ0E7QUFseUJBO0FBQUE7QUFBQTtBQW15QkE7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUhBO0FBQUE7QUFJQTtBQURBO0FBQUE7QUFBQTtBQUNBO0FBREE7QUFBQTtBQUFBO0FBR0E7QUFDQTtBQUFBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQVpBO0FBQ0E7QUFDQTtBQUFBO0FBV0E7QUFiQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQ0E7QUFhQTtBQUNBO0FBQ0E7QUFDQTtBQXBCQTtBQW9CQTtBQUNBO0FBckJBO0FBc0JBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQS9DQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUNBO0FBREE7QUFBQTtBQUFBO0FBQ0E7QUFEQTtBQUFBO0FBTEE7QUFzREE7Ozs7O0FBSUE7QUFBQTtBQUFBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUVBO0FBQ0E7QUFDQTtBQXQyQkE7QUFBQTtBQUFBO0FBdzJCQTtBQUNBO0FBejJCQTtBQUFBO0FBQUE7QUEyMkJBO0FBQ0E7QUE1MkJBO0FBQUE7QUFBQTtBQTYyQkE7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUFBO0FBQUE7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQXYzQkE7QUFBQTtBQUFBO0FBeTNCQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUEvM0JBO0FBQUE7QUFBQTtBQWc0QkE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQXA0QkE7QUFBQTtBQUFBO0FBczRCQTtBQUNBO0FBQ0E7QUFDQTtBQUZBO0FBSUE7QUFDQTtBQUNBO0FBNzRCQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUE4NEJBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQXA1QkE7QUFBQTtBQUNBO0FBREE7QUFxNUJBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBSkE7QUFKQTtBQVdBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQXI2QkE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFDQTtBQURBO0FBQUE7QUFBQTtBQUNBO0FBREE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQXU2QkE7QUFDQTtBQUNBO0FBSEE7QUFBQTtBQUFBO0FBQ0E7QUFEQTtBQUlBO0FBQUE7QUFDQTtBQUFBO0FBRUE7QUFDQTtBQUNBO0FBVEE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUNBO0FBU0E7QUFDQTtBQUNBO0FBQ0E7QUFuN0JBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQXE3QkE7QUFDQTtBQUNBO0FBdjdCQTtBQUFBO0FBQUE7QUFBQTtBQUNBO0FBREE7QUFBQTtBQXk3QkE7QUFDQTtBQUNBO0FBMzdCQTtBQTQ3QkE7QUFDQTtBQUNBO0FBOTdCQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUNBO0FBREE7QUFBQTtBQUFBO0FBQ0E7QUFEQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBZzhCQTtBQUNBO0FBQ0E7QUFDQTtBQUpBO0FBQUE7QUFBQTtBQUNBO0FBREE7QUFLQTtBQUFBO0FBQ0E7QUFBQTtBQUVBO0FBQ0E7QUFDQTtBQVZBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFDQTtBQVVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFuOUJBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFDQTtBQURBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFxOUJBO0FBQ0E7QUFDQTtBQXY5QkE7QUFBQTtBQUFBO0FBQUE7QUFD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\n//# sourceURL=webpack-internal:///./lib/services/component_manager.ts\n')},"./lib/services/history/functions.ts":
|
||
/*!*******************************************!*\
|
||
!*** ./lib/services/history/functions.ts ***!
|
||
\*******************************************/
|
||
/*! exports provided: CreateHistoryEntryForPayload */function(module,__webpack_exports__,__webpack_require__){"use strict";eval('__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "CreateHistoryEntryForPayload", function() { return CreateHistoryEntryForPayload; });\n/* harmony import */ var _protocol_payloads_fields__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./../../protocol/payloads/fields */ "./lib/protocol/payloads/fields.ts");\n/* harmony import */ var _note_history_entry__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./note_history_entry */ "./lib/services/history/note_history_entry.ts");\n/* harmony import */ var _Models_content_types__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! @Models/content_types */ "./lib/models/content_types.ts");\nfunction _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\n\n\n\n\nfunction CreateHistoryEntryForPayload(payload) {\n var mapping = _defineProperty({}, _Models_content_types__WEBPACK_IMPORTED_MODULE_2__["ContentType"].Note, _note_history_entry__WEBPACK_IMPORTED_MODULE_1__["NoteHistoryEntry"]);\n\n var type = payload[_protocol_payloads_fields__WEBPACK_IMPORTED_MODULE_0__["PayloadField"].ContentType];\n var historyItemClass = mapping[type];\n\n if (!historyItemClass) {\n throw \'Invalid item history class\';\n } // eslint-disable-next-line new-cap\n\n\n var entry = new historyItemClass(payload);\n return entry;\n}//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9saWIvc2VydmljZXMvaGlzdG9yeS9mdW5jdGlvbnMudHMuanMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly9TTkxpYnJhcnkvLi9saWIvc2VydmljZXMvaGlzdG9yeS9mdW5jdGlvbnMudHM/Zjk3MSJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBQYXlsb2FkRmllbGQgfSBmcm9tICcuLy4uLy4uL3Byb3RvY29sL3BheWxvYWRzL2ZpZWxkcyc7XG5pbXBvcnQgeyBOb3RlSGlzdG9yeUVudHJ5IH0gZnJvbSAnLi9ub3RlX2hpc3RvcnlfZW50cnknO1xuaW1wb3J0IHsgQ29udGVudFR5cGUgfSBmcm9tICdATW9kZWxzL2NvbnRlbnRfdHlwZXMnO1xuZXhwb3J0IGZ1bmN0aW9uIENyZWF0ZUhpc3RvcnlFbnRyeUZvclBheWxvYWQocGF5bG9hZCkge1xuICAgIGNvbnN0IG1hcHBpbmcgPSB7XG4gICAgICAgIFtDb250ZW50VHlwZS5Ob3RlXTogTm90ZUhpc3RvcnlFbnRyeVxuICAgIH07XG4gICAgY29uc3QgdHlwZSA9IHBheWxvYWRbUGF5bG9hZEZpZWxkLkNvbnRlbnRUeXBlXTtcbiAgICBjb25zdCBoaXN0b3J5SXRlbUNsYXNzID0gbWFwcGluZ1t0eXBlXTtcbiAgICBpZiAoIWhpc3RvcnlJdGVtQ2xhc3MpIHtcbiAgICAgICAgdGhyb3cgJ0ludmFsaWQgaXRlbSBoaXN0b3J5IGNsYXNzJztcbiAgICB9XG4gICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIG5ldy1jYXBcbiAgICBjb25zdCBlbnRyeSA9IG5ldyBoaXN0b3J5SXRlbUNsYXNzKHBheWxvYWQpO1xuICAgIHJldHVybiBlbnRyeTtcbn1cbiJdLCJtYXBwaW5ncyI6Ijs7Ozs7OztBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUVBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQ0EiLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./lib/services/history/functions.ts\n')},"./lib/services/history/history_manager.ts":
|
||
/*!*************************************************!*\
|
||
!*** ./lib/services/history/history_manager.ts ***!
|
||
\*************************************************/
|
||
/*! exports provided: SNHistoryManager */function(module,__webpack_exports__,__webpack_require__){"use strict";eval('__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "SNHistoryManager", function() { return SNHistoryManager; });\n/* harmony import */ var _babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @babel/runtime/regenerator */ "./node_modules/@babel/runtime/regenerator/index.js");\n/* harmony import */ var _babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var _Payloads_generator__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! @Payloads/generator */ "./lib/protocol/payloads/generator.ts");\n/* harmony import */ var _Lib_services_pure_service__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! @Lib/services/pure_service */ "./lib/services/pure_service.ts");\n/* harmony import */ var _Services_history_history_session__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! @Services/history/history_session */ "./lib/services/history/history_session.ts");\n/* harmony import */ var _Payloads_sources__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! @Payloads/sources */ "./lib/protocol/payloads/sources.ts");\n/* harmony import */ var _Lib_storage_keys__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! @Lib/storage_keys */ "./lib/storage_keys.ts");\n/* harmony import */ var _Lib_utils__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! @Lib/utils */ "./lib/utils.ts");\n\n\nfunction _typeof(obj) { "@babel/helpers - typeof"; if (typeof Symbol === "function" && typeof Symbol.iterator === "symbol") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }; } return _typeof(obj); }\n\nfunction asyncGeneratorStep(gen, resolve, reject, _next, _throw, key, arg) { try { var info = gen[key](arg); var value = info.value; } catch (error) { reject(error); return; } if (info.done) { resolve(value); } else { Promise.resolve(value).then(_next, _throw); } }\n\nfunction _asyncToGenerator(fn) { return function () { var self = this, args = arguments; return new Promise(function (resolve, reject) { var gen = fn.apply(self, args); function _next(value) { asyncGeneratorStep(gen, resolve, reject, _next, _throw, "next", value); } function _throw(err) { asyncGeneratorStep(gen, resolve, reject, _next, _throw, "throw", err); } _next(undefined); }); }; }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } }\n\nfunction _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); } }\n\nfunction _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; }\n\nfunction _possibleConstructorReturn(self, call) { if (call && (_typeof(call) === "object" || typeof call === "function")) { return call; } return _assertThisInitialized(self); }\n\nfunction _assertThisInitialized(self) { if (self === void 0) { throw new ReferenceError("this hasn\'t been initialised - super() hasn\'t been called"); } return self; }\n\nfunction _get(target, property, receiver) { if (typeof Reflect !== "undefined" && Reflect.get) { _get = Reflect.get; } else { _get = function _get(target, property, receiver) { var base = _superPropBase(target, property); if (!base) return; var desc = Object.getOwnPropertyDescriptor(base, property); if (desc.get) { return desc.get.call(receiver); } return desc.value; }; } return _get(target, property, receiver || target); }\n\nfunction _superPropBase(object, property) { while (!Object.prototype.hasOwnProperty.call(object, property)) { object = _getPrototypeOf(object); if (object === null) break; } return object; }\n\nfunction _getPrototypeOf(o) { _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function _getPrototypeOf(o) { return o.__proto__ || Object.getPrototypeOf(o); }; return _getPrototypeOf(o); }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== "function" && superClass !== null) { throw new TypeError("Super expression must either be null or a function"); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, writable: true, configurable: true } }); if (superClass) _setPrototypeOf(subClass, superClass); }\n\nfunction _setPrototypeOf(o, p) { _setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) { o.__proto__ = p; return o; }; return _setPrototypeOf(o, p); }\n\n\n\n\n\n\n\nvar PERSIST_TIMEOUT = 2000;\n/**\n * The history manager is presently responsible for transient \'session history\',\n * which include keeping track of changes made in the current application session.\n * These change logs (unless otherwise configured) are ephemeral and do not persist\n * past application restart.\n * In the future the history manager will also be responsible for remote server history.\n */\n\nvar SNHistoryManager = /*#__PURE__*/function (_PureService) {\n _inherits(SNHistoryManager, _PureService);\n\n function SNHistoryManager(itemManager, storageService, contentTypes, timeout) {\n var _this;\n\n _classCallCheck(this, SNHistoryManager);\n\n _this = _possibleConstructorReturn(this, _getPrototypeOf(SNHistoryManager).call(this));\n _this.contentTypes = [];\n _this.persistable = false;\n _this.autoOptimize = false;\n _this.itemManager = itemManager;\n _this.storageService = storageService;\n _this.contentTypes = contentTypes;\n _this.timeout = timeout;\n return _this;\n }\n\n _createClass(SNHistoryManager, [{\n key: "deinit",\n value: function deinit() {\n this.itemManager = undefined;\n this.storageService = undefined;\n this.contentTypes.length = 0;\n this.historySession = undefined;\n this.timeout = null;\n\n if (this.removeChangeObserver) {\n this.removeChangeObserver();\n this.removeChangeObserver = null;\n }\n\n _get(_getPrototypeOf(SNHistoryManager.prototype), "deinit", this).call(this);\n }\n }, {\n key: "initializeFromDisk",\n value: function () {\n var _initializeFromDisk = _asyncToGenerator( /*#__PURE__*/_babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0___default.a.mark(function _callee() {\n var autoOptimize;\n return _babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0___default.a.wrap(function _callee$(_context) {\n while (1) {\n switch (_context.prev = _context.next) {\n case 0:\n _context.next = 2;\n return this.storageService.getValue(_Lib_storage_keys__WEBPACK_IMPORTED_MODULE_5__["StorageKey"].SessionHistoryPersistable);\n\n case 2:\n this.persistable = _context.sent;\n _context.next = 5;\n return this.storageService.getValue(_Lib_storage_keys__WEBPACK_IMPORTED_MODULE_5__["StorageKey"].SessionHistoryRevisions).then(function (historyValue) {\n return _Services_history_history_session__WEBPACK_IMPORTED_MODULE_3__["HistorySession"].FromJson(historyValue);\n });\n\n case 5:\n this.historySession = _context.sent;\n _context.next = 8;\n return this.storageService.getValue(_Lib_storage_keys__WEBPACK_IMPORTED_MODULE_5__["StorageKey"].SessionHistoryOptimize);\n\n case 8:\n autoOptimize = _context.sent;\n\n if (Object(_Lib_utils__WEBPACK_IMPORTED_MODULE_6__["isNullOrUndefined"])(autoOptimize)) {\n /** Default to true */\n this.autoOptimize = true;\n } else {\n this.autoOptimize = autoOptimize;\n }\n\n this.addChangeObserver();\n\n case 11:\n case "end":\n return _context.stop();\n }\n }\n }, _callee, this);\n }));\n\n function initializeFromDisk() {\n return _initializeFromDisk.apply(this, arguments);\n }\n\n return initializeFromDisk;\n }()\n }, {\n key: "addChangeObserver",\n value: function addChangeObserver() {\n var _this2 = this;\n\n this.removeChangeObserver = this.itemManager.addObserver(this.contentTypes, function (changed, inserted, discarded, source) {\n var items = Object(_Lib_utils__WEBPACK_IMPORTED_MODULE_6__["concatArrays"])(changed, inserted, discarded);\n\n if (source === _Payloads_sources__WEBPACK_IMPORTED_MODULE_4__["PayloadSource"].LocalChanged) {\n return;\n }\n\n var _iteratorNormalCompletion = true;\n var _didIteratorError = false;\n var _iteratorError = undefined;\n\n try {\n for (var _iterator = items[Symbol.iterator](), _step; !(_iteratorNormalCompletion = (_step = _iterator.next()).done); _iteratorNormalCompletion = true) {\n var item = _step.value;\n\n try {\n if (!item.deleted && !item.errorDecrypting) {\n _this2.addHistoryEntryForItem(item);\n }\n } catch (e) {\n console.error(\'Unable to add item history entry:\', e);\n }\n }\n } catch (err) {\n _didIteratorError = true;\n _iteratorError = err;\n } finally {\n try {\n if (!_iteratorNormalCompletion && _iterator.return != null) {\n _iterator.return();\n }\n } finally {\n if (_didIteratorError) {\n throw _iteratorError;\n }\n }\n }\n });\n }\n }, {\n key: "isDiskEnabled",\n value: function isDiskEnabled() {\n return this.persistable;\n }\n }, {\n key: "isAutoOptimizeEnabled",\n value: function isAutoOptimizeEnabled() {\n return this.autoOptimize;\n }\n }, {\n key: "saveToDisk",\n value: function () {\n var _saveToDisk = _asyncToGenerator( /*#__PURE__*/_babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0___default.a.mark(function _callee2() {\n return _babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0___default.a.wrap(function _callee2$(_context2) {\n while (1) {\n switch (_context2.prev = _context2.next) {\n case 0:\n if (this.persistable) {\n _context2.next = 2;\n break;\n }\n\n return _context2.abrupt("return");\n\n case 2:\n this.storageService.setValue(_Lib_storage_keys__WEBPACK_IMPORTED_MODULE_5__["StorageKey"].SessionHistoryRevisions, this.historySession);\n\n case 3:\n case "end":\n return _context2.stop();\n }\n }\n }, _callee2, this);\n }));\n\n function saveToDisk() {\n return _saveToDisk.apply(this, arguments);\n }\n\n return saveToDisk;\n }()\n }, {\n key: "setSessionItemRevisionThreshold",\n value: function setSessionItemRevisionThreshold(threshold) {\n this.historySession.setItemRevisionThreshold(threshold);\n }\n }, {\n key: "addHistoryEntryForItem",\n value: function () {\n var _addHistoryEntryForItem = _asyncToGenerator( /*#__PURE__*/_babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0___default.a.mark(function _callee3(item) {\n var _this3 = this;\n\n var payload, entry;\n return _babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0___default.a.wrap(function _callee3$(_context3) {\n while (1) {\n switch (_context3.prev = _context3.next) {\n case 0:\n payload = Object(_Payloads_generator__WEBPACK_IMPORTED_MODULE_1__["CreateSourcedPayloadFromObject"])(item, _Payloads_sources__WEBPACK_IMPORTED_MODULE_4__["PayloadSource"].SessionHistory);\n entry = this.historySession.addEntryForPayload(payload);\n\n if (this.autoOptimize) {\n this.historySession.optimizeHistoryForItem(item.uuid);\n }\n\n if (entry && this.persistable) {\n /** Debounce, clear existing timeout */\n if (this.saveTimeout) {\n if (this.timeout.hasOwnProperty(\'cancel\')) {\n this.timeout.cancel(this.saveTimeout);\n } else {\n clearTimeout(this.saveTimeout);\n }\n }\n\n ;\n this.saveTimeout = this.timeout(function () {\n _this3.saveToDisk();\n }, PERSIST_TIMEOUT);\n }\n\n case 4:\n case "end":\n return _context3.stop();\n }\n }\n }, _callee3, this);\n }));\n\n function addHistoryEntryForItem(_x) {\n return _addHistoryEntryForItem.apply(this, arguments);\n }\n\n return addHistoryEntryForItem;\n }()\n }, {\n key: "historyForItem",\n value: function historyForItem(item) {\n return this.historySession.historyForItem(item.uuid);\n }\n }, {\n key: "clearHistoryForItem",\n value: function () {\n var _clearHistoryForItem = _asyncToGenerator( /*#__PURE__*/_babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0___default.a.mark(function _callee4(item) {\n return _babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0___default.a.wrap(function _callee4$(_context4) {\n while (1) {\n switch (_context4.prev = _context4.next) {\n case 0:\n this.historySession.clearItemHistory(item);\n return _context4.abrupt("return", this.saveToDisk());\n\n case 2:\n case "end":\n return _context4.stop();\n }\n }\n }, _callee4, this);\n }));\n\n function clearHistoryForItem(_x2) {\n return _clearHistoryForItem.apply(this, arguments);\n }\n\n return clearHistoryForItem;\n }()\n }, {\n key: "clearAllHistory",\n value: function () {\n var _clearAllHistory = _asyncToGenerator( /*#__PURE__*/_babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0___default.a.mark(function _callee5() {\n return _babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0___default.a.wrap(function _callee5$(_context5) {\n while (1) {\n switch (_context5.prev = _context5.next) {\n case 0:\n this.historySession.clearAllHistory();\n return _context5.abrupt("return", this.storageService.removeValue(_Lib_storage_keys__WEBPACK_IMPORTED_MODULE_5__["StorageKey"].SessionHistoryRevisions));\n\n case 2:\n case "end":\n return _context5.stop();\n }\n }\n }, _callee5, this);\n }));\n\n function clearAllHistory() {\n return _clearAllHistory.apply(this, arguments);\n }\n\n return clearAllHistory;\n }()\n }, {\n key: "toggleDiskSaving",\n value: function () {\n var _toggleDiskSaving = _asyncToGenerator( /*#__PURE__*/_babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0___default.a.mark(function _callee6() {\n return _babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0___default.a.wrap(function _callee6$(_context6) {\n while (1) {\n switch (_context6.prev = _context6.next) {\n case 0:\n this.persistable = !this.persistable;\n\n if (!this.persistable) {\n _context6.next = 6;\n break;\n }\n\n this.storageService.setValue(_Lib_storage_keys__WEBPACK_IMPORTED_MODULE_5__["StorageKey"].SessionHistoryPersistable, true);\n this.saveToDisk();\n _context6.next = 8;\n break;\n\n case 6:\n this.storageService.setValue(_Lib_storage_keys__WEBPACK_IMPORTED_MODULE_5__["StorageKey"].SessionHistoryPersistable, false);\n return _context6.abrupt("return", this.storageService.removeValue(_Lib_storage_keys__WEBPACK_IMPORTED_MODULE_5__["StorageKey"].SessionHistoryRevisions));\n\n case 8:\n case "end":\n return _context6.stop();\n }\n }\n }, _callee6, this);\n }));\n\n function toggleDiskSaving() {\n return _toggleDiskSaving.apply(this, arguments);\n }\n\n return toggleDiskSaving;\n }()\n }, {\n key: "toggleAutoOptimize",\n value: function () {\n var _toggleAutoOptimize = _asyncToGenerator( /*#__PURE__*/_babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0___default.a.mark(function _callee7() {\n return _babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0___default.a.wrap(function _callee7$(_context7) {\n while (1) {\n switch (_context7.prev = _context7.next) {\n case 0:\n this.autoOptimize = !this.autoOptimize;\n\n if (this.autoOptimize) {\n this.storageService.setValue(_Lib_storage_keys__WEBPACK_IMPORTED_MODULE_5__["StorageKey"].SessionHistoryOptimize, true);\n } else {\n this.storageService.setValue(_Lib_storage_keys__WEBPACK_IMPORTED_MODULE_5__["StorageKey"].SessionHistoryOptimize, false);\n }\n\n case 2:\n case "end":\n return _context7.stop();\n }\n }\n }, _callee7, this);\n }));\n\n function toggleAutoOptimize() {\n return _toggleAutoOptimize.apply(this, arguments);\n }\n\n return toggleAutoOptimize;\n }()\n }]);\n\n return SNHistoryManager;\n}(_Lib_services_pure_service__WEBPACK_IMPORTED_MODULE_2__["PureService"]);//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9saWIvc2VydmljZXMvaGlzdG9yeS9oaXN0b3J5X21hbmFnZXIudHMuanMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly9TTkxpYnJhcnkvLi9saWIvc2VydmljZXMvaGlzdG9yeS9oaXN0b3J5X21hbmFnZXIudHM/NjA1ZCJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDcmVhdGVTb3VyY2VkUGF5bG9hZEZyb21PYmplY3QgfSBmcm9tICdAUGF5bG9hZHMvZ2VuZXJhdG9yJztcbmltcG9ydCB7IFB1cmVTZXJ2aWNlIH0gZnJvbSAnQExpYi9zZXJ2aWNlcy9wdXJlX3NlcnZpY2UnO1xuaW1wb3J0IHsgSGlzdG9yeVNlc3Npb24gfSBmcm9tICdAU2VydmljZXMvaGlzdG9yeS9oaXN0b3J5X3Nlc3Npb24nO1xuaW1wb3J0IHsgUGF5bG9hZFNvdXJjZSB9IGZyb20gJ0BQYXlsb2Fkcy9zb3VyY2VzJztcbmltcG9ydCB7IFN0b3JhZ2VLZXkgfSBmcm9tICdATGliL3N0b3JhZ2Vfa2V5cyc7XG5pbXBvcnQgeyBpc051bGxPclVuZGVmaW5lZCwgY29uY2F0QXJyYXlzIH0gZnJvbSAnQExpYi91dGlscyc7XG5jb25zdCBQRVJTSVNUX1RJTUVPVVQgPSAyMDAwO1xuLyoqXG4gKiBUaGUgaGlzdG9yeSBtYW5hZ2VyIGlzIHByZXNlbnRseSByZXNwb25zaWJsZSBmb3IgdHJhbnNpZW50ICdzZXNzaW9uIGhpc3RvcnknLFxuICogd2hpY2ggaW5jbHVkZSBrZWVwaW5nIHRyYWNrIG9mIGNoYW5nZXMgbWFkZSBpbiB0aGUgY3VycmVudCBhcHBsaWNhdGlvbiBzZXNzaW9uLlxuICogVGhlc2UgY2hhbmdlIGxvZ3MgKHVubGVzcyBvdGhlcndpc2UgY29uZmlndXJlZCkgYXJlIGVwaGVtZXJhbCBhbmQgZG8gbm90IHBlcnNpc3RcbiAqIHBhc3QgYXBwbGljYXRpb24gcmVzdGFydC5cbiAqIEluIHRoZSBmdXR1cmUgdGhlIGhpc3RvcnkgbWFuYWdlciB3aWxsIGFsc28gYmUgcmVzcG9uc2libGUgZm9yIHJlbW90ZSBzZXJ2ZXIgaGlzdG9yeS5cbiAqL1xuZXhwb3J0IGNsYXNzIFNOSGlzdG9yeU1hbmFnZXIgZXh0ZW5kcyBQdXJlU2VydmljZSB7XG4gICAgY29uc3RydWN0b3IoaXRlbU1hbmFnZXIsIHN0b3JhZ2VTZXJ2aWNlLCBjb250ZW50VHlwZXMsIHRpbWVvdXQpIHtcbiAgICAgICAgc3VwZXIoKTtcbiAgICAgICAgdGhpcy5jb250ZW50VHlwZXMgPSBbXTtcbiAgICAgICAgdGhpcy5wZXJzaXN0YWJsZSA9IGZhbHNlO1xuICAgICAgICB0aGlzLmF1dG9PcHRpbWl6ZSA9IGZhbHNlO1xuICAgICAgICB0aGlzLml0ZW1NYW5hZ2VyID0gaXRlbU1hbmFnZXI7XG4gICAgICAgIHRoaXMuc3RvcmFnZVNlcnZpY2UgPSBzdG9yYWdlU2VydmljZTtcbiAgICAgICAgdGhpcy5jb250ZW50VHlwZXMgPSBjb250ZW50VHlwZXM7XG4gICAgICAgIHRoaXMudGltZW91dCA9IHRpbWVvdXQ7XG4gICAgfVxuICAgIGRlaW5pdCgpIHtcbiAgICAgICAgdGhpcy5pdGVtTWFuYWdlciA9IHVuZGVmaW5lZDtcbiAgICAgICAgdGhpcy5zdG9yYWdlU2VydmljZSA9IHVuZGVmaW5lZDtcbiAgICAgICAgdGhpcy5jb250ZW50VHlwZXMubGVuZ3RoID0gMDtcbiAgICAgICAgdGhpcy5oaXN0b3J5U2Vzc2lvbiA9IHVuZGVmaW5lZDtcbiAgICAgICAgdGhpcy50aW1lb3V0ID0gbnVsbDtcbiAgICAgICAgaWYgKHRoaXMucmVtb3ZlQ2hhbmdlT2JzZXJ2ZXIpIHtcbiAgICAgICAgICAgIHRoaXMucmVtb3ZlQ2hhbmdlT2JzZXJ2ZXIoKTtcbiAgICAgICAgICAgIHRoaXMucmVtb3ZlQ2hhbmdlT2JzZXJ2ZXIgPSBudWxsO1xuICAgICAgICB9XG4gICAgICAgIHN1cGVyLmRlaW5pdCgpO1xuICAgIH1cbiAgICBhc3luYyBpbml0aWFsaXplRnJvbURpc2soKSB7XG4gICAgICAgIHRoaXMucGVyc2lzdGFibGUgPSBhd2FpdCB0aGlzLnN0b3JhZ2VTZXJ2aWNlLmdldFZhbHVlKFN0b3JhZ2VLZXkuU2Vzc2lvbkhpc3RvcnlQZXJzaXN0YWJsZSk7XG4gICAgICAgIHRoaXMuaGlzdG9yeVNlc3Npb24gPSBhd2FpdCB0aGlzLnN0b3JhZ2VTZXJ2aWNlLmdldFZhbHVlKFN0b3JhZ2VLZXkuU2Vzc2lvbkhpc3RvcnlSZXZpc2lvbnMpLnRoZW4oKGhpc3RvcnlWYWx1ZSkgPT4ge1xuICAgICAgICAgICAgcmV0dXJuIEhpc3RvcnlTZXNzaW9uLkZyb21Kc29uKGhpc3RvcnlWYWx1ZSk7XG4gICAgICAgIH0pO1xuICAgICAgICBjb25zdCBhdXRvT3B0aW1pemUgPSBhd2FpdCB0aGlzLnN0b3JhZ2VTZXJ2aWNlLmdldFZhbHVlKFN0b3JhZ2VLZXkuU2Vzc2lvbkhpc3RvcnlPcHRpbWl6ZSk7XG4gICAgICAgIGlmIChpc051bGxPclVuZGVmaW5lZChhdXRvT3B0aW1pemUpKSB7XG4gICAgICAgICAgICAvKiogRGVmYXVsdCB0byB0cnVlICovXG4gICAgICAgICAgICB0aGlzLmF1dG9PcHRpbWl6ZSA9IHRydWU7XG4gICAgICAgIH1cbiAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICB0aGlzLmF1dG9PcHRpbWl6ZSA9IGF1dG9PcHRpbWl6ZTtcbiAgICAgICAgfVxuICAgICAgICB0aGlzLmFkZENoYW5nZU9ic2VydmVyKCk7XG4gICAgfVxuICAgIGFkZENoYW5nZU9ic2VydmVyKCkge1xuICAgICAgICB0aGlzLnJlbW92ZUNoYW5nZU9ic2VydmVyID0gdGhpcy5pdGVtTWFuYWdlci5hZGRPYnNlcnZlcih0aGlzLmNvbnRlbnRUeXBlcywgKGNoYW5nZWQsIGluc2VydGVkLCBkaXNjYXJkZWQsIHNvdXJjZSkgPT4ge1xuICAgICAgICAgICAgY29uc3QgaXRlbXMgPSBjb25jYXRBcnJheXMoY2hhbmdlZCwgaW5zZXJ0ZWQsIGRpc2NhcmRlZCk7XG4gICAgICAgICAgICBpZiAoc291cmNlID09PSBQYXlsb2FkU291cmNlLkxvY2FsQ2hhbmdlZCkge1xuICAgICAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGZvciAoY29uc3QgaXRlbSBvZiBpdGVtcykge1xuICAgICAgICAgICAgICAgIHRyeSB7XG4gICAgICAgICAgICAgICAgICAgIGlmICghaXRlbS5kZWxldGVkICYmICFpdGVtLmVycm9yRGVjcnlwdGluZykge1xuICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5hZGRIaXN0b3J5RW50cnlGb3JJdGVtKGl0ZW0pO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGNhdGNoIChlKSB7XG4gICAgICAgICAgICAgICAgICAgIGNvbnNvbGUuZXJyb3IoJ1VuYWJsZSB0byBhZGQgaXRlbSBoaXN0b3J5IGVudHJ5OicsIGUpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgfSk7XG4gICAgfVxuICAgIGlzRGlza0VuYWJsZWQoKSB7XG4gICAgICAgIHJldHVybiB0aGlzLnBlcnNpc3RhYmxlO1xuICAgIH1cbiAgICBpc0F1dG9PcHRpbWl6ZUVuYWJsZWQoKSB7XG4gICAgICAgIHJldHVybiB0aGlzLmF1dG9PcHRpbWl6ZTtcbiAgICB9XG4gICAgYXN5bmMgc2F2ZVRvRGlzaygpIHtcbiAgICAgICAgaWYgKCF0aGlzLnBlcnNpc3RhYmxlKSB7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cbiAgICAgICAgdGhpcy5zdG9yYWdlU2VydmljZS5zZXRWYWx1ZShTdG9yYWdlS2V5LlNlc3Npb25IaXN0b3J5UmV2aXNpb25zLCB0aGlzLmhpc3RvcnlTZXNzaW9uKTtcbiAgICB9XG4gICAgc2V0U2Vzc2lvbkl0ZW1SZXZpc2lvblRocmVzaG9sZCh0aHJlc2hvbGQpIHtcbiAgICAgICAgdGhpcy5oaXN0b3J5U2Vzc2lvbi5zZXRJdGVtUmV2aXNpb25UaHJlc2hvbGQodGhyZXNob2xkKTtcbiAgICB9XG4gICAgYXN5bmMgYWRkSGlzdG9yeUVudHJ5Rm9ySXRlbShpdGVtKSB7XG4gICAgICAgIGNvbnN0IHBheWxvYWQgPSBDcmVhdGVTb3VyY2VkUGF5bG9hZEZyb21PYmplY3QoaXRlbSwgUGF5bG9hZFNvdXJjZS5TZXNzaW9uSGlzdG9yeSk7XG4gICAgICAgIGNvbnN0IGVudHJ5ID0gdGhpcy5oaXN0b3J5U2Vzc2lvbi5hZGRFbnRyeUZvclBheWxvYWQocGF5bG9hZCk7XG4gICAgICAgIGlmICh0aGlzLmF1dG9PcHRpbWl6ZSkge1xuICAgICAgICAgICAgdGhpcy5oaXN0b3J5U2Vzc2lvbi5vcHRpbWl6ZUhpc3RvcnlGb3JJdGVtKGl0ZW0udXVpZCk7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKGVudHJ5ICYmIHRoaXMucGVyc2lzdGFibGUpIHtcbiAgICAgICAgICAgIC8qKiBEZWJvdW5jZSwgY2xlYXIgZXhpc3RpbmcgdGltZW91dCAqL1xuICAgICAgICAgICAgaWYgKHRoaXMuc2F2ZVRpbWVvdXQpIHtcbiAgICAgICAgICAgICAgICBpZiAodGhpcy50aW1lb3V0Lmhhc093blByb3BlcnR5KCdjYW5jZWwnKSkge1xuICAgICAgICAgICAgICAgICAgICB0aGlzLnRpbWVvdXQuY2FuY2VsKHRoaXMuc2F2ZVRpbWVvdXQpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgY2xlYXJUaW1lb3V0KHRoaXMuc2F2ZVRpbWVvdXQpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIDtcbiAgICAgICAgICAgIHRoaXMuc2F2ZVRpbWVvdXQgPSB0aGlzLnRpbWVvdXQoKCkgPT4ge1xuICAgICAgICAgICAgICAgIHRoaXMuc2F2ZVRvRGlzaygpO1xuICAgICAgICAgICAgfSwgUEVSU0lTVF9USU1FT1VUKTtcbiAgICAgICAgfVxuICAgIH1cbiAgICBoaXN0b3J5Rm9ySXRlbShpdGVtKSB7XG4gICAgICAgIHJldHVybiB0aGlzLmhpc3RvcnlTZXNzaW9uLmhpc3RvcnlGb3JJdGVtKGl0ZW0udXVpZCk7XG4gICAgfVxuICAgIGFzeW5jIGNsZWFySGlzdG9yeUZvckl0ZW0oaXRlbSkge1xuICAgICAgICB0aGlzLmhpc3RvcnlTZXNzaW9uLmNsZWFySXRlbUhpc3RvcnkoaXRlbSk7XG4gICAgICAgIHJldHVybiB0aGlzLnNhdmVUb0Rpc2soKTtcbiAgICB9XG4gICAgYXN5bmMgY2xlYXJBbGxIaXN0b3J5KCkge1xuICAgICAgICB0aGlzLmhpc3RvcnlTZXNzaW9uLmNsZWFyQWxsSGlzdG9yeSgpO1xuICAgICAgICByZXR1cm4gdGhpcy5zdG9yYWdlU2VydmljZS5yZW1vdmVWYWx1ZShTdG9yYWdlS2V5LlNlc3Npb25IaXN0b3J5UmV2aXNpb25zKTtcbiAgICB9XG4gICAgYXN5bmMgdG9nZ2xlRGlza1NhdmluZygpIHtcbiAgICAgICAgdGhpcy5wZXJzaXN0YWJsZSA9ICF0aGlzLnBlcnNpc3RhYmxlO1xuICAgICAgICBpZiAodGhpcy5wZXJzaXN0YWJsZSkge1xuICAgICAgICAgICAgdGhpcy5zdG9yYWdlU2VydmljZS5zZXRWYWx1ZShTdG9yYWdlS2V5LlNlc3Npb25IaXN0b3J5UGVyc2lzdGFibGUsIHRydWUpO1xuICAgICAgICAgICAgdGhpcy5zYXZlVG9EaXNrKCk7XG4gICAgICAgIH1cbiAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICB0aGlzLnN0b3JhZ2VTZXJ2aWNlLnNldFZhbHVlKFN0b3JhZ2VLZXkuU2Vzc2lvbkhpc3RvcnlQZXJzaXN0YWJsZSwgZmFsc2UpO1xuICAgICAgICAgICAgcmV0dXJuIHRoaXMuc3RvcmFnZVNlcnZpY2UucmVtb3ZlVmFsdWUoU3RvcmFnZUtleS5TZXNzaW9uSGlzdG9yeVJldmlzaW9ucyk7XG4gICAgICAgIH1cbiAgICB9XG4gICAgYXN5bmMgdG9nZ2xlQXV0b09wdGltaXplKCkge1xuICAgICAgICB0aGlzLmF1dG9PcHRpbWl6ZSA9ICF0aGlzLmF1dG9PcHRpbWl6ZTtcbiAgICAgICAgaWYgKHRoaXMuYXV0b09wdGltaXplKSB7XG4gICAgICAgICAgICB0aGlzLnN0b3JhZ2VTZXJ2aWNlLnNldFZhbHVlKFN0b3JhZ2VLZXkuU2Vzc2lvbkhpc3RvcnlPcHRpbWl6ZSwgdHJ1ZSk7XG4gICAgICAgIH1cbiAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICB0aGlzLnN0b3JhZ2VTZXJ2aWNlLnNldFZhbHVlKFN0b3JhZ2VLZXkuU2Vzc2lvbkhpc3RvcnlPcHRpbWl6ZSwgZmFsc2UpO1xuICAgICAgICB9XG4gICAgfVxufVxuIl0sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7Ozs7Ozs7O0FBT0E7QUFBQTtBQUNBO0FBQUE7QUFBQTtBQUNBO0FBREE7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFSQTtBQVNBO0FBQ0E7QUFYQTtBQUFBO0FBQUE7QUFZQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQXRCQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQ0E7QUFEQTtBQXdCQTtBQXhCQTtBQUFBO0FBMEJBO0FBQ0E7QUFDQTtBQTVCQTtBQXlCQTtBQXpCQTtBQUFBO0FBQ0E7QUFEQTtBQTRCQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFFQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBckNBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQ0E7QUFEQTtBQUFBO0FBQUE7QUFDQTtBQURBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFzQ0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBTEE7QUFBQTtBQUFBO0FBQ0E7QUFEQTtBQUtBO0FBQUE7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFFQTtBQUNBO0FBQ0E7QUFkQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBZUE7QUFDQTtBQXZEQTtBQUFBO0FBQUE7QUF5REE7QUFDQTtBQTFEQTtBQUFBO0FBQUE7QUE0REE7QUFDQTtBQTdEQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFDQTtBQURBO0FBQ0E7QUFEQTtBQWtFQTtBQUNBO0FBbkVBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQ0E7QUFEQTtBQUFBO0FBQUE7QUFDQTtBQURBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFxRUE7QUFDQTtBQXRFQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQ0E7QUFEQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBd0VBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUE1RkE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFDQTtBQURBO0FBQUE7QUFBQTtBQUNBO0FBREE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQThGQTtBQUNBO0FBL0ZBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFpR0E7QUFqR0E7QUFDQTtBQURBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQ0E7QUFEQTtBQUFBO0FBQUE7QUFDQTtBQURBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBcUdBO0FBckdBO0FBQ0E7QUFEQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUNBO0FBREE7QUFBQTtBQUFBO0FBQ0E7QUFEQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQXlHQTtBQUNBO0FBMUdBO0FBQUE7QUFBQTtBQUFBO0FBQ0E7QUEwR0E7QUFDQTtBQTVHQTtBQUFBO0FBQ0E7QUFEQTtBQStHQTtBQS9HQTtBQUNBO0FBREE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFDQTtBQURBO0FBQUE7QUFBQTtBQUNBO0FBREE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFvSEE7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUVBO0FBQ0E7QUFDQTtBQTNIQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUNBO0FBREE7QUFBQTtBQUFBO0FBQ0E7QUFEQTtBQUFBO0FBQUE7QUFDQTtBQURBO0FBQUEiLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./lib/services/history/history_manager.ts\n')},"./lib/services/history/history_session.ts":
|
||
/*!*************************************************!*\
|
||
!*** ./lib/services/history/history_session.ts ***!
|
||
\*************************************************/
|
||
/*! exports provided: HistorySession */function(module,__webpack_exports__,__webpack_require__){"use strict";eval('__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "HistorySession", function() { return HistorySession; });\n/* harmony import */ var _Services_history_item_history__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @Services/history/item_history */ "./lib/services/history/item_history.ts");\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } }\n\nfunction _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); } }\n\nfunction _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; }\n\n\n/** The amount of revisions which above, call for an optimization. */\n\nvar DEFAULT_ITEM_REVISIONS_THRESHOLD = 60;\nvar HistorySession = /*#__PURE__*/function () {\n function HistorySession(content) {\n _classCallCheck(this, HistorySession);\n\n this.itemRevisionThreshold = DEFAULT_ITEM_REVISIONS_THRESHOLD;\n this.content = content;\n\n if (!this.content) {\n this.content = {\n itemUUIDToItemHistoryMapping: {}\n };\n }\n }\n\n _createClass(HistorySession, [{\n key: "addEntryForPayload",\n value: function addEntryForPayload(payload) {\n var itemHistory = this.historyForItem(payload.uuid);\n return itemHistory.addHistoryEntryForItem(payload);\n }\n }, {\n key: "historyForItem",\n value: function historyForItem(uuid) {\n var history = this.content.itemUUIDToItemHistoryMapping[uuid];\n\n if (!history) {\n history = new _Services_history_item_history__WEBPACK_IMPORTED_MODULE_0__["ItemHistory"]();\n this.content.itemUUIDToItemHistoryMapping[uuid] = history;\n }\n\n return history;\n }\n }, {\n key: "clearItemHistory",\n value: function clearItemHistory(item) {\n this.historyForItem(item.uuid).clear();\n }\n }, {\n key: "clearAllHistory",\n value: function clearAllHistory() {\n this.content.itemUUIDToItemHistoryMapping = {};\n }\n }, {\n key: "setItemRevisionThreshold",\n value: function setItemRevisionThreshold(threshold) {\n this.itemRevisionThreshold = threshold;\n }\n }, {\n key: "optimizeHistoryForItem",\n value: function optimizeHistoryForItem(uuid) {\n /**\n * Clean up if there are too many revisions. Note itemRevisionThreshold\n * is the amount of revisions which above, call for an optimization. An\n * optimization may not remove entries above this threshold. It will\n * determine what it should keep and what it shouldn\'t. So, it is possible\n * to have a threshold of 60 but have 600 entries, if the item history deems\n * those worth keeping.\n */\n var itemHistory = this.historyForItem(uuid);\n\n if (itemHistory.entries.length > this.itemRevisionThreshold) {\n itemHistory.optimize();\n }\n }\n }], [{\n key: "FromJson",\n value: function FromJson(historySessionJson) {\n if (historySessionJson) {\n var content = historySessionJson.content;\n var uuids = Object.keys(content.itemUUIDToItemHistoryMapping);\n uuids.forEach(function (itemUUID) {\n var rawItemHistory = content.itemUUIDToItemHistoryMapping[itemUUID];\n content.itemUUIDToItemHistoryMapping[itemUUID] = _Services_history_item_history__WEBPACK_IMPORTED_MODULE_0__["ItemHistory"].FromJson(rawItemHistory);\n });\n return new HistorySession(content);\n } else {\n return new HistorySession();\n }\n }\n }]);\n\n return HistorySession;\n}();//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9saWIvc2VydmljZXMvaGlzdG9yeS9oaXN0b3J5X3Nlc3Npb24udHMuanMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly9TTkxpYnJhcnkvLi9saWIvc2VydmljZXMvaGlzdG9yeS9oaXN0b3J5X3Nlc3Npb24udHM/NjhmMSJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBJdGVtSGlzdG9yeSB9IGZyb20gJ0BTZXJ2aWNlcy9oaXN0b3J5L2l0ZW1faGlzdG9yeSc7XG4vKiogVGhlIGFtb3VudCBvZiByZXZpc2lvbnMgd2hpY2ggYWJvdmUsIGNhbGwgZm9yIGFuIG9wdGltaXphdGlvbi4gKi9cbmNvbnN0IERFRkFVTFRfSVRFTV9SRVZJU0lPTlNfVEhSRVNIT0xEID0gNjA7XG5leHBvcnQgY2xhc3MgSGlzdG9yeVNlc3Npb24ge1xuICAgIGNvbnN0cnVjdG9yKGNvbnRlbnQpIHtcbiAgICAgICAgdGhpcy5pdGVtUmV2aXNpb25UaHJlc2hvbGQgPSBERUZBVUxUX0lURU1fUkVWSVNJT05TX1RIUkVTSE9MRDtcbiAgICAgICAgdGhpcy5jb250ZW50ID0gY29udGVudDtcbiAgICAgICAgaWYgKCF0aGlzLmNvbnRlbnQpIHtcbiAgICAgICAgICAgIHRoaXMuY29udGVudCA9IHtcbiAgICAgICAgICAgICAgICBpdGVtVVVJRFRvSXRlbUhpc3RvcnlNYXBwaW5nOiB7fVxuICAgICAgICAgICAgfTtcbiAgICAgICAgfVxuICAgIH1cbiAgICBzdGF0aWMgRnJvbUpzb24oaGlzdG9yeVNlc3Npb25Kc29uKSB7XG4gICAgICAgIGlmIChoaXN0b3J5U2Vzc2lvbkpzb24pIHtcbiAgICAgICAgICAgIGNvbnN0IGNvbnRlbnQgPSBoaXN0b3J5U2Vzc2lvbkpzb24uY29udGVudDtcbiAgICAgICAgICAgIGNvbnN0IHV1aWRzID0gT2JqZWN0LmtleXMoY29udGVudC5pdGVtVVVJRFRvSXRlbUhpc3RvcnlNYXBwaW5nKTtcbiAgICAgICAgICAgIHV1aWRzLmZvckVhY2goKGl0ZW1VVUlEKSA9PiB7XG4gICAgICAgICAgICAgICAgY29uc3QgcmF3SXRlbUhpc3RvcnkgPSBjb250ZW50Lml0ZW1VVUlEVG9JdGVtSGlzdG9yeU1hcHBpbmdbaXRlbVVVSURdO1xuICAgICAgICAgICAgICAgIGNvbnRlbnQuaXRlbVVVSURUb0l0ZW1IaXN0b3J5TWFwcGluZ1tpdGVtVVVJRF0gPVxuICAgICAgICAgICAgICAgICAgICBJdGVtSGlzdG9yeS5Gcm9tSnNvbihyYXdJdGVtSGlzdG9yeSk7XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIHJldHVybiBuZXcgSGlzdG9yeVNlc3Npb24oY29udGVudCk7XG4gICAgICAgIH1cbiAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICByZXR1cm4gbmV3IEhpc3RvcnlTZXNzaW9uKCk7XG4gICAgICAgIH1cbiAgICB9XG4gICAgYWRkRW50cnlGb3JQYXlsb2FkKHBheWxvYWQpIHtcbiAgICAgICAgY29uc3QgaXRlbUhpc3RvcnkgPSB0aGlzLmhpc3RvcnlGb3JJdGVtKHBheWxvYWQudXVpZCk7XG4gICAgICAgIHJldHVybiBpdGVtSGlzdG9yeS5hZGRIaXN0b3J5RW50cnlGb3JJdGVtKHBheWxvYWQpO1xuICAgIH1cbiAgICBoaXN0b3J5Rm9ySXRlbSh1dWlkKSB7XG4gICAgICAgIGxldCBoaXN0b3J5ID0gdGhpcy5jb250ZW50Lml0ZW1VVUlEVG9JdGVtSGlzdG9yeU1hcHBpbmdbdXVpZF07XG4gICAgICAgIGlmICghaGlzdG9yeSkge1xuICAgICAgICAgICAgaGlzdG9yeSA9IG5ldyBJdGVtSGlzdG9yeSgpO1xuICAgICAgICAgICAgdGhpcy5jb250ZW50Lml0ZW1VVUlEVG9JdGVtSGlzdG9yeU1hcHBpbmdbdXVpZF0gPSBoaXN0b3J5O1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiBoaXN0b3J5O1xuICAgIH1cbiAgICBjbGVhckl0ZW1IaXN0b3J5KGl0ZW0pIHtcbiAgICAgICAgdGhpcy5oaXN0b3J5Rm9ySXRlbShpdGVtLnV1aWQpLmNsZWFyKCk7XG4gICAgfVxuICAgIGNsZWFyQWxsSGlzdG9yeSgpIHtcbiAgICAgICAgdGhpcy5jb250ZW50Lml0ZW1VVUlEVG9JdGVtSGlzdG9yeU1hcHBpbmcgPSB7fTtcbiAgICB9XG4gICAgc2V0SXRlbVJldmlzaW9uVGhyZXNob2xkKHRocmVzaG9sZCkge1xuICAgICAgICB0aGlzLml0ZW1SZXZpc2lvblRocmVzaG9sZCA9IHRocmVzaG9sZDtcbiAgICB9XG4gICAgb3B0aW1pemVIaXN0b3J5Rm9ySXRlbSh1dWlkKSB7XG4gICAgICAgIC8qKlxuICAgICAgICAgKiBDbGVhbiB1cCBpZiB0aGVyZSBhcmUgdG9vIG1hbnkgcmV2aXNpb25zLiBOb3RlIGl0ZW1SZXZpc2lvblRocmVzaG9sZFxuICAgICAgICAgKiBpcyB0aGUgYW1vdW50IG9mIHJldmlzaW9ucyB3aGljaCBhYm92ZSwgY2FsbCBmb3IgYW4gb3B0aW1pemF0aW9uLiBBblxuICAgICAgICAgKiBvcHRpbWl6YXRpb24gbWF5IG5vdCByZW1vdmUgZW50cmllcyBhYm92ZSB0aGlzIHRocmVzaG9sZC4gSXQgd2lsbFxuICAgICAgICAgKiBkZXRlcm1pbmUgd2hhdCBpdCBzaG91bGQga2VlcCBhbmQgd2hhdCBpdCBzaG91bGRuJ3QuIFNvLCBpdCBpcyBwb3NzaWJsZVxuICAgICAgICAgKiB0byBoYXZlIGEgdGhyZXNob2xkIG9mIDYwIGJ1dCBoYXZlIDYwMCBlbnRyaWVzLCBpZiB0aGUgaXRlbSBoaXN0b3J5IGRlZW1zXG4gICAgICAgICAqIHRob3NlIHdvcnRoIGtlZXBpbmcuXG4gICAgICAgICAqL1xuICAgICAgICBjb25zdCBpdGVtSGlzdG9yeSA9IHRoaXMuaGlzdG9yeUZvckl0ZW0odXVpZCk7XG4gICAgICAgIGlmIChpdGVtSGlzdG9yeS5lbnRyaWVzLmxlbmd0aCA+IHRoaXMuaXRlbVJldmlzaW9uVGhyZXNob2xkKSB7XG4gICAgICAgICAgICBpdGVtSGlzdG9yeS5vcHRpbWl6ZSgpO1xuICAgICAgICB9XG4gICAgfVxufVxuIl0sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7QUFBQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBREE7QUFHQTtBQUNBO0FBQ0E7QUFWQTtBQUFBO0FBQUE7QUEwQkE7QUFDQTtBQUNBO0FBNUJBO0FBQUE7QUFBQTtBQThCQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFwQ0E7QUFBQTtBQUFBO0FBc0NBO0FBQ0E7QUF2Q0E7QUFBQTtBQUFBO0FBeUNBO0FBQ0E7QUExQ0E7QUFBQTtBQUFBO0FBNENBO0FBQ0E7QUE3Q0E7QUFBQTtBQUFBO0FBK0NBOzs7Ozs7OztBQVFBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQTNEQTtBQUFBO0FBQUE7QUFXQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFFQTtBQUNBO0FBQ0E7QUFFQTtBQUNBO0FBQ0E7QUF4QkE7QUFDQTtBQURBO0FBQUEiLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./lib/services/history/history_session.ts\n')},"./lib/services/history/item_history.ts":
|
||
/*!**********************************************!*\
|
||
!*** ./lib/services/history/item_history.ts ***!
|
||
\**********************************************/
|
||
/*! exports provided: ItemHistory */function(module,__webpack_exports__,__webpack_require__){"use strict";eval('__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "ItemHistory", function() { return ItemHistory; });\n/* harmony import */ var _functions__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./functions */ "./lib/services/history/functions.ts");\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } }\n\nfunction _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); } }\n\nfunction _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; }\n\n\n/**\n * The amount of characters added or removed that\n * constitute a keepable entry after optimization.\n */\n\nvar LARGE_ENTRY_DELTA_THRESHOLD = 15;\nvar ItemHistory = /*#__PURE__*/function () {\n function ItemHistory(entries) {\n _classCallCheck(this, ItemHistory);\n\n this.entries = [];\n /** Deserialize the entries into entry objects. */\n\n if (entries) {\n var _iteratorNormalCompletion = true;\n var _didIteratorError = false;\n var _iteratorError = undefined;\n\n try {\n for (var _iterator = entries[Symbol.iterator](), _step; !(_iteratorNormalCompletion = (_step = _iterator.next()).done); _iteratorNormalCompletion = true) {\n var entry = _step.value;\n entry.setPreviousEntry(this.getLastEntry());\n this.entries.push(entry);\n }\n } catch (err) {\n _didIteratorError = true;\n _iteratorError = err;\n } finally {\n try {\n if (!_iteratorNormalCompletion && _iterator.return != null) {\n _iterator.return();\n }\n } finally {\n if (_didIteratorError) {\n throw _iteratorError;\n }\n }\n }\n }\n }\n\n _createClass(ItemHistory, [{\n key: "getLastEntry",\n value: function getLastEntry() {\n return this.entries[this.entries.length - 1];\n }\n }, {\n key: "addHistoryEntryForItem",\n value: function addHistoryEntryForItem(payload) {\n var prospectiveEntry = Object(_functions__WEBPACK_IMPORTED_MODULE_0__["CreateHistoryEntryForPayload"])(payload);\n var previousEntry = this.getLastEntry();\n prospectiveEntry.setPreviousEntry(previousEntry);\n\n if (prospectiveEntry.isSameAsEntry(previousEntry)) {\n return;\n }\n\n this.entries.push(prospectiveEntry);\n return prospectiveEntry;\n }\n }, {\n key: "clear",\n value: function clear() {\n this.entries.length = 0;\n }\n }, {\n key: "optimize",\n value: function optimize() {\n var _this = this;\n\n var keepEntries = [];\n\n var isEntrySignificant = function isEntrySignificant(entry) {\n return entry.deltaSize() > LARGE_ENTRY_DELTA_THRESHOLD;\n };\n\n var processEntry = function processEntry(entry, index, keep) {\n /**\n * Entries may be processed retrospectively, meaning it can be\n * decided to be deleted, then an upcoming processing can change that.\n */\n if (keep) {\n keepEntries.push(entry);\n } else {\n /** Remove if in keep */\n var _index = keepEntries.indexOf(entry);\n\n if (_index !== -1) {\n keepEntries.splice(_index, 1);\n }\n }\n\n if (keep && isEntrySignificant(entry) && entry.operationVector() === -1) {\n /** This is a large negative change. Hang on to the previous entry. */\n var previousEntry = _this.entries[index - 1];\n\n if (previousEntry) {\n keepEntries.push(previousEntry);\n }\n }\n };\n\n this.entries.forEach(function (entry, index) {\n if (index === 0 || index === _this.entries.length - 1) {\n /** Keep the first and last */\n processEntry(entry, index, true);\n } else {\n var significant = isEntrySignificant(entry);\n processEntry(entry, index, significant);\n }\n });\n this.entries = this.entries.filter(function (entry, index) {\n return keepEntries.indexOf(entry) !== -1;\n });\n }\n }], [{\n key: "FromJson",\n value: function FromJson(entryJson) {\n var entries = entryJson.entries.map(function (rawHistoryEntry) {\n return Object(_functions__WEBPACK_IMPORTED_MODULE_0__["CreateHistoryEntryForPayload"])(rawHistoryEntry.payload);\n });\n return new ItemHistory(entries);\n }\n }]);\n\n return ItemHistory;\n}();//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9saWIvc2VydmljZXMvaGlzdG9yeS9pdGVtX2hpc3RvcnkudHMuanMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly9TTkxpYnJhcnkvLi9saWIvc2VydmljZXMvaGlzdG9yeS9pdGVtX2hpc3RvcnkudHM/MWFlZSJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDcmVhdGVIaXN0b3J5RW50cnlGb3JQYXlsb2FkIH0gZnJvbSAnLi9mdW5jdGlvbnMnO1xuLyoqXG4gKiBUaGUgYW1vdW50IG9mIGNoYXJhY3RlcnMgYWRkZWQgb3IgcmVtb3ZlZCB0aGF0XG4gKiBjb25zdGl0dXRlIGEga2VlcGFibGUgZW50cnkgYWZ0ZXIgb3B0aW1pemF0aW9uLlxuICovXG5jb25zdCBMQVJHRV9FTlRSWV9ERUxUQV9USFJFU0hPTEQgPSAxNTtcbmV4cG9ydCBjbGFzcyBJdGVtSGlzdG9yeSB7XG4gICAgY29uc3RydWN0b3IoZW50cmllcykge1xuICAgICAgICB0aGlzLmVudHJpZXMgPSBbXTtcbiAgICAgICAgLyoqIERlc2VyaWFsaXplIHRoZSBlbnRyaWVzIGludG8gZW50cnkgb2JqZWN0cy4gKi9cbiAgICAgICAgaWYgKGVudHJpZXMpIHtcbiAgICAgICAgICAgIGZvciAoY29uc3QgZW50cnkgb2YgZW50cmllcykge1xuICAgICAgICAgICAgICAgIGVudHJ5LnNldFByZXZpb3VzRW50cnkodGhpcy5nZXRMYXN0RW50cnkoKSk7XG4gICAgICAgICAgICAgICAgdGhpcy5lbnRyaWVzLnB1c2goZW50cnkpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfVxuICAgIHN0YXRpYyBGcm9tSnNvbihlbnRyeUpzb24pIHtcbiAgICAgICAgY29uc3QgZW50cmllcyA9IGVudHJ5SnNvbi5lbnRyaWVzLm1hcCgocmF3SGlzdG9yeUVudHJ5KSA9PiB7XG4gICAgICAgICAgICByZXR1cm4gQ3JlYXRlSGlzdG9yeUVudHJ5Rm9yUGF5bG9hZChyYXdIaXN0b3J5RW50cnkucGF5bG9hZCk7XG4gICAgICAgIH0pO1xuICAgICAgICByZXR1cm4gbmV3IEl0ZW1IaXN0b3J5KGVudHJpZXMpO1xuICAgIH1cbiAgICBnZXRMYXN0RW50cnkoKSB7XG4gICAgICAgIHJldHVybiB0aGlzLmVudHJpZXNbdGhpcy5lbnRyaWVzLmxlbmd0aCAtIDFdO1xuICAgIH1cbiAgICBhZGRIaXN0b3J5RW50cnlGb3JJdGVtKHBheWxvYWQpIHtcbiAgICAgICAgY29uc3QgcHJvc3BlY3RpdmVFbnRyeSA9IENyZWF0ZUhpc3RvcnlFbnRyeUZvclBheWxvYWQocGF5bG9hZCk7XG4gICAgICAgIGNvbnN0IHByZXZpb3VzRW50cnkgPSB0aGlzLmdldExhc3RFbnRyeSgpO1xuICAgICAgICBwcm9zcGVjdGl2ZUVudHJ5LnNldFByZXZpb3VzRW50cnkocHJldmlvdXNFbnRyeSk7XG4gICAgICAgIGlmIChwcm9zcGVjdGl2ZUVudHJ5LmlzU2FtZUFzRW50cnkocHJldmlvdXNFbnRyeSkpIHtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuICAgICAgICB0aGlzLmVudHJpZXMucHVzaChwcm9zcGVjdGl2ZUVudHJ5KTtcbiAgICAgICAgcmV0dXJuIHByb3NwZWN0aXZlRW50cnk7XG4gICAgfVxuICAgIGNsZWFyKCkge1xuICAgICAgICB0aGlzLmVudHJpZXMubGVuZ3RoID0gMDtcbiAgICB9XG4gICAgb3B0aW1pemUoKSB7XG4gICAgICAgIGNvbnN0IGtlZXBFbnRyaWVzID0gW107XG4gICAgICAgIGNvbnN0IGlzRW50cnlTaWduaWZpY2FudCA9IChlbnRyeSkgPT4ge1xuICAgICAgICAgICAgcmV0dXJuIGVudHJ5LmRlbHRhU2l6ZSgpID4gTEFSR0VfRU5UUllfREVMVEFfVEhSRVNIT0xEO1xuICAgICAgICB9O1xuICAgICAgICBjb25zdCBwcm9jZXNzRW50cnkgPSAoZW50cnksIGluZGV4LCBrZWVwKSA9PiB7XG4gICAgICAgICAgICAvKipcbiAgICAgICAgICAgICAqIEVudHJpZXMgbWF5IGJlIHByb2Nlc3NlZCByZXRyb3NwZWN0aXZlbHksIG1lYW5pbmcgaXQgY2FuIGJlXG4gICAgICAgICAgICAgKiBkZWNpZGVkIHRvIGJlIGRlbGV0ZWQsIHRoZW4gYW4gdXBjb21pbmcgcHJvY2Vzc2luZyBjYW4gY2hhbmdlIHRoYXQuXG4gICAgICAgICAgICAgKi9cbiAgICAgICAgICAgIGlmIChrZWVwKSB7XG4gICAgICAgICAgICAgICAga2VlcEVudHJpZXMucHVzaChlbnRyeSk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgICAgICAvKiogUmVtb3ZlIGlmIGluIGtlZXAgKi9cbiAgICAgICAgICAgICAgICBjb25zdCBpbmRleCA9IGtlZXBFbnRyaWVzLmluZGV4T2YoZW50cnkpO1xuICAgICAgICAgICAgICAgIGlmIChpbmRleCAhPT0gLTEpIHtcbiAgICAgICAgICAgICAgICAgICAga2VlcEVudHJpZXMuc3BsaWNlKGluZGV4LCAxKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBpZiAoa2VlcCAmJiBpc0VudHJ5U2lnbmlmaWNhbnQoZW50cnkpICYmIGVudHJ5Lm9wZXJhdGlvblZlY3RvcigpID09PSAtMSkge1xuICAgICAgICAgICAgICAgIC8qKiBUaGlzIGlzIGEgbGFyZ2UgbmVnYXRpdmUgY2hhbmdlLiBIYW5nIG9uIHRvIHRoZSBwcmV2aW91cyBlbnRyeS4gKi9cbiAgICAgICAgICAgICAgICBjb25zdCBwcmV2aW91c0VudHJ5ID0gdGhpcy5lbnRyaWVzW2luZGV4IC0gMV07XG4gICAgICAgICAgICAgICAgaWYgKHByZXZpb3VzRW50cnkpIHtcbiAgICAgICAgICAgICAgICAgICAga2VlcEVudHJpZXMucHVzaChwcmV2aW91c0VudHJ5KTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgIH07XG4gICAgICAgIHRoaXMuZW50cmllcy5mb3JFYWNoKChlbnRyeSwgaW5kZXgpID0+IHtcbiAgICAgICAgICAgIGlmIChpbmRleCA9PT0gMCB8fCBpbmRleCA9PT0gdGhpcy5lbnRyaWVzLmxlbmd0aCAtIDEpIHtcbiAgICAgICAgICAgICAgICAvKiogS2VlcCB0aGUgZmlyc3QgYW5kIGxhc3QgKi9cbiAgICAgICAgICAgICAgICBwcm9jZXNzRW50cnkoZW50cnksIGluZGV4LCB0cnVlKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgICAgIGNvbnN0IHNpZ25pZmljYW50ID0gaXNFbnRyeVNpZ25pZmljYW50KGVudHJ5KTtcbiAgICAgICAgICAgICAgICBwcm9jZXNzRW50cnkoZW50cnksIGluZGV4LCBzaWduaWZpY2FudCk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH0pO1xuICAgICAgICB0aGlzLmVudHJpZXMgPSB0aGlzLmVudHJpZXMuZmlsdGVyKChlbnRyeSwgaW5kZXgpID0+IHtcbiAgICAgICAgICAgIHJldHVybiBrZWVwRW50cmllcy5pbmRleE9mKGVudHJ5KSAhPT0gLTE7XG4gICAgICAgIH0pO1xuICAgIH1cbn1cbiJdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7O0FBQUE7QUFDQTs7Ozs7QUFJQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFDQTtBQURBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUpBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFLQTtBQUNBO0FBQ0E7QUFYQTtBQUFBO0FBQUE7QUFrQkE7QUFDQTtBQW5CQTtBQUFBO0FBQUE7QUFxQkE7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQTdCQTtBQUFBO0FBQUE7QUErQkE7QUFDQTtBQWhDQTtBQUFBO0FBQUE7QUFpQ0E7QUFDQTtBQUFBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7Ozs7QUFJQTtBQUNBO0FBQ0E7QUFFQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQTFFQTtBQUFBO0FBQUE7QUFZQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBaEJBO0FBQ0E7QUFEQTtBQUFBIiwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./lib/services/history/item_history.ts\n')},"./lib/services/history/item_history_entry.ts":
|
||
/*!****************************************************!*\
|
||
!*** ./lib/services/history/item_history_entry.ts ***!
|
||
\****************************************************/
|
||
/*! exports provided: ItemHistoryEntry */function(module,__webpack_exports__,__webpack_require__){"use strict";eval('__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "ItemHistoryEntry", function() { return ItemHistoryEntry; });\n/* harmony import */ var _Lib_utils__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @Lib/utils */ "./lib/utils.ts");\n/* harmony import */ var _Payloads_generator__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! @Payloads/generator */ "./lib/protocol/payloads/generator.ts");\n/* harmony import */ var _Lib_models__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! @Lib/models */ "./lib/models/index.ts");\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } }\n\nfunction _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); } }\n\nfunction _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; }\n\n\n\n\nvar ItemHistoryEntry = /*#__PURE__*/function () {\n function ItemHistoryEntry(payload) {\n _classCallCheck(this, ItemHistoryEntry);\n\n /**\n * Whatever values `item` has will be persisted,\n * so be sure that the values are picked beforehand.\n */\n\n /**\n * We\'ll assume a `text` content value to diff on.\n * If it doesn\'t exist, no problem.\n */\n this.defaultContentKeyToDiffOn = \'text\';\n this.textCharDiffLength = 0;\n this.hasPreviousEntry = false;\n var updated_at = payload.updated_at;\n\n if (Object(_Lib_utils__WEBPACK_IMPORTED_MODULE_0__["isString"])(updated_at)) {\n updated_at = new Date(updated_at);\n }\n\n this.payload = Object(_Payloads_generator__WEBPACK_IMPORTED_MODULE_1__["CopyPayload"])(payload, {\n updated_at: updated_at\n });\n }\n\n _createClass(ItemHistoryEntry, [{\n key: "setPreviousEntry",\n value: function setPreviousEntry(previousEntry) {\n this.hasPreviousEntry = previousEntry != null;\n /** We\'ll try to compute the delta based on an assumed\n * content property of `text`, if it exists.\n */\n\n if (this.payload.contentObject[this.defaultContentKeyToDiffOn]) {\n if (previousEntry) {\n this.textCharDiffLength = this.payload.contentObject[this.defaultContentKeyToDiffOn].length - previousEntry.payload.contentObject[this.defaultContentKeyToDiffOn].length;\n } else {\n this.textCharDiffLength = this.payload.contentObject[this.defaultContentKeyToDiffOn].length;\n }\n }\n }\n }, {\n key: "operationVector",\n value: function operationVector() {\n /**\n * We\'ll try to use the value of `textCharDiffLength`\n * to help determine this, if it\'s set\n */\n if (this.textCharDiffLength !== undefined) {\n if (!this.hasPreviousEntry || this.textCharDiffLength === 0) {\n return 0;\n } else if (this.textCharDiffLength < 0) {\n return -1;\n } else {\n return 1;\n }\n }\n /** Otherwise use a default value of 1 */\n\n\n return 1;\n }\n }, {\n key: "deltaSize",\n value: function deltaSize() {\n /**\n * Up to the subclass to determine how large the delta was,\n * i.e number of characters changed.\n * But this general class won\'t be able to determine which property it\n * should diff on, or even its format.\n */\n\n /**\n * We can return the `textCharDiffLength` if it\'s set,\n * otherwise, just return 1;\n */\n if (this.textCharDiffLength !== undefined) {\n return Math.abs(this.textCharDiffLength);\n }\n /**\n * Otherwise return 1 here to constitute a basic positive delta.\n * The value returned should always be positive. Override `operationVector`\n * to return the direction of the delta.\n */\n\n\n return 1;\n }\n }, {\n key: "isSameAsEntry",\n value: function isSameAsEntry(entry) {\n if (!entry) {\n return false;\n }\n\n var lhs = Object(_Lib_models__WEBPACK_IMPORTED_MODULE_2__["CreateItemFromPayload"])(this.payload);\n var rhs = Object(_Lib_models__WEBPACK_IMPORTED_MODULE_2__["CreateItemFromPayload"])(entry.payload);\n return lhs.isItemContentEqualWith(rhs);\n }\n }]);\n\n return ItemHistoryEntry;\n}();//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9saWIvc2VydmljZXMvaGlzdG9yeS9pdGVtX2hpc3RvcnlfZW50cnkudHMuanMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly9TTkxpYnJhcnkvLi9saWIvc2VydmljZXMvaGlzdG9yeS9pdGVtX2hpc3RvcnlfZW50cnkudHM/YjAwNiJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBpc1N0cmluZyB9IGZyb20gJ0BMaWIvdXRpbHMnO1xuaW1wb3J0IHsgQ29weVBheWxvYWQgfSBmcm9tICdAUGF5bG9hZHMvZ2VuZXJhdG9yJztcbmltcG9ydCB7IENyZWF0ZUl0ZW1Gcm9tUGF5bG9hZCB9IGZyb20gJ0BMaWIvbW9kZWxzJztcbmV4cG9ydCBjbGFzcyBJdGVtSGlzdG9yeUVudHJ5IHtcbiAgICBjb25zdHJ1Y3RvcihwYXlsb2FkKSB7XG4gICAgICAgIC8qKlxuICAgICAgICAgKiBXaGF0ZXZlciB2YWx1ZXMgYGl0ZW1gIGhhcyB3aWxsIGJlIHBlcnNpc3RlZCxcbiAgICAgICAgICogc28gYmUgc3VyZSB0aGF0IHRoZSB2YWx1ZXMgYXJlIHBpY2tlZCBiZWZvcmVoYW5kLlxuICAgICAgICAgKi9cbiAgICAgICAgLyoqXG4gICAgICAgICAqIFdlJ2xsIGFzc3VtZSBhIGB0ZXh0YCBjb250ZW50IHZhbHVlIHRvIGRpZmYgb24uXG4gICAgICAgICAqIElmIGl0IGRvZXNuJ3QgZXhpc3QsIG5vIHByb2JsZW0uXG4gICAgICAgICAqL1xuICAgICAgICB0aGlzLmRlZmF1bHRDb250ZW50S2V5VG9EaWZmT24gPSAndGV4dCc7XG4gICAgICAgIHRoaXMudGV4dENoYXJEaWZmTGVuZ3RoID0gMDtcbiAgICAgICAgdGhpcy5oYXNQcmV2aW91c0VudHJ5ID0gZmFsc2U7XG4gICAgICAgIGxldCB1cGRhdGVkX2F0ID0gcGF5bG9hZC51cGRhdGVkX2F0O1xuICAgICAgICBpZiAoaXNTdHJpbmcodXBkYXRlZF9hdCkpIHtcbiAgICAgICAgICAgIHVwZGF0ZWRfYXQgPSBuZXcgRGF0ZSh1cGRhdGVkX2F0KTtcbiAgICAgICAgfVxuICAgICAgICB0aGlzLnBheWxvYWQgPSBDb3B5UGF5bG9hZChwYXlsb2FkLCB7XG4gICAgICAgICAgICB1cGRhdGVkX2F0OiB1cGRhdGVkX2F0XG4gICAgICAgIH0pO1xuICAgIH1cbiAgICBzZXRQcmV2aW91c0VudHJ5KHByZXZpb3VzRW50cnkpIHtcbiAgICAgICAgdGhpcy5oYXNQcmV2aW91c0VudHJ5ID0gcHJldmlvdXNFbnRyeSAhPSBudWxsO1xuICAgICAgICAvKiogV2UnbGwgdHJ5IHRvIGNvbXB1dGUgdGhlIGRlbHRhIGJhc2VkIG9uIGFuIGFzc3VtZWRcbiAgICAgICAgICogY29udGVudCBwcm9wZXJ0eSBvZiBgdGV4dGAsIGlmIGl0IGV4aXN0cy5cbiAgICAgICAgICovXG4gICAgICAgIGlmICh0aGlzLnBheWxvYWQuY29udGVudE9iamVjdFt0aGlzLmRlZmF1bHRDb250ZW50S2V5VG9EaWZmT25dKSB7XG4gICAgICAgICAgICBpZiAocHJldmlvdXNFbnRyeSkge1xuICAgICAgICAgICAgICAgIHRoaXMudGV4dENoYXJEaWZmTGVuZ3RoID1cbiAgICAgICAgICAgICAgICAgICAgdGhpcy5wYXlsb2FkLmNvbnRlbnRPYmplY3RbdGhpcy5kZWZhdWx0Q29udGVudEtleVRvRGlmZk9uXS5sZW5ndGhcbiAgICAgICAgICAgICAgICAgICAgICAgIC0gcHJldmlvdXNFbnRyeS5wYXlsb2FkLmNvbnRlbnRPYmplY3RbdGhpcy5kZWZhdWx0Q29udGVudEtleVRvRGlmZk9uXS5sZW5ndGg7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgICAgICB0aGlzLnRleHRDaGFyRGlmZkxlbmd0aCA9XG4gICAgICAgICAgICAgICAgICAgIHRoaXMucGF5bG9hZC5jb250ZW50T2JqZWN0W3RoaXMuZGVmYXVsdENvbnRlbnRLZXlUb0RpZmZPbl0ubGVuZ3RoO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfVxuICAgIG9wZXJhdGlvblZlY3RvcigpIHtcbiAgICAgICAgLyoqXG4gICAgICAgICAqIFdlJ2xsIHRyeSB0byB1c2UgdGhlIHZhbHVlIG9mIGB0ZXh0Q2hhckRpZmZMZW5ndGhgXG4gICAgICAgICAqIHRvIGhlbHAgZGV0ZXJtaW5lIHRoaXMsIGlmIGl0J3Mgc2V0XG4gICAgICAgICAqL1xuICAgICAgICBpZiAodGhpcy50ZXh0Q2hhckRpZmZMZW5ndGggIT09IHVuZGVmaW5lZCkge1xuICAgICAgICAgICAgaWYgKCF0aGlzLmhhc1ByZXZpb3VzRW50cnkgfHwgdGhpcy50ZXh0Q2hhckRpZmZMZW5ndGggPT09IDApIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gMDtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGVsc2UgaWYgKHRoaXMudGV4dENoYXJEaWZmTGVuZ3RoIDwgMCkge1xuICAgICAgICAgICAgICAgIHJldHVybiAtMTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgICAgIHJldHVybiAxO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIC8qKiBPdGhlcndpc2UgdXNlIGEgZGVmYXVsdCB2YWx1ZSBvZiAxICovXG4gICAgICAgIHJldHVybiAxO1xuICAgIH1cbiAgICBkZWx0YVNpemUoKSB7XG4gICAgICAgIC8qKlxuICAgICAgICAgKiBVcCB0byB0aGUgc3ViY2xhc3MgdG8gZGV0ZXJtaW5lIGhvdyBsYXJnZSB0aGUgZGVsdGEgd2FzLFxuICAgICAgICAgKiBpLmUgbnVtYmVyIG9mIGNoYXJhY3RlcnMgY2hhbmdlZC5cbiAgICAgICAgICogQnV0IHRoaXMgZ2VuZXJhbCBjbGFzcyB3b24ndCBiZSBhYmxlIHRvIGRldGVybWluZSB3aGljaCBwcm9wZXJ0eSBpdFxuICAgICAgICAgKiBzaG91bGQgZGlmZiBvbiwgb3IgZXZlbiBpdHMgZm9ybWF0LlxuICAgICAgICAgKi9cbiAgICAgICAgLyoqXG4gICAgICAgICAqIFdlIGNhbiByZXR1cm4gdGhlIGB0ZXh0Q2hhckRpZmZMZW5ndGhgIGlmIGl0J3Mgc2V0LFxuICAgICAgICAgKiBvdGhlcndpc2UsIGp1c3QgcmV0dXJuIDE7XG4gICAgICAgICAqL1xuICAgICAgICBpZiAodGhpcy50ZXh0Q2hhckRpZmZMZW5ndGggIT09IHVuZGVmaW5lZCkge1xuICAgICAgICAgICAgcmV0dXJuIE1hdGguYWJzKHRoaXMudGV4dENoYXJEaWZmTGVuZ3RoKTtcbiAgICAgICAgfVxuICAgICAgICAvKipcbiAgICAgICAgICogT3RoZXJ3aXNlIHJldHVybiAxIGhlcmUgdG8gY29uc3RpdHV0ZSBhIGJhc2ljIHBvc2l0aXZlIGRlbHRhLlxuICAgICAgICAgKiBUaGUgdmFsdWUgcmV0dXJuZWQgc2hvdWxkIGFsd2F5cyBiZSBwb3NpdGl2ZS4gT3ZlcnJpZGUgYG9wZXJhdGlvblZlY3RvcmBcbiAgICAgICAgICogdG8gcmV0dXJuIHRoZSBkaXJlY3Rpb24gb2YgdGhlIGRlbHRhLlxuICAgICAgICAgKi9cbiAgICAgICAgcmV0dXJuIDE7XG4gICAgfVxuICAgIGlzU2FtZUFzRW50cnkoZW50cnkpIHtcbiAgICAgICAgaWYgKCFlbnRyeSkge1xuICAgICAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgICB9XG4gICAgICAgIGNvbnN0IGxocyA9IENyZWF0ZUl0ZW1Gcm9tUGF5bG9hZCh0aGlzLnBheWxvYWQpO1xuICAgICAgICBjb25zdCByaHMgPSBDcmVhdGVJdGVtRnJvbVBheWxvYWQoZW50cnkucGF5bG9hZCk7XG4gICAgICAgIHJldHVybiBsaHMuaXNJdGVtQ29udGVudEVxdWFsV2l0aChyaHMpO1xuICAgIH1cbn1cbiJdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUFBOzs7OztBQUlBOzs7O0FBSUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQURBO0FBR0E7QUFDQTtBQXJCQTtBQUFBO0FBQUE7QUFzQkE7QUFDQTs7OztBQUdBO0FBQ0E7QUFDQTtBQUdBO0FBRUE7QUFFQTtBQUNBO0FBQ0E7QUFyQ0E7QUFBQTtBQUFBO0FBdUNBOzs7O0FBSUE7QUFDQTtBQUNBO0FBQ0E7QUFFQTtBQUNBO0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBREE7QUFDQTtBQXhEQTtBQUFBO0FBQUE7QUEwREE7Ozs7Ozs7QUFNQTs7OztBQUlBO0FBQ0E7QUFDQTtBQUNBOzs7Ozs7O0FBS0E7QUFDQTtBQTdFQTtBQUFBO0FBQUE7QUErRUE7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQXJGQTtBQUNBO0FBREE7QUFBQSIsInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./lib/services/history/item_history_entry.ts\n')},"./lib/services/history/note_history_entry.ts":
|
||
/*!****************************************************!*\
|
||
!*** ./lib/services/history/note_history_entry.ts ***!
|
||
\****************************************************/
|
||
/*! exports provided: NoteHistoryEntry */function(module,__webpack_exports__,__webpack_require__){"use strict";eval('__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "NoteHistoryEntry", function() { return NoteHistoryEntry; });\n/* harmony import */ var _Services_history_item_history_entry__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @Services/history/item_history_entry */ "./lib/services/history/item_history_entry.ts");\nfunction _typeof(obj) { "@babel/helpers - typeof"; if (typeof Symbol === "function" && typeof Symbol.iterator === "symbol") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }; } return _typeof(obj); }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } }\n\nfunction _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); } }\n\nfunction _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; }\n\nfunction _possibleConstructorReturn(self, call) { if (call && (_typeof(call) === "object" || typeof call === "function")) { return call; } return _assertThisInitialized(self); }\n\nfunction _assertThisInitialized(self) { if (self === void 0) { throw new ReferenceError("this hasn\'t been initialised - super() hasn\'t been called"); } return self; }\n\nfunction _getPrototypeOf(o) { _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function _getPrototypeOf(o) { return o.__proto__ || Object.getPrototypeOf(o); }; return _getPrototypeOf(o); }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== "function" && superClass !== null) { throw new TypeError("Super expression must either be null or a function"); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, writable: true, configurable: true } }); if (superClass) _setPrototypeOf(subClass, superClass); }\n\nfunction _setPrototypeOf(o, p) { _setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) { o.__proto__ = p; return o; }; return _setPrototypeOf(o, p); }\n\n\nvar NoteHistoryEntry = /*#__PURE__*/function (_ItemHistoryEntry) {\n _inherits(NoteHistoryEntry, _ItemHistoryEntry);\n\n function NoteHistoryEntry() {\n _classCallCheck(this, NoteHistoryEntry);\n\n return _possibleConstructorReturn(this, _getPrototypeOf(NoteHistoryEntry).apply(this, arguments));\n }\n\n _createClass(NoteHistoryEntry, [{\n key: "previewTitle",\n value: function previewTitle() {\n return this.payload.updated_at.toLocaleString();\n }\n }, {\n key: "previewSubTitle",\n value: function previewSubTitle() {\n if (!this.hasPreviousEntry) {\n return "".concat(this.textCharDiffLength, " characters loaded");\n } else if (this.textCharDiffLength < 0) {\n return "".concat(this.textCharDiffLength * -1, " characters removed");\n } else if (this.textCharDiffLength > 0) {\n return "".concat(this.textCharDiffLength, " characters added");\n } else {\n return \'Title or metadata changed\';\n }\n }\n }]);\n\n return NoteHistoryEntry;\n}(_Services_history_item_history_entry__WEBPACK_IMPORTED_MODULE_0__["ItemHistoryEntry"]);//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9saWIvc2VydmljZXMvaGlzdG9yeS9ub3RlX2hpc3RvcnlfZW50cnkudHMuanMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly9TTkxpYnJhcnkvLi9saWIvc2VydmljZXMvaGlzdG9yeS9ub3RlX2hpc3RvcnlfZW50cnkudHM/MTc5YiJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBJdGVtSGlzdG9yeUVudHJ5IH0gZnJvbSAnQFNlcnZpY2VzL2hpc3RvcnkvaXRlbV9oaXN0b3J5X2VudHJ5JztcbmV4cG9ydCBjbGFzcyBOb3RlSGlzdG9yeUVudHJ5IGV4dGVuZHMgSXRlbUhpc3RvcnlFbnRyeSB7XG4gICAgcHJldmlld1RpdGxlKCkge1xuICAgICAgICByZXR1cm4gdGhpcy5wYXlsb2FkLnVwZGF0ZWRfYXQudG9Mb2NhbGVTdHJpbmcoKTtcbiAgICB9XG4gICAgcHJldmlld1N1YlRpdGxlKCkge1xuICAgICAgICBpZiAoIXRoaXMuaGFzUHJldmlvdXNFbnRyeSkge1xuICAgICAgICAgICAgcmV0dXJuIGAke3RoaXMudGV4dENoYXJEaWZmTGVuZ3RofSBjaGFyYWN0ZXJzIGxvYWRlZGA7XG4gICAgICAgIH1cbiAgICAgICAgZWxzZSBpZiAodGhpcy50ZXh0Q2hhckRpZmZMZW5ndGggPCAwKSB7XG4gICAgICAgICAgICByZXR1cm4gYCR7dGhpcy50ZXh0Q2hhckRpZmZMZW5ndGggKiAtMX0gY2hhcmFjdGVycyByZW1vdmVkYDtcbiAgICAgICAgfVxuICAgICAgICBlbHNlIGlmICh0aGlzLnRleHRDaGFyRGlmZkxlbmd0aCA+IDApIHtcbiAgICAgICAgICAgIHJldHVybiBgJHt0aGlzLnRleHRDaGFyRGlmZkxlbmd0aH0gY2hhcmFjdGVycyBhZGRlZGA7XG4gICAgICAgIH1cbiAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICByZXR1cm4gJ1RpdGxlIG9yIG1ldGFkYXRhIGNoYW5nZWQnO1xuICAgICAgICB9XG4gICAgfVxufVxuIl0sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFBQTtBQUNBO0FBQUE7QUFDQTtBQURBO0FBQUE7QUFDQTtBQURBO0FBQUE7QUFDQTtBQURBO0FBQUE7QUFBQTtBQUVBO0FBQ0E7QUFIQTtBQUFBO0FBQUE7QUFLQTtBQUNBO0FBQ0E7QUFFQTtBQUNBO0FBRUE7QUFDQTtBQUVBO0FBQ0E7QUFDQTtBQWpCQTtBQUNBO0FBREE7QUFBQSIsInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./lib/services/history/note_history_entry.ts\n')},"./lib/services/index.ts":
|
||
/*!*******************************!*\
|
||
!*** ./lib/services/index.ts ***!
|
||
\*******************************/
|
||
/*! exports provided: SNAlertService, SNSessionManager, SNApiService, SNComponentManager, SNHttpService, PayloadManager, SNSingletonManager, SNActionsService, SNMigrationService, SNProtocolService, KeyMode, SNHistoryManager, SNPrivilegesService, SyncEvent, ItemManager, SNSyncService, SyncModes, SyncQueueStrategy, ChallengeService, SNStorageService, StorageEncryptionPolicies, StoragePersistencePolicies */function(module,__webpack_exports__,__webpack_require__){"use strict";eval('__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _Services_alert_service__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @Services/alert_service */ "./lib/services/alert_service.ts");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "SNAlertService", function() { return _Services_alert_service__WEBPACK_IMPORTED_MODULE_0__["SNAlertService"]; });\n\n/* harmony import */ var _Services_api_session_manager__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! @Services/api/session_manager */ "./lib/services/api/session_manager.ts");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "SNSessionManager", function() { return _Services_api_session_manager__WEBPACK_IMPORTED_MODULE_1__["SNSessionManager"]; });\n\n/* harmony import */ var _Services_api_api_service__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! @Services/api/api_service */ "./lib/services/api/api_service.ts");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "SNApiService", function() { return _Services_api_api_service__WEBPACK_IMPORTED_MODULE_2__["SNApiService"]; });\n\n/* harmony import */ var _Services_component_manager__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! @Services/component_manager */ "./lib/services/component_manager.ts");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "SNComponentManager", function() { return _Services_component_manager__WEBPACK_IMPORTED_MODULE_3__["SNComponentManager"]; });\n\n/* harmony import */ var _Services_api_http_service__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! @Services/api/http_service */ "./lib/services/api/http_service.ts");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "SNHttpService", function() { return _Services_api_http_service__WEBPACK_IMPORTED_MODULE_4__["SNHttpService"]; });\n\n/* harmony import */ var _Services_model_manager__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! @Services/model_manager */ "./lib/services/model_manager.ts");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "PayloadManager", function() { return _Services_model_manager__WEBPACK_IMPORTED_MODULE_5__["PayloadManager"]; });\n\n/* harmony import */ var _Services_singleton_manager__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! @Services/singleton_manager */ "./lib/services/singleton_manager.ts");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "SNSingletonManager", function() { return _Services_singleton_manager__WEBPACK_IMPORTED_MODULE_6__["SNSingletonManager"]; });\n\n/* harmony import */ var _Services_actions_service__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! @Services/actions_service */ "./lib/services/actions_service.ts");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "SNActionsService", function() { return _Services_actions_service__WEBPACK_IMPORTED_MODULE_7__["SNActionsService"]; });\n\n/* harmony import */ var _Lib_services_migration_service__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! @Lib/services/migration_service */ "./lib/services/migration_service.ts");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "SNMigrationService", function() { return _Lib_services_migration_service__WEBPACK_IMPORTED_MODULE_8__["SNMigrationService"]; });\n\n/* harmony import */ var _Services_protocol_service__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(/*! @Services/protocol_service */ "./lib/services/protocol_service.ts");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "SNProtocolService", function() { return _Services_protocol_service__WEBPACK_IMPORTED_MODULE_9__["SNProtocolService"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "KeyMode", function() { return _Services_protocol_service__WEBPACK_IMPORTED_MODULE_9__["KeyMode"]; });\n\n/* harmony import */ var _Services_history_history_manager__WEBPACK_IMPORTED_MODULE_10__ = __webpack_require__(/*! @Services/history/history_manager */ "./lib/services/history/history_manager.ts");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "SNHistoryManager", function() { return _Services_history_history_manager__WEBPACK_IMPORTED_MODULE_10__["SNHistoryManager"]; });\n\n/* harmony import */ var _Services_privileges_service__WEBPACK_IMPORTED_MODULE_11__ = __webpack_require__(/*! @Services/privileges_service */ "./lib/services/privileges_service.ts");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "SNPrivilegesService", function() { return _Services_privileges_service__WEBPACK_IMPORTED_MODULE_11__["SNPrivilegesService"]; });\n\n/* harmony import */ var _Services_sync_events__WEBPACK_IMPORTED_MODULE_12__ = __webpack_require__(/*! @Services/sync/events */ "./lib/services/sync/events.ts");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "SyncEvent", function() { return _Services_sync_events__WEBPACK_IMPORTED_MODULE_12__["SyncEvent"]; });\n\n/* harmony import */ var _Services_item_manager__WEBPACK_IMPORTED_MODULE_13__ = __webpack_require__(/*! @Services/item_manager */ "./lib/services/item_manager.ts");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "ItemManager", function() { return _Services_item_manager__WEBPACK_IMPORTED_MODULE_13__["ItemManager"]; });\n\n/* harmony import */ var _Services_sync_sync_service__WEBPACK_IMPORTED_MODULE_14__ = __webpack_require__(/*! @Services/sync/sync_service */ "./lib/services/sync/sync_service.ts");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "SNSyncService", function() { return _Services_sync_sync_service__WEBPACK_IMPORTED_MODULE_14__["SNSyncService"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "SyncModes", function() { return _Services_sync_sync_service__WEBPACK_IMPORTED_MODULE_14__["SyncModes"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "SyncQueueStrategy", function() { return _Services_sync_sync_service__WEBPACK_IMPORTED_MODULE_14__["SyncQueueStrategy"]; });\n\n/* harmony import */ var _Lib_services_challenge_challenge_service__WEBPACK_IMPORTED_MODULE_15__ = __webpack_require__(/*! @Lib/services/challenge/challenge_service */ "./lib/services/challenge/challenge_service.ts");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "ChallengeService", function() { return _Lib_services_challenge_challenge_service__WEBPACK_IMPORTED_MODULE_15__["ChallengeService"]; });\n\n/* harmony import */ var _Services_storage_service__WEBPACK_IMPORTED_MODULE_16__ = __webpack_require__(/*! @Services/storage_service */ "./lib/services/storage_service.ts");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "SNStorageService", function() { return _Services_storage_service__WEBPACK_IMPORTED_MODULE_16__["SNStorageService"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "StorageEncryptionPolicies", function() { return _Services_storage_service__WEBPACK_IMPORTED_MODULE_16__["StorageEncryptionPolicies"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "StoragePersistencePolicies", function() { return _Services_storage_service__WEBPACK_IMPORTED_MODULE_16__["StoragePersistencePolicies"]; });\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9saWIvc2VydmljZXMvaW5kZXgudHMuanMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly9TTkxpYnJhcnkvLi9saWIvc2VydmljZXMvaW5kZXgudHM/NzljMCJdLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgeyBTTkFsZXJ0U2VydmljZSB9IGZyb20gJ0BTZXJ2aWNlcy9hbGVydF9zZXJ2aWNlJztcbmV4cG9ydCB7IFNOU2Vzc2lvbk1hbmFnZXIgfSBmcm9tICdAU2VydmljZXMvYXBpL3Nlc3Npb25fbWFuYWdlcic7XG5leHBvcnQgeyBTTkFwaVNlcnZpY2UgfSBmcm9tICdAU2VydmljZXMvYXBpL2FwaV9zZXJ2aWNlJztcbmV4cG9ydCB7IFNOQ29tcG9uZW50TWFuYWdlciB9IGZyb20gJ0BTZXJ2aWNlcy9jb21wb25lbnRfbWFuYWdlcic7XG5leHBvcnQgeyBTTkh0dHBTZXJ2aWNlIH0gZnJvbSAnQFNlcnZpY2VzL2FwaS9odHRwX3NlcnZpY2UnO1xuZXhwb3J0IHsgUGF5bG9hZE1hbmFnZXIgfSBmcm9tICdAU2VydmljZXMvbW9kZWxfbWFuYWdlcic7XG5leHBvcnQgeyBTTlNpbmdsZXRvbk1hbmFnZXIgfSBmcm9tICdAU2VydmljZXMvc2luZ2xldG9uX21hbmFnZXInO1xuZXhwb3J0IHsgU05BY3Rpb25zU2VydmljZSB9IGZyb20gJ0BTZXJ2aWNlcy9hY3Rpb25zX3NlcnZpY2UnO1xuZXhwb3J0IHsgU05NaWdyYXRpb25TZXJ2aWNlIH0gZnJvbSAnQExpYi9zZXJ2aWNlcy9taWdyYXRpb25fc2VydmljZSc7XG5leHBvcnQgeyBTTlByb3RvY29sU2VydmljZSwgS2V5TW9kZSB9IGZyb20gJ0BTZXJ2aWNlcy9wcm90b2NvbF9zZXJ2aWNlJztcbmV4cG9ydCB7IFNOSGlzdG9yeU1hbmFnZXIgfSBmcm9tICdAU2VydmljZXMvaGlzdG9yeS9oaXN0b3J5X21hbmFnZXInO1xuZXhwb3J0IHsgU05Qcml2aWxlZ2VzU2VydmljZSB9IGZyb20gJ0BTZXJ2aWNlcy9wcml2aWxlZ2VzX3NlcnZpY2UnO1xuZXhwb3J0IHsgU3luY0V2ZW50IGFzIFN5bmNFdmVudCB9IGZyb20gJ0BTZXJ2aWNlcy9zeW5jL2V2ZW50cyc7XG5leHBvcnQgeyBJdGVtTWFuYWdlciB9IGZyb20gJ0BTZXJ2aWNlcy9pdGVtX21hbmFnZXInO1xuZXhwb3J0IHsgU05TeW5jU2VydmljZSwgU3luY01vZGVzLCBTeW5jUXVldWVTdHJhdGVneSB9IGZyb20gJ0BTZXJ2aWNlcy9zeW5jL3N5bmNfc2VydmljZSc7XG5leHBvcnQgeyBDaGFsbGVuZ2VTZXJ2aWNlIH0gZnJvbSAnQExpYi9zZXJ2aWNlcy9jaGFsbGVuZ2UvY2hhbGxlbmdlX3NlcnZpY2UnO1xuZXhwb3J0IHsgU05TdG9yYWdlU2VydmljZSwgU3RvcmFnZUVuY3J5cHRpb25Qb2xpY2llcywgU3RvcmFnZVBlcnNpc3RlbmNlUG9saWNpZXMgfSBmcm9tICdAU2VydmljZXMvc3RvcmFnZV9zZXJ2aWNlJztcbiJdLCJtYXBwaW5ncyI6IkFBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOyIsInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./lib/services/index.ts\n')},"./lib/services/item_manager.ts":
|
||
/*!**************************************!*\
|
||
!*** ./lib/services/item_manager.ts ***!
|
||
\**************************************/
|
||
/*! exports provided: ItemManager */function(module,__webpack_exports__,__webpack_require__){"use strict";eval('__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "ItemManager", function() { return ItemManager; });\n/* harmony import */ var _babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @babel/runtime/regenerator */ "./node_modules/@babel/runtime/regenerator/index.js");\n/* harmony import */ var _babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var _Protocol_collection_item_collection__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! @Protocol/collection/item_collection */ "./lib/protocol/collection/item_collection.ts");\n/* harmony import */ var _models_app_userPrefs__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./../models/app/userPrefs */ "./lib/models/app/userPrefs.ts");\n/* harmony import */ var _models_app_privileges__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./../models/app/privileges */ "./lib/models/app/privileges.ts");\n/* harmony import */ var _models_app_tag__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ./../models/app/tag */ "./lib/models/app/tag.ts");\n/* harmony import */ var _models_app_items_key__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ./../models/app/items_key */ "./lib/models/app/items_key.ts");\n/* harmony import */ var _models_app_note__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ./../models/app/note */ "./lib/models/app/note.ts");\n/* harmony import */ var _models_app_extension__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! ./../models/app/extension */ "./lib/models/app/extension.ts");\n/* harmony import */ var _models_core_predicate__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! ./../models/core/predicate */ "./lib/models/core/predicate.ts");\n/* harmony import */ var _uuid__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(/*! ./../uuid */ "./lib/uuid.ts");\n/* harmony import */ var _Payloads_functions__WEBPACK_IMPORTED_MODULE_10__ = __webpack_require__(/*! @Payloads/functions */ "./lib/protocol/payloads/functions.ts");\n/* harmony import */ var _Models_generator__WEBPACK_IMPORTED_MODULE_11__ = __webpack_require__(/*! @Models/generator */ "./lib/models/generator.ts");\n/* harmony import */ var _Models_functions__WEBPACK_IMPORTED_MODULE_12__ = __webpack_require__(/*! @Models/functions */ "./lib/models/functions.ts");\n/* harmony import */ var _Lib_services_pure_service__WEBPACK_IMPORTED_MODULE_13__ = __webpack_require__(/*! @Lib/services/pure_service */ "./lib/services/pure_service.ts");\n/* harmony import */ var _models_app_component__WEBPACK_IMPORTED_MODULE_14__ = __webpack_require__(/*! ./../models/app/component */ "./lib/models/app/component.ts");\n/* harmony import */ var _Lib_utils__WEBPACK_IMPORTED_MODULE_15__ = __webpack_require__(/*! @Lib/utils */ "./lib/utils.ts");\n/* harmony import */ var _Payloads_generator__WEBPACK_IMPORTED_MODULE_16__ = __webpack_require__(/*! @Payloads/generator */ "./lib/protocol/payloads/generator.ts");\n/* harmony import */ var _models_core_item__WEBPACK_IMPORTED_MODULE_17__ = __webpack_require__(/*! ./../models/core/item */ "./lib/models/core/item.ts");\n/* harmony import */ var _protocol_payloads_sources__WEBPACK_IMPORTED_MODULE_18__ = __webpack_require__(/*! ./../protocol/payloads/sources */ "./lib/protocol/payloads/sources.ts");\n/* harmony import */ var _models_content_types__WEBPACK_IMPORTED_MODULE_19__ = __webpack_require__(/*! ../models/content_types */ "./lib/models/content_types.ts");\n\n\nfunction _typeof(obj) { "@babel/helpers - typeof"; if (typeof Symbol === "function" && typeof Symbol.iterator === "symbol") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }; } return _typeof(obj); }\n\nfunction asyncGeneratorStep(gen, resolve, reject, _next, _throw, key, arg) { try { var info = gen[key](arg); var value = info.value; } catch (error) { reject(error); return; } if (info.done) { resolve(value); } else { Promise.resolve(value).then(_next, _throw); } }\n\nfunction _asyncToGenerator(fn) { return function () { var self = this, args = arguments; return new Promise(function (resolve, reject) { var gen = fn.apply(self, args); function _next(value) { asyncGeneratorStep(gen, resolve, reject, _next, _throw, "next", value); } function _throw(err) { asyncGeneratorStep(gen, resolve, reject, _next, _throw, "throw", err); } _next(undefined); }); }; }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } }\n\nfunction _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); } }\n\nfunction _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; }\n\nfunction _possibleConstructorReturn(self, call) { if (call && (_typeof(call) === "object" || typeof call === "function")) { return call; } return _assertThisInitialized(self); }\n\nfunction _getPrototypeOf(o) { _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function _getPrototypeOf(o) { return o.__proto__ || Object.getPrototypeOf(o); }; return _getPrototypeOf(o); }\n\nfunction _assertThisInitialized(self) { if (self === void 0) { throw new ReferenceError("this hasn\'t been initialised - super() hasn\'t been called"); } return self; }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== "function" && superClass !== null) { throw new TypeError("Super expression must either be null or a function"); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, writable: true, configurable: true } }); if (superClass) _setPrototypeOf(subClass, superClass); }\n\nfunction _setPrototypeOf(o, p) { _setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) { o.__proto__ = p; return o; }; return _setPrototypeOf(o, p); }\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n/**\n * The item manager is backed by the Payload Manager. Think of the item manager as a\n * more user-friendly or item-specific interface to creating and updating data.\n * The item manager listens for change events from the global payload manager, and\n * converts any payloads to SNItems, then propagates those items to listeners on the\n * item manager. When the item manager makes a change to an item, it will modify items\n * using a mutator, then emit those payloads to the payload manager. The payload manager\n * will then notify its observers (which is us), we\'ll convert the payloads to items,\n * and then we\'ll propagate them to our listeners.\n */\n\nvar ItemManager = /*#__PURE__*/function (_PureService) {\n _inherits(ItemManager, _PureService);\n\n function ItemManager(modelManager) {\n var _this;\n\n _classCallCheck(this, ItemManager);\n\n _this = _possibleConstructorReturn(this, _getPrototypeOf(ItemManager).call(this));\n _this.observers = [];\n _this.modelManager = modelManager;\n\n _this.createCollection();\n\n _this.unsubChangeObserver = _this.modelManager.addObserver(_models_content_types__WEBPACK_IMPORTED_MODULE_19__["ContentType"].Any, _this.onPayloadChange.bind(_assertThisInitialized(_this)));\n _this.systemSmartTags = BuildSmartTags();\n return _this;\n }\n\n _createClass(ItemManager, [{\n key: "setDisplayOptions",\n value: function setDisplayOptions(contentType, sortBy, direction, filter) {\n this.collection.setDisplayOptions(contentType, sortBy, direction, filter);\n }\n }, {\n key: "getDisplayableItems",\n value: function getDisplayableItems(contentType) {\n return this.collection.displayElements(contentType);\n }\n }, {\n key: "deinit",\n value: function deinit() {\n this.unsubChangeObserver();\n this.unsubChangeObserver = undefined;\n this.modelManager = undefined;\n this.collection = undefined;\n }\n }, {\n key: "resetState",\n value: function resetState() {\n this.createCollection();\n }\n }, {\n key: "createCollection",\n value: function createCollection() {\n this.collection = new _Protocol_collection_item_collection__WEBPACK_IMPORTED_MODULE_1__["ItemCollection"]();\n this.collection.setDisplayOptions(_models_content_types__WEBPACK_IMPORTED_MODULE_19__["ContentType"].Note, _Protocol_collection_item_collection__WEBPACK_IMPORTED_MODULE_1__["CollectionSort"].CreatedAt, \'dsc\');\n this.collection.setDisplayOptions(_models_content_types__WEBPACK_IMPORTED_MODULE_19__["ContentType"].Tag, _Protocol_collection_item_collection__WEBPACK_IMPORTED_MODULE_1__["CollectionSort"].Title, \'asc\');\n this.collection.setDisplayOptions(_models_content_types__WEBPACK_IMPORTED_MODULE_19__["ContentType"].ItemsKey, _Protocol_collection_item_collection__WEBPACK_IMPORTED_MODULE_1__["CollectionSort"].CreatedAt, \'asc\');\n this.collection.setDisplayOptions(_models_content_types__WEBPACK_IMPORTED_MODULE_19__["ContentType"].Component, _Protocol_collection_item_collection__WEBPACK_IMPORTED_MODULE_1__["CollectionSort"].CreatedAt, \'asc\');\n this.collection.setDisplayOptions(_models_content_types__WEBPACK_IMPORTED_MODULE_19__["ContentType"].SmartTag, _Protocol_collection_item_collection__WEBPACK_IMPORTED_MODULE_1__["CollectionSort"].Title, \'asc\');\n }\n /**\n * Returns an item for a given id\n */\n\n }, {\n key: "findItem",\n value: function findItem(uuid) {\n return this.collection.find(uuid);\n }\n /**\n * Returns all items matching given ids\n * @param includeBlanks If true and an item is not found, an `undefined` element\n * will be inserted into the array.\n */\n\n }, {\n key: "findItems",\n value: function findItems(uuids) {\n var includeBlanks = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : false;\n return this.collection.findAll(uuids, includeBlanks);\n }\n /**\n * Returns a detached array of all items\n */\n\n }, {\n key: "itemsKeys",\n\n /**\n * Returns all non-deleted items keys\n */\n value: function itemsKeys() {\n return this.collection.displayElements(_models_content_types__WEBPACK_IMPORTED_MODULE_19__["ContentType"].ItemsKey);\n }\n /**\n * Returns all non-deleted notes\n */\n\n }, {\n key: "addObserver",\n value: function addObserver(contentType, callback) {\n var _this2 = this;\n\n if (!Array.isArray(contentType)) {\n contentType = [contentType];\n }\n\n var observer = {\n contentType: contentType,\n callback: callback\n };\n this.observers.push(observer);\n return function () {\n Object(_Lib_utils__WEBPACK_IMPORTED_MODULE_15__["removeFromArray"])(_this2.observers, observer);\n };\n }\n /**\n * Returns the items that reference the given item, or an empty array if no results.\n */\n\n }, {\n key: "itemsReferencingItem",\n value: function itemsReferencingItem(uuid) {\n if (!Object(_Lib_utils__WEBPACK_IMPORTED_MODULE_15__["isString"])(uuid)) {\n throw Error(\'Must use uuid string\');\n }\n\n var uuids = this.collection.uuidsThatReferenceUuid(uuid);\n return this.findItems(uuids);\n }\n /**\n * Returns all items that an item directly references\n */\n\n }, {\n key: "referencesForItem",\n value: function referencesForItem(uuid) {\n if (!Object(_Lib_utils__WEBPACK_IMPORTED_MODULE_15__["isString"])(uuid)) {\n throw Error(\'Must use uuid string\');\n }\n\n var item = this.findItem(uuid);\n var uuids = item.references.map(function (ref) {\n return ref.uuid;\n });\n return this.findItems(uuids);\n }\n }, {\n key: "onPayloadChange",\n value: function () {\n var _onPayloadChange = _asyncToGenerator( /*#__PURE__*/_babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0___default.a.mark(function _callee(changed, inserted, discarded, source, sourceKey) {\n return _babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0___default.a.wrap(function _callee$(_context) {\n while (1) {\n switch (_context.prev = _context.next) {\n case 0:\n return _context.abrupt("return", this.setPayloads(changed, inserted, discarded, source, sourceKey));\n\n case 1:\n case "end":\n return _context.stop();\n }\n }\n }, _callee, this);\n }));\n\n function onPayloadChange(_x, _x2, _x3, _x4, _x5) {\n return _onPayloadChange.apply(this, arguments);\n }\n\n return onPayloadChange;\n }()\n }, {\n key: "setPayloads",\n value: function () {\n var _setPayloads = _asyncToGenerator( /*#__PURE__*/_babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0___default.a.mark(function _callee2(changed, inserted, discarded, source, sourceKey) {\n var changedItems, insertedItems, changedOrInserted, discardedItems, _iteratorNormalCompletion, _didIteratorError, _iteratorError, _iterator, _step, item;\n\n return _babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0___default.a.wrap(function _callee2$(_context2) {\n while (1) {\n switch (_context2.prev = _context2.next) {\n case 0:\n changedItems = changed.map(function (p) {\n return Object(_Models_generator__WEBPACK_IMPORTED_MODULE_11__["CreateItemFromPayload"])(p);\n });\n insertedItems = inserted.map(function (p) {\n return Object(_Models_generator__WEBPACK_IMPORTED_MODULE_11__["CreateItemFromPayload"])(p);\n });\n changedOrInserted = changedItems.concat(insertedItems);\n\n if (changedOrInserted.length > 0) {\n this.collection.set(changedOrInserted);\n }\n\n discardedItems = discarded.map(function (p) {\n return Object(_Models_generator__WEBPACK_IMPORTED_MODULE_11__["CreateItemFromPayload"])(p);\n });\n _iteratorNormalCompletion = true;\n _didIteratorError = false;\n _iteratorError = undefined;\n _context2.prev = 8;\n\n for (_iterator = discardedItems[Symbol.iterator](); !(_iteratorNormalCompletion = (_step = _iterator.next()).done); _iteratorNormalCompletion = true) {\n item = _step.value;\n this.collection.discard(item);\n }\n\n _context2.next = 16;\n break;\n\n case 12:\n _context2.prev = 12;\n _context2.t0 = _context2["catch"](8);\n _didIteratorError = true;\n _iteratorError = _context2.t0;\n\n case 16:\n _context2.prev = 16;\n _context2.prev = 17;\n\n if (!_iteratorNormalCompletion && _iterator.return != null) {\n _iterator.return();\n }\n\n case 19:\n _context2.prev = 19;\n\n if (!_didIteratorError) {\n _context2.next = 22;\n break;\n }\n\n throw _iteratorError;\n\n case 22:\n return _context2.finish(19);\n\n case 23:\n return _context2.finish(16);\n\n case 24:\n _context2.next = 26;\n return this.notifyObservers(changedItems, insertedItems, discardedItems, source, sourceKey);\n\n case 26:\n case "end":\n return _context2.stop();\n }\n }\n }, _callee2, this, [[8, 12, 16, 24], [17,, 19, 23]]);\n }));\n\n function setPayloads(_x6, _x7, _x8, _x9, _x10) {\n return _setPayloads.apply(this, arguments);\n }\n\n return setPayloads;\n }()\n }, {\n key: "notifyObservers",\n value: function () {\n var _notifyObservers = _asyncToGenerator( /*#__PURE__*/_babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0___default.a.mark(function _callee3(changed, inserted, discarded, source, sourceKey) {\n var filter, observers, _iteratorNormalCompletion2, _didIteratorError2, _iteratorError2, _iterator2, _step2, observer, filteredChanged, filteredInserted, filteredDiscarded;\n\n return _babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0___default.a.wrap(function _callee3$(_context3) {\n while (1) {\n switch (_context3.prev = _context3.next) {\n case 0:\n filter = function filter(items, types) {\n return items.filter(function (item) {\n return types.includes(_models_content_types__WEBPACK_IMPORTED_MODULE_19__["ContentType"].Any) || types.includes(item.content_type);\n });\n };\n\n observers = this.observers.slice();\n _iteratorNormalCompletion2 = true;\n _didIteratorError2 = false;\n _iteratorError2 = undefined;\n _context3.prev = 5;\n _iterator2 = observers[Symbol.iterator]();\n\n case 7:\n if (_iteratorNormalCompletion2 = (_step2 = _iterator2.next()).done) {\n _context3.next = 19;\n break;\n }\n\n observer = _step2.value;\n filteredChanged = filter(changed, observer.contentType);\n filteredInserted = filter(inserted, observer.contentType);\n filteredDiscarded = filter(discarded, observer.contentType);\n\n if (!(filteredChanged.length === 0 && filteredInserted.length === 0 && filteredDiscarded.length === 0)) {\n _context3.next = 14;\n break;\n }\n\n return _context3.abrupt("continue", 16);\n\n case 14:\n _context3.next = 16;\n return observer.callback(filteredChanged, filteredInserted, filteredDiscarded, source, sourceKey);\n\n case 16:\n _iteratorNormalCompletion2 = true;\n _context3.next = 7;\n break;\n\n case 19:\n _context3.next = 25;\n break;\n\n case 21:\n _context3.prev = 21;\n _context3.t0 = _context3["catch"](5);\n _didIteratorError2 = true;\n _iteratorError2 = _context3.t0;\n\n case 25:\n _context3.prev = 25;\n _context3.prev = 26;\n\n if (!_iteratorNormalCompletion2 && _iterator2.return != null) {\n _iterator2.return();\n }\n\n case 28:\n _context3.prev = 28;\n\n if (!_didIteratorError2) {\n _context3.next = 31;\n break;\n }\n\n throw _iteratorError2;\n\n case 31:\n return _context3.finish(28);\n\n case 32:\n return _context3.finish(25);\n\n case 33:\n case "end":\n return _context3.stop();\n }\n }\n }, _callee3, this, [[5, 21, 25, 33], [26,, 28, 32]]);\n }));\n\n function notifyObservers(_x11, _x12, _x13, _x14, _x15) {\n return _notifyObservers.apply(this, arguments);\n }\n\n return notifyObservers;\n }()\n /**\n * Consumers wanting to modify an item should run it through this block,\n * so that data is properly mapped through our function, and latest state\n * is properly reconciled.\n * @param itemOrUuid If an item is passed, the values of that item will be directly used,\n * and the mutation will be applied on that item and propagated. This means that if you pass\n * an old item reference and mutate that, the new value will be outdated. In this case, always\n * pass the uuid of the item if you want to mutate the latest version of the item.\n */\n\n }, {\n key: "changeItem",\n value: function () {\n var _changeItem = _asyncToGenerator( /*#__PURE__*/_babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0___default.a.mark(function _callee4(uuid, mutate) {\n var mutationType,\n payloadSource,\n payloadSourceKey,\n results,\n _args4 = arguments;\n return _babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0___default.a.wrap(function _callee4$(_context4) {\n while (1) {\n switch (_context4.prev = _context4.next) {\n case 0:\n mutationType = _args4.length > 2 && _args4[2] !== undefined ? _args4[2] : _models_core_item__WEBPACK_IMPORTED_MODULE_17__["MutationType"].UserInteraction;\n payloadSource = _args4.length > 3 && _args4[3] !== undefined ? _args4[3] : _protocol_payloads_sources__WEBPACK_IMPORTED_MODULE_18__["PayloadSource"].LocalChanged;\n payloadSourceKey = _args4.length > 4 ? _args4[4] : undefined;\n\n if (Object(_Lib_utils__WEBPACK_IMPORTED_MODULE_15__["isString"])(uuid)) {\n _context4.next = 5;\n break;\n }\n\n throw Error(\'Invalid uuid for changeItem\');\n\n case 5:\n _context4.next = 7;\n return this.changeItems([uuid], mutate, mutationType, payloadSource, payloadSourceKey);\n\n case 7:\n results = _context4.sent;\n return _context4.abrupt("return", results[0]);\n\n case 9:\n case "end":\n return _context4.stop();\n }\n }\n }, _callee4, this);\n }));\n\n function changeItem(_x16, _x17) {\n return _changeItem.apply(this, arguments);\n }\n\n return changeItem;\n }()\n }, {\n key: "createMutatorForItem",\n value: function createMutatorForItem(item, type) {\n if (item.content_type === _models_content_types__WEBPACK_IMPORTED_MODULE_19__["ContentType"].Note) {\n return new _models_app_note__WEBPACK_IMPORTED_MODULE_6__["NoteMutator"](item, type);\n } else if (item.content_type === _models_content_types__WEBPACK_IMPORTED_MODULE_19__["ContentType"].Tag) {\n return new _models_app_tag__WEBPACK_IMPORTED_MODULE_4__["TagMutator"](item, type);\n } else if (item.content_type === _models_content_types__WEBPACK_IMPORTED_MODULE_19__["ContentType"].Component) {\n return new _models_app_component__WEBPACK_IMPORTED_MODULE_14__["ComponentMutator"](item, type);\n } else if (item.content_type === _models_content_types__WEBPACK_IMPORTED_MODULE_19__["ContentType"].ActionsExtension) {\n return new _models_app_extension__WEBPACK_IMPORTED_MODULE_7__["ActionsExtensionMutator"](item, type);\n } else if (item.content_type === _models_content_types__WEBPACK_IMPORTED_MODULE_19__["ContentType"].ItemsKey) {\n return new _models_app_items_key__WEBPACK_IMPORTED_MODULE_5__["ItemsKeyMutator"](item, type);\n } else if (item.content_type === _models_content_types__WEBPACK_IMPORTED_MODULE_19__["ContentType"].Privileges) {\n return new _models_app_privileges__WEBPACK_IMPORTED_MODULE_3__["PrivilegeMutator"](item, type);\n } else if (item.content_type === _models_content_types__WEBPACK_IMPORTED_MODULE_19__["ContentType"].UserPrefs) {\n return new _models_app_userPrefs__WEBPACK_IMPORTED_MODULE_2__["UserPrefsMutator"](item, type);\n } else {\n return new _models_core_item__WEBPACK_IMPORTED_MODULE_17__["ItemMutator"](item, type);\n }\n }\n /**\n * @param mutate If not supplied, the intention would simply be to mark the item as dirty.\n */\n\n }, {\n key: "changeItems",\n value: function () {\n var _changeItems = _asyncToGenerator( /*#__PURE__*/_babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0___default.a.mark(function _callee5(uuids, mutate) {\n var mutationType,\n payloadSource,\n payloadSourceKey,\n items,\n payloads,\n _iteratorNormalCompletion3,\n _didIteratorError3,\n _iteratorError3,\n _iterator3,\n _step3,\n item,\n mutator,\n payload,\n results,\n _args5 = arguments;\n\n return _babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0___default.a.wrap(function _callee5$(_context5) {\n while (1) {\n switch (_context5.prev = _context5.next) {\n case 0:\n mutationType = _args5.length > 2 && _args5[2] !== undefined ? _args5[2] : _models_core_item__WEBPACK_IMPORTED_MODULE_17__["MutationType"].UserInteraction;\n payloadSource = _args5.length > 3 && _args5[3] !== undefined ? _args5[3] : _protocol_payloads_sources__WEBPACK_IMPORTED_MODULE_18__["PayloadSource"].LocalChanged;\n payloadSourceKey = _args5.length > 4 ? _args5[4] : undefined;\n items = this.findItems(uuids, true);\n payloads = [];\n _iteratorNormalCompletion3 = true;\n _didIteratorError3 = false;\n _iteratorError3 = undefined;\n _context5.prev = 8;\n _iterator3 = items[Symbol.iterator]();\n\n case 10:\n if (_iteratorNormalCompletion3 = (_step3 = _iterator3.next()).done) {\n _context5.next = 21;\n break;\n }\n\n item = _step3.value;\n\n if (item) {\n _context5.next = 14;\n break;\n }\n\n throw Error(\'Attempting to change non-existant item\');\n\n case 14:\n mutator = this.createMutatorForItem(item, mutationType);\n\n if (mutate) {\n mutate(mutator);\n }\n\n payload = mutator.getResult();\n payloads.push(payload);\n\n case 18:\n _iteratorNormalCompletion3 = true;\n _context5.next = 10;\n break;\n\n case 21:\n _context5.next = 27;\n break;\n\n case 23:\n _context5.prev = 23;\n _context5.t0 = _context5["catch"](8);\n _didIteratorError3 = true;\n _iteratorError3 = _context5.t0;\n\n case 27:\n _context5.prev = 27;\n _context5.prev = 28;\n\n if (!_iteratorNormalCompletion3 && _iterator3.return != null) {\n _iterator3.return();\n }\n\n case 30:\n _context5.prev = 30;\n\n if (!_didIteratorError3) {\n _context5.next = 33;\n break;\n }\n\n throw _iteratorError3;\n\n case 33:\n return _context5.finish(30);\n\n case 34:\n return _context5.finish(27);\n\n case 35:\n _context5.next = 37;\n return this.modelManager.emitPayloads(payloads, payloadSource, payloadSourceKey);\n\n case 37:\n results = this.findItems(payloads.map(function (p) {\n return p.uuid;\n }));\n return _context5.abrupt("return", results);\n\n case 39:\n case "end":\n return _context5.stop();\n }\n }\n }, _callee5, this, [[8, 23, 27, 35], [28,, 30, 34]]);\n }));\n\n function changeItems(_x18, _x19) {\n return _changeItems.apply(this, arguments);\n }\n\n return changeItems;\n }()\n }, {\n key: "changeNote",\n value: function () {\n var _changeNote = _asyncToGenerator( /*#__PURE__*/_babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0___default.a.mark(function _callee6(uuid, mutate) {\n var mutationType,\n payloadSource,\n payloadSourceKey,\n note,\n mutator,\n _args6 = arguments;\n return _babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0___default.a.wrap(function _callee6$(_context6) {\n while (1) {\n switch (_context6.prev = _context6.next) {\n case 0:\n mutationType = _args6.length > 2 && _args6[2] !== undefined ? _args6[2] : _models_core_item__WEBPACK_IMPORTED_MODULE_17__["MutationType"].UserInteraction;\n payloadSource = _args6.length > 3 && _args6[3] !== undefined ? _args6[3] : _protocol_payloads_sources__WEBPACK_IMPORTED_MODULE_18__["PayloadSource"].LocalChanged;\n payloadSourceKey = _args6.length > 4 ? _args6[4] : undefined;\n note = this.findItem(uuid);\n\n if (note) {\n _context6.next = 6;\n break;\n }\n\n throw Error(\'Attempting to change non-existant note\');\n\n case 6:\n mutator = new _models_app_note__WEBPACK_IMPORTED_MODULE_6__["NoteMutator"](note, mutationType);\n return _context6.abrupt("return", this.applyTransform(mutator, mutate, payloadSource, payloadSourceKey));\n\n case 8:\n case "end":\n return _context6.stop();\n }\n }\n }, _callee6, this);\n }));\n\n function changeNote(_x20, _x21) {\n return _changeNote.apply(this, arguments);\n }\n\n return changeNote;\n }()\n }, {\n key: "changeComponent",\n value: function () {\n var _changeComponent = _asyncToGenerator( /*#__PURE__*/_babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0___default.a.mark(function _callee7(uuid, mutate) {\n var mutationType,\n payloadSource,\n payloadSourceKey,\n component,\n mutator,\n _args7 = arguments;\n return _babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0___default.a.wrap(function _callee7$(_context7) {\n while (1) {\n switch (_context7.prev = _context7.next) {\n case 0:\n mutationType = _args7.length > 2 && _args7[2] !== undefined ? _args7[2] : _models_core_item__WEBPACK_IMPORTED_MODULE_17__["MutationType"].UserInteraction;\n payloadSource = _args7.length > 3 && _args7[3] !== undefined ? _args7[3] : _protocol_payloads_sources__WEBPACK_IMPORTED_MODULE_18__["PayloadSource"].LocalChanged;\n payloadSourceKey = _args7.length > 4 ? _args7[4] : undefined;\n component = this.findItem(uuid);\n\n if (component) {\n _context7.next = 6;\n break;\n }\n\n throw Error(\'Attempting to change non-existant component\');\n\n case 6:\n mutator = new _models_app_component__WEBPACK_IMPORTED_MODULE_14__["ComponentMutator"](component, mutationType);\n return _context7.abrupt("return", this.applyTransform(mutator, mutate, payloadSource, payloadSourceKey));\n\n case 8:\n case "end":\n return _context7.stop();\n }\n }\n }, _callee7, this);\n }));\n\n function changeComponent(_x22, _x23) {\n return _changeComponent.apply(this, arguments);\n }\n\n return changeComponent;\n }()\n }, {\n key: "changeActionsExtension",\n value: function () {\n var _changeActionsExtension = _asyncToGenerator( /*#__PURE__*/_babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0___default.a.mark(function _callee8(uuid, mutate) {\n var mutationType,\n payloadSource,\n payloadSourceKey,\n extension,\n mutator,\n _args8 = arguments;\n return _babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0___default.a.wrap(function _callee8$(_context8) {\n while (1) {\n switch (_context8.prev = _context8.next) {\n case 0:\n mutationType = _args8.length > 2 && _args8[2] !== undefined ? _args8[2] : _models_core_item__WEBPACK_IMPORTED_MODULE_17__["MutationType"].UserInteraction;\n payloadSource = _args8.length > 3 && _args8[3] !== undefined ? _args8[3] : _protocol_payloads_sources__WEBPACK_IMPORTED_MODULE_18__["PayloadSource"].LocalChanged;\n payloadSourceKey = _args8.length > 4 ? _args8[4] : undefined;\n extension = this.findItem(uuid);\n\n if (extension) {\n _context8.next = 6;\n break;\n }\n\n throw Error(\'Attempting to change non-existant extension\');\n\n case 6:\n mutator = new _models_app_extension__WEBPACK_IMPORTED_MODULE_7__["ActionsExtensionMutator"](extension, mutationType);\n return _context8.abrupt("return", this.applyTransform(mutator, mutate, payloadSource, payloadSourceKey));\n\n case 8:\n case "end":\n return _context8.stop();\n }\n }\n }, _callee8, this);\n }));\n\n function changeActionsExtension(_x24, _x25) {\n return _changeActionsExtension.apply(this, arguments);\n }\n\n return changeActionsExtension;\n }()\n }, {\n key: "changeItemsKey",\n value: function () {\n var _changeItemsKey = _asyncToGenerator( /*#__PURE__*/_babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0___default.a.mark(function _callee9(uuid, mutate) {\n var mutationType,\n payloadSource,\n payloadSourceKey,\n itemsKey,\n mutator,\n _args9 = arguments;\n return _babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0___default.a.wrap(function _callee9$(_context9) {\n while (1) {\n switch (_context9.prev = _context9.next) {\n case 0:\n mutationType = _args9.length > 2 && _args9[2] !== undefined ? _args9[2] : _models_core_item__WEBPACK_IMPORTED_MODULE_17__["MutationType"].UserInteraction;\n payloadSource = _args9.length > 3 && _args9[3] !== undefined ? _args9[3] : _protocol_payloads_sources__WEBPACK_IMPORTED_MODULE_18__["PayloadSource"].LocalChanged;\n payloadSourceKey = _args9.length > 4 ? _args9[4] : undefined;\n itemsKey = this.findItem(uuid);\n\n if (itemsKey) {\n _context9.next = 6;\n break;\n }\n\n throw Error(\'Attempting to change non-existant itemsKey\');\n\n case 6:\n mutator = new _models_app_items_key__WEBPACK_IMPORTED_MODULE_5__["ItemsKeyMutator"](itemsKey, mutationType);\n return _context9.abrupt("return", this.applyTransform(mutator, mutate, payloadSource, payloadSourceKey));\n\n case 8:\n case "end":\n return _context9.stop();\n }\n }\n }, _callee9, this);\n }));\n\n function changeItemsKey(_x26, _x27) {\n return _changeItemsKey.apply(this, arguments);\n }\n\n return changeItemsKey;\n }()\n }, {\n key: "applyTransform",\n value: function () {\n var _applyTransform = _asyncToGenerator( /*#__PURE__*/_babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0___default.a.mark(function _callee10(mutator, mutate) {\n var payloadSource,\n payloadSourceKey,\n payload,\n _args10 = arguments;\n return _babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0___default.a.wrap(function _callee10$(_context10) {\n while (1) {\n switch (_context10.prev = _context10.next) {\n case 0:\n payloadSource = _args10.length > 2 && _args10[2] !== undefined ? _args10[2] : _protocol_payloads_sources__WEBPACK_IMPORTED_MODULE_18__["PayloadSource"].LocalChanged;\n payloadSourceKey = _args10.length > 3 ? _args10[3] : undefined;\n mutate(mutator);\n payload = mutator.getResult();\n return _context10.abrupt("return", this.modelManager.emitPayload(payload, payloadSource, payloadSourceKey));\n\n case 5:\n case "end":\n return _context10.stop();\n }\n }\n }, _callee10, this);\n }));\n\n function applyTransform(_x28, _x29) {\n return _applyTransform.apply(this, arguments);\n }\n\n return applyTransform;\n }()\n /**\n * Sets the item as needing sync. The item is then run through the mapping function,\n * and propagated to mapping observers.\n * @param updateClientDate - Whether to update the item\'s "user modified date"\n */\n\n }, {\n key: "setItemDirty",\n value: function () {\n var _setItemDirty = _asyncToGenerator( /*#__PURE__*/_babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0___default.a.mark(function _callee11(uuid) {\n var isUserModified,\n result,\n _args11 = arguments;\n return _babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0___default.a.wrap(function _callee11$(_context11) {\n while (1) {\n switch (_context11.prev = _context11.next) {\n case 0:\n isUserModified = _args11.length > 1 && _args11[1] !== undefined ? _args11[1] : false;\n\n if (Object(_Lib_utils__WEBPACK_IMPORTED_MODULE_15__["isString"])(uuid)) {\n _context11.next = 3;\n break;\n }\n\n throw Error(\'Must use uuid when setting item dirty\');\n\n case 3:\n _context11.next = 5;\n return this.setItemsDirty([uuid], isUserModified);\n\n case 5:\n result = _context11.sent;\n return _context11.abrupt("return", result[0]);\n\n case 7:\n case "end":\n return _context11.stop();\n }\n }\n }, _callee11, this);\n }));\n\n function setItemDirty(_x30) {\n return _setItemDirty.apply(this, arguments);\n }\n\n return setItemDirty;\n }()\n /**\n * Similar to `setItemDirty`, but acts on an array of items as the first param.\n */\n\n }, {\n key: "setItemsDirty",\n value: function () {\n var _setItemsDirty = _asyncToGenerator( /*#__PURE__*/_babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0___default.a.mark(function _callee12(uuids) {\n var isUserModified,\n _args12 = arguments;\n return _babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0___default.a.wrap(function _callee12$(_context12) {\n while (1) {\n switch (_context12.prev = _context12.next) {\n case 0:\n isUserModified = _args12.length > 1 && _args12[1] !== undefined ? _args12[1] : false;\n\n if (Object(_Lib_utils__WEBPACK_IMPORTED_MODULE_15__["isString"])(uuids[0])) {\n _context12.next = 3;\n break;\n }\n\n throw Error(\'Must use uuid when setting item dirty\');\n\n case 3:\n return _context12.abrupt("return", this.changeItems(uuids, undefined, isUserModified ? _models_core_item__WEBPACK_IMPORTED_MODULE_17__["MutationType"].UserInteraction : _models_core_item__WEBPACK_IMPORTED_MODULE_17__["MutationType"].Internal));\n\n case 4:\n case "end":\n return _context12.stop();\n }\n }\n }, _callee12, this);\n }));\n\n function setItemsDirty(_x31) {\n return _setItemsDirty.apply(this, arguments);\n }\n\n return setItemsDirty;\n }()\n /**\n * Returns an array of items that need to be synced.\n */\n\n }, {\n key: "getDirtyItems",\n value: function getDirtyItems() {\n var dirty = this.collection.dirtyElements();\n return dirty.filter(function (item) {\n /* An item that has an error decrypting can be synced only if it is being deleted.\n Otherwise, we don\'t want to send corrupt content up to the server. */\n return !item.errorDecrypting || item.deleted;\n });\n }\n /**\n * Inserts the item as-is by reading its payload value. This function will not\n * modify item in any way (such as marking it as dirty). It is up to the caller\n * to pass in a dirtied item if that is their intention.\n */\n\n }, {\n key: "insertItem",\n value: function () {\n var _insertItem = _asyncToGenerator( /*#__PURE__*/_babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0___default.a.mark(function _callee13(item) {\n var payload, insertedItem;\n return _babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0___default.a.wrap(function _callee13$(_context13) {\n while (1) {\n switch (_context13.prev = _context13.next) {\n case 0:\n payload = item.payload;\n _context13.next = 3;\n return this.emitItemFromPayload(payload);\n\n case 3:\n insertedItem = _context13.sent;\n return _context13.abrupt("return", insertedItem);\n\n case 5:\n case "end":\n return _context13.stop();\n }\n }\n }, _callee13, this);\n }));\n\n function insertItem(_x32) {\n return _insertItem.apply(this, arguments);\n }\n\n return insertItem;\n }()\n /**\n * Duplicates an item and maps it, thus propagating the item to observers.\n * @param isConflict - Whether to mark the duplicate as a conflict of the original.\n */\n\n }, {\n key: "duplicateItem",\n value: function () {\n var _duplicateItem = _asyncToGenerator( /*#__PURE__*/_babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0___default.a.mark(function _callee14(uuid) {\n var isConflict,\n item,\n payload,\n resultingPayloads,\n duplicate,\n _args14 = arguments;\n return _babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0___default.a.wrap(function _callee14$(_context14) {\n while (1) {\n switch (_context14.prev = _context14.next) {\n case 0:\n isConflict = _args14.length > 1 && _args14[1] !== undefined ? _args14[1] : false;\n item = this.findItem(uuid);\n payload = Object(_Payloads_generator__WEBPACK_IMPORTED_MODULE_16__["CreateMaxPayloadFromAnyObject"])(item);\n _context14.next = 5;\n return Object(_Payloads_functions__WEBPACK_IMPORTED_MODULE_10__["PayloadsByDuplicating"])(payload, this.modelManager.getMasterCollection(), isConflict);\n\n case 5:\n resultingPayloads = _context14.sent;\n _context14.next = 8;\n return this.modelManager.emitPayloads(resultingPayloads, _protocol_payloads_sources__WEBPACK_IMPORTED_MODULE_18__["PayloadSource"].LocalChanged);\n\n case 8:\n duplicate = this.findItem(resultingPayloads[0].uuid);\n return _context14.abrupt("return", duplicate);\n\n case 10:\n case "end":\n return _context14.stop();\n }\n }\n }, _callee14, this);\n }));\n\n function duplicateItem(_x33) {\n return _duplicateItem.apply(this, arguments);\n }\n\n return duplicateItem;\n }()\n /**\n * Creates an item and conditionally maps it and marks it as dirty.\n * @param needsSync - Whether to mark the item as needing sync\n */\n\n }, {\n key: "createItem",\n value: function () {\n var _createItem = _asyncToGenerator( /*#__PURE__*/_babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0___default.a.mark(function _callee15(contentType, content) {\n var needsSync,\n override,\n payload,\n _args15 = arguments;\n return _babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0___default.a.wrap(function _callee15$(_context15) {\n while (1) {\n switch (_context15.prev = _context15.next) {\n case 0:\n needsSync = _args15.length > 2 && _args15[2] !== undefined ? _args15[2] : false;\n override = _args15.length > 3 ? _args15[3] : undefined;\n\n if (contentType) {\n _context15.next = 4;\n break;\n }\n\n throw \'Attempting to create item with no contentType\';\n\n case 4:\n _context15.t0 = _Payloads_generator__WEBPACK_IMPORTED_MODULE_16__["CreateMaxPayloadFromAnyObject"];\n _context15.next = 7;\n return _uuid__WEBPACK_IMPORTED_MODULE_9__["Uuid"].GenerateUuid();\n\n case 7:\n _context15.t1 = _context15.sent;\n _context15.t2 = contentType;\n _context15.t3 = content ? Object(_Models_functions__WEBPACK_IMPORTED_MODULE_12__["FillItemContent"])(content) : undefined;\n _context15.t4 = needsSync;\n _context15.t5 = {\n uuid: _context15.t1,\n content_type: _context15.t2,\n content: _context15.t3,\n dirty: _context15.t4\n };\n _context15.t6 = override;\n payload = (0, _context15.t0)(_context15.t5, _context15.t6);\n _context15.next = 16;\n return this.modelManager.emitPayload(payload, _protocol_payloads_sources__WEBPACK_IMPORTED_MODULE_18__["PayloadSource"].Constructor);\n\n case 16:\n return _context15.abrupt("return", this.findItem(payload.uuid));\n\n case 17:\n case "end":\n return _context15.stop();\n }\n }\n }, _callee15, this);\n }));\n\n function createItem(_x34, _x35) {\n return _createItem.apply(this, arguments);\n }\n\n return createItem;\n }()\n }, {\n key: "createTemplateItem",\n value: function () {\n var _createTemplateItem = _asyncToGenerator( /*#__PURE__*/_babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0___default.a.mark(function _callee16(contentType, content) {\n var payload;\n return _babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0___default.a.wrap(function _callee16$(_context16) {\n while (1) {\n switch (_context16.prev = _context16.next) {\n case 0:\n _context16.t0 = _Payloads_generator__WEBPACK_IMPORTED_MODULE_16__["CreateMaxPayloadFromAnyObject"];\n _context16.next = 3;\n return _uuid__WEBPACK_IMPORTED_MODULE_9__["Uuid"].GenerateUuid();\n\n case 3:\n _context16.t1 = _context16.sent;\n _context16.t2 = contentType;\n _context16.t3 = Object(_Models_functions__WEBPACK_IMPORTED_MODULE_12__["FillItemContent"])(content || {});\n _context16.t4 = {\n uuid: _context16.t1,\n content_type: _context16.t2,\n content: _context16.t3\n };\n payload = (0, _context16.t0)(_context16.t4);\n return _context16.abrupt("return", Object(_Models_generator__WEBPACK_IMPORTED_MODULE_11__["CreateItemFromPayload"])(payload));\n\n case 9:\n case "end":\n return _context16.stop();\n }\n }\n }, _callee16);\n }));\n\n function createTemplateItem(_x36, _x37) {\n return _createTemplateItem.apply(this, arguments);\n }\n\n return createTemplateItem;\n }()\n }, {\n key: "emitItemFromPayload",\n value: function () {\n var _emitItemFromPayload = _asyncToGenerator( /*#__PURE__*/_babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0___default.a.mark(function _callee17(payload) {\n var source,\n _args17 = arguments;\n return _babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0___default.a.wrap(function _callee17$(_context17) {\n while (1) {\n switch (_context17.prev = _context17.next) {\n case 0:\n source = _args17.length > 1 && _args17[1] !== undefined ? _args17[1] : _protocol_payloads_sources__WEBPACK_IMPORTED_MODULE_18__["PayloadSource"].Constructor;\n _context17.next = 3;\n return this.modelManager.emitPayload(payload, source);\n\n case 3:\n return _context17.abrupt("return", this.findItem(payload.uuid));\n\n case 4:\n case "end":\n return _context17.stop();\n }\n }\n }, _callee17, this);\n }));\n\n function emitItemFromPayload(_x38) {\n return _emitItemFromPayload.apply(this, arguments);\n }\n\n return emitItemFromPayload;\n }()\n }, {\n key: "emitItemsFromPayloads",\n value: function () {\n var _emitItemsFromPayloads = _asyncToGenerator( /*#__PURE__*/_babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0___default.a.mark(function _callee18(payloads) {\n var source,\n uuids,\n _args18 = arguments;\n return _babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0___default.a.wrap(function _callee18$(_context18) {\n while (1) {\n switch (_context18.prev = _context18.next) {\n case 0:\n source = _args18.length > 1 && _args18[1] !== undefined ? _args18[1] : _protocol_payloads_sources__WEBPACK_IMPORTED_MODULE_18__["PayloadSource"].Constructor;\n _context18.next = 3;\n return this.modelManager.emitPayloads(payloads, source);\n\n case 3:\n uuids = Object(_Models_functions__WEBPACK_IMPORTED_MODULE_12__["Uuids"])(payloads);\n return _context18.abrupt("return", this.findItems(uuids));\n\n case 5:\n case "end":\n return _context18.stop();\n }\n }\n }, _callee18, this);\n }));\n\n function emitItemsFromPayloads(_x39) {\n return _emitItemsFromPayloads.apply(this, arguments);\n }\n\n return emitItemsFromPayloads;\n }()\n /**\n * Marks the item as deleted and needing sync.\n */\n\n }, {\n key: "setItemToBeDeleted",\n value: function () {\n var _setItemToBeDeleted = _asyncToGenerator( /*#__PURE__*/_babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0___default.a.mark(function _callee19(uuid) {\n var referencingIds, item, changedItem, _iteratorNormalCompletion4, _didIteratorError4, _iteratorError4, _iterator4, _step4, referencingId, referencingItem;\n\n return _babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0___default.a.wrap(function _callee19$(_context19) {\n while (1) {\n switch (_context19.prev = _context19.next) {\n case 0:\n /** Capture referencing ids before we delete the item below, otherwise\n * the index may be updated before we get a chance to act on it */\n referencingIds = this.collection.uuidsThatReferenceUuid(uuid);\n item = this.findItem(uuid);\n _context19.next = 4;\n return this.changeItem(uuid, function (mutator) {\n mutator.setDeleted();\n });\n\n case 4:\n changedItem = _context19.sent;\n\n /** Handle indirect relationships.\n * (Direct relationships are cleared by clearing content above) */\n _iteratorNormalCompletion4 = true;\n _didIteratorError4 = false;\n _iteratorError4 = undefined;\n _context19.prev = 8;\n _iterator4 = referencingIds[Symbol.iterator]();\n\n case 10:\n if (_iteratorNormalCompletion4 = (_step4 = _iterator4.next()).done) {\n _context19.next = 19;\n break;\n }\n\n referencingId = _step4.value;\n referencingItem = this.findItem(referencingId);\n\n if (!referencingItem) {\n _context19.next = 16;\n break;\n }\n\n _context19.next = 16;\n return this.changeItem(referencingItem.uuid, function (mutator) {\n mutator.removeItemAsRelationship(item);\n });\n\n case 16:\n _iteratorNormalCompletion4 = true;\n _context19.next = 10;\n break;\n\n case 19:\n _context19.next = 25;\n break;\n\n case 21:\n _context19.prev = 21;\n _context19.t0 = _context19["catch"](8);\n _didIteratorError4 = true;\n _iteratorError4 = _context19.t0;\n\n case 25:\n _context19.prev = 25;\n _context19.prev = 26;\n\n if (!_iteratorNormalCompletion4 && _iterator4.return != null) {\n _iterator4.return();\n }\n\n case 28:\n _context19.prev = 28;\n\n if (!_didIteratorError4) {\n _context19.next = 31;\n break;\n }\n\n throw _iteratorError4;\n\n case 31:\n return _context19.finish(28);\n\n case 32:\n return _context19.finish(25);\n\n case 33:\n return _context19.abrupt("return", changedItem);\n\n case 34:\n case "end":\n return _context19.stop();\n }\n }\n }, _callee19, this, [[8, 21, 25, 33], [26,, 28, 32]]);\n }));\n\n function setItemToBeDeleted(_x40) {\n return _setItemToBeDeleted.apply(this, arguments);\n }\n\n return setItemToBeDeleted;\n }()\n /**\n * Like `setItemToBeDeleted`, but acts on an array of items.\n */\n\n }, {\n key: "setItemsToBeDeleted",\n value: function () {\n var _setItemsToBeDeleted = _asyncToGenerator( /*#__PURE__*/_babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0___default.a.mark(function _callee20(uuids) {\n var changedItems, _iteratorNormalCompletion5, _didIteratorError5, _iteratorError5, _iterator5, _step5, uuid, changedItem;\n\n return _babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0___default.a.wrap(function _callee20$(_context20) {\n while (1) {\n switch (_context20.prev = _context20.next) {\n case 0:\n changedItems = [];\n _iteratorNormalCompletion5 = true;\n _didIteratorError5 = false;\n _iteratorError5 = undefined;\n _context20.prev = 4;\n _iterator5 = uuids[Symbol.iterator]();\n\n case 6:\n if (_iteratorNormalCompletion5 = (_step5 = _iterator5.next()).done) {\n _context20.next = 15;\n break;\n }\n\n uuid = _step5.value;\n _context20.next = 10;\n return this.setItemToBeDeleted(uuid);\n\n case 10:\n changedItem = _context20.sent;\n changedItems.push(changedItem);\n\n case 12:\n _iteratorNormalCompletion5 = true;\n _context20.next = 6;\n break;\n\n case 15:\n _context20.next = 21;\n break;\n\n case 17:\n _context20.prev = 17;\n _context20.t0 = _context20["catch"](4);\n _didIteratorError5 = true;\n _iteratorError5 = _context20.t0;\n\n case 21:\n _context20.prev = 21;\n _context20.prev = 22;\n\n if (!_iteratorNormalCompletion5 && _iterator5.return != null) {\n _iterator5.return();\n }\n\n case 24:\n _context20.prev = 24;\n\n if (!_didIteratorError5) {\n _context20.next = 27;\n break;\n }\n\n throw _iteratorError5;\n\n case 27:\n return _context20.finish(24);\n\n case 28:\n return _context20.finish(21);\n\n case 29:\n return _context20.abrupt("return", changedItems);\n\n case 30:\n case "end":\n return _context20.stop();\n }\n }\n }, _callee20, this, [[4, 17, 21, 29], [22,, 24, 28]]);\n }));\n\n function setItemsToBeDeleted(_x41) {\n return _setItemsToBeDeleted.apply(this, arguments);\n }\n\n return setItemsToBeDeleted;\n }()\n /**\n * Returns all items of a certain type\n * @param contentType - A string or array of strings representing\n * content types.\n */\n\n }, {\n key: "getItems",\n value: function getItems(contentType) {\n return this.collection.all(contentType);\n }\n /**\n * Returns all items which are properly decrypted\n */\n\n }, {\n key: "nonErroredItemsForContentType",\n value: function nonErroredItemsForContentType(contentType) {\n var items = this.collection.all(contentType);\n return items.filter(function (item) {\n return !item.errorDecrypting && !item.waitingForKey;\n });\n }\n /**\n * Returns all items matching a given predicate\n */\n\n }, {\n key: "itemsMatchingPredicate",\n value: function itemsMatchingPredicate(predicate) {\n return this.itemsMatchingPredicates([predicate]);\n }\n /**\n * Returns all items matching an array of predicates\n */\n\n }, {\n key: "itemsMatchingPredicates",\n value: function itemsMatchingPredicates(predicates) {\n return this.subItemsMatchingPredicates(this.items, predicates);\n }\n /**\n * Performs actual predicate filtering for public methods above.\n * Does not return deleted items.\n */\n\n }, {\n key: "subItemsMatchingPredicates",\n value: function subItemsMatchingPredicates(items, predicates) {\n var results = items.filter(function (item) {\n if (item.deleted) {\n return false;\n }\n\n var _iteratorNormalCompletion6 = true;\n var _didIteratorError6 = false;\n var _iteratorError6 = undefined;\n\n try {\n for (var _iterator6 = predicates[Symbol.iterator](), _step6; !(_iteratorNormalCompletion6 = (_step6 = _iterator6.next()).done); _iteratorNormalCompletion6 = true) {\n var predicate = _step6.value;\n\n if (!item.satisfiesPredicate(predicate)) {\n return false;\n }\n }\n } catch (err) {\n _didIteratorError6 = true;\n _iteratorError6 = err;\n } finally {\n try {\n if (!_iteratorNormalCompletion6 && _iterator6.return != null) {\n _iterator6.return();\n }\n } finally {\n if (_didIteratorError6) {\n throw _iteratorError6;\n }\n }\n }\n\n return true;\n });\n return results;\n }\n /**\n * Finds the first tag matching a given title\n */\n\n }, {\n key: "findTagByTitle",\n value: function findTagByTitle(title) {\n return Object(_Lib_utils__WEBPACK_IMPORTED_MODULE_15__["searchArray"])(this.tags, {\n title: title\n });\n }\n /**\n * Finds or creates a tag with a given title\n */\n\n }, {\n key: "findOrCreateTagByTitle",\n value: function () {\n var _findOrCreateTagByTitle = _asyncToGenerator( /*#__PURE__*/_babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0___default.a.mark(function _callee21(title) {\n var tag;\n return _babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0___default.a.wrap(function _callee21$(_context21) {\n while (1) {\n switch (_context21.prev = _context21.next) {\n case 0:\n tag = this.findTagByTitle(title);\n _context21.t0 = tag;\n\n if (_context21.t0) {\n _context21.next = 6;\n break;\n }\n\n _context21.next = 5;\n return this.createItem(_models_content_types__WEBPACK_IMPORTED_MODULE_19__["ContentType"].Tag, Object(_Models_functions__WEBPACK_IMPORTED_MODULE_12__["FillItemContent"])({\n title: title\n }), true);\n\n case 5:\n _context21.t0 = _context21.sent;\n\n case 6:\n return _context21.abrupt("return", _context21.t0);\n\n case 7:\n case "end":\n return _context21.stop();\n }\n }\n }, _callee21, this);\n }));\n\n function findOrCreateTagByTitle(_x42) {\n return _findOrCreateTagByTitle.apply(this, arguments);\n }\n\n return findOrCreateTagByTitle;\n }()\n /**\n * Returns all notes matching the smart tag\n */\n\n }, {\n key: "notesMatchingSmartTag",\n value: function notesMatchingSmartTag(smartTag) {\n var contentTypePredicate = new _models_core_predicate__WEBPACK_IMPORTED_MODULE_8__["SNPredicate"](\'content_type\', \'=\', _models_content_types__WEBPACK_IMPORTED_MODULE_19__["ContentType"].Note);\n var predicates = [contentTypePredicate, smartTag.predicate];\n\n if (!smartTag.isTrashTag) {\n var notTrashedPredicate = new _models_core_predicate__WEBPACK_IMPORTED_MODULE_8__["SNPredicate"](\'content.trashed\', \'=\', false);\n predicates.push(notTrashedPredicate);\n }\n\n return this.itemsMatchingPredicates(predicates);\n }\n /**\n * Returns the smart tag corresponding to the "Trash" tag.\n */\n\n }, {\n key: "emptyTrash",\n\n /**\n * Permanently deletes any items currently in the trash. Consumer must manually call sync.\n */\n value: function () {\n var _emptyTrash = _asyncToGenerator( /*#__PURE__*/_babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0___default.a.mark(function _callee22() {\n var notes;\n return _babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0___default.a.wrap(function _callee22$(_context22) {\n while (1) {\n switch (_context22.prev = _context22.next) {\n case 0:\n notes = this.trashedItems;\n return _context22.abrupt("return", this.setItemsToBeDeleted(Object(_Models_functions__WEBPACK_IMPORTED_MODULE_12__["Uuids"])(notes)));\n\n case 2:\n case "end":\n return _context22.stop();\n }\n }\n }, _callee22, this);\n }));\n\n function emptyTrash() {\n return _emptyTrash.apply(this, arguments);\n }\n\n return emptyTrash;\n }()\n /**\n * Returns all smart tags, sorted by title.\n */\n\n }, {\n key: "getSmartTags",\n value: function getSmartTags() {\n var userTags = this.collection.displayElements(_models_content_types__WEBPACK_IMPORTED_MODULE_19__["ContentType"].SmartTag);\n return this.systemSmartTags.concat(userTags);\n }\n /**\n * The number of notes currently managed\n */\n\n }, {\n key: "removeAllItemsFromMemory",\n\n /**\n * Immediately removes all items from mapping state and notifies observers\n * Used primarily when signing into an account and wanting to discard any current\n * local data.\n */\n value: function () {\n var _removeAllItemsFromMemory = _asyncToGenerator( /*#__PURE__*/_babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0___default.a.mark(function _callee23() {\n var uuids;\n return _babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0___default.a.wrap(function _callee23$(_context23) {\n while (1) {\n switch (_context23.prev = _context23.next) {\n case 0:\n uuids = Object(_Models_functions__WEBPACK_IMPORTED_MODULE_12__["Uuids"])(this.items);\n /** We don\'t want to set as dirty, since we want to dispose of immediately. */\n\n _context23.next = 3;\n return this.changeItems(uuids, function (mutator) {\n mutator.setDeleted();\n }, _models_core_item__WEBPACK_IMPORTED_MODULE_17__["MutationType"].NonDirtying);\n\n case 3:\n this.resetState();\n this.modelManager.resetState();\n\n case 5:\n case "end":\n return _context23.stop();\n }\n }\n }, _callee23, this);\n }));\n\n function removeAllItemsFromMemory() {\n return _removeAllItemsFromMemory.apply(this, arguments);\n }\n\n return removeAllItemsFromMemory;\n }()\n }, {\n key: "removeItemLocally",\n value: function removeItemLocally(item) {\n this.collection.discard(item);\n this.modelManager.removePayloadLocally(item.payload);\n }\n }, {\n key: "items",\n get: function get() {\n return this.collection.all();\n }\n /**\n * Returns a detached array of all items which are not deleted\n */\n\n }, {\n key: "nonDeletedItems",\n get: function get() {\n return this.collection.nondeletedElements();\n }\n /**\n * Returns all items that have not been able to decrypt.\n */\n\n }, {\n key: "invalidItems",\n get: function get() {\n return this.collection.invalidElements();\n }\n }, {\n key: "notes",\n get: function get() {\n return this.collection.displayElements(_models_content_types__WEBPACK_IMPORTED_MODULE_19__["ContentType"].Note);\n }\n /**\n * Returns all non-deleted tags\n */\n\n }, {\n key: "tags",\n get: function get() {\n return this.collection.displayElements(_models_content_types__WEBPACK_IMPORTED_MODULE_19__["ContentType"].Tag);\n }\n /**\n * Returns all non-deleted components\n */\n\n }, {\n key: "components",\n get: function get() {\n return this.collection.displayElements(_models_content_types__WEBPACK_IMPORTED_MODULE_19__["ContentType"].Component);\n }\n }, {\n key: "trashSmartTag",\n get: function get() {\n return this.systemSmartTags.find(function (tag) {\n return tag.isTrashTag;\n });\n }\n /**\n * Returns all items currently in the trash\n */\n\n }, {\n key: "trashedItems",\n get: function get() {\n return this.notesMatchingSmartTag(this.trashSmartTag);\n }\n }, {\n key: "noteCount",\n get: function get() {\n return this.collection.all(_models_content_types__WEBPACK_IMPORTED_MODULE_19__["ContentType"].Note).length;\n }\n }]);\n\n return ItemManager;\n}(_Lib_services_pure_service__WEBPACK_IMPORTED_MODULE_13__["PureService"]);\nvar SYSTEM_TAG_ALL_NOTES = \'all-notes\';\nvar SYSTEM_TAG_ARCHIVED_NOTES = \'archived-notes\';\nvar SYSTEM_TAG_TRASHED_NOTES = \'trashed-notes\';\n\nfunction BuildSmartTags() {\n var allNotes = Object(_Payloads_generator__WEBPACK_IMPORTED_MODULE_16__["CreateMaxPayloadFromAnyObject"])({\n uuid: SYSTEM_TAG_ALL_NOTES,\n content_type: _models_content_types__WEBPACK_IMPORTED_MODULE_19__["ContentType"].SmartTag,\n content: Object(_Models_functions__WEBPACK_IMPORTED_MODULE_12__["FillItemContent"])({\n title: \'All notes\',\n isSystemTag: true,\n isAllTag: true,\n predicate: _models_core_predicate__WEBPACK_IMPORTED_MODULE_8__["SNPredicate"].FromArray([\'content_type\', \'=\', _models_content_types__WEBPACK_IMPORTED_MODULE_19__["ContentType"].Note])\n })\n });\n var archived = Object(_Payloads_generator__WEBPACK_IMPORTED_MODULE_16__["CreateMaxPayloadFromAnyObject"])({\n uuid: SYSTEM_TAG_ARCHIVED_NOTES,\n content_type: _models_content_types__WEBPACK_IMPORTED_MODULE_19__["ContentType"].SmartTag,\n content: Object(_Models_functions__WEBPACK_IMPORTED_MODULE_12__["FillItemContent"])({\n title: \'Archived\',\n isSystemTag: true,\n isArchiveTag: true,\n predicate: _models_core_predicate__WEBPACK_IMPORTED_MODULE_8__["SNPredicate"].FromArray([\'archived\', \'=\', JSON.stringify(true)])\n })\n });\n var trash = Object(_Payloads_generator__WEBPACK_IMPORTED_MODULE_16__["CreateMaxPayloadFromAnyObject"])({\n uuid: SYSTEM_TAG_TRASHED_NOTES,\n content_type: _models_content_types__WEBPACK_IMPORTED_MODULE_19__["ContentType"].SmartTag,\n content: Object(_Models_functions__WEBPACK_IMPORTED_MODULE_12__["FillItemContent"])({\n title: \'Trash\',\n isSystemTag: true,\n isTrashTag: true,\n predicate: _models_core_predicate__WEBPACK_IMPORTED_MODULE_8__["SNPredicate"].FromArray([\'trashed\', \'=\', JSON.stringify(true)])\n })\n });\n return [Object(_Models_generator__WEBPACK_IMPORTED_MODULE_11__["CreateItemFromPayload"])(allNotes), Object(_Models_generator__WEBPACK_IMPORTED_MODULE_11__["CreateItemFromPayload"])(archived), Object(_Models_generator__WEBPACK_IMPORTED_MODULE_11__["CreateItemFromPayload"])(trash)];\n}//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9saWIvc2VydmljZXMvaXRlbV9tYW5hZ2VyLnRzLmpzIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vU05MaWJyYXJ5Ly4vbGliL3NlcnZpY2VzL2l0ZW1fbWFuYWdlci50cz8wMTBiIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEl0ZW1Db2xsZWN0aW9uLCBDb2xsZWN0aW9uU29ydCB9IGZyb20gJ0BQcm90b2NvbC9jb2xsZWN0aW9uL2l0ZW1fY29sbGVjdGlvbic7XG5pbXBvcnQgeyBVc2VyUHJlZnNNdXRhdG9yIH0gZnJvbSAnLi8uLi9tb2RlbHMvYXBwL3VzZXJQcmVmcyc7XG5pbXBvcnQgeyBQcml2aWxlZ2VNdXRhdG9yIH0gZnJvbSAnLi8uLi9tb2RlbHMvYXBwL3ByaXZpbGVnZXMnO1xuaW1wb3J0IHsgVGFnTXV0YXRvciB9IGZyb20gJy4vLi4vbW9kZWxzL2FwcC90YWcnO1xuaW1wb3J0IHsgSXRlbXNLZXlNdXRhdG9yIH0gZnJvbSAnLi8uLi9tb2RlbHMvYXBwL2l0ZW1zX2tleSc7XG5pbXBvcnQgeyBOb3RlTXV0YXRvciB9IGZyb20gJy4vLi4vbW9kZWxzL2FwcC9ub3RlJztcbmltcG9ydCB7IEFjdGlvbnNFeHRlbnNpb25NdXRhdG9yIH0gZnJvbSAnLi8uLi9tb2RlbHMvYXBwL2V4dGVuc2lvbic7XG5pbXBvcnQgeyBTTlByZWRpY2F0ZSB9IGZyb20gJy4vLi4vbW9kZWxzL2NvcmUvcHJlZGljYXRlJztcbmltcG9ydCB7IFV1aWQgfSBmcm9tICcuLy4uL3V1aWQnO1xuaW1wb3J0IHsgUGF5bG9hZHNCeUR1cGxpY2F0aW5nIH0gZnJvbSAnQFBheWxvYWRzL2Z1bmN0aW9ucyc7XG5pbXBvcnQgeyBDcmVhdGVJdGVtRnJvbVBheWxvYWQgfSBmcm9tICdATW9kZWxzL2dlbmVyYXRvcic7XG5pbXBvcnQgeyBVdWlkcywgRmlsbEl0ZW1Db250ZW50IH0gZnJvbSAnQE1vZGVscy9mdW5jdGlvbnMnO1xuaW1wb3J0IHsgUHVyZVNlcnZpY2UgfSBmcm9tICdATGliL3NlcnZpY2VzL3B1cmVfc2VydmljZSc7XG5pbXBvcnQgeyBDb21wb25lbnRNdXRhdG9yIH0gZnJvbSAnLi8uLi9tb2RlbHMvYXBwL2NvbXBvbmVudCc7XG5pbXBvcnQgeyBpc1N0cmluZywgcmVtb3ZlRnJvbUFycmF5LCBzZWFyY2hBcnJheSB9IGZyb20gJ0BMaWIvdXRpbHMnO1xuaW1wb3J0IHsgQ3JlYXRlTWF4UGF5bG9hZEZyb21BbnlPYmplY3QgfSBmcm9tICdAUGF5bG9hZHMvZ2VuZXJhdG9yJztcbmltcG9ydCB7IEl0ZW1NdXRhdG9yLCBNdXRhdGlvblR5cGUgfSBmcm9tICcuLy4uL21vZGVscy9jb3JlL2l0ZW0nO1xuaW1wb3J0IHsgUGF5bG9hZFNvdXJjZSB9IGZyb20gJy4vLi4vcHJvdG9jb2wvcGF5bG9hZHMvc291cmNlcyc7XG5pbXBvcnQgeyBDb250ZW50VHlwZSB9IGZyb20gJy4uL21vZGVscy9jb250ZW50X3R5cGVzJztcbi8qKlxuICogVGhlIGl0ZW0gbWFuYWdlciBpcyBiYWNrZWQgYnkgdGhlIFBheWxvYWQgTWFuYWdlci4gVGhpbmsgb2YgdGhlIGl0ZW0gbWFuYWdlciBhcyBhXG4gKiBtb3JlIHVzZXItZnJpZW5kbHkgb3IgaXRlbS1zcGVjaWZpYyBpbnRlcmZhY2UgdG8gY3JlYXRpbmcgYW5kIHVwZGF0aW5nIGRhdGEuXG4gKiBUaGUgaXRlbSBtYW5hZ2VyIGxpc3RlbnMgZm9yIGNoYW5nZSBldmVudHMgZnJvbSB0aGUgZ2xvYmFsIHBheWxvYWQgbWFuYWdlciwgYW5kXG4gKiBjb252ZXJ0cyBhbnkgcGF5bG9hZHMgdG8gU05JdGVtcywgdGhlbiBwcm9wYWdhdGVzIHRob3NlIGl0ZW1zIHRvIGxpc3RlbmVycyBvbiB0aGVcbiAqIGl0ZW0gIG1hbmFnZXIuIFdoZW4gdGhlIGl0ZW0gbWFuYWdlciBtYWtlcyBhIGNoYW5nZSB0byBhbiBpdGVtLCBpdCB3aWxsIG1vZGlmeSBpdGVtc1xuICogdXNpbmcgYSAgbXV0YXRvciwgdGhlbiBlbWl0IHRob3NlIHBheWxvYWRzIHRvIHRoZSBwYXlsb2FkIG1hbmFnZXIuIFRoZSBwYXlsb2FkIG1hbmFnZXJcbiAqIHdpbGwgdGhlbiBub3RpZnkgIGl0cyBvYnNlcnZlcnMgKHdoaWNoIGlzIHVzKSwgd2UnbGwgY29udmVydCB0aGUgcGF5bG9hZHMgdG8gaXRlbXMsXG4gKiBhbmQgdGhlbiAgd2UnbGwgcHJvcGFnYXRlIHRoZW0gdG8gb3VyIGxpc3RlbmVycy5cbiAqL1xuZXhwb3J0IGNsYXNzIEl0ZW1NYW5hZ2VyIGV4dGVuZHMgUHVyZVNlcnZpY2Uge1xuICAgIGNvbnN0cnVjdG9yKG1vZGVsTWFuYWdlcikge1xuICAgICAgICBzdXBlcigpO1xuICAgICAgICB0aGlzLm9ic2VydmVycyA9IFtdO1xuICAgICAgICB0aGlzLm1vZGVsTWFuYWdlciA9IG1vZGVsTWFuYWdlcjtcbiAgICAgICAgdGhpcy5jcmVhdGVDb2xsZWN0aW9uKCk7XG4gICAgICAgIHRoaXMudW5zdWJDaGFuZ2VPYnNlcnZlciA9IHRoaXMubW9kZWxNYW5hZ2VyXG4gICAgICAgICAgICAuYWRkT2JzZXJ2ZXIoQ29udGVudFR5cGUuQW55LCB0aGlzLm9uUGF5bG9hZENoYW5nZS5iaW5kKHRoaXMpKTtcbiAgICAgICAgdGhpcy5zeXN0ZW1TbWFydFRhZ3MgPSBCdWlsZFNtYXJ0VGFncygpO1xuICAgIH1cbiAgICBzZXREaXNwbGF5T3B0aW9ucyhjb250ZW50VHlwZSwgc29ydEJ5LCBkaXJlY3Rpb24sIGZpbHRlcikge1xuICAgICAgICB0aGlzLmNvbGxlY3Rpb24uc2V0RGlzcGxheU9wdGlvbnMoY29udGVudFR5cGUsIHNvcnRCeSwgZGlyZWN0aW9uLCBmaWx0ZXIpO1xuICAgIH1cbiAgICBnZXREaXNwbGF5YWJsZUl0ZW1zKGNvbnRlbnRUeXBlKSB7XG4gICAgICAgIHJldHVybiB0aGlzLmNvbGxlY3Rpb24uZGlzcGxheUVsZW1lbnRzKGNvbnRlbnRUeXBlKTtcbiAgICB9XG4gICAgZGVpbml0KCkge1xuICAgICAgICB0aGlzLnVuc3ViQ2hhbmdlT2JzZXJ2ZXIoKTtcbiAgICAgICAgdGhpcy51bnN1YkNoYW5nZU9ic2VydmVyID0gdW5kZWZpbmVkO1xuICAgICAgICB0aGlzLm1vZGVsTWFuYWdlciA9IHVuZGVmaW5lZDtcbiAgICAgICAgdGhpcy5jb2xsZWN0aW9uID0gdW5kZWZpbmVkO1xuICAgIH1cbiAgICByZXNldFN0YXRlKCkge1xuICAgICAgICB0aGlzLmNyZWF0ZUNvbGxlY3Rpb24oKTtcbiAgICB9XG4gICAgY3JlYXRlQ29sbGVjdGlvbigpIHtcbiAgICAgICAgdGhpcy5jb2xsZWN0aW9uID0gbmV3IEl0ZW1Db2xsZWN0aW9uKCk7XG4gICAgICAgIHRoaXMuY29sbGVjdGlvbi5zZXREaXNwbGF5T3B0aW9ucyhDb250ZW50VHlwZS5Ob3RlLCBDb2xsZWN0aW9uU29ydC5DcmVhdGVkQXQsICdkc2MnKTtcbiAgICAgICAgdGhpcy5jb2xsZWN0aW9uLnNldERpc3BsYXlPcHRpb25zKENvbnRlbnRUeXBlLlRhZywgQ29sbGVjdGlvblNvcnQuVGl0bGUsICdhc2MnKTtcbiAgICAgICAgdGhpcy5jb2xsZWN0aW9uLnNldERpc3BsYXlPcHRpb25zKENvbnRlbnRUeXBlLkl0ZW1zS2V5LCBDb2xsZWN0aW9uU29ydC5DcmVhdGVkQXQsICdhc2MnKTtcbiAgICAgICAgdGhpcy5jb2xsZWN0aW9uLnNldERpc3BsYXlPcHRpb25zKENvbnRlbnRUeXBlLkNvbXBvbmVudCwgQ29sbGVjdGlvblNvcnQuQ3JlYXRlZEF0LCAnYXNjJyk7XG4gICAgICAgIHRoaXMuY29sbGVjdGlvbi5zZXREaXNwbGF5T3B0aW9ucyhDb250ZW50VHlwZS5TbWFydFRhZywgQ29sbGVjdGlvblNvcnQuVGl0bGUsICdhc2MnKTtcbiAgICB9XG4gICAgLyoqXG4gICAgICogUmV0dXJucyBhbiBpdGVtIGZvciBhIGdpdmVuIGlkXG4gICAgICovXG4gICAgZmluZEl0ZW0odXVpZCkge1xuICAgICAgICByZXR1cm4gdGhpcy5jb2xsZWN0aW9uLmZpbmQodXVpZCk7XG4gICAgfVxuICAgIC8qKlxuICAgICAqIFJldHVybnMgYWxsIGl0ZW1zIG1hdGNoaW5nIGdpdmVuIGlkc1xuICAgICAqIEBwYXJhbSBpbmNsdWRlQmxhbmtzIElmIHRydWUgYW5kIGFuIGl0ZW0gaXMgbm90IGZvdW5kLCBhbiBgdW5kZWZpbmVkYCBlbGVtZW50XG4gICAgICogd2lsbCBiZSBpbnNlcnRlZCBpbnRvIHRoZSBhcnJheS5cbiAgICAgKi9cbiAgICBmaW5kSXRlbXModXVpZHMsIGluY2x1ZGVCbGFua3MgPSBmYWxzZSkge1xuICAgICAgICByZXR1cm4gdGhpcy5jb2xsZWN0aW9uLmZpbmRBbGwodXVpZHMsIGluY2x1ZGVCbGFua3MpO1xuICAgIH1cbiAgICAvKipcbiAgICAgKiBSZXR1cm5zIGEgZGV0YWNoZWQgYXJyYXkgb2YgYWxsIGl0ZW1zXG4gICAgICovXG4gICAgZ2V0IGl0ZW1zKCkge1xuICAgICAgICByZXR1cm4gdGhpcy5jb2xsZWN0aW9uLmFsbCgpO1xuICAgIH1cbiAgICAvKipcbiAgICAgKiBSZXR1cm5zIGEgZGV0YWNoZWQgYXJyYXkgb2YgYWxsIGl0ZW1zIHdoaWNoIGFyZSBub3QgZGVsZXRlZFxuICAgICAqL1xuICAgIGdldCBub25EZWxldGVkSXRlbXMoKSB7XG4gICAgICAgIHJldHVybiB0aGlzLmNvbGxlY3Rpb24ubm9uZGVsZXRlZEVsZW1lbnRzKCk7XG4gICAgfVxuICAgIC8qKlxuICAgICAqIFJldHVybnMgYWxsIGl0ZW1zIHRoYXQgaGF2ZSBub3QgYmVlbiBhYmxlIHRvIGRlY3J5cHQuXG4gICAgICovXG4gICAgZ2V0IGludmFsaWRJdGVtcygpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuY29sbGVjdGlvbi5pbnZhbGlkRWxlbWVudHMoKTtcbiAgICB9XG4gICAgLyoqXG4gICAgICogUmV0dXJucyBhbGwgbm9uLWRlbGV0ZWQgaXRlbXMga2V5c1xuICAgICAqL1xuICAgIGl0ZW1zS2V5cygpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuY29sbGVjdGlvbi5kaXNwbGF5RWxlbWVudHMoQ29udGVudFR5cGUuSXRlbXNLZXkpO1xuICAgIH1cbiAgICAvKipcbiAgICAqIFJldHVybnMgYWxsIG5vbi1kZWxldGVkIG5vdGVzXG4gICAgKi9cbiAgICBnZXQgbm90ZXMoKSB7XG4gICAgICAgIHJldHVybiB0aGlzLmNvbGxlY3Rpb24uZGlzcGxheUVsZW1lbnRzKENvbnRlbnRUeXBlLk5vdGUpO1xuICAgIH1cbiAgICAvKipcbiAgICAqIFJldHVybnMgYWxsIG5vbi1kZWxldGVkIHRhZ3NcbiAgICAqL1xuICAgIGdldCB0YWdzKCkge1xuICAgICAgICByZXR1cm4gdGhpcy5jb2xsZWN0aW9uLmRpc3BsYXlFbGVtZW50cyhDb250ZW50VHlwZS5UYWcpO1xuICAgIH1cbiAgICAvKipcbiAgICAqIFJldHVybnMgYWxsIG5vbi1kZWxldGVkIGNvbXBvbmVudHNcbiAgICAqL1xuICAgIGdldCBjb21wb25lbnRzKCkge1xuICAgICAgICByZXR1cm4gdGhpcy5jb2xsZWN0aW9uLmRpc3BsYXlFbGVtZW50cyhDb250ZW50VHlwZS5Db21wb25lbnQpO1xuICAgIH1cbiAgICBhZGRPYnNlcnZlcihjb250ZW50VHlwZSwgY2FsbGJhY2spIHtcbiAgICAgICAgaWYgKCFBcnJheS5pc0FycmF5KGNvbnRlbnRUeXBlKSkge1xuICAgICAgICAgICAgY29udGVudFR5cGUgPSBbY29udGVudFR5cGVdO1xuICAgICAgICB9XG4gICAgICAgIGNvbnN0IG9ic2VydmVyID0ge1xuICAgICAgICAgICAgY29udGVudFR5cGUsXG4gICAgICAgICAgICBjYWxsYmFja1xuICAgICAgICB9O1xuICAgICAgICB0aGlzLm9ic2VydmVycy5wdXNoKG9ic2VydmVyKTtcbiAgICAgICAgcmV0dXJuICgpID0+IHtcbiAgICAgICAgICAgIHJlbW92ZUZyb21BcnJheSh0aGlzLm9ic2VydmVycywgb2JzZXJ2ZXIpO1xuICAgICAgICB9O1xuICAgIH1cbiAgICAvKipcbiAgICAgKiBSZXR1cm5zIHRoZSBpdGVtcyB0aGF0IHJlZmVyZW5jZSB0aGUgZ2l2ZW4gaXRlbSwgb3IgYW4gZW1wdHkgYXJyYXkgaWYgbm8gcmVzdWx0cy5cbiAgICAgKi9cbiAgICBpdGVtc1JlZmVyZW5jaW5nSXRlbSh1dWlkKSB7XG4gICAgICAgIGlmICghaXNTdHJpbmcodXVpZCkpIHtcbiAgICAgICAgICAgIHRocm93IEVycm9yKCdNdXN0IHVzZSB1dWlkIHN0cmluZycpO1xuICAgICAgICB9XG4gICAgICAgIGNvbnN0IHV1aWRzID0gdGhpcy5jb2xsZWN0aW9uLnV1aWRzVGhhdFJlZmVyZW5jZVV1aWQodXVpZCk7XG4gICAgICAgIHJldHVybiB0aGlzLmZpbmRJdGVtcyh1dWlkcyk7XG4gICAgfVxuICAgIC8qKlxuICAgICAqIFJldHVybnMgYWxsIGl0ZW1zIHRoYXQgYW4gaXRlbSBkaXJlY3RseSByZWZlcmVuY2VzXG4gICAgICovXG4gICAgcmVmZXJlbmNlc0Zvckl0ZW0odXVpZCkge1xuICAgICAgICBpZiAoIWlzU3RyaW5nKHV1aWQpKSB7XG4gICAgICAgICAgICB0aHJvdyBFcnJvcignTXVzdCB1c2UgdXVpZCBzdHJpbmcnKTtcbiAgICAgICAgfVxuICAgICAgICBjb25zdCBpdGVtID0gdGhpcy5maW5kSXRlbSh1dWlkKTtcbiAgICAgICAgY29uc3QgdXVpZHMgPSBpdGVtLnJlZmVyZW5jZXMubWFwKChyZWYpID0+IHJlZi51dWlkKTtcbiAgICAgICAgcmV0dXJuIHRoaXMuZmluZEl0ZW1zKHV1aWRzKTtcbiAgICB9XG4gICAgYXN5bmMgb25QYXlsb2FkQ2hhbmdlKGNoYW5nZWQsIGluc2VydGVkLCBkaXNjYXJkZWQsIHNvdXJjZSwgc291cmNlS2V5KSB7XG4gICAgICAgIHJldHVybiB0aGlzLnNldFBheWxvYWRzKGNoYW5nZWQsIGluc2VydGVkLCBkaXNjYXJkZWQsIHNvdXJjZSwgc291cmNlS2V5KTtcbiAgICB9XG4gICAgYXN5bmMgc2V0UGF5bG9hZHMoY2hhbmdlZCwgaW5zZXJ0ZWQsIGRpc2NhcmRlZCwgc291cmNlLCBzb3VyY2VLZXkpIHtcbiAgICAgICAgY29uc3QgY2hhbmdlZEl0ZW1zID0gY2hhbmdlZC5tYXAoKHApID0+IENyZWF0ZUl0ZW1Gcm9tUGF5bG9hZChwKSk7XG4gICAgICAgIGNvbnN0IGluc2VydGVkSXRlbXMgPSBpbnNlcnRlZC5tYXAoKHApID0+IENyZWF0ZUl0ZW1Gcm9tUGF5bG9hZChwKSk7XG4gICAgICAgIGNvbnN0IGNoYW5nZWRPckluc2VydGVkID0gY2hhbmdlZEl0ZW1zLmNvbmNhdChpbnNlcnRlZEl0ZW1zKTtcbiAgICAgICAgaWYgKGNoYW5nZWRPckluc2VydGVkLmxlbmd0aCA+IDApIHtcbiAgICAgICAgICAgIHRoaXMuY29sbGVjdGlvbi5zZXQoY2hhbmdlZE9ySW5zZXJ0ZWQpO1xuICAgICAgICB9XG4gICAgICAgIGNvbnN0IGRpc2NhcmRlZEl0ZW1zID0gZGlzY2FyZGVkLm1hcCgocCkgPT4gQ3JlYXRlSXRlbUZyb21QYXlsb2FkKHApKTtcbiAgICAgICAgZm9yIChjb25zdCBpdGVtIG9mIGRpc2NhcmRlZEl0ZW1zKSB7XG4gICAgICAgICAgICB0aGlzLmNvbGxlY3Rpb24uZGlzY2FyZChpdGVtKTtcbiAgICAgICAgfVxuICAgICAgICBhd2FpdCB0aGlzLm5vdGlmeU9ic2VydmVycyhjaGFuZ2VkSXRlbXMsIGluc2VydGVkSXRlbXMsIGRpc2NhcmRlZEl0ZW1zLCBzb3VyY2UsIHNvdXJjZUtleSk7XG4gICAgfVxuICAgIGFzeW5jIG5vdGlmeU9ic2VydmVycyhjaGFuZ2VkLCBpbnNlcnRlZCwgZGlzY2FyZGVkLCBzb3VyY2UsIHNvdXJjZUtleSkge1xuICAgICAgICBjb25zdCBmaWx0ZXIgPSAoaXRlbXMsIHR5cGVzKSA9PiB7XG4gICAgICAgICAgICByZXR1cm4gaXRlbXMuZmlsdGVyKChpdGVtKSA9PiB7XG4gICAgICAgICAgICAgICAgcmV0dXJuICh0eXBlcy5pbmNsdWRlcyhDb250ZW50VHlwZS5BbnkpIHx8XG4gICAgICAgICAgICAgICAgICAgIHR5cGVzLmluY2x1ZGVzKGl0ZW0uY29udGVudF90eXBlKSk7XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgfTtcbiAgICAgICAgY29uc3Qgb2JzZXJ2ZXJzID0gdGhpcy5vYnNlcnZlcnMuc2xpY2UoKTtcbiAgICAgICAgZm9yIChjb25zdCBvYnNlcnZlciBvZiBvYnNlcnZlcnMpIHtcbiAgICAgICAgICAgIGNvbnN0IGZpbHRlcmVkQ2hhbmdlZCA9IGZpbHRlcihjaGFuZ2VkLCBvYnNlcnZlci5jb250ZW50VHlwZSk7XG4gICAgICAgICAgICBjb25zdCBmaWx0ZXJlZEluc2VydGVkID0gZmlsdGVyKGluc2VydGVkLCBvYnNlcnZlci5jb250ZW50VHlwZSk7XG4gICAgICAgICAgICBjb25zdCBmaWx0ZXJlZERpc2NhcmRlZCA9IGZpbHRlcihkaXNjYXJkZWQsIG9ic2VydmVyLmNvbnRlbnRUeXBlKTtcbiAgICAgICAgICAgIGlmIChmaWx0ZXJlZENoYW5nZWQubGVuZ3RoID09PSAwICYmXG4gICAgICAgICAgICAgICAgZmlsdGVyZWRJbnNlcnRlZC5sZW5ndGggPT09IDAgJiZcbiAgICAgICAgICAgICAgICBmaWx0ZXJlZERpc2NhcmRlZC5sZW5ndGggPT09IDApIHtcbiAgICAgICAgICAgICAgICBjb250aW51ZTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGF3YWl0IG9ic2VydmVyLmNhbGxiYWNrKGZpbHRlcmVkQ2hhbmdlZCwgZmlsdGVyZWRJbnNlcnRlZCwgZmlsdGVyZWREaXNjYXJkZWQsIHNvdXJjZSwgc291cmNlS2V5KTtcbiAgICAgICAgfVxuICAgIH1cbiAgICAvKipcbiAgICAgKiBDb25zdW1lcnMgd2FudGluZyB0byBtb2RpZnkgYW4gaXRlbSBzaG91bGQgcnVuIGl0IHRocm91Z2ggdGhpcyBibG9jayxcbiAgICAgKiBzbyB0aGF0IGRhdGEgaXMgcHJvcGVybHkgbWFwcGVkIHRocm91Z2ggb3VyIGZ1bmN0aW9uLCBhbmQgbGF0ZXN0IHN0YXRlXG4gICAgICogaXMgcHJvcGVybHkgcmVjb25jaWxlZC5cbiAgICAgKiBAcGFyYW0gaXRlbU9yVXVpZCBJZiBhbiBpdGVtIGlzIHBhc3NlZCwgdGhlIHZhbHVlcyBvZiB0aGF0IGl0ZW0gd2lsbCBiZSBkaXJlY3RseSB1c2VkLFxuICAgICAqIGFuZCB0aGUgbXV0YXRpb24gd2lsbCBiZSBhcHBsaWVkIG9uIHRoYXQgaXRlbSBhbmQgcHJvcGFnYXRlZC4gVGhpcyBtZWFucyB0aGF0IGlmIHlvdSBwYXNzXG4gICAgICogYW4gb2xkIGl0ZW0gcmVmZXJlbmNlIGFuZCBtdXRhdGUgdGhhdCwgdGhlIG5ldyB2YWx1ZSB3aWxsIGJlIG91dGRhdGVkLiBJbiB0aGlzIGNhc2UsIGFsd2F5c1xuICAgICAqIHBhc3MgdGhlIHV1aWQgb2YgdGhlIGl0ZW0gaWYgeW91IHdhbnQgdG8gbXV0YXRlIHRoZSBsYXRlc3QgdmVyc2lvbiBvZiB0aGUgaXRlbS5cbiAgICAgKi9cbiAgICBhc3luYyBjaGFuZ2VJdGVtKHV1aWQsIG11dGF0ZSwgbXV0YXRpb25UeXBlID0gTXV0YXRpb25UeXBlLlVzZXJJbnRlcmFjdGlvbiwgcGF5bG9hZFNvdXJjZSA9IFBheWxvYWRTb3VyY2UuTG9jYWxDaGFuZ2VkLCBwYXlsb2FkU291cmNlS2V5KSB7XG4gICAgICAgIGlmICghaXNTdHJpbmcodXVpZCkpIHtcbiAgICAgICAgICAgIHRocm93IEVycm9yKCdJbnZhbGlkIHV1aWQgZm9yIGNoYW5nZUl0ZW0nKTtcbiAgICAgICAgfVxuICAgICAgICBjb25zdCByZXN1bHRzID0gYXdhaXQgdGhpcy5jaGFuZ2VJdGVtcyhbdXVpZF0sIG11dGF0ZSwgbXV0YXRpb25UeXBlLCBwYXlsb2FkU291cmNlLCBwYXlsb2FkU291cmNlS2V5KTtcbiAgICAgICAgcmV0dXJuIHJlc3VsdHNbMF07XG4gICAgfVxuICAgIGNyZWF0ZU11dGF0b3JGb3JJdGVtKGl0ZW0sIHR5cGUpIHtcbiAgICAgICAgaWYgKGl0ZW0uY29udGVudF90eXBlID09PSBDb250ZW50VHlwZS5Ob3RlKSB7XG4gICAgICAgICAgICByZXR1cm4gbmV3IE5vdGVNdXRhdG9yKGl0ZW0sIHR5cGUpO1xuICAgICAgICB9XG4gICAgICAgIGVsc2UgaWYgKGl0ZW0uY29udGVudF90eXBlID09PSBDb250ZW50VHlwZS5UYWcpIHtcbiAgICAgICAgICAgIHJldHVybiBuZXcgVGFnTXV0YXRvcihpdGVtLCB0eXBlKTtcbiAgICAgICAgfVxuICAgICAgICBlbHNlIGlmIChpdGVtLmNvbnRlbnRfdHlwZSA9PT0gQ29udGVudFR5cGUuQ29tcG9uZW50KSB7XG4gICAgICAgICAgICByZXR1cm4gbmV3IENvbXBvbmVudE11dGF0b3IoaXRlbSwgdHlwZSk7XG4gICAgICAgIH1cbiAgICAgICAgZWxzZSBpZiAoaXRlbS5jb250ZW50X3R5cGUgPT09IENvbnRlbnRUeXBlLkFjdGlvbnNFeHRlbnNpb24pIHtcbiAgICAgICAgICAgIHJldHVybiBuZXcgQWN0aW9uc0V4dGVuc2lvbk11dGF0b3IoaXRlbSwgdHlwZSk7XG4gICAgICAgIH1cbiAgICAgICAgZWxzZSBpZiAoaXRlbS5jb250ZW50X3R5cGUgPT09IENvbnRlbnRUeXBlLkl0ZW1zS2V5KSB7XG4gICAgICAgICAgICByZXR1cm4gbmV3IEl0ZW1zS2V5TXV0YXRvcihpdGVtLCB0eXBlKTtcbiAgICAgICAgfVxuICAgICAgICBlbHNlIGlmIChpdGVtLmNvbnRlbnRfdHlwZSA9PT0gQ29udGVudFR5cGUuUHJpdmlsZWdlcykge1xuICAgICAgICAgICAgcmV0dXJuIG5ldyBQcml2aWxlZ2VNdXRhdG9yKGl0ZW0sIHR5cGUpO1xuICAgICAgICB9XG4gICAgICAgIGVsc2UgaWYgKGl0ZW0uY29udGVudF90eXBlID09PSBDb250ZW50VHlwZS5Vc2VyUHJlZnMpIHtcbiAgICAgICAgICAgIHJldHVybiBuZXcgVXNlclByZWZzTXV0YXRvcihpdGVtLCB0eXBlKTtcbiAgICAgICAgfVxuICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgIHJldHVybiBuZXcgSXRlbU11dGF0b3IoaXRlbSwgdHlwZSk7XG4gICAgICAgIH1cbiAgICB9XG4gICAgLyoqXG4gICAgICogQHBhcmFtIG11dGF0ZSBJZiBub3Qgc3VwcGxpZWQsIHRoZSBpbnRlbnRpb24gd291bGQgc2ltcGx5IGJlIHRvIG1hcmsgdGhlIGl0ZW0gYXMgZGlydHkuXG4gICAgICovXG4gICAgYXN5bmMgY2hhbmdlSXRlbXModXVpZHMsIG11dGF0ZSwgbXV0YXRpb25UeXBlID0gTXV0YXRpb25UeXBlLlVzZXJJbnRlcmFjdGlvbiwgcGF5bG9hZFNvdXJjZSA9IFBheWxvYWRTb3VyY2UuTG9jYWxDaGFuZ2VkLCBwYXlsb2FkU291cmNlS2V5KSB7XG4gICAgICAgIGNvbnN0IGl0ZW1zID0gdGhpcy5maW5kSXRlbXModXVpZHMsIHRydWUpO1xuICAgICAgICBjb25zdCBwYXlsb2FkcyA9IFtdO1xuICAgICAgICBmb3IgKGNvbnN0IGl0ZW0gb2YgaXRlbXMpIHtcbiAgICAgICAgICAgIGlmICghaXRlbSkge1xuICAgICAgICAgICAgICAgIHRocm93IEVycm9yKCdBdHRlbXB0aW5nIHRvIGNoYW5nZSBub24tZXhpc3RhbnQgaXRlbScpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgY29uc3QgbXV0YXRvciA9IHRoaXMuY3JlYXRlTXV0YXRvckZvckl0ZW0oaXRlbSwgbXV0YXRpb25UeXBlKTtcbiAgICAgICAgICAgIGlmIChtdXRhdGUpIHtcbiAgICAgICAgICAgICAgICBtdXRhdGUobXV0YXRvcik7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBjb25zdCBwYXlsb2FkID0gbXV0YXRvci5nZXRSZXN1bHQoKTtcbiAgICAgICAgICAgIHBheWxvYWRzLnB1c2gocGF5bG9hZCk7XG4gICAgICAgIH1cbiAgICAgICAgYXdhaXQgdGhpcy5tb2RlbE1hbmFnZXIuZW1pdFBheWxvYWRzKHBheWxvYWRzLCBwYXlsb2FkU291cmNlLCBwYXlsb2FkU291cmNlS2V5KTtcbiAgICAgICAgY29uc3QgcmVzdWx0cyA9IHRoaXMuZmluZEl0ZW1zKHBheWxvYWRzLm1hcCgocCkgPT4gcC51dWlkKSk7XG4gICAgICAgIHJldHVybiByZXN1bHRzO1xuICAgIH1cbiAgICBhc3luYyBjaGFuZ2VOb3RlKHV1aWQsIG11dGF0ZSwgbXV0YXRpb25UeXBlID0gTXV0YXRpb25UeXBlLlVzZXJJbnRlcmFjdGlvbiwgcGF5bG9hZFNvdXJjZSA9IFBheWxvYWRTb3VyY2UuTG9jYWxDaGFuZ2VkLCBwYXlsb2FkU291cmNlS2V5KSB7XG4gICAgICAgIGNvbnN0IG5vdGUgPSB0aGlzLmZpbmRJdGVtKHV1aWQpO1xuICAgICAgICBpZiAoIW5vdGUpIHtcbiAgICAgICAgICAgIHRocm93IEVycm9yKCdBdHRlbXB0aW5nIHRvIGNoYW5nZSBub24tZXhpc3RhbnQgbm90ZScpO1xuICAgICAgICB9XG4gICAgICAgIGNvbnN0IG11dGF0b3IgPSBuZXcgTm90ZU11dGF0b3Iobm90ZSwgbXV0YXRpb25UeXBlKTtcbiAgICAgICAgcmV0dXJuIHRoaXMuYXBwbHlUcmFuc2Zvcm0obXV0YXRvciwgbXV0YXRlLCBwYXlsb2FkU291cmNlLCBwYXlsb2FkU291cmNlS2V5KTtcbiAgICB9XG4gICAgYXN5bmMgY2hhbmdlQ29tcG9uZW50KHV1aWQsIG11dGF0ZSwgbXV0YXRpb25UeXBlID0gTXV0YXRpb25UeXBlLlVzZXJJbnRlcmFjdGlvbiwgcGF5bG9hZFNvdXJjZSA9IFBheWxvYWRTb3VyY2UuTG9jYWxDaGFuZ2VkLCBwYXlsb2FkU291cmNlS2V5KSB7XG4gICAgICAgIGNvbnN0IGNvbXBvbmVudCA9IHRoaXMuZmluZEl0ZW0odXVpZCk7XG4gICAgICAgIGlmICghY29tcG9uZW50KSB7XG4gICAgICAgICAgICB0aHJvdyBFcnJvcignQXR0ZW1wdGluZyB0byBjaGFuZ2Ugbm9uLWV4aXN0YW50IGNvbXBvbmVudCcpO1xuICAgICAgICB9XG4gICAgICAgIGNvbnN0IG11dGF0b3IgPSBuZXcgQ29tcG9uZW50TXV0YXRvcihjb21wb25lbnQsIG11dGF0aW9uVHlwZSk7XG4gICAgICAgIHJldHVybiB0aGlzLmFwcGx5VHJhbnNmb3JtKG11dGF0b3IsIG11dGF0ZSwgcGF5bG9hZFNvdXJjZSwgcGF5bG9hZFNvdXJjZUtleSk7XG4gICAgfVxuICAgIGFzeW5jIGNoYW5nZUFjdGlvbnNFeHRlbnNpb24odXVpZCwgbXV0YXRlLCBtdXRhdGlvblR5cGUgPSBNdXRhdGlvblR5cGUuVXNlckludGVyYWN0aW9uLCBwYXlsb2FkU291cmNlID0gUGF5bG9hZFNvdXJjZS5Mb2NhbENoYW5nZWQsIHBheWxvYWRTb3VyY2VLZXkpIHtcbiAgICAgICAgY29uc3QgZXh0ZW5zaW9uID0gdGhpcy5maW5kSXRlbSh1dWlkKTtcbiAgICAgICAgaWYgKCFleHRlbnNpb24pIHtcbiAgICAgICAgICAgIHRocm93IEVycm9yKCdBdHRlbXB0aW5nIHRvIGNoYW5nZSBub24tZXhpc3RhbnQgZXh0ZW5zaW9uJyk7XG4gICAgICAgIH1cbiAgICAgICAgY29uc3QgbXV0YXRvciA9IG5ldyBBY3Rpb25zRXh0ZW5zaW9uTXV0YXRvcihleHRlbnNpb24sIG11dGF0aW9uVHlwZSk7XG4gICAgICAgIHJldHVybiB0aGlzLmFwcGx5VHJhbnNmb3JtKG11dGF0b3IsIG11dGF0ZSwgcGF5bG9hZFNvdXJjZSwgcGF5bG9hZFNvdXJjZUtleSk7XG4gICAgfVxuICAgIGFzeW5jIGNoYW5nZUl0ZW1zS2V5KHV1aWQsIG11dGF0ZSwgbXV0YXRpb25UeXBlID0gTXV0YXRpb25UeXBlLlVzZXJJbnRlcmFjdGlvbiwgcGF5bG9hZFNvdXJjZSA9IFBheWxvYWRTb3VyY2UuTG9jYWxDaGFuZ2VkLCBwYXlsb2FkU291cmNlS2V5KSB7XG4gICAgICAgIGNvbnN0IGl0ZW1zS2V5ID0gdGhpcy5maW5kSXRlbSh1dWlkKTtcbiAgICAgICAgaWYgKCFpdGVtc0tleSkge1xuICAgICAgICAgICAgdGhyb3cgRXJyb3IoJ0F0dGVtcHRpbmcgdG8gY2hhbmdlIG5vbi1leGlzdGFudCBpdGVtc0tleScpO1xuICAgICAgICB9XG4gICAgICAgIGNvbnN0IG11dGF0b3IgPSBuZXcgSXRlbXNLZXlNdXRhdG9yKGl0ZW1zS2V5LCBtdXRhdGlvblR5cGUpO1xuICAgICAgICByZXR1cm4gdGhpcy5hcHBseVRyYW5zZm9ybShtdXRhdG9yLCBtdXRhdGUsIHBheWxvYWRTb3VyY2UsIHBheWxvYWRTb3VyY2VLZXkpO1xuICAgIH1cbiAgICBhc3luYyBhcHBseVRyYW5zZm9ybShtdXRhdG9yLCBtdXRhdGUsIHBheWxvYWRTb3VyY2UgPSBQYXlsb2FkU291cmNlLkxvY2FsQ2hhbmdlZCwgcGF5bG9hZFNvdXJjZUtleSkge1xuICAgICAgICBtdXRhdGUobXV0YXRvcik7XG4gICAgICAgIGNvbnN0IHBheWxvYWQgPSBtdXRhdG9yLmdldFJlc3VsdCgpO1xuICAgICAgICByZXR1cm4gdGhpcy5tb2RlbE1hbmFnZXIuZW1pdFBheWxvYWQocGF5bG9hZCwgcGF5bG9hZFNvdXJjZSwgcGF5bG9hZFNvdXJjZUtleSk7XG4gICAgfVxuICAgIC8qKlxuICAgICAgKiBTZXRzIHRoZSBpdGVtIGFzIG5lZWRpbmcgc3luYy4gVGhlIGl0ZW0gaXMgdGhlbiBydW4gdGhyb3VnaCB0aGUgbWFwcGluZyBmdW5jdGlvbixcbiAgICAgICogYW5kIHByb3BhZ2F0ZWQgdG8gbWFwcGluZyBvYnNlcnZlcnMuXG4gICAgICAqIEBwYXJhbSB1cGRhdGVDbGllbnREYXRlIC0gV2hldGhlciB0byB1cGRhdGUgdGhlIGl0ZW0ncyBcInVzZXIgbW9kaWZpZWQgZGF0ZVwiXG4gICAgICAqL1xuICAgIGFzeW5jIHNldEl0ZW1EaXJ0eSh1dWlkLCBpc1VzZXJNb2RpZmllZCA9IGZhbHNlKSB7XG4gICAgICAgIGlmICghaXNTdHJpbmcodXVpZCkpIHtcbiAgICAgICAgICAgIHRocm93IEVycm9yKCdNdXN0IHVzZSB1dWlkIHdoZW4gc2V0dGluZyBpdGVtIGRpcnR5Jyk7XG4gICAgICAgIH1cbiAgICAgICAgY29uc3QgcmVzdWx0ID0gYXdhaXQgdGhpcy5zZXRJdGVtc0RpcnR5KFt1dWlkXSwgaXNVc2VyTW9kaWZpZWQpO1xuICAgICAgICByZXR1cm4gcmVzdWx0WzBdO1xuICAgIH1cbiAgICAvKipcbiAgICAgKiBTaW1pbGFyIHRvIGBzZXRJdGVtRGlydHlgLCBidXQgYWN0cyBvbiBhbiBhcnJheSBvZiBpdGVtcyBhcyB0aGUgZmlyc3QgcGFyYW0uXG4gICAgICovXG4gICAgYXN5bmMgc2V0SXRlbXNEaXJ0eSh1dWlkcywgaXNVc2VyTW9kaWZpZWQgPSBmYWxzZSkge1xuICAgICAgICBpZiAoIWlzU3RyaW5nKHV1aWRzWzBdKSkge1xuICAgICAgICAgICAgdGhyb3cgRXJyb3IoJ011c3QgdXNlIHV1aWQgd2hlbiBzZXR0aW5nIGl0ZW0gZGlydHknKTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gdGhpcy5jaGFuZ2VJdGVtcyh1dWlkcywgdW5kZWZpbmVkLCBpc1VzZXJNb2RpZmllZCA/IE11dGF0aW9uVHlwZS5Vc2VySW50ZXJhY3Rpb24gOiBNdXRhdGlvblR5cGUuSW50ZXJuYWwpO1xuICAgIH1cbiAgICAvKipcbiAgICAgKiBSZXR1cm5zIGFuIGFycmF5IG9mIGl0ZW1zIHRoYXQgbmVlZCB0byBiZSBzeW5jZWQuXG4gICAgICovXG4gICAgZ2V0RGlydHlJdGVtcygpIHtcbiAgICAgICAgY29uc3QgZGlydHkgPSB0aGlzLmNvbGxlY3Rpb24uZGlydHlFbGVtZW50cygpO1xuICAgICAgICByZXR1cm4gZGlydHkuZmlsdGVyKChpdGVtKSA9PiB7XG4gICAgICAgICAgICAvKiBBbiBpdGVtIHRoYXQgaGFzIGFuIGVycm9yIGRlY3J5cHRpbmcgY2FuIGJlIHN5bmNlZCBvbmx5IGlmIGl0IGlzIGJlaW5nIGRlbGV0ZWQuXG4gICAgICAgICAgICAgIE90aGVyd2lzZSwgd2UgZG9uJ3Qgd2FudCB0byBzZW5kIGNvcnJ1cHQgY29udGVudCB1cCB0byB0aGUgc2VydmVyLiAqL1xuICAgICAgICAgICAgcmV0dXJuICFpdGVtLmVycm9yRGVjcnlwdGluZyB8fCBpdGVtLmRlbGV0ZWQ7XG4gICAgICAgIH0pO1xuICAgIH1cbiAgICAvKipcbiAgICAgKiBJbnNlcnRzIHRoZSBpdGVtIGFzLWlzIGJ5IHJlYWRpbmcgaXRzIHBheWxvYWQgdmFsdWUuIFRoaXMgZnVuY3Rpb24gd2lsbCBub3RcbiAgICAgKiBtb2RpZnkgaXRlbSBpbiBhbnkgd2F5IChzdWNoIGFzIG1hcmtpbmcgaXQgYXMgZGlydHkpLiBJdCBpcyB1cCB0byB0aGUgY2FsbGVyXG4gICAgICogdG8gcGFzcyBpbiBhIGRpcnRpZWQgaXRlbSBpZiB0aGF0IGlzIHRoZWlyIGludGVudGlvbi5cbiAgICAgKi9cbiAgICBhc3luYyBpbnNlcnRJdGVtKGl0ZW0pIHtcbiAgICAgICAgY29uc3QgcGF5bG9hZCA9IGl0ZW0ucGF5bG9hZDtcbiAgICAgICAgY29uc3QgaW5zZXJ0ZWRJdGVtID0gYXdhaXQgdGhpcy5lbWl0SXRlbUZyb21QYXlsb2FkKHBheWxvYWQpO1xuICAgICAgICByZXR1cm4gaW5zZXJ0ZWRJdGVtO1xuICAgIH1cbiAgICAvKipcbiAgICAgKiBEdXBsaWNhdGVzIGFuIGl0ZW0gYW5kIG1hcHMgaXQsIHRodXMgcHJvcGFnYXRpbmcgdGhlIGl0ZW0gdG8gb2JzZXJ2ZXJzLlxuICAgICAqIEBwYXJhbSBpc0NvbmZsaWN0IC0gV2hldGhlciB0byBtYXJrIHRoZSBkdXBsaWNhdGUgYXMgYSBjb25mbGljdCBvZiB0aGUgb3JpZ2luYWwuXG4gICAgICovXG4gICAgYXN5bmMgZHVwbGljYXRlSXRlbSh1dWlkLCBpc0NvbmZsaWN0ID0gZmFsc2UpIHtcbiAgICAgICAgY29uc3QgaXRlbSA9IHRoaXMuZmluZEl0ZW0odXVpZCk7XG4gICAgICAgIGNvbnN0IHBheWxvYWQgPSBDcmVhdGVNYXhQYXlsb2FkRnJvbUFueU9iamVjdChpdGVtKTtcbiAgICAgICAgY29uc3QgcmVzdWx0aW5nUGF5bG9hZHMgPSBhd2FpdCBQYXlsb2Fkc0J5RHVwbGljYXRpbmcocGF5bG9hZCwgdGhpcy5tb2RlbE1hbmFnZXIuZ2V0TWFzdGVyQ29sbGVjdGlvbigpLCBpc0NvbmZsaWN0KTtcbiAgICAgICAgYXdhaXQgdGhpcy5tb2RlbE1hbmFnZXIuZW1pdFBheWxvYWRzKHJlc3VsdGluZ1BheWxvYWRzLCBQYXlsb2FkU291cmNlLkxvY2FsQ2hhbmdlZCk7XG4gICAgICAgIGNvbnN0IGR1cGxpY2F0ZSA9IHRoaXMuZmluZEl0ZW0ocmVzdWx0aW5nUGF5bG9hZHNbMF0udXVpZCk7XG4gICAgICAgIHJldHVybiBkdXBsaWNhdGU7XG4gICAgfVxuICAgIC8qKlxuICAgICAqIENyZWF0ZXMgYW4gaXRlbSBhbmQgY29uZGl0aW9uYWxseSBtYXBzIGl0IGFuZCBtYXJrcyBpdCBhcyBkaXJ0eS5cbiAgICAgKiBAcGFyYW0gbmVlZHNTeW5jIC0gV2hldGhlciB0byBtYXJrIHRoZSBpdGVtIGFzIG5lZWRpbmcgc3luY1xuICAgICAqL1xuICAgIGFzeW5jIGNyZWF0ZUl0ZW0oY29udGVudFR5cGUsIGNvbnRlbnQsIG5lZWRzU3luYyA9IGZhbHNlLCBvdmVycmlkZSkge1xuICAgICAgICBpZiAoIWNvbnRlbnRUeXBlKSB7XG4gICAgICAgICAgICB0aHJvdyAnQXR0ZW1wdGluZyB0byBjcmVhdGUgaXRlbSB3aXRoIG5vIGNvbnRlbnRUeXBlJztcbiAgICAgICAgfVxuICAgICAgICBjb25zdCBwYXlsb2FkID0gQ3JlYXRlTWF4UGF5bG9hZEZyb21BbnlPYmplY3Qoe1xuICAgICAgICAgICAgdXVpZDogYXdhaXQgVXVpZC5HZW5lcmF0ZVV1aWQoKSxcbiAgICAgICAgICAgIGNvbnRlbnRfdHlwZTogY29udGVudFR5cGUsXG4gICAgICAgICAgICBjb250ZW50OiBjb250ZW50ID8gRmlsbEl0ZW1Db250ZW50KGNvbnRlbnQpIDogdW5kZWZpbmVkLFxuICAgICAgICAgICAgZGlydHk6IG5lZWRzU3luY1xuICAgICAgICB9LCBvdmVycmlkZSk7XG4gICAgICAgIGF3YWl0IHRoaXMubW9kZWxNYW5hZ2VyLmVtaXRQYXlsb2FkKHBheWxvYWQsIFBheWxvYWRTb3VyY2UuQ29uc3RydWN0b3IpO1xuICAgICAgICByZXR1cm4gdGhpcy5maW5kSXRlbShwYXlsb2FkLnV1aWQpO1xuICAgIH1cbiAgICBhc3luYyBjcmVhdGVUZW1wbGF0ZUl0ZW0oY29udGVudFR5cGUsIGNvbnRlbnQpIHtcbiAgICAgICAgY29uc3QgcGF5bG9hZCA9IENyZWF0ZU1heFBheWxvYWRGcm9tQW55T2JqZWN0KHtcbiAgICAgICAgICAgIHV1aWQ6IGF3YWl0IFV1aWQuR2VuZXJhdGVVdWlkKCksXG4gICAgICAgICAgICBjb250ZW50X3R5cGU6IGNvbnRlbnRUeXBlLFxuICAgICAgICAgICAgY29udGVudDogRmlsbEl0ZW1Db250ZW50KGNvbnRlbnQgfHwge30pXG4gICAgICAgIH0pO1xuICAgICAgICByZXR1cm4gQ3JlYXRlSXRlbUZyb21QYXlsb2FkKHBheWxvYWQpO1xuICAgIH1cbiAgICBhc3luYyBlbWl0SXRlbUZyb21QYXlsb2FkKHBheWxvYWQsIHNvdXJjZSA9IFBheWxvYWRTb3VyY2UuQ29uc3RydWN0b3IpIHtcbiAgICAgICAgYXdhaXQgdGhpcy5tb2RlbE1hbmFnZXIuZW1pdFBheWxvYWQocGF5bG9hZCwgc291cmNlKTtcbiAgICAgICAgcmV0dXJuIHRoaXMuZmluZEl0ZW0ocGF5bG9hZC51dWlkKTtcbiAgICB9XG4gICAgYXN5bmMgZW1pdEl0ZW1zRnJvbVBheWxvYWRzKHBheWxvYWRzLCBzb3VyY2UgPSBQYXlsb2FkU291cmNlLkNvbnN0cnVjdG9yKSB7XG4gICAgICAgIGF3YWl0IHRoaXMubW9kZWxNYW5hZ2VyLmVtaXRQYXlsb2FkcyhwYXlsb2Fkcywgc291cmNlKTtcbiAgICAgICAgY29uc3QgdXVpZHMgPSBVdWlkcyhwYXlsb2Fkcyk7XG4gICAgICAgIHJldHVybiB0aGlzLmZpbmRJdGVtcyh1dWlkcyk7XG4gICAgfVxuICAgIC8qKlxuICAgICAqIE1hcmtzIHRoZSBpdGVtIGFzIGRlbGV0ZWQgYW5kIG5lZWRpbmcgc3luYy5cbiAgICAgKi9cbiAgICBhc3luYyBzZXRJdGVtVG9CZURlbGV0ZWQodXVpZCkge1xuICAgICAgICAvKiogQ2FwdHVyZSByZWZlcmVuY2luZyBpZHMgYmVmb3JlIHdlIGRlbGV0ZSB0aGUgaXRlbSBiZWxvdywgb3RoZXJ3aXNlXG4gICAgICAgICAqIHRoZSBpbmRleCBtYXkgYmUgdXBkYXRlZCBiZWZvcmUgd2UgZ2V0IGEgY2hhbmNlIHRvIGFjdCBvbiBpdCAqL1xuICAgICAgICBjb25zdCByZWZlcmVuY2luZ0lkcyA9IHRoaXMuY29sbGVjdGlvbi51dWlkc1RoYXRSZWZlcmVuY2VVdWlkKHV1aWQpO1xuICAgICAgICBjb25zdCBpdGVtID0gdGhpcy5maW5kSXRlbSh1dWlkKTtcbiAgICAgICAgY29uc3QgY2hhbmdlZEl0ZW0gPSBhd2FpdCB0aGlzLmNoYW5nZUl0ZW0odXVpZCwgKG11dGF0b3IpID0+IHtcbiAgICAgICAgICAgIG11dGF0b3Iuc2V0RGVsZXRlZCgpO1xuICAgICAgICB9KTtcbiAgICAgICAgLyoqIEhhbmRsZSBpbmRpcmVjdCByZWxhdGlvbnNoaXBzLlxuICAgICAgICAgKiAoRGlyZWN0IHJlbGF0aW9uc2hpcHMgYXJlIGNsZWFyZWQgYnkgY2xlYXJpbmcgY29udGVudCBhYm92ZSkgKi9cbiAgICAgICAgZm9yIChjb25zdCByZWZlcmVuY2luZ0lkIG9mIHJlZmVyZW5jaW5nSWRzKSB7XG4gICAgICAgICAgICBjb25zdCByZWZlcmVuY2luZ0l0ZW0gPSB0aGlzLmZpbmRJdGVtKHJlZmVyZW5jaW5nSWQpO1xuICAgICAgICAgICAgaWYgKHJlZmVyZW5jaW5nSXRlbSkge1xuICAgICAgICAgICAgICAgIGF3YWl0IHRoaXMuY2hhbmdlSXRlbShyZWZlcmVuY2luZ0l0ZW0udXVpZCwgKG11dGF0b3IpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgbXV0YXRvci5yZW1vdmVJdGVtQXNSZWxhdGlvbnNoaXAoaXRlbSk7XG4gICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIGNoYW5nZWRJdGVtO1xuICAgIH1cbiAgICAvKipcbiAgICAgKiBMaWtlIGBzZXRJdGVtVG9CZURlbGV0ZWRgLCBidXQgYWN0cyBvbiBhbiBhcnJheSBvZiBpdGVtcy5cbiAgICAgKi9cbiAgICBhc3luYyBzZXRJdGVtc1RvQmVEZWxldGVkKHV1aWRzKSB7XG4gICAgICAgIGNvbnN0IGNoYW5nZWRJdGVtcyA9IFtdO1xuICAgICAgICBmb3IgKGNvbnN0IHV1aWQgb2YgdXVpZHMpIHtcbiAgICAgICAgICAgIGNvbnN0IGNoYW5nZWRJdGVtID0gYXdhaXQgdGhpcy5zZXRJdGVtVG9CZURlbGV0ZWQodXVpZCk7XG4gICAgICAgICAgICBjaGFuZ2VkSXRlbXMucHVzaChjaGFuZ2VkSXRlbSk7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIGNoYW5nZWRJdGVtcztcbiAgICB9XG4gICAgLyoqXG4gICAgICogUmV0dXJucyBhbGwgaXRlbXMgb2YgYSBjZXJ0YWluIHR5cGVcbiAgICAgKiBAcGFyYW0gY29udGVudFR5cGUgLSBBIHN0cmluZyBvciBhcnJheSBvZiBzdHJpbmdzIHJlcHJlc2VudGluZ1xuICAgICAqICAgIGNvbnRlbnQgdHlwZXMuXG4gICAgICovXG4gICAgZ2V0SXRlbXMoY29udGVudFR5cGUpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuY29sbGVjdGlvbi5hbGwoY29udGVudFR5cGUpO1xuICAgIH1cbiAgICAvKipcbiAgICAgKiBSZXR1cm5zIGFsbCBpdGVtcyB3aGljaCBhcmUgcHJvcGVybHkgZGVjcnlwdGVkXG4gICAgICovXG4gICAgbm9uRXJyb3JlZEl0ZW1zRm9yQ29udGVudFR5cGUoY29udGVudFR5cGUpIHtcbiAgICAgICAgY29uc3QgaXRlbXMgPSB0aGlzLmNvbGxlY3Rpb24uYWxsKGNvbnRlbnRUeXBlKTtcbiAgICAgICAgcmV0dXJuIGl0ZW1zLmZpbHRlcigoaXRlbSkgPT4gIWl0ZW0uZXJyb3JEZWNyeXB0aW5nICYmICFpdGVtLndhaXRpbmdGb3JLZXkpO1xuICAgIH1cbiAgICAvKipcbiAgICAgKiBSZXR1cm5zIGFsbCBpdGVtcyBtYXRjaGluZyBhIGdpdmVuIHByZWRpY2F0ZVxuICAgICAqL1xuICAgIGl0ZW1zTWF0Y2hpbmdQcmVkaWNhdGUocHJlZGljYXRlKSB7XG4gICAgICAgIHJldHVybiB0aGlzLml0ZW1zTWF0Y2hpbmdQcmVkaWNhdGVzKFtwcmVkaWNhdGVdKTtcbiAgICB9XG4gICAgLyoqXG4gICAgKiBSZXR1cm5zIGFsbCBpdGVtcyBtYXRjaGluZyBhbiBhcnJheSBvZiBwcmVkaWNhdGVzXG4gICAgKi9cbiAgICBpdGVtc01hdGNoaW5nUHJlZGljYXRlcyhwcmVkaWNhdGVzKSB7XG4gICAgICAgIHJldHVybiB0aGlzLnN1Ykl0ZW1zTWF0Y2hpbmdQcmVkaWNhdGVzKHRoaXMuaXRlbXMsIHByZWRpY2F0ZXMpO1xuICAgIH1cbiAgICAvKipcbiAgICAgKiBQZXJmb3JtcyBhY3R1YWwgcHJlZGljYXRlIGZpbHRlcmluZyBmb3IgcHVibGljIG1ldGhvZHMgYWJvdmUuXG4gICAgICogRG9lcyBub3QgcmV0dXJuIGRlbGV0ZWQgaXRlbXMuXG4gICAgICovXG4gICAgc3ViSXRlbXNNYXRjaGluZ1ByZWRpY2F0ZXMoaXRlbXMsIHByZWRpY2F0ZXMpIHtcbiAgICAgICAgY29uc3QgcmVzdWx0cyA9IGl0ZW1zLmZpbHRlcigoaXRlbSkgPT4ge1xuICAgICAgICAgICAgaWYgKGl0ZW0uZGVsZXRlZCkge1xuICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGZvciAoY29uc3QgcHJlZGljYXRlIG9mIHByZWRpY2F0ZXMpIHtcbiAgICAgICAgICAgICAgICBpZiAoIWl0ZW0uc2F0aXNmaWVzUHJlZGljYXRlKHByZWRpY2F0ZSkpIHtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHJldHVybiB0cnVlO1xuICAgICAgICB9KTtcbiAgICAgICAgcmV0dXJuIHJlc3VsdHM7XG4gICAgfVxuICAgIC8qKlxuICAgICAqIEZpbmRzIHRoZSBmaXJzdCB0YWcgbWF0Y2hpbmcgYSBnaXZlbiB0aXRsZVxuICAgICAqL1xuICAgIGZpbmRUYWdCeVRpdGxlKHRpdGxlKSB7XG4gICAgICAgIHJldHVybiBzZWFyY2hBcnJheSh0aGlzLnRhZ3MsIHsgdGl0bGU6IHRpdGxlIH0pO1xuICAgIH1cbiAgICAvKipcbiAgICAqIEZpbmRzIG9yIGNyZWF0ZXMgYSB0YWcgd2l0aCBhIGdpdmVuIHRpdGxlXG4gICAgKi9cbiAgICBhc3luYyBmaW5kT3JDcmVhdGVUYWdCeVRpdGxlKHRpdGxlKSB7XG4gICAgICAgIGNvbnN0IHRhZyA9IHRoaXMuZmluZFRhZ0J5VGl0bGUodGl0bGUpO1xuICAgICAgICByZXR1cm4gdGFnIHx8IGF3YWl0IHRoaXMuY3JlYXRlSXRlbShDb250ZW50VHlwZS5UYWcsIEZpbGxJdGVtQ29udGVudCh7IHRpdGxlIH0pLCB0cnVlKTtcbiAgICB9XG4gICAgLyoqXG4gICAgICogUmV0dXJucyBhbGwgbm90ZXMgbWF0Y2hpbmcgdGhlIHNtYXJ0IHRhZ1xuICAgICAqL1xuICAgIG5vdGVzTWF0Y2hpbmdTbWFydFRhZyhzbWFydFRhZykge1xuICAgICAgICBjb25zdCBjb250ZW50VHlwZVByZWRpY2F0ZSA9IG5ldyBTTlByZWRpY2F0ZSgnY29udGVudF90eXBlJywgJz0nLCBDb250ZW50VHlwZS5Ob3RlKTtcbiAgICAgICAgY29uc3QgcHJlZGljYXRlcyA9IFtjb250ZW50VHlwZVByZWRpY2F0ZSwgc21hcnRUYWcucHJlZGljYXRlXTtcbiAgICAgICAgaWYgKCFzbWFydFRhZy5pc1RyYXNoVGFnKSB7XG4gICAgICAgICAgICBjb25zdCBub3RUcmFzaGVkUHJlZGljYXRlID0gbmV3IFNOUHJlZGljYXRlKCdjb250ZW50LnRyYXNoZWQnLCAnPScsIGZhbHNlKTtcbiAgICAgICAgICAgIHByZWRpY2F0ZXMucHVzaChub3RUcmFzaGVkUHJlZGljYXRlKTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gdGhpcy5pdGVtc01hdGNoaW5nUHJlZGljYXRlcyhwcmVkaWNhdGVzKTtcbiAgICB9XG4gICAgLyoqXG4gICAgICogUmV0dXJucyB0aGUgc21hcnQgdGFnIGNvcnJlc3BvbmRpbmcgdG8gdGhlIFwiVHJhc2hcIiB0YWcuXG4gICAgICovXG4gICAgZ2V0IHRyYXNoU21hcnRUYWcoKSB7XG4gICAgICAgIHJldHVybiB0aGlzLnN5c3RlbVNtYXJ0VGFncy5maW5kKCh0YWcpID0+IHRhZy5pc1RyYXNoVGFnKTtcbiAgICB9XG4gICAgLyoqXG4gICAgICogUmV0dXJucyBhbGwgaXRlbXMgY3VycmVudGx5IGluIHRoZSB0cmFzaFxuICAgICAqL1xuICAgIGdldCB0cmFzaGVkSXRlbXMoKSB7XG4gICAgICAgIHJldHVybiB0aGlzLm5vdGVzTWF0Y2hpbmdTbWFydFRhZyh0aGlzLnRyYXNoU21hcnRUYWcpO1xuICAgIH1cbiAgICAvKipcbiAgICAgKiBQZXJtYW5lbnRseSBkZWxldGVzIGFueSBpdGVtcyBjdXJyZW50bHkgaW4gdGhlIHRyYXNoLiBDb25zdW1lciBtdXN0IG1hbnVhbGx5IGNhbGwgc3luYy5cbiAgICAgKi9cbiAgICBhc3luYyBlbXB0eVRyYXNoKCkge1xuICAgICAgICBjb25zdCBub3RlcyA9IHRoaXMudHJhc2hlZEl0ZW1zO1xuICAgICAgICByZXR1cm4gdGhpcy5zZXRJdGVtc1RvQmVEZWxldGVkKFV1aWRzKG5vdGVzKSk7XG4gICAgfVxuICAgIC8qKlxuICAgICAqIFJldHVybnMgYWxsIHNtYXJ0IHRhZ3MsIHNvcnRlZCBieSB0aXRsZS5cbiAgICAgKi9cbiAgICBnZXRTbWFydFRhZ3MoKSB7XG4gICAgICAgIGNvbnN0IHVzZXJUYWdzID0gdGhpcy5jb2xsZWN0aW9uLmRpc3BsYXlFbGVtZW50cyhDb250ZW50VHlwZS5TbWFydFRhZyk7XG4gICAgICAgIHJldHVybiB0aGlzLnN5c3RlbVNtYXJ0VGFncy5jb25jYXQodXNlclRhZ3MpO1xuICAgIH1cbiAgICAvKipcbiAgICAgKiBUaGUgbnVtYmVyIG9mIG5vdGVzIGN1cnJlbnRseSBtYW5hZ2VkXG4gICAgICovXG4gICAgZ2V0IG5vdGVDb3VudCgpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuY29sbGVjdGlvbi5hbGwoQ29udGVudFR5cGUuTm90ZSkubGVuZ3RoO1xuICAgIH1cbiAgICAvKipcbiAgICAgKiBJbW1lZGlhdGVseSByZW1vdmVzIGFsbCBpdGVtcyBmcm9tIG1hcHBpbmcgc3RhdGUgYW5kIG5vdGlmaWVzIG9ic2VydmVyc1xuICAgICAqIFVzZWQgcHJpbWFyaWx5IHdoZW4gc2lnbmluZyBpbnRvIGFuIGFjY291bnQgYW5kIHdhbnRpbmcgdG8gZGlzY2FyZCBhbnkgY3VycmVudFxuICAgICAqIGxvY2FsIGRhdGEuXG4gICAgICovXG4gICAgYXN5bmMgcmVtb3ZlQWxsSXRlbXNGcm9tTWVtb3J5KCkge1xuICAgICAgICBjb25zdCB1dWlkcyA9IFV1aWRzKHRoaXMuaXRlbXMpO1xuICAgICAgICAvKiogV2UgZG9uJ3Qgd2FudCB0byBzZXQgYXMgZGlydHksIHNpbmNlIHdlIHdhbnQgdG8gZGlzcG9zZSBvZiBpbW1lZGlhdGVseS4gKi9cbiAgICAgICAgYXdhaXQgdGhpcy5jaGFuZ2VJdGVtcyh1dWlkcywgKG11dGF0b3IpID0+IHtcbiAgICAgICAgICAgIG11dGF0b3Iuc2V0RGVsZXRlZCgpO1xuICAgICAgICB9LCBNdXRhdGlvblR5cGUuTm9uRGlydHlpbmcpO1xuICAgICAgICB0aGlzLnJlc2V0U3RhdGUoKTtcbiAgICAgICAgdGhpcy5tb2RlbE1hbmFnZXIucmVzZXRTdGF0ZSgpO1xuICAgIH1cbiAgICByZW1vdmVJdGVtTG9jYWxseShpdGVtKSB7XG4gICAgICAgIHRoaXMuY29sbGVjdGlvbi5kaXNjYXJkKGl0ZW0pO1xuICAgICAgICB0aGlzLm1vZGVsTWFuYWdlci5yZW1vdmVQYXlsb2FkTG9jYWxseShpdGVtLnBheWxvYWQpO1xuICAgIH1cbn1cbmNvbnN0IFNZU1RFTV9UQUdfQUxMX05PVEVTID0gJ2FsbC1ub3Rlcyc7XG5jb25zdCBTWVNURU1fVEFHX0FSQ0hJVkVEX05PVEVTID0gJ2FyY2hpdmVkLW5vdGVzJztcbmNvbnN0IFNZU1RFTV9UQUdfVFJBU0hFRF9OT1RFUyA9ICd0cmFzaGVkLW5vdGVzJztcbmZ1bmN0aW9uIEJ1aWxkU21hcnRUYWdzKCkge1xuICAgIGNvbnN0IGFsbE5vdGVzID0gQ3JlYXRlTWF4UGF5bG9hZEZyb21BbnlPYmplY3Qoe1xuICAgICAgICB1dWlkOiBTWVNURU1fVEFHX0FMTF9OT1RFUyxcbiAgICAgICAgY29udGVudF90eXBlOiBDb250ZW50VHlwZS5TbWFydFRhZyxcbiAgICAgICAgY29udGVudDogRmlsbEl0ZW1Db250ZW50KHtcbiAgICAgICAgICAgIHRpdGxlOiAnQWxsIG5vdGVzJyxcbiAgICAgICAgICAgIGlzU3lzdGVtVGFnOiB0cnVlLFxuICAgICAgICAgICAgaXNBbGxUYWc6IHRydWUsXG4gICAgICAgICAgICBwcmVkaWNhdGU6IFNOUHJlZGljYXRlLkZyb21BcnJheShbJ2NvbnRlbnRfdHlwZScsICc9JywgQ29udGVudFR5cGUuTm90ZV0pXG4gICAgICAgIH0pXG4gICAgfSk7XG4gICAgY29uc3QgYXJjaGl2ZWQgPSBDcmVhdGVNYXhQYXlsb2FkRnJvbUFueU9iamVjdCh7XG4gICAgICAgIHV1aWQ6IFNZU1RFTV9UQUdfQVJDSElWRURfTk9URVMsXG4gICAgICAgIGNvbnRlbnRfdHlwZTogQ29udGVudFR5cGUuU21hcnRUYWcsXG4gICAgICAgIGNvbnRlbnQ6IEZpbGxJdGVtQ29udGVudCh7XG4gICAgICAgICAgICB0aXRsZTogJ0FyY2hpdmVkJyxcbiAgICAgICAgICAgIGlzU3lzdGVtVGFnOiB0cnVlLFxuICAgICAgICAgICAgaXNBcmNoaXZlVGFnOiB0cnVlLFxuICAgICAgICAgICAgcHJlZGljYXRlOiBTTlByZWRpY2F0ZS5Gcm9tQXJyYXkoWydhcmNoaXZlZCcsICc9JywgSlNPTi5zdHJpbmdpZnkodHJ1ZSldKVxuICAgICAgICB9KVxuICAgIH0pO1xuICAgIGNvbnN0IHRyYXNoID0gQ3JlYXRlTWF4UGF5bG9hZEZyb21BbnlPYmplY3Qoe1xuICAgICAgICB1dWlkOiBTWVNURU1fVEFHX1RSQVNIRURfTk9URVMsXG4gICAgICAgIGNvbnRlbnRfdHlwZTogQ29udGVudFR5cGUuU21hcnRUYWcsXG4gICAgICAgIGNvbnRlbnQ6IEZpbGxJdGVtQ29udGVudCh7XG4gICAgICAgICAgICB0aXRsZTogJ1RyYXNoJyxcbiAgICAgICAgICAgIGlzU3lzdGVtVGFnOiB0cnVlLFxuICAgICAgICAgICAgaXNUcmFzaFRhZzogdHJ1ZSxcbiAgICAgICAgICAgIHByZWRpY2F0ZTogU05QcmVkaWNhdGUuRnJvbUFycmF5KFsndHJhc2hlZCcsICc9JywgSlNPTi5zdHJpbmdpZnkodHJ1ZSldKVxuICAgICAgICB9KVxuICAgIH0pO1xuICAgIHJldHVybiBbXG4gICAgICAgIENyZWF0ZUl0ZW1Gcm9tUGF5bG9hZChhbGxOb3RlcyksXG4gICAgICAgIENyZWF0ZUl0ZW1Gcm9tUGF5bG9hZChhcmNoaXZlZCksXG4gICAgICAgIENyZWF0ZUl0ZW1Gcm9tUGF5bG9hZCh0cmFzaClcbiAgICBdO1xufVxuIl0sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7Ozs7Ozs7Ozs7O0FBVUE7QUFBQTtBQUNBO0FBQUE7QUFBQTtBQUNBO0FBREE7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUFBO0FBRUE7QUFQQTtBQVFBO0FBQ0E7QUFWQTtBQUFBO0FBQUE7QUFXQTtBQUNBO0FBWkE7QUFBQTtBQUFBO0FBY0E7QUFDQTtBQWZBO0FBQUE7QUFBQTtBQWlCQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBckJBO0FBQUE7QUFBQTtBQXVCQTtBQUNBO0FBeEJBO0FBQUE7QUFBQTtBQTBCQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOzs7O0FBakNBO0FBQUE7QUFBQTtBQXFDQTtBQUNBO0FBQ0E7Ozs7OztBQXZDQTtBQUFBO0FBQUE7QUE0Q0E7QUFDQTtBQUNBO0FBQ0E7Ozs7QUEvQ0E7QUFBQTtBQUNBO0FBZ0VBOzs7QUFqRUE7QUFxRUE7QUFDQTtBQUNBOzs7O0FBdkVBO0FBQUE7QUFBQTtBQXlGQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFGQTtBQUlBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7OztBQXRHQTtBQUFBO0FBQUE7QUEwR0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTs7OztBQWhIQTtBQUFBO0FBQUE7QUFvSEE7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQUE7QUFBQTtBQUNBO0FBQ0E7QUExSEE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQ0E7QUFEQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUNBO0FBREE7QUFBQTtBQUFBO0FBQ0E7QUFEQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUNBO0FBREE7QUFBQTtBQUFBO0FBQUE7QUErSEE7QUFBQTtBQUFBO0FBQ0E7QUFBQTtBQUFBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFBQTtBQUFBO0FBcklBO0FBQUE7QUFBQTtBQUFBO0FBQ0E7QUFxSUE7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQXpJQTtBQUFBO0FBQ0E7QUFEQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQ0E7QUFEQTtBQUFBO0FBQUE7QUFDQTtBQURBO0FBQUE7QUFBQTtBQUNBO0FBREE7QUFBQTtBQUNBO0FBREE7QUFBQTtBQUFBO0FBQUE7QUFDQTtBQURBO0FBQ0E7QUFEQTtBQUFBO0FBQ0E7QUFEQTtBQUFBO0FBQ0E7QUFEQTtBQUFBO0FBQUE7QUFDQTtBQURBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQ0E7QUFEQTtBQUFBO0FBQUE7QUFDQTtBQURBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQ0E7QUFEQTtBQUFBO0FBQUE7QUFBQTtBQTRJQTtBQUNBO0FBQ0E7QUFFQTtBQUNBO0FBQ0E7QUFBQTtBQWxKQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQ0E7QUFEQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQ0E7QUFrSkE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQXZKQTtBQUFBO0FBQUE7QUFBQTtBQUNBO0FBREE7QUFDQTtBQURBO0FBQUE7QUFBQTtBQUNBO0FBREE7QUFBQTtBQUFBO0FBQUE7QUFDQTtBQURBO0FBQUE7QUFBQTtBQUNBO0FBREE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUNBO0FBREE7QUFBQTtBQUFBO0FBQ0E7QUFEQTtBQUFBO0FBQUE7QUFDQTtBQURBO0FBQUE7QUFDQTtBQURBO0FBQUE7QUFBQTtBQUFBO0FBQ0E7QUFEQTtBQUNBO0FBREE7QUFBQTtBQUNBO0FBREE7QUFBQTtBQUNBO0FBREE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFDQTtBQURBO0FBQUE7QUFBQTtBQUNBO0FBREE7QUFBQTtBQStKQTs7Ozs7Ozs7OztBQS9KQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQXdLQTtBQUFBO0FBQUE7QUFDQTtBQXpLQTtBQUFBO0FBQUE7QUFBQTtBQUNBO0FBREE7QUFDQTtBQURBO0FBQUE7QUFBQTtBQUNBO0FBREE7QUE0S0E7QUE1S0E7QUFDQTtBQURBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQ0E7QUFEQTtBQUFBO0FBQUE7QUFDQTtBQURBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFnTEE7QUFDQTtBQUNBO0FBRUE7QUFDQTtBQUVBO0FBQ0E7QUFFQTtBQUNBO0FBRUE7QUFDQTtBQUVBO0FBQ0E7QUFFQTtBQUNBO0FBRUE7QUFDQTtBQUNBO0FBQ0E7Ozs7QUF6TUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFDQTtBQURBO0FBQUE7QUFBQTtBQUFBO0FBNE1BO0FBQUE7QUFBQTtBQUNBO0FBQ0E7QUE5TUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUNBO0FBREE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUNBO0FBOE1BO0FBQ0E7QUFoTkE7QUFBQTtBQUFBO0FBQUE7QUFDQTtBQURBO0FBQ0E7QUFEQTtBQW1OQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUF6TkE7QUFBQTtBQUFBO0FBQUE7QUFDQTtBQURBO0FBQUE7QUFBQTtBQUNBO0FBREE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUNBO0FBREE7QUFBQTtBQUFBO0FBQ0E7QUFEQTtBQUFBO0FBQUE7QUFDQTtBQURBO0FBQUE7QUFDQTtBQURBO0FBQUE7QUFBQTtBQUFBO0FBQ0E7QUFEQTtBQUNBO0FBREE7QUFBQTtBQUNBO0FBREE7QUFBQTtBQUNBO0FBREE7QUFBQTtBQUFBO0FBQ0E7QUFEQTtBQTJOQTtBQUFBO0FBQUE7QUEzTkE7QUFDQTtBQURBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQ0E7QUFEQTtBQUFBO0FBQUE7QUFDQTtBQURBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBOE5BO0FBQUE7QUFBQTtBQUNBO0FBQ0E7QUFoT0E7QUFBQTtBQUFBO0FBQUE7QUFDQTtBQURBO0FBQ0E7QUFEQTtBQW1PQTtBQW5PQTtBQUNBO0FBREE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFDQTtBQURBO0FBQUE7QUFBQTtBQUNBO0FBREE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFzT0E7QUFBQTtBQUFBO0FBQ0E7QUFDQTtBQXhPQTtBQUFBO0FBQUE7QUFBQTtBQUNBO0FBREE7QUFDQTtBQURBO0FBMk9BO0FBM09BO0FBQ0E7QUFEQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUNBO0FBREE7QUFBQTtBQUFBO0FBQ0E7QUFEQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQThPQTtBQUFBO0FBQUE7QUFDQTtBQUNBO0FBaFBBO0FBQUE7QUFBQTtBQUFBO0FBQ0E7QUFEQTtBQUNBO0FBREE7QUFtUEE7QUFuUEE7QUFDQTtBQURBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQ0E7QUFEQTtBQUFBO0FBQUE7QUFDQTtBQURBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBc1BBO0FBQUE7QUFBQTtBQUNBO0FBQ0E7QUF4UEE7QUFBQTtBQUFBO0FBQUE7QUFDQTtBQURBO0FBQ0E7QUFEQTtBQTJQQTtBQTNQQTtBQUNBO0FBREE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFDQTtBQURBO0FBQUE7QUFBQTtBQUNBO0FBREE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQThQQTtBQUFBO0FBQ0E7QUFDQTtBQWhRQTtBQUNBO0FBREE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFDQTtBQURBO0FBQUE7QUFBQTtBQUNBO0FBREE7QUFBQTtBQW1RQTs7Ozs7O0FBblFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUF3UUE7QUFDQTtBQXpRQTtBQUFBO0FBQUE7QUFBQTtBQUNBO0FBREE7QUFDQTtBQURBO0FBQUE7QUFBQTtBQUNBO0FBREE7QUE0UUE7QUE1UUE7QUFDQTtBQURBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQ0E7QUFEQTtBQUFBO0FBQUE7QUFDQTtBQURBO0FBQUE7QUErUUE7Ozs7QUEvUUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFrUkE7QUFDQTtBQW5SQTtBQUFBO0FBQUE7QUFBQTtBQUNBO0FBREE7QUFDQTtBQURBO0FBQUE7QUFDQTtBQURBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQ0E7QUFEQTtBQUFBO0FBQUE7QUFDQTtBQURBO0FBQUE7QUF3UkE7Ozs7QUF4UkE7QUFBQTtBQUFBO0FBNFJBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7Ozs7O0FBblNBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQXlTQTtBQXpTQTtBQUFBO0FBQ0E7QUFEQTtBQTBTQTtBQTFTQTtBQUNBO0FBREE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFDQTtBQURBO0FBQUE7QUFBQTtBQUNBO0FBREE7QUFBQTtBQTZTQTs7Ozs7QUE3U0E7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQWlUQTtBQUNBO0FBQ0E7QUFuVEE7QUFBQTtBQUNBO0FBREE7QUFvVEE7QUFwVEE7QUFBQTtBQUNBO0FBREE7QUFzVEE7QUF0VEE7QUFDQTtBQURBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQ0E7QUFEQTtBQUFBO0FBQUE7QUFDQTtBQURBO0FBQUE7QUF5VEE7Ozs7O0FBelRBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQTZUQTtBQUFBO0FBQ0E7QUE5VEE7QUFBQTtBQUFBO0FBQUE7QUFDQTtBQURBO0FBQ0E7QUFEQTtBQUFBO0FBQUE7QUFBQTtBQUNBO0FBREE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBa1VBO0FBQ0E7QUFDQTtBQUNBO0FBclVBO0FBQUE7QUFpVUE7QUFqVUE7QUFBQTtBQUNBO0FBREE7QUFBQTtBQUNBO0FBREE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFDQTtBQURBO0FBQUE7QUFBQTtBQUNBO0FBREE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUNBO0FBREE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQTRVQTtBQUNBO0FBQ0E7QUE5VUE7QUEyVUE7QUEzVUE7QUFDQTtBQURBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQ0E7QUFEQTtBQUFBO0FBQUE7QUFDQTtBQURBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQWtWQTtBQWxWQTtBQUFBO0FBQ0E7QUFEQTtBQUFBO0FBQ0E7QUFEQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUNBO0FBREE7QUFBQTtBQUFBO0FBQ0E7QUFEQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQXNWQTtBQXRWQTtBQUFBO0FBQ0E7QUFEQTtBQXdWQTtBQXhWQTtBQUNBO0FBREE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFDQTtBQURBO0FBQUE7QUFBQTtBQUNBO0FBREE7QUFBQTtBQTJWQTs7OztBQTNWQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQ0E7QUFEQTtBQUFBO0FBQUE7QUFBQTtBQStWQTs7QUFFQTtBQUNBO0FBbFdBO0FBQUE7QUFvV0E7QUFDQTtBQUNBO0FBdFdBO0FBbVdBO0FBQ0E7QUFFQTs7QUF0V0E7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUNBO0FBREE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUNBO0FBdVdBO0FBQ0E7QUFDQTtBQTFXQTtBQUFBO0FBQUE7QUFBQTtBQUNBO0FBREE7QUFBQTtBQTRXQTtBQUNBO0FBQ0E7QUE5V0E7QUFBQTtBQUFBO0FBQUE7QUFDQTtBQURBO0FBQUE7QUFBQTtBQUNBO0FBREE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUNBO0FBREE7QUFBQTtBQUFBO0FBQ0E7QUFEQTtBQUFBO0FBQUE7QUFDQTtBQURBO0FBQUE7QUFDQTtBQURBO0FBQUE7QUFBQTtBQUFBO0FBQ0E7QUFEQTtBQUNBO0FBREE7QUFBQTtBQUNBO0FBREE7QUFBQTtBQUNBO0FBREE7QUFBQTtBQUNBO0FBREE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFDQTtBQURBO0FBQUE7QUFBQTtBQUNBO0FBREE7QUFBQTtBQWtYQTs7OztBQWxYQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQ0E7QUFEQTtBQUFBO0FBQUE7QUFBQTtBQXNYQTtBQXRYQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQ0E7QUFEQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQ0E7QUFzWEE7QUF2WEE7QUFBQTtBQUNBO0FBREE7QUF3WEE7QUFDQTtBQUNBO0FBMVhBO0FBQUE7QUFBQTtBQUFBO0FBQ0E7QUFEQTtBQUFBO0FBQUE7QUFDQTtBQURBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFDQTtBQURBO0FBQUE7QUFBQTtBQUNBO0FBREE7QUFBQTtBQUFBO0FBQ0E7QUFEQTtBQUFBO0FBQ0E7QUFEQTtBQUFBO0FBQUE7QUFBQTtBQUNBO0FBREE7QUFDQTtBQURBO0FBQUE7QUFDQTtBQURBO0FBQUE7QUFDQTtBQURBO0FBQUE7QUFDQTtBQURBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQ0E7QUFEQTtBQUFBO0FBQUE7QUFDQTtBQURBO0FBQUE7QUE2WEE7Ozs7OztBQTdYQTtBQUFBO0FBQUE7QUFtWUE7QUFDQTtBQUNBOzs7O0FBcllBO0FBQUE7QUFBQTtBQXlZQTtBQUNBO0FBQUE7QUFBQTtBQUNBO0FBQ0E7Ozs7QUE1WUE7QUFBQTtBQUFBO0FBZ1pBO0FBQ0E7QUFDQTs7OztBQWxaQTtBQUFBO0FBQUE7QUFzWkE7QUFDQTtBQUNBOzs7OztBQXhaQTtBQUFBO0FBQUE7QUE2WkE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUpBO0FBQUE7QUFBQTtBQUNBO0FBREE7QUFJQTtBQUFBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQVJBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFDQTtBQVFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7Ozs7QUExYUE7QUFBQTtBQUFBO0FBOGFBO0FBQUE7QUFBQTtBQUNBO0FBQ0E7Ozs7QUFoYkE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBb2JBO0FBcGJBO0FBQ0E7QUFEQTtBQUFBO0FBQUE7QUFBQTtBQUNBO0FBREE7QUFBQTtBQXFiQTtBQUFBO0FBQ0E7QUF0YkE7QUFBQTtBQUNBO0FBREE7QUFBQTtBQUNBO0FBREE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFDQTtBQURBO0FBQUE7QUFBQTtBQUNBO0FBREE7QUFBQTtBQXViQTs7OztBQXZiQTtBQUFBO0FBQUE7QUEyYkE7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTs7OztBQW5jQTtBQUFBO0FBQ0E7QUE4Y0E7OztBQS9jQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQW1kQTtBQW5kQTtBQUNBO0FBREE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFDQTtBQURBO0FBQUE7QUFBQTtBQUNBO0FBREE7QUFBQTtBQXNkQTs7OztBQXRkQTtBQUFBO0FBQUE7QUEwZEE7QUFDQTtBQUNBO0FBQ0E7Ozs7QUE3ZEE7QUFBQTtBQUNBO0FBa2VBOzs7OztBQW5lQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQXllQTtBQUNBO0FBQ0E7QUEzZUE7QUFBQTtBQTRlQTtBQUNBO0FBQ0E7QUE5ZUE7QUE4ZUE7QUFDQTtBQUNBO0FBaGZBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQ0E7QUFEQTtBQUFBO0FBQUE7QUFDQTtBQURBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFrZkE7QUFDQTtBQUNBO0FBcGZBO0FBQUE7QUFBQTtBQW1EQTtBQUNBO0FBQ0E7Ozs7QUFyREE7QUFBQTtBQUFBO0FBeURBO0FBQ0E7QUFDQTs7OztBQTNEQTtBQUFBO0FBQUE7QUErREE7QUFDQTtBQWhFQTtBQUFBO0FBQUE7QUEyRUE7QUFDQTtBQUNBOzs7O0FBN0VBO0FBQUE7QUFBQTtBQWlGQTtBQUNBO0FBQ0E7Ozs7QUFuRkE7QUFBQTtBQUFBO0FBdUZBO0FBQ0E7QUF4RkE7QUFBQTtBQUFBO0FBdWNBO0FBQUE7QUFBQTtBQUNBO0FBQ0E7Ozs7QUF6Y0E7QUFBQTtBQUFBO0FBNmNBO0FBQ0E7QUE5Y0E7QUFBQTtBQUFBO0FBaWVBO0FBQ0E7QUFsZUE7QUFDQTtBQURBO0FBQUE7QUFzZkE7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFKQTtBQUhBO0FBVUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUpBO0FBSEE7QUFVQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBSkE7QUFIQTtBQVVBO0FBS0EiLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./lib/services/item_manager.ts\n')},"./lib/services/migration_service.ts":
|
||
/*!*******************************************!*\
|
||
!*** ./lib/services/migration_service.ts ***!
|
||
\*******************************************/
|
||
/*! exports provided: SNMigrationService */function(module,__webpack_exports__,__webpack_require__){"use strict";eval('__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "SNMigrationService", function() { return SNMigrationService; });\n/* harmony import */ var _babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @babel/runtime/regenerator */ "./node_modules/@babel/runtime/regenerator/index.js");\n/* harmony import */ var _babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var _events__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./../events */ "./lib/events.ts");\n/* harmony import */ var _Lib_stages__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! @Lib/stages */ "./lib/stages.ts");\n/* harmony import */ var _Lib_migrations__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! @Lib/migrations */ "./lib/migrations/index.ts");\n/* harmony import */ var _Lib_migrations_2020_01_01_base__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! @Lib/migrations/2020-01-01-base */ "./lib/migrations/2020-01-01-base.ts");\n/* harmony import */ var _Services_pure_service__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! @Services/pure_service */ "./lib/services/pure_service.ts");\n/* harmony import */ var _Lib_storage_keys__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! @Lib/storage_keys */ "./lib/storage_keys.ts");\n/* harmony import */ var _Lib_utils__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! @Lib/utils */ "./lib/utils.ts");\n\n\nfunction _typeof(obj) { "@babel/helpers - typeof"; if (typeof Symbol === "function" && typeof Symbol.iterator === "symbol") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }; } return _typeof(obj); }\n\nfunction asyncGeneratorStep(gen, resolve, reject, _next, _throw, key, arg) { try { var info = gen[key](arg); var value = info.value; } catch (error) { reject(error); return; } if (info.done) { resolve(value); } else { Promise.resolve(value).then(_next, _throw); } }\n\nfunction _asyncToGenerator(fn) { return function () { var self = this, args = arguments; return new Promise(function (resolve, reject) { var gen = fn.apply(self, args); function _next(value) { asyncGeneratorStep(gen, resolve, reject, _next, _throw, "next", value); } function _throw(err) { asyncGeneratorStep(gen, resolve, reject, _next, _throw, "throw", err); } _next(undefined); }); }; }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } }\n\nfunction _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); } }\n\nfunction _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; }\n\nfunction _possibleConstructorReturn(self, call) { if (call && (_typeof(call) === "object" || typeof call === "function")) { return call; } return _assertThisInitialized(self); }\n\nfunction _assertThisInitialized(self) { if (self === void 0) { throw new ReferenceError("this hasn\'t been initialised - super() hasn\'t been called"); } return self; }\n\nfunction _get(target, property, receiver) { if (typeof Reflect !== "undefined" && Reflect.get) { _get = Reflect.get; } else { _get = function _get(target, property, receiver) { var base = _superPropBase(target, property); if (!base) return; var desc = Object.getOwnPropertyDescriptor(base, property); if (desc.get) { return desc.get.call(receiver); } return desc.value; }; } return _get(target, property, receiver || target); }\n\nfunction _superPropBase(object, property) { while (!Object.prototype.hasOwnProperty.call(object, property)) { object = _getPrototypeOf(object); if (object === null) break; } return object; }\n\nfunction _getPrototypeOf(o) { _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function _getPrototypeOf(o) { return o.__proto__ || Object.getPrototypeOf(o); }; return _getPrototypeOf(o); }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== "function" && superClass !== null) { throw new TypeError("Super expression must either be null or a function"); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, writable: true, configurable: true } }); if (superClass) _setPrototypeOf(subClass, superClass); }\n\nfunction _setPrototypeOf(o, p) { _setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) { o.__proto__ = p; return o; }; return _setPrototypeOf(o, p); }\n\n\n\n\n\n\n\n\n/**\n * The migration service orchestrates the execution of multi-stage migrations.\n * Migrations are registered during initial application launch, and listen for application\n * life-cycle events, and act accordingly. For example, a single migration may perform\n * a unique set of steps when the application first launches, and also other steps after the\n * application is unlocked, or after the first sync completes. Migrations live under /migrations\n * and inherit from the base Migration class.\n */\n\nvar SNMigrationService = /*#__PURE__*/function (_PureService) {\n _inherits(SNMigrationService, _PureService);\n\n function SNMigrationService(services) {\n var _this;\n\n _classCallCheck(this, SNMigrationService);\n\n _this = _possibleConstructorReturn(this, _getPrototypeOf(SNMigrationService).call(this));\n _this.services = services;\n _this.handledFullSyncStage = false;\n return _this;\n }\n\n _createClass(SNMigrationService, [{\n key: "deinit",\n value: function deinit() {\n this.services = undefined;\n\n if (this.activeMigrations) {\n this.activeMigrations.length = 0;\n }\n\n _get(_getPrototypeOf(SNMigrationService.prototype), "deinit", this).call(this);\n }\n }, {\n key: "initialize",\n value: function () {\n var _initialize = _asyncToGenerator( /*#__PURE__*/_babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0___default.a.mark(function _callee2() {\n var _this2 = this;\n\n var lastMigration;\n return _babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0___default.a.wrap(function _callee2$(_context2) {\n while (1) {\n switch (_context2.prev = _context2.next) {\n case 0:\n _context2.next = 2;\n return this.runBaseMigration();\n\n case 2:\n _context2.next = 4;\n return this.getRequiredMigrations();\n\n case 4:\n this.activeMigrations = _context2.sent;\n\n if (this.activeMigrations.length > 0) {\n lastMigration = Object(_Lib_utils__WEBPACK_IMPORTED_MODULE_7__["lastElement"])(this.activeMigrations);\n lastMigration.onDone( /*#__PURE__*/_asyncToGenerator( /*#__PURE__*/_babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0___default.a.mark(function _callee() {\n return _babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0___default.a.wrap(function _callee$(_context) {\n while (1) {\n switch (_context.prev = _context.next) {\n case 0:\n _context.next = 2;\n return _this2.saveLastMigrationTimestamp(lastMigration.constructor.timestamp());\n\n case 2:\n case "end":\n return _context.stop();\n }\n }\n }, _callee);\n })));\n }\n\n case 6:\n case "end":\n return _context2.stop();\n }\n }\n }, _callee2, this);\n }));\n\n function initialize() {\n return _initialize.apply(this, arguments);\n }\n\n return initialize;\n }()\n /**\n * Application instances will call this function directly when they arrive\n * at a certain migratory state.\n */\n\n }, {\n key: "handleApplicationStage",\n value: function () {\n var _handleApplicationStage = _asyncToGenerator( /*#__PURE__*/_babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0___default.a.mark(function _callee3(stage) {\n return _babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0___default.a.wrap(function _callee3$(_context3) {\n while (1) {\n switch (_context3.prev = _context3.next) {\n case 0:\n _context3.next = 2;\n return _get(_getPrototypeOf(SNMigrationService.prototype), "handleApplicationStage", this).call(this, stage);\n\n case 2:\n _context3.next = 4;\n return this.handleStage(stage);\n\n case 4:\n case "end":\n return _context3.stop();\n }\n }\n }, _callee3, this);\n }));\n\n function handleApplicationStage(_x) {\n return _handleApplicationStage.apply(this, arguments);\n }\n\n return handleApplicationStage;\n }()\n /**\n * Called by application\n */\n\n }, {\n key: "handleApplicationEvent",\n value: function () {\n var _handleApplicationEvent = _asyncToGenerator( /*#__PURE__*/_babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0___default.a.mark(function _callee4(event) {\n return _babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0___default.a.wrap(function _callee4$(_context4) {\n while (1) {\n switch (_context4.prev = _context4.next) {\n case 0:\n if (!(event === _events__WEBPACK_IMPORTED_MODULE_1__["ApplicationEvent"].SignedIn)) {\n _context4.next = 5;\n break;\n }\n\n _context4.next = 3;\n return this.handleStage(_Lib_stages__WEBPACK_IMPORTED_MODULE_2__["ApplicationStage"].SignedIn_30);\n\n case 3:\n _context4.next = 10;\n break;\n\n case 5:\n if (!(event === _events__WEBPACK_IMPORTED_MODULE_1__["ApplicationEvent"].CompletedFullSync)) {\n _context4.next = 10;\n break;\n }\n\n if (this.handledFullSyncStage) {\n _context4.next = 10;\n break;\n }\n\n this.handledFullSyncStage = true;\n _context4.next = 10;\n return this.handleStage(_Lib_stages__WEBPACK_IMPORTED_MODULE_2__["ApplicationStage"].FullSyncCompleted_13);\n\n case 10:\n case "end":\n return _context4.stop();\n }\n }\n }, _callee4, this);\n }));\n\n function handleApplicationEvent(_x2) {\n return _handleApplicationEvent.apply(this, arguments);\n }\n\n return handleApplicationEvent;\n }()\n }, {\n key: "runBaseMigration",\n value: function () {\n var _runBaseMigration = _asyncToGenerator( /*#__PURE__*/_babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0___default.a.mark(function _callee5() {\n var baseMigration;\n return _babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0___default.a.wrap(function _callee5$(_context5) {\n while (1) {\n switch (_context5.prev = _context5.next) {\n case 0:\n baseMigration = new _Lib_migrations_2020_01_01_base__WEBPACK_IMPORTED_MODULE_4__["BaseMigration"](this.services);\n _context5.next = 3;\n return baseMigration.handleStage(_Lib_stages__WEBPACK_IMPORTED_MODULE_2__["ApplicationStage"].PreparingForLaunch_0);\n\n case 3:\n case "end":\n return _context5.stop();\n }\n }\n }, _callee5, this);\n }));\n\n function runBaseMigration() {\n return _runBaseMigration.apply(this, arguments);\n }\n\n return runBaseMigration;\n }()\n }, {\n key: "getRequiredMigrations",\n value: function () {\n var _getRequiredMigrations = _asyncToGenerator( /*#__PURE__*/_babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0___default.a.mark(function _callee6() {\n var lastMigrationTimestamp, activeMigrations, migrationClasses, _iteratorNormalCompletion, _didIteratorError, _iteratorError, _iterator, _step, migrationClass, migrationTimestamp;\n\n return _babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0___default.a.wrap(function _callee6$(_context6) {\n while (1) {\n switch (_context6.prev = _context6.next) {\n case 0:\n _context6.next = 2;\n return this.getLastMigrationTimestamp();\n\n case 2:\n lastMigrationTimestamp = _context6.sent;\n activeMigrations = [];\n migrationClasses = Object.keys(_Lib_migrations__WEBPACK_IMPORTED_MODULE_3__).map(function (key) {\n return _Lib_migrations__WEBPACK_IMPORTED_MODULE_3__[key];\n }).sort(function (a, b) {\n var aTimestamp = a.timestamp();\n var bTimestamp = b.timestamp();\n\n if (aTimestamp < bTimestamp) {\n return -1;\n } else if (aTimestamp > bTimestamp) {\n return 1;\n } else {\n return 0;\n }\n });\n _iteratorNormalCompletion = true;\n _didIteratorError = false;\n _iteratorError = undefined;\n _context6.prev = 8;\n\n for (_iterator = migrationClasses[Symbol.iterator](); !(_iteratorNormalCompletion = (_step = _iterator.next()).done); _iteratorNormalCompletion = true) {\n migrationClass = _step.value;\n migrationTimestamp = migrationClass.timestamp();\n\n if (migrationTimestamp > lastMigrationTimestamp) {\n // eslint-disable-next-line new-cap\n activeMigrations.push(new migrationClass(this.services));\n }\n }\n\n _context6.next = 16;\n break;\n\n case 12:\n _context6.prev = 12;\n _context6.t0 = _context6["catch"](8);\n _didIteratorError = true;\n _iteratorError = _context6.t0;\n\n case 16:\n _context6.prev = 16;\n _context6.prev = 17;\n\n if (!_iteratorNormalCompletion && _iterator.return != null) {\n _iterator.return();\n }\n\n case 19:\n _context6.prev = 19;\n\n if (!_didIteratorError) {\n _context6.next = 22;\n break;\n }\n\n throw _iteratorError;\n\n case 22:\n return _context6.finish(19);\n\n case 23:\n return _context6.finish(16);\n\n case 24:\n return _context6.abrupt("return", activeMigrations);\n\n case 25:\n case "end":\n return _context6.stop();\n }\n }\n }, _callee6, this, [[8, 12, 16, 24], [17,, 19, 23]]);\n }));\n\n function getRequiredMigrations() {\n return _getRequiredMigrations.apply(this, arguments);\n }\n\n return getRequiredMigrations;\n }()\n /** @access private */\n\n }, {\n key: "getTimeStampKey",\n value: function getTimeStampKey() {\n return Object(_Lib_storage_keys__WEBPACK_IMPORTED_MODULE_6__["namespacedKey"])(this.services.namespace, _Lib_storage_keys__WEBPACK_IMPORTED_MODULE_6__["RawStorageKey"].LastMigrationTimestamp);\n }\n }, {\n key: "getLastMigrationTimestamp",\n value: function () {\n var _getLastMigrationTimestamp = _asyncToGenerator( /*#__PURE__*/_babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0___default.a.mark(function _callee7() {\n var timestamp;\n return _babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0___default.a.wrap(function _callee7$(_context7) {\n while (1) {\n switch (_context7.prev = _context7.next) {\n case 0:\n _context7.next = 2;\n return this.services.deviceInterface.getRawStorageValue(this.getTimeStampKey());\n\n case 2:\n timestamp = _context7.sent;\n\n if (!Object(_Lib_utils__WEBPACK_IMPORTED_MODULE_7__["isNullOrUndefined"])(timestamp)) {\n _context7.next = 5;\n break;\n }\n\n throw \'Timestamp should not be null. Be sure to run base migration first.\';\n\n case 5:\n return _context7.abrupt("return", JSON.parse(timestamp));\n\n case 6:\n case "end":\n return _context7.stop();\n }\n }\n }, _callee7, this);\n }));\n\n function getLastMigrationTimestamp() {\n return _getLastMigrationTimestamp.apply(this, arguments);\n }\n\n return getLastMigrationTimestamp;\n }()\n }, {\n key: "saveLastMigrationTimestamp",\n value: function () {\n var _saveLastMigrationTimestamp = _asyncToGenerator( /*#__PURE__*/_babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0___default.a.mark(function _callee8(timestamp) {\n return _babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0___default.a.wrap(function _callee8$(_context8) {\n while (1) {\n switch (_context8.prev = _context8.next) {\n case 0:\n _context8.next = 2;\n return this.services.deviceInterface.setRawStorageValue(this.getTimeStampKey(), JSON.stringify(timestamp));\n\n case 2:\n case "end":\n return _context8.stop();\n }\n }\n }, _callee8, this);\n }));\n\n function saveLastMigrationTimestamp(_x3) {\n return _saveLastMigrationTimestamp.apply(this, arguments);\n }\n\n return saveLastMigrationTimestamp;\n }()\n }, {\n key: "handleStage",\n value: function () {\n var _handleStage = _asyncToGenerator( /*#__PURE__*/_babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0___default.a.mark(function _callee9(stage) {\n var _iteratorNormalCompletion2, _didIteratorError2, _iteratorError2, _iterator2, _step2, migration;\n\n return _babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0___default.a.wrap(function _callee9$(_context9) {\n while (1) {\n switch (_context9.prev = _context9.next) {\n case 0:\n _iteratorNormalCompletion2 = true;\n _didIteratorError2 = false;\n _iteratorError2 = undefined;\n _context9.prev = 3;\n _iterator2 = this.activeMigrations[Symbol.iterator]();\n\n case 5:\n if (_iteratorNormalCompletion2 = (_step2 = _iterator2.next()).done) {\n _context9.next = 12;\n break;\n }\n\n migration = _step2.value;\n _context9.next = 9;\n return migration.handleStage(stage);\n\n case 9:\n _iteratorNormalCompletion2 = true;\n _context9.next = 5;\n break;\n\n case 12:\n _context9.next = 18;\n break;\n\n case 14:\n _context9.prev = 14;\n _context9.t0 = _context9["catch"](3);\n _didIteratorError2 = true;\n _iteratorError2 = _context9.t0;\n\n case 18:\n _context9.prev = 18;\n _context9.prev = 19;\n\n if (!_iteratorNormalCompletion2 && _iterator2.return != null) {\n _iterator2.return();\n }\n\n case 21:\n _context9.prev = 21;\n\n if (!_didIteratorError2) {\n _context9.next = 24;\n break;\n }\n\n throw _iteratorError2;\n\n case 24:\n return _context9.finish(21);\n\n case 25:\n return _context9.finish(18);\n\n case 26:\n case "end":\n return _context9.stop();\n }\n }\n }, _callee9, this, [[3, 14, 18, 26], [19,, 21, 25]]);\n }));\n\n function handleStage(_x4) {\n return _handleStage.apply(this, arguments);\n }\n\n return handleStage;\n }()\n }]);\n\n return SNMigrationService;\n}(_Services_pure_service__WEBPACK_IMPORTED_MODULE_5__["PureService"]);//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9saWIvc2VydmljZXMvbWlncmF0aW9uX3NlcnZpY2UudHMuanMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly9TTkxpYnJhcnkvLi9saWIvc2VydmljZXMvbWlncmF0aW9uX3NlcnZpY2UudHM/NjcxZCJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBBcHBsaWNhdGlvbkV2ZW50IH0gZnJvbSAnLi8uLi9ldmVudHMnO1xuaW1wb3J0IHsgQXBwbGljYXRpb25TdGFnZSB9IGZyb20gJ0BMaWIvc3RhZ2VzJztcbmltcG9ydCAqIGFzIG1pZ3JhdGlvbkltcG9ydHMgZnJvbSAnQExpYi9taWdyYXRpb25zJztcbmltcG9ydCB7IEJhc2VNaWdyYXRpb24gfSBmcm9tICdATGliL21pZ3JhdGlvbnMvMjAyMC0wMS0wMS1iYXNlJztcbmltcG9ydCB7IFB1cmVTZXJ2aWNlIH0gZnJvbSAnQFNlcnZpY2VzL3B1cmVfc2VydmljZSc7XG5pbXBvcnQgeyBuYW1lc3BhY2VkS2V5LCBSYXdTdG9yYWdlS2V5IH0gZnJvbSAnQExpYi9zdG9yYWdlX2tleXMnO1xuaW1wb3J0IHsgaXNOdWxsT3JVbmRlZmluZWQsIGxhc3RFbGVtZW50IH0gZnJvbSAnQExpYi91dGlscyc7XG4vKipcbiAqIFRoZSBtaWdyYXRpb24gc2VydmljZSBvcmNoZXN0cmF0ZXMgdGhlIGV4ZWN1dGlvbiBvZiBtdWx0aS1zdGFnZSBtaWdyYXRpb25zLlxuICogTWlncmF0aW9ucyBhcmUgcmVnaXN0ZXJlZCBkdXJpbmcgaW5pdGlhbCBhcHBsaWNhdGlvbiBsYXVuY2gsIGFuZCBsaXN0ZW4gZm9yIGFwcGxpY2F0aW9uXG4gKiBsaWZlLWN5Y2xlIGV2ZW50cywgYW5kIGFjdCBhY2NvcmRpbmdseS4gRm9yIGV4YW1wbGUsIGEgc2luZ2xlIG1pZ3JhdGlvbiBtYXkgcGVyZm9ybVxuICogYSB1bmlxdWUgc2V0IG9mIHN0ZXBzIHdoZW4gdGhlIGFwcGxpY2F0aW9uIGZpcnN0IGxhdW5jaGVzLCBhbmQgYWxzbyBvdGhlciBzdGVwcyBhZnRlciB0aGVcbiAqIGFwcGxpY2F0aW9uIGlzIHVubG9ja2VkLCBvciBhZnRlciB0aGUgZmlyc3Qgc3luYyBjb21wbGV0ZXMuIE1pZ3JhdGlvbnMgbGl2ZSB1bmRlciAvbWlncmF0aW9uc1xuICogYW5kIGluaGVyaXQgZnJvbSB0aGUgYmFzZSBNaWdyYXRpb24gY2xhc3MuXG4gKi9cbmV4cG9ydCBjbGFzcyBTTk1pZ3JhdGlvblNlcnZpY2UgZXh0ZW5kcyBQdXJlU2VydmljZSB7XG4gICAgY29uc3RydWN0b3Ioc2VydmljZXMpIHtcbiAgICAgICAgc3VwZXIoKTtcbiAgICAgICAgdGhpcy5zZXJ2aWNlcyA9IHNlcnZpY2VzO1xuICAgICAgICB0aGlzLmhhbmRsZWRGdWxsU3luY1N0YWdlID0gZmFsc2U7XG4gICAgfVxuICAgIGRlaW5pdCgpIHtcbiAgICAgICAgdGhpcy5zZXJ2aWNlcyA9IHVuZGVmaW5lZDtcbiAgICAgICAgaWYgKHRoaXMuYWN0aXZlTWlncmF0aW9ucykge1xuICAgICAgICAgICAgdGhpcy5hY3RpdmVNaWdyYXRpb25zLmxlbmd0aCA9IDA7XG4gICAgICAgIH1cbiAgICAgICAgc3VwZXIuZGVpbml0KCk7XG4gICAgfVxuICAgIGFzeW5jIGluaXRpYWxpemUoKSB7XG4gICAgICAgIGF3YWl0IHRoaXMucnVuQmFzZU1pZ3JhdGlvbigpO1xuICAgICAgICB0aGlzLmFjdGl2ZU1pZ3JhdGlvbnMgPSBhd2FpdCB0aGlzLmdldFJlcXVpcmVkTWlncmF0aW9ucygpO1xuICAgICAgICBpZiAodGhpcy5hY3RpdmVNaWdyYXRpb25zLmxlbmd0aCA+IDApIHtcbiAgICAgICAgICAgIGNvbnN0IGxhc3RNaWdyYXRpb24gPSBsYXN0RWxlbWVudCh0aGlzLmFjdGl2ZU1pZ3JhdGlvbnMpO1xuICAgICAgICAgICAgbGFzdE1pZ3JhdGlvbi5vbkRvbmUoYXN5bmMgKCkgPT4ge1xuICAgICAgICAgICAgICAgIGF3YWl0IHRoaXMuc2F2ZUxhc3RNaWdyYXRpb25UaW1lc3RhbXAobGFzdE1pZ3JhdGlvbi5jb25zdHJ1Y3Rvci50aW1lc3RhbXAoKSk7XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgfVxuICAgIH1cbiAgICAvKipcbiAgICAgKiBBcHBsaWNhdGlvbiBpbnN0YW5jZXMgd2lsbCBjYWxsIHRoaXMgZnVuY3Rpb24gZGlyZWN0bHkgd2hlbiB0aGV5IGFycml2ZVxuICAgICAqIGF0IGEgY2VydGFpbiBtaWdyYXRvcnkgc3RhdGUuXG4gICAgICovXG4gICAgYXN5bmMgaGFuZGxlQXBwbGljYXRpb25TdGFnZShzdGFnZSkge1xuICAgICAgICBhd2FpdCBzdXBlci5oYW5kbGVBcHBsaWNhdGlvblN0YWdlKHN0YWdlKTtcbiAgICAgICAgYXdhaXQgdGhpcy5oYW5kbGVTdGFnZShzdGFnZSk7XG4gICAgfVxuICAgIC8qKlxuICAgICAqIENhbGxlZCBieSBhcHBsaWNhdGlvblxuICAgICAqL1xuICAgIGFzeW5jIGhhbmRsZUFwcGxpY2F0aW9uRXZlbnQoZXZlbnQpIHtcbiAgICAgICAgaWYgKGV2ZW50ID09PSBBcHBsaWNhdGlvbkV2ZW50LlNpZ25lZEluKSB7XG4gICAgICAgICAgICBhd2FpdCB0aGlzLmhhbmRsZVN0YWdlKEFwcGxpY2F0aW9uU3RhZ2UuU2lnbmVkSW5fMzApO1xuICAgICAgICB9XG4gICAgICAgIGVsc2UgaWYgKGV2ZW50ID09PSBBcHBsaWNhdGlvbkV2ZW50LkNvbXBsZXRlZEZ1bGxTeW5jKSB7XG4gICAgICAgICAgICBpZiAoIXRoaXMuaGFuZGxlZEZ1bGxTeW5jU3RhZ2UpIHtcbiAgICAgICAgICAgICAgICB0aGlzLmhhbmRsZWRGdWxsU3luY1N0YWdlID0gdHJ1ZTtcbiAgICAgICAgICAgICAgICBhd2FpdCB0aGlzLmhhbmRsZVN0YWdlKEFwcGxpY2F0aW9uU3RhZ2UuRnVsbFN5bmNDb21wbGV0ZWRfMTMpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfVxuICAgIGFzeW5jIHJ1bkJhc2VNaWdyYXRpb24oKSB7XG4gICAgICAgIGNvbnN0IGJhc2VNaWdyYXRpb24gPSBuZXcgQmFzZU1pZ3JhdGlvbih0aGlzLnNlcnZpY2VzKTtcbiAgICAgICAgYXdhaXQgYmFzZU1pZ3JhdGlvbi5oYW5kbGVTdGFnZShBcHBsaWNhdGlvblN0YWdlLlByZXBhcmluZ0ZvckxhdW5jaF8wKTtcbiAgICB9XG4gICAgYXN5bmMgZ2V0UmVxdWlyZWRNaWdyYXRpb25zKCkge1xuICAgICAgICBjb25zdCBsYXN0TWlncmF0aW9uVGltZXN0YW1wID0gYXdhaXQgdGhpcy5nZXRMYXN0TWlncmF0aW9uVGltZXN0YW1wKCk7XG4gICAgICAgIGNvbnN0IGFjdGl2ZU1pZ3JhdGlvbnMgPSBbXTtcbiAgICAgICAgY29uc3QgbWlncmF0aW9uQ2xhc3NlcyA9IE9iamVjdC5rZXlzKG1pZ3JhdGlvbkltcG9ydHMpLm1hcCgoa2V5KSA9PiB7XG4gICAgICAgICAgICByZXR1cm4gbWlncmF0aW9uSW1wb3J0c1trZXldO1xuICAgICAgICB9KS5zb3J0KChhLCBiKSA9PiB7XG4gICAgICAgICAgICBjb25zdCBhVGltZXN0YW1wID0gYS50aW1lc3RhbXAoKTtcbiAgICAgICAgICAgIGNvbnN0IGJUaW1lc3RhbXAgPSBiLnRpbWVzdGFtcCgpO1xuICAgICAgICAgICAgaWYgKGFUaW1lc3RhbXAgPCBiVGltZXN0YW1wKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIC0xO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgZWxzZSBpZiAoYVRpbWVzdGFtcCA+IGJUaW1lc3RhbXApIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gMTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgICAgIHJldHVybiAwO1xuICAgICAgICAgICAgfVxuICAgICAgICB9KTtcbiAgICAgICAgZm9yIChjb25zdCBtaWdyYXRpb25DbGFzcyBvZiBtaWdyYXRpb25DbGFzc2VzKSB7XG4gICAgICAgICAgICBjb25zdCBtaWdyYXRpb25UaW1lc3RhbXAgPSBtaWdyYXRpb25DbGFzcy50aW1lc3RhbXAoKTtcbiAgICAgICAgICAgIGlmIChtaWdyYXRpb25UaW1lc3RhbXAgPiBsYXN0TWlncmF0aW9uVGltZXN0YW1wKSB7XG4gICAgICAgICAgICAgICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIG5ldy1jYXBcbiAgICAgICAgICAgICAgICBhY3RpdmVNaWdyYXRpb25zLnB1c2gobmV3IG1pZ3JhdGlvbkNsYXNzKHRoaXMuc2VydmljZXMpKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gYWN0aXZlTWlncmF0aW9ucztcbiAgICB9XG4gICAgLyoqIEBhY2Nlc3MgcHJpdmF0ZSAqL1xuICAgIGdldFRpbWVTdGFtcEtleSgpIHtcbiAgICAgICAgcmV0dXJuIG5hbWVzcGFjZWRLZXkodGhpcy5zZXJ2aWNlcy5uYW1lc3BhY2UsIFJhd1N0b3JhZ2VLZXkuTGFzdE1pZ3JhdGlvblRpbWVzdGFtcCk7XG4gICAgfVxuICAgIGFzeW5jIGdldExhc3RNaWdyYXRpb25UaW1lc3RhbXAoKSB7XG4gICAgICAgIGNvbnN0IHRpbWVzdGFtcCA9IGF3YWl0IHRoaXMuc2VydmljZXMuZGV2aWNlSW50ZXJmYWNlLmdldFJhd1N0b3JhZ2VWYWx1ZSh0aGlzLmdldFRpbWVTdGFtcEtleSgpKTtcbiAgICAgICAgaWYgKGlzTnVsbE9yVW5kZWZpbmVkKHRpbWVzdGFtcCkpIHtcbiAgICAgICAgICAgIHRocm93ICdUaW1lc3RhbXAgc2hvdWxkIG5vdCBiZSBudWxsLiBCZSBzdXJlIHRvIHJ1biBiYXNlIG1pZ3JhdGlvbiBmaXJzdC4nO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiBKU09OLnBhcnNlKHRpbWVzdGFtcCk7XG4gICAgfVxuICAgIGFzeW5jIHNhdmVMYXN0TWlncmF0aW9uVGltZXN0YW1wKHRpbWVzdGFtcCkge1xuICAgICAgICBhd2FpdCB0aGlzLnNlcnZpY2VzLmRldmljZUludGVyZmFjZS5zZXRSYXdTdG9yYWdlVmFsdWUodGhpcy5nZXRUaW1lU3RhbXBLZXkoKSwgSlNPTi5zdHJpbmdpZnkodGltZXN0YW1wKSk7XG4gICAgfVxuICAgIGFzeW5jIGhhbmRsZVN0YWdlKHN0YWdlKSB7XG4gICAgICAgIGZvciAoY29uc3QgbWlncmF0aW9uIG9mIHRoaXMuYWN0aXZlTWlncmF0aW9ucykge1xuICAgICAgICAgICAgYXdhaXQgbWlncmF0aW9uLmhhbmRsZVN0YWdlKHN0YWdlKTtcbiAgICAgICAgfVxuICAgIH1cbn1cbiJdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7Ozs7Ozs7O0FBUUE7QUFBQTtBQUNBO0FBQUE7QUFBQTtBQUNBO0FBREE7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUhBO0FBSUE7QUFDQTtBQU5BO0FBQUE7QUFBQTtBQU9BO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFaQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQ0E7QUFEQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUNBO0FBREE7QUFBQTtBQUFBO0FBQ0E7QUFEQTtBQWVBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFDQTtBQURBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBR0E7QUFDQTtBQXRCQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUNBO0FBREE7QUFBQTtBQUFBO0FBQ0E7QUFEQTtBQUFBO0FBdUJBOzs7OztBQXZCQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUNBO0FBREE7QUFBQTtBQUFBO0FBQ0E7QUFEQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUNBO0FBREE7QUFBQTtBQUFBO0FBQ0E7QUFEQTtBQUFBO0FBK0JBOzs7O0FBL0JBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUNBO0FBREE7QUFBQTtBQUNBO0FBREE7QUFBQTtBQUFBO0FBQ0E7QUFEQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQ0E7QUFEQTtBQUFBO0FBQUE7QUFBQTtBQUNBO0FBdUNBO0FBeENBO0FBQUE7QUFDQTtBQURBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQ0E7QUFEQTtBQUFBO0FBQUE7QUFDQTtBQURBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUE4Q0E7QUE5Q0E7QUFBQTtBQUNBO0FBREE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFDQTtBQURBO0FBQUE7QUFBQTtBQUNBO0FBREE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFDQTtBQURBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUNBO0FBREE7QUFrREE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUVBO0FBQ0E7QUFFQTtBQUNBO0FBQ0E7QUFsRUE7QUFBQTtBQUFBO0FBQUE7QUFDQTtBQWtFQTtBQUFBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQTFFQTtBQUFBO0FBQ0E7QUFEQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQ0E7QUFEQTtBQUFBO0FBQUE7QUFDQTtBQURBO0FBQUE7QUFBQTtBQUNBO0FBREE7QUFBQTtBQUNBO0FBREE7QUFBQTtBQUFBO0FBQUE7QUFDQTtBQURBO0FBQ0E7QUFEQTtBQUFBO0FBQ0E7QUFEQTtBQUFBO0FBQ0E7QUFEQTtBQUFBO0FBQ0E7QUFEQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUNBO0FBREE7QUFBQTtBQUFBO0FBQ0E7QUFEQTtBQUFBO0FBNEVBO0FBQ0E7QUE3RUE7QUFBQTtBQUFBO0FBOEVBO0FBQ0E7QUEvRUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUNBO0FBREE7QUFpRkE7QUFDQTtBQWxGQTtBQUFBO0FBQUE7QUFBQTtBQUNBO0FBREE7QUFDQTtBQURBO0FBQUE7QUFDQTtBQURBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQ0E7QUFEQTtBQUFBO0FBQUE7QUFDQTtBQURBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUNBO0FBREE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFDQTtBQURBO0FBQUE7QUFBQTtBQUNBO0FBREE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFDQTtBQURBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUNBO0FBREE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUNBO0FBMEZBO0FBM0ZBO0FBQUE7QUFDQTtBQURBO0FBQUE7QUFBQTtBQUFBO0FBQ0E7QUFEQTtBQUFBO0FBQUE7QUFDQTtBQURBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFDQTtBQURBO0FBQUE7QUFBQTtBQUNBO0FBREE7QUFBQTtBQUFBO0FBQ0E7QUFEQTtBQUFBO0FBQ0E7QUFEQTtBQUFBO0FBQUE7QUFBQTtBQUNBO0FBREE7QUFDQTtBQURBO0FBQUE7QUFDQTtBQURBO0FBQUE7QUFDQTtBQURBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQ0E7QUFEQTtBQUFBO0FBQUE7QUFDQTtBQURBO0FBQUE7QUFBQTtBQUNBO0FBREE7QUFBQSIsInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./lib/services/migration_service.ts\n')},"./lib/services/model_manager.ts":
|
||
/*!***************************************!*\
|
||
!*** ./lib/services/model_manager.ts ***!
|
||
\***************************************/
|
||
/*! exports provided: PayloadManager */function(module,__webpack_exports__,__webpack_require__){"use strict";eval('__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "PayloadManager", function() { return PayloadManager; });\n/* harmony import */ var _babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @babel/runtime/regenerator */ "./node_modules/@babel/runtime/regenerator/index.js");\n/* harmony import */ var _babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var _Lib_utils__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! @Lib/utils */ "./lib/utils.ts");\n/* harmony import */ var _Lib_protocol_payloads_generator__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! @Lib/protocol/payloads/generator */ "./lib/protocol/payloads/generator.ts");\n/* harmony import */ var _protocol_payloads_deltas_file_import__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./../protocol/payloads/deltas/file_import */ "./lib/protocol/payloads/deltas/file_import.ts");\n/* harmony import */ var _protocol_payloads_sources__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ./../protocol/payloads/sources */ "./lib/protocol/payloads/sources.ts");\n/* harmony import */ var _models_content_types__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ./../models/content_types */ "./lib/models/content_types.ts");\n/* harmony import */ var _Models_functions__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! @Models/functions */ "./lib/models/functions.ts");\n/* harmony import */ var _Lib_services_pure_service__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! @Lib/services/pure_service */ "./lib/services/pure_service.ts");\n/* harmony import */ var _Lib_protocol_collection_collection__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! @Lib/protocol/collection/collection */ "./lib/protocol/collection/collection.ts");\n/* harmony import */ var _Lib_protocol_collection_payload_collection__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(/*! @Lib/protocol/collection/payload_collection */ "./lib/protocol/collection/payload_collection.ts");\n\n\nfunction _typeof(obj) { "@babel/helpers - typeof"; if (typeof Symbol === "function" && typeof Symbol.iterator === "symbol") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }; } return _typeof(obj); }\n\nfunction asyncGeneratorStep(gen, resolve, reject, _next, _throw, key, arg) { try { var info = gen[key](arg); var value = info.value; } catch (error) { reject(error); return; } if (info.done) { resolve(value); } else { Promise.resolve(value).then(_next, _throw); } }\n\nfunction _asyncToGenerator(fn) { return function () { var self = this, args = arguments; return new Promise(function (resolve, reject) { var gen = fn.apply(self, args); function _next(value) { asyncGeneratorStep(gen, resolve, reject, _next, _throw, "next", value); } function _throw(err) { asyncGeneratorStep(gen, resolve, reject, _next, _throw, "throw", err); } _next(undefined); }); }; }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } }\n\nfunction _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); } }\n\nfunction _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; }\n\nfunction _possibleConstructorReturn(self, call) { if (call && (_typeof(call) === "object" || typeof call === "function")) { return call; } return _assertThisInitialized(self); }\n\nfunction _assertThisInitialized(self) { if (self === void 0) { throw new ReferenceError("this hasn\'t been initialised - super() hasn\'t been called"); } return self; }\n\nfunction _get(target, property, receiver) { if (typeof Reflect !== "undefined" && Reflect.get) { _get = Reflect.get; } else { _get = function _get(target, property, receiver) { var base = _superPropBase(target, property); if (!base) return; var desc = Object.getOwnPropertyDescriptor(base, property); if (desc.get) { return desc.get.call(receiver); } return desc.value; }; } return _get(target, property, receiver || target); }\n\nfunction _superPropBase(object, property) { while (!Object.prototype.hasOwnProperty.call(object, property)) { object = _getPrototypeOf(object); if (object === null) break; } return object; }\n\nfunction _getPrototypeOf(o) { _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function _getPrototypeOf(o) { return o.__proto__ || Object.getPrototypeOf(o); }; return _getPrototypeOf(o); }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== "function" && superClass !== null) { throw new TypeError("Super expression must either be null or a function"); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, writable: true, configurable: true } }); if (superClass) _setPrototypeOf(subClass, superClass); }\n\nfunction _setPrototypeOf(o, p) { _setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) { o.__proto__ = p; return o; }; return _setPrototypeOf(o, p); }\n\n\n\n\n\n\n\n\n\n\n/**\n * The model manager is responsible for keeping state regarding what items exist in the\n * global application state. It does so by exposing functions that allow consumers to \'map\'\n * a detached payload into global application state. Whenever a change is made or retrieved\n * from any source, it must be mapped in order to be properly reflected in global application state.\n * The model manager deals only with in-memory state, and does not deal directly with storage.\n * It also serves as a query store, and can be queried for current notes, tags, etc.\n * It exposes methods that allow consumers to listen to mapping events. This is how\n * applications \'stream\' items to display in the interface.\n */\n\nvar PayloadManager = /*#__PURE__*/function (_PureService) {\n _inherits(PayloadManager, _PureService);\n\n function PayloadManager() {\n var _this;\n\n _classCallCheck(this, PayloadManager);\n\n _this = _possibleConstructorReturn(this, _getPrototypeOf(PayloadManager).call(this));\n _this.changeObservers = [];\n _this.emitQueue = [];\n _this.collection = new _Lib_protocol_collection_collection__WEBPACK_IMPORTED_MODULE_8__["MutableCollection"]();\n return _this;\n }\n /**\n * Our payload collection keeps the latest mapped payload for every payload\n * that passes through our mapping function. Use this to query current state\n * as needed to make decisions, like about duplication or uuid alteration.\n */\n\n\n _createClass(PayloadManager, [{\n key: "getMasterCollection",\n value: function getMasterCollection() {\n return _Lib_protocol_collection_payload_collection__WEBPACK_IMPORTED_MODULE_9__["ImmutablePayloadCollection"].FromCollection(this.collection);\n }\n }, {\n key: "deinit",\n value: function deinit() {\n _get(_getPrototypeOf(PayloadManager.prototype), "deinit", this).call(this);\n\n this.changeObservers.length = 0;\n this.resetState();\n }\n }, {\n key: "resetState",\n value: function resetState() {\n this.collection = new _Lib_protocol_collection_collection__WEBPACK_IMPORTED_MODULE_8__["MutableCollection"]();\n }\n }, {\n key: "find",\n value: function find(uuids) {\n return this.collection.findAll(uuids);\n }\n /**\n * One of many mapping helpers available.\n * This function maps a collection of payloads.\n */\n\n }, {\n key: "emitCollection",\n value: function () {\n var _emitCollection = _asyncToGenerator( /*#__PURE__*/_babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0___default.a.mark(function _callee(collection, sourceKey) {\n return _babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0___default.a.wrap(function _callee$(_context) {\n while (1) {\n switch (_context.prev = _context.next) {\n case 0:\n return _context.abrupt("return", this.emitPayloads(collection.all(), collection.source, sourceKey));\n\n case 1:\n case "end":\n return _context.stop();\n }\n }\n }, _callee, this);\n }));\n\n function emitCollection(_x, _x2) {\n return _emitCollection.apply(this, arguments);\n }\n\n return emitCollection;\n }()\n /**\n * One of many mapping helpers available.\n * This function maps a payload to an item\n * @returns The mapped item\n */\n\n }, {\n key: "emitPayload",\n value: function () {\n var _emitPayload = _asyncToGenerator( /*#__PURE__*/_babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0___default.a.mark(function _callee2(payload, source, sourceKey) {\n return _babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0___default.a.wrap(function _callee2$(_context2) {\n while (1) {\n switch (_context2.prev = _context2.next) {\n case 0:\n _context2.next = 2;\n return this.emitPayloads([payload], source, sourceKey);\n\n case 2:\n case "end":\n return _context2.stop();\n }\n }\n }, _callee2, this);\n }));\n\n function emitPayload(_x3, _x4, _x5) {\n return _emitPayload.apply(this, arguments);\n }\n\n return emitPayload;\n }()\n /**\n * This function maps multiple payloads to items, and is the authoratative mapping\n * function that all other mapping helpers rely on\n */\n\n }, {\n key: "emitPayloads",\n value: function () {\n var _emitPayloads = _asyncToGenerator( /*#__PURE__*/_babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0___default.a.mark(function _callee3(payloads, source, sourceKey) {\n var _this2 = this;\n\n return _babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0___default.a.wrap(function _callee3$(_context3) {\n while (1) {\n switch (_context3.prev = _context3.next) {\n case 0:\n if (payloads.length === 0) {\n console.warn("Attempting to emit 0 payloads.");\n }\n\n return _context3.abrupt("return", new Promise(function (resolve) {\n _this2.emitQueue.push({\n payloads: payloads,\n source: source,\n sourceKey: sourceKey,\n resolve: resolve\n });\n\n if (_this2.emitQueue.length === 1) {\n _this2.popQueue();\n }\n }));\n\n case 2:\n case "end":\n return _context3.stop();\n }\n }\n }, _callee3);\n }));\n\n function emitPayloads(_x6, _x7, _x8) {\n return _emitPayloads.apply(this, arguments);\n }\n\n return emitPayloads;\n }()\n }, {\n key: "popQueue",\n value: function () {\n var _popQueue = _asyncToGenerator( /*#__PURE__*/_babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0___default.a.mark(function _callee4() {\n var first, _this$mergePayloadsOn, changed, inserted, discarded;\n\n return _babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0___default.a.wrap(function _callee4$(_context4) {\n while (1) {\n switch (_context4.prev = _context4.next) {\n case 0:\n first = this.emitQueue[0];\n _this$mergePayloadsOn = this.mergePayloadsOntoMaster(first.payloads), changed = _this$mergePayloadsOn.changed, inserted = _this$mergePayloadsOn.inserted, discarded = _this$mergePayloadsOn.discarded;\n this.notifyChangeObservers(changed, inserted, discarded, first.source, first.sourceKey);\n Object(_Lib_utils__WEBPACK_IMPORTED_MODULE_1__["removeFromArray"])(this.emitQueue, first);\n first.resolve();\n\n if (this.emitQueue.length > 0) {\n this.popQueue();\n }\n\n case 6:\n case "end":\n return _context4.stop();\n }\n }\n }, _callee4, this);\n }));\n\n function popQueue() {\n return _popQueue.apply(this, arguments);\n }\n\n return popQueue;\n }()\n }, {\n key: "mergePayloadsOntoMaster",\n value: function mergePayloadsOntoMaster(payloads) {\n var changed = [];\n var inserted = [];\n var discarded = [];\n var _iteratorNormalCompletion = true;\n var _didIteratorError = false;\n var _iteratorError = undefined;\n\n try {\n for (var _iterator = payloads[Symbol.iterator](), _step; !(_iteratorNormalCompletion = (_step = _iterator.next()).done); _iteratorNormalCompletion = true) {\n var payload = _step.value;\n\n if (!payload.uuid || !payload.content_type) {\n console.error(\'Payload is corrupt:\', payload);\n continue;\n }\n\n var masterPayload = this.collection.find(payload.uuid);\n var newPayload = masterPayload ? Object(_Lib_protocol_payloads_generator__WEBPACK_IMPORTED_MODULE_2__["PayloadByMerging"])(masterPayload, payload) : payload;\n /** The item has been deleted and synced,\n * and can thus be removed from our local record */\n\n if (newPayload.discardable) {\n this.collection.discard(newPayload);\n discarded.push(newPayload);\n } else {\n this.collection.set(newPayload);\n\n if (!masterPayload) {\n inserted.push(newPayload);\n } else {\n changed.push(newPayload);\n }\n }\n }\n } catch (err) {\n _didIteratorError = true;\n _iteratorError = err;\n } finally {\n try {\n if (!_iteratorNormalCompletion && _iterator.return != null) {\n _iterator.return();\n }\n } finally {\n if (_didIteratorError) {\n throw _iteratorError;\n }\n }\n }\n\n return {\n changed: changed,\n inserted: inserted,\n discarded: discarded\n };\n }\n /**\n * Notifies observers when an item has been mapped.\n * @param types - An array of content types to listen for\n * @param priority - The lower the priority, the earlier the function is called\n * wrt to other observers\n */\n\n }, {\n key: "addObserver",\n value: function addObserver(types, callback) {\n var _this3 = this;\n\n var priority = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : 1;\n\n if (!Array.isArray(types)) {\n types = [types];\n }\n\n var observer = {\n types: types,\n priority: priority,\n callback: callback\n };\n this.changeObservers.push(observer);\n return function () {\n Object(_Lib_utils__WEBPACK_IMPORTED_MODULE_1__["removeFromArray"])(_this3.changeObservers, observer);\n };\n }\n /**\n * This function is mostly for internal use, but can be used externally by consumers who\n * explicitely understand what they are doing (want to propagate model state without mapping)\n */\n\n }, {\n key: "notifyChangeObservers",\n value: function notifyChangeObservers(changed, inserted, discarded, source, sourceKey) {\n /** Slice the observers array as sort modifies in-place */\n var observers = this.changeObservers.slice().sort(function (a, b) {\n return a.priority < b.priority ? -1 : 1;\n });\n\n var filter = function filter(payloads, types) {\n return types.includes(_models_content_types__WEBPACK_IMPORTED_MODULE_5__["ContentType"].Any) ? payloads.slice() : payloads.slice().filter(function (payload) {\n return types.includes(payload.content_type);\n });\n };\n\n var _iteratorNormalCompletion2 = true;\n var _didIteratorError2 = false;\n var _iteratorError2 = undefined;\n\n try {\n for (var _iterator2 = observers[Symbol.iterator](), _step2; !(_iteratorNormalCompletion2 = (_step2 = _iterator2.next()).done); _iteratorNormalCompletion2 = true) {\n var observer = _step2.value;\n observer.callback(filter(changed, observer.types), filter(inserted, observer.types), filter(discarded, observer.types), source, sourceKey);\n }\n } catch (err) {\n _didIteratorError2 = true;\n _iteratorError2 = err;\n } finally {\n try {\n if (!_iteratorNormalCompletion2 && _iterator2.return != null) {\n _iterator2.return();\n }\n } finally {\n if (_didIteratorError2) {\n throw _iteratorError2;\n }\n }\n }\n }\n /**\n * Imports an array of payloads from an external source (such as a backup file)\n * and marks the items as dirty.\n * @returns Resulting items\n */\n\n }, {\n key: "importPayloads",\n value: function () {\n var _importPayloads = _asyncToGenerator( /*#__PURE__*/_babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0___default.a.mark(function _callee5(payloads) {\n var delta, collection;\n return _babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0___default.a.wrap(function _callee5$(_context5) {\n while (1) {\n switch (_context5.prev = _context5.next) {\n case 0:\n delta = new _protocol_payloads_deltas_file_import__WEBPACK_IMPORTED_MODULE_3__["DeltaFileImport"](this.getMasterCollection(), _Lib_protocol_collection_payload_collection__WEBPACK_IMPORTED_MODULE_9__["ImmutablePayloadCollection"].WithPayloads(payloads, _protocol_payloads_sources__WEBPACK_IMPORTED_MODULE_4__["PayloadSource"].FileImport));\n _context5.next = 3;\n return delta.resultingCollection();\n\n case 3:\n collection = _context5.sent;\n _context5.next = 6;\n return this.emitCollection(collection);\n\n case 6:\n return _context5.abrupt("return", Object(_Models_functions__WEBPACK_IMPORTED_MODULE_6__["Uuids"])(collection.payloads));\n\n case 7:\n case "end":\n return _context5.stop();\n }\n }\n }, _callee5, this);\n }));\n\n function importPayloads(_x9) {\n return _importPayloads.apply(this, arguments);\n }\n\n return importPayloads;\n }()\n }, {\n key: "removePayloadLocally",\n value: function removePayloadLocally(payload) {\n this.collection.discard(payload);\n }\n }]);\n\n return PayloadManager;\n}(_Lib_services_pure_service__WEBPACK_IMPORTED_MODULE_7__["PureService"]);//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9saWIvc2VydmljZXMvbW9kZWxfbWFuYWdlci50cy5qcyIsInNvdXJjZXMiOlsid2VicGFjazovL1NOTGlicmFyeS8uL2xpYi9zZXJ2aWNlcy9tb2RlbF9tYW5hZ2VyLnRzP2Y1NjkiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgcmVtb3ZlRnJvbUFycmF5IH0gZnJvbSAnQExpYi91dGlscyc7XG5pbXBvcnQgeyBQYXlsb2FkQnlNZXJnaW5nIH0gZnJvbSAnQExpYi9wcm90b2NvbC9wYXlsb2Fkcy9nZW5lcmF0b3InO1xuaW1wb3J0IHsgRGVsdGFGaWxlSW1wb3J0IH0gZnJvbSAnLi8uLi9wcm90b2NvbC9wYXlsb2Fkcy9kZWx0YXMvZmlsZV9pbXBvcnQnO1xuaW1wb3J0IHsgUGF5bG9hZFNvdXJjZSB9IGZyb20gJy4vLi4vcHJvdG9jb2wvcGF5bG9hZHMvc291cmNlcyc7XG5pbXBvcnQgeyBDb250ZW50VHlwZSB9IGZyb20gJy4vLi4vbW9kZWxzL2NvbnRlbnRfdHlwZXMnO1xuaW1wb3J0IHsgVXVpZHMgfSBmcm9tICdATW9kZWxzL2Z1bmN0aW9ucyc7XG5pbXBvcnQgeyBQdXJlU2VydmljZSB9IGZyb20gJ0BMaWIvc2VydmljZXMvcHVyZV9zZXJ2aWNlJztcbmltcG9ydCB7IE11dGFibGVDb2xsZWN0aW9uIH0gZnJvbSAnQExpYi9wcm90b2NvbC9jb2xsZWN0aW9uL2NvbGxlY3Rpb24nO1xuaW1wb3J0IHsgSW1tdXRhYmxlUGF5bG9hZENvbGxlY3Rpb24gfSBmcm9tICdATGliL3Byb3RvY29sL2NvbGxlY3Rpb24vcGF5bG9hZF9jb2xsZWN0aW9uJztcbi8qKlxuICogVGhlIG1vZGVsIG1hbmFnZXIgaXMgcmVzcG9uc2libGUgZm9yIGtlZXBpbmcgc3RhdGUgcmVnYXJkaW5nIHdoYXQgaXRlbXMgZXhpc3QgaW4gdGhlXG4gKiBnbG9iYWwgYXBwbGljYXRpb24gc3RhdGUuIEl0IGRvZXMgc28gYnkgZXhwb3NpbmcgZnVuY3Rpb25zIHRoYXQgYWxsb3cgY29uc3VtZXJzIHRvICdtYXAnXG4gKiBhIGRldGFjaGVkIHBheWxvYWQgaW50byBnbG9iYWwgYXBwbGljYXRpb24gc3RhdGUuIFdoZW5ldmVyIGEgY2hhbmdlIGlzIG1hZGUgb3IgcmV0cmlldmVkXG4gKiBmcm9tIGFueSBzb3VyY2UsIGl0IG11c3QgYmUgbWFwcGVkIGluIG9yZGVyIHRvIGJlIHByb3Blcmx5IHJlZmxlY3RlZCBpbiBnbG9iYWwgYXBwbGljYXRpb24gc3RhdGUuXG4gKiBUaGUgbW9kZWwgbWFuYWdlciBkZWFscyBvbmx5IHdpdGggaW4tbWVtb3J5IHN0YXRlLCBhbmQgZG9lcyBub3QgZGVhbCBkaXJlY3RseSB3aXRoIHN0b3JhZ2UuXG4gKiBJdCBhbHNvIHNlcnZlcyBhcyBhIHF1ZXJ5IHN0b3JlLCBhbmQgY2FuIGJlIHF1ZXJpZWQgZm9yIGN1cnJlbnQgbm90ZXMsIHRhZ3MsIGV0Yy5cbiAqIEl0IGV4cG9zZXMgbWV0aG9kcyB0aGF0IGFsbG93IGNvbnN1bWVycyB0byBsaXN0ZW4gdG8gbWFwcGluZyBldmVudHMuIFRoaXMgaXMgaG93XG4gKiBhcHBsaWNhdGlvbnMgJ3N0cmVhbScgaXRlbXMgdG8gZGlzcGxheSBpbiB0aGUgaW50ZXJmYWNlLlxuICovXG5leHBvcnQgY2xhc3MgUGF5bG9hZE1hbmFnZXIgZXh0ZW5kcyBQdXJlU2VydmljZSB7XG4gICAgY29uc3RydWN0b3IoKSB7XG4gICAgICAgIHN1cGVyKCk7XG4gICAgICAgIHRoaXMuY2hhbmdlT2JzZXJ2ZXJzID0gW107XG4gICAgICAgIHRoaXMuZW1pdFF1ZXVlID0gW107XG4gICAgICAgIHRoaXMuY29sbGVjdGlvbiA9IG5ldyBNdXRhYmxlQ29sbGVjdGlvbigpO1xuICAgIH1cbiAgICAvKipcbiAgICAgKiBPdXIgcGF5bG9hZCBjb2xsZWN0aW9uIGtlZXBzIHRoZSBsYXRlc3QgbWFwcGVkIHBheWxvYWQgZm9yIGV2ZXJ5IHBheWxvYWRcbiAgICAgKiB0aGF0IHBhc3NlcyB0aHJvdWdoIG91ciBtYXBwaW5nIGZ1bmN0aW9uLiBVc2UgdGhpcyB0byBxdWVyeSBjdXJyZW50IHN0YXRlXG4gICAgICogYXMgbmVlZGVkIHRvIG1ha2UgZGVjaXNpb25zLCBsaWtlIGFib3V0IGR1cGxpY2F0aW9uIG9yIHV1aWQgYWx0ZXJhdGlvbi5cbiAgICAgKi9cbiAgICBnZXRNYXN0ZXJDb2xsZWN0aW9uKCkge1xuICAgICAgICByZXR1cm4gSW1tdXRhYmxlUGF5bG9hZENvbGxlY3Rpb24uRnJvbUNvbGxlY3Rpb24odGhpcy5jb2xsZWN0aW9uKTtcbiAgICB9XG4gICAgZGVpbml0KCkge1xuICAgICAgICBzdXBlci5kZWluaXQoKTtcbiAgICAgICAgdGhpcy5jaGFuZ2VPYnNlcnZlcnMubGVuZ3RoID0gMDtcbiAgICAgICAgdGhpcy5yZXNldFN0YXRlKCk7XG4gICAgfVxuICAgIHJlc2V0U3RhdGUoKSB7XG4gICAgICAgIHRoaXMuY29sbGVjdGlvbiA9IG5ldyBNdXRhYmxlQ29sbGVjdGlvbigpO1xuICAgIH1cbiAgICBmaW5kKHV1aWRzKSB7XG4gICAgICAgIHJldHVybiB0aGlzLmNvbGxlY3Rpb24uZmluZEFsbCh1dWlkcyk7XG4gICAgfVxuICAgIC8qKlxuICAgICAqIE9uZSBvZiBtYW55IG1hcHBpbmcgaGVscGVycyBhdmFpbGFibGUuXG4gICAgICogVGhpcyBmdW5jdGlvbiBtYXBzIGEgY29sbGVjdGlvbiBvZiBwYXlsb2Fkcy5cbiAgICAgKi9cbiAgICBhc3luYyBlbWl0Q29sbGVjdGlvbihjb2xsZWN0aW9uLCBzb3VyY2VLZXkpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuZW1pdFBheWxvYWRzKGNvbGxlY3Rpb24uYWxsKCksIGNvbGxlY3Rpb24uc291cmNlLCBzb3VyY2VLZXkpO1xuICAgIH1cbiAgICAvKipcbiAgICAgKiBPbmUgb2YgbWFueSBtYXBwaW5nIGhlbHBlcnMgYXZhaWxhYmxlLlxuICAgICAqIFRoaXMgZnVuY3Rpb24gbWFwcyBhIHBheWxvYWQgdG8gYW4gaXRlbVxuICAgICAqIEByZXR1cm5zIFRoZSBtYXBwZWQgaXRlbVxuICAgICAqL1xuICAgIGFzeW5jIGVtaXRQYXlsb2FkKHBheWxvYWQsIHNvdXJjZSwgc291cmNlS2V5KSB7XG4gICAgICAgIGF3YWl0IHRoaXMuZW1pdFBheWxvYWRzKFtwYXlsb2FkXSwgc291cmNlLCBzb3VyY2VLZXkpO1xuICAgIH1cbiAgICAvKipcbiAgICAgKiBUaGlzIGZ1bmN0aW9uIG1hcHMgbXVsdGlwbGUgcGF5bG9hZHMgdG8gaXRlbXMsIGFuZCBpcyB0aGUgYXV0aG9yYXRhdGl2ZSBtYXBwaW5nXG4gICAgICogZnVuY3Rpb24gdGhhdCBhbGwgb3RoZXIgbWFwcGluZyBoZWxwZXJzIHJlbHkgb25cbiAgICAgKi9cbiAgICBhc3luYyBlbWl0UGF5bG9hZHMocGF5bG9hZHMsIHNvdXJjZSwgc291cmNlS2V5KSB7XG4gICAgICAgIGlmIChwYXlsb2Fkcy5sZW5ndGggPT09IDApIHtcbiAgICAgICAgICAgIGNvbnNvbGUud2FybihcIkF0dGVtcHRpbmcgdG8gZW1pdCAwIHBheWxvYWRzLlwiKTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gbmV3IFByb21pc2UoKHJlc29sdmUpID0+IHtcbiAgICAgICAgICAgIHRoaXMuZW1pdFF1ZXVlLnB1c2goe1xuICAgICAgICAgICAgICAgIHBheWxvYWRzLFxuICAgICAgICAgICAgICAgIHNvdXJjZSxcbiAgICAgICAgICAgICAgICBzb3VyY2VLZXksXG4gICAgICAgICAgICAgICAgcmVzb2x2ZVxuICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICBpZiAodGhpcy5lbWl0UXVldWUubGVuZ3RoID09PSAxKSB7XG4gICAgICAgICAgICAgICAgdGhpcy5wb3BRdWV1ZSgpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9KTtcbiAgICB9XG4gICAgYXN5bmMgcG9wUXVldWUoKSB7XG4gICAgICAgIGNvbnN0IGZpcnN0ID0gdGhpcy5lbWl0UXVldWVbMF07XG4gICAgICAgIGNvbnN0IHsgY2hhbmdlZCwgaW5zZXJ0ZWQsIGRpc2NhcmRlZCB9ID0gdGhpcy5tZXJnZVBheWxvYWRzT250b01hc3RlcihmaXJzdC5wYXlsb2Fkcyk7XG4gICAgICAgIHRoaXMubm90aWZ5Q2hhbmdlT2JzZXJ2ZXJzKGNoYW5nZWQsIGluc2VydGVkLCBkaXNjYXJkZWQsIGZpcnN0LnNvdXJjZSwgZmlyc3Quc291cmNlS2V5KTtcbiAgICAgICAgcmVtb3ZlRnJvbUFycmF5KHRoaXMuZW1pdFF1ZXVlLCBmaXJzdCk7XG4gICAgICAgIGZpcnN0LnJlc29sdmUoKTtcbiAgICAgICAgaWYgKHRoaXMuZW1pdFF1ZXVlLmxlbmd0aCA+IDApIHtcbiAgICAgICAgICAgIHRoaXMucG9wUXVldWUoKTtcbiAgICAgICAgfVxuICAgIH1cbiAgICBtZXJnZVBheWxvYWRzT250b01hc3RlcihwYXlsb2Fkcykge1xuICAgICAgICBjb25zdCBjaGFuZ2VkID0gW107XG4gICAgICAgIGNvbnN0IGluc2VydGVkID0gW107XG4gICAgICAgIGNvbnN0IGRpc2NhcmRlZCA9IFtdO1xuICAgICAgICBmb3IgKGNvbnN0IHBheWxvYWQgb2YgcGF5bG9hZHMpIHtcbiAgICAgICAgICAgIGlmICghcGF5bG9hZC51dWlkIHx8ICFwYXlsb2FkLmNvbnRlbnRfdHlwZSkge1xuICAgICAgICAgICAgICAgIGNvbnNvbGUuZXJyb3IoJ1BheWxvYWQgaXMgY29ycnVwdDonLCBwYXlsb2FkKTtcbiAgICAgICAgICAgICAgICBjb250aW51ZTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGNvbnN0IG1hc3RlclBheWxvYWQgPSB0aGlzLmNvbGxlY3Rpb24uZmluZChwYXlsb2FkLnV1aWQpO1xuICAgICAgICAgICAgY29uc3QgbmV3UGF5bG9hZCA9IG1hc3RlclBheWxvYWQgPyBQYXlsb2FkQnlNZXJnaW5nKG1hc3RlclBheWxvYWQsIHBheWxvYWQpIDogcGF5bG9hZDtcbiAgICAgICAgICAgIC8qKiBUaGUgaXRlbSBoYXMgYmVlbiBkZWxldGVkIGFuZCBzeW5jZWQsXG4gICAgICAgICAgICAgKiBhbmQgY2FuIHRodXMgYmUgcmVtb3ZlZCBmcm9tIG91ciBsb2NhbCByZWNvcmQgKi9cbiAgICAgICAgICAgIGlmIChuZXdQYXlsb2FkLmRpc2NhcmRhYmxlKSB7XG4gICAgICAgICAgICAgICAgdGhpcy5jb2xsZWN0aW9uLmRpc2NhcmQobmV3UGF5bG9hZCk7XG4gICAgICAgICAgICAgICAgZGlzY2FyZGVkLnB1c2gobmV3UGF5bG9hZCk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgICAgICB0aGlzLmNvbGxlY3Rpb24uc2V0KG5ld1BheWxvYWQpO1xuICAgICAgICAgICAgICAgIGlmICghbWFzdGVyUGF5bG9hZCkge1xuICAgICAgICAgICAgICAgICAgICBpbnNlcnRlZC5wdXNoKG5ld1BheWxvYWQpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgY2hhbmdlZC5wdXNoKG5ld1BheWxvYWQpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICByZXR1cm4geyBjaGFuZ2VkLCBpbnNlcnRlZCwgZGlzY2FyZGVkIH07XG4gICAgfVxuICAgIC8qKlxuICAgICAqIE5vdGlmaWVzIG9ic2VydmVycyB3aGVuIGFuIGl0ZW0gaGFzIGJlZW4gbWFwcGVkLlxuICAgICAqIEBwYXJhbSB0eXBlcyAtIEFuIGFycmF5IG9mIGNvbnRlbnQgdHlwZXMgdG8gbGlzdGVuIGZvclxuICAgICAqIEBwYXJhbSBwcmlvcml0eSAtIFRoZSBsb3dlciB0aGUgcHJpb3JpdHksIHRoZSBlYXJsaWVyIHRoZSBmdW5jdGlvbiBpcyBjYWxsZWRcbiAgICAgKiAgd3J0IHRvIG90aGVyIG9ic2VydmVyc1xuICAgICAqL1xuICAgIGFkZE9ic2VydmVyKHR5cGVzLCBjYWxsYmFjaywgcHJpb3JpdHkgPSAxKSB7XG4gICAgICAgIGlmICghQXJyYXkuaXNBcnJheSh0eXBlcykpIHtcbiAgICAgICAgICAgIHR5cGVzID0gW3R5cGVzXTtcbiAgICAgICAgfVxuICAgICAgICBjb25zdCBvYnNlcnZlciA9IHtcbiAgICAgICAgICAgIHR5cGVzLFxuICAgICAgICAgICAgcHJpb3JpdHksXG4gICAgICAgICAgICBjYWxsYmFja1xuICAgICAgICB9O1xuICAgICAgICB0aGlzLmNoYW5nZU9ic2VydmVycy5wdXNoKG9ic2VydmVyKTtcbiAgICAgICAgcmV0dXJuICgpID0+IHtcbiAgICAgICAgICAgIHJlbW92ZUZyb21BcnJheSh0aGlzLmNoYW5nZU9ic2VydmVycywgb2JzZXJ2ZXIpO1xuICAgICAgICB9O1xuICAgIH1cbiAgICAvKipcbiAgICAgKiBUaGlzIGZ1bmN0aW9uIGlzIG1vc3RseSBmb3IgaW50ZXJuYWwgdXNlLCBidXQgY2FuIGJlIHVzZWQgZXh0ZXJuYWxseSBieSBjb25zdW1lcnMgd2hvXG4gICAgICogZXhwbGljaXRlbHkgdW5kZXJzdGFuZCB3aGF0IHRoZXkgYXJlIGRvaW5nICh3YW50IHRvIHByb3BhZ2F0ZSBtb2RlbCBzdGF0ZSB3aXRob3V0IG1hcHBpbmcpXG4gICAgICovXG4gICAgbm90aWZ5Q2hhbmdlT2JzZXJ2ZXJzKGNoYW5nZWQsIGluc2VydGVkLCBkaXNjYXJkZWQsIHNvdXJjZSwgc291cmNlS2V5KSB7XG4gICAgICAgIC8qKiBTbGljZSB0aGUgb2JzZXJ2ZXJzIGFycmF5IGFzIHNvcnQgbW9kaWZpZXMgaW4tcGxhY2UgKi9cbiAgICAgICAgY29uc3Qgb2JzZXJ2ZXJzID0gdGhpcy5jaGFuZ2VPYnNlcnZlcnMuc2xpY2UoKS5zb3J0KChhLCBiKSA9PiB7XG4gICAgICAgICAgICByZXR1cm4gYS5wcmlvcml0eSA8IGIucHJpb3JpdHkgPyAtMSA6IDE7XG4gICAgICAgIH0pO1xuICAgICAgICBjb25zdCBmaWx0ZXIgPSAocGF5bG9hZHMsIHR5cGVzKSA9PiB7XG4gICAgICAgICAgICByZXR1cm4gdHlwZXMuaW5jbHVkZXMoQ29udGVudFR5cGUuQW55KVxuICAgICAgICAgICAgICAgID8gcGF5bG9hZHMuc2xpY2UoKVxuICAgICAgICAgICAgICAgIDogcGF5bG9hZHMuc2xpY2UoKS5maWx0ZXIoKHBheWxvYWQpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHR5cGVzLmluY2x1ZGVzKHBheWxvYWQuY29udGVudF90eXBlKTtcbiAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgfTtcbiAgICAgICAgZm9yIChjb25zdCBvYnNlcnZlciBvZiBvYnNlcnZlcnMpIHtcbiAgICAgICAgICAgIG9ic2VydmVyLmNhbGxiYWNrKGZpbHRlcihjaGFuZ2VkLCBvYnNlcnZlci50eXBlcyksIGZpbHRlcihpbnNlcnRlZCwgb2JzZXJ2ZXIudHlwZXMpLCBmaWx0ZXIoZGlzY2FyZGVkLCBvYnNlcnZlci50eXBlcyksIHNvdXJjZSwgc291cmNlS2V5KTtcbiAgICAgICAgfVxuICAgIH1cbiAgICAvKipcbiAgICAgKiBJbXBvcnRzIGFuIGFycmF5IG9mIHBheWxvYWRzIGZyb20gYW4gZXh0ZXJuYWwgc291cmNlIChzdWNoIGFzIGEgYmFja3VwIGZpbGUpXG4gICAgICogYW5kIG1hcmtzIHRoZSBpdGVtcyBhcyBkaXJ0eS5cbiAgICAgKiBAcmV0dXJucyBSZXN1bHRpbmcgaXRlbXNcbiAgICAgKi9cbiAgICBhc3luYyBpbXBvcnRQYXlsb2FkcyhwYXlsb2Fkcykge1xuICAgICAgICBjb25zdCBkZWx0YSA9IG5ldyBEZWx0YUZpbGVJbXBvcnQodGhpcy5nZXRNYXN0ZXJDb2xsZWN0aW9uKCksIEltbXV0YWJsZVBheWxvYWRDb2xsZWN0aW9uLldpdGhQYXlsb2FkcyhwYXlsb2FkcywgUGF5bG9hZFNvdXJjZS5GaWxlSW1wb3J0KSk7XG4gICAgICAgIGNvbnN0IGNvbGxlY3Rpb24gPSBhd2FpdCBkZWx0YS5yZXN1bHRpbmdDb2xsZWN0aW9uKCk7XG4gICAgICAgIGF3YWl0IHRoaXMuZW1pdENvbGxlY3Rpb24oY29sbGVjdGlvbik7XG4gICAgICAgIHJldHVybiBVdWlkcyhjb2xsZWN0aW9uLnBheWxvYWRzKTtcbiAgICB9XG4gICAgcmVtb3ZlUGF5bG9hZExvY2FsbHkocGF5bG9hZCkge1xuICAgICAgICB0aGlzLmNvbGxlY3Rpb24uZGlzY2FyZChwYXlsb2FkKTtcbiAgICB9XG59XG4iXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7Ozs7Ozs7Ozs7O0FBVUE7QUFBQTtBQUNBO0FBQUE7QUFBQTtBQUNBO0FBREE7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBSkE7QUFLQTtBQUNBOzs7Ozs7O0FBUEE7QUFBQTtBQUFBO0FBYUE7QUFDQTtBQWRBO0FBQUE7QUFBQTtBQWdCQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBbkJBO0FBQUE7QUFBQTtBQXFCQTtBQUNBO0FBdEJBO0FBQUE7QUFBQTtBQXdCQTtBQUNBO0FBQ0E7Ozs7O0FBMUJBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUNBO0FBREE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFDQTtBQURBO0FBQUE7QUFBQTtBQUNBO0FBREE7QUFBQTtBQWlDQTs7Ozs7O0FBakNBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQ0E7QUFEQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUNBO0FBREE7QUFBQTtBQUFBO0FBQ0E7QUFEQTtBQUFBO0FBeUNBOzs7OztBQXpDQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQ0E7QUFEQTtBQUFBO0FBQUE7QUFBQTtBQThDQTtBQUNBO0FBQ0E7QUFDQTtBQWpEQTtBQWtEQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBSkE7QUFDQTtBQUtBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUE1REE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFDQTtBQURBO0FBQUE7QUFBQTtBQUNBO0FBREE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFDQTtBQURBO0FBQUE7QUFBQTtBQUFBO0FBOERBO0FBOURBO0FBZ0VBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUF0RUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFDQTtBQURBO0FBQUE7QUFBQTtBQUNBO0FBREE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQXdFQTtBQUNBO0FBQ0E7QUFIQTtBQUFBO0FBQUE7QUFDQTtBQURBO0FBSUE7QUFBQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTs7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFFQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUExQkE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUNBO0FBMEJBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFDQTtBQUNBOzs7Ozs7O0FBcEdBO0FBQUE7QUFBQTtBQTBHQTtBQUNBO0FBREE7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFIQTtBQUtBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7Ozs7QUF4SEE7QUFBQTtBQUFBO0FBNkhBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBR0E7QUFDQTtBQUNBO0FBQ0E7QUFaQTtBQUFBO0FBQUE7QUFDQTtBQURBO0FBWUE7QUFBQTtBQUNBO0FBQ0E7QUFkQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBZUE7QUFDQTs7Ozs7O0FBNUlBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQWtKQTtBQWxKQTtBQUFBO0FBQ0E7QUFEQTtBQW1KQTtBQW5KQTtBQUFBO0FBQ0E7QUFEQTtBQUFBO0FBQ0E7QUFEQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUNBO0FBREE7QUFBQTtBQUFBO0FBQ0E7QUFEQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBd0pBO0FBQ0E7QUF6SkE7QUFDQTtBQURBO0FBQUEiLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./lib/services/model_manager.ts\n')},"./lib/services/privileges_service.ts":
|
||
/*!********************************************!*\
|
||
!*** ./lib/services/privileges_service.ts ***!
|
||
\********************************************/
|
||
/*! exports provided: PrivilegeSessionLength, SNPrivilegesService */function(module,__webpack_exports__,__webpack_require__){"use strict";eval('__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "PrivilegeSessionLength", function() { return PrivilegeSessionLength; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "SNPrivilegesService", function() { return SNPrivilegesService; });\n/* harmony import */ var _babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @babel/runtime/regenerator */ "./node_modules/@babel/runtime/regenerator/index.js");\n/* harmony import */ var _babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var _Models_functions__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! @Models/functions */ "./lib/models/functions.ts");\n/* harmony import */ var _Lib_services_pure_service__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! @Lib/services/pure_service */ "./lib/services/pure_service.ts");\n/* harmony import */ var _Models_core_predicate__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! @Models/core/predicate */ "./lib/models/core/predicate.ts");\n/* harmony import */ var _Lib_storage_keys__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! @Lib/storage_keys */ "./lib/storage_keys.ts");\n/* harmony import */ var _Lib_models__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! @Lib/models */ "./lib/models/index.ts");\n/* harmony import */ var _Models_app_privileges__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! @Models/app/privileges */ "./lib/models/app/privileges.ts");\n\n\nvar _CredentialsMetadata, _ActionsMetadata;\n\nfunction _typeof(obj) { "@babel/helpers - typeof"; if (typeof Symbol === "function" && typeof Symbol.iterator === "symbol") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }; } return _typeof(obj); }\n\nfunction asyncGeneratorStep(gen, resolve, reject, _next, _throw, key, arg) { try { var info = gen[key](arg); var value = info.value; } catch (error) { reject(error); return; } if (info.done) { resolve(value); } else { Promise.resolve(value).then(_next, _throw); } }\n\nfunction _asyncToGenerator(fn) { return function () { var self = this, args = arguments; return new Promise(function (resolve, reject) { var gen = fn.apply(self, args); function _next(value) { asyncGeneratorStep(gen, resolve, reject, _next, _throw, "next", value); } function _throw(err) { asyncGeneratorStep(gen, resolve, reject, _next, _throw, "throw", err); } _next(undefined); }); }; }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } }\n\nfunction _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); } }\n\nfunction _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; }\n\nfunction _possibleConstructorReturn(self, call) { if (call && (_typeof(call) === "object" || typeof call === "function")) { return call; } return _assertThisInitialized(self); }\n\nfunction _assertThisInitialized(self) { if (self === void 0) { throw new ReferenceError("this hasn\'t been initialised - super() hasn\'t been called"); } return self; }\n\nfunction _get(target, property, receiver) { if (typeof Reflect !== "undefined" && Reflect.get) { _get = Reflect.get; } else { _get = function _get(target, property, receiver) { var base = _superPropBase(target, property); if (!base) return; var desc = Object.getOwnPropertyDescriptor(base, property); if (desc.get) { return desc.get.call(receiver); } return desc.value; }; } return _get(target, property, receiver || target); }\n\nfunction _superPropBase(object, property) { while (!Object.prototype.hasOwnProperty.call(object, property)) { object = _getPrototypeOf(object); if (object === null) break; } return object; }\n\nfunction _getPrototypeOf(o) { _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function _getPrototypeOf(o) { return o.__proto__ || Object.getPrototypeOf(o); }; return _getPrototypeOf(o); }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== "function" && superClass !== null) { throw new TypeError("Super expression must either be null or a function"); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, writable: true, configurable: true } }); if (superClass) _setPrototypeOf(subClass, superClass); }\n\nfunction _setPrototypeOf(o, p) { _setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) { o.__proto__ = p; return o; }; return _setPrototypeOf(o, p); }\n\nfunction _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\n\n\n\n\n\n\n\nvar PrivilegeSessionLength;\n\n(function (PrivilegeSessionLength) {\n PrivilegeSessionLength[PrivilegeSessionLength["None"] = 0] = "None";\n PrivilegeSessionLength[PrivilegeSessionLength["FiveMinutes"] = 300] = "FiveMinutes";\n PrivilegeSessionLength[PrivilegeSessionLength["OneHour"] = 3600] = "OneHour";\n PrivilegeSessionLength[PrivilegeSessionLength["OneWeek"] = 604800] = "OneWeek";\n})(PrivilegeSessionLength || (PrivilegeSessionLength = {}));\n\nvar CredentialsMetadata = (_CredentialsMetadata = {}, _defineProperty(_CredentialsMetadata, _Models_app_privileges__WEBPACK_IMPORTED_MODULE_6__["PrivilegeCredential"].AccountPassword, {\n label: \'Account Password\',\n prompt: \'Please enter your account password.\'\n}), _defineProperty(_CredentialsMetadata, _Models_app_privileges__WEBPACK_IMPORTED_MODULE_6__["PrivilegeCredential"].LocalPasscode, {\n label: \'Local Passcode\',\n prompt: \'Please enter your local passcode.\'\n}), _CredentialsMetadata);\nvar ActionsMetadata = (_ActionsMetadata = {}, _defineProperty(_ActionsMetadata, _Models_app_privileges__WEBPACK_IMPORTED_MODULE_6__["ProtectedAction"].ManageExtensions, {\n label: \'Manage Extensions\'\n}), _defineProperty(_ActionsMetadata, _Models_app_privileges__WEBPACK_IMPORTED_MODULE_6__["ProtectedAction"].ManageBackups, {\n label: \'Download/Import Backups\'\n}), _defineProperty(_ActionsMetadata, _Models_app_privileges__WEBPACK_IMPORTED_MODULE_6__["ProtectedAction"].ViewProtectedNotes, {\n label: \'View Protected Notes\'\n}), _defineProperty(_ActionsMetadata, _Models_app_privileges__WEBPACK_IMPORTED_MODULE_6__["ProtectedAction"].ManagePrivileges, {\n label: \'Manage Privileges\'\n}), _defineProperty(_ActionsMetadata, _Models_app_privileges__WEBPACK_IMPORTED_MODULE_6__["ProtectedAction"].ManagePasscode, {\n label: \'Manage Passcode\'\n}), _defineProperty(_ActionsMetadata, _Models_app_privileges__WEBPACK_IMPORTED_MODULE_6__["ProtectedAction"].DeleteNote, {\n label: \'Delete Notes\'\n}), _ActionsMetadata);\n/**\n * Privileges allows certain actions within the application to require extra authentication.\n * For example, the privileges service exposes functions that allow the action of deleting\n * a note or viewing a note to require extra authentication.\n * Privileges are a superficial-level locking feature; they do not deal at all with underlying\n * data state. For example, viewing a protected note may require extra authentication,\n * but the underlying note data may already be decrypted in application memory, whether or not\n * the user has yet authenticated this action.\n */\n\nvar SNPrivilegesService = /*#__PURE__*/function (_PureService) {\n _inherits(SNPrivilegesService, _PureService);\n\n // private sessionLengths: PrivilegeSessionLength[] = []\n function SNPrivilegesService(itemManager, syncService, singletonManager, protocolService, storageService, sessionManager) {\n var _this;\n\n _classCallCheck(this, SNPrivilegesService);\n\n _this = _possibleConstructorReturn(this, _getPrototypeOf(SNPrivilegesService).call(this));\n _this.availableActions = [];\n _this.availableCredentials = [];\n _this.itemManager = itemManager;\n _this.syncService = syncService;\n _this.singletonManager = singletonManager;\n _this.protocolService = protocolService;\n _this.storageService = storageService;\n _this.sessionManager = sessionManager;\n\n _this.loadDefaults();\n\n return _this;\n }\n\n _createClass(SNPrivilegesService, [{\n key: "deinit",\n value: function deinit() {\n this.itemManager = undefined;\n this.syncService = undefined;\n this.singletonManager = undefined;\n this.protocolService = undefined;\n this.storageService = undefined;\n this.sessionManager = undefined;\n\n _get(_getPrototypeOf(SNPrivilegesService.prototype), "deinit", this).call(this);\n }\n }, {\n key: "loadDefaults",\n value: function loadDefaults() {\n this.availableActions = Object.keys(_Models_app_privileges__WEBPACK_IMPORTED_MODULE_6__["ProtectedAction"]).map(function (key) {\n return _Models_app_privileges__WEBPACK_IMPORTED_MODULE_6__["ProtectedAction"][key];\n });\n this.availableCredentials = [_Models_app_privileges__WEBPACK_IMPORTED_MODULE_6__["PrivilegeCredential"].AccountPassword, _Models_app_privileges__WEBPACK_IMPORTED_MODULE_6__["PrivilegeCredential"].LocalPasscode];\n }\n }, {\n key: "getAvailableActions",\n value: function getAvailableActions() {\n return this.availableActions;\n }\n }, {\n key: "getAvailableCredentials",\n value: function getAvailableCredentials() {\n return this.availableCredentials;\n }\n /**\n * The credentials currently required to perform this action.\n */\n\n }, {\n key: "netCredentialsForAction",\n value: function () {\n var _netCredentialsForAction = _asyncToGenerator( /*#__PURE__*/_babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0___default.a.mark(function _callee(action) {\n var privileges, credentials, netCredentials, _iteratorNormalCompletion, _didIteratorError, _iteratorError, _iterator, _step, credential, isOnline, hasPasscode;\n\n return _babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0___default.a.wrap(function _callee$(_context) {\n while (1) {\n switch (_context.prev = _context.next) {\n case 0:\n _context.next = 2;\n return this.getPrivileges();\n\n case 2:\n privileges = _context.sent;\n credentials = privileges.getCredentialsForAction(action);\n netCredentials = [];\n _iteratorNormalCompletion = true;\n _didIteratorError = false;\n _iteratorError = undefined;\n _context.prev = 8;\n _iterator = credentials[Symbol.iterator]();\n\n case 10:\n if (_iteratorNormalCompletion = (_step = _iterator.next()).done) {\n _context.next = 27;\n break;\n }\n\n credential = _step.value;\n\n if (!(credential === _Models_app_privileges__WEBPACK_IMPORTED_MODULE_6__["PrivilegeCredential"].AccountPassword)) {\n _context.next = 19;\n break;\n }\n\n _context.next = 15;\n return this.sessionManager.online();\n\n case 15:\n isOnline = _context.sent;\n\n if (isOnline) {\n netCredentials.push(credential);\n }\n\n _context.next = 24;\n break;\n\n case 19:\n if (!(credential === _Models_app_privileges__WEBPACK_IMPORTED_MODULE_6__["PrivilegeCredential"].LocalPasscode)) {\n _context.next = 24;\n break;\n }\n\n _context.next = 22;\n return this.protocolService.hasRootKeyWrapper();\n\n case 22:\n hasPasscode = _context.sent;\n\n if (hasPasscode) {\n netCredentials.push(credential);\n }\n\n case 24:\n _iteratorNormalCompletion = true;\n _context.next = 10;\n break;\n\n case 27:\n _context.next = 33;\n break;\n\n case 29:\n _context.prev = 29;\n _context.t0 = _context["catch"](8);\n _didIteratorError = true;\n _iteratorError = _context.t0;\n\n case 33:\n _context.prev = 33;\n _context.prev = 34;\n\n if (!_iteratorNormalCompletion && _iterator.return != null) {\n _iterator.return();\n }\n\n case 36:\n _context.prev = 36;\n\n if (!_didIteratorError) {\n _context.next = 39;\n break;\n }\n\n throw _iteratorError;\n\n case 39:\n return _context.finish(36);\n\n case 40:\n return _context.finish(33);\n\n case 41:\n return _context.abrupt("return", netCredentials);\n\n case 42:\n case "end":\n return _context.stop();\n }\n }\n }, _callee, this, [[8, 29, 33, 41], [34,, 36, 40]]);\n }));\n\n function netCredentialsForAction(_x) {\n return _netCredentialsForAction.apply(this, arguments);\n }\n\n return netCredentialsForAction;\n }()\n }, {\n key: "getPrivileges",\n value: function () {\n var _getPrivileges = _asyncToGenerator( /*#__PURE__*/_babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0___default.a.mark(function _callee2() {\n var contentType, predicate;\n return _babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0___default.a.wrap(function _callee2$(_context2) {\n while (1) {\n switch (_context2.prev = _context2.next) {\n case 0:\n contentType = _Lib_models__WEBPACK_IMPORTED_MODULE_5__["ContentType"].Privileges;\n predicate = new _Models_core_predicate__WEBPACK_IMPORTED_MODULE_3__["SNPredicate"](\'content_type\', \'=\', contentType);\n return _context2.abrupt("return", this.singletonManager.findOrCreateSingleton(predicate, contentType, Object(_Models_functions__WEBPACK_IMPORTED_MODULE_1__["FillItemContent"])({})));\n\n case 3:\n case "end":\n return _context2.stop();\n }\n }\n }, _callee2, this);\n }));\n\n function getPrivileges() {\n return _getPrivileges.apply(this, arguments);\n }\n\n return getPrivileges;\n }()\n }, {\n key: "setSessionLength",\n value: function () {\n var _setSessionLength = _asyncToGenerator( /*#__PURE__*/_babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0___default.a.mark(function _callee3(length) {\n var addSecondsToNow, expiresAt;\n return _babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0___default.a.wrap(function _callee3$(_context3) {\n while (1) {\n switch (_context3.prev = _context3.next) {\n case 0:\n addSecondsToNow = function addSecondsToNow(seconds) {\n var date = new Date();\n date.setSeconds(date.getSeconds() + seconds);\n return date;\n };\n\n expiresAt = addSecondsToNow(length);\n _context3.next = 4;\n return this.storageService.setValue(_Lib_storage_keys__WEBPACK_IMPORTED_MODULE_4__["StorageKey"].PrivilegesExpirey, expiresAt);\n\n case 4:\n _context3.next = 6;\n return this.storageService.setValue(_Lib_storage_keys__WEBPACK_IMPORTED_MODULE_4__["StorageKey"].PrivilegesSessionLength, length);\n\n case 6:\n case "end":\n return _context3.stop();\n }\n }\n }, _callee3, this);\n }));\n\n function setSessionLength(_x2) {\n return _setSessionLength.apply(this, arguments);\n }\n\n return setSessionLength;\n }()\n }, {\n key: "clearSession",\n value: function () {\n var _clearSession = _asyncToGenerator( /*#__PURE__*/_babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0___default.a.mark(function _callee4() {\n return _babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0___default.a.wrap(function _callee4$(_context4) {\n while (1) {\n switch (_context4.prev = _context4.next) {\n case 0:\n return _context4.abrupt("return", this.setSessionLength(PrivilegeSessionLength.None));\n\n case 1:\n case "end":\n return _context4.stop();\n }\n }\n }, _callee4, this);\n }));\n\n function clearSession() {\n return _clearSession.apply(this, arguments);\n }\n\n return clearSession;\n }()\n }, {\n key: "getSelectedSessionLength",\n value: function () {\n var _getSelectedSessionLength = _asyncToGenerator( /*#__PURE__*/_babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0___default.a.mark(function _callee5() {\n var length;\n return _babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0___default.a.wrap(function _callee5$(_context5) {\n while (1) {\n switch (_context5.prev = _context5.next) {\n case 0:\n _context5.next = 2;\n return this.storageService.getValue(_Lib_storage_keys__WEBPACK_IMPORTED_MODULE_4__["StorageKey"].PrivilegesSessionLength);\n\n case 2:\n length = _context5.sent;\n\n if (!length) {\n _context5.next = 7;\n break;\n }\n\n return _context5.abrupt("return", length);\n\n case 7:\n return _context5.abrupt("return", PrivilegeSessionLength.None);\n\n case 8:\n case "end":\n return _context5.stop();\n }\n }\n }, _callee5, this);\n }));\n\n function getSelectedSessionLength() {\n return _getSelectedSessionLength.apply(this, arguments);\n }\n\n return getSelectedSessionLength;\n }()\n }, {\n key: "getSessionExpirey",\n value: function () {\n var _getSessionExpirey = _asyncToGenerator( /*#__PURE__*/_babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0___default.a.mark(function _callee6() {\n var expiresAt;\n return _babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0___default.a.wrap(function _callee6$(_context6) {\n while (1) {\n switch (_context6.prev = _context6.next) {\n case 0:\n _context6.next = 2;\n return this.storageService.getValue(_Lib_storage_keys__WEBPACK_IMPORTED_MODULE_4__["StorageKey"].PrivilegesExpirey);\n\n case 2:\n expiresAt = _context6.sent;\n\n if (!expiresAt) {\n _context6.next = 7;\n break;\n }\n\n return _context6.abrupt("return", new Date(expiresAt));\n\n case 7:\n return _context6.abrupt("return", new Date());\n\n case 8:\n case "end":\n return _context6.stop();\n }\n }\n }, _callee6, this);\n }));\n\n function getSessionExpirey() {\n return _getSessionExpirey.apply(this, arguments);\n }\n\n return getSessionExpirey;\n }()\n }, {\n key: "actionHasPrivilegesConfigured",\n value: function () {\n var _actionHasPrivilegesConfigured = _asyncToGenerator( /*#__PURE__*/_babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0___default.a.mark(function _callee7(action) {\n return _babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0___default.a.wrap(function _callee7$(_context7) {\n while (1) {\n switch (_context7.prev = _context7.next) {\n case 0:\n _context7.next = 2;\n return this.netCredentialsForAction(action);\n\n case 2:\n _context7.t0 = _context7.sent.length;\n return _context7.abrupt("return", _context7.t0 > 0);\n\n case 4:\n case "end":\n return _context7.stop();\n }\n }\n }, _callee7, this);\n }));\n\n function actionHasPrivilegesConfigured(_x3) {\n return _actionHasPrivilegesConfigured.apply(this, arguments);\n }\n\n return actionHasPrivilegesConfigured;\n }()\n /**\n * Whether the action requires present authentication.\n */\n\n }, {\n key: "actionRequiresPrivilege",\n value: function () {\n var _actionRequiresPrivilege = _asyncToGenerator( /*#__PURE__*/_babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0___default.a.mark(function _callee8(action) {\n var expiresAt, netCredentials;\n return _babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0___default.a.wrap(function _callee8$(_context8) {\n while (1) {\n switch (_context8.prev = _context8.next) {\n case 0:\n _context8.next = 2;\n return this.getSessionExpirey();\n\n case 2:\n expiresAt = _context8.sent;\n\n if (!(expiresAt > new Date())) {\n _context8.next = 5;\n break;\n }\n\n return _context8.abrupt("return", false);\n\n case 5:\n _context8.next = 7;\n return this.netCredentialsForAction(action);\n\n case 7:\n netCredentials = _context8.sent;\n return _context8.abrupt("return", netCredentials.length > 0);\n\n case 9:\n case "end":\n return _context8.stop();\n }\n }\n }, _callee8, this);\n }));\n\n function actionRequiresPrivilege(_x4) {\n return _actionRequiresPrivilege.apply(this, arguments);\n }\n\n return actionRequiresPrivilege;\n }()\n }, {\n key: "authenticateAction",\n value: function () {\n var _authenticateAction = _asyncToGenerator( /*#__PURE__*/_babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0___default.a.mark(function _callee9(action, credentialAuthMapping) {\n var requiredCredentials, successfulCredentials, failedCredentials, _iteratorNormalCompletion2, _didIteratorError2, _iteratorError2, _iterator2, _step2, credential, passesAuth;\n\n return _babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0___default.a.wrap(function _callee9$(_context9) {\n while (1) {\n switch (_context9.prev = _context9.next) {\n case 0:\n _context9.next = 2;\n return this.netCredentialsForAction(action);\n\n case 2:\n requiredCredentials = _context9.sent;\n successfulCredentials = [];\n failedCredentials = [];\n _iteratorNormalCompletion2 = true;\n _didIteratorError2 = false;\n _iteratorError2 = undefined;\n _context9.prev = 8;\n _iterator2 = requiredCredentials[Symbol.iterator]();\n\n case 10:\n if (_iteratorNormalCompletion2 = (_step2 = _iterator2.next()).done) {\n _context9.next = 19;\n break;\n }\n\n credential = _step2.value;\n _context9.next = 14;\n return this.verifyAuthenticationParameters(credential, credentialAuthMapping[credential]);\n\n case 14:\n passesAuth = _context9.sent;\n\n if (passesAuth) {\n successfulCredentials.push(credential);\n } else {\n failedCredentials.push(credential);\n }\n\n case 16:\n _iteratorNormalCompletion2 = true;\n _context9.next = 10;\n break;\n\n case 19:\n _context9.next = 25;\n break;\n\n case 21:\n _context9.prev = 21;\n _context9.t0 = _context9["catch"](8);\n _didIteratorError2 = true;\n _iteratorError2 = _context9.t0;\n\n case 25:\n _context9.prev = 25;\n _context9.prev = 26;\n\n if (!_iteratorNormalCompletion2 && _iterator2.return != null) {\n _iterator2.return();\n }\n\n case 28:\n _context9.prev = 28;\n\n if (!_didIteratorError2) {\n _context9.next = 31;\n break;\n }\n\n throw _iteratorError2;\n\n case 31:\n return _context9.finish(28);\n\n case 32:\n return _context9.finish(25);\n\n case 33:\n return _context9.abrupt("return", {\n success: failedCredentials.length === 0,\n successfulCredentials: successfulCredentials,\n failedCredentials: failedCredentials\n });\n\n case 34:\n case "end":\n return _context9.stop();\n }\n }\n }, _callee9, this, [[8, 21, 25, 33], [26,, 28, 32]]);\n }));\n\n function authenticateAction(_x5, _x6) {\n return _authenticateAction.apply(this, arguments);\n }\n\n return authenticateAction;\n }()\n }, {\n key: "verifyAuthenticationParameters",\n value: function () {\n var _verifyAuthenticationParameters = _asyncToGenerator( /*#__PURE__*/_babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0___default.a.mark(function _callee10(credential, value) {\n var _ref, valid, _ref2, _valid;\n\n return _babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0___default.a.wrap(function _callee10$(_context10) {\n while (1) {\n switch (_context10.prev = _context10.next) {\n case 0:\n if (!(credential === _Models_app_privileges__WEBPACK_IMPORTED_MODULE_6__["PrivilegeCredential"].AccountPassword)) {\n _context10.next = 8;\n break;\n }\n\n _context10.next = 3;\n return this.protocolService.validateAccountPassword(value);\n\n case 3:\n _ref = _context10.sent;\n valid = _ref.valid;\n return _context10.abrupt("return", valid);\n\n case 8:\n if (!(credential === _Models_app_privileges__WEBPACK_IMPORTED_MODULE_6__["PrivilegeCredential"].LocalPasscode)) {\n _context10.next = 14;\n break;\n }\n\n _context10.next = 11;\n return this.protocolService.validatePasscode(value);\n\n case 11:\n _ref2 = _context10.sent;\n _valid = _ref2.valid;\n return _context10.abrupt("return", _valid);\n\n case 14:\n case "end":\n return _context10.stop();\n }\n }\n }, _callee10, this);\n }));\n\n function verifyAuthenticationParameters(_x7, _x8) {\n return _verifyAuthenticationParameters.apply(this, arguments);\n }\n\n return verifyAuthenticationParameters;\n }()\n }, {\n key: "displayInfoForCredential",\n value: function displayInfoForCredential(credential) {\n return CredentialsMetadata[credential];\n }\n }, {\n key: "displayInfoForAction",\n value: function displayInfoForAction(action) {\n return ActionsMetadata[action];\n }\n }, {\n key: "getSessionLengthOptions",\n value: function getSessionLengthOptions() {\n return [{\n value: PrivilegeSessionLength.None,\n label: "Don\'t Remember"\n }, {\n value: PrivilegeSessionLength.FiveMinutes,\n label: \'5 Minutes\'\n }, {\n value: PrivilegeSessionLength.OneHour,\n label: \'1 Hour\'\n }, {\n value: PrivilegeSessionLength.OneWeek,\n label: \'1 Week\'\n }];\n }\n }]);\n\n return SNPrivilegesService;\n}(_Lib_services_pure_service__WEBPACK_IMPORTED_MODULE_2__["PureService"]);//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9saWIvc2VydmljZXMvcHJpdmlsZWdlc19zZXJ2aWNlLnRzLmpzIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vU05MaWJyYXJ5Ly4vbGliL3NlcnZpY2VzL3ByaXZpbGVnZXNfc2VydmljZS50cz8zNWNkIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEZpbGxJdGVtQ29udGVudCB9IGZyb20gJ0BNb2RlbHMvZnVuY3Rpb25zJztcbmltcG9ydCB7IFB1cmVTZXJ2aWNlIH0gZnJvbSAnQExpYi9zZXJ2aWNlcy9wdXJlX3NlcnZpY2UnO1xuaW1wb3J0IHsgU05QcmVkaWNhdGUgfSBmcm9tICdATW9kZWxzL2NvcmUvcHJlZGljYXRlJztcbmltcG9ydCB7IFN0b3JhZ2VLZXkgfSBmcm9tICdATGliL3N0b3JhZ2Vfa2V5cyc7XG5pbXBvcnQgeyBDb250ZW50VHlwZSB9IGZyb20gJ0BMaWIvbW9kZWxzJztcbmltcG9ydCB7IFByb3RlY3RlZEFjdGlvbiwgUHJpdmlsZWdlQ3JlZGVudGlhbCB9IGZyb20gJ0BNb2RlbHMvYXBwL3ByaXZpbGVnZXMnO1xuZXhwb3J0IHZhciBQcml2aWxlZ2VTZXNzaW9uTGVuZ3RoO1xuKGZ1bmN0aW9uIChQcml2aWxlZ2VTZXNzaW9uTGVuZ3RoKSB7XG4gICAgUHJpdmlsZWdlU2Vzc2lvbkxlbmd0aFtQcml2aWxlZ2VTZXNzaW9uTGVuZ3RoW1wiTm9uZVwiXSA9IDBdID0gXCJOb25lXCI7XG4gICAgUHJpdmlsZWdlU2Vzc2lvbkxlbmd0aFtQcml2aWxlZ2VTZXNzaW9uTGVuZ3RoW1wiRml2ZU1pbnV0ZXNcIl0gPSAzMDBdID0gXCJGaXZlTWludXRlc1wiO1xuICAgIFByaXZpbGVnZVNlc3Npb25MZW5ndGhbUHJpdmlsZWdlU2Vzc2lvbkxlbmd0aFtcIk9uZUhvdXJcIl0gPSAzNjAwXSA9IFwiT25lSG91clwiO1xuICAgIFByaXZpbGVnZVNlc3Npb25MZW5ndGhbUHJpdmlsZWdlU2Vzc2lvbkxlbmd0aFtcIk9uZVdlZWtcIl0gPSA2MDQ4MDBdID0gXCJPbmVXZWVrXCI7XG59KShQcml2aWxlZ2VTZXNzaW9uTGVuZ3RoIHx8IChQcml2aWxlZ2VTZXNzaW9uTGVuZ3RoID0ge30pKTtcbmNvbnN0IENyZWRlbnRpYWxzTWV0YWRhdGEgPSB7XG4gICAgW1ByaXZpbGVnZUNyZWRlbnRpYWwuQWNjb3VudFBhc3N3b3JkXToge1xuICAgICAgICBsYWJlbDogJ0FjY291bnQgUGFzc3dvcmQnLFxuICAgICAgICBwcm9tcHQ6ICdQbGVhc2UgZW50ZXIgeW91ciBhY2NvdW50IHBhc3N3b3JkLidcbiAgICB9LFxuICAgIFtQcml2aWxlZ2VDcmVkZW50aWFsLkxvY2FsUGFzc2NvZGVdOiB7XG4gICAgICAgIGxhYmVsOiAnTG9jYWwgUGFzc2NvZGUnLFxuICAgICAgICBwcm9tcHQ6ICdQbGVhc2UgZW50ZXIgeW91ciBsb2NhbCBwYXNzY29kZS4nXG4gICAgfVxufTtcbmNvbnN0IEFjdGlvbnNNZXRhZGF0YSA9IHtcbiAgICBbUHJvdGVjdGVkQWN0aW9uLk1hbmFnZUV4dGVuc2lvbnNdOiB7XG4gICAgICAgIGxhYmVsOiAnTWFuYWdlIEV4dGVuc2lvbnMnXG4gICAgfSxcbiAgICBbUHJvdGVjdGVkQWN0aW9uLk1hbmFnZUJhY2t1cHNdOiB7XG4gICAgICAgIGxhYmVsOiAnRG93bmxvYWQvSW1wb3J0IEJhY2t1cHMnXG4gICAgfSxcbiAgICBbUHJvdGVjdGVkQWN0aW9uLlZpZXdQcm90ZWN0ZWROb3Rlc106IHtcbiAgICAgICAgbGFiZWw6ICdWaWV3IFByb3RlY3RlZCBOb3RlcydcbiAgICB9LFxuICAgIFtQcm90ZWN0ZWRBY3Rpb24uTWFuYWdlUHJpdmlsZWdlc106IHtcbiAgICAgICAgbGFiZWw6ICdNYW5hZ2UgUHJpdmlsZWdlcydcbiAgICB9LFxuICAgIFtQcm90ZWN0ZWRBY3Rpb24uTWFuYWdlUGFzc2NvZGVdOiB7XG4gICAgICAgIGxhYmVsOiAnTWFuYWdlIFBhc3Njb2RlJ1xuICAgIH0sXG4gICAgW1Byb3RlY3RlZEFjdGlvbi5EZWxldGVOb3RlXToge1xuICAgICAgICBsYWJlbDogJ0RlbGV0ZSBOb3RlcydcbiAgICB9LFxufTtcbi8qKlxuICogUHJpdmlsZWdlcyBhbGxvd3MgY2VydGFpbiBhY3Rpb25zIHdpdGhpbiB0aGUgYXBwbGljYXRpb24gdG8gcmVxdWlyZSBleHRyYSBhdXRoZW50aWNhdGlvbi5cbiAqIEZvciBleGFtcGxlLCB0aGUgcHJpdmlsZWdlcyBzZXJ2aWNlIGV4cG9zZXMgZnVuY3Rpb25zIHRoYXQgYWxsb3cgdGhlIGFjdGlvbiBvZiBkZWxldGluZ1xuICogYSBub3RlIG9yIHZpZXdpbmcgYSBub3RlIHRvIHJlcXVpcmUgZXh0cmEgYXV0aGVudGljYXRpb24uXG4gKiBQcml2aWxlZ2VzIGFyZSBhIHN1cGVyZmljaWFsLWxldmVsIGxvY2tpbmcgZmVhdHVyZTsgdGhleSBkbyBub3QgZGVhbCBhdCBhbGwgd2l0aCB1bmRlcmx5aW5nXG4gKiBkYXRhIHN0YXRlLiBGb3IgZXhhbXBsZSwgdmlld2luZyBhIHByb3RlY3RlZCBub3RlIG1heSByZXF1aXJlIGV4dHJhIGF1dGhlbnRpY2F0aW9uLFxuICogYnV0IHRoZSB1bmRlcmx5aW5nIG5vdGUgZGF0YSBtYXkgYWxyZWFkeSBiZSBkZWNyeXB0ZWQgaW4gYXBwbGljYXRpb24gbWVtb3J5LCB3aGV0aGVyIG9yIG5vdFxuICogdGhlIHVzZXIgaGFzIHlldCBhdXRoZW50aWNhdGVkIHRoaXMgYWN0aW9uLlxuICovXG5leHBvcnQgY2xhc3MgU05Qcml2aWxlZ2VzU2VydmljZSBleHRlbmRzIFB1cmVTZXJ2aWNlIHtcbiAgICAvLyBwcml2YXRlIHNlc3Npb25MZW5ndGhzOiBQcml2aWxlZ2VTZXNzaW9uTGVuZ3RoW10gPSBbXVxuICAgIGNvbnN0cnVjdG9yKGl0ZW1NYW5hZ2VyLCBzeW5jU2VydmljZSwgc2luZ2xldG9uTWFuYWdlciwgcHJvdG9jb2xTZXJ2aWNlLCBzdG9yYWdlU2VydmljZSwgc2Vzc2lvbk1hbmFnZXIpIHtcbiAgICAgICAgc3VwZXIoKTtcbiAgICAgICAgdGhpcy5hdmFpbGFibGVBY3Rpb25zID0gW107XG4gICAgICAgIHRoaXMuYXZhaWxhYmxlQ3JlZGVudGlhbHMgPSBbXTtcbiAgICAgICAgdGhpcy5pdGVtTWFuYWdlciA9IGl0ZW1NYW5hZ2VyO1xuICAgICAgICB0aGlzLnN5bmNTZXJ2aWNlID0gc3luY1NlcnZpY2U7XG4gICAgICAgIHRoaXMuc2luZ2xldG9uTWFuYWdlciA9IHNpbmdsZXRvbk1hbmFnZXI7XG4gICAgICAgIHRoaXMucHJvdG9jb2xTZXJ2aWNlID0gcHJvdG9jb2xTZXJ2aWNlO1xuICAgICAgICB0aGlzLnN0b3JhZ2VTZXJ2aWNlID0gc3RvcmFnZVNlcnZpY2U7XG4gICAgICAgIHRoaXMuc2Vzc2lvbk1hbmFnZXIgPSBzZXNzaW9uTWFuYWdlcjtcbiAgICAgICAgdGhpcy5sb2FkRGVmYXVsdHMoKTtcbiAgICB9XG4gICAgZGVpbml0KCkge1xuICAgICAgICB0aGlzLml0ZW1NYW5hZ2VyID0gdW5kZWZpbmVkO1xuICAgICAgICB0aGlzLnN5bmNTZXJ2aWNlID0gdW5kZWZpbmVkO1xuICAgICAgICB0aGlzLnNpbmdsZXRvbk1hbmFnZXIgPSB1bmRlZmluZWQ7XG4gICAgICAgIHRoaXMucHJvdG9jb2xTZXJ2aWNlID0gdW5kZWZpbmVkO1xuICAgICAgICB0aGlzLnN0b3JhZ2VTZXJ2aWNlID0gdW5kZWZpbmVkO1xuICAgICAgICB0aGlzLnNlc3Npb25NYW5hZ2VyID0gdW5kZWZpbmVkO1xuICAgICAgICBzdXBlci5kZWluaXQoKTtcbiAgICB9XG4gICAgbG9hZERlZmF1bHRzKCkge1xuICAgICAgICB0aGlzLmF2YWlsYWJsZUFjdGlvbnMgPSBPYmplY3Qua2V5cyhQcm90ZWN0ZWRBY3Rpb24pLm1hcCgoa2V5KSA9PiB7XG4gICAgICAgICAgICByZXR1cm4gUHJvdGVjdGVkQWN0aW9uW2tleV07XG4gICAgICAgIH0pO1xuICAgICAgICB0aGlzLmF2YWlsYWJsZUNyZWRlbnRpYWxzID0gW1xuICAgICAgICAgICAgUHJpdmlsZWdlQ3JlZGVudGlhbC5BY2NvdW50UGFzc3dvcmQsXG4gICAgICAgICAgICBQcml2aWxlZ2VDcmVkZW50aWFsLkxvY2FsUGFzc2NvZGVcbiAgICAgICAgXTtcbiAgICB9XG4gICAgZ2V0QXZhaWxhYmxlQWN0aW9ucygpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuYXZhaWxhYmxlQWN0aW9ucztcbiAgICB9XG4gICAgZ2V0QXZhaWxhYmxlQ3JlZGVudGlhbHMoKSB7XG4gICAgICAgIHJldHVybiB0aGlzLmF2YWlsYWJsZUNyZWRlbnRpYWxzO1xuICAgIH1cbiAgICAvKipcbiAgICAgKiBUaGUgY3JlZGVudGlhbHMgY3VycmVudGx5IHJlcXVpcmVkIHRvIHBlcmZvcm0gdGhpcyBhY3Rpb24uXG4gICAgICovXG4gICAgYXN5bmMgbmV0Q3JlZGVudGlhbHNGb3JBY3Rpb24oYWN0aW9uKSB7XG4gICAgICAgIGNvbnN0IHByaXZpbGVnZXMgPSBhd2FpdCB0aGlzLmdldFByaXZpbGVnZXMoKTtcbiAgICAgICAgY29uc3QgY3JlZGVudGlhbHMgPSBwcml2aWxlZ2VzLmdldENyZWRlbnRpYWxzRm9yQWN0aW9uKGFjdGlvbik7XG4gICAgICAgIGNvbnN0IG5ldENyZWRlbnRpYWxzID0gW107XG4gICAgICAgIGZvciAoY29uc3QgY3JlZGVudGlhbCBvZiBjcmVkZW50aWFscykge1xuICAgICAgICAgICAgaWYgKGNyZWRlbnRpYWwgPT09IFByaXZpbGVnZUNyZWRlbnRpYWwuQWNjb3VudFBhc3N3b3JkKSB7XG4gICAgICAgICAgICAgICAgY29uc3QgaXNPbmxpbmUgPSBhd2FpdCB0aGlzLnNlc3Npb25NYW5hZ2VyLm9ubGluZSgpO1xuICAgICAgICAgICAgICAgIGlmIChpc09ubGluZSkge1xuICAgICAgICAgICAgICAgICAgICBuZXRDcmVkZW50aWFscy5wdXNoKGNyZWRlbnRpYWwpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGVsc2UgaWYgKGNyZWRlbnRpYWwgPT09IFByaXZpbGVnZUNyZWRlbnRpYWwuTG9jYWxQYXNzY29kZSkge1xuICAgICAgICAgICAgICAgIGNvbnN0IGhhc1Bhc3Njb2RlID0gYXdhaXQgdGhpcy5wcm90b2NvbFNlcnZpY2UuaGFzUm9vdEtleVdyYXBwZXIoKTtcbiAgICAgICAgICAgICAgICBpZiAoaGFzUGFzc2NvZGUpIHtcbiAgICAgICAgICAgICAgICAgICAgbmV0Q3JlZGVudGlhbHMucHVzaChjcmVkZW50aWFsKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIG5ldENyZWRlbnRpYWxzO1xuICAgIH1cbiAgICBhc3luYyBnZXRQcml2aWxlZ2VzKCkge1xuICAgICAgICBjb25zdCBjb250ZW50VHlwZSA9IENvbnRlbnRUeXBlLlByaXZpbGVnZXM7XG4gICAgICAgIGNvbnN0IHByZWRpY2F0ZSA9IG5ldyBTTlByZWRpY2F0ZSgnY29udGVudF90eXBlJywgJz0nLCBjb250ZW50VHlwZSk7XG4gICAgICAgIHJldHVybiB0aGlzLnNpbmdsZXRvbk1hbmFnZXIuZmluZE9yQ3JlYXRlU2luZ2xldG9uKHByZWRpY2F0ZSwgY29udGVudFR5cGUsIEZpbGxJdGVtQ29udGVudCh7fSkpO1xuICAgIH1cbiAgICBhc3luYyBzZXRTZXNzaW9uTGVuZ3RoKGxlbmd0aCkge1xuICAgICAgICBjb25zdCBhZGRTZWNvbmRzVG9Ob3cgPSAoc2Vjb25kcykgPT4ge1xuICAgICAgICAgICAgY29uc3QgZGF0ZSA9IG5ldyBEYXRlKCk7XG4gICAgICAgICAgICBkYXRlLnNldFNlY29uZHMoZGF0ZS5nZXRTZWNvbmRzKCkgKyBzZWNvbmRzKTtcbiAgICAgICAgICAgIHJldHVybiBkYXRlO1xuICAgICAgICB9O1xuICAgICAgICBjb25zdCBleHBpcmVzQXQgPSBhZGRTZWNvbmRzVG9Ob3cobGVuZ3RoKTtcbiAgICAgICAgYXdhaXQgdGhpcy5zdG9yYWdlU2VydmljZS5zZXRWYWx1ZShTdG9yYWdlS2V5LlByaXZpbGVnZXNFeHBpcmV5LCBleHBpcmVzQXQpO1xuICAgICAgICBhd2FpdCB0aGlzLnN0b3JhZ2VTZXJ2aWNlLnNldFZhbHVlKFN0b3JhZ2VLZXkuUHJpdmlsZWdlc1Nlc3Npb25MZW5ndGgsIGxlbmd0aCk7XG4gICAgfVxuICAgIGFzeW5jIGNsZWFyU2Vzc2lvbigpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuc2V0U2Vzc2lvbkxlbmd0aChQcml2aWxlZ2VTZXNzaW9uTGVuZ3RoLk5vbmUpO1xuICAgIH1cbiAgICBhc3luYyBnZXRTZWxlY3RlZFNlc3Npb25MZW5ndGgoKSB7XG4gICAgICAgIGNvbnN0IGxlbmd0aCA9IGF3YWl0IHRoaXMuc3RvcmFnZVNlcnZpY2UuZ2V0VmFsdWUoU3RvcmFnZUtleS5Qcml2aWxlZ2VzU2Vzc2lvbkxlbmd0aCk7XG4gICAgICAgIGlmIChsZW5ndGgpIHtcbiAgICAgICAgICAgIHJldHVybiBsZW5ndGg7XG4gICAgICAgIH1cbiAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICByZXR1cm4gUHJpdmlsZWdlU2Vzc2lvbkxlbmd0aC5Ob25lO1xuICAgICAgICB9XG4gICAgfVxuICAgIGFzeW5jIGdldFNlc3Npb25FeHBpcmV5KCkge1xuICAgICAgICBjb25zdCBleHBpcmVzQXQgPSBhd2FpdCB0aGlzLnN0b3JhZ2VTZXJ2aWNlLmdldFZhbHVlKFN0b3JhZ2VLZXkuUHJpdmlsZWdlc0V4cGlyZXkpO1xuICAgICAgICBpZiAoZXhwaXJlc0F0KSB7XG4gICAgICAgICAgICByZXR1cm4gbmV3IERhdGUoZXhwaXJlc0F0KTtcbiAgICAgICAgfVxuICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgIHJldHVybiBuZXcgRGF0ZSgpO1xuICAgICAgICB9XG4gICAgfVxuICAgIGFzeW5jIGFjdGlvbkhhc1ByaXZpbGVnZXNDb25maWd1cmVkKGFjdGlvbikge1xuICAgICAgICByZXR1cm4gKGF3YWl0IHRoaXMubmV0Q3JlZGVudGlhbHNGb3JBY3Rpb24oYWN0aW9uKSkubGVuZ3RoID4gMDtcbiAgICB9XG4gICAgLyoqXG4gICAgICogV2hldGhlciB0aGUgYWN0aW9uIHJlcXVpcmVzIHByZXNlbnQgYXV0aGVudGljYXRpb24uXG4gICAgICovXG4gICAgYXN5bmMgYWN0aW9uUmVxdWlyZXNQcml2aWxlZ2UoYWN0aW9uKSB7XG4gICAgICAgIGNvbnN0IGV4cGlyZXNBdCA9IGF3YWl0IHRoaXMuZ2V0U2Vzc2lvbkV4cGlyZXkoKTtcbiAgICAgICAgaWYgKGV4cGlyZXNBdCA+IG5ldyBEYXRlKCkpIHtcbiAgICAgICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgICAgfVxuICAgICAgICBjb25zdCBuZXRDcmVkZW50aWFscyA9IGF3YWl0IHRoaXMubmV0Q3JlZGVudGlhbHNGb3JBY3Rpb24oYWN0aW9uKTtcbiAgICAgICAgcmV0dXJuIG5ldENyZWRlbnRpYWxzLmxlbmd0aCA+IDA7XG4gICAgfVxuICAgIGFzeW5jIGF1dGhlbnRpY2F0ZUFjdGlvbihhY3Rpb24sIGNyZWRlbnRpYWxBdXRoTWFwcGluZykge1xuICAgICAgICBjb25zdCByZXF1aXJlZENyZWRlbnRpYWxzID0gYXdhaXQgdGhpcy5uZXRDcmVkZW50aWFsc0ZvckFjdGlvbihhY3Rpb24pO1xuICAgICAgICBjb25zdCBzdWNjZXNzZnVsQ3JlZGVudGlhbHMgPSBbXTtcbiAgICAgICAgY29uc3QgZmFpbGVkQ3JlZGVudGlhbHMgPSBbXTtcbiAgICAgICAgZm9yIChjb25zdCBjcmVkZW50aWFsIG9mIHJlcXVpcmVkQ3JlZGVudGlhbHMpIHtcbiAgICAgICAgICAgIGNvbnN0IHBhc3Nlc0F1dGggPSBhd2FpdCB0aGlzLnZlcmlmeUF1dGhlbnRpY2F0aW9uUGFyYW1ldGVycyhjcmVkZW50aWFsLCBjcmVkZW50aWFsQXV0aE1hcHBpbmdbY3JlZGVudGlhbF0pO1xuICAgICAgICAgICAgaWYgKHBhc3Nlc0F1dGgpIHtcbiAgICAgICAgICAgICAgICBzdWNjZXNzZnVsQ3JlZGVudGlhbHMucHVzaChjcmVkZW50aWFsKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgICAgIGZhaWxlZENyZWRlbnRpYWxzLnB1c2goY3JlZGVudGlhbCk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgIHN1Y2Nlc3M6IGZhaWxlZENyZWRlbnRpYWxzLmxlbmd0aCA9PT0gMCxcbiAgICAgICAgICAgIHN1Y2Nlc3NmdWxDcmVkZW50aWFsczogc3VjY2Vzc2Z1bENyZWRlbnRpYWxzLFxuICAgICAgICAgICAgZmFpbGVkQ3JlZGVudGlhbHM6IGZhaWxlZENyZWRlbnRpYWxzXG4gICAgICAgIH07XG4gICAgfVxuICAgIGFzeW5jIHZlcmlmeUF1dGhlbnRpY2F0aW9uUGFyYW1ldGVycyhjcmVkZW50aWFsLCB2YWx1ZSkge1xuICAgICAgICBpZiAoY3JlZGVudGlhbCA9PT0gUHJpdmlsZWdlQ3JlZGVudGlhbC5BY2NvdW50UGFzc3dvcmQpIHtcbiAgICAgICAgICAgIGNvbnN0IHsgdmFsaWQgfSA9IGF3YWl0IHRoaXMucHJvdG9jb2xTZXJ2aWNlLnZhbGlkYXRlQWNjb3VudFBhc3N3b3JkKHZhbHVlKTtcbiAgICAgICAgICAgIHJldHVybiB2YWxpZDtcbiAgICAgICAgfVxuICAgICAgICBlbHNlIGlmIChjcmVkZW50aWFsID09PSBQcml2aWxlZ2VDcmVkZW50aWFsLkxvY2FsUGFzc2NvZGUpIHtcbiAgICAgICAgICAgIGNvbnN0IHsgdmFsaWQgfSA9IGF3YWl0IHRoaXMucHJvdG9jb2xTZXJ2aWNlLnZhbGlkYXRlUGFzc2NvZGUodmFsdWUpO1xuICAgICAgICAgICAgcmV0dXJuIHZhbGlkO1xuICAgICAgICB9XG4gICAgfVxuICAgIGRpc3BsYXlJbmZvRm9yQ3JlZGVudGlhbChjcmVkZW50aWFsKSB7XG4gICAgICAgIHJldHVybiBDcmVkZW50aWFsc01ldGFkYXRhW2NyZWRlbnRpYWxdO1xuICAgIH1cbiAgICBkaXNwbGF5SW5mb0ZvckFjdGlvbihhY3Rpb24pIHtcbiAgICAgICAgcmV0dXJuIEFjdGlvbnNNZXRhZGF0YVthY3Rpb25dO1xuICAgIH1cbiAgICBnZXRTZXNzaW9uTGVuZ3RoT3B0aW9ucygpIHtcbiAgICAgICAgcmV0dXJuIFtcbiAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICB2YWx1ZTogUHJpdmlsZWdlU2Vzc2lvbkxlbmd0aC5Ob25lLFxuICAgICAgICAgICAgICAgIGxhYmVsOiBcIkRvbid0IFJlbWVtYmVyXCJcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgdmFsdWU6IFByaXZpbGVnZVNlc3Npb25MZW5ndGguRml2ZU1pbnV0ZXMsXG4gICAgICAgICAgICAgICAgbGFiZWw6ICc1IE1pbnV0ZXMnXG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgIHZhbHVlOiBQcml2aWxlZ2VTZXNzaW9uTGVuZ3RoLk9uZUhvdXIsXG4gICAgICAgICAgICAgICAgbGFiZWw6ICcxIEhvdXInXG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgIHZhbHVlOiBQcml2aWxlZ2VTZXNzaW9uTGVuZ3RoLk9uZVdlZWssXG4gICAgICAgICAgICAgICAgbGFiZWw6ICcxIFdlZWsnXG4gICAgICAgICAgICB9XG4gICAgICAgIF07XG4gICAgfVxufVxuIl0sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFFQTtBQUNBO0FBRkE7QUFLQTtBQUNBO0FBRkE7QUFLQTtBQUVBO0FBREE7QUFJQTtBQURBO0FBSUE7QUFEQTtBQUlBO0FBREE7QUFJQTtBQURBO0FBSUE7QUFEQTtBQUlBOzs7Ozs7Ozs7O0FBU0E7QUFBQTtBQUNBO0FBQUE7QUFDQTtBQUFBO0FBQ0E7QUFEQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBWEE7QUFXQTtBQUNBO0FBZEE7QUFBQTtBQUFBO0FBZUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBdEJBO0FBQUE7QUFBQTtBQXdCQTtBQUNBO0FBQ0E7QUFDQTtBQUlBO0FBL0JBO0FBQUE7QUFBQTtBQWlDQTtBQUNBO0FBbENBO0FBQUE7QUFBQTtBQW9DQTtBQUNBO0FBQ0E7Ozs7QUF0Q0E7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUNBO0FBREE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQ0E7QUFEQTtBQTBDQTtBQUNBO0FBQ0E7QUE1Q0E7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUNBO0FBREE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUNBO0FBNENBO0FBQ0E7QUE5Q0E7QUFBQTtBQUFBO0FBQUE7QUFDQTtBQURBO0FBQUE7QUFDQTtBQURBO0FBK0NBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQW5EQTtBQUFBO0FBQ0E7QUFEQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQ0E7QUFEQTtBQUFBO0FBQ0E7QUFEQTtBQXFEQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUF6REE7QUFBQTtBQUFBO0FBQUE7QUFDQTtBQURBO0FBQUE7QUFBQTtBQUNBO0FBREE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUNBO0FBREE7QUFBQTtBQUFBO0FBQ0E7QUFEQTtBQUFBO0FBQUE7QUFDQTtBQURBO0FBQUE7QUFDQTtBQURBO0FBQUE7QUFBQTtBQUFBO0FBQ0E7QUFEQTtBQUNBO0FBREE7QUFBQTtBQUNBO0FBREE7QUFBQTtBQUNBO0FBREE7QUFBQTtBQUNBO0FBREE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFDQTtBQURBO0FBQUE7QUFBQTtBQUNBO0FBREE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQThEQTtBQUNBO0FBL0RBO0FBQ0E7QUFEQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUNBO0FBREE7QUFBQTtBQUFBO0FBQ0E7QUFEQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBbUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBeEVBO0FBQUE7QUFDQTtBQURBO0FBQUE7QUFBQTtBQUNBO0FBREE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFDQTtBQURBO0FBQUE7QUFBQTtBQUNBO0FBREE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUNBO0FBREE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFDQTtBQURBO0FBQUE7QUFBQTtBQUNBO0FBREE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFDQTtBQURBO0FBZ0ZBO0FBQ0E7QUFqRkE7QUFBQTtBQUFBO0FBQUE7QUFDQTtBQURBO0FBQ0E7QUFEQTtBQUFBO0FBQ0E7QUFEQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUNBO0FBREE7QUFBQTtBQUFBO0FBQ0E7QUFEQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUNBO0FBREE7QUF5RkE7QUFDQTtBQTFGQTtBQUFBO0FBQUE7QUFBQTtBQUNBO0FBREE7QUFDQTtBQURBO0FBQUE7QUFDQTtBQURBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQ0E7QUFEQTtBQUFBO0FBQUE7QUFDQTtBQURBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUNBO0FBREE7QUFBQTtBQUFBO0FBQ0E7QUFEQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUNBO0FBREE7QUFBQTtBQUFBO0FBQ0E7QUFEQTtBQUFBO0FBb0dBOzs7O0FBcEdBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFDQTtBQURBO0FBd0dBO0FBQ0E7QUF6R0E7QUFBQTtBQUFBO0FBQUE7QUFDQTtBQURBO0FBQ0E7QUFEQTtBQUFBO0FBQUE7QUFDQTtBQURBO0FBNEdBO0FBNUdBO0FBQ0E7QUFEQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUNBO0FBREE7QUFBQTtBQUFBO0FBQ0E7QUFEQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUNBO0FBREE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQ0E7QUFEQTtBQWdIQTtBQUNBO0FBQ0E7QUFsSEE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUNBO0FBREE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUNBO0FBa0hBO0FBbkhBO0FBQUE7QUFDQTtBQURBO0FBb0hBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFFQTtBQUNBO0FBQ0E7QUEzSEE7QUFBQTtBQUFBO0FBQUE7QUFDQTtBQURBO0FBQUE7QUFBQTtBQUNBO0FBREE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUNBO0FBREE7QUFBQTtBQUFBO0FBQ0E7QUFEQTtBQUFBO0FBQUE7QUFDQTtBQURBO0FBQUE7QUFDQTtBQURBO0FBQUE7QUFBQTtBQUFBO0FBQ0E7QUFEQTtBQUNBO0FBREE7QUFBQTtBQUNBO0FBREE7QUFBQTtBQUNBO0FBREE7QUFBQTtBQTZIQTtBQUNBO0FBQ0E7QUFIQTtBQUNBO0FBN0hBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQ0E7QUFEQTtBQUFBO0FBQUE7QUFDQTtBQURBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQ0E7QUFEQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQ0E7QUFEQTtBQUFBO0FBQ0E7QUFEQTtBQUFBO0FBb0lBO0FBcElBO0FBQ0E7QUFEQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQ0E7QUFEQTtBQUFBO0FBQ0E7QUFEQTtBQUFBO0FBd0lBO0FBeElBO0FBQ0E7QUFEQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUNBO0FBREE7QUFBQTtBQUFBO0FBQ0E7QUFEQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBNklBO0FBQ0E7QUE5SUE7QUFBQTtBQUFBO0FBZ0pBO0FBQ0E7QUFqSkE7QUFBQTtBQUFBO0FBbUpBO0FBRUE7QUFDQTtBQUZBO0FBS0E7QUFDQTtBQUZBO0FBS0E7QUFDQTtBQUZBO0FBS0E7QUFDQTtBQUZBO0FBS0E7QUFyS0E7QUFDQTtBQURBO0FBQUEiLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./lib/services/privileges_service.ts\n')},"./lib/services/protocol_service.ts":
|
||
/*!******************************************!*\
|
||
!*** ./lib/services/protocol_service.ts ***!
|
||
\******************************************/
|
||
/*! exports provided: KeyMode, SNProtocolService */function(module,__webpack_exports__,__webpack_require__){"use strict";eval('__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "KeyMode", function() { return KeyMode; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "SNProtocolService", function() { return SNProtocolService; });\n/* harmony import */ var _babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @babel/runtime/regenerator */ "./node_modules/@babel/runtime/regenerator/index.js");\n/* harmony import */ var _babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var _Models_functions__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! @Models/functions */ "./lib/models/functions.ts");\n/* harmony import */ var _protocol_intents__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./../protocol/intents */ "./lib/protocol/intents.ts");\n/* harmony import */ var _Protocol_versions__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! @Protocol/versions */ "./lib/protocol/versions.ts");\n/* harmony import */ var _Protocol_key_params__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! @Protocol/key_params */ "./lib/protocol/key_params.ts");\n/* harmony import */ var _protocol_operator_004_operator_004__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ./../protocol/operator/004/operator_004 */ "./lib/protocol/operator/004/operator_004.ts");\n/* harmony import */ var _protocol_operator_003_operator_003__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ./../protocol/operator/003/operator_003 */ "./lib/protocol/operator/003/operator_003.ts");\n/* harmony import */ var _protocol_operator_002_operator_002__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! ./../protocol/operator/002/operator_002 */ "./lib/protocol/operator/002/operator_002.ts");\n/* harmony import */ var _protocol_operator_001_operator_001__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! ./../protocol/operator/001/operator_001 */ "./lib/protocol/operator/001/operator_001.ts");\n/* harmony import */ var _protocol_payloads_formats__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(/*! ./../protocol/payloads/formats */ "./lib/protocol/payloads/formats.ts");\n/* harmony import */ var _protocol_payloads_sources__WEBPACK_IMPORTED_MODULE_10__ = __webpack_require__(/*! ./../protocol/payloads/sources */ "./lib/protocol/payloads/sources.ts");\n/* harmony import */ var _Payloads_generator__WEBPACK_IMPORTED_MODULE_11__ = __webpack_require__(/*! @Payloads/generator */ "./lib/protocol/payloads/generator.ts");\n/* harmony import */ var _Lib_events__WEBPACK_IMPORTED_MODULE_12__ = __webpack_require__(/*! @Lib/events */ "./lib/events.ts");\n/* harmony import */ var _Models_generator__WEBPACK_IMPORTED_MODULE_13__ = __webpack_require__(/*! @Models/generator */ "./lib/models/generator.ts");\n/* harmony import */ var _Protocol_root_key__WEBPACK_IMPORTED_MODULE_14__ = __webpack_require__(/*! @Protocol/root_key */ "./lib/protocol/root_key.ts");\n/* harmony import */ var _Lib_services_pure_service__WEBPACK_IMPORTED_MODULE_15__ = __webpack_require__(/*! @Lib/services/pure_service */ "./lib/services/pure_service.ts");\n/* harmony import */ var _Lib_uuid__WEBPACK_IMPORTED_MODULE_16__ = __webpack_require__(/*! @Lib/uuid */ "./lib/uuid.ts");\n/* harmony import */ var _Lib_utils__WEBPACK_IMPORTED_MODULE_17__ = __webpack_require__(/*! @Lib/utils */ "./lib/utils.ts");\n/* harmony import */ var _protocol_operator_algorithms__WEBPACK_IMPORTED_MODULE_18__ = __webpack_require__(/*! ../protocol/operator/algorithms */ "./lib/protocol/operator/algorithms.ts");\n/* harmony import */ var _Models_content_types__WEBPACK_IMPORTED_MODULE_19__ = __webpack_require__(/*! @Models/content_types */ "./lib/models/content_types.ts");\n/* harmony import */ var _Lib_storage_keys__WEBPACK_IMPORTED_MODULE_20__ = __webpack_require__(/*! @Lib/storage_keys */ "./lib/storage_keys.ts");\n/* harmony import */ var _Lib_services_storage_service__WEBPACK_IMPORTED_MODULE_21__ = __webpack_require__(/*! @Lib/services/storage_service */ "./lib/services/storage_service.ts");\n/* harmony import */ var _Lib_protocol__WEBPACK_IMPORTED_MODULE_22__ = __webpack_require__(/*! @Lib/protocol */ "./lib/protocol/index.ts");\n/* harmony import */ var _api_messages__WEBPACK_IMPORTED_MODULE_23__ = __webpack_require__(/*! ./api/messages */ "./lib/services/api/messages.ts");\n\n\nfunction _typeof(obj) { "@babel/helpers - typeof"; if (typeof Symbol === "function" && typeof Symbol.iterator === "symbol") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }; } return _typeof(obj); }\n\nfunction _slicedToArray(arr, i) { return _arrayWithHoles(arr) || _iterableToArrayLimit(arr, i) || _nonIterableRest(); }\n\nfunction _nonIterableRest() { throw new TypeError("Invalid attempt to destructure non-iterable instance"); }\n\nfunction _iterableToArrayLimit(arr, i) { if (!(Symbol.iterator in Object(arr) || Object.prototype.toString.call(arr) === "[object Arguments]")) { return; } var _arr = []; var _n = true; var _d = false; var _e = undefined; try { for (var _i = arr[Symbol.iterator](), _s; !(_n = (_s = _i.next()).done); _n = true) { _arr.push(_s.value); if (i && _arr.length === i) break; } } catch (err) { _d = true; _e = err; } finally { try { if (!_n && _i["return"] != null) _i["return"](); } finally { if (_d) throw _e; } } return _arr; }\n\nfunction _arrayWithHoles(arr) { if (Array.isArray(arr)) return arr; }\n\nfunction _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\n\nfunction asyncGeneratorStep(gen, resolve, reject, _next, _throw, key, arg) { try { var info = gen[key](arg); var value = info.value; } catch (error) { reject(error); return; } if (info.done) { resolve(value); } else { Promise.resolve(value).then(_next, _throw); } }\n\nfunction _asyncToGenerator(fn) { return function () { var self = this, args = arguments; return new Promise(function (resolve, reject) { var gen = fn.apply(self, args); function _next(value) { asyncGeneratorStep(gen, resolve, reject, _next, _throw, "next", value); } function _throw(err) { asyncGeneratorStep(gen, resolve, reject, _next, _throw, "throw", err); } _next(undefined); }); }; }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } }\n\nfunction _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); } }\n\nfunction _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; }\n\nfunction _possibleConstructorReturn(self, call) { if (call && (_typeof(call) === "object" || typeof call === "function")) { return call; } return _assertThisInitialized(self); }\n\nfunction _assertThisInitialized(self) { if (self === void 0) { throw new ReferenceError("this hasn\'t been initialised - super() hasn\'t been called"); } return self; }\n\nfunction _get(target, property, receiver) { if (typeof Reflect !== "undefined" && Reflect.get) { _get = Reflect.get; } else { _get = function _get(target, property, receiver) { var base = _superPropBase(target, property); if (!base) return; var desc = Object.getOwnPropertyDescriptor(base, property); if (desc.get) { return desc.get.call(receiver); } return desc.value; }; } return _get(target, property, receiver || target); }\n\nfunction _superPropBase(object, property) { while (!Object.prototype.hasOwnProperty.call(object, property)) { object = _getPrototypeOf(object); if (object === null) break; } return object; }\n\nfunction _getPrototypeOf(o) { _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function _getPrototypeOf(o) { return o.__proto__ || Object.getPrototypeOf(o); }; return _getPrototypeOf(o); }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== "function" && superClass !== null) { throw new TypeError("Super expression must either be null or a function"); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, writable: true, configurable: true } }); if (superClass) _setPrototypeOf(subClass, superClass); }\n\nfunction _setPrototypeOf(o, p) { _setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) { o.__proto__ = p; return o; }; return _setPrototypeOf(o, p); }\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\nvar KeyMode;\n\n(function (KeyMode) {\n /** i.e No account and no passcode */\n KeyMode[KeyMode["RootKeyNone"] = 0] = "RootKeyNone";\n /** i.e Account but no passcode */\n\n KeyMode[KeyMode["RootKeyOnly"] = 1] = "RootKeyOnly";\n /** i.e Account plus passcode */\n\n KeyMode[KeyMode["RootKeyPlusWrapper"] = 2] = "RootKeyPlusWrapper";\n /** i.e No account, but passcode */\n\n KeyMode[KeyMode["WrapperOnly"] = 3] = "WrapperOnly";\n})(KeyMode || (KeyMode = {}));\n/** The last protocol version to not use root-key based items keys */\n\n\nvar LAST_NONROOT_ITEMS_KEY_VERSION = _Protocol_versions__WEBPACK_IMPORTED_MODULE_3__["ProtocolVersion"].V003;\n/**\n * The protocol service is responsible for the encryption and decryption of payloads, and\n * handles delegation of a task to the respective protocol operator. Each version of the protocol\n * (001, 002, 003, 004, etc) uses a respective operator version to perform encryption operations.\n * Operators are located in /protocol/operator.\n * The protocol service depends on the keyManager for determining which key to use for the\n * encryption and decryption of a particular payload.\n * The protocol service is also responsible for dictating which protocol versions are valid,\n * and which are no longer valid or not supported.\n\n * The key manager is responsible for managing root key and root key wrapper states.\n * When the key manager is initialized, it initiates itself with a keyMode, which\n * dictates the entire flow of key management. The key manager\'s responsibilities include:\n * - interacting with the device keychain to save or clear the root key\n * - interacting with storage to save root key params or wrapper params, or the wrapped root key.\n * - exposing methods that allow the application to unwrap the root key (unlock the application)\n *\n * It also exposes two primary methods for determining what key should be used to encrypt\n * or decrypt a particular payload. Some payloads are encrypted directly with the rootKey\n * (such as itemsKeys and encryptedStorage). Others are encrypted with itemsKeys (notes, tags, etc).\n\n * The items key manager manages the lifecycle of items keys.\n * It is responsible for creating the default items key when conditions call for it\n * (such as after the first sync completes and no key exists).\n * It also exposes public methods that allows consumers to retrieve an items key\n * for a particular payload, and also retrieve all available items keys.\n*/\n\nvar SNProtocolService = /*#__PURE__*/function (_PureService) {\n _inherits(SNProtocolService, _PureService);\n\n function SNProtocolService(itemManager, modelManager, deviceInterface, storageService, crypto) {\n var _this;\n\n _classCallCheck(this, SNProtocolService);\n\n _this = _possibleConstructorReturn(this, _getPrototypeOf(SNProtocolService).call(this));\n _this.operators = {};\n _this.keyMode = KeyMode.RootKeyNone;\n _this.keyObservers = [];\n _this.itemManager = itemManager;\n _this.modelManager = modelManager;\n _this.deviceInterface = deviceInterface;\n _this.storageService = storageService;\n _this.crypto = crypto;\n\n if (Object(_Lib_utils__WEBPACK_IMPORTED_MODULE_17__["isReactNativeEnvironment"])()) {\n _Lib_uuid__WEBPACK_IMPORTED_MODULE_16__["Uuid"].SetGenerators(_this.crypto.generateUUID, undefined // no sync implementation on React Native\n );\n } else {\n _Lib_uuid__WEBPACK_IMPORTED_MODULE_16__["Uuid"].SetGenerators(_this.crypto.generateUUID, _this.crypto.generateUUIDSync);\n }\n /** Hide rootKey enumeration */\n\n\n Object.defineProperty(_assertThisInitialized(_this), \'rootKey\', {\n enumerable: false,\n writable: true\n });\n _this.removeItemsObserver = _this.itemManager.addObserver([_Models_content_types__WEBPACK_IMPORTED_MODULE_19__["ContentType"].ItemsKey], function (_, inserted) {\n if (inserted.length > 0) {\n _this.decryptErroredItems();\n }\n });\n return _this;\n }\n /** @override */\n\n\n _createClass(SNProtocolService, [{\n key: "deinit",\n value: function deinit() {\n this.itemManager = undefined;\n this.modelManager = undefined;\n this.deviceInterface = undefined;\n this.storageService = undefined;\n this.crypto.deinit();\n this.crypto = undefined;\n this.operators = {};\n this.keyObservers.length = 0;\n this.removeItemsObserver();\n this.removeItemsObserver = null;\n this.rootKey = undefined;\n\n _get(_getPrototypeOf(SNProtocolService.prototype), "deinit", this).call(this);\n }\n }, {\n key: "initialize",\n value: function () {\n var _initialize = _asyncToGenerator( /*#__PURE__*/_babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0___default.a.mark(function _callee() {\n var wrappedRootKey, accountKeyParams, hasWrapper, hasRootKey;\n return _babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0___default.a.wrap(function _callee$(_context) {\n while (1) {\n switch (_context.prev = _context.next) {\n case 0:\n _context.next = 2;\n return this.getWrappedRootKey();\n\n case 2:\n wrappedRootKey = _context.sent;\n _context.next = 5;\n return this.getAccountKeyParams();\n\n case 5:\n accountKeyParams = _context.sent;\n _context.next = 8;\n return this.hasRootKeyWrapper();\n\n case 8:\n hasWrapper = _context.sent;\n hasRootKey = !Object(_Lib_utils__WEBPACK_IMPORTED_MODULE_17__["isNullOrUndefined"])(wrappedRootKey) || !Object(_Lib_utils__WEBPACK_IMPORTED_MODULE_17__["isNullOrUndefined"])(accountKeyParams);\n\n if (!(hasWrapper && hasRootKey)) {\n _context.next = 14;\n break;\n }\n\n this.keyMode = KeyMode.RootKeyPlusWrapper;\n _context.next = 27;\n break;\n\n case 14:\n if (!(hasWrapper && !hasRootKey)) {\n _context.next = 18;\n break;\n }\n\n this.keyMode = KeyMode.WrapperOnly;\n _context.next = 27;\n break;\n\n case 18:\n if (!(!hasWrapper && hasRootKey)) {\n _context.next = 22;\n break;\n }\n\n this.keyMode = KeyMode.RootKeyOnly;\n _context.next = 27;\n break;\n\n case 22:\n if (!(!hasWrapper && !hasRootKey)) {\n _context.next = 26;\n break;\n }\n\n this.keyMode = KeyMode.RootKeyNone;\n _context.next = 27;\n break;\n\n case 26:\n throw \'Invalid key mode condition\';\n\n case 27:\n if (!(this.keyMode === KeyMode.RootKeyOnly)) {\n _context.next = 33;\n break;\n }\n\n _context.next = 30;\n return this.getRootKeyFromKeychain();\n\n case 30:\n this.rootKey = _context.sent;\n _context.next = 33;\n return this.notifyObserversOfKeyChange();\n\n case 33:\n case "end":\n return _context.stop();\n }\n }\n }, _callee, this);\n }));\n\n function initialize() {\n return _initialize.apply(this, arguments);\n }\n\n return initialize;\n }()\n /**\n * Returns the latest protocol version\n */\n\n }, {\n key: "getLatestVersion",\n value: function getLatestVersion() {\n return _Protocol_versions__WEBPACK_IMPORTED_MODULE_3__["ProtocolVersion"].V004;\n }\n /**\n * Returns the protocol version associated with the user\'s account\n */\n\n }, {\n key: "getUserVersion",\n value: function () {\n var _getUserVersion = _asyncToGenerator( /*#__PURE__*/_babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0___default.a.mark(function _callee2() {\n var keyParams;\n return _babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0___default.a.wrap(function _callee2$(_context2) {\n while (1) {\n switch (_context2.prev = _context2.next) {\n case 0:\n _context2.next = 2;\n return this.getAccountKeyParams();\n\n case 2:\n keyParams = _context2.sent;\n return _context2.abrupt("return", keyParams && keyParams.version);\n\n case 4:\n case "end":\n return _context2.stop();\n }\n }\n }, _callee2, this);\n }));\n\n function getUserVersion() {\n return _getUserVersion.apply(this, arguments);\n }\n\n return getUserVersion;\n }()\n /**\n * Returns true if there is an upgrade available for the account or passcode\n */\n\n }, {\n key: "upgradeAvailable",\n value: function () {\n var _upgradeAvailable = _asyncToGenerator( /*#__PURE__*/_babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0___default.a.mark(function _callee3() {\n var accountUpgradeAvailable, passcodeUpgradeAvailable;\n return _babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0___default.a.wrap(function _callee3$(_context3) {\n while (1) {\n switch (_context3.prev = _context3.next) {\n case 0:\n _context3.next = 2;\n return this.accountUpgradeAvailable();\n\n case 2:\n accountUpgradeAvailable = _context3.sent;\n _context3.next = 5;\n return this.passcodeUpgradeAvailable();\n\n case 5:\n passcodeUpgradeAvailable = _context3.sent;\n return _context3.abrupt("return", accountUpgradeAvailable || passcodeUpgradeAvailable);\n\n case 7:\n case "end":\n return _context3.stop();\n }\n }\n }, _callee3, this);\n }));\n\n function upgradeAvailable() {\n return _upgradeAvailable.apply(this, arguments);\n }\n\n return upgradeAvailable;\n }()\n /**\n * Returns true if the user\'s account protocol version is not equal to the latest version.\n */\n\n }, {\n key: "accountUpgradeAvailable",\n value: function () {\n var _accountUpgradeAvailable = _asyncToGenerator( /*#__PURE__*/_babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0___default.a.mark(function _callee4() {\n var userVersion;\n return _babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0___default.a.wrap(function _callee4$(_context4) {\n while (1) {\n switch (_context4.prev = _context4.next) {\n case 0:\n _context4.next = 2;\n return this.getUserVersion();\n\n case 2:\n userVersion = _context4.sent;\n\n if (userVersion) {\n _context4.next = 5;\n break;\n }\n\n return _context4.abrupt("return", false);\n\n case 5:\n return _context4.abrupt("return", userVersion !== this.getLatestVersion());\n\n case 6:\n case "end":\n return _context4.stop();\n }\n }\n }, _callee4, this);\n }));\n\n function accountUpgradeAvailable() {\n return _accountUpgradeAvailable.apply(this, arguments);\n }\n\n return accountUpgradeAvailable;\n }()\n /**\n * Returns true if the user\'s account protocol version is not equal to the latest version.\n */\n\n }, {\n key: "passcodeUpgradeAvailable",\n value: function () {\n var _passcodeUpgradeAvailable = _asyncToGenerator( /*#__PURE__*/_babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0___default.a.mark(function _callee5() {\n var passcodeParams;\n return _babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0___default.a.wrap(function _callee5$(_context5) {\n while (1) {\n switch (_context5.prev = _context5.next) {\n case 0:\n _context5.next = 2;\n return this.getRootKeyWrapperKeyParams();\n\n case 2:\n passcodeParams = _context5.sent;\n\n if (passcodeParams) {\n _context5.next = 5;\n break;\n }\n\n return _context5.abrupt("return", false);\n\n case 5:\n return _context5.abrupt("return", passcodeParams.version !== this.getLatestVersion());\n\n case 6:\n case "end":\n return _context5.stop();\n }\n }\n }, _callee5, this);\n }));\n\n function passcodeUpgradeAvailable() {\n return _passcodeUpgradeAvailable.apply(this, arguments);\n }\n\n return passcodeUpgradeAvailable;\n }()\n /**\n * Determines whether the current environment is capable of supporting\n * key derivation.\n */\n\n }, {\n key: "platformSupportsKeyDerivation",\n value: function platformSupportsKeyDerivation(keyParams) {\n /**\n * If the version is 003 or lower, key derivation is supported unless the browser is\n * IE or Edge (or generally, where WebCrypto is not available).\n *\n * Versions 004 and above are always supported.\n */\n if (Object(_Protocol_versions__WEBPACK_IMPORTED_MODULE_3__["compareVersions"])(keyParams.version, _Protocol_versions__WEBPACK_IMPORTED_MODULE_3__["ProtocolVersion"].V004) >= 0) {\n /* keyParams.version >= 004 */\n return true;\n } else {\n return !!Object(_Lib_utils__WEBPACK_IMPORTED_MODULE_17__["isWebCryptoAvailable"])();\n }\n }\n /**\n * @returns The versions that this library supports.\n */\n\n }, {\n key: "supportedVersions",\n value: function supportedVersions() {\n return [_Protocol_versions__WEBPACK_IMPORTED_MODULE_3__["ProtocolVersion"].V001, _Protocol_versions__WEBPACK_IMPORTED_MODULE_3__["ProtocolVersion"].V002, _Protocol_versions__WEBPACK_IMPORTED_MODULE_3__["ProtocolVersion"].V003, _Protocol_versions__WEBPACK_IMPORTED_MODULE_3__["ProtocolVersion"].V004];\n }\n /**\n * Determines whether the input version is greater than the latest supported library version.\n */\n\n }, {\n key: "isVersionNewerThanLibraryVersion",\n value: function isVersionNewerThanLibraryVersion(version) {\n var libraryVersion = this.getLatestVersion();\n return Object(_Protocol_versions__WEBPACK_IMPORTED_MODULE_3__["compareVersions"])(version, libraryVersion) === 1;\n }\n /**\n * Determines whether the input version is expired\n */\n\n }, {\n key: "isProtocolVersionOutdated",\n value: function isProtocolVersionOutdated(version) {\n var _expirationDates;\n\n var expirationDates = (_expirationDates = {}, _defineProperty(_expirationDates, _Protocol_versions__WEBPACK_IMPORTED_MODULE_3__["ProtocolVersion"].V001, Date.parse(\'2018-01-01\')), _defineProperty(_expirationDates, _Protocol_versions__WEBPACK_IMPORTED_MODULE_3__["ProtocolVersion"].V002, Date.parse(\'2020-01-01\')), _expirationDates);\n var date = expirationDates[version];\n\n if (!date) {\n /* No expiration date, is active version */\n return false;\n }\n\n var expired = new Date().getTime() > date;\n return expired;\n }\n /**\n * Versions 001 and 002 of the protocol supported dynamic costs, as reported by the server.\n * This function returns the client-enforced minimum cost, to prevent the server from\n * overwhelmingly under-reporting the cost.\n */\n\n }, {\n key: "costMinimumForVersion",\n value: function costMinimumForVersion(version) {\n if (Object(_Protocol_versions__WEBPACK_IMPORTED_MODULE_3__["compareVersions"])(version, _Protocol_versions__WEBPACK_IMPORTED_MODULE_3__["ProtocolVersion"].V003) >= 0) {\n throw \'Cost minimums only apply to versions <= 002\';\n }\n\n if (version === _Protocol_versions__WEBPACK_IMPORTED_MODULE_3__["ProtocolVersion"].V001) {\n return _protocol_operator_algorithms__WEBPACK_IMPORTED_MODULE_18__["V001Algorithm"].PbkdfMinCost;\n } else if (version === _Protocol_versions__WEBPACK_IMPORTED_MODULE_3__["ProtocolVersion"].V002) {\n return _protocol_operator_algorithms__WEBPACK_IMPORTED_MODULE_18__["V002Algorithm"].PbkdfMinCost;\n } else {\n throw "Invalid version for cost minimum: ".concat(version);\n }\n }\n }, {\n key: "createOperatorForLatestVersion",\n value: function createOperatorForLatestVersion() {\n return this.createOperatorForVersion(this.getLatestVersion());\n }\n }, {\n key: "createOperatorForVersion",\n value: function createOperatorForVersion(version) {\n if (version === _Protocol_versions__WEBPACK_IMPORTED_MODULE_3__["ProtocolVersion"].V001) {\n return new _protocol_operator_001_operator_001__WEBPACK_IMPORTED_MODULE_8__["SNProtocolOperator001"](this.crypto);\n } else if (version === _Protocol_versions__WEBPACK_IMPORTED_MODULE_3__["ProtocolVersion"].V002) {\n return new _protocol_operator_002_operator_002__WEBPACK_IMPORTED_MODULE_7__["SNProtocolOperator002"](this.crypto);\n } else if (version === _Protocol_versions__WEBPACK_IMPORTED_MODULE_3__["ProtocolVersion"].V003) {\n return new _protocol_operator_003_operator_003__WEBPACK_IMPORTED_MODULE_6__["SNProtocolOperator003"](this.crypto);\n } else if (version === _Protocol_versions__WEBPACK_IMPORTED_MODULE_3__["ProtocolVersion"].V004) {\n return new _protocol_operator_004_operator_004__WEBPACK_IMPORTED_MODULE_5__["SNProtocolOperator004"](this.crypto);\n } else if (version === _Protocol_versions__WEBPACK_IMPORTED_MODULE_3__["ProtocolVersion"].V000Base64Decrypted) {\n return this.createOperatorForLatestVersion();\n } else {\n throw "Unable to find operator for version ".concat(version);\n }\n }\n }, {\n key: "operatorForVersion",\n value: function operatorForVersion(version) {\n var operatorKey = version;\n var operator = this.operators[operatorKey];\n\n if (!operator) {\n operator = this.createOperatorForVersion(version);\n this.operators[operatorKey] = operator;\n }\n\n return operator;\n }\n /**\n * Returns the operator corresponding to the latest protocol version\n */\n\n }, {\n key: "defaultOperator",\n value: function defaultOperator() {\n return this.operatorForVersion(this.getLatestVersion());\n }\n /**\n * Computes a root key given a password and key params.\n * Delegates computation to respective protocol operator.\n */\n\n }, {\n key: "computeRootKey",\n value: function () {\n var _computeRootKey = _asyncToGenerator( /*#__PURE__*/_babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0___default.a.mark(function _callee6(password, keyParams) {\n var version, operator;\n return _babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0___default.a.wrap(function _callee6$(_context6) {\n while (1) {\n switch (_context6.prev = _context6.next) {\n case 0:\n version = keyParams.version;\n operator = this.operatorForVersion(version);\n return _context6.abrupt("return", operator.computeRootKey(password, keyParams));\n\n case 3:\n case "end":\n return _context6.stop();\n }\n }\n }, _callee6, this);\n }));\n\n function computeRootKey(_x, _x2) {\n return _computeRootKey.apply(this, arguments);\n }\n\n return computeRootKey;\n }()\n /**\n * Creates a root key using the latest protocol version\n */\n\n }, {\n key: "createRootKey",\n value: function () {\n var _createRootKey = _asyncToGenerator( /*#__PURE__*/_babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0___default.a.mark(function _callee7(identifier, password) {\n var operator;\n return _babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0___default.a.wrap(function _callee7$(_context7) {\n while (1) {\n switch (_context7.prev = _context7.next) {\n case 0:\n operator = this.defaultOperator();\n return _context7.abrupt("return", operator.createRootKey(identifier, password));\n\n case 2:\n case "end":\n return _context7.stop();\n }\n }\n }, _callee7, this);\n }));\n\n function createRootKey(_x3, _x4) {\n return _createRootKey.apply(this, arguments);\n }\n\n return createRootKey;\n }()\n /**\n * Given a key and intent, returns the proper PayloadFormat,\n * or throws an exception if unsupported configuration of parameters.\n */\n\n }, {\n key: "payloadContentFormatForIntent",\n value: function payloadContentFormatForIntent(intent, key) {\n if (!key) {\n /** Decrypted */\n if (intent === _protocol_intents__WEBPACK_IMPORTED_MODULE_2__["EncryptionIntent"].LocalStorageDecrypted || intent === _protocol_intents__WEBPACK_IMPORTED_MODULE_2__["EncryptionIntent"].LocalStoragePreferEncrypted || intent === _protocol_intents__WEBPACK_IMPORTED_MODULE_2__["EncryptionIntent"].FileDecrypted || intent === _protocol_intents__WEBPACK_IMPORTED_MODULE_2__["EncryptionIntent"].FilePreferEncrypted) {\n return _protocol_payloads_formats__WEBPACK_IMPORTED_MODULE_9__["PayloadFormat"].DecryptedBareObject;\n } else if (intent === _protocol_intents__WEBPACK_IMPORTED_MODULE_2__["EncryptionIntent"].SyncDecrypted) {\n return _protocol_payloads_formats__WEBPACK_IMPORTED_MODULE_9__["PayloadFormat"].DecryptedBase64String;\n } else {\n throw \'Unhandled decrypted case in protocolService.payloadContentFormatForIntent.\';\n }\n } else {\n /** Encrypted */\n if (intent === _protocol_intents__WEBPACK_IMPORTED_MODULE_2__["EncryptionIntent"].Sync || intent === _protocol_intents__WEBPACK_IMPORTED_MODULE_2__["EncryptionIntent"].FileEncrypted || intent === _protocol_intents__WEBPACK_IMPORTED_MODULE_2__["EncryptionIntent"].FilePreferEncrypted || intent === _protocol_intents__WEBPACK_IMPORTED_MODULE_2__["EncryptionIntent"].LocalStorageEncrypted || intent === _protocol_intents__WEBPACK_IMPORTED_MODULE_2__["EncryptionIntent"].LocalStoragePreferEncrypted) {\n return _protocol_payloads_formats__WEBPACK_IMPORTED_MODULE_9__["PayloadFormat"].EncryptedString;\n } else {\n throw \'Unhandled encrypted case in protocolService.payloadContentFormatForIntent.\';\n }\n }\n }\n /**\n * Generates parameters for a payload that are typically encrypted, and used for syncing\n * or saving locally. Parameters are non-typed objects that can later by converted to objects.\n * If the input payload is not properly decrypted in the first place, it will be returned\n * as-is. If the payload is deleted, it will be returned as-is (assuming that the content field is null)\n * @param payload - The payload to encrypt\n * @param key The key to use to encrypt the payload.\n * Will be looked up if not supplied.\n * @param intent - The target of the encryption\n * @returns The encrypted payload\n */\n\n }, {\n key: "payloadByEncryptingPayload",\n value: function () {\n var _payloadByEncryptingPayload = _asyncToGenerator( /*#__PURE__*/_babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0___default.a.mark(function _callee8(payload, intent, key) {\n var version, format, operator, encryptionParameters, result;\n return _babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0___default.a.wrap(function _callee8$(_context8) {\n while (1) {\n switch (_context8.prev = _context8.next) {\n case 0:\n if (!payload.errorDecrypting) {\n _context8.next = 2;\n break;\n }\n\n return _context8.abrupt("return", payload);\n\n case 2:\n if (!payload.deleted) {\n _context8.next = 4;\n break;\n }\n\n return _context8.abrupt("return", payload);\n\n case 4:\n if (!Object(_Lib_utils__WEBPACK_IMPORTED_MODULE_17__["isNullOrUndefined"])(intent)) {\n _context8.next = 6;\n break;\n }\n\n throw \'Attempting to encrypt payload with null intent\';\n\n case 6:\n if (!(!key && !Object(_Lib_protocol__WEBPACK_IMPORTED_MODULE_22__["isDecryptedIntent"])(intent))) {\n _context8.next = 10;\n break;\n }\n\n _context8.next = 9;\n return this.keyToUseForEncryptionOfPayload(payload, intent);\n\n case 9:\n key = _context8.sent;\n\n case 10:\n if (!(!key && Object(_Lib_protocol__WEBPACK_IMPORTED_MODULE_22__["intentRequiresEncryption"])(intent))) {\n _context8.next = 12;\n break;\n }\n\n throw Error(\'Attempting to generate encrypted payload with no key.\');\n\n case 12:\n if (!(payload.format !== _protocol_payloads_formats__WEBPACK_IMPORTED_MODULE_9__["PayloadFormat"].DecryptedBareObject)) {\n _context8.next = 14;\n break;\n }\n\n throw \'Attempting to encrypt already encrypted payload.\';\n\n case 14:\n if (payload.content) {\n _context8.next = 16;\n break;\n }\n\n throw \'Attempting to encrypt payload with no content.\';\n\n case 16:\n if (payload.uuid) {\n _context8.next = 18;\n break;\n }\n\n throw \'Attempting to encrypt payload with no uuid.\';\n\n case 18:\n version = key ? key.version : this.getLatestVersion();\n format = this.payloadContentFormatForIntent(intent, key);\n operator = this.operatorForVersion(version);\n _context8.next = 23;\n return operator.generateEncryptedParameters(payload, format, key);\n\n case 23:\n encryptionParameters = _context8.sent;\n\n if (encryptionParameters) {\n _context8.next = 26;\n break;\n }\n\n throw \'Unable to generate encryption parameters\';\n\n case 26:\n result = Object(_Payloads_generator__WEBPACK_IMPORTED_MODULE_11__["CreateIntentPayloadFromObject"])(payload, intent, encryptionParameters);\n return _context8.abrupt("return", result);\n\n case 28:\n case "end":\n return _context8.stop();\n }\n }\n }, _callee8, this);\n }));\n\n function payloadByEncryptingPayload(_x5, _x6, _x7) {\n return _payloadByEncryptingPayload.apply(this, arguments);\n }\n\n return payloadByEncryptingPayload;\n }()\n /**\n * Similar to `payloadByEncryptingPayload`, but operates on an array of payloads.\n * `intent` can also be a function of the current iteration payload.\n */\n\n }, {\n key: "payloadsByEncryptingPayloads",\n value: function () {\n var _payloadsByEncryptingPayloads = _asyncToGenerator( /*#__PURE__*/_babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0___default.a.mark(function _callee9(payloads, intent) {\n var results, _iteratorNormalCompletion, _didIteratorError, _iteratorError, _iterator, _step, payload, useIntent, encryptedPayload;\n\n return _babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0___default.a.wrap(function _callee9$(_context9) {\n while (1) {\n switch (_context9.prev = _context9.next) {\n case 0:\n results = [];\n _iteratorNormalCompletion = true;\n _didIteratorError = false;\n _iteratorError = undefined;\n _context9.prev = 4;\n _iterator = payloads[Symbol.iterator]();\n\n case 6:\n if (_iteratorNormalCompletion = (_step = _iterator.next()).done) {\n _context9.next = 16;\n break;\n }\n\n payload = _step.value;\n useIntent = Object(_Lib_utils__WEBPACK_IMPORTED_MODULE_17__["isFunction"])(intent) ? intent(payload) : intent;\n _context9.next = 11;\n return this.payloadByEncryptingPayload(payload, useIntent);\n\n case 11:\n encryptedPayload = _context9.sent;\n results.push(encryptedPayload);\n\n case 13:\n _iteratorNormalCompletion = true;\n _context9.next = 6;\n break;\n\n case 16:\n _context9.next = 22;\n break;\n\n case 18:\n _context9.prev = 18;\n _context9.t0 = _context9["catch"](4);\n _didIteratorError = true;\n _iteratorError = _context9.t0;\n\n case 22:\n _context9.prev = 22;\n _context9.prev = 23;\n\n if (!_iteratorNormalCompletion && _iterator.return != null) {\n _iterator.return();\n }\n\n case 25:\n _context9.prev = 25;\n\n if (!_didIteratorError) {\n _context9.next = 28;\n break;\n }\n\n throw _iteratorError;\n\n case 28:\n return _context9.finish(25);\n\n case 29:\n return _context9.finish(22);\n\n case 30:\n return _context9.abrupt("return", results);\n\n case 31:\n case "end":\n return _context9.stop();\n }\n }\n }, _callee9, this, [[4, 18, 22, 30], [23,, 25, 29]]);\n }));\n\n function payloadsByEncryptingPayloads(_x8, _x9) {\n return _payloadsByEncryptingPayloads.apply(this, arguments);\n }\n\n return payloadsByEncryptingPayloads;\n }()\n /**\n * Generates a new payload by decrypting the input payload.\n * If the input payload is already decrypted, it will be returned as-is.\n * @param payload - The payload to decrypt.\n * @param key The key to use to decrypt the payload.\n * If none is supplied, it will be automatically looked up.\n */\n\n }, {\n key: "payloadByDecryptingPayload",\n value: function () {\n var _payloadByDecryptingPayload = _asyncToGenerator( /*#__PURE__*/_babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0___default.a.mark(function _callee10(payload, key) {\n var format, version, operator, encryptionParameters, decryptedParameters;\n return _babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0___default.a.wrap(function _callee10$(_context10) {\n while (1) {\n switch (_context10.prev = _context10.next) {\n case 0:\n if (payload.content) {\n _context10.next = 2;\n break;\n }\n\n throw \'Attempting to decrypt payload that has no content.\';\n\n case 2:\n format = payload.format;\n\n if (!(format === _protocol_payloads_formats__WEBPACK_IMPORTED_MODULE_9__["PayloadFormat"].DecryptedBareObject)) {\n _context10.next = 5;\n break;\n }\n\n return _context10.abrupt("return", payload);\n\n case 5:\n if (!(!key && format === _protocol_payloads_formats__WEBPACK_IMPORTED_MODULE_9__["PayloadFormat"].EncryptedString)) {\n _context10.next = 11;\n break;\n }\n\n _context10.next = 8;\n return this.keyToUseForDecryptionOfPayload(payload);\n\n case 8:\n key = _context10.sent;\n\n if (key) {\n _context10.next = 11;\n break;\n }\n\n return _context10.abrupt("return", Object(_Payloads_generator__WEBPACK_IMPORTED_MODULE_11__["CreateMaxPayloadFromAnyObject"])(payload, {\n waitingForKey: true,\n errorDecrypting: true\n }));\n\n case 11:\n version = payload.version;\n operator = this.operatorForVersion(version);\n encryptionParameters = Object(_Payloads_generator__WEBPACK_IMPORTED_MODULE_11__["CreateEncryptionParameters"])(payload);\n _context10.next = 16;\n return operator.generateDecryptedParameters(encryptionParameters, key);\n\n case 16:\n decryptedParameters = _context10.sent;\n return _context10.abrupt("return", Object(_Payloads_generator__WEBPACK_IMPORTED_MODULE_11__["CreateMaxPayloadFromAnyObject"])(payload, decryptedParameters));\n\n case 18:\n case "end":\n return _context10.stop();\n }\n }\n }, _callee10, this);\n }));\n\n function payloadByDecryptingPayload(_x10, _x11) {\n return _payloadByDecryptingPayload.apply(this, arguments);\n }\n\n return payloadByDecryptingPayload;\n }()\n /**\n * Similar to `payloadByDecryptingPayload`, but operates on an array of payloads.\n */\n\n }, {\n key: "payloadsByDecryptingPayloads",\n value: function () {\n var _payloadsByDecryptingPayloads = _asyncToGenerator( /*#__PURE__*/_babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0___default.a.mark(function _callee11(payloads, key) {\n var decryptedPayloads, _iteratorNormalCompletion2, _didIteratorError2, _iteratorError2, _iterator2, _step2, encryptedPayload, isDecryptable, decryptedPayload;\n\n return _babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0___default.a.wrap(function _callee11$(_context11) {\n while (1) {\n switch (_context11.prev = _context11.next) {\n case 0:\n decryptedPayloads = [];\n _iteratorNormalCompletion2 = true;\n _didIteratorError2 = false;\n _iteratorError2 = undefined;\n _context11.prev = 4;\n _iterator2 = payloads[Symbol.iterator]();\n\n case 6:\n if (_iteratorNormalCompletion2 = (_step2 = _iterator2.next()).done) {\n _context11.next = 32;\n break;\n }\n\n encryptedPayload = _step2.value;\n\n if (encryptedPayload) {\n _context11.next = 11;\n break;\n }\n\n /** Keep in-counts similar to out-counts */\n decryptedPayloads.push(encryptedPayload);\n return _context11.abrupt("continue", 29);\n\n case 11:\n if (!(encryptedPayload.deleted === true && Object(_Lib_utils__WEBPACK_IMPORTED_MODULE_17__["isNullOrUndefined"])(encryptedPayload.content))) {\n _context11.next = 14;\n break;\n }\n\n decryptedPayloads.push(encryptedPayload);\n return _context11.abrupt("continue", 29);\n\n case 14:\n isDecryptable = Object(_Lib_utils__WEBPACK_IMPORTED_MODULE_17__["isString"])(encryptedPayload.content);\n\n if (isDecryptable) {\n _context11.next = 18;\n break;\n }\n\n decryptedPayloads.push(encryptedPayload);\n return _context11.abrupt("continue", 29);\n\n case 18:\n _context11.prev = 18;\n _context11.next = 21;\n return this.payloadByDecryptingPayload(encryptedPayload, key);\n\n case 21:\n decryptedPayload = _context11.sent;\n decryptedPayloads.push(decryptedPayload);\n _context11.next = 29;\n break;\n\n case 25:\n _context11.prev = 25;\n _context11.t0 = _context11["catch"](18);\n decryptedPayloads.push(Object(_Payloads_generator__WEBPACK_IMPORTED_MODULE_11__["CreateMaxPayloadFromAnyObject"])(encryptedPayload, {\n errorDecrypting: true,\n errorDecryptingValueChanged: !encryptedPayload.errorDecrypting\n }));\n console.error(\'Error decrypting payload\', encryptedPayload, _context11.t0);\n\n case 29:\n _iteratorNormalCompletion2 = true;\n _context11.next = 6;\n break;\n\n case 32:\n _context11.next = 38;\n break;\n\n case 34:\n _context11.prev = 34;\n _context11.t1 = _context11["catch"](4);\n _didIteratorError2 = true;\n _iteratorError2 = _context11.t1;\n\n case 38:\n _context11.prev = 38;\n _context11.prev = 39;\n\n if (!_iteratorNormalCompletion2 && _iterator2.return != null) {\n _iterator2.return();\n }\n\n case 41:\n _context11.prev = 41;\n\n if (!_didIteratorError2) {\n _context11.next = 44;\n break;\n }\n\n throw _iteratorError2;\n\n case 44:\n return _context11.finish(41);\n\n case 45:\n return _context11.finish(38);\n\n case 46:\n return _context11.abrupt("return", decryptedPayloads);\n\n case 47:\n case "end":\n return _context11.stop();\n }\n }\n }, _callee11, this, [[4, 34, 38, 46], [18, 25], [39,, 41, 45]]);\n }));\n\n function payloadsByDecryptingPayloads(_x12, _x13) {\n return _payloadsByDecryptingPayloads.apply(this, arguments);\n }\n\n return payloadsByDecryptingPayloads;\n }()\n /**\n * If an item was attempting to decrypt, but failed, either because the keys\n * for that item had not downloaded yet, or any other reason, it will be deferred\n * item.errorDecrypting = true and possibly item.waitingForKey = true.\n * Here we find such items, and attempt to decrypt them again.\n */\n\n }, {\n key: "decryptErroredItems",\n value: function () {\n var _decryptErroredItems = _asyncToGenerator( /*#__PURE__*/_babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0___default.a.mark(function _callee12() {\n var items, payloads, decrypted;\n return _babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0___default.a.wrap(function _callee12$(_context12) {\n while (1) {\n switch (_context12.prev = _context12.next) {\n case 0:\n items = this.itemManager.invalidItems;\n\n if (!(items.length === 0)) {\n _context12.next = 3;\n break;\n }\n\n return _context12.abrupt("return");\n\n case 3:\n payloads = items.map(function (item) {\n return item.payloadRepresentation();\n });\n _context12.next = 6;\n return this.payloadsByDecryptingPayloads(payloads);\n\n case 6:\n decrypted = _context12.sent;\n _context12.next = 9;\n return this.modelManager.emitPayloads(decrypted, _protocol_payloads_sources__WEBPACK_IMPORTED_MODULE_10__["PayloadSource"].LocalChanged);\n\n case 9:\n case "end":\n return _context12.stop();\n }\n }\n }, _callee12, this);\n }));\n\n function decryptErroredItems() {\n return _decryptErroredItems.apply(this, arguments);\n }\n\n return decryptErroredItems;\n }()\n /**\n * Decrypts a backup file using user-inputted password\n * @param password - The raw user password associated with this backup file\n */\n\n }, {\n key: "payloadsByDecryptingBackupFile",\n value: function () {\n var _payloadsByDecryptingBackupFile = _asyncToGenerator( /*#__PURE__*/_babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0___default.a.mark(function _callee13(data, password) {\n var keyParams, rawItems, encryptedPayloads, decryptedPayloads, key;\n return _babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0___default.a.wrap(function _callee13$(_context13) {\n while (1) {\n switch (_context13.prev = _context13.next) {\n case 0:\n keyParams = data.keyParams || data.auth_params;\n rawItems = data.items;\n encryptedPayloads = rawItems.map(function (rawItem) {\n return Object(_Payloads_generator__WEBPACK_IMPORTED_MODULE_11__["CreateSourcedPayloadFromObject"])(rawItem, _protocol_payloads_sources__WEBPACK_IMPORTED_MODULE_10__["PayloadSource"].FileImport);\n });\n\n if (!keyParams) {\n _context13.next = 12;\n break;\n }\n\n _context13.next = 6;\n return this.computeRootKey(password, keyParams);\n\n case 6:\n key = _context13.sent;\n _context13.next = 9;\n return this.payloadsByDecryptingPayloads(encryptedPayloads, key);\n\n case 9:\n decryptedPayloads = _context13.sent;\n _context13.next = 13;\n break;\n\n case 12:\n decryptedPayloads = encryptedPayloads;\n\n case 13:\n return _context13.abrupt("return", decryptedPayloads);\n\n case 14:\n case "end":\n return _context13.stop();\n }\n }\n }, _callee13, this);\n }));\n\n function payloadsByDecryptingBackupFile(_x14, _x15) {\n return _payloadsByDecryptingBackupFile.apply(this, arguments);\n }\n\n return payloadsByDecryptingBackupFile;\n }()\n /**\n * Creates a key params object from a raw object\n * @param keyParams - The raw key params object to create a KeyParams object from\n */\n\n }, {\n key: "createKeyParams",\n value: function createKeyParams(keyParams) {\n /* 002 doesn\'t have version automatically, newer versions do. */\n if (!keyParams.version) {\n keyParams.version = _Protocol_versions__WEBPACK_IMPORTED_MODULE_3__["ProtocolVersion"].V002;\n }\n\n return Object(_Protocol_key_params__WEBPACK_IMPORTED_MODULE_4__["CreateKeyParams"])(keyParams);\n }\n /**\n * Creates a JSON string representing the backup format of all items, or just subitems\n * if supplied.\n * @param subItems An optional array of items to create backup of.\n * If not supplied, all items are backed up.\n * @param returnIfEmpty Returns null if there are no items to make backup of.\n * @returns JSON stringified representation of data, including keyParams.\n */\n\n }, {\n key: "createBackupFile",\n value: function () {\n var _createBackupFile = _asyncToGenerator( /*#__PURE__*/_babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0___default.a.mark(function _callee14(subItems) {\n var intent,\n returnIfEmpty,\n items,\n encryptedPayloads,\n _iteratorNormalCompletion3,\n _didIteratorError3,\n _iteratorError3,\n _iterator3,\n _step3,\n item,\n payload,\n encrypted,\n data,\n keyParams,\n prettyPrint,\n _args14 = arguments;\n\n return _babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0___default.a.wrap(function _callee14$(_context14) {\n while (1) {\n switch (_context14.prev = _context14.next) {\n case 0:\n intent = _args14.length > 1 && _args14[1] !== undefined ? _args14[1] : _protocol_intents__WEBPACK_IMPORTED_MODULE_2__["EncryptionIntent"].FilePreferEncrypted;\n returnIfEmpty = _args14.length > 2 && _args14[2] !== undefined ? _args14[2] : false;\n items = subItems || this.itemManager.items;\n\n if (!(returnIfEmpty && items.length === 0)) {\n _context14.next = 5;\n break;\n }\n\n return _context14.abrupt("return", undefined);\n\n case 5:\n encryptedPayloads = [];\n _iteratorNormalCompletion3 = true;\n _didIteratorError3 = false;\n _iteratorError3 = undefined;\n _context14.prev = 9;\n _iterator3 = items[Symbol.iterator]();\n\n case 11:\n if (_iteratorNormalCompletion3 = (_step3 = _iterator3.next()).done) {\n _context14.next = 25;\n break;\n }\n\n item = _step3.value;\n\n if (!item.errorDecrypting) {\n _context14.next = 17;\n break;\n }\n\n /** Keep payload as-is */\n encryptedPayloads.push(item.payload);\n _context14.next = 22;\n break;\n\n case 17:\n payload = Object(_Payloads_generator__WEBPACK_IMPORTED_MODULE_11__["CreateSourcedPayloadFromObject"])(item.payload, _protocol_payloads_sources__WEBPACK_IMPORTED_MODULE_10__["PayloadSource"].FileImport);\n _context14.next = 20;\n return this.payloadByEncryptingPayload(payload, intent);\n\n case 20:\n encrypted = _context14.sent;\n encryptedPayloads.push(encrypted);\n\n case 22:\n _iteratorNormalCompletion3 = true;\n _context14.next = 11;\n break;\n\n case 25:\n _context14.next = 31;\n break;\n\n case 27:\n _context14.prev = 27;\n _context14.t0 = _context14["catch"](9);\n _didIteratorError3 = true;\n _iteratorError3 = _context14.t0;\n\n case 31:\n _context14.prev = 31;\n _context14.prev = 32;\n\n if (!_iteratorNormalCompletion3 && _iterator3.return != null) {\n _iterator3.return();\n }\n\n case 34:\n _context14.prev = 34;\n\n if (!_didIteratorError3) {\n _context14.next = 37;\n break;\n }\n\n throw _iteratorError3;\n\n case 37:\n return _context14.finish(34);\n\n case 38:\n return _context14.finish(31);\n\n case 39:\n data = {\n items: encryptedPayloads.map(function (p) {\n return p.ejected();\n })\n };\n _context14.next = 42;\n return this.getRootKeyParams();\n\n case 42:\n keyParams = _context14.sent;\n\n if (keyParams && intent !== _protocol_intents__WEBPACK_IMPORTED_MODULE_2__["EncryptionIntent"].FileDecrypted) {\n data.keyParams = keyParams.getPortableValue();\n }\n\n prettyPrint = 2;\n return _context14.abrupt("return", JSON.stringify(data, null, prettyPrint));\n\n case 46:\n case "end":\n return _context14.stop();\n }\n }\n }, _callee14, this, [[9, 27, 31, 39], [32,, 34, 38]]);\n }));\n\n function createBackupFile(_x16) {\n return _createBackupFile.apply(this, arguments);\n }\n\n return createBackupFile;\n }()\n /**\n * Register a callback to be notified when root key status changes.\n * @param callback A function that takes in a content type to call back when root\n * key or wrapper status has changed.\n */\n\n }, {\n key: "onKeyStatusChange",\n value: function onKeyStatusChange(callback) {\n var _this2 = this;\n\n this.keyObservers.push(callback);\n return function () {\n Object(_Lib_utils__WEBPACK_IMPORTED_MODULE_17__["removeFromArray"])(_this2.keyObservers, callback);\n };\n }\n }, {\n key: "notifyObserversOfKeyChange",\n value: function () {\n var _notifyObserversOfKeyChange = _asyncToGenerator( /*#__PURE__*/_babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0___default.a.mark(function _callee15() {\n var _iteratorNormalCompletion4, _didIteratorError4, _iteratorError4, _iterator4, _step4, observer;\n\n return _babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0___default.a.wrap(function _callee15$(_context15) {\n while (1) {\n switch (_context15.prev = _context15.next) {\n case 0:\n _iteratorNormalCompletion4 = true;\n _didIteratorError4 = false;\n _iteratorError4 = undefined;\n _context15.prev = 3;\n _iterator4 = this.keyObservers[Symbol.iterator]();\n\n case 5:\n if (_iteratorNormalCompletion4 = (_step4 = _iterator4.next()).done) {\n _context15.next = 12;\n break;\n }\n\n observer = _step4.value;\n _context15.next = 9;\n return observer();\n\n case 9:\n _iteratorNormalCompletion4 = true;\n _context15.next = 5;\n break;\n\n case 12:\n _context15.next = 18;\n break;\n\n case 14:\n _context15.prev = 14;\n _context15.t0 = _context15["catch"](3);\n _didIteratorError4 = true;\n _iteratorError4 = _context15.t0;\n\n case 18:\n _context15.prev = 18;\n _context15.prev = 19;\n\n if (!_iteratorNormalCompletion4 && _iterator4.return != null) {\n _iterator4.return();\n }\n\n case 21:\n _context15.prev = 21;\n\n if (!_didIteratorError4) {\n _context15.next = 24;\n break;\n }\n\n throw _iteratorError4;\n\n case 24:\n return _context15.finish(21);\n\n case 25:\n return _context15.finish(18);\n\n case 26:\n case "end":\n return _context15.stop();\n }\n }\n }, _callee15, this, [[3, 14, 18, 26], [19,, 21, 25]]);\n }));\n\n function notifyObserversOfKeyChange() {\n return _notifyObserversOfKeyChange.apply(this, arguments);\n }\n\n return notifyObserversOfKeyChange;\n }()\n }, {\n key: "getRootKeyFromKeychain",\n value: function () {\n var _getRootKeyFromKeychain = _asyncToGenerator( /*#__PURE__*/_babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0___default.a.mark(function _callee16() {\n var rawKey, rootKey;\n return _babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0___default.a.wrap(function _callee16$(_context16) {\n while (1) {\n switch (_context16.prev = _context16.next) {\n case 0:\n _context16.next = 2;\n return this.deviceInterface.getKeychainValue();\n\n case 2:\n rawKey = _context16.sent;\n\n if (!Object(_Lib_utils__WEBPACK_IMPORTED_MODULE_17__["isNullOrUndefined"])(rawKey)) {\n _context16.next = 5;\n break;\n }\n\n return _context16.abrupt("return", undefined);\n\n case 5:\n _context16.next = 7;\n return _Protocol_root_key__WEBPACK_IMPORTED_MODULE_14__["SNRootKey"].Create(rawKey);\n\n case 7:\n rootKey = _context16.sent;\n return _context16.abrupt("return", rootKey);\n\n case 9:\n case "end":\n return _context16.stop();\n }\n }\n }, _callee16, this);\n }));\n\n function getRootKeyFromKeychain() {\n return _getRootKeyFromKeychain.apply(this, arguments);\n }\n\n return getRootKeyFromKeychain;\n }()\n }, {\n key: "saveRootKeyToKeychain",\n value: function () {\n var _saveRootKeyToKeychain = _asyncToGenerator( /*#__PURE__*/_babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0___default.a.mark(function _callee17() {\n var _this3 = this;\n\n var rawKey;\n return _babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0___default.a.wrap(function _callee17$(_context17) {\n while (1) {\n switch (_context17.prev = _context17.next) {\n case 0:\n if (!Object(_Lib_utils__WEBPACK_IMPORTED_MODULE_17__["isNullOrUndefined"])(this.rootKey)) {\n _context17.next = 2;\n break;\n }\n\n throw \'Attempting to non-existent root key to the keychain.\';\n\n case 2:\n if (!(this.keyMode !== KeyMode.RootKeyOnly)) {\n _context17.next = 4;\n break;\n }\n\n throw \'Should not be persisting wrapped key to keychain.\';\n\n case 4:\n rawKey = this.rootKey.getPersistableValue();\n return _context17.abrupt("return", this.executeCriticalFunction(function () {\n return _this3.deviceInterface.setKeychainValue(rawKey);\n }));\n\n case 6:\n case "end":\n return _context17.stop();\n }\n }\n }, _callee17, this);\n }));\n\n function saveRootKeyToKeychain() {\n return _saveRootKeyToKeychain.apply(this, arguments);\n }\n\n return saveRootKeyToKeychain;\n }()\n /**\n * @returns True if a root key wrapper (passcode) is configured.\n */\n\n }, {\n key: "hasRootKeyWrapper",\n value: function () {\n var _hasRootKeyWrapper = _asyncToGenerator( /*#__PURE__*/_babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0___default.a.mark(function _callee18() {\n var wrapper;\n return _babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0___default.a.wrap(function _callee18$(_context18) {\n while (1) {\n switch (_context18.prev = _context18.next) {\n case 0:\n _context18.next = 2;\n return this.getRootKeyWrapperKeyParams();\n\n case 2:\n wrapper = _context18.sent;\n return _context18.abrupt("return", !Object(_Lib_utils__WEBPACK_IMPORTED_MODULE_17__["isNullOrUndefined"])(wrapper));\n\n case 4:\n case "end":\n return _context18.stop();\n }\n }\n }, _callee18, this);\n }));\n\n function hasRootKeyWrapper() {\n return _hasRootKeyWrapper.apply(this, arguments);\n }\n\n return hasRootKeyWrapper;\n }()\n /**\n * A non-async alternative to `hasRootKeyWrapper` which uses pre-loaded state\n * to determine if a passcode is configured.\n */\n\n }, {\n key: "hasPasscode",\n value: function hasPasscode() {\n return this.keyMode === KeyMode.WrapperOnly || this.keyMode === KeyMode.RootKeyPlusWrapper;\n }\n /**\n * @returns True if the root key has not yet been unwrapped (passcode locked).\n */\n\n }, {\n key: "rootKeyNeedsUnwrapping",\n value: function () {\n var _rootKeyNeedsUnwrapping = _asyncToGenerator( /*#__PURE__*/_babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0___default.a.mark(function _callee19() {\n return _babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0___default.a.wrap(function _callee19$(_context19) {\n while (1) {\n switch (_context19.prev = _context19.next) {\n case 0:\n _context19.next = 2;\n return this.hasRootKeyWrapper();\n\n case 2:\n _context19.t0 = _context19.sent;\n\n if (!_context19.t0) {\n _context19.next = 5;\n break;\n }\n\n _context19.t0 = Object(_Lib_utils__WEBPACK_IMPORTED_MODULE_17__["isNullOrUndefined"])(this.rootKey);\n\n case 5:\n return _context19.abrupt("return", _context19.t0);\n\n case 6:\n case "end":\n return _context19.stop();\n }\n }\n }, _callee19, this);\n }));\n\n function rootKeyNeedsUnwrapping() {\n return _rootKeyNeedsUnwrapping.apply(this, arguments);\n }\n\n return rootKeyNeedsUnwrapping;\n }()\n /**\n * @returns Key params object containing root key wrapper key params\n */\n\n }, {\n key: "getRootKeyWrapperKeyParams",\n value: function () {\n var _getRootKeyWrapperKeyParams = _asyncToGenerator( /*#__PURE__*/_babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0___default.a.mark(function _callee20() {\n var rawKeyParams;\n return _babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0___default.a.wrap(function _callee20$(_context20) {\n while (1) {\n switch (_context20.prev = _context20.next) {\n case 0:\n _context20.next = 2;\n return this.storageService.getValue(_Lib_storage_keys__WEBPACK_IMPORTED_MODULE_20__["StorageKey"].RootKeyWrapperKeyParams, _Lib_services_storage_service__WEBPACK_IMPORTED_MODULE_21__["StorageValueModes"].Nonwrapped);\n\n case 2:\n rawKeyParams = _context20.sent;\n\n if (rawKeyParams) {\n _context20.next = 5;\n break;\n }\n\n return _context20.abrupt("return", undefined);\n\n case 5:\n return _context20.abrupt("return", this.createKeyParams(rawKeyParams));\n\n case 6:\n case "end":\n return _context20.stop();\n }\n }\n }, _callee20, this);\n }));\n\n function getRootKeyWrapperKeyParams() {\n return _getRootKeyWrapperKeyParams.apply(this, arguments);\n }\n\n return getRootKeyWrapperKeyParams;\n }()\n /**\n * @returns Object containing persisted wrapped (encrypted) root key\n */\n\n }, {\n key: "getWrappedRootKey",\n value: function () {\n var _getWrappedRootKey = _asyncToGenerator( /*#__PURE__*/_babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0___default.a.mark(function _callee21() {\n return _babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0___default.a.wrap(function _callee21$(_context21) {\n while (1) {\n switch (_context21.prev = _context21.next) {\n case 0:\n return _context21.abrupt("return", this.storageService.getValue(_Lib_storage_keys__WEBPACK_IMPORTED_MODULE_20__["StorageKey"].WrappedRootKey, _Lib_services_storage_service__WEBPACK_IMPORTED_MODULE_21__["StorageValueModes"].Nonwrapped));\n\n case 1:\n case "end":\n return _context21.stop();\n }\n }\n }, _callee21, this);\n }));\n\n function getWrappedRootKey() {\n return _getWrappedRootKey.apply(this, arguments);\n }\n\n return getWrappedRootKey;\n }()\n /**\n * Returns rootKeyParams by reading from storage.\n */\n\n }, {\n key: "getRootKeyParams",\n value: function () {\n var _getRootKeyParams = _asyncToGenerator( /*#__PURE__*/_babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0___default.a.mark(function _callee22() {\n return _babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0___default.a.wrap(function _callee22$(_context22) {\n while (1) {\n switch (_context22.prev = _context22.next) {\n case 0:\n if (!(this.keyMode === KeyMode.WrapperOnly)) {\n _context22.next = 4;\n break;\n }\n\n return _context22.abrupt("return", this.getRootKeyWrapperKeyParams());\n\n case 4:\n if (!(this.keyMode === KeyMode.RootKeyOnly || this.keyMode === KeyMode.RootKeyPlusWrapper)) {\n _context22.next = 8;\n break;\n }\n\n return _context22.abrupt("return", this.getAccountKeyParams());\n\n case 8:\n if (!(this.keyMode === KeyMode.RootKeyNone)) {\n _context22.next = 12;\n break;\n }\n\n return _context22.abrupt("return", undefined);\n\n case 12:\n throw "Unhandled key mode for getRootKeyParams ".concat(this.keyMode);\n\n case 13:\n case "end":\n return _context22.stop();\n }\n }\n }, _callee22, this);\n }));\n\n function getRootKeyParams() {\n return _getRootKeyParams.apply(this, arguments);\n }\n\n return getRootKeyParams;\n }()\n /**\n * @returns getRootKeyParams may return different params based on different\n * keyMode. This function however strictly returns only account params.\n */\n\n }, {\n key: "getAccountKeyParams",\n value: function () {\n var _getAccountKeyParams = _asyncToGenerator( /*#__PURE__*/_babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0___default.a.mark(function _callee23() {\n var rawKeyParams;\n return _babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0___default.a.wrap(function _callee23$(_context23) {\n while (1) {\n switch (_context23.prev = _context23.next) {\n case 0:\n _context23.next = 2;\n return this.storageService.getValue(_Lib_storage_keys__WEBPACK_IMPORTED_MODULE_20__["StorageKey"].RootKeyParams, _Lib_services_storage_service__WEBPACK_IMPORTED_MODULE_21__["StorageValueModes"].Nonwrapped);\n\n case 2:\n rawKeyParams = _context23.sent;\n\n if (rawKeyParams) {\n _context23.next = 5;\n break;\n }\n\n return _context23.abrupt("return", undefined);\n\n case 5:\n return _context23.abrupt("return", this.createKeyParams(rawKeyParams));\n\n case 6:\n case "end":\n return _context23.stop();\n }\n }\n }, _callee23, this);\n }));\n\n function getAccountKeyParams() {\n return _getAccountKeyParams.apply(this, arguments);\n }\n\n return getAccountKeyParams;\n }()\n /**\n * We know a wrappingKey is correct if it correctly decrypts\n * wrapped root key.\n */\n\n }, {\n key: "validateWrappingKey",\n value: function () {\n var _validateWrappingKey = _asyncToGenerator( /*#__PURE__*/_babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0___default.a.mark(function _callee24(wrappingKey) {\n var wrappedRootKey, wrappedKeyPayload, decrypted;\n return _babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0___default.a.wrap(function _callee24$(_context24) {\n while (1) {\n switch (_context24.prev = _context24.next) {\n case 0:\n _context24.next = 2;\n return this.getWrappedRootKey();\n\n case 2:\n wrappedRootKey = _context24.sent;\n\n if (!(this.keyMode === KeyMode.WrapperOnly)) {\n _context24.next = 7;\n break;\n }\n\n return _context24.abrupt("return", this.storageService.canDecryptWithKey(wrappingKey));\n\n case 7:\n if (!(this.keyMode === KeyMode.RootKeyOnly || this.keyMode === KeyMode.RootKeyPlusWrapper)) {\n _context24.next = 15;\n break;\n }\n\n /**\n * In these modes, storage is encrypted with account keys, and\n * account keys are encrypted with wrappingKey. Here we validate\n * by attempting to decrypt account keys.\n */\n wrappedKeyPayload = Object(_Payloads_generator__WEBPACK_IMPORTED_MODULE_11__["CreateMaxPayloadFromAnyObject"])(wrappedRootKey);\n _context24.next = 11;\n return this.payloadByDecryptingPayload(wrappedKeyPayload, wrappingKey);\n\n case 11:\n decrypted = _context24.sent;\n return _context24.abrupt("return", !decrypted.errorDecrypting);\n\n case 15:\n throw \'Unhandled case in validateWrappingKey\';\n\n case 16:\n case "end":\n return _context24.stop();\n }\n }\n }, _callee24, this);\n }));\n\n function validateWrappingKey(_x17) {\n return _validateWrappingKey.apply(this, arguments);\n }\n\n return validateWrappingKey;\n }()\n /**\n * Computes the root key wrapping key given a passcode.\n * Wrapping key params are read from disk.\n */\n\n }, {\n key: "computeWrappingKey",\n value: function () {\n var _computeWrappingKey = _asyncToGenerator( /*#__PURE__*/_babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0___default.a.mark(function _callee25(passcode) {\n var keyParams, key;\n return _babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0___default.a.wrap(function _callee25$(_context25) {\n while (1) {\n switch (_context25.prev = _context25.next) {\n case 0:\n _context25.next = 2;\n return this.getRootKeyWrapperKeyParams();\n\n case 2:\n keyParams = _context25.sent;\n _context25.next = 5;\n return this.computeRootKey(passcode, keyParams);\n\n case 5:\n key = _context25.sent;\n return _context25.abrupt("return", key);\n\n case 7:\n case "end":\n return _context25.stop();\n }\n }\n }, _callee25, this);\n }));\n\n function computeWrappingKey(_x18) {\n return _computeWrappingKey.apply(this, arguments);\n }\n\n return computeWrappingKey;\n }()\n /**\n * Unwraps the persisted root key value using the supplied wrappingKey.\n * Application interfaces must check to see if the root key requires unwrapping on load.\n * If so, they must generate the unwrapping key by getting our saved wrapping key keyParams.\n * After unwrapping, the root key is automatically loaded.\n */\n\n }, {\n key: "unwrapRootKey",\n value: function () {\n var _unwrapRootKey = _asyncToGenerator( /*#__PURE__*/_babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0___default.a.mark(function _callee26(wrappingKey) {\n var wrappedKey, payload, decrypted;\n return _babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0___default.a.wrap(function _callee26$(_context26) {\n while (1) {\n switch (_context26.prev = _context26.next) {\n case 0:\n if (!(this.keyMode === KeyMode.WrapperOnly)) {\n _context26.next = 3;\n break;\n }\n\n this.rootKey = wrappingKey;\n return _context26.abrupt("return");\n\n case 3:\n if (!(this.keyMode !== KeyMode.RootKeyPlusWrapper)) {\n _context26.next = 5;\n break;\n }\n\n throw \'Invalid key mode condition for unwrapping.\';\n\n case 5:\n _context26.next = 7;\n return this.getWrappedRootKey();\n\n case 7:\n wrappedKey = _context26.sent;\n payload = Object(_Payloads_generator__WEBPACK_IMPORTED_MODULE_11__["CreateMaxPayloadFromAnyObject"])(wrappedKey);\n _context26.next = 11;\n return this.payloadByDecryptingPayload(payload, wrappingKey);\n\n case 11:\n decrypted = _context26.sent;\n\n if (!decrypted.errorDecrypting) {\n _context26.next = 16;\n break;\n }\n\n throw Error(\'Unable to decrypt root key with provided wrapping key.\');\n\n case 16:\n _context26.next = 18;\n return _Protocol_root_key__WEBPACK_IMPORTED_MODULE_14__["SNRootKey"].Create(decrypted.contentObject, decrypted.uuid);\n\n case 18:\n this.rootKey = _context26.sent;\n _context26.next = 21;\n return this.notifyObserversOfKeyChange();\n\n case 21:\n case "end":\n return _context26.stop();\n }\n }\n }, _callee26, this);\n }));\n\n function unwrapRootKey(_x19) {\n return _unwrapRootKey.apply(this, arguments);\n }\n\n return unwrapRootKey;\n }()\n /**\n * Encrypts rootKey and saves it in storage instead of keychain, and then\n * clears keychain. This is because we don\'t want to store large encrypted\n * payloads in the keychain. If the root key is not wrapped, it is stored\n * in plain form in the user\'s secure keychain.\n */\n\n }, {\n key: "setNewRootKeyWrapper",\n value: function () {\n var _setNewRootKeyWrapper = _asyncToGenerator( /*#__PURE__*/_babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0___default.a.mark(function _callee27(wrappingKey, keyParams) {\n return _babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0___default.a.wrap(function _callee27$(_context27) {\n while (1) {\n switch (_context27.prev = _context27.next) {\n case 0:\n if (!(this.keyMode === KeyMode.RootKeyNone)) {\n _context27.next = 4;\n break;\n }\n\n this.keyMode = KeyMode.WrapperOnly;\n _context27.next = 9;\n break;\n\n case 4:\n if (!(this.keyMode === KeyMode.RootKeyOnly)) {\n _context27.next = 8;\n break;\n }\n\n this.keyMode = KeyMode.RootKeyPlusWrapper;\n _context27.next = 9;\n break;\n\n case 8:\n throw Error(\'Attempting to set wrapper on already wrapped key.\');\n\n case 9:\n _context27.next = 11;\n return this.deviceInterface.clearKeychainValue();\n\n case 11:\n if (!(this.keyMode === KeyMode.WrapperOnly || this.keyMode === KeyMode.RootKeyPlusWrapper)) {\n _context27.next = 26;\n break;\n }\n\n if (!(this.keyMode === KeyMode.WrapperOnly)) {\n _context27.next = 18;\n break;\n }\n\n this.rootKey = wrappingKey;\n _context27.next = 16;\n return this.reencryptItemsKeys();\n\n case 16:\n _context27.next = 20;\n break;\n\n case 18:\n _context27.next = 20;\n return this.wrapAndPersistRootKey(wrappingKey);\n\n case 20:\n _context27.next = 22;\n return this.storageService.setValue(_Lib_storage_keys__WEBPACK_IMPORTED_MODULE_20__["StorageKey"].RootKeyWrapperKeyParams, keyParams.getPortableValue(), _Lib_services_storage_service__WEBPACK_IMPORTED_MODULE_21__["StorageValueModes"].Nonwrapped);\n\n case 22:\n _context27.next = 24;\n return this.notifyObserversOfKeyChange();\n\n case 24:\n _context27.next = 27;\n break;\n\n case 26:\n throw Error(\'Invalid keyMode on setNewRootKeyWrapper\');\n\n case 27:\n case "end":\n return _context27.stop();\n }\n }\n }, _callee27, this);\n }));\n\n function setNewRootKeyWrapper(_x20, _x21) {\n return _setNewRootKeyWrapper.apply(this, arguments);\n }\n\n return setNewRootKeyWrapper;\n }()\n /**\n * Wraps the current in-memory root key value using the wrappingKey,\n * then persists the wrapped value to disk.\n */\n\n }, {\n key: "wrapAndPersistRootKey",\n value: function () {\n var _wrapAndPersistRootKey = _asyncToGenerator( /*#__PURE__*/_babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0___default.a.mark(function _callee28(wrappingKey) {\n var payload, wrappedKey;\n return _babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0___default.a.wrap(function _callee28$(_context28) {\n while (1) {\n switch (_context28.prev = _context28.next) {\n case 0:\n payload = Object(_Payloads_generator__WEBPACK_IMPORTED_MODULE_11__["CreateMaxPayloadFromAnyObject"])(this.rootKey, {\n content: this.rootKey.getPersistableValue()\n });\n _context28.next = 3;\n return this.payloadByEncryptingPayload(payload, _protocol_intents__WEBPACK_IMPORTED_MODULE_2__["EncryptionIntent"].LocalStorageEncrypted, wrappingKey);\n\n case 3:\n wrappedKey = _context28.sent;\n _context28.next = 6;\n return this.storageService.setValue(_Lib_storage_keys__WEBPACK_IMPORTED_MODULE_20__["StorageKey"].WrappedRootKey, wrappedKey.ejected(), _Lib_services_storage_service__WEBPACK_IMPORTED_MODULE_21__["StorageValueModes"].Nonwrapped);\n\n case 6:\n case "end":\n return _context28.stop();\n }\n }\n }, _callee28, this);\n }));\n\n function wrapAndPersistRootKey(_x22) {\n return _wrapAndPersistRootKey.apply(this, arguments);\n }\n\n return wrapAndPersistRootKey;\n }()\n /**\n * Removes root key wrapper from local storage and stores root key bare in secure keychain.\n */\n\n }, {\n key: "removeRootKeyWrapper",\n value: function () {\n var _removeRootKeyWrapper = _asyncToGenerator( /*#__PURE__*/_babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0___default.a.mark(function _callee29() {\n return _babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0___default.a.wrap(function _callee29$(_context29) {\n while (1) {\n switch (_context29.prev = _context29.next) {\n case 0:\n if (!(this.keyMode !== KeyMode.WrapperOnly && this.keyMode !== KeyMode.RootKeyPlusWrapper)) {\n _context29.next = 2;\n break;\n }\n\n throw \'Attempting to remove root key wrapper on unwrapped key.\';\n\n case 2:\n if (this.keyMode === KeyMode.WrapperOnly) {\n this.keyMode = KeyMode.RootKeyNone;\n this.rootKey = undefined;\n } else if (this.keyMode === KeyMode.RootKeyPlusWrapper) {\n this.keyMode = KeyMode.RootKeyOnly;\n }\n\n _context29.next = 5;\n return this.storageService.removeValue(_Lib_storage_keys__WEBPACK_IMPORTED_MODULE_20__["StorageKey"].WrappedRootKey, _Lib_services_storage_service__WEBPACK_IMPORTED_MODULE_21__["StorageValueModes"].Nonwrapped);\n\n case 5:\n _context29.next = 7;\n return this.storageService.removeValue(_Lib_storage_keys__WEBPACK_IMPORTED_MODULE_20__["StorageKey"].RootKeyWrapperKeyParams, _Lib_services_storage_service__WEBPACK_IMPORTED_MODULE_21__["StorageValueModes"].Nonwrapped);\n\n case 7:\n if (!(this.keyMode === KeyMode.RootKeyOnly)) {\n _context29.next = 10;\n break;\n }\n\n _context29.next = 10;\n return this.saveRootKeyToKeychain();\n\n case 10:\n _context29.next = 12;\n return this.notifyObserversOfKeyChange();\n\n case 12:\n case "end":\n return _context29.stop();\n }\n }\n }, _callee29, this);\n }));\n\n function removeRootKeyWrapper() {\n return _removeRootKeyWrapper.apply(this, arguments);\n }\n\n return removeRootKeyWrapper;\n }()\n /**\n * The root key is distinct from regular keys and are only saved locally in the keychain,\n * in non-item form. Applications set root key on sign in, register, or password change.\n * @param key A SNRootKey object.\n * @param wrappingKey If a passcode is configured, the wrapping key\n * must be supplied, so that the new root key can be wrapped with the wrapping key.\n */\n\n }, {\n key: "setNewRootKey",\n value: function () {\n var _setNewRootKey = _asyncToGenerator( /*#__PURE__*/_babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0___default.a.mark(function _callee30(key, keyParams, wrappingKey) {\n return _babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0___default.a.wrap(function _callee30$(_context30) {\n while (1) {\n switch (_context30.prev = _context30.next) {\n case 0:\n if (keyParams) {\n _context30.next = 2;\n break;\n }\n\n throw Error(\'keyParams must be supplied if setting root key.\');\n\n case 2:\n if (!(this.rootKey === key)) {\n _context30.next = 4;\n break;\n }\n\n throw Error(\'Attempting to set root key as same current value.\');\n\n case 4:\n if (!(this.keyMode === KeyMode.WrapperOnly)) {\n _context30.next = 8;\n break;\n }\n\n this.keyMode = KeyMode.RootKeyPlusWrapper;\n _context30.next = 16;\n break;\n\n case 8:\n if (!(this.keyMode === KeyMode.RootKeyNone)) {\n _context30.next = 12;\n break;\n }\n\n this.keyMode = KeyMode.RootKeyOnly;\n _context30.next = 16;\n break;\n\n case 12:\n if (!(this.keyMode === KeyMode.RootKeyOnly || this.keyMode === KeyMode.RootKeyPlusWrapper)) {\n _context30.next = 15;\n break;\n }\n\n _context30.next = 16;\n break;\n\n case 15:\n throw Error("Unhandled key mode for setNewRootKey ".concat(this.keyMode));\n\n case 16:\n this.rootKey = key;\n _context30.next = 19;\n return this.storageService.setValue(_Lib_storage_keys__WEBPACK_IMPORTED_MODULE_20__["StorageKey"].RootKeyParams, keyParams.getPortableValue(), _Lib_services_storage_service__WEBPACK_IMPORTED_MODULE_21__["StorageValueModes"].Nonwrapped);\n\n case 19:\n if (!(this.keyMode === KeyMode.RootKeyOnly)) {\n _context30.next = 24;\n break;\n }\n\n _context30.next = 22;\n return this.saveRootKeyToKeychain();\n\n case 22:\n _context30.next = 29;\n break;\n\n case 24:\n if (!(this.keyMode === KeyMode.RootKeyPlusWrapper)) {\n _context30.next = 29;\n break;\n }\n\n if (wrappingKey) {\n _context30.next = 27;\n break;\n }\n\n throw Error(\'wrappingKey must be supplied\');\n\n case 27:\n _context30.next = 29;\n return this.wrapAndPersistRootKey(wrappingKey);\n\n case 29:\n _context30.next = 31;\n return this.notifyObserversOfKeyChange();\n\n case 31:\n _context30.next = 33;\n return this.reencryptItemsKeys();\n\n case 33:\n case "end":\n return _context30.stop();\n }\n }\n }, _callee30, this);\n }));\n\n function setNewRootKey(_x23, _x24, _x25) {\n return _setNewRootKey.apply(this, arguments);\n }\n\n return setNewRootKey;\n }()\n /**\n * Returns the in-memory root key value.\n */\n\n }, {\n key: "getRootKey",\n value: function () {\n var _getRootKey = _asyncToGenerator( /*#__PURE__*/_babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0___default.a.mark(function _callee31() {\n return _babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0___default.a.wrap(function _callee31$(_context31) {\n while (1) {\n switch (_context31.prev = _context31.next) {\n case 0:\n return _context31.abrupt("return", this.rootKey);\n\n case 1:\n case "end":\n return _context31.stop();\n }\n }\n }, _callee31, this);\n }));\n\n function getRootKey() {\n return _getRootKey.apply(this, arguments);\n }\n\n return getRootKey;\n }()\n /**\n * Deletes root key and wrapper from keychain. Used when signing out of application.\n */\n\n }, {\n key: "clearLocalKeyState",\n value: function () {\n var _clearLocalKeyState = _asyncToGenerator( /*#__PURE__*/_babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0___default.a.mark(function _callee32() {\n return _babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0___default.a.wrap(function _callee32$(_context32) {\n while (1) {\n switch (_context32.prev = _context32.next) {\n case 0:\n _context32.next = 2;\n return this.deviceInterface.clearKeychainValue();\n\n case 2:\n _context32.next = 4;\n return this.storageService.removeValue(_Lib_storage_keys__WEBPACK_IMPORTED_MODULE_20__["StorageKey"].WrappedRootKey, _Lib_services_storage_service__WEBPACK_IMPORTED_MODULE_21__["StorageValueModes"].Nonwrapped);\n\n case 4:\n _context32.next = 6;\n return this.storageService.removeValue(_Lib_storage_keys__WEBPACK_IMPORTED_MODULE_20__["StorageKey"].RootKeyWrapperKeyParams, _Lib_services_storage_service__WEBPACK_IMPORTED_MODULE_21__["StorageValueModes"].Nonwrapped);\n\n case 6:\n _context32.next = 8;\n return this.storageService.removeValue(_Lib_storage_keys__WEBPACK_IMPORTED_MODULE_20__["StorageKey"].RootKeyParams, _Lib_services_storage_service__WEBPACK_IMPORTED_MODULE_21__["StorageValueModes"].Nonwrapped);\n\n case 8:\n this.keyMode = KeyMode.RootKeyNone;\n this.rootKey = undefined;\n _context32.next = 12;\n return this.notifyObserversOfKeyChange();\n\n case 12:\n case "end":\n return _context32.stop();\n }\n }\n }, _callee32, this);\n }));\n\n function clearLocalKeyState() {\n return _clearLocalKeyState.apply(this, arguments);\n }\n\n return clearLocalKeyState;\n }()\n /**\n * @param password The password string to generate a root key from.\n */\n\n }, {\n key: "validateAccountPassword",\n value: function () {\n var _validateAccountPassword = _asyncToGenerator( /*#__PURE__*/_babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0___default.a.mark(function _callee33(password) {\n var keyParams, key, valid;\n return _babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0___default.a.wrap(function _callee33$(_context33) {\n while (1) {\n switch (_context33.prev = _context33.next) {\n case 0:\n _context33.next = 2;\n return this.getRootKeyParams();\n\n case 2:\n keyParams = _context33.sent;\n _context33.next = 5;\n return this.computeRootKey(password, keyParams);\n\n case 5:\n key = _context33.sent;\n valid = key.compare(this.rootKey);\n\n if (!valid) {\n _context33.next = 11;\n break;\n }\n\n return _context33.abrupt("return", {\n valid: valid,\n artifacts: {\n rootKey: key\n }\n });\n\n case 11:\n return _context33.abrupt("return", {\n valid: false\n });\n\n case 12:\n case "end":\n return _context33.stop();\n }\n }\n }, _callee33, this);\n }));\n\n function validateAccountPassword(_x26) {\n return _validateAccountPassword.apply(this, arguments);\n }\n\n return validateAccountPassword;\n }()\n /**\n * @param passcode The passcode string to generate a root key from.\n */\n\n }, {\n key: "validatePasscode",\n value: function () {\n var _validatePasscode = _asyncToGenerator( /*#__PURE__*/_babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0___default.a.mark(function _callee34(passcode) {\n var keyParams, key, valid;\n return _babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0___default.a.wrap(function _callee34$(_context34) {\n while (1) {\n switch (_context34.prev = _context34.next) {\n case 0:\n _context34.next = 2;\n return this.getRootKeyWrapperKeyParams();\n\n case 2:\n keyParams = _context34.sent;\n _context34.next = 5;\n return this.computeRootKey(passcode, keyParams);\n\n case 5:\n key = _context34.sent;\n _context34.next = 8;\n return this.validateWrappingKey(key);\n\n case 8:\n valid = _context34.sent;\n\n if (!valid) {\n _context34.next = 13;\n break;\n }\n\n return _context34.abrupt("return", {\n valid: valid,\n artifacts: {\n wrappingKey: key\n }\n });\n\n case 13:\n return _context34.abrupt("return", {\n valid: false\n });\n\n case 14:\n case "end":\n return _context34.stop();\n }\n }\n }, _callee34, this);\n }));\n\n function validatePasscode(_x27) {\n return _validatePasscode.apply(this, arguments);\n }\n\n return validatePasscode;\n }()\n /**\n * Only two types of items should be encrypted with a root key:\n * - An SNItemsKey object\n * - An encrypted storage object (local)\n */\n\n }, {\n key: "contentTypeUsesRootKeyEncryption",\n value: function contentTypeUsesRootKeyEncryption(contentType) {\n return contentType === _Models_content_types__WEBPACK_IMPORTED_MODULE_19__["ContentType"].ItemsKey || contentType === _Models_content_types__WEBPACK_IMPORTED_MODULE_19__["ContentType"].EncryptedStorage;\n }\n /**\n * Determines which key to use for encryption of the payload\n * The key object to use for encrypting the payload.\n */\n\n }, {\n key: "keyToUseForEncryptionOfPayload",\n value: function () {\n var _keyToUseForEncryptionOfPayload = _asyncToGenerator( /*#__PURE__*/_babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0___default.a.mark(function _callee35(payload, intent) {\n var rootKey;\n return _babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0___default.a.wrap(function _callee35$(_context35) {\n while (1) {\n switch (_context35.prev = _context35.next) {\n case 0:\n if (!Object(_Lib_utils__WEBPACK_IMPORTED_MODULE_17__["isNullOrUndefined"])(intent)) {\n _context35.next = 2;\n break;\n }\n\n throw \'Intent must be supplied when looking up key for encryption of item.\';\n\n case 2:\n if (!this.contentTypeUsesRootKeyEncryption(payload.content_type)) {\n _context35.next = 15;\n break;\n }\n\n _context35.next = 5;\n return this.getRootKey();\n\n case 5:\n rootKey = _context35.sent;\n\n if (rootKey) {\n _context35.next = 12;\n break;\n }\n\n if (!Object(_Lib_protocol__WEBPACK_IMPORTED_MODULE_22__["intentRequiresEncryption"])(intent)) {\n _context35.next = 11;\n break;\n }\n\n throw \'Root key encryption is required but no root key is available.\';\n\n case 11:\n return _context35.abrupt("return", undefined);\n\n case 12:\n return _context35.abrupt("return", rootKey);\n\n case 15:\n return _context35.abrupt("return", this.getDefaultItemsKey());\n\n case 16:\n case "end":\n return _context35.stop();\n }\n }\n }, _callee35, this);\n }));\n\n function keyToUseForEncryptionOfPayload(_x28, _x29) {\n return _keyToUseForEncryptionOfPayload.apply(this, arguments);\n }\n\n return keyToUseForEncryptionOfPayload;\n }()\n /**\n * Payloads could have been previously encrypted with any arbitrary SNItemsKey object.\n * If the payload is an items key object, it is always encrypted with the root key,\n * and so return that. Otherwise, we check to see if the payload has an\n * items_key_id and return that key. If it doesn\'t, this means the payload was\n * encrypted with legacy behavior. We return then the key object corresponding\n * to the version of this payload.\n * @returns The key object to use for decrypting this payload.\n */\n\n }, {\n key: "keyToUseForDecryptionOfPayload",\n value: function () {\n var _keyToUseForDecryptionOfPayload = _asyncToGenerator( /*#__PURE__*/_babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0___default.a.mark(function _callee36(payload) {\n var itemsKey, payloadVersion;\n return _babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0___default.a.wrap(function _callee36$(_context36) {\n while (1) {\n switch (_context36.prev = _context36.next) {\n case 0:\n if (!this.contentTypeUsesRootKeyEncryption(payload.content_type)) {\n _context36.next = 2;\n break;\n }\n\n return _context36.abrupt("return", this.getRootKey());\n\n case 2:\n if (!payload.items_key_id) {\n _context36.next = 5;\n break;\n }\n\n itemsKey = this.itemsKeyForPayload(payload);\n return _context36.abrupt("return", itemsKey);\n\n case 5:\n payloadVersion = payload.version;\n\n if (!(payloadVersion === this.getLatestVersion())) {\n _context36.next = 8;\n break;\n }\n\n throw \'No associated key found for item encrypted with latest protocol version.\';\n\n case 8:\n return _context36.abrupt("return", this.defaultItemsKeyForItemVersion(payloadVersion));\n\n case 9:\n case "end":\n return _context36.stop();\n }\n }\n }, _callee36, this);\n }));\n\n function keyToUseForDecryptionOfPayload(_x30) {\n return _keyToUseForDecryptionOfPayload.apply(this, arguments);\n }\n\n return keyToUseForDecryptionOfPayload;\n }()\n }, {\n key: "onSyncEvent",\n value: function () {\n var _onSyncEvent = _asyncToGenerator( /*#__PURE__*/_babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0___default.a.mark(function _callee37(eventName) {\n return _babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0___default.a.wrap(function _callee37$(_context37) {\n while (1) {\n switch (_context37.prev = _context37.next) {\n case 0:\n if (!(eventName === _Lib_events__WEBPACK_IMPORTED_MODULE_12__["SyncEvent"].FullSyncCompleted)) {\n _context37.next = 3;\n break;\n }\n\n _context37.next = 3;\n return this.handleFullSyncCompletion();\n\n case 3:\n if (!(eventName === _Lib_events__WEBPACK_IMPORTED_MODULE_12__["SyncEvent"].DownloadFirstSyncCompleted)) {\n _context37.next = 6;\n break;\n }\n\n _context37.next = 6;\n return this.handleDownloadFirstSyncCompletion();\n\n case 6:\n case "end":\n return _context37.stop();\n }\n }\n }, _callee37, this);\n }));\n\n function onSyncEvent(_x31) {\n return _onSyncEvent.apply(this, arguments);\n }\n\n return onSyncEvent;\n }()\n /**\n * When a download-first sync completes, it means we\'ve completed a (potentially multipage)\n * sync where we only downloaded what the server had before uploading anything. We will be\n * allowed to make local accomadations here before the server begins with the upload\n * part of the sync (automatically runs after download-first sync completes).\n * We use this to see if the server has any default itemsKeys, and if so, allows us to\n * delete any never-synced items keys we have here locally.\n */\n\n }, {\n key: "handleDownloadFirstSyncCompletion",\n value: function () {\n var _handleDownloadFirstSyncCompletion = _asyncToGenerator( /*#__PURE__*/_babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0___default.a.mark(function _callee38() {\n var itemsKeys, neverSyncedKeys, defaultSyncedKey, hasSyncedItemsKey, rootKey, toDelete;\n return _babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0___default.a.wrap(function _callee38$(_context38) {\n while (1) {\n switch (_context38.prev = _context38.next) {\n case 0:\n /**\n * Find items keys with null or epoch updated_at value, indicating\n * that they haven\'t been synced yet.\n */\n itemsKeys = this.latestItemsKeys();\n neverSyncedKeys = itemsKeys.filter(function (key) {\n return key.neverSynced;\n });\n /**\n * Find isDefault items key that have been previously synced.\n * If we find one, this means we can delete any non-synced keys.\n */\n\n defaultSyncedKey = itemsKeys.find(function (key) {\n return !key.neverSynced && key.isDefault;\n });\n hasSyncedItemsKey = !Object(_Lib_utils__WEBPACK_IMPORTED_MODULE_17__["isNullOrUndefined"])(defaultSyncedKey);\n\n if (!hasSyncedItemsKey) {\n _context38.next = 9;\n break;\n }\n\n _context38.next = 7;\n return this.itemManager.setItemsToBeDeleted(Object(_Models_functions__WEBPACK_IMPORTED_MODULE_1__["Uuids"])(neverSyncedKeys));\n\n case 7:\n _context38.next = 20;\n break;\n\n case 9:\n _context38.next = 11;\n return this.getRootKey();\n\n case 11:\n rootKey = _context38.sent;\n\n if (!rootKey) {\n _context38.next = 20;\n break;\n }\n\n /** If neverSynced.version != rootKey.version, delete. */\n toDelete = neverSyncedKeys.filter(function (itemsKey) {\n return itemsKey.version !== rootKey.version;\n });\n\n if (!(toDelete.length > 0)) {\n _context38.next = 17;\n break;\n }\n\n _context38.next = 17;\n return this.itemManager.setItemsToBeDeleted(Object(_Models_functions__WEBPACK_IMPORTED_MODULE_1__["Uuids"])(toDelete));\n\n case 17:\n if (!(this.latestItemsKeys().length === 0)) {\n _context38.next = 20;\n break;\n }\n\n _context38.next = 20;\n return this.createNewDefaultItemsKey();\n\n case 20:\n case "end":\n return _context38.stop();\n }\n }\n }, _callee38, this);\n }));\n\n function handleDownloadFirstSyncCompletion() {\n return _handleDownloadFirstSyncCompletion.apply(this, arguments);\n }\n\n return handleDownloadFirstSyncCompletion;\n }()\n }, {\n key: "handleFullSyncCompletion",\n value: function () {\n var _handleFullSyncCompletion = _asyncToGenerator( /*#__PURE__*/_babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0___default.a.mark(function _callee39() {\n var currentItemsKey;\n return _babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0___default.a.wrap(function _callee39$(_context39) {\n while (1) {\n switch (_context39.prev = _context39.next) {\n case 0:\n /** Always create a new items key after full sync, if no items key is found */\n currentItemsKey = this.getDefaultItemsKey();\n\n if (currentItemsKey) {\n _context39.next = 6;\n break;\n }\n\n _context39.next = 4;\n return this.createNewDefaultItemsKey();\n\n case 4:\n if (!(this.keyMode === KeyMode.WrapperOnly)) {\n _context39.next = 6;\n break;\n }\n\n return _context39.abrupt("return", this.repersistAllItems());\n\n case 6:\n case "end":\n return _context39.stop();\n }\n }\n }, _callee39, this);\n }));\n\n function handleFullSyncCompletion() {\n return _handleFullSyncCompletion.apply(this, arguments);\n }\n\n return handleFullSyncCompletion;\n }()\n /**\n * If encryption status changes (esp. on mobile, where local storage encryption\n * can be disabled), consumers may call this function to repersist all items to\n * disk using latest encryption status.\n * @access public\n */\n\n }, {\n key: "repersistAllItems",\n value: function () {\n var _repersistAllItems = _asyncToGenerator( /*#__PURE__*/_babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0___default.a.mark(function _callee40() {\n var items, payloads;\n return _babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0___default.a.wrap(function _callee40$(_context40) {\n while (1) {\n switch (_context40.prev = _context40.next) {\n case 0:\n items = this.itemManager.items;\n payloads = items.map(function (item) {\n return Object(_Payloads_generator__WEBPACK_IMPORTED_MODULE_11__["CreateMaxPayloadFromAnyObject"])(item);\n });\n return _context40.abrupt("return", this.storageService.savePayloads(payloads));\n\n case 3:\n case "end":\n return _context40.stop();\n }\n }\n }, _callee40, this);\n }));\n\n function repersistAllItems() {\n return _repersistAllItems.apply(this, arguments);\n }\n\n return repersistAllItems;\n }()\n /**\n * @returns All SN|ItemsKey objects synced to the account.\n */\n\n }, {\n key: "latestItemsKeys",\n value: function latestItemsKeys() {\n return this.itemManager.itemsKeys();\n }\n /**\n * @returns The items key used to encrypt the payload\n */\n\n }, {\n key: "itemsKeyForPayload",\n value: function itemsKeyForPayload(payload) {\n return this.latestItemsKeys().find(function (key) {\n return key.uuid === payload.items_key_id;\n });\n }\n /**\n * @returns The SNItemsKey object to use to encrypt new or updated items.\n */\n\n }, {\n key: "getDefaultItemsKey",\n value: function getDefaultItemsKey() {\n var itemsKeys = this.latestItemsKeys();\n\n if (itemsKeys.length === 1) {\n return itemsKeys[0];\n }\n\n return itemsKeys.find(function (key) {\n return key.isDefault;\n });\n }\n /**\n * When the root key changes (non-null only), we must re-encrypt all items\n * keys with this new root key (by simply re-syncing).\n */\n\n }, {\n key: "reencryptItemsKeys",\n value: function () {\n var _reencryptItemsKeys = _asyncToGenerator( /*#__PURE__*/_babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0___default.a.mark(function _callee41() {\n var itemsKeys;\n return _babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0___default.a.wrap(function _callee41$(_context41) {\n while (1) {\n switch (_context41.prev = _context41.next) {\n case 0:\n itemsKeys = this.latestItemsKeys();\n\n if (!(itemsKeys.length > 0)) {\n _context41.next = 4;\n break;\n }\n\n _context41.next = 4;\n return this.itemManager.setItemsDirty(Object(_Models_functions__WEBPACK_IMPORTED_MODULE_1__["Uuids"])(itemsKeys));\n\n case 4:\n case "end":\n return _context41.stop();\n }\n }\n }, _callee41, this);\n }));\n\n function reencryptItemsKeys() {\n return _reencryptItemsKeys.apply(this, arguments);\n }\n\n return reencryptItemsKeys;\n }()\n /**\n * When migrating from non-SNItemsKey architecture, many items will not have a\n * relationship with any key object. For those items, we can be sure that only 1 key\n * object will correspond to that protocol version.\n * @returns The SNItemsKey object to decrypt items encrypted\n * with previous protocol version.\n */\n\n }, {\n key: "defaultItemsKeyForItemVersion",\n value: function () {\n var _defaultItemsKeyForItemVersion = _asyncToGenerator( /*#__PURE__*/_babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0___default.a.mark(function _callee42(version) {\n return _babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0___default.a.wrap(function _callee42$(_context42) {\n while (1) {\n switch (_context42.prev = _context42.next) {\n case 0:\n return _context42.abrupt("return", this.latestItemsKeys().find(function (key) {\n return key.version === version;\n }));\n\n case 1:\n case "end":\n return _context42.stop();\n }\n }\n }, _callee42, this);\n }));\n\n function defaultItemsKeyForItemVersion(_x32) {\n return _defaultItemsKeyForItemVersion.apply(this, arguments);\n }\n\n return defaultItemsKeyForItemVersion;\n }()\n /**\n * Creates a new random SNItemsKey to use for item encryption, and adds it to model management.\n * Consumer must call sync. If the protocol version <= 003, only one items key should be created,\n * and its .itemsKey value should be equal to the root key masterKey value.\n */\n\n }, {\n key: "createNewDefaultItemsKey",\n value: function () {\n var _createNewDefaultItemsKey = _asyncToGenerator( /*#__PURE__*/_babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0___default.a.mark(function _callee43() {\n var rootKey, operatorVersion, itemTemplate, payload, currentDefault, itemsKey;\n return _babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0___default.a.wrap(function _callee43$(_context43) {\n while (1) {\n switch (_context43.prev = _context43.next) {\n case 0:\n _context43.next = 2;\n return this.getRootKey();\n\n case 2:\n rootKey = _context43.sent;\n operatorVersion = rootKey ? rootKey.version : this.getLatestVersion();\n\n if (!(Object(_Protocol_versions__WEBPACK_IMPORTED_MODULE_3__["compareVersions"])(operatorVersion, LAST_NONROOT_ITEMS_KEY_VERSION) <= 0)) {\n _context43.next = 16;\n break;\n }\n\n _context43.t0 = _Payloads_generator__WEBPACK_IMPORTED_MODULE_11__["CreateMaxPayloadFromAnyObject"];\n _context43.next = 8;\n return _Lib_uuid__WEBPACK_IMPORTED_MODULE_16__["Uuid"].GenerateUuid();\n\n case 8:\n _context43.t1 = _context43.sent;\n _context43.t2 = _Models_content_types__WEBPACK_IMPORTED_MODULE_19__["ContentType"].ItemsKey;\n _context43.t3 = Object(_Models_functions__WEBPACK_IMPORTED_MODULE_1__["FillItemContent"])({\n itemsKey: rootKey.masterKey,\n dataAuthenticationKey: rootKey.dataAuthenticationKey,\n version: operatorVersion\n });\n _context43.t4 = {\n uuid: _context43.t1,\n content_type: _context43.t2,\n content: _context43.t3\n };\n payload = (0, _context43.t0)(_context43.t4);\n itemTemplate = Object(_Models_generator__WEBPACK_IMPORTED_MODULE_13__["CreateItemFromPayload"])(payload);\n _context43.next = 19;\n break;\n\n case 16:\n _context43.next = 18;\n return this.operatorForVersion(operatorVersion).createItemsKey();\n\n case 18:\n itemTemplate = _context43.sent;\n\n case 19:\n currentDefault = this.getDefaultItemsKey();\n\n if (!currentDefault) {\n _context43.next = 23;\n break;\n }\n\n _context43.next = 23;\n return this.itemManager.changeItemsKey(currentDefault.uuid, function (mutator) {\n mutator.isDefault = false;\n });\n\n case 23:\n _context43.next = 25;\n return this.itemManager.insertItem(itemTemplate);\n\n case 25:\n itemsKey = _context43.sent;\n _context43.next = 28;\n return this.itemManager.changeItemsKey(itemsKey.uuid, function (mutator) {\n mutator.isDefault = true;\n });\n\n case 28:\n return _context43.abrupt("return", itemsKey);\n\n case 29:\n case "end":\n return _context43.stop();\n }\n }\n }, _callee43, this);\n }));\n\n function createNewDefaultItemsKey() {\n return _createNewDefaultItemsKey.apply(this, arguments);\n }\n\n return createNewDefaultItemsKey;\n }()\n }, {\n key: "changePassword",\n value: function () {\n var _changePassword = _asyncToGenerator( /*#__PURE__*/_babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0___default.a.mark(function _callee45(email, currentPassword, newPassword, wrappingKey) {\n var _this4 = this;\n\n var _ref, _ref2, currentRootKey, currentKeyParams, currentDefaultItemsKey, computedRootKey, _ref3, newRootKey, newKeyParams, newDefaultItemsKey;\n\n return _babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0___default.a.wrap(function _callee45$(_context45) {\n while (1) {\n switch (_context45.prev = _context45.next) {\n case 0:\n _context45.next = 2;\n return Promise.all([this.getRootKey(), this.getRootKeyParams()]);\n\n case 2:\n _ref = _context45.sent;\n _ref2 = _slicedToArray(_ref, 2);\n currentRootKey = _ref2[0];\n currentKeyParams = _ref2[1];\n currentDefaultItemsKey = this.getDefaultItemsKey();\n _context45.next = 9;\n return this.computeRootKey(currentPassword, currentKeyParams);\n\n case 9:\n computedRootKey = _context45.sent;\n\n if (currentRootKey.compare(computedRootKey)) {\n _context45.next = 12;\n break;\n }\n\n return _context45.abrupt("return", [Error(_api_messages__WEBPACK_IMPORTED_MODULE_23__["INVALID_PASSWORD"])]);\n\n case 12:\n _context45.next = 14;\n return this.createRootKey(email, newPassword);\n\n case 14:\n _ref3 = _context45.sent;\n newRootKey = _ref3.key;\n newKeyParams = _ref3.keyParams;\n _context45.next = 19;\n return this.setNewRootKey(newRootKey, newKeyParams, wrappingKey);\n\n case 19:\n _context45.next = 21;\n return this.createNewDefaultItemsKey();\n\n case 21:\n newDefaultItemsKey = _context45.sent;\n return _context45.abrupt("return", [null, {\n previousRootKey: currentRootKey,\n newRootKey: newRootKey,\n newKeyParams: newKeyParams,\n rollback: function () {\n var _rollback = _asyncToGenerator( /*#__PURE__*/_babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0___default.a.mark(function _callee44() {\n return _babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0___default.a.wrap(function _callee44$(_context44) {\n while (1) {\n switch (_context44.prev = _context44.next) {\n case 0:\n _context44.next = 2;\n return _this4.setNewRootKey(currentRootKey, currentKeyParams, wrappingKey);\n\n case 2:\n _context44.next = 4;\n return Promise.all([_this4.itemManager.setItemToBeDeleted(newDefaultItemsKey.uuid), _this4.itemManager.changeItem(currentDefaultItemsKey.uuid, function (mutator) {\n mutator.isDefault = true;\n })]);\n\n case 4:\n case "end":\n return _context44.stop();\n }\n }\n }, _callee44);\n }));\n\n function rollback() {\n return _rollback.apply(this, arguments);\n }\n\n return rollback;\n }()\n }]);\n\n case 23:\n case "end":\n return _context45.stop();\n }\n }\n }, _callee45, this);\n }));\n\n function changePassword(_x33, _x34, _x35, _x36) {\n return _changePassword.apply(this, arguments);\n }\n\n return changePassword;\n }()\n }]);\n\n return SNProtocolService;\n}(_Lib_services_pure_service__WEBPACK_IMPORTED_MODULE_15__["PureService"]);//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9saWIvc2VydmljZXMvcHJvdG9jb2xfc2VydmljZS50cy5qcyIsInNvdXJjZXMiOlsid2VicGFjazovL1NOTGlicmFyeS8uL2xpYi9zZXJ2aWNlcy9wcm90b2NvbF9zZXJ2aWNlLnRzPzE5NDciXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgVXVpZHMsIEZpbGxJdGVtQ29udGVudCB9IGZyb20gJ0BNb2RlbHMvZnVuY3Rpb25zJztcbmltcG9ydCB7IEVuY3J5cHRpb25JbnRlbnQgfSBmcm9tICcuLy4uL3Byb3RvY29sL2ludGVudHMnO1xuaW1wb3J0IHsgY29tcGFyZVZlcnNpb25zIH0gZnJvbSAnQFByb3RvY29sL3ZlcnNpb25zJztcbmltcG9ydCB7IFByb3RvY29sVmVyc2lvbiB9IGZyb20gJy4vLi4vcHJvdG9jb2wvdmVyc2lvbnMnO1xuaW1wb3J0IHsgQ3JlYXRlS2V5UGFyYW1zIH0gZnJvbSAnQFByb3RvY29sL2tleV9wYXJhbXMnO1xuaW1wb3J0IHsgU05Qcm90b2NvbE9wZXJhdG9yMDA0IH0gZnJvbSAnLi8uLi9wcm90b2NvbC9vcGVyYXRvci8wMDQvb3BlcmF0b3JfMDA0JztcbmltcG9ydCB7IFNOUHJvdG9jb2xPcGVyYXRvcjAwMyB9IGZyb20gJy4vLi4vcHJvdG9jb2wvb3BlcmF0b3IvMDAzL29wZXJhdG9yXzAwMyc7XG5pbXBvcnQgeyBTTlByb3RvY29sT3BlcmF0b3IwMDIgfSBmcm9tICcuLy4uL3Byb3RvY29sL29wZXJhdG9yLzAwMi9vcGVyYXRvcl8wMDInO1xuaW1wb3J0IHsgU05Qcm90b2NvbE9wZXJhdG9yMDAxIH0gZnJvbSAnLi8uLi9wcm90b2NvbC9vcGVyYXRvci8wMDEvb3BlcmF0b3JfMDAxJztcbmltcG9ydCB7IFBheWxvYWRGb3JtYXQgfSBmcm9tICcuLy4uL3Byb3RvY29sL3BheWxvYWRzL2Zvcm1hdHMnO1xuaW1wb3J0IHsgUGF5bG9hZFNvdXJjZSB9IGZyb20gJy4vLi4vcHJvdG9jb2wvcGF5bG9hZHMvc291cmNlcyc7XG5pbXBvcnQgeyBDcmVhdGVFbmNyeXB0aW9uUGFyYW1ldGVycywgQ3JlYXRlSW50ZW50UGF5bG9hZEZyb21PYmplY3QsIENyZWF0ZVNvdXJjZWRQYXlsb2FkRnJvbU9iamVjdCwgQ3JlYXRlTWF4UGF5bG9hZEZyb21BbnlPYmplY3QgfSBmcm9tICdAUGF5bG9hZHMvZ2VuZXJhdG9yJztcbmltcG9ydCB7IFN5bmNFdmVudCB9IGZyb20gJ0BMaWIvZXZlbnRzJztcbmltcG9ydCB7IENyZWF0ZUl0ZW1Gcm9tUGF5bG9hZCB9IGZyb20gJ0BNb2RlbHMvZ2VuZXJhdG9yJztcbmltcG9ydCB7IFNOUm9vdEtleSB9IGZyb20gJ0BQcm90b2NvbC9yb290X2tleSc7XG5pbXBvcnQgeyBQdXJlU2VydmljZSB9IGZyb20gJ0BMaWIvc2VydmljZXMvcHVyZV9zZXJ2aWNlJztcbmltcG9ydCB7IFV1aWQgfSBmcm9tICdATGliL3V1aWQnO1xuaW1wb3J0IHsgaXNSZWFjdE5hdGl2ZUVudmlyb25tZW50LCBpc1N0cmluZywgaXNOdWxsT3JVbmRlZmluZWQsIGlzRnVuY3Rpb24sIHJlbW92ZUZyb21BcnJheSwgaXNXZWJDcnlwdG9BdmFpbGFibGUgfSBmcm9tICdATGliL3V0aWxzJztcbmltcG9ydCB7IFYwMDFBbGdvcml0aG0sIFYwMDJBbGdvcml0aG0gfSBmcm9tICcuLi9wcm90b2NvbC9vcGVyYXRvci9hbGdvcml0aG1zJztcbmltcG9ydCB7IENvbnRlbnRUeXBlIH0gZnJvbSAnQE1vZGVscy9jb250ZW50X3R5cGVzJztcbmltcG9ydCB7IFN0b3JhZ2VLZXkgfSBmcm9tICdATGliL3N0b3JhZ2Vfa2V5cyc7XG5pbXBvcnQgeyBTdG9yYWdlVmFsdWVNb2RlcyB9IGZyb20gJ0BMaWIvc2VydmljZXMvc3RvcmFnZV9zZXJ2aWNlJztcbmltcG9ydCB7IGlzRGVjcnlwdGVkSW50ZW50LCBpbnRlbnRSZXF1aXJlc0VuY3J5cHRpb24gfSBmcm9tICdATGliL3Byb3RvY29sJztcbmltcG9ydCB7IElOVkFMSURfUEFTU1dPUkQgfSBmcm9tICcuL2FwaS9tZXNzYWdlcyc7XG5leHBvcnQgdmFyIEtleU1vZGU7XG4oZnVuY3Rpb24gKEtleU1vZGUpIHtcbiAgICAvKiogaS5lIE5vIGFjY291bnQgYW5kIG5vIHBhc3Njb2RlICovXG4gICAgS2V5TW9kZVtLZXlNb2RlW1wiUm9vdEtleU5vbmVcIl0gPSAwXSA9IFwiUm9vdEtleU5vbmVcIjtcbiAgICAvKiogaS5lIEFjY291bnQgYnV0IG5vIHBhc3Njb2RlICovXG4gICAgS2V5TW9kZVtLZXlNb2RlW1wiUm9vdEtleU9ubHlcIl0gPSAxXSA9IFwiUm9vdEtleU9ubHlcIjtcbiAgICAvKiogaS5lIEFjY291bnQgcGx1cyBwYXNzY29kZSAqL1xuICAgIEtleU1vZGVbS2V5TW9kZVtcIlJvb3RLZXlQbHVzV3JhcHBlclwiXSA9IDJdID0gXCJSb290S2V5UGx1c1dyYXBwZXJcIjtcbiAgICAvKiogaS5lIE5vIGFjY291bnQsIGJ1dCBwYXNzY29kZSAqL1xuICAgIEtleU1vZGVbS2V5TW9kZVtcIldyYXBwZXJPbmx5XCJdID0gM10gPSBcIldyYXBwZXJPbmx5XCI7XG59KShLZXlNb2RlIHx8IChLZXlNb2RlID0ge30pKTtcbi8qKiBUaGUgbGFzdCBwcm90b2NvbCB2ZXJzaW9uIHRvIG5vdCB1c2Ugcm9vdC1rZXkgYmFzZWQgaXRlbXMga2V5cyAqL1xuY29uc3QgTEFTVF9OT05ST09UX0lURU1TX0tFWV9WRVJTSU9OID0gUHJvdG9jb2xWZXJzaW9uLlYwMDM7XG4vKipcbiAqIFRoZSBwcm90b2NvbCBzZXJ2aWNlIGlzIHJlc3BvbnNpYmxlIGZvciB0aGUgZW5jcnlwdGlvbiBhbmQgZGVjcnlwdGlvbiBvZiBwYXlsb2FkcywgYW5kXG4gKiBoYW5kbGVzIGRlbGVnYXRpb24gb2YgYSB0YXNrIHRvIHRoZSByZXNwZWN0aXZlIHByb3RvY29sIG9wZXJhdG9yLiBFYWNoIHZlcnNpb24gb2YgdGhlIHByb3RvY29sXG4gKiAoMDAxLCAwMDIsIDAwMywgMDA0LCBldGMpIHVzZXMgYSByZXNwZWN0aXZlIG9wZXJhdG9yIHZlcnNpb24gdG8gcGVyZm9ybSBlbmNyeXB0aW9uIG9wZXJhdGlvbnMuXG4gKiBPcGVyYXRvcnMgYXJlIGxvY2F0ZWQgaW4gL3Byb3RvY29sL29wZXJhdG9yLlxuICogVGhlIHByb3RvY29sIHNlcnZpY2UgZGVwZW5kcyBvbiB0aGUga2V5TWFuYWdlciBmb3IgZGV0ZXJtaW5pbmcgd2hpY2gga2V5IHRvIHVzZSBmb3IgdGhlXG4gKiBlbmNyeXB0aW9uIGFuZCBkZWNyeXB0aW9uIG9mIGEgcGFydGljdWxhciBwYXlsb2FkLlxuICogVGhlIHByb3RvY29sIHNlcnZpY2UgaXMgYWxzbyByZXNwb25zaWJsZSBmb3IgZGljdGF0aW5nIHdoaWNoIHByb3RvY29sIHZlcnNpb25zIGFyZSB2YWxpZCxcbiAqIGFuZCB3aGljaCBhcmUgbm8gbG9uZ2VyIHZhbGlkIG9yIG5vdCBzdXBwb3J0ZWQuXG5cbiAqIFRoZSBrZXkgbWFuYWdlciBpcyByZXNwb25zaWJsZSBmb3IgbWFuYWdpbmcgcm9vdCBrZXkgYW5kIHJvb3Qga2V5IHdyYXBwZXIgc3RhdGVzLlxuICogV2hlbiB0aGUga2V5IG1hbmFnZXIgaXMgaW5pdGlhbGl6ZWQsIGl0IGluaXRpYXRlcyBpdHNlbGYgd2l0aCBhIGtleU1vZGUsIHdoaWNoXG4gKiBkaWN0YXRlcyB0aGUgZW50aXJlIGZsb3cgb2Yga2V5IG1hbmFnZW1lbnQuIFRoZSBrZXkgbWFuYWdlcidzIHJlc3BvbnNpYmlsaXRpZXMgaW5jbHVkZTpcbiAqIC0gaW50ZXJhY3Rpbmcgd2l0aCB0aGUgZGV2aWNlIGtleWNoYWluIHRvIHNhdmUgb3IgY2xlYXIgdGhlIHJvb3Qga2V5XG4gKiAtIGludGVyYWN0aW5nIHdpdGggc3RvcmFnZSB0byBzYXZlIHJvb3Qga2V5IHBhcmFtcyBvciB3cmFwcGVyIHBhcmFtcywgb3IgdGhlIHdyYXBwZWQgcm9vdCBrZXkuXG4gKiAtIGV4cG9zaW5nIG1ldGhvZHMgdGhhdCBhbGxvdyB0aGUgYXBwbGljYXRpb24gdG8gdW53cmFwIHRoZSByb290IGtleSAodW5sb2NrIHRoZSBhcHBsaWNhdGlvbilcbiAqXG4gKiBJdCBhbHNvIGV4cG9zZXMgdHdvIHByaW1hcnkgbWV0aG9kcyBmb3IgZGV0ZXJtaW5pbmcgd2hhdCBrZXkgc2hvdWxkIGJlIHVzZWQgdG8gZW5jcnlwdFxuICogb3IgZGVjcnlwdCBhIHBhcnRpY3VsYXIgcGF5bG9hZC4gU29tZSBwYXlsb2FkcyBhcmUgZW5jcnlwdGVkIGRpcmVjdGx5IHdpdGggdGhlIHJvb3RLZXlcbiAqIChzdWNoIGFzIGl0ZW1zS2V5cyBhbmQgZW5jcnlwdGVkU3RvcmFnZSkuIE90aGVycyBhcmUgZW5jcnlwdGVkIHdpdGggaXRlbXNLZXlzIChub3RlcywgdGFncywgZXRjKS5cblxuICogVGhlIGl0ZW1zIGtleSBtYW5hZ2VyIG1hbmFnZXMgdGhlIGxpZmVjeWNsZSBvZiBpdGVtcyBrZXlzLlxuICogSXQgaXMgcmVzcG9uc2libGUgZm9yIGNyZWF0aW5nIHRoZSBkZWZhdWx0IGl0ZW1zIGtleSB3aGVuIGNvbmRpdGlvbnMgY2FsbCBmb3IgaXRcbiAqIChzdWNoIGFzIGFmdGVyIHRoZSBmaXJzdCBzeW5jIGNvbXBsZXRlcyBhbmQgbm8ga2V5IGV4aXN0cykuXG4gKiBJdCBhbHNvIGV4cG9zZXMgcHVibGljIG1ldGhvZHMgdGhhdCBhbGxvd3MgY29uc3VtZXJzIHRvIHJldHJpZXZlIGFuIGl0ZW1zIGtleVxuICogZm9yIGEgcGFydGljdWxhciBwYXlsb2FkLCBhbmQgYWxzbyByZXRyaWV2ZSBhbGwgYXZhaWxhYmxlIGl0ZW1zIGtleXMuXG4qL1xuZXhwb3J0IGNsYXNzIFNOUHJvdG9jb2xTZXJ2aWNlIGV4dGVuZHMgUHVyZVNlcnZpY2Uge1xuICAgIGNvbnN0cnVjdG9yKGl0ZW1NYW5hZ2VyLCBtb2RlbE1hbmFnZXIsIGRldmljZUludGVyZmFjZSwgc3RvcmFnZVNlcnZpY2UsIGNyeXB0bykge1xuICAgICAgICBzdXBlcigpO1xuICAgICAgICB0aGlzLm9wZXJhdG9ycyA9IHt9O1xuICAgICAgICB0aGlzLmtleU1vZGUgPSBLZXlNb2RlLlJvb3RLZXlOb25lO1xuICAgICAgICB0aGlzLmtleU9ic2VydmVycyA9IFtdO1xuICAgICAgICB0aGlzLml0ZW1NYW5hZ2VyID0gaXRlbU1hbmFnZXI7XG4gICAgICAgIHRoaXMubW9kZWxNYW5hZ2VyID0gbW9kZWxNYW5hZ2VyO1xuICAgICAgICB0aGlzLmRldmljZUludGVyZmFjZSA9IGRldmljZUludGVyZmFjZTtcbiAgICAgICAgdGhpcy5zdG9yYWdlU2VydmljZSA9IHN0b3JhZ2VTZXJ2aWNlO1xuICAgICAgICB0aGlzLmNyeXB0byA9IGNyeXB0bztcbiAgICAgICAgaWYgKGlzUmVhY3ROYXRpdmVFbnZpcm9ubWVudCgpKSB7XG4gICAgICAgICAgICBVdWlkLlNldEdlbmVyYXRvcnModGhpcy5jcnlwdG8uZ2VuZXJhdGVVVUlELCB1bmRlZmluZWQgLy8gbm8gc3luYyBpbXBsZW1lbnRhdGlvbiBvbiBSZWFjdCBOYXRpdmVcbiAgICAgICAgICAgICk7XG4gICAgICAgIH1cbiAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICBVdWlkLlNldEdlbmVyYXRvcnModGhpcy5jcnlwdG8uZ2VuZXJhdGVVVUlELCB0aGlzLmNyeXB0by5nZW5lcmF0ZVVVSURTeW5jKTtcbiAgICAgICAgfVxuICAgICAgICAvKiogSGlkZSByb290S2V5IGVudW1lcmF0aW9uICovXG4gICAgICAgIE9iamVjdC5kZWZpbmVQcm9wZXJ0eSh0aGlzLCAncm9vdEtleScsIHtcbiAgICAgICAgICAgIGVudW1lcmFibGU6IGZhbHNlLFxuICAgICAgICAgICAgd3JpdGFibGU6IHRydWVcbiAgICAgICAgfSk7XG4gICAgICAgIHRoaXMucmVtb3ZlSXRlbXNPYnNlcnZlciA9IHRoaXMuaXRlbU1hbmFnZXIuYWRkT2JzZXJ2ZXIoW0NvbnRlbnRUeXBlLkl0ZW1zS2V5XSwgKF8sIGluc2VydGVkKSA9PiB7XG4gICAgICAgICAgICBpZiAoaW5zZXJ0ZWQubGVuZ3RoID4gMCkge1xuICAgICAgICAgICAgICAgIHRoaXMuZGVjcnlwdEVycm9yZWRJdGVtcygpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9KTtcbiAgICB9XG4gICAgLyoqIEBvdmVycmlkZSAqL1xuICAgIGRlaW5pdCgpIHtcbiAgICAgICAgdGhpcy5pdGVtTWFuYWdlciA9IHVuZGVmaW5lZDtcbiAgICAgICAgdGhpcy5tb2RlbE1hbmFnZXIgPSB1bmRlZmluZWQ7XG4gICAgICAgIHRoaXMuZGV2aWNlSW50ZXJmYWNlID0gdW5kZWZpbmVkO1xuICAgICAgICB0aGlzLnN0b3JhZ2VTZXJ2aWNlID0gdW5kZWZpbmVkO1xuICAgICAgICB0aGlzLmNyeXB0by5kZWluaXQoKTtcbiAgICAgICAgdGhpcy5jcnlwdG8gPSB1bmRlZmluZWQ7XG4gICAgICAgIHRoaXMub3BlcmF0b3JzID0ge307XG4gICAgICAgIHRoaXMua2V5T2JzZXJ2ZXJzLmxlbmd0aCA9IDA7XG4gICAgICAgIHRoaXMucmVtb3ZlSXRlbXNPYnNlcnZlcigpO1xuICAgICAgICB0aGlzLnJlbW92ZUl0ZW1zT2JzZXJ2ZXIgPSBudWxsO1xuICAgICAgICB0aGlzLnJvb3RLZXkgPSB1bmRlZmluZWQ7XG4gICAgICAgIHN1cGVyLmRlaW5pdCgpO1xuICAgIH1cbiAgICBhc3luYyBpbml0aWFsaXplKCkge1xuICAgICAgICBjb25zdCB3cmFwcGVkUm9vdEtleSA9IGF3YWl0IHRoaXMuZ2V0V3JhcHBlZFJvb3RLZXkoKTtcbiAgICAgICAgY29uc3QgYWNjb3VudEtleVBhcmFtcyA9IGF3YWl0IHRoaXMuZ2V0QWNjb3VudEtleVBhcmFtcygpO1xuICAgICAgICBjb25zdCBoYXNXcmFwcGVyID0gYXdhaXQgdGhpcy5oYXNSb290S2V5V3JhcHBlcigpO1xuICAgICAgICBjb25zdCBoYXNSb290S2V5ID0gIWlzTnVsbE9yVW5kZWZpbmVkKHdyYXBwZWRSb290S2V5KSB8fFxuICAgICAgICAgICAgIWlzTnVsbE9yVW5kZWZpbmVkKGFjY291bnRLZXlQYXJhbXMpO1xuICAgICAgICBpZiAoaGFzV3JhcHBlciAmJiBoYXNSb290S2V5KSB7XG4gICAgICAgICAgICB0aGlzLmtleU1vZGUgPSBLZXlNb2RlLlJvb3RLZXlQbHVzV3JhcHBlcjtcbiAgICAgICAgfVxuICAgICAgICBlbHNlIGlmIChoYXNXcmFwcGVyICYmICFoYXNSb290S2V5KSB7XG4gICAgICAgICAgICB0aGlzLmtleU1vZGUgPSBLZXlNb2RlLldyYXBwZXJPbmx5O1xuICAgICAgICB9XG4gICAgICAgIGVsc2UgaWYgKCFoYXNXcmFwcGVyICYmIGhhc1Jvb3RLZXkpIHtcbiAgICAgICAgICAgIHRoaXMua2V5TW9kZSA9IEtleU1vZGUuUm9vdEtleU9ubHk7XG4gICAgICAgIH1cbiAgICAgICAgZWxzZSBpZiAoIWhhc1dyYXBwZXIgJiYgIWhhc1Jvb3RLZXkpIHtcbiAgICAgICAgICAgIHRoaXMua2V5TW9kZSA9IEtleU1vZGUuUm9vdEtleU5vbmU7XG4gICAgICAgIH1cbiAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICB0aHJvdyAnSW52YWxpZCBrZXkgbW9kZSBjb25kaXRpb24nO1xuICAgICAgICB9XG4gICAgICAgIGlmICh0aGlzLmtleU1vZGUgPT09IEtleU1vZGUuUm9vdEtleU9ubHkpIHtcbiAgICAgICAgICAgIHRoaXMucm9vdEtleSA9IGF3YWl0IHRoaXMuZ2V0Um9vdEtleUZyb21LZXljaGFpbigpO1xuICAgICAgICAgICAgYXdhaXQgdGhpcy5ub3RpZnlPYnNlcnZlcnNPZktleUNoYW5nZSgpO1xuICAgICAgICB9XG4gICAgfVxuICAgIC8qKlxuICAgICAqIFJldHVybnMgdGhlIGxhdGVzdCBwcm90b2NvbCB2ZXJzaW9uXG4gICAgICovXG4gICAgZ2V0TGF0ZXN0VmVyc2lvbigpIHtcbiAgICAgICAgcmV0dXJuIFByb3RvY29sVmVyc2lvbi5WMDA0O1xuICAgIH1cbiAgICAvKipcbiAgICAgKiBSZXR1cm5zIHRoZSBwcm90b2NvbCB2ZXJzaW9uIGFzc29jaWF0ZWQgd2l0aCB0aGUgdXNlcidzIGFjY291bnRcbiAgICAgKi9cbiAgICBhc3luYyBnZXRVc2VyVmVyc2lvbigpIHtcbiAgICAgICAgY29uc3Qga2V5UGFyYW1zID0gYXdhaXQgdGhpcy5nZXRBY2NvdW50S2V5UGFyYW1zKCk7XG4gICAgICAgIHJldHVybiBrZXlQYXJhbXMgJiYga2V5UGFyYW1zLnZlcnNpb247XG4gICAgfVxuICAgIC8qKlxuICAgICAqIFJldHVybnMgdHJ1ZSBpZiB0aGVyZSBpcyBhbiB1cGdyYWRlIGF2YWlsYWJsZSBmb3IgdGhlIGFjY291bnQgb3IgcGFzc2NvZGVcbiAgICAgKi9cbiAgICBhc3luYyB1cGdyYWRlQXZhaWxhYmxlKCkge1xuICAgICAgICBjb25zdCBhY2NvdW50VXBncmFkZUF2YWlsYWJsZSA9IGF3YWl0IHRoaXMuYWNjb3VudFVwZ3JhZGVBdmFpbGFibGUoKTtcbiAgICAgICAgY29uc3QgcGFzc2NvZGVVcGdyYWRlQXZhaWxhYmxlID0gYXdhaXQgdGhpcy5wYXNzY29kZVVwZ3JhZGVBdmFpbGFibGUoKTtcbiAgICAgICAgcmV0dXJuIGFjY291bnRVcGdyYWRlQXZhaWxhYmxlIHx8IHBhc3Njb2RlVXBncmFkZUF2YWlsYWJsZTtcbiAgICB9XG4gICAgLyoqXG4gICAgICogUmV0dXJucyB0cnVlIGlmIHRoZSB1c2VyJ3MgYWNjb3VudCBwcm90b2NvbCB2ZXJzaW9uIGlzIG5vdCBlcXVhbCB0byB0aGUgbGF0ZXN0IHZlcnNpb24uXG4gICAgICovXG4gICAgYXN5bmMgYWNjb3VudFVwZ3JhZGVBdmFpbGFibGUoKSB7XG4gICAgICAgIGNvbnN0IHVzZXJWZXJzaW9uID0gYXdhaXQgdGhpcy5nZXRVc2VyVmVyc2lvbigpO1xuICAgICAgICBpZiAoIXVzZXJWZXJzaW9uKSB7XG4gICAgICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHVzZXJWZXJzaW9uICE9PSB0aGlzLmdldExhdGVzdFZlcnNpb24oKTtcbiAgICB9XG4gICAgLyoqXG4gICAgICogUmV0dXJucyB0cnVlIGlmIHRoZSB1c2VyJ3MgYWNjb3VudCBwcm90b2NvbCB2ZXJzaW9uIGlzIG5vdCBlcXVhbCB0byB0aGUgbGF0ZXN0IHZlcnNpb24uXG4gICAgICovXG4gICAgYXN5bmMgcGFzc2NvZGVVcGdyYWRlQXZhaWxhYmxlKCkge1xuICAgICAgICBjb25zdCBwYXNzY29kZVBhcmFtcyA9IGF3YWl0IHRoaXMuZ2V0Um9vdEtleVdyYXBwZXJLZXlQYXJhbXMoKTtcbiAgICAgICAgaWYgKCFwYXNzY29kZVBhcmFtcykge1xuICAgICAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiBwYXNzY29kZVBhcmFtcy52ZXJzaW9uICE9PSB0aGlzLmdldExhdGVzdFZlcnNpb24oKTtcbiAgICB9XG4gICAgLyoqXG4gICAgICogRGV0ZXJtaW5lcyB3aGV0aGVyIHRoZSBjdXJyZW50IGVudmlyb25tZW50IGlzIGNhcGFibGUgb2Ygc3VwcG9ydGluZ1xuICAgICAqIGtleSBkZXJpdmF0aW9uLlxuICAgICAqL1xuICAgIHBsYXRmb3JtU3VwcG9ydHNLZXlEZXJpdmF0aW9uKGtleVBhcmFtcykge1xuICAgICAgICAvKipcbiAgICAgICAgICogSWYgdGhlIHZlcnNpb24gaXMgMDAzIG9yIGxvd2VyLCBrZXkgZGVyaXZhdGlvbiBpcyBzdXBwb3J0ZWQgdW5sZXNzIHRoZSBicm93c2VyIGlzXG4gICAgICAgICAqIElFIG9yIEVkZ2UgKG9yIGdlbmVyYWxseSwgd2hlcmUgV2ViQ3J5cHRvIGlzIG5vdCBhdmFpbGFibGUpLlxuICAgICAgICAgKlxuICAgICAgICAgKiBWZXJzaW9ucyAwMDQgYW5kIGFib3ZlIGFyZSBhbHdheXMgc3VwcG9ydGVkLlxuICAgICAgICAgKi9cbiAgICAgICAgaWYgKGNvbXBhcmVWZXJzaW9ucyhrZXlQYXJhbXMudmVyc2lvbiwgUHJvdG9jb2xWZXJzaW9uLlYwMDQpID49IDApIHtcbiAgICAgICAgICAgIC8qIGtleVBhcmFtcy52ZXJzaW9uID49IDAwNCAqL1xuICAgICAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgICAgIH1cbiAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICByZXR1cm4gISFpc1dlYkNyeXB0b0F2YWlsYWJsZSgpO1xuICAgICAgICB9XG4gICAgfVxuICAgIC8qKlxuICAgICAqIEByZXR1cm5zIFRoZSB2ZXJzaW9ucyB0aGF0IHRoaXMgbGlicmFyeSBzdXBwb3J0cy5cbiAgICAgKi9cbiAgICBzdXBwb3J0ZWRWZXJzaW9ucygpIHtcbiAgICAgICAgcmV0dXJuIFtcbiAgICAgICAgICAgIFByb3RvY29sVmVyc2lvbi5WMDAxLFxuICAgICAgICAgICAgUHJvdG9jb2xWZXJzaW9uLlYwMDIsXG4gICAgICAgICAgICBQcm90b2NvbFZlcnNpb24uVjAwMyxcbiAgICAgICAgICAgIFByb3RvY29sVmVyc2lvbi5WMDA0LFxuICAgICAgICBdO1xuICAgIH1cbiAgICAvKipcbiAgICAgKiBEZXRlcm1pbmVzIHdoZXRoZXIgdGhlIGlucHV0IHZlcnNpb24gaXMgZ3JlYXRlciB0aGFuIHRoZSBsYXRlc3Qgc3VwcG9ydGVkIGxpYnJhcnkgdmVyc2lvbi5cbiAgICAgKi9cbiAgICBpc1ZlcnNpb25OZXdlclRoYW5MaWJyYXJ5VmVyc2lvbih2ZXJzaW9uKSB7XG4gICAgICAgIGNvbnN0IGxpYnJhcnlWZXJzaW9uID0gdGhpcy5nZXRMYXRlc3RWZXJzaW9uKCk7XG4gICAgICAgIHJldHVybiBjb21wYXJlVmVyc2lvbnModmVyc2lvbiwgbGlicmFyeVZlcnNpb24pID09PSAxO1xuICAgIH1cbiAgICAvKipcbiAgICAgKiBEZXRlcm1pbmVzIHdoZXRoZXIgdGhlIGlucHV0IHZlcnNpb24gaXMgZXhwaXJlZFxuICAgICAqL1xuICAgIGlzUHJvdG9jb2xWZXJzaW9uT3V0ZGF0ZWQodmVyc2lvbikge1xuICAgICAgICBjb25zdCBleHBpcmF0aW9uRGF0ZXMgPSB7XG4gICAgICAgICAgICBbUHJvdG9jb2xWZXJzaW9uLlYwMDFdOiBEYXRlLnBhcnNlKCcyMDE4LTAxLTAxJyksXG4gICAgICAgICAgICBbUHJvdG9jb2xWZXJzaW9uLlYwMDJdOiBEYXRlLnBhcnNlKCcyMDIwLTAxLTAxJylcbiAgICAgICAgfTtcbiAgICAgICAgY29uc3QgZGF0ZSA9IGV4cGlyYXRpb25EYXRlc1t2ZXJzaW9uXTtcbiAgICAgICAgaWYgKCFkYXRlKSB7XG4gICAgICAgICAgICAvKiBObyBleHBpcmF0aW9uIGRhdGUsIGlzIGFjdGl2ZSB2ZXJzaW9uICovXG4gICAgICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICAgIH1cbiAgICAgICAgY29uc3QgZXhwaXJlZCA9IG5ldyBEYXRlKCkuZ2V0VGltZSgpID4gZGF0ZTtcbiAgICAgICAgcmV0dXJuIGV4cGlyZWQ7XG4gICAgfVxuICAgIC8qKlxuICAgICAqIFZlcnNpb25zIDAwMSBhbmQgMDAyIG9mIHRoZSBwcm90b2NvbCBzdXBwb3J0ZWQgZHluYW1pYyBjb3N0cywgYXMgcmVwb3J0ZWQgYnkgdGhlIHNlcnZlci5cbiAgICAgKiBUaGlzIGZ1bmN0aW9uIHJldHVybnMgdGhlIGNsaWVudC1lbmZvcmNlZCBtaW5pbXVtIGNvc3QsIHRvIHByZXZlbnQgdGhlIHNlcnZlciBmcm9tXG4gICAgICogb3ZlcndoZWxtaW5nbHkgdW5kZXItcmVwb3J0aW5nIHRoZSBjb3N0LlxuICAgICAqL1xuICAgIGNvc3RNaW5pbXVtRm9yVmVyc2lvbih2ZXJzaW9uKSB7XG4gICAgICAgIGlmIChjb21wYXJlVmVyc2lvbnModmVyc2lvbiwgUHJvdG9jb2xWZXJzaW9uLlYwMDMpID49IDApIHtcbiAgICAgICAgICAgIHRocm93ICdDb3N0IG1pbmltdW1zIG9ubHkgYXBwbHkgdG8gdmVyc2lvbnMgPD0gMDAyJztcbiAgICAgICAgfVxuICAgICAgICBpZiAodmVyc2lvbiA9PT0gUHJvdG9jb2xWZXJzaW9uLlYwMDEpIHtcbiAgICAgICAgICAgIHJldHVybiBWMDAxQWxnb3JpdGhtLlBia2RmTWluQ29zdDtcbiAgICAgICAgfVxuICAgICAgICBlbHNlIGlmICh2ZXJzaW9uID09PSBQcm90b2NvbFZlcnNpb24uVjAwMikge1xuICAgICAgICAgICAgcmV0dXJuIFYwMDJBbGdvcml0aG0uUGJrZGZNaW5Db3N0O1xuICAgICAgICB9XG4gICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgdGhyb3cgYEludmFsaWQgdmVyc2lvbiBmb3IgY29zdCBtaW5pbXVtOiAke3ZlcnNpb259YDtcbiAgICAgICAgfVxuICAgIH1cbiAgICBjcmVhdGVPcGVyYXRvckZvckxhdGVzdFZlcnNpb24oKSB7XG4gICAgICAgIHJldHVybiB0aGlzLmNyZWF0ZU9wZXJhdG9yRm9yVmVyc2lvbih0aGlzLmdldExhdGVzdFZlcnNpb24oKSk7XG4gICAgfVxuICAgIGNyZWF0ZU9wZXJhdG9yRm9yVmVyc2lvbih2ZXJzaW9uKSB7XG4gICAgICAgIGlmICh2ZXJzaW9uID09PSBQcm90b2NvbFZlcnNpb24uVjAwMSkge1xuICAgICAgICAgICAgcmV0dXJuIG5ldyBTTlByb3RvY29sT3BlcmF0b3IwMDEodGhpcy5jcnlwdG8pO1xuICAgICAgICB9XG4gICAgICAgIGVsc2UgaWYgKHZlcnNpb24gPT09IFByb3RvY29sVmVyc2lvbi5WMDAyKSB7XG4gICAgICAgICAgICByZXR1cm4gbmV3IFNOUHJvdG9jb2xPcGVyYXRvcjAwMih0aGlzLmNyeXB0byk7XG4gICAgICAgIH1cbiAgICAgICAgZWxzZSBpZiAodmVyc2lvbiA9PT0gUHJvdG9jb2xWZXJzaW9uLlYwMDMpIHtcbiAgICAgICAgICAgIHJldHVybiBuZXcgU05Qcm90b2NvbE9wZXJhdG9yMDAzKHRoaXMuY3J5cHRvKTtcbiAgICAgICAgfVxuICAgICAgICBlbHNlIGlmICh2ZXJzaW9uID09PSBQcm90b2NvbFZlcnNpb24uVjAwNCkge1xuICAgICAgICAgICAgcmV0dXJuIG5ldyBTTlByb3RvY29sT3BlcmF0b3IwMDQodGhpcy5jcnlwdG8pO1xuICAgICAgICB9XG4gICAgICAgIGVsc2UgaWYgKHZlcnNpb24gPT09IFByb3RvY29sVmVyc2lvbi5WMDAwQmFzZTY0RGVjcnlwdGVkKSB7XG4gICAgICAgICAgICByZXR1cm4gdGhpcy5jcmVhdGVPcGVyYXRvckZvckxhdGVzdFZlcnNpb24oKTtcbiAgICAgICAgfVxuICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgIHRocm93IGBVbmFibGUgdG8gZmluZCBvcGVyYXRvciBmb3IgdmVyc2lvbiAke3ZlcnNpb259YDtcbiAgICAgICAgfVxuICAgIH1cbiAgICBvcGVyYXRvckZvclZlcnNpb24odmVyc2lvbikge1xuICAgICAgICBjb25zdCBvcGVyYXRvcktleSA9IHZlcnNpb247XG4gICAgICAgIGxldCBvcGVyYXRvciA9IHRoaXMub3BlcmF0b3JzW29wZXJhdG9yS2V5XTtcbiAgICAgICAgaWYgKCFvcGVyYXRvcikge1xuICAgICAgICAgICAgb3BlcmF0b3IgPSB0aGlzLmNyZWF0ZU9wZXJhdG9yRm9yVmVyc2lvbih2ZXJzaW9uKTtcbiAgICAgICAgICAgIHRoaXMub3BlcmF0b3JzW29wZXJhdG9yS2V5XSA9IG9wZXJhdG9yO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiBvcGVyYXRvcjtcbiAgICB9XG4gICAgLyoqXG4gICAgICogUmV0dXJucyB0aGUgb3BlcmF0b3IgY29ycmVzcG9uZGluZyB0byB0aGUgbGF0ZXN0IHByb3RvY29sIHZlcnNpb25cbiAgICAgKi9cbiAgICBkZWZhdWx0T3BlcmF0b3IoKSB7XG4gICAgICAgIHJldHVybiB0aGlzLm9wZXJhdG9yRm9yVmVyc2lvbih0aGlzLmdldExhdGVzdFZlcnNpb24oKSk7XG4gICAgfVxuICAgIC8qKlxuICAgICAqIENvbXB1dGVzIGEgcm9vdCBrZXkgZ2l2ZW4gYSBwYXNzd29yZCBhbmQga2V5IHBhcmFtcy5cbiAgICAgKiBEZWxlZ2F0ZXMgY29tcHV0YXRpb24gdG8gcmVzcGVjdGl2ZSBwcm90b2NvbCBvcGVyYXRvci5cbiAgICAgKi9cbiAgICBhc3luYyBjb21wdXRlUm9vdEtleShwYXNzd29yZCwga2V5UGFyYW1zKSB7XG4gICAgICAgIGNvbnN0IHZlcnNpb24gPSBrZXlQYXJhbXMudmVyc2lvbjtcbiAgICAgICAgY29uc3Qgb3BlcmF0b3IgPSB0aGlzLm9wZXJhdG9yRm9yVmVyc2lvbih2ZXJzaW9uKTtcbiAgICAgICAgcmV0dXJuIG9wZXJhdG9yLmNvbXB1dGVSb290S2V5KHBhc3N3b3JkLCBrZXlQYXJhbXMpO1xuICAgIH1cbiAgICAvKipcbiAgICAgKiBDcmVhdGVzIGEgcm9vdCBrZXkgdXNpbmcgdGhlIGxhdGVzdCBwcm90b2NvbCB2ZXJzaW9uXG4gICAgKi9cbiAgICBhc3luYyBjcmVhdGVSb290S2V5KGlkZW50aWZpZXIsIHBhc3N3b3JkKSB7XG4gICAgICAgIGNvbnN0IG9wZXJhdG9yID0gdGhpcy5kZWZhdWx0T3BlcmF0b3IoKTtcbiAgICAgICAgcmV0dXJuIG9wZXJhdG9yLmNyZWF0ZVJvb3RLZXkoaWRlbnRpZmllciwgcGFzc3dvcmQpO1xuICAgIH1cbiAgICAvKipcbiAgICAgKiBHaXZlbiBhIGtleSBhbmQgaW50ZW50LCByZXR1cm5zIHRoZSBwcm9wZXIgUGF5bG9hZEZvcm1hdCxcbiAgICAgKiBvciB0aHJvd3MgYW4gZXhjZXB0aW9uIGlmIHVuc3VwcG9ydGVkIGNvbmZpZ3VyYXRpb24gb2YgcGFyYW1ldGVycy5cbiAgICAgKi9cbiAgICBwYXlsb2FkQ29udGVudEZvcm1hdEZvckludGVudChpbnRlbnQsIGtleSkge1xuICAgICAgICBpZiAoIWtleSkge1xuICAgICAgICAgICAgLyoqIERlY3J5cHRlZCAqL1xuICAgICAgICAgICAgaWYgKChpbnRlbnQgPT09IEVuY3J5cHRpb25JbnRlbnQuTG9jYWxTdG9yYWdlRGVjcnlwdGVkIHx8XG4gICAgICAgICAgICAgICAgaW50ZW50ID09PSBFbmNyeXB0aW9uSW50ZW50LkxvY2FsU3RvcmFnZVByZWZlckVuY3J5cHRlZCB8fFxuICAgICAgICAgICAgICAgIGludGVudCA9PT0gRW5jcnlwdGlvbkludGVudC5GaWxlRGVjcnlwdGVkIHx8XG4gICAgICAgICAgICAgICAgaW50ZW50ID09PSBFbmNyeXB0aW9uSW50ZW50LkZpbGVQcmVmZXJFbmNyeXB0ZWQpKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIFBheWxvYWRGb3JtYXQuRGVjcnlwdGVkQmFyZU9iamVjdDtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGVsc2UgaWYgKChpbnRlbnQgPT09IEVuY3J5cHRpb25JbnRlbnQuU3luY0RlY3J5cHRlZCkpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gUGF5bG9hZEZvcm1hdC5EZWNyeXB0ZWRCYXNlNjRTdHJpbmc7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgICAgICB0aHJvdyAnVW5oYW5kbGVkIGRlY3J5cHRlZCBjYXNlIGluIHByb3RvY29sU2VydmljZS5wYXlsb2FkQ29udGVudEZvcm1hdEZvckludGVudC4nO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgLyoqIEVuY3J5cHRlZCAqL1xuICAgICAgICAgICAgaWYgKChpbnRlbnQgPT09IEVuY3J5cHRpb25JbnRlbnQuU3luYyB8fFxuICAgICAgICAgICAgICAgIGludGVudCA9PT0gRW5jcnlwdGlvbkludGVudC5GaWxlRW5jcnlwdGVkIHx8XG4gICAgICAgICAgICAgICAgaW50ZW50ID09PSBFbmNyeXB0aW9uSW50ZW50LkZpbGVQcmVmZXJFbmNyeXB0ZWQgfHxcbiAgICAgICAgICAgICAgICBpbnRlbnQgPT09IEVuY3J5cHRpb25JbnRlbnQuTG9jYWxTdG9yYWdlRW5jcnlwdGVkIHx8XG4gICAgICAgICAgICAgICAgaW50ZW50ID09PSBFbmNyeXB0aW9uSW50ZW50LkxvY2FsU3RvcmFnZVByZWZlckVuY3J5cHRlZCkpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gUGF5bG9hZEZvcm1hdC5FbmNyeXB0ZWRTdHJpbmc7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgICAgICB0aHJvdyAnVW5oYW5kbGVkIGVuY3J5cHRlZCBjYXNlIGluIHByb3RvY29sU2VydmljZS5wYXlsb2FkQ29udGVudEZvcm1hdEZvckludGVudC4nO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfVxuICAgIC8qKlxuICAgICAqIEdlbmVyYXRlcyBwYXJhbWV0ZXJzIGZvciBhIHBheWxvYWQgdGhhdCBhcmUgdHlwaWNhbGx5IGVuY3J5cHRlZCwgYW5kIHVzZWQgZm9yIHN5bmNpbmdcbiAgICAgKiBvciBzYXZpbmcgbG9jYWxseS4gUGFyYW1ldGVycyBhcmUgbm9uLXR5cGVkIG9iamVjdHMgdGhhdCBjYW4gbGF0ZXIgYnkgY29udmVydGVkIHRvIG9iamVjdHMuXG4gICAgICogSWYgdGhlIGlucHV0IHBheWxvYWQgaXMgbm90IHByb3Blcmx5IGRlY3J5cHRlZCBpbiB0aGUgZmlyc3QgcGxhY2UsIGl0IHdpbGwgYmUgcmV0dXJuZWRcbiAgICAgKiBhcy1pcy4gSWYgdGhlIHBheWxvYWQgaXMgZGVsZXRlZCwgaXQgd2lsbCBiZSByZXR1cm5lZCBhcy1pcyAoYXNzdW1pbmcgdGhhdCB0aGUgY29udGVudCBmaWVsZCBpcyBudWxsKVxuICAgICAqIEBwYXJhbSBwYXlsb2FkIC0gVGhlIHBheWxvYWQgdG8gZW5jcnlwdFxuICAgICAqIEBwYXJhbSBrZXkgVGhlIGtleSB0byB1c2UgdG8gZW5jcnlwdCB0aGUgcGF5bG9hZC5cbiAgICAgKiAgIFdpbGwgYmUgbG9va2VkIHVwIGlmIG5vdCBzdXBwbGllZC5cbiAgICAgKiBAcGFyYW0gaW50ZW50IC0gVGhlIHRhcmdldCBvZiB0aGUgZW5jcnlwdGlvblxuICAgICAqIEByZXR1cm5zIFRoZSBlbmNyeXB0ZWQgcGF5bG9hZFxuICAgICAqL1xuICAgIGFzeW5jIHBheWxvYWRCeUVuY3J5cHRpbmdQYXlsb2FkKHBheWxvYWQsIGludGVudCwga2V5KSB7XG4gICAgICAgIGlmIChwYXlsb2FkLmVycm9yRGVjcnlwdGluZykge1xuICAgICAgICAgICAgcmV0dXJuIHBheWxvYWQ7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKHBheWxvYWQuZGVsZXRlZCkge1xuICAgICAgICAgICAgcmV0dXJuIHBheWxvYWQ7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKGlzTnVsbE9yVW5kZWZpbmVkKGludGVudCkpIHtcbiAgICAgICAgICAgIHRocm93ICdBdHRlbXB0aW5nIHRvIGVuY3J5cHQgcGF5bG9hZCB3aXRoIG51bGwgaW50ZW50JztcbiAgICAgICAgfVxuICAgICAgICBpZiAoIWtleSAmJiAhaXNEZWNyeXB0ZWRJbnRlbnQoaW50ZW50KSkge1xuICAgICAgICAgICAga2V5ID0gYXdhaXQgdGhpcy5rZXlUb1VzZUZvckVuY3J5cHRpb25PZlBheWxvYWQocGF5bG9hZCwgaW50ZW50KTtcbiAgICAgICAgfVxuICAgICAgICBpZiAoIWtleSAmJiBpbnRlbnRSZXF1aXJlc0VuY3J5cHRpb24oaW50ZW50KSkge1xuICAgICAgICAgICAgdGhyb3cgRXJyb3IoJ0F0dGVtcHRpbmcgdG8gZ2VuZXJhdGUgZW5jcnlwdGVkIHBheWxvYWQgd2l0aCBubyBrZXkuJyk7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKHBheWxvYWQuZm9ybWF0ICE9PSBQYXlsb2FkRm9ybWF0LkRlY3J5cHRlZEJhcmVPYmplY3QpIHtcbiAgICAgICAgICAgIHRocm93ICdBdHRlbXB0aW5nIHRvIGVuY3J5cHQgYWxyZWFkeSBlbmNyeXB0ZWQgcGF5bG9hZC4nO1xuICAgICAgICB9XG4gICAgICAgIGlmICghcGF5bG9hZC5jb250ZW50KSB7XG4gICAgICAgICAgICB0aHJvdyAnQXR0ZW1wdGluZyB0byBlbmNyeXB0IHBheWxvYWQgd2l0aCBubyBjb250ZW50Lic7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKCFwYXlsb2FkLnV1aWQpIHtcbiAgICAgICAgICAgIHRocm93ICdBdHRlbXB0aW5nIHRvIGVuY3J5cHQgcGF5bG9hZCB3aXRoIG5vIHV1aWQuJztcbiAgICAgICAgfVxuICAgICAgICBjb25zdCB2ZXJzaW9uID0ga2V5ID8ga2V5LnZlcnNpb24gOiB0aGlzLmdldExhdGVzdFZlcnNpb24oKTtcbiAgICAgICAgY29uc3QgZm9ybWF0ID0gdGhpcy5wYXlsb2FkQ29udGVudEZvcm1hdEZvckludGVudChpbnRlbnQsIGtleSk7XG4gICAgICAgIGNvbnN0IG9wZXJhdG9yID0gdGhpcy5vcGVyYXRvckZvclZlcnNpb24odmVyc2lvbik7XG4gICAgICAgIGNvbnN0IGVuY3J5cHRpb25QYXJhbWV0ZXJzID0gYXdhaXQgb3BlcmF0b3IuZ2VuZXJhdGVFbmNyeXB0ZWRQYXJhbWV0ZXJzKHBheWxvYWQsIGZvcm1hdCwga2V5KTtcbiAgICAgICAgaWYgKCFlbmNyeXB0aW9uUGFyYW1ldGVycykge1xuICAgICAgICAgICAgdGhyb3cgJ1VuYWJsZSB0byBnZW5lcmF0ZSBlbmNyeXB0aW9uIHBhcmFtZXRlcnMnO1xuICAgICAgICB9XG4gICAgICAgIGNvbnN0IHJlc3VsdCA9IENyZWF0ZUludGVudFBheWxvYWRGcm9tT2JqZWN0KHBheWxvYWQsIGludGVudCwgZW5jcnlwdGlvblBhcmFtZXRlcnMpO1xuICAgICAgICByZXR1cm4gcmVzdWx0O1xuICAgIH1cbiAgICAvKipcbiAgICAgKiBTaW1pbGFyIHRvIGBwYXlsb2FkQnlFbmNyeXB0aW5nUGF5bG9hZGAsIGJ1dCBvcGVyYXRlcyBvbiBhbiBhcnJheSBvZiBwYXlsb2Fkcy5cbiAgICAgKiBgaW50ZW50YCBjYW4gYWxzbyBiZSBhIGZ1bmN0aW9uIG9mIHRoZSBjdXJyZW50IGl0ZXJhdGlvbiBwYXlsb2FkLlxuICAgICAqL1xuICAgIGFzeW5jIHBheWxvYWRzQnlFbmNyeXB0aW5nUGF5bG9hZHMocGF5bG9hZHMsIGludGVudCkge1xuICAgICAgICBjb25zdCByZXN1bHRzID0gW107XG4gICAgICAgIGZvciAoY29uc3QgcGF5bG9hZCBvZiBwYXlsb2Fkcykge1xuICAgICAgICAgICAgY29uc3QgdXNlSW50ZW50ID0gaXNGdW5jdGlvbihpbnRlbnQpID8gaW50ZW50KHBheWxvYWQpIDogaW50ZW50O1xuICAgICAgICAgICAgY29uc3QgZW5jcnlwdGVkUGF5bG9hZCA9IGF3YWl0IHRoaXMucGF5bG9hZEJ5RW5jcnlwdGluZ1BheWxvYWQocGF5bG9hZCwgdXNlSW50ZW50KTtcbiAgICAgICAgICAgIHJlc3VsdHMucHVzaChlbmNyeXB0ZWRQYXlsb2FkKTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gcmVzdWx0cztcbiAgICB9XG4gICAgLyoqXG4gICAgICogR2VuZXJhdGVzIGEgbmV3IHBheWxvYWQgYnkgZGVjcnlwdGluZyB0aGUgaW5wdXQgcGF5bG9hZC5cbiAgICAgKiBJZiB0aGUgaW5wdXQgcGF5bG9hZCBpcyBhbHJlYWR5IGRlY3J5cHRlZCwgaXQgd2lsbCBiZSByZXR1cm5lZCBhcy1pcy5cbiAgICAgKiBAcGFyYW0gcGF5bG9hZCAtIFRoZSBwYXlsb2FkIHRvIGRlY3J5cHQuXG4gICAgICogQHBhcmFtIGtleSBUaGUga2V5IHRvIHVzZSB0byBkZWNyeXB0IHRoZSBwYXlsb2FkLlxuICAgICAqIElmIG5vbmUgaXMgc3VwcGxpZWQsIGl0IHdpbGwgYmUgYXV0b21hdGljYWxseSBsb29rZWQgdXAuXG4gICAgICovXG4gICAgYXN5bmMgcGF5bG9hZEJ5RGVjcnlwdGluZ1BheWxvYWQocGF5bG9hZCwga2V5KSB7XG4gICAgICAgIGlmICghcGF5bG9hZC5jb250ZW50KSB7XG4gICAgICAgICAgICB0aHJvdyAnQXR0ZW1wdGluZyB0byBkZWNyeXB0IHBheWxvYWQgdGhhdCBoYXMgbm8gY29udGVudC4nO1xuICAgICAgICB9XG4gICAgICAgIGNvbnN0IGZvcm1hdCA9IHBheWxvYWQuZm9ybWF0O1xuICAgICAgICBpZiAoZm9ybWF0ID09PSBQYXlsb2FkRm9ybWF0LkRlY3J5cHRlZEJhcmVPYmplY3QpIHtcbiAgICAgICAgICAgIHJldHVybiBwYXlsb2FkO1xuICAgICAgICB9XG4gICAgICAgIGlmICgha2V5ICYmIGZvcm1hdCA9PT0gUGF5bG9hZEZvcm1hdC5FbmNyeXB0ZWRTdHJpbmcpIHtcbiAgICAgICAgICAgIGtleSA9IGF3YWl0IHRoaXMua2V5VG9Vc2VGb3JEZWNyeXB0aW9uT2ZQYXlsb2FkKHBheWxvYWQpO1xuICAgICAgICAgICAgaWYgKCFrZXkpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gQ3JlYXRlTWF4UGF5bG9hZEZyb21BbnlPYmplY3QocGF5bG9hZCwge1xuICAgICAgICAgICAgICAgICAgICB3YWl0aW5nRm9yS2V5OiB0cnVlLFxuICAgICAgICAgICAgICAgICAgICBlcnJvckRlY3J5cHRpbmc6IHRydWVcbiAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICBjb25zdCB2ZXJzaW9uID0gcGF5bG9hZC52ZXJzaW9uO1xuICAgICAgICBjb25zdCBvcGVyYXRvciA9IHRoaXMub3BlcmF0b3JGb3JWZXJzaW9uKHZlcnNpb24pO1xuICAgICAgICBjb25zdCBlbmNyeXB0aW9uUGFyYW1ldGVycyA9IENyZWF0ZUVuY3J5cHRpb25QYXJhbWV0ZXJzKHBheWxvYWQpO1xuICAgICAgICBjb25zdCBkZWNyeXB0ZWRQYXJhbWV0ZXJzID0gYXdhaXQgb3BlcmF0b3IuZ2VuZXJhdGVEZWNyeXB0ZWRQYXJhbWV0ZXJzKGVuY3J5cHRpb25QYXJhbWV0ZXJzLCBrZXkpO1xuICAgICAgICByZXR1cm4gQ3JlYXRlTWF4UGF5bG9hZEZyb21BbnlPYmplY3QocGF5bG9hZCwgZGVjcnlwdGVkUGFyYW1ldGVycyk7XG4gICAgfVxuICAgIC8qKlxuICAgICAqIFNpbWlsYXIgdG8gYHBheWxvYWRCeURlY3J5cHRpbmdQYXlsb2FkYCwgYnV0IG9wZXJhdGVzIG9uIGFuIGFycmF5IG9mIHBheWxvYWRzLlxuICAgICAqL1xuICAgIGFzeW5jIHBheWxvYWRzQnlEZWNyeXB0aW5nUGF5bG9hZHMocGF5bG9hZHMsIGtleSkge1xuICAgICAgICBjb25zdCBkZWNyeXB0ZWRQYXlsb2FkcyA9IFtdO1xuICAgICAgICBmb3IgKGNvbnN0IGVuY3J5cHRlZFBheWxvYWQgb2YgcGF5bG9hZHMpIHtcbiAgICAgICAgICAgIGlmICghZW5jcnlwdGVkUGF5bG9hZCkge1xuICAgICAgICAgICAgICAgIC8qKiBLZWVwIGluLWNvdW50cyBzaW1pbGFyIHRvIG91dC1jb3VudHMgKi9cbiAgICAgICAgICAgICAgICBkZWNyeXB0ZWRQYXlsb2Fkcy5wdXNoKGVuY3J5cHRlZFBheWxvYWQpO1xuICAgICAgICAgICAgICAgIGNvbnRpbnVlO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgLyoqXG4gICAgICAgICAgICAgKiBXZSBzdGlsbCB3YW50IHRvIGRlY3J5cHQgZGVsZXRlZCBwYXlsb2FkcyBpZiB0aGV5IGhhdmUgY29udGVudCBpbiBjYXNlXG4gICAgICAgICAgICAgKiB0aGV5IHdlcmUgbWFya2VkIGFzIGRpcnR5IGJ1dCBub3QgeWV0IHN5bmNlZC5cbiAgICAgICAgICAgICAqL1xuICAgICAgICAgICAgaWYgKGVuY3J5cHRlZFBheWxvYWQuZGVsZXRlZCA9PT0gdHJ1ZSAmJiBpc051bGxPclVuZGVmaW5lZChlbmNyeXB0ZWRQYXlsb2FkLmNvbnRlbnQpKSB7XG4gICAgICAgICAgICAgICAgZGVjcnlwdGVkUGF5bG9hZHMucHVzaChlbmNyeXB0ZWRQYXlsb2FkKTtcbiAgICAgICAgICAgICAgICBjb250aW51ZTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGNvbnN0IGlzRGVjcnlwdGFibGUgPSBpc1N0cmluZyhlbmNyeXB0ZWRQYXlsb2FkLmNvbnRlbnQpO1xuICAgICAgICAgICAgaWYgKCFpc0RlY3J5cHRhYmxlKSB7XG4gICAgICAgICAgICAgICAgZGVjcnlwdGVkUGF5bG9hZHMucHVzaChlbmNyeXB0ZWRQYXlsb2FkKTtcbiAgICAgICAgICAgICAgICBjb250aW51ZTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHRyeSB7XG4gICAgICAgICAgICAgICAgY29uc3QgZGVjcnlwdGVkUGF5bG9hZCA9IGF3YWl0IHRoaXMucGF5bG9hZEJ5RGVjcnlwdGluZ1BheWxvYWQoZW5jcnlwdGVkUGF5bG9hZCwga2V5KTtcbiAgICAgICAgICAgICAgICBkZWNyeXB0ZWRQYXlsb2Fkcy5wdXNoKGRlY3J5cHRlZFBheWxvYWQpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgY2F0Y2ggKGUpIHtcbiAgICAgICAgICAgICAgICBkZWNyeXB0ZWRQYXlsb2Fkcy5wdXNoKENyZWF0ZU1heFBheWxvYWRGcm9tQW55T2JqZWN0KGVuY3J5cHRlZFBheWxvYWQsIHtcbiAgICAgICAgICAgICAgICAgICAgZXJyb3JEZWNyeXB0aW5nOiB0cnVlLFxuICAgICAgICAgICAgICAgICAgICBlcnJvckRlY3J5cHRpbmdWYWx1ZUNoYW5nZWQ6ICFlbmNyeXB0ZWRQYXlsb2FkLmVycm9yRGVjcnlwdGluZ1xuICAgICAgICAgICAgICAgIH0pKTtcbiAgICAgICAgICAgICAgICBjb25zb2xlLmVycm9yKCdFcnJvciBkZWNyeXB0aW5nIHBheWxvYWQnLCBlbmNyeXB0ZWRQYXlsb2FkLCBlKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gZGVjcnlwdGVkUGF5bG9hZHM7XG4gICAgfVxuICAgIC8qKlxuICAgICAqIElmIGFuIGl0ZW0gd2FzIGF0dGVtcHRpbmcgdG8gZGVjcnlwdCwgYnV0IGZhaWxlZCwgZWl0aGVyIGJlY2F1c2UgdGhlIGtleXNcbiAgICAgKiBmb3IgdGhhdCBpdGVtIGhhZCBub3QgZG93bmxvYWRlZCB5ZXQsIG9yIGFueSBvdGhlciByZWFzb24sIGl0IHdpbGwgYmUgZGVmZXJyZWRcbiAgICAgKiBpdGVtLmVycm9yRGVjcnlwdGluZyA9IHRydWUgYW5kIHBvc3NpYmx5IGl0ZW0ud2FpdGluZ0ZvcktleSA9IHRydWUuXG4gICAgICogSGVyZSB3ZSBmaW5kIHN1Y2ggaXRlbXMsIGFuZCBhdHRlbXB0IHRvIGRlY3J5cHQgdGhlbSBhZ2Fpbi5cbiAgICAgKi9cbiAgICBhc3luYyBkZWNyeXB0RXJyb3JlZEl0ZW1zKCkge1xuICAgICAgICBjb25zdCBpdGVtcyA9IHRoaXMuaXRlbU1hbmFnZXIuaW52YWxpZEl0ZW1zO1xuICAgICAgICBpZiAoaXRlbXMubGVuZ3RoID09PSAwKSB7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cbiAgICAgICAgY29uc3QgcGF5bG9hZHMgPSBpdGVtcy5tYXAoKGl0ZW0pID0+IHtcbiAgICAgICAgICAgIHJldHVybiBpdGVtLnBheWxvYWRSZXByZXNlbnRhdGlvbigpO1xuICAgICAgICB9KTtcbiAgICAgICAgY29uc3QgZGVjcnlwdGVkID0gYXdhaXQgdGhpcy5wYXlsb2Fkc0J5RGVjcnlwdGluZ1BheWxvYWRzKHBheWxvYWRzKTtcbiAgICAgICAgYXdhaXQgdGhpcy5tb2RlbE1hbmFnZXIuZW1pdFBheWxvYWRzKGRlY3J5cHRlZCwgUGF5bG9hZFNvdXJjZS5Mb2NhbENoYW5nZWQpO1xuICAgIH1cbiAgICAvKipcbiAgICAgKiBEZWNyeXB0cyBhIGJhY2t1cCBmaWxlIHVzaW5nIHVzZXItaW5wdXR0ZWQgcGFzc3dvcmRcbiAgICAgKiBAcGFyYW0gcGFzc3dvcmQgLSBUaGUgcmF3IHVzZXIgcGFzc3dvcmQgYXNzb2NpYXRlZCB3aXRoIHRoaXMgYmFja3VwIGZpbGVcbiAgICAgKi9cbiAgICBhc3luYyBwYXlsb2Fkc0J5RGVjcnlwdGluZ0JhY2t1cEZpbGUoZGF0YSwgcGFzc3dvcmQpIHtcbiAgICAgICAgY29uc3Qga2V5UGFyYW1zID0gZGF0YS5rZXlQYXJhbXMgfHwgZGF0YS5hdXRoX3BhcmFtcztcbiAgICAgICAgY29uc3QgcmF3SXRlbXMgPSBkYXRhLml0ZW1zO1xuICAgICAgICBjb25zdCBlbmNyeXB0ZWRQYXlsb2FkcyA9IHJhd0l0ZW1zLm1hcCgocmF3SXRlbSkgPT4ge1xuICAgICAgICAgICAgcmV0dXJuIENyZWF0ZVNvdXJjZWRQYXlsb2FkRnJvbU9iamVjdChyYXdJdGVtLCBQYXlsb2FkU291cmNlLkZpbGVJbXBvcnQpO1xuICAgICAgICB9KTtcbiAgICAgICAgbGV0IGRlY3J5cHRlZFBheWxvYWRzO1xuICAgICAgICBpZiAoa2V5UGFyYW1zKSB7XG4gICAgICAgICAgICBjb25zdCBrZXkgPSBhd2FpdCB0aGlzLmNvbXB1dGVSb290S2V5KHBhc3N3b3JkLCBrZXlQYXJhbXMpO1xuICAgICAgICAgICAgZGVjcnlwdGVkUGF5bG9hZHMgPSBhd2FpdCB0aGlzLnBheWxvYWRzQnlEZWNyeXB0aW5nUGF5bG9hZHMoZW5jcnlwdGVkUGF5bG9hZHMsIGtleSk7XG4gICAgICAgIH1cbiAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICBkZWNyeXB0ZWRQYXlsb2FkcyA9IGVuY3J5cHRlZFBheWxvYWRzO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiBkZWNyeXB0ZWRQYXlsb2FkcztcbiAgICB9XG4gICAgLyoqXG4gICAgICogQ3JlYXRlcyBhIGtleSBwYXJhbXMgb2JqZWN0IGZyb20gYSByYXcgb2JqZWN0XG4gICAgICogQHBhcmFtIGtleVBhcmFtcyAtIFRoZSByYXcga2V5IHBhcmFtcyBvYmplY3QgdG8gY3JlYXRlIGEgS2V5UGFyYW1zIG9iamVjdCBmcm9tXG4gICAgICovXG4gICAgY3JlYXRlS2V5UGFyYW1zKGtleVBhcmFtcykge1xuICAgICAgICAvKiAwMDIgZG9lc24ndCBoYXZlIHZlcnNpb24gYXV0b21hdGljYWxseSwgbmV3ZXIgdmVyc2lvbnMgZG8uICovXG4gICAgICAgIGlmICgha2V5UGFyYW1zLnZlcnNpb24pIHtcbiAgICAgICAgICAgIGtleVBhcmFtcy52ZXJzaW9uID0gUHJvdG9jb2xWZXJzaW9uLlYwMDI7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIENyZWF0ZUtleVBhcmFtcyhrZXlQYXJhbXMpO1xuICAgIH1cbiAgICAvKipcbiAgICAgKiBDcmVhdGVzIGEgSlNPTiBzdHJpbmcgcmVwcmVzZW50aW5nIHRoZSBiYWNrdXAgZm9ybWF0IG9mIGFsbCBpdGVtcywgb3IganVzdCBzdWJpdGVtc1xuICAgICAqIGlmIHN1cHBsaWVkLlxuICAgICAqIEBwYXJhbSBzdWJJdGVtcyBBbiBvcHRpb25hbCBhcnJheSBvZiBpdGVtcyB0byBjcmVhdGUgYmFja3VwIG9mLlxuICAgICAqIElmIG5vdCBzdXBwbGllZCwgYWxsIGl0ZW1zIGFyZSBiYWNrZWQgdXAuXG4gICAgICogQHBhcmFtIHJldHVybklmRW1wdHkgUmV0dXJucyBudWxsIGlmIHRoZXJlIGFyZSBubyBpdGVtcyB0byBtYWtlIGJhY2t1cCBvZi5cbiAgICAgKiBAcmV0dXJucyBKU09OIHN0cmluZ2lmaWVkIHJlcHJlc2VudGF0aW9uIG9mIGRhdGEsIGluY2x1ZGluZyBrZXlQYXJhbXMuXG4gICAgICovXG4gICAgYXN5bmMgY3JlYXRlQmFja3VwRmlsZShzdWJJdGVtcywgaW50ZW50ID0gRW5jcnlwdGlvbkludGVudC5GaWxlUHJlZmVyRW5jcnlwdGVkLCByZXR1cm5JZkVtcHR5ID0gZmFsc2UpIHtcbiAgICAgICAgY29uc3QgaXRlbXMgPSBzdWJJdGVtcyB8fCB0aGlzLml0ZW1NYW5hZ2VyLml0ZW1zO1xuICAgICAgICBpZiAocmV0dXJuSWZFbXB0eSAmJiBpdGVtcy5sZW5ndGggPT09IDApIHtcbiAgICAgICAgICAgIHJldHVybiB1bmRlZmluZWQ7XG4gICAgICAgIH1cbiAgICAgICAgY29uc3QgZW5jcnlwdGVkUGF5bG9hZHMgPSBbXTtcbiAgICAgICAgZm9yIChjb25zdCBpdGVtIG9mIGl0ZW1zKSB7XG4gICAgICAgICAgICBpZiAoaXRlbS5lcnJvckRlY3J5cHRpbmcpIHtcbiAgICAgICAgICAgICAgICAvKiogS2VlcCBwYXlsb2FkIGFzLWlzICovXG4gICAgICAgICAgICAgICAgZW5jcnlwdGVkUGF5bG9hZHMucHVzaChpdGVtLnBheWxvYWQpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICAgICAgY29uc3QgcGF5bG9hZCA9IENyZWF0ZVNvdXJjZWRQYXlsb2FkRnJvbU9iamVjdChpdGVtLnBheWxvYWQsIFBheWxvYWRTb3VyY2UuRmlsZUltcG9ydCk7XG4gICAgICAgICAgICAgICAgY29uc3QgZW5jcnlwdGVkID0gYXdhaXQgdGhpcy5wYXlsb2FkQnlFbmNyeXB0aW5nUGF5bG9hZChwYXlsb2FkLCBpbnRlbnQpO1xuICAgICAgICAgICAgICAgIGVuY3J5cHRlZFBheWxvYWRzLnB1c2goZW5jcnlwdGVkKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICBjb25zdCBkYXRhID0ge1xuICAgICAgICAgICAgaXRlbXM6IGVuY3J5cHRlZFBheWxvYWRzLm1hcCgocCkgPT4gcC5lamVjdGVkKCkpXG4gICAgICAgIH07XG4gICAgICAgIGNvbnN0IGtleVBhcmFtcyA9IGF3YWl0IHRoaXMuZ2V0Um9vdEtleVBhcmFtcygpO1xuICAgICAgICBpZiAoa2V5UGFyYW1zICYmIGludGVudCAhPT0gRW5jcnlwdGlvbkludGVudC5GaWxlRGVjcnlwdGVkKSB7XG4gICAgICAgICAgICBkYXRhLmtleVBhcmFtcyA9IGtleVBhcmFtcy5nZXRQb3J0YWJsZVZhbHVlKCk7XG4gICAgICAgIH1cbiAgICAgICAgY29uc3QgcHJldHR5UHJpbnQgPSAyO1xuICAgICAgICByZXR1cm4gSlNPTi5zdHJpbmdpZnkoZGF0YSwgbnVsbCwgcHJldHR5UHJpbnQpO1xuICAgIH1cbiAgICAvKipcbiAgICAgKiBSZWdpc3RlciBhIGNhbGxiYWNrIHRvIGJlIG5vdGlmaWVkIHdoZW4gcm9vdCBrZXkgc3RhdHVzIGNoYW5nZXMuXG4gICAgICogQHBhcmFtIGNhbGxiYWNrICBBIGZ1bmN0aW9uIHRoYXQgdGFrZXMgaW4gYSBjb250ZW50IHR5cGUgdG8gY2FsbCBiYWNrIHdoZW4gcm9vdFxuICAgICAqICAgICAgICAgICAgICAgICAga2V5IG9yIHdyYXBwZXIgc3RhdHVzIGhhcyBjaGFuZ2VkLlxuICAgICAqL1xuICAgIG9uS2V5U3RhdHVzQ2hhbmdlKGNhbGxiYWNrKSB7XG4gICAgICAgIHRoaXMua2V5T2JzZXJ2ZXJzLnB1c2goY2FsbGJhY2spO1xuICAgICAgICByZXR1cm4gKCkgPT4ge1xuICAgICAgICAgICAgcmVtb3ZlRnJvbUFycmF5KHRoaXMua2V5T2JzZXJ2ZXJzLCBjYWxsYmFjayk7XG4gICAgICAgIH07XG4gICAgfVxuICAgIGFzeW5jIG5vdGlmeU9ic2VydmVyc09mS2V5Q2hhbmdlKCkge1xuICAgICAgICBmb3IgKGNvbnN0IG9ic2VydmVyIG9mIHRoaXMua2V5T2JzZXJ2ZXJzKSB7XG4gICAgICAgICAgICBhd2FpdCBvYnNlcnZlcigpO1xuICAgICAgICB9XG4gICAgfVxuICAgIGFzeW5jIGdldFJvb3RLZXlGcm9tS2V5Y2hhaW4oKSB7XG4gICAgICAgIGNvbnN0IHJhd0tleSA9IGF3YWl0IHRoaXMuZGV2aWNlSW50ZXJmYWNlLmdldEtleWNoYWluVmFsdWUoKTtcbiAgICAgICAgaWYgKGlzTnVsbE9yVW5kZWZpbmVkKHJhd0tleSkpIHtcbiAgICAgICAgICAgIHJldHVybiB1bmRlZmluZWQ7XG4gICAgICAgIH1cbiAgICAgICAgY29uc3Qgcm9vdEtleSA9IGF3YWl0IFNOUm9vdEtleS5DcmVhdGUocmF3S2V5KTtcbiAgICAgICAgcmV0dXJuIHJvb3RLZXk7XG4gICAgfVxuICAgIGFzeW5jIHNhdmVSb290S2V5VG9LZXljaGFpbigpIHtcbiAgICAgICAgaWYgKGlzTnVsbE9yVW5kZWZpbmVkKHRoaXMucm9vdEtleSkpIHtcbiAgICAgICAgICAgIHRocm93ICdBdHRlbXB0aW5nIHRvIG5vbi1leGlzdGVudCByb290IGtleSB0byB0aGUga2V5Y2hhaW4uJztcbiAgICAgICAgfVxuICAgICAgICBpZiAodGhpcy5rZXlNb2RlICE9PSBLZXlNb2RlLlJvb3RLZXlPbmx5KSB7XG4gICAgICAgICAgICB0aHJvdyAnU2hvdWxkIG5vdCBiZSBwZXJzaXN0aW5nIHdyYXBwZWQga2V5IHRvIGtleWNoYWluLic7XG4gICAgICAgIH1cbiAgICAgICAgY29uc3QgcmF3S2V5ID0gdGhpcy5yb290S2V5LmdldFBlcnNpc3RhYmxlVmFsdWUoKTtcbiAgICAgICAgcmV0dXJuIHRoaXMuZXhlY3V0ZUNyaXRpY2FsRnVuY3Rpb24oKCkgPT4ge1xuICAgICAgICAgICAgcmV0dXJuIHRoaXMuZGV2aWNlSW50ZXJmYWNlLnNldEtleWNoYWluVmFsdWUocmF3S2V5KTtcbiAgICAgICAgfSk7XG4gICAgfVxuICAgIC8qKlxuICAgICAqIEByZXR1cm5zIFRydWUgaWYgYSByb290IGtleSB3cmFwcGVyIChwYXNzY29kZSkgaXMgY29uZmlndXJlZC5cbiAgICAgKi9cbiAgICBhc3luYyBoYXNSb290S2V5V3JhcHBlcigpIHtcbiAgICAgICAgY29uc3Qgd3JhcHBlciA9IGF3YWl0IHRoaXMuZ2V0Um9vdEtleVdyYXBwZXJLZXlQYXJhbXMoKTtcbiAgICAgICAgcmV0dXJuICFpc051bGxPclVuZGVmaW5lZCh3cmFwcGVyKTtcbiAgICB9XG4gICAgLyoqXG4gICAgICogQSBub24tYXN5bmMgYWx0ZXJuYXRpdmUgdG8gYGhhc1Jvb3RLZXlXcmFwcGVyYCB3aGljaCB1c2VzIHByZS1sb2FkZWQgc3RhdGVcbiAgICAgKiB0byBkZXRlcm1pbmUgaWYgYSBwYXNzY29kZSBpcyBjb25maWd1cmVkLlxuICAgICAqL1xuICAgIGhhc1Bhc3Njb2RlKCkge1xuICAgICAgICByZXR1cm4gKHRoaXMua2V5TW9kZSA9PT0gS2V5TW9kZS5XcmFwcGVyT25seSB8fFxuICAgICAgICAgICAgdGhpcy5rZXlNb2RlID09PSBLZXlNb2RlLlJvb3RLZXlQbHVzV3JhcHBlcik7XG4gICAgfVxuICAgIC8qKlxuICAgICAqIEByZXR1cm5zIFRydWUgaWYgdGhlIHJvb3Qga2V5IGhhcyBub3QgeWV0IGJlZW4gdW53cmFwcGVkIChwYXNzY29kZSBsb2NrZWQpLlxuICAgICAqL1xuICAgIGFzeW5jIHJvb3RLZXlOZWVkc1Vud3JhcHBpbmcoKSB7XG4gICAgICAgIHJldHVybiBhd2FpdCB0aGlzLmhhc1Jvb3RLZXlXcmFwcGVyKCkgJiYgaXNOdWxsT3JVbmRlZmluZWQodGhpcy5yb290S2V5KTtcbiAgICB9XG4gICAgLyoqXG4gICAgICogQHJldHVybnMgS2V5IHBhcmFtcyBvYmplY3QgY29udGFpbmluZyByb290IGtleSB3cmFwcGVyIGtleSBwYXJhbXNcbiAgICAgKi9cbiAgICBhc3luYyBnZXRSb290S2V5V3JhcHBlcktleVBhcmFtcygpIHtcbiAgICAgICAgY29uc3QgcmF3S2V5UGFyYW1zID0gYXdhaXQgdGhpcy5zdG9yYWdlU2VydmljZS5nZXRWYWx1ZShTdG9yYWdlS2V5LlJvb3RLZXlXcmFwcGVyS2V5UGFyYW1zLCBTdG9yYWdlVmFsdWVNb2Rlcy5Ob253cmFwcGVkKTtcbiAgICAgICAgaWYgKCFyYXdLZXlQYXJhbXMpIHtcbiAgICAgICAgICAgIHJldHVybiB1bmRlZmluZWQ7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHRoaXMuY3JlYXRlS2V5UGFyYW1zKHJhd0tleVBhcmFtcyk7XG4gICAgfVxuICAgIC8qKlxuICAgICAqIEByZXR1cm5zIE9iamVjdCBjb250YWluaW5nIHBlcnNpc3RlZCB3cmFwcGVkIChlbmNyeXB0ZWQpIHJvb3Qga2V5XG4gICAgICovXG4gICAgYXN5bmMgZ2V0V3JhcHBlZFJvb3RLZXkoKSB7XG4gICAgICAgIHJldHVybiB0aGlzLnN0b3JhZ2VTZXJ2aWNlLmdldFZhbHVlKFN0b3JhZ2VLZXkuV3JhcHBlZFJvb3RLZXksIFN0b3JhZ2VWYWx1ZU1vZGVzLk5vbndyYXBwZWQpO1xuICAgIH1cbiAgICAvKipcbiAgICAgKiBSZXR1cm5zIHJvb3RLZXlQYXJhbXMgYnkgcmVhZGluZyBmcm9tIHN0b3JhZ2UuXG4gICAgICovXG4gICAgYXN5bmMgZ2V0Um9vdEtleVBhcmFtcygpIHtcbiAgICAgICAgaWYgKHRoaXMua2V5TW9kZSA9PT0gS2V5TW9kZS5XcmFwcGVyT25seSkge1xuICAgICAgICAgICAgcmV0dXJuIHRoaXMuZ2V0Um9vdEtleVdyYXBwZXJLZXlQYXJhbXMoKTtcbiAgICAgICAgfVxuICAgICAgICBlbHNlIGlmICh0aGlzLmtleU1vZGUgPT09IEtleU1vZGUuUm9vdEtleU9ubHkgfHxcbiAgICAgICAgICAgIHRoaXMua2V5TW9kZSA9PT0gS2V5TW9kZS5Sb290S2V5UGx1c1dyYXBwZXIpIHtcbiAgICAgICAgICAgIHJldHVybiB0aGlzLmdldEFjY291bnRLZXlQYXJhbXMoKTtcbiAgICAgICAgfVxuICAgICAgICBlbHNlIGlmICh0aGlzLmtleU1vZGUgPT09IEtleU1vZGUuUm9vdEtleU5vbmUpIHtcbiAgICAgICAgICAgIHJldHVybiB1bmRlZmluZWQ7XG4gICAgICAgIH1cbiAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICB0aHJvdyBgVW5oYW5kbGVkIGtleSBtb2RlIGZvciBnZXRSb290S2V5UGFyYW1zICR7dGhpcy5rZXlNb2RlfWA7XG4gICAgICAgIH1cbiAgICB9XG4gICAgLyoqXG4gICAgICogQHJldHVybnMgZ2V0Um9vdEtleVBhcmFtcyBtYXkgcmV0dXJuIGRpZmZlcmVudCBwYXJhbXMgYmFzZWQgb24gZGlmZmVyZW50XG4gICAgICogICAgICAgICAgIGtleU1vZGUuIFRoaXMgZnVuY3Rpb24gaG93ZXZlciBzdHJpY3RseSByZXR1cm5zIG9ubHkgYWNjb3VudCBwYXJhbXMuXG4gICAgICovXG4gICAgYXN5bmMgZ2V0QWNjb3VudEtleVBhcmFtcygpIHtcbiAgICAgICAgY29uc3QgcmF3S2V5UGFyYW1zID0gYXdhaXQgdGhpcy5zdG9yYWdlU2VydmljZS5nZXRWYWx1ZShTdG9yYWdlS2V5LlJvb3RLZXlQYXJhbXMsIFN0b3JhZ2VWYWx1ZU1vZGVzLk5vbndyYXBwZWQpO1xuICAgICAgICBpZiAoIXJhd0tleVBhcmFtcykge1xuICAgICAgICAgICAgcmV0dXJuIHVuZGVmaW5lZDtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gdGhpcy5jcmVhdGVLZXlQYXJhbXMocmF3S2V5UGFyYW1zKTtcbiAgICB9XG4gICAgLyoqXG4gICAgICogV2Uga25vdyBhIHdyYXBwaW5nS2V5IGlzIGNvcnJlY3QgaWYgaXQgY29ycmVjdGx5IGRlY3J5cHRzXG4gICAgICogd3JhcHBlZCByb290IGtleS5cbiAgICAgKi9cbiAgICBhc3luYyB2YWxpZGF0ZVdyYXBwaW5nS2V5KHdyYXBwaW5nS2V5KSB7XG4gICAgICAgIGNvbnN0IHdyYXBwZWRSb290S2V5ID0gYXdhaXQgdGhpcy5nZXRXcmFwcGVkUm9vdEtleSgpO1xuICAgICAgICAvKiogSWYgd3JhcHBlciBvbmx5LCBzdG9yYWdlIGlzIGVuY3J5cHRlZCBkaXJlY3RseSB3aXRoIHdyYXBwaW5nS2V5ICovXG4gICAgICAgIGlmICh0aGlzLmtleU1vZGUgPT09IEtleU1vZGUuV3JhcHBlck9ubHkpIHtcbiAgICAgICAgICAgIHJldHVybiB0aGlzLnN0b3JhZ2VTZXJ2aWNlLmNhbkRlY3J5cHRXaXRoS2V5KHdyYXBwaW5nS2V5KTtcbiAgICAgICAgfVxuICAgICAgICBlbHNlIGlmICgodGhpcy5rZXlNb2RlID09PSBLZXlNb2RlLlJvb3RLZXlPbmx5IHx8XG4gICAgICAgICAgICB0aGlzLmtleU1vZGUgPT09IEtleU1vZGUuUm9vdEtleVBsdXNXcmFwcGVyKSkge1xuICAgICAgICAgICAgLyoqXG4gICAgICAgICAgICAqIEluIHRoZXNlIG1vZGVzLCBzdG9yYWdlIGlzIGVuY3J5cHRlZCB3aXRoIGFjY291bnQga2V5cywgYW5kXG4gICAgICAgICAgICAqIGFjY291bnQga2V5cyBhcmUgZW5jcnlwdGVkIHdpdGggd3JhcHBpbmdLZXkuIEhlcmUgd2UgdmFsaWRhdGVcbiAgICAgICAgICAgICogYnkgYXR0ZW1wdGluZyB0byBkZWNyeXB0IGFjY291bnQga2V5cy5cbiAgICAgICAgICAgICovXG4gICAgICAgICAgICBjb25zdCB3cmFwcGVkS2V5UGF5bG9hZCA9IENyZWF0ZU1heFBheWxvYWRGcm9tQW55T2JqZWN0KHdyYXBwZWRSb290S2V5KTtcbiAgICAgICAgICAgIGNvbnN0IGRlY3J5cHRlZCA9IGF3YWl0IHRoaXMucGF5bG9hZEJ5RGVjcnlwdGluZ1BheWxvYWQod3JhcHBlZEtleVBheWxvYWQsIHdyYXBwaW5nS2V5KTtcbiAgICAgICAgICAgIHJldHVybiAhZGVjcnlwdGVkLmVycm9yRGVjcnlwdGluZztcbiAgICAgICAgfVxuICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgIHRocm93ICdVbmhhbmRsZWQgY2FzZSBpbiB2YWxpZGF0ZVdyYXBwaW5nS2V5JztcbiAgICAgICAgfVxuICAgIH1cbiAgICAvKipcbiAgICAgKiBDb21wdXRlcyB0aGUgcm9vdCBrZXkgd3JhcHBpbmcga2V5IGdpdmVuIGEgcGFzc2NvZGUuXG4gICAgICogV3JhcHBpbmcga2V5IHBhcmFtcyBhcmUgcmVhZCBmcm9tIGRpc2suXG4gICAgICovXG4gICAgYXN5bmMgY29tcHV0ZVdyYXBwaW5nS2V5KHBhc3Njb2RlKSB7XG4gICAgICAgIGNvbnN0IGtleVBhcmFtcyA9IGF3YWl0IHRoaXMuZ2V0Um9vdEtleVdyYXBwZXJLZXlQYXJhbXMoKTtcbiAgICAgICAgY29uc3Qga2V5ID0gYXdhaXQgdGhpcy5jb21wdXRlUm9vdEtleShwYXNzY29kZSwga2V5UGFyYW1zKTtcbiAgICAgICAgcmV0dXJuIGtleTtcbiAgICB9XG4gICAgLyoqXG4gICAgICogVW53cmFwcyB0aGUgcGVyc2lzdGVkIHJvb3Qga2V5IHZhbHVlIHVzaW5nIHRoZSBzdXBwbGllZCB3cmFwcGluZ0tleS5cbiAgICAgKiBBcHBsaWNhdGlvbiBpbnRlcmZhY2VzIG11c3QgY2hlY2sgdG8gc2VlIGlmIHRoZSByb290IGtleSByZXF1aXJlcyB1bndyYXBwaW5nIG9uIGxvYWQuXG4gICAgICogSWYgc28sIHRoZXkgbXVzdCBnZW5lcmF0ZSB0aGUgdW53cmFwcGluZyBrZXkgYnkgZ2V0dGluZyBvdXIgc2F2ZWQgd3JhcHBpbmcga2V5IGtleVBhcmFtcy5cbiAgICAgKiBBZnRlciB1bndyYXBwaW5nLCB0aGUgcm9vdCBrZXkgaXMgYXV0b21hdGljYWxseSBsb2FkZWQuXG4gICAgICovXG4gICAgYXN5bmMgdW53cmFwUm9vdEtleSh3cmFwcGluZ0tleSkge1xuICAgICAgICBpZiAodGhpcy5rZXlNb2RlID09PSBLZXlNb2RlLldyYXBwZXJPbmx5KSB7XG4gICAgICAgICAgICB0aGlzLnJvb3RLZXkgPSB3cmFwcGluZ0tleTtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuICAgICAgICBpZiAodGhpcy5rZXlNb2RlICE9PSBLZXlNb2RlLlJvb3RLZXlQbHVzV3JhcHBlcikge1xuICAgICAgICAgICAgdGhyb3cgJ0ludmFsaWQga2V5IG1vZGUgY29uZGl0aW9uIGZvciB1bndyYXBwaW5nLic7XG4gICAgICAgIH1cbiAgICAgICAgY29uc3Qgd3JhcHBlZEtleSA9IGF3YWl0IHRoaXMuZ2V0V3JhcHBlZFJvb3RLZXkoKTtcbiAgICAgICAgY29uc3QgcGF5bG9hZCA9IENyZWF0ZU1heFBheWxvYWRGcm9tQW55T2JqZWN0KHdyYXBwZWRLZXkpO1xuICAgICAgICBjb25zdCBkZWNyeXB0ZWQgPSBhd2FpdCB0aGlzLnBheWxvYWRCeURlY3J5cHRpbmdQYXlsb2FkKHBheWxvYWQsIHdyYXBwaW5nS2V5KTtcbiAgICAgICAgaWYgKGRlY3J5cHRlZC5lcnJvckRlY3J5cHRpbmcpIHtcbiAgICAgICAgICAgIHRocm93IEVycm9yKCdVbmFibGUgdG8gZGVjcnlwdCByb290IGtleSB3aXRoIHByb3ZpZGVkIHdyYXBwaW5nIGtleS4nKTtcbiAgICAgICAgfVxuICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgIHRoaXMucm9vdEtleSA9IGF3YWl0IFNOUm9vdEtleS5DcmVhdGUoZGVjcnlwdGVkLmNvbnRlbnRPYmplY3QsIGRlY3J5cHRlZC51dWlkKTtcbiAgICAgICAgICAgIGF3YWl0IHRoaXMubm90aWZ5T2JzZXJ2ZXJzT2ZLZXlDaGFuZ2UoKTtcbiAgICAgICAgfVxuICAgIH1cbiAgICAvKipcbiAgICAgKiBFbmNyeXB0cyByb290S2V5IGFuZCBzYXZlcyBpdCBpbiBzdG9yYWdlIGluc3RlYWQgb2Yga2V5Y2hhaW4sIGFuZCB0aGVuXG4gICAgICogY2xlYXJzIGtleWNoYWluLiBUaGlzIGlzIGJlY2F1c2Ugd2UgZG9uJ3Qgd2FudCB0byBzdG9yZSBsYXJnZSBlbmNyeXB0ZWRcbiAgICAgKiBwYXlsb2FkcyBpbiB0aGUga2V5Y2hhaW4uIElmIHRoZSByb290IGtleSBpcyBub3Qgd3JhcHBlZCwgaXQgaXMgc3RvcmVkXG4gICAgICogaW4gcGxhaW4gZm9ybSBpbiB0aGUgdXNlcidzIHNlY3VyZSBrZXljaGFpbi5cbiAgICAqL1xuICAgIGFzeW5jIHNldE5ld1Jvb3RLZXlXcmFwcGVyKHdyYXBwaW5nS2V5LCBrZXlQYXJhbXMpIHtcbiAgICAgICAgaWYgKHRoaXMua2V5TW9kZSA9PT0gS2V5TW9kZS5Sb290S2V5Tm9uZSkge1xuICAgICAgICAgICAgdGhpcy5rZXlNb2RlID0gS2V5TW9kZS5XcmFwcGVyT25seTtcbiAgICAgICAgfVxuICAgICAgICBlbHNlIGlmICh0aGlzLmtleU1vZGUgPT09IEtleU1vZGUuUm9vdEtleU9ubHkpIHtcbiAgICAgICAgICAgIHRoaXMua2V5TW9kZSA9IEtleU1vZGUuUm9vdEtleVBsdXNXcmFwcGVyO1xuICAgICAgICB9XG4gICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgdGhyb3cgRXJyb3IoJ0F0dGVtcHRpbmcgdG8gc2V0IHdyYXBwZXIgb24gYWxyZWFkeSB3cmFwcGVkIGtleS4nKTtcbiAgICAgICAgfVxuICAgICAgICBhd2FpdCB0aGlzLmRldmljZUludGVyZmFjZS5jbGVhcktleWNoYWluVmFsdWUoKTtcbiAgICAgICAgaWYgKCh0aGlzLmtleU1vZGUgPT09IEtleU1vZGUuV3JhcHBlck9ubHkgfHxcbiAgICAgICAgICAgIHRoaXMua2V5TW9kZSA9PT0gS2V5TW9kZS5Sb290S2V5UGx1c1dyYXBwZXIpKSB7XG4gICAgICAgICAgICBpZiAodGhpcy5rZXlNb2RlID09PSBLZXlNb2RlLldyYXBwZXJPbmx5KSB7XG4gICAgICAgICAgICAgICAgdGhpcy5yb290S2V5ID0gd3JhcHBpbmdLZXk7XG4gICAgICAgICAgICAgICAgYXdhaXQgdGhpcy5yZWVuY3J5cHRJdGVtc0tleXMoKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgICAgIGF3YWl0IHRoaXMud3JhcEFuZFBlcnNpc3RSb290S2V5KHdyYXBwaW5nS2V5KTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGF3YWl0IHRoaXMuc3RvcmFnZVNlcnZpY2Uuc2V0VmFsdWUoU3RvcmFnZUtleS5Sb290S2V5V3JhcHBlcktleVBhcmFtcywga2V5UGFyYW1zLmdldFBvcnRhYmxlVmFsdWUoKSwgU3RvcmFnZVZhbHVlTW9kZXMuTm9ud3JhcHBlZCk7XG4gICAgICAgICAgICBhd2FpdCB0aGlzLm5vdGlmeU9ic2VydmVyc09mS2V5Q2hhbmdlKCk7XG4gICAgICAgIH1cbiAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICB0aHJvdyBFcnJvcignSW52YWxpZCBrZXlNb2RlIG9uIHNldE5ld1Jvb3RLZXlXcmFwcGVyJyk7XG4gICAgICAgIH1cbiAgICB9XG4gICAgLyoqXG4gICAgICogV3JhcHMgdGhlIGN1cnJlbnQgaW4tbWVtb3J5IHJvb3Qga2V5IHZhbHVlIHVzaW5nIHRoZSB3cmFwcGluZ0tleSxcbiAgICAgKiB0aGVuIHBlcnNpc3RzIHRoZSB3cmFwcGVkIHZhbHVlIHRvIGRpc2suXG4gICAgICovXG4gICAgYXN5bmMgd3JhcEFuZFBlcnNpc3RSb290S2V5KHdyYXBwaW5nS2V5KSB7XG4gICAgICAgIGNvbnN0IHBheWxvYWQgPSBDcmVhdGVNYXhQYXlsb2FkRnJvbUFueU9iamVjdCh0aGlzLnJvb3RLZXksIHtcbiAgICAgICAgICAgIGNvbnRlbnQ6IHRoaXMucm9vdEtleS5nZXRQZXJzaXN0YWJsZVZhbHVlKClcbiAgICAgICAgfSk7XG4gICAgICAgIGNvbnN0IHdyYXBwZWRLZXkgPSBhd2FpdCB0aGlzLnBheWxvYWRCeUVuY3J5cHRpbmdQYXlsb2FkKHBheWxvYWQsIEVuY3J5cHRpb25JbnRlbnQuTG9jYWxTdG9yYWdlRW5jcnlwdGVkLCB3cmFwcGluZ0tleSk7XG4gICAgICAgIGF3YWl0IHRoaXMuc3RvcmFnZVNlcnZpY2Uuc2V0VmFsdWUoU3RvcmFnZUtleS5XcmFwcGVkUm9vdEtleSwgd3JhcHBlZEtleS5lamVjdGVkKCksIFN0b3JhZ2VWYWx1ZU1vZGVzLk5vbndyYXBwZWQpO1xuICAgIH1cbiAgICAvKipcbiAgICAgKiBSZW1vdmVzIHJvb3Qga2V5IHdyYXBwZXIgZnJvbSBsb2NhbCBzdG9yYWdlIGFuZCBzdG9yZXMgcm9vdCBrZXkgYmFyZSBpbiBzZWN1cmUga2V5Y2hhaW4uXG4gICAgICovXG4gICAgYXN5bmMgcmVtb3ZlUm9vdEtleVdyYXBwZXIoKSB7XG4gICAgICAgIGlmICgodGhpcy5rZXlNb2RlICE9PSBLZXlNb2RlLldyYXBwZXJPbmx5ICYmXG4gICAgICAgICAgICB0aGlzLmtleU1vZGUgIT09IEtleU1vZGUuUm9vdEtleVBsdXNXcmFwcGVyKSkge1xuICAgICAgICAgICAgdGhyb3cgJ0F0dGVtcHRpbmcgdG8gcmVtb3ZlIHJvb3Qga2V5IHdyYXBwZXIgb24gdW53cmFwcGVkIGtleS4nO1xuICAgICAgICB9XG4gICAgICAgIGlmICh0aGlzLmtleU1vZGUgPT09IEtleU1vZGUuV3JhcHBlck9ubHkpIHtcbiAgICAgICAgICAgIHRoaXMua2V5TW9kZSA9IEtleU1vZGUuUm9vdEtleU5vbmU7XG4gICAgICAgICAgICB0aGlzLnJvb3RLZXkgPSB1bmRlZmluZWQ7XG4gICAgICAgIH1cbiAgICAgICAgZWxzZSBpZiAodGhpcy5rZXlNb2RlID09PSBLZXlNb2RlLlJvb3RLZXlQbHVzV3JhcHBlcikge1xuICAgICAgICAgICAgdGhpcy5rZXlNb2RlID0gS2V5TW9kZS5Sb290S2V5T25seTtcbiAgICAgICAgfVxuICAgICAgICBhd2FpdCB0aGlzLnN0b3JhZ2VTZXJ2aWNlLnJlbW92ZVZhbHVlKFN0b3JhZ2VLZXkuV3JhcHBlZFJvb3RLZXksIFN0b3JhZ2VWYWx1ZU1vZGVzLk5vbndyYXBwZWQpO1xuICAgICAgICBhd2FpdCB0aGlzLnN0b3JhZ2VTZXJ2aWNlLnJlbW92ZVZhbHVlKFN0b3JhZ2VLZXkuUm9vdEtleVdyYXBwZXJLZXlQYXJhbXMsIFN0b3JhZ2VWYWx1ZU1vZGVzLk5vbndyYXBwZWQpO1xuICAgICAgICBpZiAodGhpcy5rZXlNb2RlID09PSBLZXlNb2RlLlJvb3RLZXlPbmx5KSB7XG4gICAgICAgICAgICBhd2FpdCB0aGlzLnNhdmVSb290S2V5VG9LZXljaGFpbigpO1xuICAgICAgICB9XG4gICAgICAgIGF3YWl0IHRoaXMubm90aWZ5T2JzZXJ2ZXJzT2ZLZXlDaGFuZ2UoKTtcbiAgICB9XG4gICAgLyoqXG4gICAgICogVGhlIHJvb3Qga2V5IGlzIGRpc3RpbmN0IGZyb20gcmVndWxhciBrZXlzIGFuZCBhcmUgb25seSBzYXZlZCBsb2NhbGx5IGluIHRoZSBrZXljaGFpbixcbiAgICAgKiBpbiBub24taXRlbSBmb3JtLiBBcHBsaWNhdGlvbnMgc2V0IHJvb3Qga2V5IG9uIHNpZ24gaW4sIHJlZ2lzdGVyLCBvciBwYXNzd29yZCBjaGFuZ2UuXG4gICAgICogQHBhcmFtIGtleSBBIFNOUm9vdEtleSBvYmplY3QuXG4gICAgICogQHBhcmFtIHdyYXBwaW5nS2V5IElmIGEgcGFzc2NvZGUgaXMgY29uZmlndXJlZCwgdGhlIHdyYXBwaW5nIGtleVxuICAgICAqIG11c3QgYmUgc3VwcGxpZWQsIHNvIHRoYXQgdGhlIG5ldyByb290IGtleSBjYW4gYmUgd3JhcHBlZCB3aXRoIHRoZSB3cmFwcGluZyBrZXkuXG4gICAgICovXG4gICAgYXN5bmMgc2V0TmV3Um9vdEtleShrZXksIGtleVBhcmFtcywgd3JhcHBpbmdLZXkpIHtcbiAgICAgICAgaWYgKCFrZXlQYXJhbXMpIHtcbiAgICAgICAgICAgIHRocm93IEVycm9yKCdrZXlQYXJhbXMgbXVzdCBiZSBzdXBwbGllZCBpZiBzZXR0aW5nIHJvb3Qga2V5LicpO1xuICAgICAgICB9XG4gICAgICAgIGlmICh0aGlzLnJvb3RLZXkgPT09IGtleSkge1xuICAgICAgICAgICAgdGhyb3cgRXJyb3IoJ0F0dGVtcHRpbmcgdG8gc2V0IHJvb3Qga2V5IGFzIHNhbWUgY3VycmVudCB2YWx1ZS4nKTtcbiAgICAgICAgfVxuICAgICAgICBpZiAodGhpcy5rZXlNb2RlID09PSBLZXlNb2RlLldyYXBwZXJPbmx5KSB7XG4gICAgICAgICAgICB0aGlzLmtleU1vZGUgPSBLZXlNb2RlLlJvb3RLZXlQbHVzV3JhcHBlcjtcbiAgICAgICAgfVxuICAgICAgICBlbHNlIGlmICh0aGlzLmtleU1vZGUgPT09IEtleU1vZGUuUm9vdEtleU5vbmUpIHtcbiAgICAgICAgICAgIHRoaXMua2V5TW9kZSA9IEtleU1vZGUuUm9vdEtleU9ubHk7XG4gICAgICAgIH1cbiAgICAgICAgZWxzZSBpZiAoKHRoaXMua2V5TW9kZSA9PT0gS2V5TW9kZS5Sb290S2V5T25seSB8fFxuICAgICAgICAgICAgdGhpcy5rZXlNb2RlID09PSBLZXlNb2RlLlJvb3RLZXlQbHVzV3JhcHBlcikpIHtcbiAgICAgICAgICAgIC8qKiBSb290IGtleSBpcyBzaW1wbHkgY2hhbmdpbmcsIG1vZGUgc3RheXMgdGhlIHNhbWUgKi9cbiAgICAgICAgICAgIC8qKiB0aGlzLmtleU1vZGUgPSB0aGlzLmtleU1vZGU7ICovXG4gICAgICAgIH1cbiAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICB0aHJvdyBFcnJvcihgVW5oYW5kbGVkIGtleSBtb2RlIGZvciBzZXROZXdSb290S2V5ICR7dGhpcy5rZXlNb2RlfWApO1xuICAgICAgICB9XG4gICAgICAgIHRoaXMucm9vdEtleSA9IGtleTtcbiAgICAgICAgYXdhaXQgdGhpcy5zdG9yYWdlU2VydmljZS5zZXRWYWx1ZShTdG9yYWdlS2V5LlJvb3RLZXlQYXJhbXMsIGtleVBhcmFtcy5nZXRQb3J0YWJsZVZhbHVlKCksIFN0b3JhZ2VWYWx1ZU1vZGVzLk5vbndyYXBwZWQpO1xuICAgICAgICBpZiAodGhpcy5rZXlNb2RlID09PSBLZXlNb2RlLlJvb3RLZXlPbmx5KSB7XG4gICAgICAgICAgICBhd2FpdCB0aGlzLnNhdmVSb290S2V5VG9LZXljaGFpbigpO1xuICAgICAgICB9XG4gICAgICAgIGVsc2UgaWYgKHRoaXMua2V5TW9kZSA9PT0gS2V5TW9kZS5Sb290S2V5UGx1c1dyYXBwZXIpIHtcbiAgICAgICAgICAgIGlmICghd3JhcHBpbmdLZXkpIHtcbiAgICAgICAgICAgICAgICB0aHJvdyBFcnJvcignd3JhcHBpbmdLZXkgbXVzdCBiZSBzdXBwbGllZCcpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgYXdhaXQgdGhpcy53cmFwQW5kUGVyc2lzdFJvb3RLZXkod3JhcHBpbmdLZXkpO1xuICAgICAgICB9XG4gICAgICAgIGF3YWl0IHRoaXMubm90aWZ5T2JzZXJ2ZXJzT2ZLZXlDaGFuZ2UoKTtcbiAgICAgICAgYXdhaXQgdGhpcy5yZWVuY3J5cHRJdGVtc0tleXMoKTtcbiAgICB9XG4gICAgLyoqXG4gICAgICogUmV0dXJucyB0aGUgaW4tbWVtb3J5IHJvb3Qga2V5IHZhbHVlLlxuICAgICAqL1xuICAgIGFzeW5jIGdldFJvb3RLZXkoKSB7XG4gICAgICAgIHJldHVybiB0aGlzLnJvb3RLZXk7XG4gICAgfVxuICAgIC8qKlxuICAgICAqIERlbGV0ZXMgcm9vdCBrZXkgYW5kIHdyYXBwZXIgZnJvbSBrZXljaGFpbi4gVXNlZCB3aGVuIHNpZ25pbmcgb3V0IG9mIGFwcGxpY2F0aW9uLlxuICAgICAqL1xuICAgIGFzeW5jIGNsZWFyTG9jYWxLZXlTdGF0ZSgpIHtcbiAgICAgICAgYXdhaXQgdGhpcy5kZXZpY2VJbnRlcmZhY2UuY2xlYXJLZXljaGFpblZhbHVlKCk7XG4gICAgICAgIGF3YWl0IHRoaXMuc3RvcmFnZVNlcnZpY2UucmVtb3ZlVmFsdWUoU3RvcmFnZUtleS5XcmFwcGVkUm9vdEtleSwgU3RvcmFnZVZhbHVlTW9kZXMuTm9ud3JhcHBlZCk7XG4gICAgICAgIGF3YWl0IHRoaXMuc3RvcmFnZVNlcnZpY2UucmVtb3ZlVmFsdWUoU3RvcmFnZUtleS5Sb290S2V5V3JhcHBlcktleVBhcmFtcywgU3RvcmFnZVZhbHVlTW9kZXMuTm9ud3JhcHBlZCk7XG4gICAgICAgIGF3YWl0IHRoaXMuc3RvcmFnZVNlcnZpY2UucmVtb3ZlVmFsdWUoU3RvcmFnZUtleS5Sb290S2V5UGFyYW1zLCBTdG9yYWdlVmFsdWVNb2Rlcy5Ob253cmFwcGVkKTtcbiAgICAgICAgdGhpcy5rZXlNb2RlID0gS2V5TW9kZS5Sb290S2V5Tm9uZTtcbiAgICAgICAgdGhpcy5yb290S2V5ID0gdW5kZWZpbmVkO1xuICAgICAgICBhd2FpdCB0aGlzLm5vdGlmeU9ic2VydmVyc09mS2V5Q2hhbmdlKCk7XG4gICAgfVxuICAgIC8qKlxuICAgICAqIEBwYXJhbSBwYXNzd29yZCAgVGhlIHBhc3N3b3JkIHN0cmluZyB0byBnZW5lcmF0ZSBhIHJvb3Qga2V5IGZyb20uXG4gICAgICovXG4gICAgYXN5bmMgdmFsaWRhdGVBY2NvdW50UGFzc3dvcmQocGFzc3dvcmQpIHtcbiAgICAgICAgY29uc3Qga2V5UGFyYW1zID0gYXdhaXQgdGhpcy5nZXRSb290S2V5UGFyYW1zKCk7XG4gICAgICAgIGNvbnN0IGtleSA9IGF3YWl0IHRoaXMuY29tcHV0ZVJvb3RLZXkocGFzc3dvcmQsIGtleVBhcmFtcyk7XG4gICAgICAgIGNvbnN0IHZhbGlkID0ga2V5LmNvbXBhcmUodGhpcy5yb290S2V5KTtcbiAgICAgICAgaWYgKHZhbGlkKSB7XG4gICAgICAgICAgICByZXR1cm4geyB2YWxpZCwgYXJ0aWZhY3RzOiB7IHJvb3RLZXk6IGtleSB9IH07XG4gICAgICAgIH1cbiAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICByZXR1cm4geyB2YWxpZDogZmFsc2UgfTtcbiAgICAgICAgfVxuICAgIH1cbiAgICAvKipcbiAgICAgKiBAcGFyYW0gcGFzc2NvZGUgIFRoZSBwYXNzY29kZSBzdHJpbmcgdG8gZ2VuZXJhdGUgYSByb290IGtleSBmcm9tLlxuICAgICAqL1xuICAgIGFzeW5jIHZhbGlkYXRlUGFzc2NvZGUocGFzc2NvZGUpIHtcbiAgICAgICAgY29uc3Qga2V5UGFyYW1zID0gYXdhaXQgdGhpcy5nZXRSb290S2V5V3JhcHBlcktleVBhcmFtcygpO1xuICAgICAgICBjb25zdCBrZXkgPSBhd2FpdCB0aGlzLmNvbXB1dGVSb290S2V5KHBhc3Njb2RlLCBrZXlQYXJhbXMpO1xuICAgICAgICBjb25zdCB2YWxpZCA9IGF3YWl0IHRoaXMudmFsaWRhdGVXcmFwcGluZ0tleShrZXkpO1xuICAgICAgICBpZiAodmFsaWQpIHtcbiAgICAgICAgICAgIHJldHVybiB7IHZhbGlkLCBhcnRpZmFjdHM6IHsgd3JhcHBpbmdLZXk6IGtleSB9IH07XG4gICAgICAgIH1cbiAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICByZXR1cm4geyB2YWxpZDogZmFsc2UgfTtcbiAgICAgICAgfVxuICAgIH1cbiAgICAvKipcbiAgICAgKiBPbmx5IHR3byB0eXBlcyBvZiBpdGVtcyBzaG91bGQgYmUgZW5jcnlwdGVkIHdpdGggYSByb290IGtleTpcbiAgICAgKiAtIEFuIFNOSXRlbXNLZXkgb2JqZWN0XG4gICAgICogLSBBbiBlbmNyeXB0ZWQgc3RvcmFnZSBvYmplY3QgKGxvY2FsKVxuICAgICAqL1xuICAgIGNvbnRlbnRUeXBlVXNlc1Jvb3RLZXlFbmNyeXB0aW9uKGNvbnRlbnRUeXBlKSB7XG4gICAgICAgIHJldHVybiAoY29udGVudFR5cGUgPT09IENvbnRlbnRUeXBlLkl0ZW1zS2V5IHx8XG4gICAgICAgICAgICBjb250ZW50VHlwZSA9PT0gQ29udGVudFR5cGUuRW5jcnlwdGVkU3RvcmFnZSk7XG4gICAgfVxuICAgIC8qKlxuICAgICAqIERldGVybWluZXMgd2hpY2gga2V5IHRvIHVzZSBmb3IgZW5jcnlwdGlvbiBvZiB0aGUgcGF5bG9hZFxuICAgICAqIFRoZSBrZXkgb2JqZWN0IHRvIHVzZSBmb3IgZW5jcnlwdGluZyB0aGUgcGF5bG9hZC5cbiAgICAqL1xuICAgIGFzeW5jIGtleVRvVXNlRm9yRW5jcnlwdGlvbk9mUGF5bG9hZChwYXlsb2FkLCBpbnRlbnQpIHtcbiAgICAgICAgaWYgKGlzTnVsbE9yVW5kZWZpbmVkKGludGVudCkpIHtcbiAgICAgICAgICAgIHRocm93ICdJbnRlbnQgbXVzdCBiZSBzdXBwbGllZCB3aGVuIGxvb2tpbmcgdXAga2V5IGZvciBlbmNyeXB0aW9uIG9mIGl0ZW0uJztcbiAgICAgICAgfVxuICAgICAgICBpZiAodGhpcy5jb250ZW50VHlwZVVzZXNSb290S2V5RW5jcnlwdGlvbihwYXlsb2FkLmNvbnRlbnRfdHlwZSkpIHtcbiAgICAgICAgICAgIGNvbnN0IHJvb3RLZXkgPSBhd2FpdCB0aGlzLmdldFJvb3RLZXkoKTtcbiAgICAgICAgICAgIGlmICghcm9vdEtleSkge1xuICAgICAgICAgICAgICAgIGlmIChpbnRlbnRSZXF1aXJlc0VuY3J5cHRpb24oaW50ZW50KSkge1xuICAgICAgICAgICAgICAgICAgICB0aHJvdyAnUm9vdCBrZXkgZW5jcnlwdGlvbiBpcyByZXF1aXJlZCBidXQgbm8gcm9vdCBrZXkgaXMgYXZhaWxhYmxlLic7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICByZXR1cm4gdW5kZWZpbmVkO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHJldHVybiByb290S2V5O1xuICAgICAgICB9XG4gICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgcmV0dXJuIHRoaXMuZ2V0RGVmYXVsdEl0ZW1zS2V5KCk7XG4gICAgICAgIH1cbiAgICB9XG4gICAgLyoqXG4gICAgICogUGF5bG9hZHMgY291bGQgaGF2ZSBiZWVuIHByZXZpb3VzbHkgZW5jcnlwdGVkIHdpdGggYW55IGFyYml0cmFyeSBTTkl0ZW1zS2V5IG9iamVjdC5cbiAgICAgKiBJZiB0aGUgcGF5bG9hZCBpcyBhbiBpdGVtcyBrZXkgb2JqZWN0LCBpdCBpcyBhbHdheXMgZW5jcnlwdGVkIHdpdGggdGhlIHJvb3Qga2V5LFxuICAgICAqIGFuZCBzbyByZXR1cm4gdGhhdC4gT3RoZXJ3aXNlLCB3ZSBjaGVjayB0byBzZWUgaWYgdGhlIHBheWxvYWQgaGFzIGFuXG4gICAgICogaXRlbXNfa2V5X2lkIGFuZCByZXR1cm4gdGhhdCBrZXkuIElmIGl0IGRvZXNuJ3QsIHRoaXMgbWVhbnMgdGhlIHBheWxvYWQgd2FzXG4gICAgICogZW5jcnlwdGVkIHdpdGggbGVnYWN5IGJlaGF2aW9yLiBXZSByZXR1cm4gdGhlbiB0aGUga2V5IG9iamVjdCBjb3JyZXNwb25kaW5nXG4gICAgICogdG8gdGhlIHZlcnNpb24gb2YgdGhpcyBwYXlsb2FkLlxuICAgICAqIEByZXR1cm5zIFRoZSBrZXkgb2JqZWN0IHRvIHVzZSBmb3IgZGVjcnlwdGluZyB0aGlzIHBheWxvYWQuXG4gICAgKi9cbiAgICBhc3luYyBrZXlUb1VzZUZvckRlY3J5cHRpb25PZlBheWxvYWQocGF5bG9hZCkge1xuICAgICAgICBpZiAodGhpcy5jb250ZW50VHlwZVVzZXNSb290S2V5RW5jcnlwdGlvbihwYXlsb2FkLmNvbnRlbnRfdHlwZSkpIHtcbiAgICAgICAgICAgIHJldHVybiB0aGlzLmdldFJvb3RLZXkoKTtcbiAgICAgICAgfVxuICAgICAgICBpZiAocGF5bG9hZC5pdGVtc19rZXlfaWQpIHtcbiAgICAgICAgICAgIGNvbnN0IGl0ZW1zS2V5ID0gdGhpcy5pdGVtc0tleUZvclBheWxvYWQocGF5bG9hZCk7XG4gICAgICAgICAgICByZXR1cm4gaXRlbXNLZXk7XG4gICAgICAgIH1cbiAgICAgICAgY29uc3QgcGF5bG9hZFZlcnNpb24gPSBwYXlsb2FkLnZlcnNpb247XG4gICAgICAgIGlmIChwYXlsb2FkVmVyc2lvbiA9PT0gdGhpcy5nZXRMYXRlc3RWZXJzaW9uKCkpIHtcbiAgICAgICAgICAgIHRocm93ICdObyBhc3NvY2lhdGVkIGtleSBmb3VuZCBmb3IgaXRlbSBlbmNyeXB0ZWQgd2l0aCBsYXRlc3QgcHJvdG9jb2wgdmVyc2lvbi4nO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiB0aGlzLmRlZmF1bHRJdGVtc0tleUZvckl0ZW1WZXJzaW9uKHBheWxvYWRWZXJzaW9uKTtcbiAgICB9XG4gICAgYXN5bmMgb25TeW5jRXZlbnQoZXZlbnROYW1lKSB7XG4gICAgICAgIGlmIChldmVudE5hbWUgPT09IFN5bmNFdmVudC5GdWxsU3luY0NvbXBsZXRlZCkge1xuICAgICAgICAgICAgYXdhaXQgdGhpcy5oYW5kbGVGdWxsU3luY0NvbXBsZXRpb24oKTtcbiAgICAgICAgfVxuICAgICAgICBpZiAoZXZlbnROYW1lID09PSBTeW5jRXZlbnQuRG93bmxvYWRGaXJzdFN5bmNDb21wbGV0ZWQpIHtcbiAgICAgICAgICAgIGF3YWl0IHRoaXMuaGFuZGxlRG93bmxvYWRGaXJzdFN5bmNDb21wbGV0aW9uKCk7XG4gICAgICAgIH1cbiAgICB9XG4gICAgLyoqXG4gICAgICogV2hlbiBhIGRvd25sb2FkLWZpcnN0IHN5bmMgY29tcGxldGVzLCBpdCBtZWFucyB3ZSd2ZSBjb21wbGV0ZWQgYSAocG90ZW50aWFsbHkgbXVsdGlwYWdlKVxuICAgICAqIHN5bmMgd2hlcmUgd2Ugb25seSBkb3dubG9hZGVkIHdoYXQgdGhlIHNlcnZlciBoYWQgYmVmb3JlIHVwbG9hZGluZyBhbnl0aGluZy4gV2Ugd2lsbCBiZVxuICAgICAqIGFsbG93ZWQgdG8gbWFrZSBsb2NhbCBhY2NvbWFkYXRpb25zIGhlcmUgYmVmb3JlIHRoZSBzZXJ2ZXIgYmVnaW5zIHdpdGggdGhlIHVwbG9hZFxuICAgICAqIHBhcnQgb2YgdGhlIHN5bmMgKGF1dG9tYXRpY2FsbHkgcnVucyBhZnRlciBkb3dubG9hZC1maXJzdCBzeW5jIGNvbXBsZXRlcykuXG4gICAgICogV2UgdXNlIHRoaXMgdG8gc2VlIGlmIHRoZSBzZXJ2ZXIgaGFzIGFueSBkZWZhdWx0IGl0ZW1zS2V5cywgYW5kIGlmIHNvLCBhbGxvd3MgdXMgdG9cbiAgICAgKiBkZWxldGUgYW55IG5ldmVyLXN5bmNlZCBpdGVtcyBrZXlzIHdlIGhhdmUgaGVyZSBsb2NhbGx5LlxuICAgICAqL1xuICAgIGFzeW5jIGhhbmRsZURvd25sb2FkRmlyc3RTeW5jQ29tcGxldGlvbigpIHtcbiAgICAgICAgLyoqXG4gICAgICAgICogRmluZCBpdGVtcyBrZXlzIHdpdGggbnVsbCBvciBlcG9jaCB1cGRhdGVkX2F0IHZhbHVlLCBpbmRpY2F0aW5nXG4gICAgICAgICogdGhhdCB0aGV5IGhhdmVuJ3QgYmVlbiBzeW5jZWQgeWV0LlxuICAgICAgICAqL1xuICAgICAgICBjb25zdCBpdGVtc0tleXMgPSB0aGlzLmxhdGVzdEl0ZW1zS2V5cygpO1xuICAgICAgICBjb25zdCBuZXZlclN5bmNlZEtleXMgPSBpdGVtc0tleXMuZmlsdGVyKChrZXkpID0+IHtcbiAgICAgICAgICAgIHJldHVybiBrZXkubmV2ZXJTeW5jZWQ7XG4gICAgICAgIH0pO1xuICAgICAgICAvKipcbiAgICAgICAgKiBGaW5kIGlzRGVmYXVsdCBpdGVtcyBrZXkgdGhhdCBoYXZlIGJlZW4gcHJldmlvdXNseSBzeW5jZWQuXG4gICAgICAgICogSWYgd2UgZmluZCBvbmUsIHRoaXMgbWVhbnMgd2UgY2FuIGRlbGV0ZSBhbnkgbm9uLXN5bmNlZCBrZXlzLlxuICAgICAgICAqL1xuICAgICAgICBjb25zdCBkZWZhdWx0U3luY2VkS2V5ID0gaXRlbXNLZXlzLmZpbmQoKGtleSkgPT4ge1xuICAgICAgICAgICAgcmV0dXJuICFrZXkubmV2ZXJTeW5jZWQgJiYga2V5LmlzRGVmYXVsdDtcbiAgICAgICAgfSk7XG4gICAgICAgIGNvbnN0IGhhc1N5bmNlZEl0ZW1zS2V5ID0gIWlzTnVsbE9yVW5kZWZpbmVkKGRlZmF1bHRTeW5jZWRLZXkpO1xuICAgICAgICBpZiAoaGFzU3luY2VkSXRlbXNLZXkpIHtcbiAgICAgICAgICAgIC8qKiBEZWxldGUgYWxsIG5ldmVyIHN5bmNlZCBrZXlzICovXG4gICAgICAgICAgICBhd2FpdCB0aGlzLml0ZW1NYW5hZ2VyLnNldEl0ZW1zVG9CZURlbGV0ZWQoVXVpZHMobmV2ZXJTeW5jZWRLZXlzKSk7XG4gICAgICAgIH1cbiAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICAvKipcbiAgICAgICAgICAgICAqIE5vIHByZXZpb3VzIHN5bmNlZCBpdGVtcyBrZXkuXG4gICAgICAgICAgICAgKiBXZSBjYW4ga2VlcCB0aGUgb25lKHMpIHdlIGhhdmUsIG9ubHkgaWYgdGhlaXIgdmVyc2lvbiBpcyBlcXVhbCB0byBvdXIgcm9vdCBrZXkgdmVyc2lvbi5cbiAgICAgICAgICAgICAqIElmIHRoZWlyIHZlcnNpb24gaXMgbm90IGVxdWFsIHRvIG91ciByb290IGtleSB2ZXJzaW9uLCBkZWxldGUgdGhlbS4gSWYgd2UgZW5kIHVwIHdpdGggMFxuICAgICAgICAgICAgICogaXRlbXMga2V5cywgY3JlYXRlIGEgbmV3IG9uZS4gICovXG4gICAgICAgICAgICBjb25zdCByb290S2V5ID0gYXdhaXQgdGhpcy5nZXRSb290S2V5KCk7XG4gICAgICAgICAgICBpZiAocm9vdEtleSkge1xuICAgICAgICAgICAgICAgIC8qKiBJZiBuZXZlclN5bmNlZC52ZXJzaW9uICE9IHJvb3RLZXkudmVyc2lvbiwgZGVsZXRlLiAqL1xuICAgICAgICAgICAgICAgIGNvbnN0IHRvRGVsZXRlID0gbmV2ZXJTeW5jZWRLZXlzLmZpbHRlcigoaXRlbXNLZXkpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGl0ZW1zS2V5LnZlcnNpb24gIT09IHJvb3RLZXkudmVyc2lvbjtcbiAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgICAgICBpZiAodG9EZWxldGUubGVuZ3RoID4gMCkge1xuICAgICAgICAgICAgICAgICAgICBhd2FpdCB0aGlzLml0ZW1NYW5hZ2VyLnNldEl0ZW1zVG9CZURlbGV0ZWQoVXVpZHModG9EZWxldGUpKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgaWYgKHRoaXMubGF0ZXN0SXRlbXNLZXlzKCkubGVuZ3RoID09PSAwKSB7XG4gICAgICAgICAgICAgICAgICAgIGF3YWl0IHRoaXMuY3JlYXRlTmV3RGVmYXVsdEl0ZW1zS2V5KCk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfVxuICAgIGFzeW5jIGhhbmRsZUZ1bGxTeW5jQ29tcGxldGlvbigpIHtcbiAgICAgICAgLyoqIEFsd2F5cyBjcmVhdGUgYSBuZXcgaXRlbXMga2V5IGFmdGVyIGZ1bGwgc3luYywgaWYgbm8gaXRlbXMga2V5IGlzIGZvdW5kICovXG4gICAgICAgIGNvbnN0IGN1cnJlbnRJdGVtc0tleSA9IHRoaXMuZ2V0RGVmYXVsdEl0ZW1zS2V5KCk7XG4gICAgICAgIGlmICghY3VycmVudEl0ZW1zS2V5KSB7XG4gICAgICAgICAgICBhd2FpdCB0aGlzLmNyZWF0ZU5ld0RlZmF1bHRJdGVtc0tleSgpO1xuICAgICAgICAgICAgaWYgKHRoaXMua2V5TW9kZSA9PT0gS2V5TW9kZS5XcmFwcGVyT25seSkge1xuICAgICAgICAgICAgICAgIHJldHVybiB0aGlzLnJlcGVyc2lzdEFsbEl0ZW1zKCk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICB9XG4gICAgLyoqXG4gICAgICogSWYgZW5jcnlwdGlvbiBzdGF0dXMgY2hhbmdlcyAoZXNwLiBvbiBtb2JpbGUsIHdoZXJlIGxvY2FsIHN0b3JhZ2UgZW5jcnlwdGlvblxuICAgICAqIGNhbiBiZSBkaXNhYmxlZCksIGNvbnN1bWVycyBtYXkgY2FsbCB0aGlzIGZ1bmN0aW9uIHRvIHJlcGVyc2lzdCBhbGwgaXRlbXMgdG9cbiAgICAgKiBkaXNrIHVzaW5nIGxhdGVzdCBlbmNyeXB0aW9uIHN0YXR1cy5cbiAgICAgKiBAYWNjZXNzIHB1YmxpY1xuICAgICAqL1xuICAgIGFzeW5jIHJlcGVyc2lzdEFsbEl0ZW1zKCkge1xuICAgICAgICBjb25zdCBpdGVtcyA9IHRoaXMuaXRlbU1hbmFnZXIuaXRlbXM7XG4gICAgICAgIGNvbnN0IHBheWxvYWRzID0gaXRlbXMubWFwKChpdGVtKSA9PiBDcmVhdGVNYXhQYXlsb2FkRnJvbUFueU9iamVjdChpdGVtKSk7XG4gICAgICAgIHJldHVybiB0aGlzLnN0b3JhZ2VTZXJ2aWNlLnNhdmVQYXlsb2FkcyhwYXlsb2Fkcyk7XG4gICAgfVxuICAgIC8qKlxuICAgICAqIEByZXR1cm5zIEFsbCBTTnxJdGVtc0tleSBvYmplY3RzIHN5bmNlZCB0byB0aGUgYWNjb3VudC5cbiAgICAgKi9cbiAgICBsYXRlc3RJdGVtc0tleXMoKSB7XG4gICAgICAgIHJldHVybiB0aGlzLml0ZW1NYW5hZ2VyLml0ZW1zS2V5cygpO1xuICAgIH1cbiAgICAvKipcbiAgICAgKiBAcmV0dXJucyBUaGUgaXRlbXMga2V5IHVzZWQgdG8gZW5jcnlwdCB0aGUgcGF5bG9hZFxuICAgICAqL1xuICAgIGl0ZW1zS2V5Rm9yUGF5bG9hZChwYXlsb2FkKSB7XG4gICAgICAgIHJldHVybiB0aGlzLmxhdGVzdEl0ZW1zS2V5cygpLmZpbmQoKGtleSkgPT4ga2V5LnV1aWQgPT09IHBheWxvYWQuaXRlbXNfa2V5X2lkKTtcbiAgICB9XG4gICAgLyoqXG4gICAgICogQHJldHVybnMgVGhlIFNOSXRlbXNLZXkgb2JqZWN0IHRvIHVzZSB0byBlbmNyeXB0IG5ldyBvciB1cGRhdGVkIGl0ZW1zLlxuICAgICAqL1xuICAgIGdldERlZmF1bHRJdGVtc0tleSgpIHtcbiAgICAgICAgY29uc3QgaXRlbXNLZXlzID0gdGhpcy5sYXRlc3RJdGVtc0tleXMoKTtcbiAgICAgICAgaWYgKGl0ZW1zS2V5cy5sZW5ndGggPT09IDEpIHtcbiAgICAgICAgICAgIHJldHVybiBpdGVtc0tleXNbMF07XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIGl0ZW1zS2V5cy5maW5kKChrZXkpID0+IHtcbiAgICAgICAgICAgIHJldHVybiBrZXkuaXNEZWZhdWx0O1xuICAgICAgICB9KTtcbiAgICB9XG4gICAgLyoqXG4gICAgICogV2hlbiB0aGUgcm9vdCBrZXkgY2hhbmdlcyAobm9uLW51bGwgb25seSksIHdlIG11c3QgcmUtZW5jcnlwdCBhbGwgaXRlbXNcbiAgICAgKiBrZXlzIHdpdGggdGhpcyBuZXcgcm9vdCBrZXkgKGJ5IHNpbXBseSByZS1zeW5jaW5nKS5cbiAgICAgKi9cbiAgICBhc3luYyByZWVuY3J5cHRJdGVtc0tleXMoKSB7XG4gICAgICAgIGNvbnN0IGl0ZW1zS2V5cyA9IHRoaXMubGF0ZXN0SXRlbXNLZXlzKCk7XG4gICAgICAgIGlmIChpdGVtc0tleXMubGVuZ3RoID4gMCkge1xuICAgICAgICAgICAgLyoqXG4gICAgICAgICAgICAgKiBEbyBub3QgY2FsbCBzeW5jIGFmdGVyIG1hcmtpbmcgZGlydHkuXG4gICAgICAgICAgICAgKiBSZS1lbmNyeXB0aW5nIGl0ZW1zIGtleXMgaXMgY2FsbGVkIGJ5IGNvbnN1bWVycyB3aG8gaGF2ZSBzcGVjaWZpYyBmbG93cyB3aG9cbiAgICAgICAgICAgICAqIHdpbGwgc3luYyBvbiB0aGVpciBvd24gdGltaW5nXG4gICAgICAgICAgICAgICovXG4gICAgICAgICAgICBhd2FpdCB0aGlzLml0ZW1NYW5hZ2VyLnNldEl0ZW1zRGlydHkoVXVpZHMoaXRlbXNLZXlzKSk7XG4gICAgICAgIH1cbiAgICB9XG4gICAgLyoqXG4gICAgICogV2hlbiBtaWdyYXRpbmcgZnJvbSBub24tU05JdGVtc0tleSBhcmNoaXRlY3R1cmUsIG1hbnkgaXRlbXMgd2lsbCBub3QgaGF2ZSBhXG4gICAgICogcmVsYXRpb25zaGlwIHdpdGggYW55IGtleSBvYmplY3QuIEZvciB0aG9zZSBpdGVtcywgd2UgY2FuIGJlIHN1cmUgdGhhdCBvbmx5IDEga2V5XG4gICAgICogb2JqZWN0IHdpbGwgY29ycmVzcG9uZCB0byB0aGF0IHByb3RvY29sIHZlcnNpb24uXG4gICAgICogQHJldHVybnMgVGhlIFNOSXRlbXNLZXkgb2JqZWN0IHRvIGRlY3J5cHQgaXRlbXMgZW5jcnlwdGVkXG4gICAgICogd2l0aCBwcmV2aW91cyBwcm90b2NvbCB2ZXJzaW9uLlxuICAgICAqL1xuICAgIGFzeW5jIGRlZmF1bHRJdGVtc0tleUZvckl0ZW1WZXJzaW9uKHZlcnNpb24pIHtcbiAgICAgICAgcmV0dXJuIHRoaXMubGF0ZXN0SXRlbXNLZXlzKCkuZmluZCgoa2V5KSA9PiB7XG4gICAgICAgICAgICByZXR1cm4ga2V5LnZlcnNpb24gPT09IHZlcnNpb247XG4gICAgICAgIH0pO1xuICAgIH1cbiAgICAvKipcbiAgICAgKiBDcmVhdGVzIGEgbmV3IHJhbmRvbSBTTkl0ZW1zS2V5IHRvIHVzZSBmb3IgaXRlbSBlbmNyeXB0aW9uLCBhbmQgYWRkcyBpdCB0byBtb2RlbCBtYW5hZ2VtZW50LlxuICAgICAqIENvbnN1bWVyIG11c3QgY2FsbCBzeW5jLiBJZiB0aGUgcHJvdG9jb2wgdmVyc2lvbiA8PSAwMDMsIG9ubHkgb25lIGl0ZW1zIGtleSBzaG91bGQgYmUgY3JlYXRlZCxcbiAgICAgKiBhbmQgaXRzIC5pdGVtc0tleSB2YWx1ZSBzaG91bGQgYmUgZXF1YWwgdG8gdGhlIHJvb3Qga2V5IG1hc3RlcktleSB2YWx1ZS5cbiAgICAgKi9cbiAgICBhc3luYyBjcmVhdGVOZXdEZWZhdWx0SXRlbXNLZXkoKSB7XG4gICAgICAgIGNvbnN0IHJvb3RLZXkgPSAoYXdhaXQgdGhpcy5nZXRSb290S2V5KCkpO1xuICAgICAgICBjb25zdCBvcGVyYXRvclZlcnNpb24gPSByb290S2V5XG4gICAgICAgICAgICA/IHJvb3RLZXkudmVyc2lvblxuICAgICAgICAgICAgOiB0aGlzLmdldExhdGVzdFZlcnNpb24oKTtcbiAgICAgICAgbGV0IGl0ZW1UZW1wbGF0ZTtcbiAgICAgICAgaWYgKGNvbXBhcmVWZXJzaW9ucyhvcGVyYXRvclZlcnNpb24sIExBU1RfTk9OUk9PVF9JVEVNU19LRVlfVkVSU0lPTikgPD0gMCkge1xuICAgICAgICAgICAgLyoqIENyZWF0ZSByb290IGtleSBiYXNlZCBpdGVtcyBrZXkgKi9cbiAgICAgICAgICAgIGNvbnN0IHBheWxvYWQgPSBDcmVhdGVNYXhQYXlsb2FkRnJvbUFueU9iamVjdCh7XG4gICAgICAgICAgICAgICAgdXVpZDogYXdhaXQgVXVpZC5HZW5lcmF0ZVV1aWQoKSxcbiAgICAgICAgICAgICAgICBjb250ZW50X3R5cGU6IENvbnRlbnRUeXBlLkl0ZW1zS2V5LFxuICAgICAgICAgICAgICAgIGNvbnRlbnQ6IEZpbGxJdGVtQ29udGVudCh7XG4gICAgICAgICAgICAgICAgICAgIGl0ZW1zS2V5OiByb290S2V5Lm1hc3RlcktleSxcbiAgICAgICAgICAgICAgICAgICAgZGF0YUF1dGhlbnRpY2F0aW9uS2V5OiByb290S2V5LmRhdGFBdXRoZW50aWNhdGlvbktleSxcbiAgICAgICAgICAgICAgICAgICAgdmVyc2lvbjogb3BlcmF0b3JWZXJzaW9uXG4gICAgICAgICAgICAgICAgfSlcbiAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgaXRlbVRlbXBsYXRlID0gQ3JlYXRlSXRlbUZyb21QYXlsb2FkKHBheWxvYWQpO1xuICAgICAgICB9XG4gICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgLyoqIENyZWF0ZSBpbmRlcGVuZGVudCBpdGVtcyBrZXkgKi9cbiAgICAgICAgICAgIGl0ZW1UZW1wbGF0ZSA9IGF3YWl0IHRoaXMub3BlcmF0b3JGb3JWZXJzaW9uKG9wZXJhdG9yVmVyc2lvbikuY3JlYXRlSXRlbXNLZXkoKTtcbiAgICAgICAgfVxuICAgICAgICBjb25zdCBjdXJyZW50RGVmYXVsdCA9IHRoaXMuZ2V0RGVmYXVsdEl0ZW1zS2V5KCk7XG4gICAgICAgIGlmIChjdXJyZW50RGVmYXVsdCkge1xuICAgICAgICAgICAgYXdhaXQgdGhpcy5pdGVtTWFuYWdlci5jaGFuZ2VJdGVtc0tleShjdXJyZW50RGVmYXVsdC51dWlkLCAobXV0YXRvcikgPT4ge1xuICAgICAgICAgICAgICAgIG11dGF0b3IuaXNEZWZhdWx0ID0gZmFsc2U7XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgfVxuICAgICAgICBjb25zdCBpdGVtc0tleSA9IGF3YWl0IHRoaXMuaXRlbU1hbmFnZXIuaW5zZXJ0SXRlbShpdGVtVGVtcGxhdGUpO1xuICAgICAgICBhd2FpdCB0aGlzLml0ZW1NYW5hZ2VyLmNoYW5nZUl0ZW1zS2V5KGl0ZW1zS2V5LnV1aWQsIChtdXRhdG9yKSA9PiB7XG4gICAgICAgICAgICBtdXRhdG9yLmlzRGVmYXVsdCA9IHRydWU7XG4gICAgICAgIH0pO1xuICAgICAgICByZXR1cm4gaXRlbXNLZXk7XG4gICAgfVxuICAgIGFzeW5jIGNoYW5nZVBhc3N3b3JkKGVtYWlsLCBjdXJyZW50UGFzc3dvcmQsIG5ld1Bhc3N3b3JkLCB3cmFwcGluZ0tleSkge1xuICAgICAgICBjb25zdCBbY3VycmVudFJvb3RLZXksIGN1cnJlbnRLZXlQYXJhbXNdID0gYXdhaXQgUHJvbWlzZS5hbGwoW1xuICAgICAgICAgICAgdGhpcy5nZXRSb290S2V5KCksXG4gICAgICAgICAgICB0aGlzLmdldFJvb3RLZXlQYXJhbXMoKSxcbiAgICAgICAgXSk7XG4gICAgICAgIGNvbnN0IGN1cnJlbnREZWZhdWx0SXRlbXNLZXkgPSB0aGlzLmdldERlZmF1bHRJdGVtc0tleSgpO1xuICAgICAgICBjb25zdCBjb21wdXRlZFJvb3RLZXkgPSBhd2FpdCB0aGlzLmNvbXB1dGVSb290S2V5KGN1cnJlbnRQYXNzd29yZCwgY3VycmVudEtleVBhcmFtcyk7XG4gICAgICAgIGlmICghY3VycmVudFJvb3RLZXkuY29tcGFyZShjb21wdXRlZFJvb3RLZXkpKSB7XG4gICAgICAgICAgICAvKiogUGFzc3dvcmRzIGRvIG5vdCBtYXRjaC4gKi9cbiAgICAgICAgICAgIHJldHVybiBbRXJyb3IoSU5WQUxJRF9QQVNTV09SRCldO1xuICAgICAgICB9XG4gICAgICAgIGNvbnN0IHsga2V5OiBuZXdSb290S2V5LCBrZXlQYXJhbXM6IG5ld0tleVBhcmFtcywgfSA9IGF3YWl0IHRoaXMuY3JlYXRlUm9vdEtleShlbWFpbCwgbmV3UGFzc3dvcmQpO1xuICAgICAgICBhd2FpdCB0aGlzLnNldE5ld1Jvb3RLZXkobmV3Um9vdEtleSwgbmV3S2V5UGFyYW1zLCB3cmFwcGluZ0tleSk7XG4gICAgICAgIGNvbnN0IG5ld0RlZmF1bHRJdGVtc0tleSA9IGF3YWl0IHRoaXMuY3JlYXRlTmV3RGVmYXVsdEl0ZW1zS2V5KCk7XG4gICAgICAgIHJldHVybiBbXG4gICAgICAgICAgICBudWxsLFxuICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgIHByZXZpb3VzUm9vdEtleTogY3VycmVudFJvb3RLZXksXG4gICAgICAgICAgICAgICAgbmV3Um9vdEtleSxcbiAgICAgICAgICAgICAgICBuZXdLZXlQYXJhbXMsXG4gICAgICAgICAgICAgICAgcm9sbGJhY2s6IGFzeW5jICgpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgYXdhaXQgdGhpcy5zZXROZXdSb290S2V5KGN1cnJlbnRSb290S2V5LCBjdXJyZW50S2V5UGFyYW1zLCB3cmFwcGluZ0tleSk7XG4gICAgICAgICAgICAgICAgICAgIGF3YWl0IFByb21pc2UuYWxsKFtcbiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuaXRlbU1hbmFnZXIuc2V0SXRlbVRvQmVEZWxldGVkKG5ld0RlZmF1bHRJdGVtc0tleS51dWlkKSxcbiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuaXRlbU1hbmFnZXIuY2hhbmdlSXRlbShjdXJyZW50RGVmYXVsdEl0ZW1zS2V5LnV1aWQsIChtdXRhdG9yKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbXV0YXRvci5pc0RlZmF1bHQgPSB0cnVlO1xuICAgICAgICAgICAgICAgICAgICAgICAgfSlcbiAgICAgICAgICAgICAgICAgICAgXSk7XG4gICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIH0sXG4gICAgICAgIF07XG4gICAgfVxufVxuIl0sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFEQTtBQUNBOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBMkJBO0FBQUE7QUFDQTtBQUFBO0FBQUE7QUFDQTtBQURBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFBQTtBQUVBO0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQURBO0FBQ0E7QUFDQTtBQUZBO0FBSUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQTFCQTtBQTJCQTtBQUNBO0FBQ0E7QUFDQTtBQS9CQTtBQUFBO0FBQUE7QUErQkE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQTNDQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQ0E7QUFEQTtBQTZDQTtBQTdDQTtBQUFBO0FBQ0E7QUFEQTtBQThDQTtBQTlDQTtBQUFBO0FBQ0E7QUFEQTtBQStDQTtBQUNBO0FBQ0E7QUFqREE7QUFBQTtBQUFBO0FBQUE7QUFDQTtBQWtEQTtBQW5EQTtBQUFBO0FBQ0E7QUFEQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQ0E7QUFxREE7QUF0REE7QUFBQTtBQUNBO0FBREE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUNBO0FBd0RBO0FBekRBO0FBQUE7QUFDQTtBQURBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFDQTtBQTJEQTtBQTVEQTtBQUFBO0FBQ0E7QUFEQTtBQUFBO0FBQ0E7QUFEQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQ0E7QUFEQTtBQUFBO0FBQ0E7QUFEQTtBQWtFQTtBQWxFQTtBQUFBO0FBQ0E7QUFEQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUNBO0FBREE7QUFBQTtBQUFBO0FBQ0E7QUFEQTtBQUFBO0FBc0VBOzs7O0FBdEVBO0FBQUE7QUFBQTtBQTBFQTtBQUNBO0FBQ0E7Ozs7QUE1RUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUNBO0FBREE7QUFnRkE7QUFoRkE7QUFDQTtBQURBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQ0E7QUFEQTtBQUFBO0FBQUE7QUFDQTtBQURBO0FBQUE7QUFtRkE7Ozs7QUFuRkE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUNBO0FBREE7QUF1RkE7QUF2RkE7QUFBQTtBQUNBO0FBREE7QUF3RkE7QUF4RkE7QUFDQTtBQURBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQ0E7QUFEQTtBQUFBO0FBQUE7QUFDQTtBQURBO0FBQUE7QUEyRkE7Ozs7QUEzRkE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUNBO0FBREE7QUErRkE7QUFDQTtBQWhHQTtBQUFBO0FBQUE7QUFBQTtBQUNBO0FBREE7QUFDQTtBQURBO0FBQUE7QUFDQTtBQURBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQ0E7QUFEQTtBQUFBO0FBQUE7QUFDQTtBQURBO0FBQUE7QUFxR0E7Ozs7QUFyR0E7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUNBO0FBREE7QUF5R0E7QUFDQTtBQTFHQTtBQUFBO0FBQUE7QUFBQTtBQUNBO0FBREE7QUFDQTtBQURBO0FBQUE7QUFDQTtBQURBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQ0E7QUFEQTtBQUFBO0FBQUE7QUFDQTtBQURBO0FBQUE7QUErR0E7Ozs7O0FBL0dBO0FBQUE7QUFBQTtBQW9IQTs7Ozs7O0FBTUE7QUFDQTtBQUNBO0FBQ0E7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7OztBQWxJQTtBQUFBO0FBQUE7QUFzSUE7QUFNQTtBQUNBOzs7O0FBN0lBO0FBQUE7QUFBQTtBQWlKQTtBQUNBO0FBQ0E7QUFDQTs7OztBQXBKQTtBQUFBO0FBQUE7QUF1SkE7QUFDQTtBQUFBO0FBSUE7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTs7Ozs7O0FBcEtBO0FBQUE7QUFBQTtBQTBLQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUVBO0FBQ0E7QUFFQTtBQUNBO0FBQ0E7QUF0TEE7QUFBQTtBQUFBO0FBd0xBO0FBQ0E7QUF6TEE7QUFBQTtBQUFBO0FBMkxBO0FBQ0E7QUFDQTtBQUVBO0FBQ0E7QUFFQTtBQUNBO0FBRUE7QUFDQTtBQUVBO0FBQ0E7QUFFQTtBQUNBO0FBQ0E7QUE3TUE7QUFBQTtBQUFBO0FBK01BO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7Ozs7QUF2TkE7QUFBQTtBQUFBO0FBMk5BO0FBQ0E7QUFDQTs7Ozs7QUE3TkE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBa09BO0FBQ0E7QUFuT0E7QUFDQTtBQURBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQ0E7QUFEQTtBQUFBO0FBQUE7QUFDQTtBQURBO0FBQUE7QUFzT0E7Ozs7QUF0T0E7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBME9BO0FBMU9BO0FBQ0E7QUFEQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUNBO0FBREE7QUFBQTtBQUFBO0FBQ0E7QUFEQTtBQUFBO0FBNk9BOzs7OztBQTdPQTtBQUFBO0FBQUE7QUFrUEE7QUFDQTtBQUNBO0FBSUE7QUFDQTtBQUVBO0FBQ0E7QUFFQTtBQUNBO0FBQ0E7QUFFQTtBQUNBO0FBS0E7QUFDQTtBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7Ozs7Ozs7Ozs7OztBQS9RQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUNBO0FBREE7QUFDQTtBQURBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFDQTtBQURBO0FBQ0E7QUFEQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQ0E7QUFEQTtBQUNBO0FBREE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUNBO0FBREE7QUFBQTtBQUNBO0FBREE7QUFxU0E7QUFDQTtBQXRTQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQ0E7QUFEQTtBQUNBO0FBREE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUNBO0FBREE7QUFDQTtBQURBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFDQTtBQURBO0FBQ0E7QUFEQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQ0E7QUFEQTtBQUNBO0FBREE7QUFtVEE7QUFDQTtBQUNBO0FBclRBO0FBQUE7QUFDQTtBQURBO0FBc1RBO0FBQ0E7QUF2VEE7QUFBQTtBQUFBO0FBQUE7QUFDQTtBQURBO0FBQ0E7QUFEQTtBQTBUQTtBQTFUQTtBQUNBO0FBREE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFDQTtBQURBO0FBQUE7QUFBQTtBQUNBO0FBREE7QUFBQTtBQTZUQTs7Ozs7QUE3VEE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUNBO0FBREE7QUFBQTtBQUFBO0FBQUE7QUFrVUE7QUFsVUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUNBO0FBREE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUNBO0FBa1VBO0FBQ0E7QUFwVUE7QUFBQTtBQUNBO0FBREE7QUFxVUE7QUFDQTtBQUNBO0FBdlVBO0FBQUE7QUFBQTtBQUFBO0FBQ0E7QUFEQTtBQUFBO0FBQUE7QUFDQTtBQURBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFDQTtBQURBO0FBQUE7QUFBQTtBQUNBO0FBREE7QUFBQTtBQUFBO0FBQ0E7QUFEQTtBQUFBO0FBQ0E7QUFEQTtBQUFBO0FBQUE7QUFBQTtBQUNBO0FBREE7QUFDQTtBQURBO0FBQUE7QUFDQTtBQURBO0FBQUE7QUFDQTtBQURBO0FBQUE7QUFDQTtBQURBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQ0E7QUFEQTtBQUFBO0FBQUE7QUFDQTtBQURBO0FBQUE7QUEwVUE7Ozs7Ozs7O0FBMVVBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQ0E7QUFEQTtBQUNBO0FBREE7QUFxVkE7QUFDQTtBQXRWQTtBQUFBO0FBQUE7QUFBQTtBQUNBO0FBREE7QUFDQTtBQURBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFDQTtBQURBO0FBQUE7QUFDQTtBQURBO0FBMFZBO0FBQ0E7QUEzVkE7QUFBQTtBQUFBO0FBQUE7QUFDQTtBQURBO0FBNlZBO0FBQ0E7QUFGQTtBQUNBO0FBN1ZBO0FBa1dBO0FBQ0E7QUFDQTtBQXBXQTtBQUFBO0FBQ0E7QUFEQTtBQXFXQTtBQXJXQTtBQUNBO0FBREE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFDQTtBQURBO0FBQUE7QUFBQTtBQUNBO0FBREE7QUFBQTtBQXdXQTs7OztBQXhXQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQ0E7QUFEQTtBQUFBO0FBQUE7QUFBQTtBQTRXQTtBQTVXQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQ0E7QUFEQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQ0E7QUE0V0E7QUFDQTtBQTlXQTtBQUFBO0FBQUE7QUFBQTtBQUNBO0FBOFdBO0FBQ0E7QUFoWEE7QUFDQTtBQURBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFDQTtBQXVYQTtBQXhYQTtBQUNBO0FBREE7QUEyWEE7QUFDQTtBQTVYQTtBQUFBO0FBQUE7QUFBQTtBQUNBO0FBNFhBO0FBN1hBO0FBQ0E7QUFEQTtBQUFBO0FBQUE7QUFBQTtBQUNBO0FBREE7QUFpWUE7QUFDQTtBQWxZQTtBQUFBO0FBQ0E7QUFEQTtBQUFBO0FBQUE7QUFxWUE7QUFDQTtBQUNBO0FBRkE7QUFJQTtBQUNBO0FBMVlBO0FBQUE7QUFBQTtBQUFBO0FBQ0E7QUFEQTtBQUFBO0FBQUE7QUFDQTtBQURBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFDQTtBQURBO0FBQUE7QUFBQTtBQUNBO0FBREE7QUFBQTtBQUFBO0FBQ0E7QUFEQTtBQUFBO0FBQ0E7QUFEQTtBQUFBO0FBQUE7QUFBQTtBQUNBO0FBREE7QUFDQTtBQURBO0FBQUE7QUFDQTtBQURBO0FBQUE7QUFDQTtBQURBO0FBQUE7QUFDQTtBQURBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQ0E7QUFEQTtBQUFBO0FBQUE7QUFDQTtBQURBO0FBQUE7QUE4WUE7Ozs7Ozs7QUE5WUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBcVpBO0FBQ0E7QUF0WkE7QUFBQTtBQUFBO0FBQUE7QUFDQTtBQURBO0FBQ0E7QUFEQTtBQXlaQTtBQUNBO0FBQ0E7QUEzWkE7QUFBQTtBQUNBO0FBREE7QUE0WkE7QUE1WkE7QUFBQTtBQUNBO0FBREE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFDQTtBQURBO0FBQUE7QUFBQTtBQUNBO0FBREE7QUFBQTtBQStaQTs7Ozs7QUEvWkE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBb2FBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQXphQTtBQUFBO0FBQUE7QUFBQTtBQUNBO0FBREE7QUFBQTtBQUNBO0FBREE7QUEyYUE7QUEzYUE7QUFBQTtBQUNBO0FBREE7QUE0YUE7QUE1YUE7QUFBQTtBQUNBO0FBREE7QUErYUE7QUFDQTtBQWhiQTtBQUFBO0FBQ0E7QUFEQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUNBO0FBREE7QUFBQTtBQUFBO0FBQ0E7QUFEQTtBQUFBO0FBbWJBOzs7OztBQW5iQTtBQUFBO0FBQUE7QUF3YkE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTs7Ozs7Ozs7O0FBOWJBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFDQTtBQURBO0FBQUE7QUFBQTtBQUFBO0FBc2NBO0FBQUE7QUFDQTtBQUNBO0FBeGNBO0FBQUE7QUFBQTtBQUFBO0FBQ0E7QUFEQTtBQUNBO0FBREE7QUEyY0E7QUEzY0E7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUNBO0FBREE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUNBO0FBMmNBO0FBQ0E7QUE3Y0E7QUFBQTtBQUFBO0FBQUE7QUFDQTtBQTZjQTtBQUNBO0FBL2NBO0FBQUE7QUFDQTtBQURBO0FBa2RBO0FBbGRBO0FBQUE7QUFDQTtBQURBO0FBbWRBO0FBQ0E7QUFDQTtBQXJkQTtBQUFBO0FBQUE7QUFBQTtBQUNBO0FBREE7QUFBQTtBQUFBO0FBQ0E7QUFEQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQ0E7QUFEQTtBQUFBO0FBQUE7QUFDQTtBQURBO0FBQUE7QUFBQTtBQUNBO0FBREE7QUFBQTtBQUNBO0FBREE7QUFBQTtBQUFBO0FBQUE7QUFDQTtBQURBO0FBQ0E7QUFEQTtBQUFBO0FBQ0E7QUFEQTtBQUFBO0FBQ0E7QUFEQTtBQXVkQTtBQUNBO0FBQUE7QUFBQTtBQURBO0FBdmRBO0FBQUE7QUFDQTtBQURBO0FBMGRBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBOWRBO0FBQ0E7QUFEQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUNBO0FBREE7QUFBQTtBQUFBO0FBQ0E7QUFEQTtBQUFBO0FBaWVBOzs7Ozs7QUFqZUE7QUFBQTtBQUFBO0FBc2VBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBM2VBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFDQTtBQURBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUNBO0FBREE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUNBO0FBNGVBO0FBN2VBO0FBQUE7QUFDQTtBQURBO0FBQUE7QUFBQTtBQUFBO0FBQ0E7QUFEQTtBQUFBO0FBQUE7QUFDQTtBQURBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFDQTtBQURBO0FBQUE7QUFBQTtBQUNBO0FBREE7QUFBQTtBQUFBO0FBQ0E7QUFEQTtBQUFBO0FBQ0E7QUFEQTtBQUFBO0FBQUE7QUFBQTtBQUNBO0FBREE7QUFDQTtBQURBO0FBQUE7QUFDQTtBQURBO0FBQUE7QUFDQTtBQURBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQ0E7QUFEQTtBQUFBO0FBQUE7QUFDQTtBQURBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQ0E7QUFEQTtBQWtmQTtBQUNBO0FBbmZBO0FBQUE7QUFBQTtBQUFBO0FBQ0E7QUFEQTtBQUNBO0FBREE7QUFBQTtBQUFBO0FBQ0E7QUFEQTtBQXNmQTtBQXRmQTtBQUNBO0FBREE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFDQTtBQURBO0FBQUE7QUFBQTtBQUNBO0FBREE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFDQTtBQURBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUNBO0FBREE7QUFDQTtBQURBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFDQTtBQURBO0FBQ0E7QUFEQTtBQWdnQkE7QUFoZ0JBO0FBa2dCQTtBQUNBO0FBQ0E7QUFwZ0JBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQ0E7QUFEQTtBQUFBO0FBQUE7QUFDQTtBQURBO0FBQUE7QUFxZ0JBOzs7O0FBcmdCQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQ0E7QUFEQTtBQXlnQkE7QUF6Z0JBO0FBQ0E7QUFEQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUNBO0FBREE7QUFBQTtBQUFBO0FBQ0E7QUFEQTtBQUFBO0FBNGdCQTs7Ozs7QUE1Z0JBO0FBQUE7QUFBQTtBQWloQkE7QUFFQTtBQUNBOzs7O0FBcGhCQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUNBO0FBREE7QUFBQTtBQUNBO0FBREE7QUFBQTtBQUFBO0FBQUE7QUFDQTtBQURBO0FBQ0E7QUFEQTtBQUFBO0FBQ0E7QUFEQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUNBO0FBREE7QUFBQTtBQUFBO0FBQ0E7QUFEQTtBQUFBO0FBMGhCQTs7OztBQTFoQkE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUNBO0FBREE7QUE4aEJBO0FBQ0E7QUEvaEJBO0FBQUE7QUFBQTtBQUFBO0FBQ0E7QUFEQTtBQUNBO0FBREE7QUFBQTtBQUNBO0FBREE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFDQTtBQURBO0FBQUE7QUFBQTtBQUNBO0FBREE7QUFBQTtBQW9pQkE7Ozs7QUFwaUJBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUNBO0FBREE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFDQTtBQURBO0FBQUE7QUFBQTtBQUNBO0FBREE7QUFBQTtBQTBpQkE7Ozs7QUExaUJBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUNBO0FBREE7QUFDQTtBQURBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFDQTtBQURBO0FBQ0E7QUFEQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQ0E7QUFEQTtBQUNBO0FBREE7QUFBQTtBQUNBO0FBREE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFDQTtBQURBO0FBQUE7QUFBQTtBQUNBO0FBREE7QUFBQTtBQTRqQkE7Ozs7O0FBNWpCQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQ0E7QUFEQTtBQWlrQkE7QUFDQTtBQWxrQkE7QUFBQTtBQUFBO0FBQUE7QUFDQTtBQURBO0FBQ0E7QUFEQTtBQUFBO0FBQ0E7QUFEQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUNBO0FBREE7QUFBQTtBQUFBO0FBQ0E7QUFEQTtBQUFBO0FBdWtCQTs7Ozs7QUF2a0JBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFDQTtBQURBO0FBNGtCQTtBQUNBO0FBN2tCQTtBQUFBO0FBQUE7QUFBQTtBQUNBO0FBREE7QUFDQTtBQURBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFDQTtBQWtsQkE7Ozs7O0FBS0E7QUF4bEJBO0FBQUE7QUFDQTtBQURBO0FBeWxCQTtBQXpsQkE7QUFDQTtBQURBO0FBQUE7QUFDQTtBQURBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQ0E7QUFEQTtBQUFBO0FBQUE7QUFDQTtBQURBO0FBQUE7QUFnbUJBOzs7OztBQWhtQkE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUNBO0FBREE7QUFxbUJBO0FBcm1CQTtBQUFBO0FBQ0E7QUFEQTtBQXNtQkE7QUF0bUJBO0FBQ0E7QUFEQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUNBO0FBREE7QUFBQTtBQUFBO0FBQ0E7QUFEQTtBQUFBO0FBeW1CQTs7Ozs7OztBQXptQkE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFDQTtBQWduQkE7QUFqbkJBO0FBQ0E7QUFEQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQ0E7QUFEQTtBQUNBO0FBREE7QUFBQTtBQUFBO0FBQ0E7QUFEQTtBQXVuQkE7QUFDQTtBQXhuQkE7QUFBQTtBQUNBO0FBREE7QUF5bkJBO0FBQ0E7QUExbkJBO0FBQUE7QUFBQTtBQUFBO0FBQ0E7QUFEQTtBQUNBO0FBREE7QUFBQTtBQUFBO0FBQ0E7QUFEQTtBQThuQkE7QUE5bkJBO0FBQUE7QUFDQTtBQURBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQ0E7QUFEQTtBQUFBO0FBQUE7QUFDQTtBQURBO0FBQUE7QUFrb0JBOzs7Ozs7O0FBbG9CQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFDQTtBQXlvQkE7QUExb0JBO0FBQUE7QUFDQTtBQURBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFDQTtBQTRvQkE7QUE3b0JBO0FBQUE7QUFDQTtBQURBO0FBQUE7QUFDQTtBQURBO0FBQUE7QUFBQTtBQUNBO0FBREE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUNBO0FBREE7QUFBQTtBQUFBO0FBQUE7QUFDQTtBQXFwQkE7QUF0cEJBO0FBQUE7QUFDQTtBQURBO0FBQUE7QUFBQTtBQUNBO0FBREE7QUFBQTtBQUFBO0FBQ0E7QUFEQTtBQUFBO0FBQUE7QUFDQTtBQURBO0FBQUE7QUFBQTtBQUNBO0FBREE7QUFBQTtBQUFBO0FBQ0E7QUFEQTtBQUFBO0FBQ0E7QUFEQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUNBO0FBREE7QUFBQTtBQUFBO0FBQ0E7QUFEQTtBQUFBO0FBbXFCQTs7Ozs7QUFucUJBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQXdxQkE7QUFDQTtBQURBO0FBeHFCQTtBQUFBO0FBQ0E7QUFEQTtBQTJxQkE7QUEzcUJBO0FBQUE7QUFDQTtBQURBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQ0E7QUFEQTtBQUFBO0FBQUE7QUFDQTtBQURBO0FBQUE7QUE4cUJBOzs7O0FBOXFCQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFDQTtBQURBO0FBQ0E7QUFEQTtBQXNyQkE7QUFDQTtBQUNBO0FBQ0E7QUFFQTtBQUNBO0FBQ0E7QUE3ckJBO0FBQUE7QUFDQTtBQURBO0FBQUE7QUFBQTtBQUNBO0FBREE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUNBO0FBREE7QUFBQTtBQUNBO0FBREE7QUFBQTtBQUFBO0FBQ0E7QUFEQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUNBO0FBREE7QUFBQTtBQUFBO0FBQ0E7QUFEQTtBQUFBO0FBb3NCQTs7Ozs7Ozs7QUFwc0JBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUNBO0FBREE7QUFDQTtBQURBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFDQTtBQURBO0FBQ0E7QUFEQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQ0E7QUFrdEJBO0FBbnRCQTtBQUFBO0FBQ0E7QUFEQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQ0E7QUFxdEJBO0FBdHRCQTtBQUFBO0FBQ0E7QUFEQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQ0E7QUFEQTtBQUFBO0FBQ0E7QUFEQTtBQUFBO0FBQ0E7QUFEQTtBQWd1QkE7QUFodUJBO0FBQUE7QUFDQTtBQURBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFDQTtBQURBO0FBQUE7QUFDQTtBQURBO0FBQUE7QUFBQTtBQUNBO0FBREE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUNBO0FBREE7QUFBQTtBQUFBO0FBQUE7QUFDQTtBQURBO0FBQ0E7QUFEQTtBQUFBO0FBQUE7QUFDQTtBQURBO0FBQUE7QUFBQTtBQUNBO0FBREE7QUFBQTtBQUFBO0FBQ0E7QUFEQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUNBO0FBREE7QUFBQTtBQUFBO0FBQ0E7QUFEQTtBQUFBO0FBOHVCQTs7OztBQTl1QkE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQ0E7QUFEQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUNBO0FBREE7QUFBQTtBQUFBO0FBQ0E7QUFEQTtBQUFBO0FBb3ZCQTs7OztBQXB2QkE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFDQTtBQURBO0FBQUE7QUFBQTtBQUNBO0FBREE7QUFBQTtBQUFBO0FBQ0E7QUFEQTtBQUFBO0FBQUE7QUFDQTtBQURBO0FBNHZCQTtBQUNBO0FBN3ZCQTtBQUFBO0FBQ0E7QUFEQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUNBO0FBREE7QUFBQTtBQUFBO0FBQ0E7QUFEQTtBQUFBO0FBZ3dCQTs7OztBQWh3QkE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUNBO0FBREE7QUFvd0JBO0FBcHdCQTtBQUFBO0FBQ0E7QUFEQTtBQXF3QkE7QUFDQTtBQUNBO0FBdndCQTtBQUFBO0FBQUE7QUFBQTtBQUNBO0FBREE7QUF3d0JBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFDQTtBQXp3QkE7QUFBQTtBQTJ3QkE7QUFBQTtBQUNBO0FBNXdCQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUNBO0FBREE7QUFBQTtBQUFBO0FBQ0E7QUFEQTtBQUFBO0FBOHdCQTs7OztBQTl3QkE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUNBO0FBREE7QUFreEJBO0FBbHhCQTtBQUFBO0FBQ0E7QUFEQTtBQW14QkE7QUFueEJBO0FBQUE7QUFDQTtBQURBO0FBb3hCQTtBQUNBO0FBcnhCQTtBQUFBO0FBQUE7QUFBQTtBQUNBO0FBREE7QUFzeEJBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFDQTtBQXZ4QkE7QUFBQTtBQXl4QkE7QUFBQTtBQUNBO0FBMXhCQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUNBO0FBREE7QUFBQTtBQUFBO0FBQ0E7QUFEQTtBQUFBO0FBNHhCQTs7Ozs7O0FBNXhCQTtBQUFBO0FBQUE7QUFreUJBO0FBRUE7QUFDQTs7Ozs7QUFyeUJBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQ0E7QUFEQTtBQUNBO0FBREE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUNBO0FBREE7QUFBQTtBQUNBO0FBREE7QUE4eUJBO0FBQ0E7QUEveUJBO0FBQUE7QUFBQTtBQUFBO0FBQ0E7QUFEQTtBQUFBO0FBQUE7QUFBQTtBQUNBO0FBREE7QUFDQTtBQURBO0FBQUE7QUFDQTtBQURBO0FBQUE7QUFDQTtBQURBO0FBQUE7QUFDQTtBQURBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQ0E7QUFEQTtBQUFBO0FBQUE7QUFDQTtBQURBO0FBQUE7QUE2ekJBOzs7Ozs7Ozs7O0FBN3pCQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUNBO0FBREE7QUFDQTtBQURBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFDQTtBQTAwQkE7QUEzMEJBO0FBQ0E7QUFEQTtBQTgwQkE7QUFDQTtBQS8wQkE7QUFBQTtBQUFBO0FBQUE7QUFDQTtBQURBO0FBQ0E7QUFEQTtBQUFBO0FBQ0E7QUFEQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUNBO0FBREE7QUFBQTtBQUFBO0FBQ0E7QUFEQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQ0E7QUFEQTtBQUFBO0FBQ0E7QUFEQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQ0E7QUFEQTtBQUFBO0FBQ0E7QUFEQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUNBO0FBREE7QUFBQTtBQUFBO0FBQ0E7QUFEQTtBQUFBO0FBNDFCQTs7Ozs7Ozs7O0FBNTFCQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFxMkJBOzs7O0FBSUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7Ozs7QUFJQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBcjNCQTtBQUFBO0FBQUE7QUFBQTtBQUNBO0FBREE7QUFBQTtBQUNBO0FBREE7QUFBQTtBQUFBO0FBQ0E7QUFEQTtBQUFBO0FBQUE7QUFDQTtBQURBO0FBKzNCQTtBQUNBO0FBaDRCQTtBQUFBO0FBQUE7QUFBQTtBQUNBO0FBZzRCQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBcjRCQTtBQUFBO0FBQUE7QUFBQTtBQUNBO0FBREE7QUFBQTtBQUNBO0FBREE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUNBO0FBREE7QUFBQTtBQUNBO0FBREE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFDQTtBQURBO0FBQUE7QUFBQTtBQUNBO0FBREE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQSs0QkE7QUFDQTtBQUNBO0FBajVCQTtBQUFBO0FBQUE7QUFBQTtBQUNBO0FBREE7QUFBQTtBQUNBO0FBREE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUNBO0FBREE7QUFDQTtBQURBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQ0E7QUFEQTtBQUFBO0FBQUE7QUFDQTtBQURBO0FBQUE7QUF3NUJBOzs7Ozs7O0FBeDVCQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUErNUJBO0FBQ0E7QUFBQTtBQUFBO0FBaDZCQTtBQUNBO0FBREE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFDQTtBQURBO0FBQUE7QUFBQTtBQUNBO0FBREE7QUFBQTtBQW02QkE7Ozs7QUFuNkJBO0FBQUE7QUFBQTtBQXU2QkE7QUFDQTtBQUNBOzs7O0FBejZCQTtBQUFBO0FBQUE7QUE2NkJBO0FBQUE7QUFBQTtBQUNBO0FBQ0E7Ozs7QUEvNkJBO0FBQUE7QUFBQTtBQW03QkE7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7Ozs7QUEzN0JBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQWc4QkE7QUFDQTtBQWo4QkE7QUFBQTtBQUFBO0FBQUE7QUFDQTtBQURBO0FBQUE7QUFDQTtBQURBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQ0E7QUFEQTtBQUFBO0FBQUE7QUFDQTtBQURBO0FBQUE7QUEwOEJBOzs7Ozs7OztBQTE4QkE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBbTlCQTtBQUNBO0FBQ0E7QUFyOUJBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQ0E7QUFEQTtBQUFBO0FBQUE7QUFDQTtBQURBO0FBQUE7QUFzOUJBOzs7Ozs7QUF0OUJBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFDQTtBQURBO0FBNDlCQTtBQUNBO0FBQ0E7QUE5OUJBO0FBQUE7QUFBQTtBQUFBO0FBQ0E7QUFEQTtBQUFBO0FBQUE7QUFDQTtBQURBO0FBQUE7QUFBQTtBQUFBO0FBdStCQTtBQUNBO0FBQ0E7QUFIQTtBQXQrQkE7QUFvK0JBO0FBQ0E7QUFDQTtBQXQrQkE7QUFtK0JBO0FBU0E7QUE1K0JBO0FBQUE7QUFDQTtBQURBO0FBQUE7QUFBQTtBQUNBO0FBREE7QUFnL0JBO0FBQ0E7QUFqL0JBO0FBay9CQTtBQUNBO0FBbi9CQTtBQUFBO0FBQUE7QUFBQTtBQUNBO0FBREE7QUFBQTtBQXEvQkE7QUFDQTtBQUNBO0FBdi9CQTtBQUFBO0FBQUE7QUFDQTtBQURBO0FBdy9CQTtBQXgvQkE7QUFBQTtBQTAvQkE7QUFDQTtBQUNBO0FBNS9CQTtBQUFBO0FBQ0E7QUFEQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUNBO0FBREE7QUFBQTtBQUFBO0FBQ0E7QUFEQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUNBO0FBREE7QUFDQTtBQURBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUNBO0FBREE7QUFBQTtBQUFBO0FBKy9CQTtBQUFBO0FBSUE7QUFuZ0NBO0FBQUE7QUFDQTtBQURBO0FBb2dDQTtBQUNBO0FBcmdDQTtBQUFBO0FBQUE7QUFBQTtBQUNBO0FBREE7QUFDQTtBQURBO0FBQUE7QUFBQTtBQUNBO0FBREE7QUFBQTtBQXlnQ0E7QUFBQTtBQXpnQ0E7QUFBQTtBQUNBO0FBREE7QUFBQTtBQUFBO0FBQ0E7QUFEQTtBQTJnQ0E7QUEzZ0NBO0FBK2dDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQ0E7QUFEQTtBQUFBO0FBQUE7QUFLQTtBQUNBO0FBQ0E7QUFQQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUNBO0FBREE7QUFBQTtBQUFBO0FBQ0E7QUFEQTtBQUFBO0FBSkE7QUFDQTtBQS9nQ0E7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFDQTtBQURBO0FBQUE7QUFBQTtBQUNBO0FBREE7QUFBQTtBQUFBO0FBQ0E7QUFEQTtBQUFBIiwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./lib/services/protocol_service.ts\n')},"./lib/services/pure_service.ts":
|
||
/*!**************************************!*\
|
||
!*** ./lib/services/pure_service.ts ***!
|
||
\**************************************/
|
||
/*! exports provided: PureService */function(module,__webpack_exports__,__webpack_require__){"use strict";eval('__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "PureService", function() { return PureService; });\n/* harmony import */ var _babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @babel/runtime/regenerator */ "./node_modules/@babel/runtime/regenerator/index.js");\n/* harmony import */ var _babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var _Lib_utils__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! @Lib/utils */ "./lib/utils.ts");\n\n\nfunction _toConsumableArray(arr) { return _arrayWithoutHoles(arr) || _iterableToArray(arr) || _nonIterableSpread(); }\n\nfunction _nonIterableSpread() { throw new TypeError("Invalid attempt to spread non-iterable instance"); }\n\nfunction _iterableToArray(iter) { if (Symbol.iterator in Object(iter) || Object.prototype.toString.call(iter) === "[object Arguments]") return Array.from(iter); }\n\nfunction _arrayWithoutHoles(arr) { if (Array.isArray(arr)) { for (var i = 0, arr2 = new Array(arr.length); i < arr.length; i++) { arr2[i] = arr[i]; } return arr2; } }\n\nfunction asyncGeneratorStep(gen, resolve, reject, _next, _throw, key, arg) { try { var info = gen[key](arg); var value = info.value; } catch (error) { reject(error); return; } if (info.done) { resolve(value); } else { Promise.resolve(value).then(_next, _throw); } }\n\nfunction _asyncToGenerator(fn) { return function () { var self = this, args = arguments; return new Promise(function (resolve, reject) { var gen = fn.apply(self, args); function _next(value) { asyncGeneratorStep(gen, resolve, reject, _next, _throw, "next", value); } function _throw(err) { asyncGeneratorStep(gen, resolve, reject, _next, _throw, "throw", err); } _next(undefined); }); }; }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } }\n\nfunction _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); } }\n\nfunction _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; }\n\n\nvar PureService = /*#__PURE__*/function () {\n function PureService() {\n _classCallCheck(this, PureService);\n\n this.eventObservers = [];\n this.loggingEnabled = false;\n this.criticalPromises = [];\n }\n\n _createClass(PureService, [{\n key: "addEventObserver",\n value: function addEventObserver(observer) {\n var _this = this;\n\n this.eventObservers.push(observer);\n return function () {\n Object(_Lib_utils__WEBPACK_IMPORTED_MODULE_1__["removeFromArray"])(_this.eventObservers, observer);\n };\n }\n }, {\n key: "notifyEvent",\n value: function () {\n var _notifyEvent = _asyncToGenerator( /*#__PURE__*/_babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0___default.a.mark(function _callee(eventName, data) {\n var _iteratorNormalCompletion, _didIteratorError, _iteratorError, _iterator, _step, observer;\n\n return _babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0___default.a.wrap(function _callee$(_context) {\n while (1) {\n switch (_context.prev = _context.next) {\n case 0:\n _iteratorNormalCompletion = true;\n _didIteratorError = false;\n _iteratorError = undefined;\n _context.prev = 3;\n _iterator = this.eventObservers[Symbol.iterator]();\n\n case 5:\n if (_iteratorNormalCompletion = (_step = _iterator.next()).done) {\n _context.next = 12;\n break;\n }\n\n observer = _step.value;\n _context.next = 9;\n return observer(eventName, data || {});\n\n case 9:\n _iteratorNormalCompletion = true;\n _context.next = 5;\n break;\n\n case 12:\n _context.next = 18;\n break;\n\n case 14:\n _context.prev = 14;\n _context.t0 = _context["catch"](3);\n _didIteratorError = true;\n _iteratorError = _context.t0;\n\n case 18:\n _context.prev = 18;\n _context.prev = 19;\n\n if (!_iteratorNormalCompletion && _iterator.return != null) {\n _iterator.return();\n }\n\n case 21:\n _context.prev = 21;\n\n if (!_didIteratorError) {\n _context.next = 24;\n break;\n }\n\n throw _iteratorError;\n\n case 24:\n return _context.finish(21);\n\n case 25:\n return _context.finish(18);\n\n case 26:\n case "end":\n return _context.stop();\n }\n }\n }, _callee, this, [[3, 14, 18, 26], [19,, 21, 25]]);\n }));\n\n function notifyEvent(_x, _x2) {\n return _notifyEvent.apply(this, arguments);\n }\n\n return notifyEvent;\n }()\n /**\n * Called by application to allow services to momentarily block deinit until\n * sensitive operations complete.\n */\n\n }, {\n key: "blockDeinit",\n value: function () {\n var _blockDeinit = _asyncToGenerator( /*#__PURE__*/_babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0___default.a.mark(function _callee2() {\n return _babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0___default.a.wrap(function _callee2$(_context2) {\n while (1) {\n switch (_context2.prev = _context2.next) {\n case 0:\n _context2.next = 2;\n return Promise.all(this.criticalPromises);\n\n case 2:\n case "end":\n return _context2.stop();\n }\n }\n }, _callee2, this);\n }));\n\n function blockDeinit() {\n return _blockDeinit.apply(this, arguments);\n }\n\n return blockDeinit;\n }()\n /**\n * Called by application before restart.\n * Subclasses should deregister any observers/timers\n */\n\n }, {\n key: "deinit",\n value: function deinit() {\n this.eventObservers.length = 0;\n this.deviceInterface = undefined;\n }\n /**\n * A critical function is one that should block signing out or destroying application\n * session until the crticial function has completed. For example, persisting keys to\n * disk is a critical operation, and should be wrapped in this function call. The\n * parent application instance will await all criticial functions via the `blockDeinit`\n * function before signing out and deiniting.\n */\n\n }, {\n key: "executeCriticalFunction",\n value: function () {\n var _executeCriticalFunction = _asyncToGenerator( /*#__PURE__*/_babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0___default.a.mark(function _callee3(func) {\n var promise;\n return _babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0___default.a.wrap(function _callee3$(_context3) {\n while (1) {\n switch (_context3.prev = _context3.next) {\n case 0:\n promise = func();\n this.criticalPromises.push(promise);\n return _context3.abrupt("return", promise);\n\n case 3:\n case "end":\n return _context3.stop();\n }\n }\n }, _callee3, this);\n }));\n\n function executeCriticalFunction(_x3) {\n return _executeCriticalFunction.apply(this, arguments);\n }\n\n return executeCriticalFunction;\n }()\n /**\n * Application instances will call this function directly when they arrive\n * at a certain migratory state.\n */\n\n }, {\n key: "handleApplicationStage",\n value: function () {\n var _handleApplicationStage = _asyncToGenerator( /*#__PURE__*/_babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0___default.a.mark(function _callee4(stage) {\n return _babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0___default.a.wrap(function _callee4$(_context4) {\n while (1) {\n switch (_context4.prev = _context4.next) {\n case 0:\n case "end":\n return _context4.stop();\n }\n }\n }, _callee4);\n }));\n\n function handleApplicationStage(_x4) {\n return _handleApplicationStage.apply(this, arguments);\n }\n\n return handleApplicationStage;\n }()\n }, {\n key: "log",\n value: function log(message) {\n for (var _len = arguments.length, args = new Array(_len > 1 ? _len - 1 : 0), _key = 1; _key < _len; _key++) {\n args[_key - 1] = arguments[_key];\n }\n\n if (this.loggingEnabled) {\n var date = new Date();\n var timeString = date.toLocaleTimeString().replace(\' PM\', \'\').replace(\' AM\', \'\');\n var string = "".concat(timeString, ".").concat(date.getMilliseconds());\n\n if (args) {\n var _console;\n\n args = args.map(function (arg) {\n if (Array.isArray(arg)) {\n return arg.slice();\n } else {\n return arg;\n }\n });\n\n (_console = console).log.apply(_console, [string, message].concat(_toConsumableArray(args)));\n } else {\n console.log(string, message);\n }\n }\n }\n }]);\n\n return PureService;\n}();//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9saWIvc2VydmljZXMvcHVyZV9zZXJ2aWNlLnRzLmpzIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vU05MaWJyYXJ5Ly4vbGliL3NlcnZpY2VzL3B1cmVfc2VydmljZS50cz85ZDI4Il0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IHJlbW92ZUZyb21BcnJheSB9IGZyb20gJ0BMaWIvdXRpbHMnO1xuZXhwb3J0IGNsYXNzIFB1cmVTZXJ2aWNlIHtcbiAgICBjb25zdHJ1Y3RvcigpIHtcbiAgICAgICAgdGhpcy5ldmVudE9ic2VydmVycyA9IFtdO1xuICAgICAgICB0aGlzLmxvZ2dpbmdFbmFibGVkID0gZmFsc2U7XG4gICAgICAgIHRoaXMuY3JpdGljYWxQcm9taXNlcyA9IFtdO1xuICAgIH1cbiAgICBhZGRFdmVudE9ic2VydmVyKG9ic2VydmVyKSB7XG4gICAgICAgIHRoaXMuZXZlbnRPYnNlcnZlcnMucHVzaChvYnNlcnZlcik7XG4gICAgICAgIHJldHVybiAoKSA9PiB7XG4gICAgICAgICAgICByZW1vdmVGcm9tQXJyYXkodGhpcy5ldmVudE9ic2VydmVycywgb2JzZXJ2ZXIpO1xuICAgICAgICB9O1xuICAgIH1cbiAgICBhc3luYyBub3RpZnlFdmVudChldmVudE5hbWUsIGRhdGEpIHtcbiAgICAgICAgZm9yIChjb25zdCBvYnNlcnZlciBvZiB0aGlzLmV2ZW50T2JzZXJ2ZXJzKSB7XG4gICAgICAgICAgICBhd2FpdCBvYnNlcnZlcihldmVudE5hbWUsIGRhdGEgfHwge30pO1xuICAgICAgICB9XG4gICAgfVxuICAgIC8qKlxuICAgICAqIENhbGxlZCBieSBhcHBsaWNhdGlvbiB0byBhbGxvdyBzZXJ2aWNlcyB0byBtb21lbnRhcmlseSBibG9jayBkZWluaXQgdW50aWxcbiAgICAgKiBzZW5zaXRpdmUgb3BlcmF0aW9ucyBjb21wbGV0ZS5cbiAgICAgKi9cbiAgICBhc3luYyBibG9ja0RlaW5pdCgpIHtcbiAgICAgICAgYXdhaXQgUHJvbWlzZS5hbGwodGhpcy5jcml0aWNhbFByb21pc2VzKTtcbiAgICB9XG4gICAgLyoqXG4gICAgICogQ2FsbGVkIGJ5IGFwcGxpY2F0aW9uIGJlZm9yZSByZXN0YXJ0LlxuICAgICAqIFN1YmNsYXNzZXMgc2hvdWxkIGRlcmVnaXN0ZXIgYW55IG9ic2VydmVycy90aW1lcnNcbiAgICAgKi9cbiAgICBkZWluaXQoKSB7XG4gICAgICAgIHRoaXMuZXZlbnRPYnNlcnZlcnMubGVuZ3RoID0gMDtcbiAgICAgICAgdGhpcy5kZXZpY2VJbnRlcmZhY2UgPSB1bmRlZmluZWQ7XG4gICAgfVxuICAgIC8qKlxuICAgICAqIEEgY3JpdGljYWwgZnVuY3Rpb24gaXMgb25lIHRoYXQgc2hvdWxkIGJsb2NrIHNpZ25pbmcgb3V0IG9yIGRlc3Ryb3lpbmcgYXBwbGljYXRpb25cbiAgICAgKiBzZXNzaW9uIHVudGlsIHRoZSBjcnRpY2lhbCBmdW5jdGlvbiBoYXMgY29tcGxldGVkLiBGb3IgZXhhbXBsZSwgcGVyc2lzdGluZyBrZXlzIHRvXG4gICAgICogZGlzayBpcyBhIGNyaXRpY2FsIG9wZXJhdGlvbiwgYW5kIHNob3VsZCBiZSB3cmFwcGVkIGluIHRoaXMgZnVuY3Rpb24gY2FsbC4gVGhlXG4gICAgICogcGFyZW50IGFwcGxpY2F0aW9uIGluc3RhbmNlIHdpbGwgYXdhaXQgYWxsIGNyaXRpY2lhbCBmdW5jdGlvbnMgdmlhIHRoZSBgYmxvY2tEZWluaXRgXG4gICAgICogZnVuY3Rpb24gYmVmb3JlIHNpZ25pbmcgb3V0IGFuZCBkZWluaXRpbmcuXG4gICAgICovXG4gICAgYXN5bmMgZXhlY3V0ZUNyaXRpY2FsRnVuY3Rpb24oZnVuYykge1xuICAgICAgICBjb25zdCBwcm9taXNlID0gZnVuYygpO1xuICAgICAgICB0aGlzLmNyaXRpY2FsUHJvbWlzZXMucHVzaChwcm9taXNlKTtcbiAgICAgICAgcmV0dXJuIHByb21pc2U7XG4gICAgfVxuICAgIC8qKlxuICAgICogQXBwbGljYXRpb24gaW5zdGFuY2VzIHdpbGwgY2FsbCB0aGlzIGZ1bmN0aW9uIGRpcmVjdGx5IHdoZW4gdGhleSBhcnJpdmVcbiAgICAqIGF0IGEgY2VydGFpbiBtaWdyYXRvcnkgc3RhdGUuXG4gICAgKi9cbiAgICBhc3luYyBoYW5kbGVBcHBsaWNhdGlvblN0YWdlKHN0YWdlKSB7XG4gICAgfVxuICAgIGxvZyhtZXNzYWdlLCAuLi5hcmdzKSB7XG4gICAgICAgIGlmICh0aGlzLmxvZ2dpbmdFbmFibGVkKSB7XG4gICAgICAgICAgICBjb25zdCBkYXRlID0gbmV3IERhdGUoKTtcbiAgICAgICAgICAgIGNvbnN0IHRpbWVTdHJpbmcgPSBkYXRlLnRvTG9jYWxlVGltZVN0cmluZygpLnJlcGxhY2UoJyBQTScsICcnKS5yZXBsYWNlKCcgQU0nLCAnJyk7XG4gICAgICAgICAgICBjb25zdCBzdHJpbmcgPSBgJHt0aW1lU3RyaW5nfS4ke2RhdGUuZ2V0TWlsbGlzZWNvbmRzKCl9YDtcbiAgICAgICAgICAgIGlmIChhcmdzKSB7XG4gICAgICAgICAgICAgICAgYXJncyA9IGFyZ3MubWFwKChhcmcpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgaWYgKEFycmF5LmlzQXJyYXkoYXJnKSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGFyZy5zbGljZSgpO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGFyZztcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICAgIGNvbnNvbGUubG9nKHN0cmluZywgbWVzc2FnZSwgLi4uYXJncyk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgICAgICBjb25zb2xlLmxvZyhzdHJpbmcsIG1lc3NhZ2UpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfVxufVxuIl0sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBQUE7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFOQTtBQUFBO0FBQUE7QUFNQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQVhBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFDQTtBQURBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUNBO0FBREE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUNBO0FBWUE7QUFiQTtBQUFBO0FBQ0E7QUFEQTtBQUFBO0FBQUE7QUFBQTtBQUNBO0FBREE7QUFBQTtBQUFBO0FBQ0E7QUFEQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQ0E7QUFEQTtBQUFBO0FBQUE7QUFDQTtBQURBO0FBQUE7QUFBQTtBQUNBO0FBREE7QUFBQTtBQUNBO0FBREE7QUFBQTtBQUFBO0FBQUE7QUFDQTtBQURBO0FBQ0E7QUFEQTtBQUFBO0FBQ0E7QUFEQTtBQUFBO0FBQ0E7QUFEQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUNBO0FBREE7QUFBQTtBQUFBO0FBQ0E7QUFEQTtBQUFBO0FBaUJBOzs7OztBQWpCQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUNBO0FBREE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFDQTtBQURBO0FBQUE7QUFBQTtBQUNBO0FBREE7QUFBQTtBQXdCQTs7Ozs7QUF4QkE7QUFBQTtBQUFBO0FBNkJBO0FBQ0E7QUFDQTtBQUNBOzs7Ozs7OztBQWhDQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUF3Q0E7QUFDQTtBQXpDQTtBQUNBO0FBREE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFDQTtBQURBO0FBQUE7QUFBQTtBQUNBO0FBREE7QUFBQTtBQTRDQTs7Ozs7QUE1Q0E7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUNBO0FBREE7QUFBQTtBQUFBO0FBQ0E7QUFEQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBa0RBO0FBQUE7QUFBQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQUE7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUF0RUE7QUFDQTtBQURBO0FBQUEiLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./lib/services/pure_service.ts\n')},"./lib/services/singleton_manager.ts":
|
||
/*!*******************************************!*\
|
||
!*** ./lib/services/singleton_manager.ts ***!
|
||
\*******************************************/
|
||
/*! exports provided: SNSingletonManager */function(module,__webpack_exports__,__webpack_require__){"use strict";eval('__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "SNSingletonManager", function() { return SNSingletonManager; });\n/* harmony import */ var _babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @babel/runtime/regenerator */ "./node_modules/@babel/runtime/regenerator/index.js");\n/* harmony import */ var _babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var _models_content_types__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./../models/content_types */ "./lib/models/content_types.ts");\n/* harmony import */ var _Models_core_item__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! @Models/core/item */ "./lib/models/core/item.ts");\n/* harmony import */ var _Lib_services_pure_service__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! @Lib/services/pure_service */ "./lib/services/pure_service.ts");\n/* harmony import */ var _Lib_utils__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! @Lib/utils */ "./lib/utils.ts");\n/* harmony import */ var _Payloads_generator__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! @Payloads/generator */ "./lib/protocol/payloads/generator.ts");\n/* harmony import */ var _Lib_uuid__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! @Lib/uuid */ "./lib/uuid.ts");\n/* harmony import */ var _Services_sync_events__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! @Services/sync/events */ "./lib/services/sync/events.ts");\n/* harmony import */ var _Models_functions__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! @Models/functions */ "./lib/models/functions.ts");\n\n\nfunction _typeof(obj) { "@babel/helpers - typeof"; if (typeof Symbol === "function" && typeof Symbol.iterator === "symbol") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }; } return _typeof(obj); }\n\nfunction asyncGeneratorStep(gen, resolve, reject, _next, _throw, key, arg) { try { var info = gen[key](arg); var value = info.value; } catch (error) { reject(error); return; } if (info.done) { resolve(value); } else { Promise.resolve(value).then(_next, _throw); } }\n\nfunction _asyncToGenerator(fn) { return function () { var self = this, args = arguments; return new Promise(function (resolve, reject) { var gen = fn.apply(self, args); function _next(value) { asyncGeneratorStep(gen, resolve, reject, _next, _throw, "next", value); } function _throw(err) { asyncGeneratorStep(gen, resolve, reject, _next, _throw, "throw", err); } _next(undefined); }); }; }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } }\n\nfunction _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); } }\n\nfunction _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; }\n\nfunction _possibleConstructorReturn(self, call) { if (call && (_typeof(call) === "object" || typeof call === "function")) { return call; } return _assertThisInitialized(self); }\n\nfunction _assertThisInitialized(self) { if (self === void 0) { throw new ReferenceError("this hasn\'t been initialised - super() hasn\'t been called"); } return self; }\n\nfunction _get(target, property, receiver) { if (typeof Reflect !== "undefined" && Reflect.get) { _get = Reflect.get; } else { _get = function _get(target, property, receiver) { var base = _superPropBase(target, property); if (!base) return; var desc = Object.getOwnPropertyDescriptor(base, property); if (desc.get) { return desc.get.call(receiver); } return desc.value; }; } return _get(target, property, receiver || target); }\n\nfunction _superPropBase(object, property) { while (!Object.prototype.hasOwnProperty.call(object, property)) { object = _getPrototypeOf(object); if (object === null) break; } return object; }\n\nfunction _getPrototypeOf(o) { _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function _getPrototypeOf(o) { return o.__proto__ || Object.getPrototypeOf(o); }; return _getPrototypeOf(o); }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== "function" && superClass !== null) { throw new TypeError("Super expression must either be null or a function"); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, writable: true, configurable: true } }); if (superClass) _setPrototypeOf(subClass, superClass); }\n\nfunction _setPrototypeOf(o, p) { _setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) { o.__proto__ = p; return o; }; return _setPrototypeOf(o, p); }\n\n\n\n\n\n\n\n\n\n/**\n * The singleton manager allow consumers to ensure that only 1 item exists of a certain\n * predicate. For example, consumers may want to ensure that only one item of contentType\n * UserPreferences exist. The singleton manager allows consumers to do this via 2 methods:\n * 1. Consumers may use `findOrCreateSingleton` to retrieve an item if it exists, or create\n * it otherwise. While this method may serve most cases, it does not allow the consumer\n * to subscribe to changes, such as if after this method is called, a UserPreferences object\n * is downloaded from a remote source.\n * 2. Consumers may use `registerPredicate` in order to constantly monitor a particular\n * predicate and ensure that only 1 value exists for that predicate. This may be used in\n * tandem with `findOrCreateSingleton`, for example to monitor a predicate after we\n * intitially create the item.\n */\n\nvar SNSingletonManager = /*#__PURE__*/function (_PureService) {\n _inherits(SNSingletonManager, _PureService);\n\n function SNSingletonManager(itemManager, syncService) {\n var _this;\n\n _classCallCheck(this, SNSingletonManager);\n\n _this = _possibleConstructorReturn(this, _getPrototypeOf(SNSingletonManager).call(this));\n _this.resolveQueue = [];\n _this.registeredPredicates = [];\n _this.itemManager = itemManager;\n _this.syncService = syncService;\n\n _this.addObservers();\n\n return _this;\n }\n\n _createClass(SNSingletonManager, [{\n key: "deinit",\n value: function deinit() {\n this.syncService = undefined;\n this.itemManager = undefined;\n this.resolveQueue.length = 0;\n this.registeredPredicates.length = 0;\n this.removeItemObserver();\n this.removeItemObserver = undefined;\n this.removeSyncObserver();\n this.removeSyncObserver = undefined;\n\n _get(_getPrototypeOf(SNSingletonManager.prototype), "deinit", this).call(this);\n }\n }, {\n key: "popResolveQueue",\n value: function popResolveQueue() {\n var queue = this.resolveQueue.slice();\n this.resolveQueue = [];\n return queue;\n }\n /**\n * We only want to resolve singletons for items that are newly created (because this\n * is when items proliferate). However, we don\'t want to resolve immediately on creation,\n * but instead wait for the next full sync to complete. This is so that when you download\n * a singleton and create the object, but the items key for the item has not yet been\n * downloaded, the singleton will be errorDecrypting, and would be mishandled in the\n * overall singleton logic. By waiting for a full sync to complete, we can be sure that\n * all items keys have been downloaded.\n */\n\n }, {\n key: "addObservers",\n value: function addObservers() {\n var _this2 = this;\n\n this.removeItemObserver = this.itemManager.addObserver(_models_content_types__WEBPACK_IMPORTED_MODULE_1__["ContentType"].Any, function (_, inserted) {\n if (inserted.length > 0) {\n _this2.resolveQueue = _this2.resolveQueue.concat(inserted);\n }\n });\n this.removeSyncObserver = this.syncService.addEventObserver( /*#__PURE__*/function () {\n var _ref = _asyncToGenerator( /*#__PURE__*/_babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0___default.a.mark(function _callee(eventName) {\n return _babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0___default.a.wrap(function _callee$(_context) {\n while (1) {\n switch (_context.prev = _context.next) {\n case 0:\n if (!(eventName === _Services_sync_events__WEBPACK_IMPORTED_MODULE_7__["SyncEvent"].DownloadFirstSyncCompleted || eventName === _Services_sync_events__WEBPACK_IMPORTED_MODULE_7__["SyncEvent"].FullSyncCompleted)) {\n _context.next = 3;\n break;\n }\n\n _context.next = 3;\n return _this2.resolveSingletonsForItems(_this2.popResolveQueue(), eventName);\n\n case 3:\n case "end":\n return _context.stop();\n }\n }\n }, _callee);\n }));\n\n return function (_x) {\n return _ref.apply(this, arguments);\n };\n }());\n }\n /**\n * Predicates registered are automatically observed. If global item state changes\n * such that the item(s) match the predicate, procedures will be followed such that\n * the end result is that only 1 item remains, and the others are deleted.\n */\n\n }, {\n key: "registerPredicate",\n value: function registerPredicate(predicate) {\n this.registeredPredicates.push(predicate);\n }\n }, {\n key: "validItemsMatchingPredicate",\n value: function validItemsMatchingPredicate(predicate) {\n return this.itemManager.itemsMatchingPredicate(predicate).filter(function (item) {\n return !item.errorDecrypting;\n });\n }\n }, {\n key: "resolveSingletonsForItems",\n value: function () {\n var _resolveSingletonsForItems = _asyncToGenerator( /*#__PURE__*/_babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0___default.a.mark(function _callee2(items, eventSource) {\n var _this3 = this;\n\n var matchesForRegisteredPredicate, matchesForSelfPredicate, matches, handled, _iteratorNormalCompletion2, _didIteratorError2, _iteratorError2, _iterator2, _step2, item, matchingItems;\n\n return _babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0___default.a.wrap(function _callee2$(_context2) {\n while (1) {\n switch (_context2.prev = _context2.next) {\n case 0:\n matchesForRegisteredPredicate = function matchesForRegisteredPredicate(item) {\n var _iteratorNormalCompletion = true;\n var _didIteratorError = false;\n var _iteratorError = undefined;\n\n try {\n for (var _iterator = _this3.registeredPredicates[Symbol.iterator](), _step; !(_iteratorNormalCompletion = (_step = _iterator.next()).done); _iteratorNormalCompletion = true) {\n var predicate = _step.value;\n\n if (item.satisfiesPredicate(predicate)) {\n return _this3.validItemsMatchingPredicate(predicate);\n }\n }\n } catch (err) {\n _didIteratorError = true;\n _iteratorError = err;\n } finally {\n try {\n if (!_iteratorNormalCompletion && _iterator.return != null) {\n _iterator.return();\n }\n } finally {\n if (_didIteratorError) {\n throw _iteratorError;\n }\n }\n }\n };\n\n matchesForSelfPredicate = function matchesForSelfPredicate(item) {\n if (!item.isSingleton) {\n return null;\n }\n\n return _this3.validItemsMatchingPredicate(item.singletonPredicate);\n };\n\n matches = function matches(item) {\n var selfMatches = matchesForSelfPredicate(item);\n\n if (selfMatches && selfMatches.length > 0) {\n return selfMatches;\n }\n\n return matchesForRegisteredPredicate(item);\n };\n\n handled = [];\n _iteratorNormalCompletion2 = true;\n _didIteratorError2 = false;\n _iteratorError2 = undefined;\n _context2.prev = 7;\n _iterator2 = items[Symbol.iterator]();\n\n case 9:\n if (_iteratorNormalCompletion2 = (_step2 = _iterator2.next()).done) {\n _context2.next = 22;\n break;\n }\n\n item = _step2.value;\n\n if (!handled.includes(item)) {\n _context2.next = 13;\n break;\n }\n\n return _context2.abrupt("continue", 19);\n\n case 13:\n matchingItems = matches(item);\n Object(_Lib_utils__WEBPACK_IMPORTED_MODULE_4__["extendArray"])(handled, matchingItems || []);\n\n if (!(!matchingItems || matchingItems.length <= 1)) {\n _context2.next = 17;\n break;\n }\n\n return _context2.abrupt("continue", 19);\n\n case 17:\n _context2.next = 19;\n return this.handleStrategy(matchingItems, item.singletonStrategy);\n\n case 19:\n _iteratorNormalCompletion2 = true;\n _context2.next = 9;\n break;\n\n case 22:\n _context2.next = 28;\n break;\n\n case 24:\n _context2.prev = 24;\n _context2.t0 = _context2["catch"](7);\n _didIteratorError2 = true;\n _iteratorError2 = _context2.t0;\n\n case 28:\n _context2.prev = 28;\n _context2.prev = 29;\n\n if (!_iteratorNormalCompletion2 && _iterator2.return != null) {\n _iterator2.return();\n }\n\n case 31:\n _context2.prev = 31;\n\n if (!_didIteratorError2) {\n _context2.next = 34;\n break;\n }\n\n throw _iteratorError2;\n\n case 34:\n return _context2.finish(31);\n\n case 35:\n return _context2.finish(28);\n\n case 36:\n /**\n * Only sync if event source is FullSyncCompleted.\n * If it is on DownloadFirstSyncCompleted, we don\'t need to sync,\n * as a sync request will automatically be made as part of the second phase\n * of a download-first request.\n */\n if (handled.length > 0 && eventSource === _Services_sync_events__WEBPACK_IMPORTED_MODULE_7__["SyncEvent"].FullSyncCompleted) {\n /**\n * Do not await. We want any local-side changes to\n * be awaited but the actual sync shouldn\'t be since it\'s non-essential\n * Perform after timeout so that we can yield to event notifier that triggered us\n */\n setTimeout(function () {\n _this3.syncService.sync();\n });\n }\n\n case 37:\n case "end":\n return _context2.stop();\n }\n }\n }, _callee2, this, [[7, 24, 28, 36], [29,, 31, 35]]);\n }));\n\n function resolveSingletonsForItems(_x2, _x3) {\n return _resolveSingletonsForItems.apply(this, arguments);\n }\n\n return resolveSingletonsForItems;\n }()\n }, {\n key: "handleStrategy",\n value: function () {\n var _handleStrategy = _asyncToGenerator( /*#__PURE__*/_babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0___default.a.mark(function _callee3(items, strategy) {\n var earliestFirst, deleteItems;\n return _babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0___default.a.wrap(function _callee3$(_context3) {\n while (1) {\n switch (_context3.prev = _context3.next) {\n case 0:\n if (!(strategy !== _Models_core_item__WEBPACK_IMPORTED_MODULE_2__["SingletonStrategy"].KeepEarliest)) {\n _context3.next = 2;\n break;\n }\n\n throw \'Unhandled singleton strategy\';\n\n case 2:\n earliestFirst = items.sort(function (a, b) {\n /** -1: a comes first, 1: b comes first */\n if (a.errorDecrypting) {\n return 1;\n }\n\n if (b.errorDecrypting) {\n return -1;\n }\n\n return a.created_at < b.created_at ? -1 : 1;\n });\n deleteItems = Object(_Lib_utils__WEBPACK_IMPORTED_MODULE_4__["arrayByRemovingFromIndex"])(earliestFirst, 0);\n _context3.next = 6;\n return this.itemManager.setItemsToBeDeleted(Object(_Models_functions__WEBPACK_IMPORTED_MODULE_8__["Uuids"])(deleteItems));\n\n case 6:\n case "end":\n return _context3.stop();\n }\n }\n }, _callee3, this);\n }));\n\n function handleStrategy(_x4, _x5) {\n return _handleStrategy.apply(this, arguments);\n }\n\n return handleStrategy;\n }()\n }, {\n key: "findOrCreateSingleton",\n value: function () {\n var _findOrCreateSingleton = _asyncToGenerator( /*#__PURE__*/_babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0___default.a.mark(function _callee5(predicate, createContentType, createContent) {\n var _this4 = this;\n\n return _babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0___default.a.wrap(function _callee5$(_context5) {\n while (1) {\n switch (_context5.prev = _context5.next) {\n case 0:\n return _context5.abrupt("return", new Promise( /*#__PURE__*/function () {\n var _ref2 = _asyncToGenerator( /*#__PURE__*/_babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0___default.a.mark(function _callee4(resolve) {\n var matchingItems, didResolve, removeObserver, refreshedItems, errorDecrypting, dirtyPayload, item;\n return _babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0___default.a.wrap(function _callee4$(_context4) {\n while (1) {\n switch (_context4.prev = _context4.next) {\n case 0:\n matchingItems = _this4.validItemsMatchingPredicate(predicate);\n\n if (!(matchingItems.length > 0)) {\n _context4.next = 3;\n break;\n }\n\n return _context4.abrupt("return", resolve(matchingItems[0]));\n\n case 3:\n if (_this4.syncService.getLastSyncDate()) {\n _context4.next = 14;\n break;\n }\n\n /** Add a temporary observer in case of long-running sync request, where\n * the item we\'re looking for ends up resolving early or in the middle. */\n didResolve = false;\n removeObserver = _this4.itemManager.addObserver(createContentType, function (_, inserted) {\n if (inserted.length > 0) {\n var _matchingItems = _this4.itemManager.subItemsMatchingPredicates(inserted, [predicate]);\n\n if (_matchingItems.length > 0) {\n didResolve = true;\n resolve(_matchingItems[0]);\n }\n }\n });\n _context4.next = 8;\n return _this4.syncService.sync();\n\n case 8:\n removeObserver();\n\n if (!didResolve) {\n _context4.next = 11;\n break;\n }\n\n return _context4.abrupt("return");\n\n case 11:\n /** Check again */\n refreshedItems = _this4.validItemsMatchingPredicate(predicate);\n\n if (!(refreshedItems.length > 0)) {\n _context4.next = 14;\n break;\n }\n\n return _context4.abrupt("return", resolve(refreshedItems[0]));\n\n case 14:\n /** Delete any items that are errored */\n errorDecrypting = _this4.itemManager.itemsMatchingPredicate(predicate).filter(function (item) {\n return item.errorDecrypting;\n });\n _context4.next = 17;\n return _this4.itemManager.setItemsToBeDeleted(Object(_Models_functions__WEBPACK_IMPORTED_MODULE_8__["Uuids"])(errorDecrypting));\n\n case 17:\n _context4.t0 = _Payloads_generator__WEBPACK_IMPORTED_MODULE_5__["CreateMaxPayloadFromAnyObject"];\n _context4.next = 20;\n return _Lib_uuid__WEBPACK_IMPORTED_MODULE_6__["Uuid"].GenerateUuid();\n\n case 20:\n _context4.t1 = _context4.sent;\n _context4.t2 = createContentType;\n _context4.t3 = createContent;\n _context4.t4 = new Date();\n _context4.t5 = {\n uuid: _context4.t1,\n content_type: _context4.t2,\n content: _context4.t3,\n dirty: true,\n dirtiedDate: _context4.t4\n };\n dirtyPayload = (0, _context4.t0)(_context4.t5);\n _context4.next = 28;\n return _this4.itemManager.emitItemFromPayload(dirtyPayload);\n\n case 28:\n item = _context4.sent;\n\n if (item) {\n _context4.next = 31;\n break;\n }\n\n throw Error("Created singleton item should not be null ".concat(createContentType));\n\n case 31:\n _context4.next = 33;\n return _this4.syncService.sync();\n\n case 33:\n return _context4.abrupt("return", resolve(item));\n\n case 34:\n case "end":\n return _context4.stop();\n }\n }\n }, _callee4);\n }));\n\n return function (_x9) {\n return _ref2.apply(this, arguments);\n };\n }()));\n\n case 1:\n case "end":\n return _context5.stop();\n }\n }\n }, _callee5);\n }));\n\n function findOrCreateSingleton(_x6, _x7, _x8) {\n return _findOrCreateSingleton.apply(this, arguments);\n }\n\n return findOrCreateSingleton;\n }()\n }]);\n\n return SNSingletonManager;\n}(_Lib_services_pure_service__WEBPACK_IMPORTED_MODULE_3__["PureService"]);//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9saWIvc2VydmljZXMvc2luZ2xldG9uX21hbmFnZXIudHMuanMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly9TTkxpYnJhcnkvLi9saWIvc2VydmljZXMvc2luZ2xldG9uX21hbmFnZXIudHM/ZmQ1OSJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb250ZW50VHlwZSB9IGZyb20gJy4vLi4vbW9kZWxzL2NvbnRlbnRfdHlwZXMnO1xuaW1wb3J0IHsgU2luZ2xldG9uU3RyYXRlZ3kgfSBmcm9tICdATW9kZWxzL2NvcmUvaXRlbSc7XG5pbXBvcnQgeyBQdXJlU2VydmljZSB9IGZyb20gJ0BMaWIvc2VydmljZXMvcHVyZV9zZXJ2aWNlJztcbmltcG9ydCB7IGFycmF5QnlSZW1vdmluZ0Zyb21JbmRleCwgZXh0ZW5kQXJyYXkgfSBmcm9tICdATGliL3V0aWxzJztcbmltcG9ydCB7IENyZWF0ZU1heFBheWxvYWRGcm9tQW55T2JqZWN0IH0gZnJvbSAnQFBheWxvYWRzL2dlbmVyYXRvcic7XG5pbXBvcnQgeyBVdWlkIH0gZnJvbSAnQExpYi91dWlkJztcbmltcG9ydCB7IFN5bmNFdmVudCB9IGZyb20gJ0BTZXJ2aWNlcy9zeW5jL2V2ZW50cyc7XG5pbXBvcnQgeyBVdWlkcyB9IGZyb20gJ0BNb2RlbHMvZnVuY3Rpb25zJztcbi8qKlxuICogVGhlIHNpbmdsZXRvbiBtYW5hZ2VyIGFsbG93IGNvbnN1bWVycyB0byBlbnN1cmUgdGhhdCBvbmx5IDEgaXRlbSBleGlzdHMgb2YgYSBjZXJ0YWluXG4gKiBwcmVkaWNhdGUuIEZvciBleGFtcGxlLCBjb25zdW1lcnMgbWF5IHdhbnQgdG8gZW5zdXJlIHRoYXQgb25seSBvbmUgaXRlbSBvZiBjb250ZW50VHlwZVxuICogVXNlclByZWZlcmVuY2VzIGV4aXN0LiBUaGUgc2luZ2xldG9uIG1hbmFnZXIgYWxsb3dzIGNvbnN1bWVycyB0byBkbyB0aGlzIHZpYSAyIG1ldGhvZHM6XG4gKiAxLiBDb25zdW1lcnMgbWF5IHVzZSBgZmluZE9yQ3JlYXRlU2luZ2xldG9uYCB0byByZXRyaWV2ZSBhbiBpdGVtIGlmIGl0IGV4aXN0cywgb3IgY3JlYXRlXG4gKiAgICBpdCBvdGhlcndpc2UuIFdoaWxlIHRoaXMgbWV0aG9kIG1heSBzZXJ2ZSBtb3N0IGNhc2VzLCBpdCBkb2VzIG5vdCBhbGxvdyB0aGUgY29uc3VtZXJcbiAqICAgIHRvIHN1YnNjcmliZSB0byBjaGFuZ2VzLCBzdWNoIGFzIGlmIGFmdGVyIHRoaXMgbWV0aG9kIGlzIGNhbGxlZCwgYSBVc2VyUHJlZmVyZW5jZXMgb2JqZWN0XG4gKiAgICBpcyBkb3dubG9hZGVkIGZyb20gYSByZW1vdGUgc291cmNlLlxuICogMi4gQ29uc3VtZXJzIG1heSB1c2UgYHJlZ2lzdGVyUHJlZGljYXRlYCBpbiBvcmRlciB0byBjb25zdGFudGx5IG1vbml0b3IgYSBwYXJ0aWN1bGFyXG4gKiAgICBwcmVkaWNhdGUgYW5kIGVuc3VyZSB0aGF0IG9ubHkgMSB2YWx1ZSBleGlzdHMgZm9yIHRoYXQgcHJlZGljYXRlLiBUaGlzIG1heSBiZSB1c2VkIGluXG4gKiAgICB0YW5kZW0gd2l0aCBgZmluZE9yQ3JlYXRlU2luZ2xldG9uYCwgZm9yIGV4YW1wbGUgdG8gbW9uaXRvciBhIHByZWRpY2F0ZSBhZnRlciB3ZVxuICogICAgaW50aXRpYWxseSBjcmVhdGUgdGhlIGl0ZW0uXG4gKi9cbmV4cG9ydCBjbGFzcyBTTlNpbmdsZXRvbk1hbmFnZXIgZXh0ZW5kcyBQdXJlU2VydmljZSB7XG4gICAgY29uc3RydWN0b3IoaXRlbU1hbmFnZXIsIHN5bmNTZXJ2aWNlKSB7XG4gICAgICAgIHN1cGVyKCk7XG4gICAgICAgIHRoaXMucmVzb2x2ZVF1ZXVlID0gW107XG4gICAgICAgIHRoaXMucmVnaXN0ZXJlZFByZWRpY2F0ZXMgPSBbXTtcbiAgICAgICAgdGhpcy5pdGVtTWFuYWdlciA9IGl0ZW1NYW5hZ2VyO1xuICAgICAgICB0aGlzLnN5bmNTZXJ2aWNlID0gc3luY1NlcnZpY2U7XG4gICAgICAgIHRoaXMuYWRkT2JzZXJ2ZXJzKCk7XG4gICAgfVxuICAgIGRlaW5pdCgpIHtcbiAgICAgICAgdGhpcy5zeW5jU2VydmljZSA9IHVuZGVmaW5lZDtcbiAgICAgICAgdGhpcy5pdGVtTWFuYWdlciA9IHVuZGVmaW5lZDtcbiAgICAgICAgdGhpcy5yZXNvbHZlUXVldWUubGVuZ3RoID0gMDtcbiAgICAgICAgdGhpcy5yZWdpc3RlcmVkUHJlZGljYXRlcy5sZW5ndGggPSAwO1xuICAgICAgICB0aGlzLnJlbW92ZUl0ZW1PYnNlcnZlcigpO1xuICAgICAgICB0aGlzLnJlbW92ZUl0ZW1PYnNlcnZlciA9IHVuZGVmaW5lZDtcbiAgICAgICAgdGhpcy5yZW1vdmVTeW5jT2JzZXJ2ZXIoKTtcbiAgICAgICAgdGhpcy5yZW1vdmVTeW5jT2JzZXJ2ZXIgPSB1bmRlZmluZWQ7XG4gICAgICAgIHN1cGVyLmRlaW5pdCgpO1xuICAgIH1cbiAgICBwb3BSZXNvbHZlUXVldWUoKSB7XG4gICAgICAgIGNvbnN0IHF1ZXVlID0gdGhpcy5yZXNvbHZlUXVldWUuc2xpY2UoKTtcbiAgICAgICAgdGhpcy5yZXNvbHZlUXVldWUgPSBbXTtcbiAgICAgICAgcmV0dXJuIHF1ZXVlO1xuICAgIH1cbiAgICAvKipcbiAgICAgKiBXZSBvbmx5IHdhbnQgdG8gcmVzb2x2ZSBzaW5nbGV0b25zIGZvciBpdGVtcyB0aGF0IGFyZSBuZXdseSBjcmVhdGVkIChiZWNhdXNlIHRoaXNcbiAgICAgKiBpcyB3aGVuIGl0ZW1zIHByb2xpZmVyYXRlKS4gSG93ZXZlciwgd2UgZG9uJ3Qgd2FudCB0byByZXNvbHZlIGltbWVkaWF0ZWx5IG9uIGNyZWF0aW9uLFxuICAgICAqIGJ1dCBpbnN0ZWFkIHdhaXQgZm9yIHRoZSBuZXh0IGZ1bGwgc3luYyB0byBjb21wbGV0ZS4gVGhpcyBpcyBzbyB0aGF0IHdoZW4geW91IGRvd25sb2FkXG4gICAgICogYSBzaW5nbGV0b24gYW5kIGNyZWF0ZSB0aGUgb2JqZWN0LCBidXQgdGhlIGl0ZW1zIGtleSBmb3IgdGhlIGl0ZW0gaGFzIG5vdCB5ZXQgYmVlblxuICAgICAqIGRvd25sb2FkZWQsIHRoZSBzaW5nbGV0b24gd2lsbCBiZSBlcnJvckRlY3J5cHRpbmcsIGFuZCB3b3VsZCBiZSBtaXNoYW5kbGVkIGluIHRoZVxuICAgICAqIG92ZXJhbGwgc2luZ2xldG9uIGxvZ2ljLiBCeSB3YWl0aW5nIGZvciBhIGZ1bGwgc3luYyB0byBjb21wbGV0ZSwgd2UgY2FuIGJlIHN1cmUgdGhhdFxuICAgICAqIGFsbCBpdGVtcyBrZXlzIGhhdmUgYmVlbiBkb3dubG9hZGVkLlxuICAgICAqL1xuICAgIGFkZE9ic2VydmVycygpIHtcbiAgICAgICAgdGhpcy5yZW1vdmVJdGVtT2JzZXJ2ZXIgPSB0aGlzLml0ZW1NYW5hZ2VyLmFkZE9ic2VydmVyKENvbnRlbnRUeXBlLkFueSwgKF8sIGluc2VydGVkKSA9PiB7XG4gICAgICAgICAgICBpZiAoaW5zZXJ0ZWQubGVuZ3RoID4gMCkge1xuICAgICAgICAgICAgICAgIHRoaXMucmVzb2x2ZVF1ZXVlID0gdGhpcy5yZXNvbHZlUXVldWUuY29uY2F0KGluc2VydGVkKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSk7XG4gICAgICAgIHRoaXMucmVtb3ZlU3luY09ic2VydmVyID0gdGhpcy5zeW5jU2VydmljZS5hZGRFdmVudE9ic2VydmVyKGFzeW5jIChldmVudE5hbWUpID0+IHtcbiAgICAgICAgICAgIGlmIChldmVudE5hbWUgPT09IFN5bmNFdmVudC5Eb3dubG9hZEZpcnN0U3luY0NvbXBsZXRlZCB8fFxuICAgICAgICAgICAgICAgIGV2ZW50TmFtZSA9PT0gU3luY0V2ZW50LkZ1bGxTeW5jQ29tcGxldGVkKSB7XG4gICAgICAgICAgICAgICAgYXdhaXQgdGhpcy5yZXNvbHZlU2luZ2xldG9uc0Zvckl0ZW1zKHRoaXMucG9wUmVzb2x2ZVF1ZXVlKCksIGV2ZW50TmFtZSk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH0pO1xuICAgIH1cbiAgICAvKipcbiAgICAgKiBQcmVkaWNhdGVzIHJlZ2lzdGVyZWQgYXJlIGF1dG9tYXRpY2FsbHkgb2JzZXJ2ZWQuIElmIGdsb2JhbCBpdGVtIHN0YXRlIGNoYW5nZXNcbiAgICAgKiBzdWNoIHRoYXQgdGhlIGl0ZW0ocykgbWF0Y2ggdGhlIHByZWRpY2F0ZSwgcHJvY2VkdXJlcyB3aWxsIGJlIGZvbGxvd2VkIHN1Y2ggdGhhdFxuICAgICAqIHRoZSBlbmQgcmVzdWx0IGlzIHRoYXQgb25seSAxIGl0ZW0gcmVtYWlucywgYW5kIHRoZSBvdGhlcnMgYXJlIGRlbGV0ZWQuXG4gICAgICovXG4gICAgcmVnaXN0ZXJQcmVkaWNhdGUocHJlZGljYXRlKSB7XG4gICAgICAgIHRoaXMucmVnaXN0ZXJlZFByZWRpY2F0ZXMucHVzaChwcmVkaWNhdGUpO1xuICAgIH1cbiAgICB2YWxpZEl0ZW1zTWF0Y2hpbmdQcmVkaWNhdGUocHJlZGljYXRlKSB7XG4gICAgICAgIHJldHVybiB0aGlzLml0ZW1NYW5hZ2VyLml0ZW1zTWF0Y2hpbmdQcmVkaWNhdGUocHJlZGljYXRlKVxuICAgICAgICAgICAgLmZpbHRlcigoaXRlbSkgPT4ge1xuICAgICAgICAgICAgcmV0dXJuICFpdGVtLmVycm9yRGVjcnlwdGluZztcbiAgICAgICAgfSk7XG4gICAgfVxuICAgIGFzeW5jIHJlc29sdmVTaW5nbGV0b25zRm9ySXRlbXMoaXRlbXMsIGV2ZW50U291cmNlKSB7XG4gICAgICAgIGNvbnN0IG1hdGNoZXNGb3JSZWdpc3RlcmVkUHJlZGljYXRlID0gKGl0ZW0pID0+IHtcbiAgICAgICAgICAgIGZvciAoY29uc3QgcHJlZGljYXRlIG9mIHRoaXMucmVnaXN0ZXJlZFByZWRpY2F0ZXMpIHtcbiAgICAgICAgICAgICAgICBpZiAoaXRlbS5zYXRpc2ZpZXNQcmVkaWNhdGUocHJlZGljYXRlKSkge1xuICAgICAgICAgICAgICAgICAgICByZXR1cm4gdGhpcy52YWxpZEl0ZW1zTWF0Y2hpbmdQcmVkaWNhdGUocHJlZGljYXRlKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgIH07XG4gICAgICAgIGNvbnN0IG1hdGNoZXNGb3JTZWxmUHJlZGljYXRlID0gKGl0ZW0pID0+IHtcbiAgICAgICAgICAgIGlmICghaXRlbS5pc1NpbmdsZXRvbikge1xuICAgICAgICAgICAgICAgIHJldHVybiBudWxsO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgcmV0dXJuIHRoaXMudmFsaWRJdGVtc01hdGNoaW5nUHJlZGljYXRlKGl0ZW0uc2luZ2xldG9uUHJlZGljYXRlKTtcbiAgICAgICAgfTtcbiAgICAgICAgY29uc3QgbWF0Y2hlcyA9IChpdGVtKSA9PiB7XG4gICAgICAgICAgICBjb25zdCBzZWxmTWF0Y2hlcyA9IG1hdGNoZXNGb3JTZWxmUHJlZGljYXRlKGl0ZW0pO1xuICAgICAgICAgICAgaWYgKHNlbGZNYXRjaGVzICYmIHNlbGZNYXRjaGVzLmxlbmd0aCA+IDApIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gc2VsZk1hdGNoZXM7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICByZXR1cm4gbWF0Y2hlc0ZvclJlZ2lzdGVyZWRQcmVkaWNhdGUoaXRlbSk7XG4gICAgICAgIH07XG4gICAgICAgIGNvbnN0IGhhbmRsZWQgPSBbXTtcbiAgICAgICAgZm9yIChjb25zdCBpdGVtIG9mIGl0ZW1zKSB7XG4gICAgICAgICAgICBpZiAoaGFuZGxlZC5pbmNsdWRlcyhpdGVtKSkge1xuICAgICAgICAgICAgICAgIGNvbnRpbnVlO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgY29uc3QgbWF0Y2hpbmdJdGVtcyA9IG1hdGNoZXMoaXRlbSk7XG4gICAgICAgICAgICBleHRlbmRBcnJheShoYW5kbGVkLCBtYXRjaGluZ0l0ZW1zIHx8IFtdKTtcbiAgICAgICAgICAgIGlmICghbWF0Y2hpbmdJdGVtcyB8fCBtYXRjaGluZ0l0ZW1zLmxlbmd0aCA8PSAxKSB7XG4gICAgICAgICAgICAgICAgY29udGludWU7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBhd2FpdCB0aGlzLmhhbmRsZVN0cmF0ZWd5KG1hdGNoaW5nSXRlbXMsIGl0ZW0uc2luZ2xldG9uU3RyYXRlZ3kpO1xuICAgICAgICB9XG4gICAgICAgIC8qKlxuICAgICAgICAgKiBPbmx5IHN5bmMgaWYgZXZlbnQgc291cmNlIGlzIEZ1bGxTeW5jQ29tcGxldGVkLlxuICAgICAgICAgKiBJZiBpdCBpcyBvbiBEb3dubG9hZEZpcnN0U3luY0NvbXBsZXRlZCwgd2UgZG9uJ3QgbmVlZCB0byBzeW5jLFxuICAgICAgICAgKiBhcyBhIHN5bmMgcmVxdWVzdCB3aWxsIGF1dG9tYXRpY2FsbHkgYmUgbWFkZSBhcyBwYXJ0IG9mIHRoZSBzZWNvbmQgcGhhc2VcbiAgICAgICAgICogb2YgYSBkb3dubG9hZC1maXJzdCByZXF1ZXN0LlxuICAgICAgICAgKi9cbiAgICAgICAgaWYgKGhhbmRsZWQubGVuZ3RoID4gMCAmJiBldmVudFNvdXJjZSA9PT0gU3luY0V2ZW50LkZ1bGxTeW5jQ29tcGxldGVkKSB7XG4gICAgICAgICAgICAvKipcbiAgICAgICAgICAgICAqIERvIG5vdCBhd2FpdC4gV2Ugd2FudCBhbnkgbG9jYWwtc2lkZSBjaGFuZ2VzIHRvXG4gICAgICAgICAgICAgKiBiZSBhd2FpdGVkIGJ1dCB0aGUgYWN0dWFsIHN5bmMgc2hvdWxkbid0IGJlIHNpbmNlIGl0J3Mgbm9uLWVzc2VudGlhbFxuICAgICAgICAgICAgICogUGVyZm9ybSBhZnRlciB0aW1lb3V0IHNvIHRoYXQgd2UgY2FuIHlpZWxkIHRvIGV2ZW50IG5vdGlmaWVyIHRoYXQgdHJpZ2dlcmVkIHVzXG4gICAgICAgICAgICAgKi9cbiAgICAgICAgICAgIHNldFRpbWVvdXQoKCkgPT4ge1xuICAgICAgICAgICAgICAgIHRoaXMuc3luY1NlcnZpY2Uuc3luYygpO1xuICAgICAgICAgICAgfSk7XG4gICAgICAgIH1cbiAgICB9XG4gICAgYXN5bmMgaGFuZGxlU3RyYXRlZ3koaXRlbXMsIHN0cmF0ZWd5KSB7XG4gICAgICAgIGlmIChzdHJhdGVneSAhPT0gU2luZ2xldG9uU3RyYXRlZ3kuS2VlcEVhcmxpZXN0KSB7XG4gICAgICAgICAgICB0aHJvdyAnVW5oYW5kbGVkIHNpbmdsZXRvbiBzdHJhdGVneSc7XG4gICAgICAgIH1cbiAgICAgICAgY29uc3QgZWFybGllc3RGaXJzdCA9IGl0ZW1zLnNvcnQoKGEsIGIpID0+IHtcbiAgICAgICAgICAgIC8qKiAtMTogYSBjb21lcyBmaXJzdCwgMTogYiBjb21lcyBmaXJzdCAqL1xuICAgICAgICAgICAgaWYgKGEuZXJyb3JEZWNyeXB0aW5nKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIDE7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBpZiAoYi5lcnJvckRlY3J5cHRpbmcpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gLTE7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICByZXR1cm4gYS5jcmVhdGVkX2F0IDwgYi5jcmVhdGVkX2F0ID8gLTEgOiAxO1xuICAgICAgICB9KTtcbiAgICAgICAgY29uc3QgZGVsZXRlSXRlbXMgPSBhcnJheUJ5UmVtb3ZpbmdGcm9tSW5kZXgoZWFybGllc3RGaXJzdCwgMCk7XG4gICAgICAgIGF3YWl0IHRoaXMuaXRlbU1hbmFnZXIuc2V0SXRlbXNUb0JlRGVsZXRlZChVdWlkcyhkZWxldGVJdGVtcykpO1xuICAgIH1cbiAgICBhc3luYyBmaW5kT3JDcmVhdGVTaW5nbGV0b24ocHJlZGljYXRlLCBjcmVhdGVDb250ZW50VHlwZSwgY3JlYXRlQ29udGVudCkge1xuICAgICAgICByZXR1cm4gbmV3IFByb21pc2UoYXN5bmMgKHJlc29sdmUpID0+IHtcbiAgICAgICAgICAgIGNvbnN0IG1hdGNoaW5nSXRlbXMgPSB0aGlzLnZhbGlkSXRlbXNNYXRjaGluZ1ByZWRpY2F0ZShwcmVkaWNhdGUpO1xuICAgICAgICAgICAgaWYgKG1hdGNoaW5nSXRlbXMubGVuZ3RoID4gMCkge1xuICAgICAgICAgICAgICAgIHJldHVybiByZXNvbHZlKG1hdGNoaW5nSXRlbXNbMF0pO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgLyoqIEl0ZW0gbm90IGZvdW5kLCBzYWZlIHRvIGNyZWF0ZSBhZnRlciBmdWxsIHN5bmMgaGFzIGNvbXBsZXRlZCAqL1xuICAgICAgICAgICAgaWYgKCF0aGlzLnN5bmNTZXJ2aWNlLmdldExhc3RTeW5jRGF0ZSgpKSB7XG4gICAgICAgICAgICAgICAgLyoqIEFkZCBhIHRlbXBvcmFyeSBvYnNlcnZlciBpbiBjYXNlIG9mIGxvbmctcnVubmluZyBzeW5jIHJlcXVlc3QsIHdoZXJlXG4gICAgICAgICAgICAgICAgICogdGhlIGl0ZW0gd2UncmUgbG9va2luZyBmb3IgZW5kcyB1cCByZXNvbHZpbmcgZWFybHkgb3IgaW4gdGhlIG1pZGRsZS4gKi9cbiAgICAgICAgICAgICAgICBsZXQgZGlkUmVzb2x2ZSA9IGZhbHNlO1xuICAgICAgICAgICAgICAgIGNvbnN0IHJlbW92ZU9ic2VydmVyID0gdGhpcy5pdGVtTWFuYWdlci5hZGRPYnNlcnZlcihjcmVhdGVDb250ZW50VHlwZSwgKF8sIGluc2VydGVkKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgIGlmIChpbnNlcnRlZC5sZW5ndGggPiAwKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBtYXRjaGluZ0l0ZW1zID0gdGhpcy5pdGVtTWFuYWdlci5zdWJJdGVtc01hdGNoaW5nUHJlZGljYXRlcyhpbnNlcnRlZCwgW3ByZWRpY2F0ZV0pO1xuICAgICAgICAgICAgICAgICAgICAgICAgaWYgKG1hdGNoaW5nSXRlbXMubGVuZ3RoID4gMCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRpZFJlc29sdmUgPSB0cnVlO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlc29sdmUobWF0Y2hpbmdJdGVtc1swXSk7XG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgICAgICBhd2FpdCB0aGlzLnN5bmNTZXJ2aWNlLnN5bmMoKTtcbiAgICAgICAgICAgICAgICByZW1vdmVPYnNlcnZlcigpO1xuICAgICAgICAgICAgICAgIGlmIChkaWRSZXNvbHZlKSB7XG4gICAgICAgICAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgLyoqIENoZWNrIGFnYWluICovXG4gICAgICAgICAgICAgICAgY29uc3QgcmVmcmVzaGVkSXRlbXMgPSB0aGlzLnZhbGlkSXRlbXNNYXRjaGluZ1ByZWRpY2F0ZShwcmVkaWNhdGUpO1xuICAgICAgICAgICAgICAgIGlmIChyZWZyZXNoZWRJdGVtcy5sZW5ndGggPiAwKSB7XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiByZXNvbHZlKHJlZnJlc2hlZEl0ZW1zWzBdKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICAvKiogRGVsZXRlIGFueSBpdGVtcyB0aGF0IGFyZSBlcnJvcmVkICovXG4gICAgICAgICAgICBjb25zdCBlcnJvckRlY3J5cHRpbmcgPSB0aGlzLml0ZW1NYW5hZ2VyXG4gICAgICAgICAgICAgICAgLml0ZW1zTWF0Y2hpbmdQcmVkaWNhdGUocHJlZGljYXRlKS5maWx0ZXIoKGl0ZW0pID0+IHtcbiAgICAgICAgICAgICAgICByZXR1cm4gaXRlbS5lcnJvckRlY3J5cHRpbmc7XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIGF3YWl0IHRoaXMuaXRlbU1hbmFnZXIuc2V0SXRlbXNUb0JlRGVsZXRlZChVdWlkcyhlcnJvckRlY3J5cHRpbmcpKTtcbiAgICAgICAgICAgIC8qKiBTYWZlIHRvIGNyZWF0ZSAqL1xuICAgICAgICAgICAgY29uc3QgZGlydHlQYXlsb2FkID0gQ3JlYXRlTWF4UGF5bG9hZEZyb21BbnlPYmplY3Qoe1xuICAgICAgICAgICAgICAgIHV1aWQ6IGF3YWl0IFV1aWQuR2VuZXJhdGVVdWlkKCksXG4gICAgICAgICAgICAgICAgY29udGVudF90eXBlOiBjcmVhdGVDb250ZW50VHlwZSxcbiAgICAgICAgICAgICAgICBjb250ZW50OiBjcmVhdGVDb250ZW50LFxuICAgICAgICAgICAgICAgIGRpcnR5OiB0cnVlLFxuICAgICAgICAgICAgICAgIGRpcnRpZWREYXRlOiBuZXcgRGF0ZSgpXG4gICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIGNvbnN0IGl0ZW0gPSBhd2FpdCB0aGlzLml0ZW1NYW5hZ2VyLmVtaXRJdGVtRnJvbVBheWxvYWQoZGlydHlQYXlsb2FkKTtcbiAgICAgICAgICAgIGlmICghaXRlbSkge1xuICAgICAgICAgICAgICAgIHRocm93IEVycm9yKGBDcmVhdGVkIHNpbmdsZXRvbiBpdGVtIHNob3VsZCBub3QgYmUgbnVsbCAke2NyZWF0ZUNvbnRlbnRUeXBlfWApO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgYXdhaXQgdGhpcy5zeW5jU2VydmljZS5zeW5jKCk7XG4gICAgICAgICAgICByZXR1cm4gcmVzb2x2ZShpdGVtKTtcbiAgICAgICAgfSk7XG4gICAgfVxufVxuIl0sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOzs7Ozs7Ozs7Ozs7OztBQWFBO0FBQUE7QUFDQTtBQUFBO0FBQUE7QUFDQTtBQURBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBUEE7QUFPQTtBQUNBO0FBVEE7QUFBQTtBQUFBO0FBVUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQW5CQTtBQUFBO0FBQUE7QUFxQkE7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7Ozs7Ozs7OztBQXpCQTtBQUFBO0FBQUE7QUFrQ0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUNBO0FBREE7QUFBQTtBQUNBO0FBREE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFDQTtBQURBO0FBQUE7QUFBQTtBQUFBO0FBTUE7QUFDQTs7Ozs7O0FBL0NBO0FBQUE7QUFBQTtBQXFEQTtBQUNBO0FBdERBO0FBQUE7QUFBQTtBQXdEQTtBQUVBO0FBQ0E7QUFDQTtBQTVEQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQ0E7QUFEQTtBQUNBO0FBREE7QUFBQTtBQUFBO0FBQUE7QUE4REE7QUFBQTtBQUFBO0FBQUE7QUFDQTtBQURBO0FBQ0E7QUFBQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFMQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBTUE7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUFBO0FBbEZBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFDQTtBQURBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFDQTtBQWtGQTtBQUNBO0FBcEZBO0FBQUE7QUFBQTtBQUFBO0FBQ0E7QUFEQTtBQUNBO0FBREE7QUF1RkE7QUFDQTtBQUNBO0FBekZBO0FBQUE7QUFBQTtBQUFBO0FBQ0E7QUFEQTtBQUNBO0FBREE7QUFBQTtBQUFBO0FBQ0E7QUFEQTtBQUFBO0FBQUE7QUFBQTtBQUNBO0FBREE7QUFBQTtBQUFBO0FBQ0E7QUFEQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQ0E7QUFEQTtBQUFBO0FBQUE7QUFDQTtBQURBO0FBQUE7QUFBQTtBQUNBO0FBREE7QUFBQTtBQUNBO0FBREE7QUFBQTtBQUFBO0FBQUE7QUFDQTtBQURBO0FBQ0E7QUFEQTtBQUFBO0FBQ0E7QUFEQTtBQUFBO0FBQ0E7QUFEQTtBQThGQTs7Ozs7O0FBTUE7QUFDQTs7Ozs7QUFLQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBOUdBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQ0E7QUFEQTtBQUFBO0FBQUE7QUFDQTtBQURBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUNBO0FBREE7QUFDQTtBQURBO0FBbUhBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBN0hBO0FBQUE7QUFDQTtBQURBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQ0E7QUFEQTtBQUFBO0FBQUE7QUFDQTtBQURBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQ0E7QUFEQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBaUlBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUNBO0FBQ0E7QUFGQTtBQUFBO0FBQUE7QUFBQTtBQUNBO0FBREE7QUFDQTtBQURBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFDQTtBQU1BOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFsQkE7QUFBQTtBQUNBO0FBREE7QUFvQkE7QUFDQTtBQXJCQTtBQUFBO0FBQUE7QUFBQTtBQUNBO0FBREE7QUFDQTtBQURBO0FBd0JBO0FBQ0E7QUFDQTtBQTFCQTtBQUFBO0FBQUE7QUFBQTtBQUNBO0FBREE7QUFDQTtBQURBO0FBOEJBO0FBQ0E7QUFFQTtBQUNBO0FBbENBO0FBQUE7QUFDQTtBQURBO0FBQUE7QUFBQTtBQUFBO0FBQ0E7QUFEQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFzQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQTFDQTtBQXFDQTtBQXJDQTtBQUFBO0FBQ0E7QUFEQTtBQTRDQTtBQUNBO0FBN0NBO0FBQUE7QUFBQTtBQUFBO0FBQ0E7QUFEQTtBQUNBO0FBREE7QUFBQTtBQUFBO0FBQ0E7QUFEQTtBQUFBO0FBQ0E7QUFEQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUNBO0FBREE7QUFBQTtBQUFBO0FBQUE7QUFDQTtBQWxJQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUNBO0FBREE7QUFBQTtBQUFBO0FBQ0E7QUFEQTtBQUFBO0FBQUE7QUFDQTtBQURBO0FBQUEiLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./lib/services/singleton_manager.ts\n')},"./lib/services/storage_service.ts":
|
||
/*!*****************************************!*\
|
||
!*** ./lib/services/storage_service.ts ***!
|
||
\*****************************************/
|
||
/*! exports provided: StoragePersistencePolicies, StorageEncryptionPolicies, StorageValueModes, ValueModesKeys, SNStorageService */function(module,__webpack_exports__,__webpack_require__){"use strict";eval('__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "StoragePersistencePolicies", function() { return StoragePersistencePolicies; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "StorageEncryptionPolicies", function() { return StorageEncryptionPolicies; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "StorageValueModes", function() { return StorageValueModes; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "ValueModesKeys", function() { return ValueModesKeys; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "SNStorageService", function() { return SNStorageService; });\n/* harmony import */ var _babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @babel/runtime/regenerator */ "./node_modules/@babel/runtime/regenerator/index.js");\n/* harmony import */ var _babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var _Lib_storage_keys__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! @Lib/storage_keys */ "./lib/storage_keys.ts");\n/* harmony import */ var _Lib_stages__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! @Lib/stages */ "./lib/stages.ts");\n/* harmony import */ var _Payloads_generator__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! @Payloads/generator */ "./lib/protocol/payloads/generator.ts");\n/* harmony import */ var _Protocol_intents__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! @Protocol/intents */ "./lib/protocol/intents.ts");\n/* harmony import */ var _Lib_services_pure_service__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! @Lib/services/pure_service */ "./lib/services/pure_service.ts");\n/* harmony import */ var _Models_content_types__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! @Models/content_types */ "./lib/models/content_types.ts");\n/* harmony import */ var _Lib_utils__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! @Lib/utils */ "./lib/utils.ts");\n/* harmony import */ var _Lib_uuid__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! @Lib/uuid */ "./lib/uuid.ts");\n\n\nfunction _typeof(obj) { "@babel/helpers - typeof"; if (typeof Symbol === "function" && typeof Symbol.iterator === "symbol") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }; } return _typeof(obj); }\n\nfunction _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\n\nfunction asyncGeneratorStep(gen, resolve, reject, _next, _throw, key, arg) { try { var info = gen[key](arg); var value = info.value; } catch (error) { reject(error); return; } if (info.done) { resolve(value); } else { Promise.resolve(value).then(_next, _throw); } }\n\nfunction _asyncToGenerator(fn) { return function () { var self = this, args = arguments; return new Promise(function (resolve, reject) { var gen = fn.apply(self, args); function _next(value) { asyncGeneratorStep(gen, resolve, reject, _next, _throw, "next", value); } function _throw(err) { asyncGeneratorStep(gen, resolve, reject, _next, _throw, "throw", err); } _next(undefined); }); }; }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } }\n\nfunction _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); } }\n\nfunction _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; }\n\nfunction _possibleConstructorReturn(self, call) { if (call && (_typeof(call) === "object" || typeof call === "function")) { return call; } return _assertThisInitialized(self); }\n\nfunction _assertThisInitialized(self) { if (self === void 0) { throw new ReferenceError("this hasn\'t been initialised - super() hasn\'t been called"); } return self; }\n\nfunction _get(target, property, receiver) { if (typeof Reflect !== "undefined" && Reflect.get) { _get = Reflect.get; } else { _get = function _get(target, property, receiver) { var base = _superPropBase(target, property); if (!base) return; var desc = Object.getOwnPropertyDescriptor(base, property); if (desc.get) { return desc.get.call(receiver); } return desc.value; }; } return _get(target, property, receiver || target); }\n\nfunction _superPropBase(object, property) { while (!Object.prototype.hasOwnProperty.call(object, property)) { object = _getPrototypeOf(object); if (object === null) break; } return object; }\n\nfunction _getPrototypeOf(o) { _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function _getPrototypeOf(o) { return o.__proto__ || Object.getPrototypeOf(o); }; return _getPrototypeOf(o); }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== "function" && superClass !== null) { throw new TypeError("Super expression must either be null or a function"); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, writable: true, configurable: true } }); if (superClass) _setPrototypeOf(subClass, superClass); }\n\nfunction _setPrototypeOf(o, p) { _setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) { o.__proto__ = p; return o; }; return _setPrototypeOf(o, p); }\n\n\n\n\n\n\n\n\n\nvar StoragePersistencePolicies;\n\n(function (StoragePersistencePolicies) {\n StoragePersistencePolicies[StoragePersistencePolicies["Default"] = 1] = "Default";\n StoragePersistencePolicies[StoragePersistencePolicies["Ephemeral"] = 2] = "Ephemeral";\n})(StoragePersistencePolicies || (StoragePersistencePolicies = {}));\n\n;\nvar StorageEncryptionPolicies;\n\n(function (StorageEncryptionPolicies) {\n StorageEncryptionPolicies[StorageEncryptionPolicies["Default"] = 1] = "Default";\n StorageEncryptionPolicies[StorageEncryptionPolicies["Disabled"] = 2] = "Disabled";\n})(StorageEncryptionPolicies || (StorageEncryptionPolicies = {}));\n\n;\nvar StorageValueModes;\n\n(function (StorageValueModes) {\n /** Stored inside wrapped encrpyed storage object */\n StorageValueModes[StorageValueModes["Default"] = 1] = "Default";\n /** Stored outside storage object, unencrypted */\n\n StorageValueModes[StorageValueModes["Nonwrapped"] = 2] = "Nonwrapped";\n})(StorageValueModes || (StorageValueModes = {}));\n\n;\nvar ValueModesKeys;\n\n(function (ValueModesKeys) {\n /* Is encrypted */\n ValueModesKeys["Wrapped"] = "wrapped";\n /* Is decrypted */\n\n ValueModesKeys["Unwrapped"] = "unwrapped";\n /* Lives outside of wrapped/unwrapped */\n\n ValueModesKeys["Nonwrapped"] = "nonwrapped";\n})(ValueModesKeys || (ValueModesKeys = {}));\n\n;\n/**\n * The storage service is responsible for persistence of both simple key-values, and payload\n * storage. It does so by relying on deviceInterface to save and retrieve raw values and payloads.\n * For simple key/values, items are grouped together in an in-memory hash, and persisted to disk\n * as a single object (encrypted, when possible). It handles persisting payloads in the local\n * database by encrypting the payloads when possible.\n * The storage service also exposes methods that allow the application to initially\n * decrypt the persisted key/values, and also a method to determine whether a particular\n * key can decrypt wrapped storage.\n */\n\nvar SNStorageService = /*#__PURE__*/function (_PureService) {\n _inherits(SNStorageService, _PureService);\n\n function SNStorageService(deviceInterface, namespace) {\n var _this;\n\n _classCallCheck(this, SNStorageService);\n\n _this = _possibleConstructorReturn(this, _getPrototypeOf(SNStorageService).call(this));\n /** Wait until application has been unlocked before trying to persist */\n\n _this.storagePersistable = false;\n _this.deviceInterface = deviceInterface;\n _this.namespace = namespace;\n\n _this.setPersistencePolicy(StoragePersistencePolicies.Default);\n\n _this.setEncryptionPolicy(StorageEncryptionPolicies.Default);\n\n return _this;\n }\n\n _createClass(SNStorageService, [{\n key: "deinit",\n value: function deinit() {\n this.deviceInterface = undefined;\n this.encryptionDelegate = undefined;\n\n _get(_getPrototypeOf(SNStorageService.prototype), "deinit", this).call(this);\n }\n }, {\n key: "handleApplicationStage",\n value: function () {\n var _handleApplicationStage = _asyncToGenerator( /*#__PURE__*/_babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0___default.a.mark(function _callee(stage) {\n return _babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0___default.a.wrap(function _callee$(_context) {\n while (1) {\n switch (_context.prev = _context.next) {\n case 0:\n _context.next = 2;\n return _get(_getPrototypeOf(SNStorageService.prototype), "handleApplicationStage", this).call(this, stage);\n\n case 2:\n if (stage === _Lib_stages__WEBPACK_IMPORTED_MODULE_2__["ApplicationStage"].Launched_10) {\n this.storagePersistable = true;\n }\n\n case 3:\n case "end":\n return _context.stop();\n }\n }\n }, _callee, this);\n }));\n\n function handleApplicationStage(_x) {\n return _handleApplicationStage.apply(this, arguments);\n }\n\n return handleApplicationStage;\n }()\n }, {\n key: "setPersistencePolicy",\n value: function () {\n var _setPersistencePolicy = _asyncToGenerator( /*#__PURE__*/_babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0___default.a.mark(function _callee2(persistencePolicy) {\n return _babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0___default.a.wrap(function _callee2$(_context2) {\n while (1) {\n switch (_context2.prev = _context2.next) {\n case 0:\n this.persistencePolicy = persistencePolicy;\n\n if (!(this.persistencePolicy === StoragePersistencePolicies.Ephemeral)) {\n _context2.next = 6;\n break;\n }\n\n _context2.next = 4;\n return this.deviceInterface.removeAllRawStorageValues();\n\n case 4:\n _context2.next = 6;\n return this.clearAllPayloads();\n\n case 6:\n case "end":\n return _context2.stop();\n }\n }\n }, _callee2, this);\n }));\n\n function setPersistencePolicy(_x2) {\n return _setPersistencePolicy.apply(this, arguments);\n }\n\n return setPersistencePolicy;\n }()\n }, {\n key: "setEncryptionPolicy",\n value: function () {\n var _setEncryptionPolicy = _asyncToGenerator( /*#__PURE__*/_babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0___default.a.mark(function _callee3(encryptionPolicy) {\n return _babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0___default.a.wrap(function _callee3$(_context3) {\n while (1) {\n switch (_context3.prev = _context3.next) {\n case 0:\n this.encryptionPolicy = encryptionPolicy;\n\n case 1:\n case "end":\n return _context3.stop();\n }\n }\n }, _callee3, this);\n }));\n\n function setEncryptionPolicy(_x3) {\n return _setEncryptionPolicy.apply(this, arguments);\n }\n\n return setEncryptionPolicy;\n }()\n }, {\n key: "isEphemeralSession",\n value: function isEphemeralSession() {\n return this.persistencePolicy === StoragePersistencePolicies.Ephemeral;\n }\n }, {\n key: "initializeFromDisk",\n value: function () {\n var _initializeFromDisk = _asyncToGenerator( /*#__PURE__*/_babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0___default.a.mark(function _callee4() {\n var value, payload;\n return _babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0___default.a.wrap(function _callee4$(_context4) {\n while (1) {\n switch (_context4.prev = _context4.next) {\n case 0:\n _context4.next = 2;\n return this.deviceInterface.getRawStorageValue(this.getPersistenceKey());\n\n case 2:\n value = _context4.sent;\n payload = value ? JSON.parse(value) : null;\n this.setInitialValues(payload);\n\n case 5:\n case "end":\n return _context4.stop();\n }\n }\n }, _callee4, this);\n }));\n\n function initializeFromDisk() {\n return _initializeFromDisk.apply(this, arguments);\n }\n\n return initializeFromDisk;\n }()\n /**\n * Called by platforms with the value they load from disk,\n * after they handle initializeFromDisk\n */\n\n }, {\n key: "setInitialValues",\n value: function setInitialValues(values) {\n if (!values) {\n values = this.defaultValuesObject();\n }\n\n if (!values[ValueModesKeys.Unwrapped]) {\n values[ValueModesKeys.Unwrapped] = {};\n }\n\n this.values = values;\n }\n }, {\n key: "isStorageWrapped",\n value: function isStorageWrapped() {\n var wrappedValue = this.values[ValueModesKeys.Wrapped];\n return !Object(_Lib_utils__WEBPACK_IMPORTED_MODULE_7__["isNullOrUndefined"])(wrappedValue) && Object.keys(wrappedValue).length > 0;\n }\n }, {\n key: "canDecryptWithKey",\n value: function () {\n var _canDecryptWithKey = _asyncToGenerator( /*#__PURE__*/_babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0___default.a.mark(function _callee5(key) {\n var wrappedValue, decryptedPayload;\n return _babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0___default.a.wrap(function _callee5$(_context5) {\n while (1) {\n switch (_context5.prev = _context5.next) {\n case 0:\n wrappedValue = this.values[ValueModesKeys.Wrapped];\n _context5.next = 3;\n return this.decryptWrappedValue(wrappedValue, key);\n\n case 3:\n decryptedPayload = _context5.sent;\n return _context5.abrupt("return", !decryptedPayload.errorDecrypting);\n\n case 5:\n case "end":\n return _context5.stop();\n }\n }\n }, _callee5, this);\n }));\n\n function canDecryptWithKey(_x4) {\n return _canDecryptWithKey.apply(this, arguments);\n }\n\n return canDecryptWithKey;\n }()\n }, {\n key: "decryptWrappedValue",\n value: function () {\n var _decryptWrappedValue = _asyncToGenerator( /*#__PURE__*/_babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0___default.a.mark(function _callee6(wrappedValue, key) {\n var payload, decryptedPayload;\n return _babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0___default.a.wrap(function _callee6$(_context6) {\n while (1) {\n switch (_context6.prev = _context6.next) {\n case 0:\n if (wrappedValue.content_type) {\n _context6.next = 2;\n break;\n }\n\n throw \'Attempting to decrypt nonexistent wrapped value\';\n\n case 2:\n payload = Object(_Payloads_generator__WEBPACK_IMPORTED_MODULE_3__["CreateMaxPayloadFromAnyObject"])(wrappedValue, {\n content_type: _Models_content_types__WEBPACK_IMPORTED_MODULE_6__["ContentType"].EncryptedStorage\n });\n _context6.next = 5;\n return this.encryptionDelegate.payloadByDecryptingPayload(payload, key);\n\n case 5:\n decryptedPayload = _context6.sent;\n return _context6.abrupt("return", decryptedPayload);\n\n case 7:\n case "end":\n return _context6.stop();\n }\n }\n }, _callee6, this);\n }));\n\n function decryptWrappedValue(_x5, _x6) {\n return _decryptWrappedValue.apply(this, arguments);\n }\n\n return decryptWrappedValue;\n }()\n }, {\n key: "decryptStorage",\n value: function () {\n var _decryptStorage = _asyncToGenerator( /*#__PURE__*/_babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0___default.a.mark(function _callee7() {\n var wrappedValue, decryptedPayload;\n return _babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0___default.a.wrap(function _callee7$(_context7) {\n while (1) {\n switch (_context7.prev = _context7.next) {\n case 0:\n wrappedValue = this.values[ValueModesKeys.Wrapped];\n _context7.next = 3;\n return this.decryptWrappedValue(wrappedValue);\n\n case 3:\n decryptedPayload = _context7.sent;\n\n if (!decryptedPayload.errorDecrypting) {\n _context7.next = 6;\n break;\n }\n\n throw \'Unable to decrypt storage.\';\n\n case 6:\n this.values[ValueModesKeys.Unwrapped] = Object(_Lib_utils__WEBPACK_IMPORTED_MODULE_7__["Copy"])(decryptedPayload.contentObject);\n delete this.values[ValueModesKeys.Wrapped];\n\n case 8:\n case "end":\n return _context7.stop();\n }\n }\n }, _callee7, this);\n }));\n\n function decryptStorage() {\n return _decryptStorage.apply(this, arguments);\n }\n\n return decryptStorage;\n }()\n /**\n * Generates a payload that can be persisted to disk,\n * either as a plain object, or an encrypted item.\n */\n\n }, {\n key: "generatePersistenceValue",\n value: function () {\n var _generatePersistenceValue = _asyncToGenerator( /*#__PURE__*/_babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0___default.a.mark(function _callee8() {\n var rawContent, valuesToWrap, payload, encryptedPayload;\n return _babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0___default.a.wrap(function _callee8$(_context8) {\n while (1) {\n switch (_context8.prev = _context8.next) {\n case 0:\n rawContent = Object.assign({}, this.values);\n valuesToWrap = rawContent[ValueModesKeys.Unwrapped];\n _context8.t0 = _Payloads_generator__WEBPACK_IMPORTED_MODULE_3__["CreateMaxPayloadFromAnyObject"];\n _context8.next = 5;\n return _Lib_uuid__WEBPACK_IMPORTED_MODULE_8__["Uuid"].GenerateUuid();\n\n case 5:\n _context8.t1 = _context8.sent;\n _context8.t2 = valuesToWrap;\n _context8.t3 = _Models_content_types__WEBPACK_IMPORTED_MODULE_6__["ContentType"].EncryptedStorage;\n _context8.t4 = {\n uuid: _context8.t1,\n content: _context8.t2,\n content_type: _context8.t3\n };\n payload = (0, _context8.t0)(_context8.t4);\n _context8.next = 12;\n return this.encryptionDelegate.payloadByEncryptingPayload(payload, _Protocol_intents__WEBPACK_IMPORTED_MODULE_4__["EncryptionIntent"].LocalStoragePreferEncrypted);\n\n case 12:\n encryptedPayload = _context8.sent;\n rawContent[ValueModesKeys.Wrapped] = encryptedPayload.ejected();\n rawContent[ValueModesKeys.Unwrapped] = undefined;\n return _context8.abrupt("return", rawContent);\n\n case 16:\n case "end":\n return _context8.stop();\n }\n }\n }, _callee8, this);\n }));\n\n function generatePersistenceValue() {\n return _generatePersistenceValue.apply(this, arguments);\n }\n\n return generatePersistenceValue;\n }()\n /** @todo This function should be debounced. */\n\n }, {\n key: "repersistToDisk",\n value: function () {\n var _repersistToDisk = _asyncToGenerator( /*#__PURE__*/_babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0___default.a.mark(function _callee10() {\n var _this2 = this;\n\n return _babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0___default.a.wrap(function _callee10$(_context10) {\n while (1) {\n switch (_context10.prev = _context10.next) {\n case 0:\n if (this.storagePersistable) {\n _context10.next = 2;\n break;\n }\n\n return _context10.abrupt("return");\n\n case 2:\n if (!(this.persistencePolicy === StoragePersistencePolicies.Ephemeral)) {\n _context10.next = 4;\n break;\n }\n\n return _context10.abrupt("return");\n\n case 4:\n return _context10.abrupt("return", this.executeCriticalFunction( /*#__PURE__*/_asyncToGenerator( /*#__PURE__*/_babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0___default.a.mark(function _callee9() {\n var value;\n return _babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0___default.a.wrap(function _callee9$(_context9) {\n while (1) {\n switch (_context9.prev = _context9.next) {\n case 0:\n _context9.next = 2;\n return _this2.generatePersistenceValue();\n\n case 2:\n value = _context9.sent;\n\n /** Save the persisted value so we have access to it in memory (for unit tests afawk) */\n _this2.values[ValueModesKeys.Wrapped] = value[ValueModesKeys.Wrapped];\n return _context9.abrupt("return", _this2.deviceInterface.setRawStorageValue(_this2.getPersistenceKey(), JSON.stringify(value)));\n\n case 5:\n case "end":\n return _context9.stop();\n }\n }\n }, _callee9);\n }))));\n\n case 5:\n case "end":\n return _context10.stop();\n }\n }\n }, _callee10, this);\n }));\n\n function repersistToDisk() {\n return _repersistToDisk.apply(this, arguments);\n }\n\n return repersistToDisk;\n }()\n }, {\n key: "setValue",\n value: function () {\n var _setValue = _asyncToGenerator( /*#__PURE__*/_babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0___default.a.mark(function _callee11(key, value) {\n var mode,\n _args11 = arguments;\n return _babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0___default.a.wrap(function _callee11$(_context11) {\n while (1) {\n switch (_context11.prev = _context11.next) {\n case 0:\n mode = _args11.length > 2 && _args11[2] !== undefined ? _args11[2] : StorageValueModes.Default;\n\n if (this.values) {\n _context11.next = 3;\n break;\n }\n\n throw "Attempting to set storage key ".concat(key, " before loading local storage.");\n\n case 3:\n this.values[this.domainKeyForMode(mode)][key] = value;\n return _context11.abrupt("return", this.repersistToDisk());\n\n case 5:\n case "end":\n return _context11.stop();\n }\n }\n }, _callee11, this);\n }));\n\n function setValue(_x7, _x8) {\n return _setValue.apply(this, arguments);\n }\n\n return setValue;\n }()\n }, {\n key: "getValue",\n value: function () {\n var _getValue = _asyncToGenerator( /*#__PURE__*/_babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0___default.a.mark(function _callee12(key) {\n var mode,\n _args12 = arguments;\n return _babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0___default.a.wrap(function _callee12$(_context12) {\n while (1) {\n switch (_context12.prev = _context12.next) {\n case 0:\n mode = _args12.length > 1 && _args12[1] !== undefined ? _args12[1] : StorageValueModes.Default;\n\n if (this.values) {\n _context12.next = 3;\n break;\n }\n\n throw "Attempting to get storage key ".concat(key, " before loading local storage.");\n\n case 3:\n if (this.values[this.domainKeyForMode(mode)]) {\n _context12.next = 5;\n break;\n }\n\n throw "Storage domain mode not available ".concat(mode, " for key ").concat(key);\n\n case 5:\n return _context12.abrupt("return", this.values[this.domainKeyForMode(mode)][key]);\n\n case 6:\n case "end":\n return _context12.stop();\n }\n }\n }, _callee12, this);\n }));\n\n function getValue(_x9) {\n return _getValue.apply(this, arguments);\n }\n\n return getValue;\n }()\n }, {\n key: "removeValue",\n value: function () {\n var _removeValue = _asyncToGenerator( /*#__PURE__*/_babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0___default.a.mark(function _callee13(key) {\n var mode,\n _args13 = arguments;\n return _babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0___default.a.wrap(function _callee13$(_context13) {\n while (1) {\n switch (_context13.prev = _context13.next) {\n case 0:\n mode = _args13.length > 1 && _args13[1] !== undefined ? _args13[1] : StorageValueModes.Default;\n\n if (this.values) {\n _context13.next = 3;\n break;\n }\n\n throw "Attempting to remove storage key ".concat(key, " before loading local storage.");\n\n case 3:\n delete this.values[this.domainKeyForMode(mode)][key];\n return _context13.abrupt("return", this.repersistToDisk());\n\n case 5:\n case "end":\n return _context13.stop();\n }\n }\n }, _callee13, this);\n }));\n\n function removeValue(_x10) {\n return _removeValue.apply(this, arguments);\n }\n\n return removeValue;\n }()\n /**\n * Default persistence key. Platforms can override as needed.\n */\n\n }, {\n key: "getPersistenceKey",\n value: function getPersistenceKey() {\n return Object(_Lib_storage_keys__WEBPACK_IMPORTED_MODULE_1__["namespacedKey"])(this.namespace, _Lib_storage_keys__WEBPACK_IMPORTED_MODULE_1__["RawStorageKey"].StorageObject);\n }\n }, {\n key: "defaultValuesObject",\n value: function defaultValuesObject(wrapped, unwrapped, nonwrapped) {\n return SNStorageService.defaultValuesObject(wrapped, unwrapped, nonwrapped);\n }\n }, {\n key: "domainKeyForMode",\n value: function domainKeyForMode(mode) {\n if (mode === StorageValueModes.Default) {\n return ValueModesKeys.Unwrapped;\n } else if (mode === StorageValueModes.Nonwrapped) {\n return ValueModesKeys.Nonwrapped;\n } else {\n throw \'Invalid mode\';\n }\n }\n /**\n * Clears simple values from storage only. Does not affect payloads.\n */\n\n }, {\n key: "clearValues",\n value: function () {\n var _clearValues = _asyncToGenerator( /*#__PURE__*/_babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0___default.a.mark(function _callee14() {\n return _babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0___default.a.wrap(function _callee14$(_context14) {\n while (1) {\n switch (_context14.prev = _context14.next) {\n case 0:\n this.setInitialValues();\n _context14.next = 3;\n return this.repersistToDisk();\n\n case 3:\n case "end":\n return _context14.stop();\n }\n }\n }, _callee14, this);\n }));\n\n function clearValues() {\n return _clearValues.apply(this, arguments);\n }\n\n return clearValues;\n }()\n }, {\n key: "getAllRawPayloads",\n value: function () {\n var _getAllRawPayloads = _asyncToGenerator( /*#__PURE__*/_babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0___default.a.mark(function _callee15() {\n return _babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0___default.a.wrap(function _callee15$(_context15) {\n while (1) {\n switch (_context15.prev = _context15.next) {\n case 0:\n return _context15.abrupt("return", this.deviceInterface.getAllRawDatabasePayloads());\n\n case 1:\n case "end":\n return _context15.stop();\n }\n }\n }, _callee15, this);\n }));\n\n function getAllRawPayloads() {\n return _getAllRawPayloads.apply(this, arguments);\n }\n\n return getAllRawPayloads;\n }()\n }, {\n key: "savePayload",\n value: function () {\n var _savePayload = _asyncToGenerator( /*#__PURE__*/_babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0___default.a.mark(function _callee16(payload) {\n return _babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0___default.a.wrap(function _callee16$(_context16) {\n while (1) {\n switch (_context16.prev = _context16.next) {\n case 0:\n return _context16.abrupt("return", this.savePayloads([payload]));\n\n case 1:\n case "end":\n return _context16.stop();\n }\n }\n }, _callee16, this);\n }));\n\n function savePayload(_x11) {\n return _savePayload.apply(this, arguments);\n }\n\n return savePayload;\n }()\n }, {\n key: "savePayloads",\n value: function () {\n var _savePayloads = _asyncToGenerator( /*#__PURE__*/_babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0___default.a.mark(function _callee18(decryptedPayloads) {\n var _this3 = this;\n\n var nondeleted, _iteratorNormalCompletion, _didIteratorError, _iteratorError, _iterator, _step, payload, encrypted;\n\n return _babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0___default.a.wrap(function _callee18$(_context18) {\n while (1) {\n switch (_context18.prev = _context18.next) {\n case 0:\n if (!(this.persistencePolicy === StoragePersistencePolicies.Ephemeral)) {\n _context18.next = 2;\n break;\n }\n\n return _context18.abrupt("return");\n\n case 2:\n nondeleted = [];\n _iteratorNormalCompletion = true;\n _didIteratorError = false;\n _iteratorError = undefined;\n _context18.prev = 6;\n _iterator = decryptedPayloads[Symbol.iterator]();\n\n case 8:\n if (_iteratorNormalCompletion = (_step = _iterator.next()).done) {\n _context18.next = 24;\n break;\n }\n\n payload = _step.value;\n\n if (!payload.discardable) {\n _context18.next = 15;\n break;\n }\n\n _context18.next = 13;\n return this.deletePayloadWithId(payload.uuid);\n\n case 13:\n _context18.next = 21;\n break;\n\n case 15:\n if (payload.uuid) {\n _context18.next = 17;\n break;\n }\n\n throw Error(\'Attempting to persist payload with no uuid\');\n\n case 17:\n _context18.next = 19;\n return this.encryptionDelegate.payloadByEncryptingPayload(payload, this.encryptionPolicy === StorageEncryptionPolicies.Default ? _Protocol_intents__WEBPACK_IMPORTED_MODULE_4__["EncryptionIntent"].LocalStoragePreferEncrypted : _Protocol_intents__WEBPACK_IMPORTED_MODULE_4__["EncryptionIntent"].LocalStorageDecrypted);\n\n case 19:\n encrypted = _context18.sent;\n nondeleted.push(encrypted.ejected());\n\n case 21:\n _iteratorNormalCompletion = true;\n _context18.next = 8;\n break;\n\n case 24:\n _context18.next = 30;\n break;\n\n case 26:\n _context18.prev = 26;\n _context18.t0 = _context18["catch"](6);\n _didIteratorError = true;\n _iteratorError = _context18.t0;\n\n case 30:\n _context18.prev = 30;\n _context18.prev = 31;\n\n if (!_iteratorNormalCompletion && _iterator.return != null) {\n _iterator.return();\n }\n\n case 33:\n _context18.prev = 33;\n\n if (!_didIteratorError) {\n _context18.next = 36;\n break;\n }\n\n throw _iteratorError;\n\n case 36:\n return _context18.finish(33);\n\n case 37:\n return _context18.finish(30);\n\n case 38:\n return _context18.abrupt("return", this.executeCriticalFunction( /*#__PURE__*/_asyncToGenerator( /*#__PURE__*/_babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0___default.a.mark(function _callee17() {\n return _babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0___default.a.wrap(function _callee17$(_context17) {\n while (1) {\n switch (_context17.prev = _context17.next) {\n case 0:\n return _context17.abrupt("return", _this3.deviceInterface.saveRawDatabasePayloads(nondeleted));\n\n case 1:\n case "end":\n return _context17.stop();\n }\n }\n }, _callee17);\n }))));\n\n case 39:\n case "end":\n return _context18.stop();\n }\n }\n }, _callee18, this, [[6, 26, 30, 38], [31,, 33, 37]]);\n }));\n\n function savePayloads(_x12) {\n return _savePayloads.apply(this, arguments);\n }\n\n return savePayloads;\n }()\n }, {\n key: "deletePayloads",\n value: function () {\n var _deletePayloads = _asyncToGenerator( /*#__PURE__*/_babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0___default.a.mark(function _callee19(payloads) {\n var _iteratorNormalCompletion2, _didIteratorError2, _iteratorError2, _iterator2, _step2, payload;\n\n return _babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0___default.a.wrap(function _callee19$(_context19) {\n while (1) {\n switch (_context19.prev = _context19.next) {\n case 0:\n _iteratorNormalCompletion2 = true;\n _didIteratorError2 = false;\n _iteratorError2 = undefined;\n _context19.prev = 3;\n _iterator2 = payloads[Symbol.iterator]();\n\n case 5:\n if (_iteratorNormalCompletion2 = (_step2 = _iterator2.next()).done) {\n _context19.next = 12;\n break;\n }\n\n payload = _step2.value;\n _context19.next = 9;\n return this.deletePayloadWithId(payload.uuid);\n\n case 9:\n _iteratorNormalCompletion2 = true;\n _context19.next = 5;\n break;\n\n case 12:\n _context19.next = 18;\n break;\n\n case 14:\n _context19.prev = 14;\n _context19.t0 = _context19["catch"](3);\n _didIteratorError2 = true;\n _iteratorError2 = _context19.t0;\n\n case 18:\n _context19.prev = 18;\n _context19.prev = 19;\n\n if (!_iteratorNormalCompletion2 && _iterator2.return != null) {\n _iterator2.return();\n }\n\n case 21:\n _context19.prev = 21;\n\n if (!_didIteratorError2) {\n _context19.next = 24;\n break;\n }\n\n throw _iteratorError2;\n\n case 24:\n return _context19.finish(21);\n\n case 25:\n return _context19.finish(18);\n\n case 26:\n case "end":\n return _context19.stop();\n }\n }\n }, _callee19, this, [[3, 14, 18, 26], [19,, 21, 25]]);\n }));\n\n function deletePayloads(_x13) {\n return _deletePayloads.apply(this, arguments);\n }\n\n return deletePayloads;\n }()\n }, {\n key: "deletePayloadWithId",\n value: function () {\n var _deletePayloadWithId = _asyncToGenerator( /*#__PURE__*/_babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0___default.a.mark(function _callee21(id) {\n var _this4 = this;\n\n return _babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0___default.a.wrap(function _callee21$(_context21) {\n while (1) {\n switch (_context21.prev = _context21.next) {\n case 0:\n return _context21.abrupt("return", this.executeCriticalFunction( /*#__PURE__*/_asyncToGenerator( /*#__PURE__*/_babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0___default.a.mark(function _callee20() {\n return _babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0___default.a.wrap(function _callee20$(_context20) {\n while (1) {\n switch (_context20.prev = _context20.next) {\n case 0:\n return _context20.abrupt("return", _this4.deviceInterface.removeRawDatabasePayloadWithId(id));\n\n case 1:\n case "end":\n return _context20.stop();\n }\n }\n }, _callee20);\n }))));\n\n case 1:\n case "end":\n return _context21.stop();\n }\n }\n }, _callee21, this);\n }));\n\n function deletePayloadWithId(_x14) {\n return _deletePayloadWithId.apply(this, arguments);\n }\n\n return deletePayloadWithId;\n }()\n }, {\n key: "clearAllPayloads",\n value: function () {\n var _clearAllPayloads = _asyncToGenerator( /*#__PURE__*/_babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0___default.a.mark(function _callee23() {\n var _this5 = this;\n\n return _babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0___default.a.wrap(function _callee23$(_context23) {\n while (1) {\n switch (_context23.prev = _context23.next) {\n case 0:\n return _context23.abrupt("return", this.executeCriticalFunction( /*#__PURE__*/_asyncToGenerator( /*#__PURE__*/_babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0___default.a.mark(function _callee22() {\n return _babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0___default.a.wrap(function _callee22$(_context22) {\n while (1) {\n switch (_context22.prev = _context22.next) {\n case 0:\n return _context22.abrupt("return", _this5.deviceInterface.removeAllRawDatabasePayloads());\n\n case 1:\n case "end":\n return _context22.stop();\n }\n }\n }, _callee22);\n }))));\n\n case 1:\n case "end":\n return _context23.stop();\n }\n }\n }, _callee23, this);\n }));\n\n function clearAllPayloads() {\n return _clearAllPayloads.apply(this, arguments);\n }\n\n return clearAllPayloads;\n }()\n }, {\n key: "clearAllData",\n value: function () {\n var _clearAllData = _asyncToGenerator( /*#__PURE__*/_babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0___default.a.mark(function _callee24() {\n return _babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0___default.a.wrap(function _callee24$(_context24) {\n while (1) {\n switch (_context24.prev = _context24.next) {\n case 0:\n return _context24.abrupt("return", Promise.all([this.clearValues(), this.clearAllPayloads()]));\n\n case 1:\n case "end":\n return _context24.stop();\n }\n }\n }, _callee24, this);\n }));\n\n function clearAllData() {\n return _clearAllData.apply(this, arguments);\n }\n\n return clearAllData;\n }()\n }], [{\n key: "defaultValuesObject",\n value: function defaultValuesObject() {\n var _ref5;\n\n var wrapped = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n var unwrapped = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n var nonwrapped = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {};\n return _ref5 = {}, _defineProperty(_ref5, ValueModesKeys.Wrapped, wrapped), _defineProperty(_ref5, ValueModesKeys.Unwrapped, unwrapped), _defineProperty(_ref5, ValueModesKeys.Nonwrapped, nonwrapped), _ref5;\n }\n }]);\n\n return SNStorageService;\n}(_Lib_services_pure_service__WEBPACK_IMPORTED_MODULE_5__["PureService"]);//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9saWIvc2VydmljZXMvc3RvcmFnZV9zZXJ2aWNlLnRzLmpzIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vU05MaWJyYXJ5Ly4vbGliL3NlcnZpY2VzL3N0b3JhZ2Vfc2VydmljZS50cz83MjkxIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IFJhd1N0b3JhZ2VLZXksIG5hbWVzcGFjZWRLZXkgfSBmcm9tICdATGliL3N0b3JhZ2Vfa2V5cyc7XG5pbXBvcnQgeyBBcHBsaWNhdGlvblN0YWdlIH0gZnJvbSAnQExpYi9zdGFnZXMnO1xuaW1wb3J0IHsgQ3JlYXRlTWF4UGF5bG9hZEZyb21BbnlPYmplY3QgfSBmcm9tICdAUGF5bG9hZHMvZ2VuZXJhdG9yJztcbmltcG9ydCB7IEVuY3J5cHRpb25JbnRlbnQgfSBmcm9tICdAUHJvdG9jb2wvaW50ZW50cyc7XG5pbXBvcnQgeyBQdXJlU2VydmljZSB9IGZyb20gJ0BMaWIvc2VydmljZXMvcHVyZV9zZXJ2aWNlJztcbmltcG9ydCB7IENvbnRlbnRUeXBlIH0gZnJvbSAnQE1vZGVscy9jb250ZW50X3R5cGVzJztcbmltcG9ydCB7IGlzTnVsbE9yVW5kZWZpbmVkLCBDb3B5IH0gZnJvbSAnQExpYi91dGlscyc7XG5pbXBvcnQgeyBVdWlkIH0gZnJvbSAnQExpYi91dWlkJztcbmV4cG9ydCB2YXIgU3RvcmFnZVBlcnNpc3RlbmNlUG9saWNpZXM7XG4oZnVuY3Rpb24gKFN0b3JhZ2VQZXJzaXN0ZW5jZVBvbGljaWVzKSB7XG4gICAgU3RvcmFnZVBlcnNpc3RlbmNlUG9saWNpZXNbU3RvcmFnZVBlcnNpc3RlbmNlUG9saWNpZXNbXCJEZWZhdWx0XCJdID0gMV0gPSBcIkRlZmF1bHRcIjtcbiAgICBTdG9yYWdlUGVyc2lzdGVuY2VQb2xpY2llc1tTdG9yYWdlUGVyc2lzdGVuY2VQb2xpY2llc1tcIkVwaGVtZXJhbFwiXSA9IDJdID0gXCJFcGhlbWVyYWxcIjtcbn0pKFN0b3JhZ2VQZXJzaXN0ZW5jZVBvbGljaWVzIHx8IChTdG9yYWdlUGVyc2lzdGVuY2VQb2xpY2llcyA9IHt9KSk7XG47XG5leHBvcnQgdmFyIFN0b3JhZ2VFbmNyeXB0aW9uUG9saWNpZXM7XG4oZnVuY3Rpb24gKFN0b3JhZ2VFbmNyeXB0aW9uUG9saWNpZXMpIHtcbiAgICBTdG9yYWdlRW5jcnlwdGlvblBvbGljaWVzW1N0b3JhZ2VFbmNyeXB0aW9uUG9saWNpZXNbXCJEZWZhdWx0XCJdID0gMV0gPSBcIkRlZmF1bHRcIjtcbiAgICBTdG9yYWdlRW5jcnlwdGlvblBvbGljaWVzW1N0b3JhZ2VFbmNyeXB0aW9uUG9saWNpZXNbXCJEaXNhYmxlZFwiXSA9IDJdID0gXCJEaXNhYmxlZFwiO1xufSkoU3RvcmFnZUVuY3J5cHRpb25Qb2xpY2llcyB8fCAoU3RvcmFnZUVuY3J5cHRpb25Qb2xpY2llcyA9IHt9KSk7XG47XG5leHBvcnQgdmFyIFN0b3JhZ2VWYWx1ZU1vZGVzO1xuKGZ1bmN0aW9uIChTdG9yYWdlVmFsdWVNb2Rlcykge1xuICAgIC8qKiBTdG9yZWQgaW5zaWRlIHdyYXBwZWQgZW5jcnB5ZWQgc3RvcmFnZSBvYmplY3QgKi9cbiAgICBTdG9yYWdlVmFsdWVNb2Rlc1tTdG9yYWdlVmFsdWVNb2Rlc1tcIkRlZmF1bHRcIl0gPSAxXSA9IFwiRGVmYXVsdFwiO1xuICAgIC8qKiBTdG9yZWQgb3V0c2lkZSBzdG9yYWdlIG9iamVjdCwgdW5lbmNyeXB0ZWQgKi9cbiAgICBTdG9yYWdlVmFsdWVNb2Rlc1tTdG9yYWdlVmFsdWVNb2Rlc1tcIk5vbndyYXBwZWRcIl0gPSAyXSA9IFwiTm9ud3JhcHBlZFwiO1xufSkoU3RvcmFnZVZhbHVlTW9kZXMgfHwgKFN0b3JhZ2VWYWx1ZU1vZGVzID0ge30pKTtcbjtcbmV4cG9ydCB2YXIgVmFsdWVNb2Rlc0tleXM7XG4oZnVuY3Rpb24gKFZhbHVlTW9kZXNLZXlzKSB7XG4gICAgLyogSXMgZW5jcnlwdGVkICovXG4gICAgVmFsdWVNb2Rlc0tleXNbXCJXcmFwcGVkXCJdID0gXCJ3cmFwcGVkXCI7XG4gICAgLyogSXMgZGVjcnlwdGVkICovXG4gICAgVmFsdWVNb2Rlc0tleXNbXCJVbndyYXBwZWRcIl0gPSBcInVud3JhcHBlZFwiO1xuICAgIC8qIExpdmVzIG91dHNpZGUgb2Ygd3JhcHBlZC91bndyYXBwZWQgKi9cbiAgICBWYWx1ZU1vZGVzS2V5c1tcIk5vbndyYXBwZWRcIl0gPSBcIm5vbndyYXBwZWRcIjtcbn0pKFZhbHVlTW9kZXNLZXlzIHx8IChWYWx1ZU1vZGVzS2V5cyA9IHt9KSk7XG47XG4vKipcbiAqIFRoZSBzdG9yYWdlIHNlcnZpY2UgaXMgcmVzcG9uc2libGUgZm9yIHBlcnNpc3RlbmNlIG9mIGJvdGggc2ltcGxlIGtleS12YWx1ZXMsIGFuZCBwYXlsb2FkXG4gKiBzdG9yYWdlLiBJdCBkb2VzIHNvIGJ5IHJlbHlpbmcgb24gZGV2aWNlSW50ZXJmYWNlIHRvIHNhdmUgYW5kIHJldHJpZXZlIHJhdyB2YWx1ZXMgYW5kIHBheWxvYWRzLlxuICogRm9yIHNpbXBsZSBrZXkvdmFsdWVzLCBpdGVtcyBhcmUgZ3JvdXBlZCB0b2dldGhlciBpbiBhbiBpbi1tZW1vcnkgaGFzaCwgYW5kIHBlcnNpc3RlZCB0byBkaXNrXG4gKiBhcyBhIHNpbmdsZSBvYmplY3QgKGVuY3J5cHRlZCwgd2hlbiBwb3NzaWJsZSkuIEl0IGhhbmRsZXMgcGVyc2lzdGluZyBwYXlsb2FkcyBpbiB0aGUgbG9jYWxcbiAqIGRhdGFiYXNlIGJ5IGVuY3J5cHRpbmcgdGhlIHBheWxvYWRzIHdoZW4gcG9zc2libGUuXG4gKiBUaGUgc3RvcmFnZSBzZXJ2aWNlIGFsc28gZXhwb3NlcyBtZXRob2RzIHRoYXQgYWxsb3cgdGhlIGFwcGxpY2F0aW9uIHRvIGluaXRpYWxseVxuICogZGVjcnlwdCB0aGUgcGVyc2lzdGVkIGtleS92YWx1ZXMsIGFuZCBhbHNvIGEgbWV0aG9kIHRvIGRldGVybWluZSB3aGV0aGVyIGEgcGFydGljdWxhclxuICoga2V5IGNhbiBkZWNyeXB0IHdyYXBwZWQgc3RvcmFnZS5cbiAqL1xuZXhwb3J0IGNsYXNzIFNOU3RvcmFnZVNlcnZpY2UgZXh0ZW5kcyBQdXJlU2VydmljZSB7XG4gICAgY29uc3RydWN0b3IoZGV2aWNlSW50ZXJmYWNlLCBuYW1lc3BhY2UpIHtcbiAgICAgICAgc3VwZXIoKTtcbiAgICAgICAgLyoqIFdhaXQgdW50aWwgYXBwbGljYXRpb24gaGFzIGJlZW4gdW5sb2NrZWQgYmVmb3JlIHRyeWluZyB0byBwZXJzaXN0ICovXG4gICAgICAgIHRoaXMuc3RvcmFnZVBlcnNpc3RhYmxlID0gZmFsc2U7XG4gICAgICAgIHRoaXMuZGV2aWNlSW50ZXJmYWNlID0gZGV2aWNlSW50ZXJmYWNlO1xuICAgICAgICB0aGlzLm5hbWVzcGFjZSA9IG5hbWVzcGFjZTtcbiAgICAgICAgdGhpcy5zZXRQZXJzaXN0ZW5jZVBvbGljeShTdG9yYWdlUGVyc2lzdGVuY2VQb2xpY2llcy5EZWZhdWx0KTtcbiAgICAgICAgdGhpcy5zZXRFbmNyeXB0aW9uUG9saWN5KFN0b3JhZ2VFbmNyeXB0aW9uUG9saWNpZXMuRGVmYXVsdCk7XG4gICAgfVxuICAgIGRlaW5pdCgpIHtcbiAgICAgICAgdGhpcy5kZXZpY2VJbnRlcmZhY2UgPSB1bmRlZmluZWQ7XG4gICAgICAgIHRoaXMuZW5jcnlwdGlvbkRlbGVnYXRlID0gdW5kZWZpbmVkO1xuICAgICAgICBzdXBlci5kZWluaXQoKTtcbiAgICB9XG4gICAgYXN5bmMgaGFuZGxlQXBwbGljYXRpb25TdGFnZShzdGFnZSkge1xuICAgICAgICBhd2FpdCBzdXBlci5oYW5kbGVBcHBsaWNhdGlvblN0YWdlKHN0YWdlKTtcbiAgICAgICAgaWYgKHN0YWdlID09PSBBcHBsaWNhdGlvblN0YWdlLkxhdW5jaGVkXzEwKSB7XG4gICAgICAgICAgICB0aGlzLnN0b3JhZ2VQZXJzaXN0YWJsZSA9IHRydWU7XG4gICAgICAgIH1cbiAgICB9XG4gICAgYXN5bmMgc2V0UGVyc2lzdGVuY2VQb2xpY3kocGVyc2lzdGVuY2VQb2xpY3kpIHtcbiAgICAgICAgdGhpcy5wZXJzaXN0ZW5jZVBvbGljeSA9IHBlcnNpc3RlbmNlUG9saWN5O1xuICAgICAgICBpZiAodGhpcy5wZXJzaXN0ZW5jZVBvbGljeSA9PT0gU3RvcmFnZVBlcnNpc3RlbmNlUG9saWNpZXMuRXBoZW1lcmFsKSB7XG4gICAgICAgICAgICBhd2FpdCB0aGlzLmRldmljZUludGVyZmFjZS5yZW1vdmVBbGxSYXdTdG9yYWdlVmFsdWVzKCk7XG4gICAgICAgICAgICBhd2FpdCB0aGlzLmNsZWFyQWxsUGF5bG9hZHMoKTtcbiAgICAgICAgfVxuICAgIH1cbiAgICBhc3luYyBzZXRFbmNyeXB0aW9uUG9saWN5KGVuY3J5cHRpb25Qb2xpY3kpIHtcbiAgICAgICAgdGhpcy5lbmNyeXB0aW9uUG9saWN5ID0gZW5jcnlwdGlvblBvbGljeTtcbiAgICB9XG4gICAgaXNFcGhlbWVyYWxTZXNzaW9uKCkge1xuICAgICAgICByZXR1cm4gdGhpcy5wZXJzaXN0ZW5jZVBvbGljeSA9PT0gU3RvcmFnZVBlcnNpc3RlbmNlUG9saWNpZXMuRXBoZW1lcmFsO1xuICAgIH1cbiAgICBhc3luYyBpbml0aWFsaXplRnJvbURpc2soKSB7XG4gICAgICAgIGNvbnN0IHZhbHVlID0gYXdhaXQgdGhpcy5kZXZpY2VJbnRlcmZhY2UuZ2V0UmF3U3RvcmFnZVZhbHVlKHRoaXMuZ2V0UGVyc2lzdGVuY2VLZXkoKSk7XG4gICAgICAgIGNvbnN0IHBheWxvYWQgPSB2YWx1ZSA/IEpTT04ucGFyc2UodmFsdWUpIDogbnVsbDtcbiAgICAgICAgdGhpcy5zZXRJbml0aWFsVmFsdWVzKHBheWxvYWQpO1xuICAgIH1cbiAgICAvKipcbiAgICAgKiBDYWxsZWQgYnkgcGxhdGZvcm1zIHdpdGggdGhlIHZhbHVlIHRoZXkgbG9hZCBmcm9tIGRpc2ssXG4gICAgICogYWZ0ZXIgdGhleSBoYW5kbGUgaW5pdGlhbGl6ZUZyb21EaXNrXG4gICAgICovXG4gICAgc2V0SW5pdGlhbFZhbHVlcyh2YWx1ZXMpIHtcbiAgICAgICAgaWYgKCF2YWx1ZXMpIHtcbiAgICAgICAgICAgIHZhbHVlcyA9IHRoaXMuZGVmYXVsdFZhbHVlc09iamVjdCgpO1xuICAgICAgICB9XG4gICAgICAgIGlmICghdmFsdWVzW1ZhbHVlTW9kZXNLZXlzLlVud3JhcHBlZF0pIHtcbiAgICAgICAgICAgIHZhbHVlc1tWYWx1ZU1vZGVzS2V5cy5VbndyYXBwZWRdID0ge307XG4gICAgICAgIH1cbiAgICAgICAgdGhpcy52YWx1ZXMgPSB2YWx1ZXM7XG4gICAgfVxuICAgIGlzU3RvcmFnZVdyYXBwZWQoKSB7XG4gICAgICAgIGNvbnN0IHdyYXBwZWRWYWx1ZSA9IHRoaXMudmFsdWVzW1ZhbHVlTW9kZXNLZXlzLldyYXBwZWRdO1xuICAgICAgICByZXR1cm4gIWlzTnVsbE9yVW5kZWZpbmVkKHdyYXBwZWRWYWx1ZSkgJiYgT2JqZWN0LmtleXMod3JhcHBlZFZhbHVlKS5sZW5ndGggPiAwO1xuICAgIH1cbiAgICBhc3luYyBjYW5EZWNyeXB0V2l0aEtleShrZXkpIHtcbiAgICAgICAgY29uc3Qgd3JhcHBlZFZhbHVlID0gdGhpcy52YWx1ZXNbVmFsdWVNb2Rlc0tleXMuV3JhcHBlZF07XG4gICAgICAgIGNvbnN0IGRlY3J5cHRlZFBheWxvYWQgPSBhd2FpdCB0aGlzLmRlY3J5cHRXcmFwcGVkVmFsdWUod3JhcHBlZFZhbHVlLCBrZXkpO1xuICAgICAgICByZXR1cm4gIWRlY3J5cHRlZFBheWxvYWQuZXJyb3JEZWNyeXB0aW5nO1xuICAgIH1cbiAgICBhc3luYyBkZWNyeXB0V3JhcHBlZFZhbHVlKHdyYXBwZWRWYWx1ZSwga2V5KSB7XG4gICAgICAgIC8qKlxuICAgICAgICAqIFRoZSByZWFkIGNvbnRlbnQgdHlwZSBkb2Vzbid0IG1hdHRlciwgc28gbG9uZyBhcyB3ZSBrbm93IGl0IHJlc3BvbmRzXG4gICAgICAgICogdG8gY29udGVudCB0eXBlLiBUaGlzIGFsbG93cyBhIG1vcmUgc2VhbWxlc3MgdHJhbnNpdGlvbiB3aGVuIGJvdGggd2ViXG4gICAgICAgICogYW5kIG1vYmlsZSB1c2VkIGRpZmZlcmVudCBjb250ZW50IHR5cGVzIGZvciBlbmNyeXB0ZWQgc3RvcmFnZS5cbiAgICAgICAgKi9cbiAgICAgICAgaWYgKCF3cmFwcGVkVmFsdWUuY29udGVudF90eXBlKSB7XG4gICAgICAgICAgICB0aHJvdyAnQXR0ZW1wdGluZyB0byBkZWNyeXB0IG5vbmV4aXN0ZW50IHdyYXBwZWQgdmFsdWUnO1xuICAgICAgICB9XG4gICAgICAgIGNvbnN0IHBheWxvYWQgPSBDcmVhdGVNYXhQYXlsb2FkRnJvbUFueU9iamVjdCh3cmFwcGVkVmFsdWUsIHtcbiAgICAgICAgICAgIGNvbnRlbnRfdHlwZTogQ29udGVudFR5cGUuRW5jcnlwdGVkU3RvcmFnZVxuICAgICAgICB9KTtcbiAgICAgICAgY29uc3QgZGVjcnlwdGVkUGF5bG9hZCA9IGF3YWl0IHRoaXMuZW5jcnlwdGlvbkRlbGVnYXRlLnBheWxvYWRCeURlY3J5cHRpbmdQYXlsb2FkKHBheWxvYWQsIGtleSk7XG4gICAgICAgIHJldHVybiBkZWNyeXB0ZWRQYXlsb2FkO1xuICAgIH1cbiAgICBhc3luYyBkZWNyeXB0U3RvcmFnZSgpIHtcbiAgICAgICAgY29uc3Qgd3JhcHBlZFZhbHVlID0gdGhpcy52YWx1ZXNbVmFsdWVNb2Rlc0tleXMuV3JhcHBlZF07XG4gICAgICAgIGNvbnN0IGRlY3J5cHRlZFBheWxvYWQgPSBhd2FpdCB0aGlzLmRlY3J5cHRXcmFwcGVkVmFsdWUod3JhcHBlZFZhbHVlKTtcbiAgICAgICAgaWYgKGRlY3J5cHRlZFBheWxvYWQuZXJyb3JEZWNyeXB0aW5nKSB7XG4gICAgICAgICAgICB0aHJvdyAnVW5hYmxlIHRvIGRlY3J5cHQgc3RvcmFnZS4nO1xuICAgICAgICB9XG4gICAgICAgIHRoaXMudmFsdWVzW1ZhbHVlTW9kZXNLZXlzLlVud3JhcHBlZF0gPSBDb3B5KGRlY3J5cHRlZFBheWxvYWQuY29udGVudE9iamVjdCk7XG4gICAgICAgIGRlbGV0ZSB0aGlzLnZhbHVlc1tWYWx1ZU1vZGVzS2V5cy5XcmFwcGVkXTtcbiAgICB9XG4gICAgLyoqXG4gICAgICogR2VuZXJhdGVzIGEgcGF5bG9hZCB0aGF0IGNhbiBiZSBwZXJzaXN0ZWQgdG8gZGlzayxcbiAgICAgKiBlaXRoZXIgYXMgYSBwbGFpbiBvYmplY3QsIG9yIGFuIGVuY3J5cHRlZCBpdGVtLlxuICAgICAqL1xuICAgIGFzeW5jIGdlbmVyYXRlUGVyc2lzdGVuY2VWYWx1ZSgpIHtcbiAgICAgICAgY29uc3QgcmF3Q29udGVudCA9IE9iamVjdC5hc3NpZ24oe30sIHRoaXMudmFsdWVzKTtcbiAgICAgICAgY29uc3QgdmFsdWVzVG9XcmFwID0gcmF3Q29udGVudFtWYWx1ZU1vZGVzS2V5cy5VbndyYXBwZWRdO1xuICAgICAgICBjb25zdCBwYXlsb2FkID0gQ3JlYXRlTWF4UGF5bG9hZEZyb21BbnlPYmplY3Qoe1xuICAgICAgICAgICAgdXVpZDogYXdhaXQgVXVpZC5HZW5lcmF0ZVV1aWQoKSxcbiAgICAgICAgICAgIGNvbnRlbnQ6IHZhbHVlc1RvV3JhcCxcbiAgICAgICAgICAgIGNvbnRlbnRfdHlwZTogQ29udGVudFR5cGUuRW5jcnlwdGVkU3RvcmFnZVxuICAgICAgICB9KTtcbiAgICAgICAgY29uc3QgZW5jcnlwdGVkUGF5bG9hZCA9IGF3YWl0IHRoaXMuZW5jcnlwdGlvbkRlbGVnYXRlLnBheWxvYWRCeUVuY3J5cHRpbmdQYXlsb2FkKHBheWxvYWQsIEVuY3J5cHRpb25JbnRlbnQuTG9jYWxTdG9yYWdlUHJlZmVyRW5jcnlwdGVkKTtcbiAgICAgICAgcmF3Q29udGVudFtWYWx1ZU1vZGVzS2V5cy5XcmFwcGVkXSA9IGVuY3J5cHRlZFBheWxvYWQuZWplY3RlZCgpO1xuICAgICAgICByYXdDb250ZW50W1ZhbHVlTW9kZXNLZXlzLlVud3JhcHBlZF0gPSB1bmRlZmluZWQ7XG4gICAgICAgIHJldHVybiByYXdDb250ZW50O1xuICAgIH1cbiAgICAvKiogQHRvZG8gVGhpcyBmdW5jdGlvbiBzaG91bGQgYmUgZGVib3VuY2VkLiAqL1xuICAgIGFzeW5jIHJlcGVyc2lzdFRvRGlzaygpIHtcbiAgICAgICAgaWYgKCF0aGlzLnN0b3JhZ2VQZXJzaXN0YWJsZSkge1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG4gICAgICAgIGlmICh0aGlzLnBlcnNpc3RlbmNlUG9saWN5ID09PSBTdG9yYWdlUGVyc2lzdGVuY2VQb2xpY2llcy5FcGhlbWVyYWwpIHtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gdGhpcy5leGVjdXRlQ3JpdGljYWxGdW5jdGlvbihhc3luYyAoKSA9PiB7XG4gICAgICAgICAgICBjb25zdCB2YWx1ZSA9IGF3YWl0IHRoaXMuZ2VuZXJhdGVQZXJzaXN0ZW5jZVZhbHVlKCk7XG4gICAgICAgICAgICAvKiogU2F2ZSB0aGUgcGVyc2lzdGVkIHZhbHVlIHNvIHdlIGhhdmUgYWNjZXNzIHRvIGl0IGluIG1lbW9yeSAoZm9yIHVuaXQgdGVzdHMgYWZhd2spICovXG4gICAgICAgICAgICB0aGlzLnZhbHVlc1tWYWx1ZU1vZGVzS2V5cy5XcmFwcGVkXSA9IHZhbHVlW1ZhbHVlTW9kZXNLZXlzLldyYXBwZWRdO1xuICAgICAgICAgICAgcmV0dXJuIHRoaXMuZGV2aWNlSW50ZXJmYWNlLnNldFJhd1N0b3JhZ2VWYWx1ZSh0aGlzLmdldFBlcnNpc3RlbmNlS2V5KCksIEpTT04uc3RyaW5naWZ5KHZhbHVlKSk7XG4gICAgICAgIH0pO1xuICAgIH1cbiAgICBhc3luYyBzZXRWYWx1ZShrZXksIHZhbHVlLCBtb2RlID0gU3RvcmFnZVZhbHVlTW9kZXMuRGVmYXVsdCkge1xuICAgICAgICBpZiAoIXRoaXMudmFsdWVzKSB7XG4gICAgICAgICAgICB0aHJvdyBgQXR0ZW1wdGluZyB0byBzZXQgc3RvcmFnZSBrZXkgJHtrZXl9IGJlZm9yZSBsb2FkaW5nIGxvY2FsIHN0b3JhZ2UuYDtcbiAgICAgICAgfVxuICAgICAgICB0aGlzLnZhbHVlc1t0aGlzLmRvbWFpbktleUZvck1vZGUobW9kZSldW2tleV0gPSB2YWx1ZTtcbiAgICAgICAgcmV0dXJuIHRoaXMucmVwZXJzaXN0VG9EaXNrKCk7XG4gICAgfVxuICAgIGFzeW5jIGdldFZhbHVlKGtleSwgbW9kZSA9IFN0b3JhZ2VWYWx1ZU1vZGVzLkRlZmF1bHQpIHtcbiAgICAgICAgaWYgKCF0aGlzLnZhbHVlcykge1xuICAgICAgICAgICAgdGhyb3cgYEF0dGVtcHRpbmcgdG8gZ2V0IHN0b3JhZ2Uga2V5ICR7a2V5fSBiZWZvcmUgbG9hZGluZyBsb2NhbCBzdG9yYWdlLmA7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKCF0aGlzLnZhbHVlc1t0aGlzLmRvbWFpbktleUZvck1vZGUobW9kZSldKSB7XG4gICAgICAgICAgICB0aHJvdyBgU3RvcmFnZSBkb21haW4gbW9kZSBub3QgYXZhaWxhYmxlICR7bW9kZX0gZm9yIGtleSAke2tleX1gO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiB0aGlzLnZhbHVlc1t0aGlzLmRvbWFpbktleUZvck1vZGUobW9kZSldW2tleV07XG4gICAgfVxuICAgIGFzeW5jIHJlbW92ZVZhbHVlKGtleSwgbW9kZSA9IFN0b3JhZ2VWYWx1ZU1vZGVzLkRlZmF1bHQpIHtcbiAgICAgICAgaWYgKCF0aGlzLnZhbHVlcykge1xuICAgICAgICAgICAgdGhyb3cgYEF0dGVtcHRpbmcgdG8gcmVtb3ZlIHN0b3JhZ2Uga2V5ICR7a2V5fSBiZWZvcmUgbG9hZGluZyBsb2NhbCBzdG9yYWdlLmA7XG4gICAgICAgIH1cbiAgICAgICAgZGVsZXRlIHRoaXMudmFsdWVzW3RoaXMuZG9tYWluS2V5Rm9yTW9kZShtb2RlKV1ba2V5XTtcbiAgICAgICAgcmV0dXJuIHRoaXMucmVwZXJzaXN0VG9EaXNrKCk7XG4gICAgfVxuICAgIC8qKlxuICAgICAqIERlZmF1bHQgcGVyc2lzdGVuY2Uga2V5LiBQbGF0Zm9ybXMgY2FuIG92ZXJyaWRlIGFzIG5lZWRlZC5cbiAgICAgKi9cbiAgICBnZXRQZXJzaXN0ZW5jZUtleSgpIHtcbiAgICAgICAgcmV0dXJuIG5hbWVzcGFjZWRLZXkodGhpcy5uYW1lc3BhY2UsIFJhd1N0b3JhZ2VLZXkuU3RvcmFnZU9iamVjdCk7XG4gICAgfVxuICAgIGRlZmF1bHRWYWx1ZXNPYmplY3Qod3JhcHBlZCwgdW53cmFwcGVkLCBub253cmFwcGVkKSB7XG4gICAgICAgIHJldHVybiBTTlN0b3JhZ2VTZXJ2aWNlLmRlZmF1bHRWYWx1ZXNPYmplY3Qod3JhcHBlZCwgdW53cmFwcGVkLCBub253cmFwcGVkKTtcbiAgICB9XG4gICAgc3RhdGljIGRlZmF1bHRWYWx1ZXNPYmplY3Qod3JhcHBlZCA9IHt9LCB1bndyYXBwZWQgPSB7fSwgbm9ud3JhcHBlZCA9IHt9KSB7XG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICBbVmFsdWVNb2Rlc0tleXMuV3JhcHBlZF06IHdyYXBwZWQsXG4gICAgICAgICAgICBbVmFsdWVNb2Rlc0tleXMuVW53cmFwcGVkXTogdW53cmFwcGVkLFxuICAgICAgICAgICAgW1ZhbHVlTW9kZXNLZXlzLk5vbndyYXBwZWRdOiBub253cmFwcGVkXG4gICAgICAgIH07XG4gICAgfVxuICAgIGRvbWFpbktleUZvck1vZGUobW9kZSkge1xuICAgICAgICBpZiAobW9kZSA9PT0gU3RvcmFnZVZhbHVlTW9kZXMuRGVmYXVsdCkge1xuICAgICAgICAgICAgcmV0dXJuIFZhbHVlTW9kZXNLZXlzLlVud3JhcHBlZDtcbiAgICAgICAgfVxuICAgICAgICBlbHNlIGlmIChtb2RlID09PSBTdG9yYWdlVmFsdWVNb2Rlcy5Ob253cmFwcGVkKSB7XG4gICAgICAgICAgICByZXR1cm4gVmFsdWVNb2Rlc0tleXMuTm9ud3JhcHBlZDtcbiAgICAgICAgfVxuICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgIHRocm93ICdJbnZhbGlkIG1vZGUnO1xuICAgICAgICB9XG4gICAgfVxuICAgIC8qKlxuICAgICAqIENsZWFycyBzaW1wbGUgdmFsdWVzIGZyb20gc3RvcmFnZSBvbmx5LiBEb2VzIG5vdCBhZmZlY3QgcGF5bG9hZHMuXG4gICAgICovXG4gICAgYXN5bmMgY2xlYXJWYWx1ZXMoKSB7XG4gICAgICAgIHRoaXMuc2V0SW5pdGlhbFZhbHVlcygpO1xuICAgICAgICBhd2FpdCB0aGlzLnJlcGVyc2lzdFRvRGlzaygpO1xuICAgIH1cbiAgICBhc3luYyBnZXRBbGxSYXdQYXlsb2FkcygpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuZGV2aWNlSW50ZXJmYWNlLmdldEFsbFJhd0RhdGFiYXNlUGF5bG9hZHMoKTtcbiAgICB9XG4gICAgYXN5bmMgc2F2ZVBheWxvYWQocGF5bG9hZCkge1xuICAgICAgICByZXR1cm4gdGhpcy5zYXZlUGF5bG9hZHMoW3BheWxvYWRdKTtcbiAgICB9XG4gICAgYXN5bmMgc2F2ZVBheWxvYWRzKGRlY3J5cHRlZFBheWxvYWRzKSB7XG4gICAgICAgIGlmICh0aGlzLnBlcnNpc3RlbmNlUG9saWN5ID09PSBTdG9yYWdlUGVyc2lzdGVuY2VQb2xpY2llcy5FcGhlbWVyYWwpIHtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuICAgICAgICBjb25zdCBub25kZWxldGVkID0gW107XG4gICAgICAgIGZvciAoY29uc3QgcGF5bG9hZCBvZiBkZWNyeXB0ZWRQYXlsb2Fkcykge1xuICAgICAgICAgICAgaWYgKHBheWxvYWQuZGlzY2FyZGFibGUpIHtcbiAgICAgICAgICAgICAgICAvKiogSWYgdGhlIHBheWxvYWQgaXMgZGVsZXRlZCBhbmQgbm90IGRpcnR5LCByZW1vdmUgaXQgZnJvbSBkYi4gKi9cbiAgICAgICAgICAgICAgICBhd2FpdCB0aGlzLmRlbGV0ZVBheWxvYWRXaXRoSWQocGF5bG9hZC51dWlkKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgICAgIGlmICghcGF5bG9hZC51dWlkKSB7XG4gICAgICAgICAgICAgICAgICAgIHRocm93IEVycm9yKCdBdHRlbXB0aW5nIHRvIHBlcnNpc3QgcGF5bG9hZCB3aXRoIG5vIHV1aWQnKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgY29uc3QgZW5jcnlwdGVkID0gYXdhaXQgdGhpcy5lbmNyeXB0aW9uRGVsZWdhdGUucGF5bG9hZEJ5RW5jcnlwdGluZ1BheWxvYWQocGF5bG9hZCwgdGhpcy5lbmNyeXB0aW9uUG9saWN5ID09PSBTdG9yYWdlRW5jcnlwdGlvblBvbGljaWVzLkRlZmF1bHRcbiAgICAgICAgICAgICAgICAgICAgPyBFbmNyeXB0aW9uSW50ZW50LkxvY2FsU3RvcmFnZVByZWZlckVuY3J5cHRlZFxuICAgICAgICAgICAgICAgICAgICA6IEVuY3J5cHRpb25JbnRlbnQuTG9jYWxTdG9yYWdlRGVjcnlwdGVkKTtcbiAgICAgICAgICAgICAgICBub25kZWxldGVkLnB1c2goZW5jcnlwdGVkLmVqZWN0ZWQoKSk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHRoaXMuZXhlY3V0ZUNyaXRpY2FsRnVuY3Rpb24oYXN5bmMgKCkgPT4ge1xuICAgICAgICAgICAgcmV0dXJuIHRoaXMuZGV2aWNlSW50ZXJmYWNlLnNhdmVSYXdEYXRhYmFzZVBheWxvYWRzKG5vbmRlbGV0ZWQpO1xuICAgICAgICB9KTtcbiAgICB9XG4gICAgYXN5bmMgZGVsZXRlUGF5bG9hZHMocGF5bG9hZHMpIHtcbiAgICAgICAgZm9yIChjb25zdCBwYXlsb2FkIG9mIHBheWxvYWRzKSB7XG4gICAgICAgICAgICBhd2FpdCB0aGlzLmRlbGV0ZVBheWxvYWRXaXRoSWQocGF5bG9hZC51dWlkKTtcbiAgICAgICAgfVxuICAgIH1cbiAgICBhc3luYyBkZWxldGVQYXlsb2FkV2l0aElkKGlkKSB7XG4gICAgICAgIHJldHVybiB0aGlzLmV4ZWN1dGVDcml0aWNhbEZ1bmN0aW9uKGFzeW5jICgpID0+IHtcbiAgICAgICAgICAgIHJldHVybiB0aGlzLmRldmljZUludGVyZmFjZS5yZW1vdmVSYXdEYXRhYmFzZVBheWxvYWRXaXRoSWQoaWQpO1xuICAgICAgICB9KTtcbiAgICB9XG4gICAgYXN5bmMgY2xlYXJBbGxQYXlsb2FkcygpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuZXhlY3V0ZUNyaXRpY2FsRnVuY3Rpb24oYXN5bmMgKCkgPT4ge1xuICAgICAgICAgICAgcmV0dXJuIHRoaXMuZGV2aWNlSW50ZXJmYWNlLnJlbW92ZUFsbFJhd0RhdGFiYXNlUGF5bG9hZHMoKTtcbiAgICAgICAgfSk7XG4gICAgfVxuICAgIGFzeW5jIGNsZWFyQWxsRGF0YSgpIHtcbiAgICAgICAgcmV0dXJuIFByb21pc2UuYWxsKFtcbiAgICAgICAgICAgIHRoaXMuY2xlYXJWYWx1ZXMoKSxcbiAgICAgICAgICAgIHRoaXMuY2xlYXJBbGxQYXlsb2FkcygpXG4gICAgICAgIF0pO1xuICAgIH1cbn1cbiJdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7Ozs7Ozs7Ozs7O0FBVUE7QUFBQTtBQUNBO0FBQUE7QUFBQTtBQUNBO0FBREE7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUFBO0FBQ0E7QUFSQTtBQVFBO0FBQ0E7QUFWQTtBQUFBO0FBQUE7QUFXQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBZEE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFDQTtBQURBO0FBaUJBO0FBQ0E7QUFDQTtBQUNBO0FBcEJBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQ0E7QUFEQTtBQUFBO0FBQUE7QUFDQTtBQURBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBc0JBO0FBQ0E7QUF2QkE7QUFBQTtBQUFBO0FBQUE7QUFDQTtBQURBO0FBQUE7QUFDQTtBQURBO0FBQUE7QUFBQTtBQUNBO0FBREE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFDQTtBQURBO0FBQUE7QUFBQTtBQUNBO0FBREE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUE2QkE7QUFDQTtBQTlCQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUNBO0FBREE7QUFBQTtBQUFBO0FBQ0E7QUFEQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBZ0NBO0FBQ0E7QUFqQ0E7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUNBO0FBREE7QUFtQ0E7QUFDQTtBQUNBO0FBQ0E7QUF0Q0E7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFDQTtBQURBO0FBQUE7QUFBQTtBQUNBO0FBREE7QUFBQTtBQXVDQTs7Ozs7QUF2Q0E7QUFBQTtBQUFBO0FBNENBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBbkRBO0FBQUE7QUFBQTtBQXFEQTtBQUNBO0FBQ0E7QUF2REE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBeURBO0FBekRBO0FBQUE7QUFDQTtBQURBO0FBMERBO0FBMURBO0FBQ0E7QUFEQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUNBO0FBREE7QUFBQTtBQUFBO0FBQ0E7QUFEQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFDQTtBQURBO0FBQ0E7QUFEQTtBQXNFQTtBQUNBO0FBREE7QUF0RUE7QUFBQTtBQUNBO0FBREE7QUF5RUE7QUF6RUE7QUFDQTtBQURBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQ0E7QUFEQTtBQUFBO0FBQUE7QUFDQTtBQURBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUE2RUE7QUE3RUE7QUFBQTtBQUNBO0FBREE7QUE4RUE7QUFDQTtBQS9FQTtBQUFBO0FBQUE7QUFBQTtBQUNBO0FBREE7QUFDQTtBQURBO0FBa0ZBO0FBQ0E7QUFDQTtBQXBGQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUNBO0FBREE7QUFBQTtBQUFBO0FBQ0E7QUFEQTtBQUFBO0FBcUZBOzs7OztBQXJGQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUEwRkE7QUFDQTtBQTNGQTtBQUFBO0FBQUE7QUFDQTtBQURBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUE2RkE7QUFDQTtBQUNBO0FBL0ZBO0FBNEZBO0FBNUZBO0FBQUE7QUFDQTtBQURBO0FBaUdBO0FBQ0E7QUFDQTtBQW5HQTtBQUNBO0FBREE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFDQTtBQURBO0FBQUE7QUFBQTtBQUNBO0FBREE7QUFBQTtBQXNHQTtBQUNBO0FBdkdBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFDQTtBQURBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFDQTtBQURBO0FBQ0E7QUFEQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQ0E7QUFEQTtBQUNBO0FBREE7QUFBQTtBQThHQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUNBO0FBREE7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUhBO0FBQ0E7QUFEQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUNBO0FBL0dBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQ0E7QUFEQTtBQUFBO0FBQUE7QUFDQTtBQURBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQXFIQTtBQUNBO0FBdEhBO0FBQUE7QUFBQTtBQUFBO0FBQ0E7QUFEQTtBQUNBO0FBREE7QUF5SEE7QUF6SEE7QUFDQTtBQURBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQ0E7QUFEQTtBQUFBO0FBQUE7QUFDQTtBQURBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQTRIQTtBQUNBO0FBN0hBO0FBQUE7QUFBQTtBQUFBO0FBQ0E7QUFEQTtBQUNBO0FBREE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUNBO0FBREE7QUFDQTtBQURBO0FBQUE7QUFDQTtBQURBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQ0E7QUFEQTtBQUFBO0FBQUE7QUFDQTtBQURBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQXFJQTtBQUNBO0FBdElBO0FBQUE7QUFBQTtBQUFBO0FBQ0E7QUFEQTtBQUNBO0FBREE7QUF5SUE7QUF6SUE7QUFDQTtBQURBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQ0E7QUFEQTtBQUFBO0FBQUE7QUFDQTtBQURBO0FBQUE7QUE0SUE7Ozs7QUE1SUE7QUFBQTtBQUFBO0FBZ0pBO0FBQ0E7QUFqSkE7QUFBQTtBQUFBO0FBbUpBO0FBQ0E7QUFwSkE7QUFBQTtBQUFBO0FBNkpBO0FBQ0E7QUFDQTtBQUVBO0FBQ0E7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7OztBQXZLQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBMktBO0FBM0tBO0FBQUE7QUFDQTtBQURBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQ0E7QUFEQTtBQUFBO0FBQUE7QUFDQTtBQURBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFDQTtBQURBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQ0E7QUFEQTtBQUFBO0FBQUE7QUFDQTtBQURBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFDQTtBQURBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQ0E7QUFEQTtBQUFBO0FBQUE7QUFDQTtBQURBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQ0E7QUFEQTtBQUNBO0FBREE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUNBO0FBREE7QUFDQTtBQURBO0FBd0xBO0FBeExBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFDQTtBQURBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFDQTtBQXdMQTtBQUNBO0FBMUxBO0FBQUE7QUFBQTtBQUFBO0FBQ0E7QUFEQTtBQUFBO0FBQ0E7QUFEQTtBQUFBO0FBQUE7QUFDQTtBQURBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFDQTtBQURBO0FBQ0E7QUFEQTtBQUFBO0FBQUE7QUFDQTtBQURBO0FBa01BO0FBR0E7QUFDQTtBQXRNQTtBQUFBO0FBQUE7QUFBQTtBQUNBO0FBREE7QUFBQTtBQUFBO0FBQ0E7QUFEQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQ0E7QUFEQTtBQUFBO0FBQUE7QUFDQTtBQURBO0FBQUE7QUFBQTtBQUNBO0FBREE7QUFBQTtBQUNBO0FBREE7QUFBQTtBQUFBO0FBQUE7QUFDQTtBQURBO0FBQ0E7QUFEQTtBQUFBO0FBQ0E7QUFEQTtBQUFBO0FBQ0E7QUFEQTtBQUFBO0FBd01BO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFDQTtBQURBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQ0E7QUF6TUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFDQTtBQURBO0FBQUE7QUFBQTtBQUNBO0FBREE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFDQTtBQURBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUNBO0FBREE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUNBO0FBNE1BO0FBN01BO0FBQUE7QUFDQTtBQURBO0FBQUE7QUFBQTtBQUFBO0FBQ0E7QUFEQTtBQUFBO0FBQUE7QUFDQTtBQURBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFDQTtBQURBO0FBQUE7QUFBQTtBQUNBO0FBREE7QUFBQTtBQUFBO0FBQ0E7QUFEQTtBQUFBO0FBQ0E7QUFEQTtBQUFBO0FBQUE7QUFBQTtBQUNBO0FBREE7QUFDQTtBQURBO0FBQUE7QUFDQTtBQURBO0FBQUE7QUFDQTtBQURBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQ0E7QUFEQTtBQUFBO0FBQUE7QUFDQTtBQURBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQ0E7QUFEQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBa05BO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFDQTtBQURBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQ0E7QUFuTkE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFDQTtBQURBO0FBQUE7QUFBQTtBQUNBO0FBREE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFDQTtBQURBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUF1TkE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUNBO0FBREE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFDQTtBQXhOQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUNBO0FBREE7QUFBQTtBQUFBO0FBQ0E7QUFEQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQ0E7QUFEQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUNBO0FBREE7QUFBQTtBQUFBO0FBQ0E7QUFEQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBcUpBO0FBQ0E7QUFEQTtBQUFBO0FBQUE7QUFDQTtBQUtBO0FBM0pBO0FBQ0E7QUFEQTtBQUFBIiwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./lib/services/storage_service.ts\n')},"./lib/services/sync/account/downloader.ts":
|
||
/*!*************************************************!*\
|
||
!*** ./lib/services/sync/account/downloader.ts ***!
|
||
\*************************************************/
|
||
/*! exports provided: AccountDownloader */function(module,__webpack_exports__,__webpack_require__){"use strict";eval('__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "AccountDownloader", function() { return AccountDownloader; });\n/* harmony import */ var _babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @babel/runtime/regenerator */ "./node_modules/@babel/runtime/regenerator/index.js");\n/* harmony import */ var _babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var _Payloads_generator__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! @Payloads/generator */ "./lib/protocol/payloads/generator.ts");\n/* harmony import */ var _Lib_protocol_payloads_sources__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! @Lib/protocol/payloads/sources */ "./lib/protocol/payloads/sources.ts");\n\n\nfunction asyncGeneratorStep(gen, resolve, reject, _next, _throw, key, arg) { try { var info = gen[key](arg); var value = info.value; } catch (error) { reject(error); return; } if (info.done) { resolve(value); } else { Promise.resolve(value).then(_next, _throw); } }\n\nfunction _asyncToGenerator(fn) { return function () { var self = this, args = arguments; return new Promise(function (resolve, reject) { var gen = fn.apply(self, args); function _next(value) { asyncGeneratorStep(gen, resolve, reject, _next, _throw, "next", value); } function _throw(err) { asyncGeneratorStep(gen, resolve, reject, _next, _throw, "throw", err); } _next(undefined); }); }; }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } }\n\nfunction _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); } }\n\nfunction _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; }\n\n\n\nvar AccountDownloader = /*#__PURE__*/function () {\n function AccountDownloader(apiService, protocolService, contentType, customEvent, limit) {\n _classCallCheck(this, AccountDownloader);\n\n this.apiService = apiService;\n this.protocolService = protocolService;\n this.contentType = contentType;\n this.customEvent = customEvent;\n this.limit = limit;\n this.progress = {\n retrievedPayloads: []\n };\n }\n /**\n * Executes a sync request with a blank sync token and high download limit. It will download all items,\n * but won\'t do anything with them other than decrypting and creating respective objects.\n */\n\n\n _createClass(AccountDownloader, [{\n key: "run",\n value: function () {\n var _run = _asyncToGenerator( /*#__PURE__*/_babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0___default.a.mark(function _callee() {\n var response, encryptedPayloads, decryptedPayloads;\n return _babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0___default.a.wrap(function _callee$(_context) {\n while (1) {\n switch (_context.prev = _context.next) {\n case 0:\n _context.next = 2;\n return this.apiService.sync([], this.progress.lastSyncToken, this.progress.paginationToken, this.limit || 500, false, this.contentType, this.customEvent);\n\n case 2:\n response = _context.sent;\n encryptedPayloads = response.retrieved_items.map(function (rawPayload) {\n return Object(_Payloads_generator__WEBPACK_IMPORTED_MODULE_1__["CreateSourcedPayloadFromObject"])(rawPayload, _Lib_protocol_payloads_sources__WEBPACK_IMPORTED_MODULE_2__["PayloadSource"].RemoteRetrieved);\n });\n _context.next = 6;\n return this.protocolService.payloadsByDecryptingPayloads(encryptedPayloads);\n\n case 6:\n decryptedPayloads = _context.sent;\n this.progress.retrievedPayloads = this.progress.retrievedPayloads.concat(decryptedPayloads);\n this.progress.lastSyncToken = response.sync_token;\n this.progress.paginationToken = response.cursor_token;\n\n if (!response.cursor_token) {\n _context.next = 14;\n break;\n }\n\n return _context.abrupt("return", this.run());\n\n case 14:\n return _context.abrupt("return", this.progress.retrievedPayloads);\n\n case 15:\n case "end":\n return _context.stop();\n }\n }\n }, _callee, this);\n }));\n\n function run() {\n return _run.apply(this, arguments);\n }\n\n return run;\n }()\n }]);\n\n return AccountDownloader;\n}();//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9saWIvc2VydmljZXMvc3luYy9hY2NvdW50L2Rvd25sb2FkZXIudHMuanMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly9TTkxpYnJhcnkvLi9saWIvc2VydmljZXMvc3luYy9hY2NvdW50L2Rvd25sb2FkZXIudHM/MGYxMiJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDcmVhdGVTb3VyY2VkUGF5bG9hZEZyb21PYmplY3QgfSBmcm9tICdAUGF5bG9hZHMvZ2VuZXJhdG9yJztcbmltcG9ydCB7IFBheWxvYWRTb3VyY2UgfSBmcm9tICdATGliL3Byb3RvY29sL3BheWxvYWRzL3NvdXJjZXMnO1xuZXhwb3J0IGNsYXNzIEFjY291bnREb3dubG9hZGVyIHtcbiAgICBjb25zdHJ1Y3RvcihhcGlTZXJ2aWNlLCBwcm90b2NvbFNlcnZpY2UsIGNvbnRlbnRUeXBlLCBjdXN0b21FdmVudCwgbGltaXQpIHtcbiAgICAgICAgdGhpcy5hcGlTZXJ2aWNlID0gYXBpU2VydmljZTtcbiAgICAgICAgdGhpcy5wcm90b2NvbFNlcnZpY2UgPSBwcm90b2NvbFNlcnZpY2U7XG4gICAgICAgIHRoaXMuY29udGVudFR5cGUgPSBjb250ZW50VHlwZTtcbiAgICAgICAgdGhpcy5jdXN0b21FdmVudCA9IGN1c3RvbUV2ZW50O1xuICAgICAgICB0aGlzLmxpbWl0ID0gbGltaXQ7XG4gICAgICAgIHRoaXMucHJvZ3Jlc3MgPSB7IHJldHJpZXZlZFBheWxvYWRzOiBbXSB9O1xuICAgIH1cbiAgICAvKipcbiAgICAgKiBFeGVjdXRlcyBhIHN5bmMgcmVxdWVzdCB3aXRoIGEgYmxhbmsgc3luYyB0b2tlbiBhbmQgaGlnaCBkb3dubG9hZCBsaW1pdC4gSXQgd2lsbCBkb3dubG9hZCBhbGwgaXRlbXMsXG4gICAgICogYnV0IHdvbid0IGRvIGFueXRoaW5nIHdpdGggdGhlbSBvdGhlciB0aGFuIGRlY3J5cHRpbmcgYW5kIGNyZWF0aW5nIHJlc3BlY3RpdmUgb2JqZWN0cy5cbiAgICAgKi9cbiAgICBhc3luYyBydW4oKSB7XG4gICAgICAgIGNvbnN0IHJlc3BvbnNlID0gYXdhaXQgdGhpcy5hcGlTZXJ2aWNlLnN5bmMoW10sIHRoaXMucHJvZ3Jlc3MubGFzdFN5bmNUb2tlbiwgdGhpcy5wcm9ncmVzcy5wYWdpbmF0aW9uVG9rZW4sIHRoaXMubGltaXQgfHwgNTAwLCBmYWxzZSwgdGhpcy5jb250ZW50VHlwZSwgdGhpcy5jdXN0b21FdmVudCk7XG4gICAgICAgIGNvbnN0IGVuY3J5cHRlZFBheWxvYWRzID0gcmVzcG9uc2UucmV0cmlldmVkX2l0ZW1zLm1hcCgocmF3UGF5bG9hZCkgPT4ge1xuICAgICAgICAgICAgcmV0dXJuIENyZWF0ZVNvdXJjZWRQYXlsb2FkRnJvbU9iamVjdChyYXdQYXlsb2FkLCBQYXlsb2FkU291cmNlLlJlbW90ZVJldHJpZXZlZCk7XG4gICAgICAgIH0pO1xuICAgICAgICBjb25zdCBkZWNyeXB0ZWRQYXlsb2FkcyA9IGF3YWl0IHRoaXMucHJvdG9jb2xTZXJ2aWNlLnBheWxvYWRzQnlEZWNyeXB0aW5nUGF5bG9hZHMoZW5jcnlwdGVkUGF5bG9hZHMpO1xuICAgICAgICB0aGlzLnByb2dyZXNzLnJldHJpZXZlZFBheWxvYWRzID0gdGhpcy5wcm9ncmVzcy5yZXRyaWV2ZWRQYXlsb2Fkcy5jb25jYXQoZGVjcnlwdGVkUGF5bG9hZHMpO1xuICAgICAgICB0aGlzLnByb2dyZXNzLmxhc3RTeW5jVG9rZW4gPSByZXNwb25zZS5zeW5jX3Rva2VuO1xuICAgICAgICB0aGlzLnByb2dyZXNzLnBhZ2luYXRpb25Ub2tlbiA9IHJlc3BvbnNlLmN1cnNvcl90b2tlbjtcbiAgICAgICAgaWYgKHJlc3BvbnNlLmN1cnNvcl90b2tlbikge1xuICAgICAgICAgICAgcmV0dXJuIHRoaXMucnVuKCk7XG4gICAgICAgIH1cbiAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICByZXR1cm4gdGhpcy5wcm9ncmVzcy5yZXRyaWV2ZWRQYXlsb2FkcztcbiAgICAgICAgfVxuICAgIH1cbn1cbiJdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFBQTtBQUNBO0FBQ0E7Ozs7OztBQVRBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFDQTtBQURBO0FBY0E7QUFDQTtBQUNBO0FBQ0E7QUFqQkE7QUFBQTtBQUNBO0FBREE7QUFrQkE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQXRCQTtBQUFBO0FBQUE7QUFBQTtBQUNBO0FBREE7QUFDQTtBQURBO0FBQUE7QUFDQTtBQURBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQ0E7QUFEQTtBQUFBO0FBQUE7QUFDQTtBQURBO0FBQUE7QUFBQTtBQUNBO0FBREE7QUFBQSIsInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./lib/services/sync/account/downloader.ts\n')},"./lib/services/sync/account/operation.ts":
|
||
/*!************************************************!*\
|
||
!*** ./lib/services/sync/account/operation.ts ***!
|
||
\************************************************/
|
||
/*! exports provided: AccountSyncOperation */function(module,__webpack_exports__,__webpack_require__){"use strict";eval('__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "AccountSyncOperation", function() { return AccountSyncOperation; });\n/* harmony import */ var _babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @babel/runtime/regenerator */ "./node_modules/@babel/runtime/regenerator/index.js");\n/* harmony import */ var _babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var _Lib_utils__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! @Lib/utils */ "./lib/utils.ts");\n/* harmony import */ var _Services_sync_response__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! @Services/sync/response */ "./lib/services/sync/response.ts");\n/* harmony import */ var _Services_sync_signals__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! @Services/sync/signals */ "./lib/services/sync/signals.ts");\n\n\nfunction asyncGeneratorStep(gen, resolve, reject, _next, _throw, key, arg) { try { var info = gen[key](arg); var value = info.value; } catch (error) { reject(error); return; } if (info.done) { resolve(value); } else { Promise.resolve(value).then(_next, _throw); } }\n\nfunction _asyncToGenerator(fn) { return function () { var self = this, args = arguments; return new Promise(function (resolve, reject) { var gen = fn.apply(self, args); function _next(value) { asyncGeneratorStep(gen, resolve, reject, _next, _throw, "next", value); } function _throw(err) { asyncGeneratorStep(gen, resolve, reject, _next, _throw, "throw", err); } _next(undefined); }); }; }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } }\n\nfunction _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); } }\n\nfunction _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; }\n\n\n\n\nvar DEFAULT_UP_DOWN_LIMIT = 150;\n/**\n * A long running operation that handles multiple roundtrips from a server,\n * emitting a stream of values that should be acted upon in real time.\n */\n\nvar AccountSyncOperation = /*#__PURE__*/function () {\n /**\n * @param payloads An array of payloads to send to the server\n * @param receiver A function that receives callback multiple times during the operation\n */\n function AccountSyncOperation(payloads, receiver, lastSyncToken, paginationToken, checkIntegrity, apiService) {\n _classCallCheck(this, AccountSyncOperation);\n\n this.responses = [];\n this.payloads = payloads;\n this.lastSyncToken = lastSyncToken;\n this.paginationToken = paginationToken;\n this.checkIntegrity = checkIntegrity;\n this.apiService = apiService;\n this.receiver = receiver;\n this.pendingPayloads = payloads;\n }\n /**\n * Read the payloads that have been saved, or are currently in flight.\n */\n\n\n _createClass(AccountSyncOperation, [{\n key: "popPayloads",\n value: function popPayloads(count) {\n var payloads = this.pendingPayloads.slice(0, count);\n Object(_Lib_utils__WEBPACK_IMPORTED_MODULE_1__["subtractFromArray"])(this.pendingPayloads, payloads);\n return payloads;\n }\n }, {\n key: "run",\n value: function () {\n var _run = _asyncToGenerator( /*#__PURE__*/_babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0___default.a.mark(function _callee() {\n var payloads, rawResponse, response;\n return _babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0___default.a.wrap(function _callee$(_context) {\n while (1) {\n switch (_context.prev = _context.next) {\n case 0:\n payloads = this.popPayloads(this.upLimit);\n _context.next = 3;\n return this.apiService.sync(payloads, this.lastSyncToken, this.paginationToken, this.downLimit, this.checkIntegrity, undefined, undefined);\n\n case 3:\n rawResponse = _context.sent;\n response = new _Services_sync_response__WEBPACK_IMPORTED_MODULE_2__["SyncResponse"](rawResponse);\n this.responses.push(response);\n this.lastSyncToken = response.lastSyncToken;\n this.paginationToken = response.paginationToken;\n _context.next = 10;\n return this.receiver(_Services_sync_signals__WEBPACK_IMPORTED_MODULE_3__["SyncSignal"].Response, response);\n\n case 10:\n if (this.done) {\n _context.next = 12;\n break;\n }\n\n return _context.abrupt("return", this.run());\n\n case 12:\n case "end":\n return _context.stop();\n }\n }\n }, _callee, this);\n }));\n\n function run() {\n return _run.apply(this, arguments);\n }\n\n return run;\n }()\n }, {\n key: "pendingUploadCount",\n value: function pendingUploadCount() {\n return this.pendingPayloads.length;\n }\n }, {\n key: "totalUploadCount",\n value: function totalUploadCount() {\n return this.payloads.length;\n }\n }, {\n key: "payloadsSavedOrSaving",\n get: function get() {\n return Object(_Lib_utils__WEBPACK_IMPORTED_MODULE_1__["arrayByDifference"])(this.payloads, this.pendingPayloads);\n }\n }, {\n key: "done",\n get: function get() {\n return this.pendingPayloads.length === 0 && !this.paginationToken;\n }\n }, {\n key: "upLimit",\n get: function get() {\n return DEFAULT_UP_DOWN_LIMIT;\n }\n }, {\n key: "downLimit",\n get: function get() {\n return DEFAULT_UP_DOWN_LIMIT;\n }\n }, {\n key: "numberOfItemsInvolved",\n get: function get() {\n var total = 0;\n var _iteratorNormalCompletion = true;\n var _didIteratorError = false;\n var _iteratorError = undefined;\n\n try {\n for (var _iterator = this.responses[Symbol.iterator](), _step; !(_iteratorNormalCompletion = (_step = _iterator.next()).done); _iteratorNormalCompletion = true) {\n var response = _step.value;\n total += response.numberOfItemsInvolved;\n }\n } catch (err) {\n _didIteratorError = true;\n _iteratorError = err;\n } finally {\n try {\n if (!_iteratorNormalCompletion && _iterator.return != null) {\n _iterator.return();\n }\n } finally {\n if (_didIteratorError) {\n throw _iteratorError;\n }\n }\n }\n\n return total;\n }\n }]);\n\n return AccountSyncOperation;\n}();//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9saWIvc2VydmljZXMvc3luYy9hY2NvdW50L29wZXJhdGlvbi50cy5qcyIsInNvdXJjZXMiOlsid2VicGFjazovL1NOTGlicmFyeS8uL2xpYi9zZXJ2aWNlcy9zeW5jL2FjY291bnQvb3BlcmF0aW9uLnRzPzZhNGUiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgYXJyYXlCeURpZmZlcmVuY2UsIHN1YnRyYWN0RnJvbUFycmF5IH0gZnJvbSAnQExpYi91dGlscyc7XG5pbXBvcnQgeyBTeW5jUmVzcG9uc2UgfSBmcm9tICdAU2VydmljZXMvc3luYy9yZXNwb25zZSc7XG5pbXBvcnQgeyBTeW5jU2lnbmFsIH0gZnJvbSAnQFNlcnZpY2VzL3N5bmMvc2lnbmFscyc7XG5jb25zdCBERUZBVUxUX1VQX0RPV05fTElNSVQgPSAxNTA7XG4vKipcbiAqIEEgbG9uZyBydW5uaW5nIG9wZXJhdGlvbiB0aGF0IGhhbmRsZXMgbXVsdGlwbGUgcm91bmR0cmlwcyBmcm9tIGEgc2VydmVyLFxuICogZW1pdHRpbmcgYSBzdHJlYW0gb2YgdmFsdWVzIHRoYXQgc2hvdWxkIGJlIGFjdGVkIHVwb24gaW4gcmVhbCB0aW1lLlxuICovXG5leHBvcnQgY2xhc3MgQWNjb3VudFN5bmNPcGVyYXRpb24ge1xuICAgIC8qKlxuICAgICAqIEBwYXJhbSBwYXlsb2FkcyAgIEFuIGFycmF5IG9mIHBheWxvYWRzIHRvIHNlbmQgdG8gdGhlIHNlcnZlclxuICAgICAqIEBwYXJhbSByZWNlaXZlciAgIEEgZnVuY3Rpb24gdGhhdCByZWNlaXZlcyBjYWxsYmFjayBtdWx0aXBsZSB0aW1lcyBkdXJpbmcgdGhlIG9wZXJhdGlvblxuICAgICAqL1xuICAgIGNvbnN0cnVjdG9yKHBheWxvYWRzLCByZWNlaXZlciwgbGFzdFN5bmNUb2tlbiwgcGFnaW5hdGlvblRva2VuLCBjaGVja0ludGVncml0eSwgYXBpU2VydmljZSkge1xuICAgICAgICB0aGlzLnJlc3BvbnNlcyA9IFtdO1xuICAgICAgICB0aGlzLnBheWxvYWRzID0gcGF5bG9hZHM7XG4gICAgICAgIHRoaXMubGFzdFN5bmNUb2tlbiA9IGxhc3RTeW5jVG9rZW47XG4gICAgICAgIHRoaXMucGFnaW5hdGlvblRva2VuID0gcGFnaW5hdGlvblRva2VuO1xuICAgICAgICB0aGlzLmNoZWNrSW50ZWdyaXR5ID0gY2hlY2tJbnRlZ3JpdHk7XG4gICAgICAgIHRoaXMuYXBpU2VydmljZSA9IGFwaVNlcnZpY2U7XG4gICAgICAgIHRoaXMucmVjZWl2ZXIgPSByZWNlaXZlcjtcbiAgICAgICAgdGhpcy5wZW5kaW5nUGF5bG9hZHMgPSBwYXlsb2FkcztcbiAgICB9XG4gICAgLyoqXG4gICAgICogUmVhZCB0aGUgcGF5bG9hZHMgdGhhdCBoYXZlIGJlZW4gc2F2ZWQsIG9yIGFyZSBjdXJyZW50bHkgaW4gZmxpZ2h0LlxuICAgICAqL1xuICAgIGdldCBwYXlsb2Fkc1NhdmVkT3JTYXZpbmcoKSB7XG4gICAgICAgIHJldHVybiBhcnJheUJ5RGlmZmVyZW5jZSh0aGlzLnBheWxvYWRzLCB0aGlzLnBlbmRpbmdQYXlsb2Fkcyk7XG4gICAgfVxuICAgIHBvcFBheWxvYWRzKGNvdW50KSB7XG4gICAgICAgIGNvbnN0IHBheWxvYWRzID0gdGhpcy5wZW5kaW5nUGF5bG9hZHMuc2xpY2UoMCwgY291bnQpO1xuICAgICAgICBzdWJ0cmFjdEZyb21BcnJheSh0aGlzLnBlbmRpbmdQYXlsb2FkcywgcGF5bG9hZHMpO1xuICAgICAgICByZXR1cm4gcGF5bG9hZHM7XG4gICAgfVxuICAgIGFzeW5jIHJ1bigpIHtcbiAgICAgICAgY29uc3QgcGF5bG9hZHMgPSB0aGlzLnBvcFBheWxvYWRzKHRoaXMudXBMaW1pdCk7XG4gICAgICAgIGNvbnN0IHJhd1Jlc3BvbnNlID0gYXdhaXQgdGhpcy5hcGlTZXJ2aWNlLnN5bmMocGF5bG9hZHMsIHRoaXMubGFzdFN5bmNUb2tlbiwgdGhpcy5wYWdpbmF0aW9uVG9rZW4sIHRoaXMuZG93bkxpbWl0LCB0aGlzLmNoZWNrSW50ZWdyaXR5LCB1bmRlZmluZWQsIHVuZGVmaW5lZCk7XG4gICAgICAgIGNvbnN0IHJlc3BvbnNlID0gbmV3IFN5bmNSZXNwb25zZShyYXdSZXNwb25zZSk7XG4gICAgICAgIHRoaXMucmVzcG9uc2VzLnB1c2gocmVzcG9uc2UpO1xuICAgICAgICB0aGlzLmxhc3RTeW5jVG9rZW4gPSByZXNwb25zZS5sYXN0U3luY1Rva2VuO1xuICAgICAgICB0aGlzLnBhZ2luYXRpb25Ub2tlbiA9IHJlc3BvbnNlLnBhZ2luYXRpb25Ub2tlbjtcbiAgICAgICAgYXdhaXQgdGhpcy5yZWNlaXZlcihTeW5jU2lnbmFsLlJlc3BvbnNlLCByZXNwb25zZSk7XG4gICAgICAgIGlmICghdGhpcy5kb25lKSB7XG4gICAgICAgICAgICByZXR1cm4gdGhpcy5ydW4oKTtcbiAgICAgICAgfVxuICAgIH1cbiAgICBwZW5kaW5nVXBsb2FkQ291bnQoKSB7XG4gICAgICAgIHJldHVybiB0aGlzLnBlbmRpbmdQYXlsb2Fkcy5sZW5ndGg7XG4gICAgfVxuICAgIHRvdGFsVXBsb2FkQ291bnQoKSB7XG4gICAgICAgIHJldHVybiB0aGlzLnBheWxvYWRzLmxlbmd0aDtcbiAgICB9XG4gICAgZ2V0IGRvbmUoKSB7XG4gICAgICAgIHJldHVybiB0aGlzLnBlbmRpbmdQYXlsb2Fkcy5sZW5ndGggPT09IDAgJiYgIXRoaXMucGFnaW5hdGlvblRva2VuO1xuICAgIH1cbiAgICBnZXQgdXBMaW1pdCgpIHtcbiAgICAgICAgcmV0dXJuIERFRkFVTFRfVVBfRE9XTl9MSU1JVDtcbiAgICB9XG4gICAgZ2V0IGRvd25MaW1pdCgpIHtcbiAgICAgICAgcmV0dXJuIERFRkFVTFRfVVBfRE9XTl9MSU1JVDtcbiAgICB9XG4gICAgZ2V0IG51bWJlck9mSXRlbXNJbnZvbHZlZCgpIHtcbiAgICAgICAgbGV0IHRvdGFsID0gMDtcbiAgICAgICAgZm9yIChjb25zdCByZXNwb25zZSBvZiB0aGlzLnJlc3BvbnNlcykge1xuICAgICAgICAgICAgdG90YWwgKz0gcmVzcG9uc2UubnVtYmVyT2ZJdGVtc0ludm9sdmVkO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiB0b3RhbDtcbiAgICB9XG59XG4iXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOzs7OztBQUlBO0FBQ0E7Ozs7QUFJQTtBQUFBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7Ozs7QUFmQTtBQUFBO0FBQUE7QUFzQkE7QUFDQTtBQUNBO0FBQ0E7QUF6QkE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBMkJBO0FBM0JBO0FBQUE7QUFDQTtBQURBO0FBNEJBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFoQ0E7QUFBQTtBQUNBO0FBREE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUNBO0FBREE7QUFDQTtBQURBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQ0E7QUFEQTtBQUFBO0FBQUE7QUFDQTtBQURBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUF1Q0E7QUFDQTtBQXhDQTtBQUFBO0FBQUE7QUEwQ0E7QUFDQTtBQTNDQTtBQUFBO0FBQUE7QUFtQkE7QUFDQTtBQXBCQTtBQUFBO0FBQUE7QUE2Q0E7QUFDQTtBQTlDQTtBQUFBO0FBQUE7QUFnREE7QUFDQTtBQWpEQTtBQUFBO0FBQUE7QUFtREE7QUFDQTtBQXBEQTtBQUFBO0FBQUE7QUFzREE7QUFEQTtBQUFBO0FBQUE7QUFDQTtBQURBO0FBRUE7QUFBQTtBQUNBO0FBQ0E7QUFKQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQ0E7QUFJQTtBQUNBO0FBM0RBO0FBQ0E7QUFEQTtBQUFBIiwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./lib/services/sync/account/operation.ts\n')},"./lib/services/sync/account/response_resolver.ts":
|
||
/*!********************************************************!*\
|
||
!*** ./lib/services/sync/account/response_resolver.ts ***!
|
||
\********************************************************/
|
||
/*! exports provided: SyncResponseResolver */function(module,__webpack_exports__,__webpack_require__){"use strict";eval('__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "SyncResponseResolver", function() { return SyncResponseResolver; });\n/* harmony import */ var _babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @babel/runtime/regenerator */ "./node_modules/@babel/runtime/regenerator/index.js");\n/* harmony import */ var _babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var _Payloads_deltas_generator__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! @Payloads/deltas/generator */ "./lib/protocol/payloads/deltas/generator.ts");\n/* harmony import */ var _Payloads_sources__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! @Payloads/sources */ "./lib/protocol/payloads/sources.ts");\n/* harmony import */ var _Protocol_collection_payload_collection__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! @Protocol/collection/payload_collection */ "./lib/protocol/collection/payload_collection.ts");\n/* harmony import */ var _Protocol_collection_collection_set__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! @Protocol/collection/collection_set */ "./lib/protocol/collection/collection_set.ts");\n/* harmony import */ var _Payloads_generator__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! @Payloads/generator */ "./lib/protocol/payloads/generator.ts");\n\n\nfunction asyncGeneratorStep(gen, resolve, reject, _next, _throw, key, arg) { try { var info = gen[key](arg); var value = info.value; } catch (error) { reject(error); return; } if (info.done) { resolve(value); } else { Promise.resolve(value).then(_next, _throw); } }\n\nfunction _asyncToGenerator(fn) { return function () { var self = this, args = arguments; return new Promise(function (resolve, reject) { var gen = fn.apply(self, args); function _next(value) { asyncGeneratorStep(gen, resolve, reject, _next, _throw, "next", value); } function _throw(err) { asyncGeneratorStep(gen, resolve, reject, _next, _throw, "throw", err); } _next(undefined); }); }; }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } }\n\nfunction _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); } }\n\nfunction _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; }\n\n\n\n\n\n\n/**\n * Given a remote sync response, the resolver applies the incoming changes on top\n * of the current base state, and returns what the new global state should look like.\n * The response resolver is purely functional and does not modify global state, but instead\n * offers the \'recommended\' new global state given a sync response and a current base state.\n */\n\nvar SyncResponseResolver = /*#__PURE__*/function () {\n function SyncResponseResolver(response, decryptedResponsePayloads, baseCollection, payloadsSavedOrSaving) {\n _classCallCheck(this, SyncResponseResolver);\n\n this.response = response;\n this.baseCollection = baseCollection;\n this.relatedCollectionSet = new _Protocol_collection_collection_set__WEBPACK_IMPORTED_MODULE_4__["ImmutablePayloadCollectionSet"]([_Protocol_collection_payload_collection__WEBPACK_IMPORTED_MODULE_3__["ImmutablePayloadCollection"].WithPayloads(decryptedResponsePayloads, _Payloads_sources__WEBPACK_IMPORTED_MODULE_2__["PayloadSource"].DecryptedTransient), _Protocol_collection_payload_collection__WEBPACK_IMPORTED_MODULE_3__["ImmutablePayloadCollection"].WithPayloads(payloadsSavedOrSaving, _Payloads_sources__WEBPACK_IMPORTED_MODULE_2__["PayloadSource"].SavedOrSaving)]);\n }\n\n _createClass(SyncResponseResolver, [{\n key: "collectionsByProcessingResponse",\n value: function () {\n var _collectionsByProcessingResponse = _asyncToGenerator( /*#__PURE__*/_babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0___default.a.mark(function _callee() {\n var collections, collectionRetrieved, collectionSaved, collectionUuidConflicts, collectionDataConflicts;\n return _babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0___default.a.wrap(function _callee$(_context) {\n while (1) {\n switch (_context.prev = _context.next) {\n case 0:\n collections = [];\n _context.next = 3;\n return this.collectionByProcessingPayloads(this.response.retrievedPayloads, _Payloads_sources__WEBPACK_IMPORTED_MODULE_2__["PayloadSource"].RemoteRetrieved);\n\n case 3:\n collectionRetrieved = _context.sent;\n\n if (collectionRetrieved.all().length > 0) {\n collections.push(collectionRetrieved);\n }\n\n _context.next = 7;\n return this.collectionByProcessingPayloads(this.response.savedPayloads, _Payloads_sources__WEBPACK_IMPORTED_MODULE_2__["PayloadSource"].RemoteSaved);\n\n case 7:\n collectionSaved = _context.sent;\n\n if (collectionSaved.all().length > 0) {\n collections.push(collectionSaved);\n }\n\n if (!(this.response.uuidConflictPayloads.length > 0)) {\n _context.next = 14;\n break;\n }\n\n _context.next = 12;\n return this.collectionByProcessingPayloads(this.response.uuidConflictPayloads, _Payloads_sources__WEBPACK_IMPORTED_MODULE_2__["PayloadSource"].ConflictUuid);\n\n case 12:\n collectionUuidConflicts = _context.sent;\n\n if (collectionUuidConflicts.all().length > 0) {\n collections.push(collectionUuidConflicts);\n }\n\n case 14:\n if (!(this.response.dataConflictPayloads.length > 0)) {\n _context.next = 19;\n break;\n }\n\n _context.next = 17;\n return this.collectionByProcessingPayloads(this.response.dataConflictPayloads, _Payloads_sources__WEBPACK_IMPORTED_MODULE_2__["PayloadSource"].ConflictData);\n\n case 17:\n collectionDataConflicts = _context.sent;\n\n if (collectionDataConflicts.all().length > 0) {\n collections.push(collectionDataConflicts);\n }\n\n case 19:\n return _context.abrupt("return", collections);\n\n case 20:\n case "end":\n return _context.stop();\n }\n }\n }, _callee, this);\n }));\n\n function collectionsByProcessingResponse() {\n return _collectionsByProcessingResponse.apply(this, arguments);\n }\n\n return collectionsByProcessingResponse;\n }()\n }, {\n key: "collectionByProcessingPayloads",\n value: function () {\n var _collectionByProcessingPayloads = _asyncToGenerator( /*#__PURE__*/_babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0___default.a.mark(function _callee2(payloads, source) {\n var _this = this;\n\n var collection, deltaClass, delta, resultCollection, updatedDirtyPayloads;\n return _babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0___default.a.wrap(function _callee2$(_context2) {\n while (1) {\n switch (_context2.prev = _context2.next) {\n case 0:\n collection = _Protocol_collection_payload_collection__WEBPACK_IMPORTED_MODULE_3__["ImmutablePayloadCollection"].WithPayloads(payloads, source);\n deltaClass = Object(_Payloads_deltas_generator__WEBPACK_IMPORTED_MODULE_1__["DeltaClassForSource"])(source); // eslint-disable-next-line new-cap\n\n delta = new deltaClass(this.baseCollection, collection, this.relatedCollectionSet);\n _context2.next = 5;\n return delta.resultingCollection();\n\n case 5:\n resultCollection = _context2.sent;\n updatedDirtyPayloads = resultCollection.all().map(function (payload) {\n var stillDirty = _this.finalDirtyStateForPayload(payload);\n\n return Object(_Payloads_generator__WEBPACK_IMPORTED_MODULE_5__["CopyPayload"])(payload, {\n dirty: stillDirty,\n dirtiedDate: stillDirty ? new Date() : undefined\n });\n });\n return _context2.abrupt("return", _Protocol_collection_payload_collection__WEBPACK_IMPORTED_MODULE_3__["ImmutablePayloadCollection"].WithPayloads(updatedDirtyPayloads, source));\n\n case 8:\n case "end":\n return _context2.stop();\n }\n }\n }, _callee2, this);\n }));\n\n function collectionByProcessingPayloads(_x, _x2) {\n return _collectionByProcessingPayloads.apply(this, arguments);\n }\n\n return collectionByProcessingPayloads;\n }()\n }, {\n key: "finalDirtyStateForPayload",\n value: function finalDirtyStateForPayload(payload) {\n var current = this.baseCollection.find(payload.uuid);\n /**\n * `current` can be null in the case of new\n * items that haven\'t yet been mapped\n */\n\n var stillDirty;\n\n if (current) {\n if (payload.dirtiedDate && payload.dirtiedDate > current.dirtiedDate) {\n /** The payload was dirtied as part of handling deltas, and not because it was\n * dirtied by a client. We keep the payload dirty state here. */\n stillDirty = payload.dirty;\n } else {\n /** Marking items dirty after lastSyncBegan will cause them to sync again. */\n stillDirty = current.dirtiedDate > current.lastSyncBegan;\n }\n } else {\n /** Forward whatever value any delta resolver may have set */\n stillDirty = payload.dirty;\n }\n\n return stillDirty;\n }\n }]);\n\n return SyncResponseResolver;\n}();//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9saWIvc2VydmljZXMvc3luYy9hY2NvdW50L3Jlc3BvbnNlX3Jlc29sdmVyLnRzLmpzIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vU05MaWJyYXJ5Ly4vbGliL3NlcnZpY2VzL3N5bmMvYWNjb3VudC9yZXNwb25zZV9yZXNvbHZlci50cz8wNmFmIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IERlbHRhQ2xhc3NGb3JTb3VyY2UgfSBmcm9tICdAUGF5bG9hZHMvZGVsdGFzL2dlbmVyYXRvcic7XG5pbXBvcnQgeyBQYXlsb2FkU291cmNlIH0gZnJvbSAnQFBheWxvYWRzL3NvdXJjZXMnO1xuaW1wb3J0IHsgSW1tdXRhYmxlUGF5bG9hZENvbGxlY3Rpb24gfSBmcm9tIFwiQFByb3RvY29sL2NvbGxlY3Rpb24vcGF5bG9hZF9jb2xsZWN0aW9uXCI7XG5pbXBvcnQgeyBJbW11dGFibGVQYXlsb2FkQ29sbGVjdGlvblNldCB9IGZyb20gJ0BQcm90b2NvbC9jb2xsZWN0aW9uL2NvbGxlY3Rpb25fc2V0JztcbmltcG9ydCB7IENvcHlQYXlsb2FkIH0gZnJvbSAnQFBheWxvYWRzL2dlbmVyYXRvcic7XG4vKipcbiAqIEdpdmVuIGEgcmVtb3RlIHN5bmMgcmVzcG9uc2UsIHRoZSByZXNvbHZlciBhcHBsaWVzIHRoZSBpbmNvbWluZyBjaGFuZ2VzIG9uIHRvcFxuICogb2YgdGhlIGN1cnJlbnQgYmFzZSBzdGF0ZSwgYW5kIHJldHVybnMgd2hhdCB0aGUgbmV3IGdsb2JhbCBzdGF0ZSBzaG91bGQgbG9vayBsaWtlLlxuICogVGhlIHJlc3BvbnNlIHJlc29sdmVyIGlzIHB1cmVseSBmdW5jdGlvbmFsIGFuZCBkb2VzIG5vdCBtb2RpZnkgZ2xvYmFsIHN0YXRlLCBidXQgaW5zdGVhZFxuICogb2ZmZXJzIHRoZSAncmVjb21tZW5kZWQnIG5ldyBnbG9iYWwgc3RhdGUgZ2l2ZW4gYSBzeW5jIHJlc3BvbnNlIGFuZCBhIGN1cnJlbnQgYmFzZSBzdGF0ZS5cbiAqL1xuZXhwb3J0IGNsYXNzIFN5bmNSZXNwb25zZVJlc29sdmVyIHtcbiAgICBjb25zdHJ1Y3RvcihyZXNwb25zZSwgZGVjcnlwdGVkUmVzcG9uc2VQYXlsb2FkcywgYmFzZUNvbGxlY3Rpb24sIHBheWxvYWRzU2F2ZWRPclNhdmluZykge1xuICAgICAgICB0aGlzLnJlc3BvbnNlID0gcmVzcG9uc2U7XG4gICAgICAgIHRoaXMuYmFzZUNvbGxlY3Rpb24gPSBiYXNlQ29sbGVjdGlvbjtcbiAgICAgICAgdGhpcy5yZWxhdGVkQ29sbGVjdGlvblNldCA9IG5ldyBJbW11dGFibGVQYXlsb2FkQ29sbGVjdGlvblNldChbXG4gICAgICAgICAgICBJbW11dGFibGVQYXlsb2FkQ29sbGVjdGlvbi5XaXRoUGF5bG9hZHMoZGVjcnlwdGVkUmVzcG9uc2VQYXlsb2FkcywgUGF5bG9hZFNvdXJjZS5EZWNyeXB0ZWRUcmFuc2llbnQpLFxuICAgICAgICAgICAgSW1tdXRhYmxlUGF5bG9hZENvbGxlY3Rpb24uV2l0aFBheWxvYWRzKHBheWxvYWRzU2F2ZWRPclNhdmluZywgUGF5bG9hZFNvdXJjZS5TYXZlZE9yU2F2aW5nKVxuICAgICAgICBdKTtcbiAgICB9XG4gICAgYXN5bmMgY29sbGVjdGlvbnNCeVByb2Nlc3NpbmdSZXNwb25zZSgpIHtcbiAgICAgICAgY29uc3QgY29sbGVjdGlvbnMgPSBbXTtcbiAgICAgICAgY29uc3QgY29sbGVjdGlvblJldHJpZXZlZCA9IGF3YWl0IHRoaXMuY29sbGVjdGlvbkJ5UHJvY2Vzc2luZ1BheWxvYWRzKHRoaXMucmVzcG9uc2UucmV0cmlldmVkUGF5bG9hZHMsIFBheWxvYWRTb3VyY2UuUmVtb3RlUmV0cmlldmVkKTtcbiAgICAgICAgaWYgKGNvbGxlY3Rpb25SZXRyaWV2ZWQuYWxsKCkubGVuZ3RoID4gMCkge1xuICAgICAgICAgICAgY29sbGVjdGlvbnMucHVzaChjb2xsZWN0aW9uUmV0cmlldmVkKTtcbiAgICAgICAgfVxuICAgICAgICBjb25zdCBjb2xsZWN0aW9uU2F2ZWQgPSBhd2FpdCB0aGlzLmNvbGxlY3Rpb25CeVByb2Nlc3NpbmdQYXlsb2Fkcyh0aGlzLnJlc3BvbnNlLnNhdmVkUGF5bG9hZHMsIFBheWxvYWRTb3VyY2UuUmVtb3RlU2F2ZWQpO1xuICAgICAgICBpZiAoY29sbGVjdGlvblNhdmVkLmFsbCgpLmxlbmd0aCA+IDApIHtcbiAgICAgICAgICAgIGNvbGxlY3Rpb25zLnB1c2goY29sbGVjdGlvblNhdmVkKTtcbiAgICAgICAgfVxuICAgICAgICBpZiAodGhpcy5yZXNwb25zZS51dWlkQ29uZmxpY3RQYXlsb2Fkcy5sZW5ndGggPiAwKSB7XG4gICAgICAgICAgICBjb25zdCBjb2xsZWN0aW9uVXVpZENvbmZsaWN0cyA9IGF3YWl0IHRoaXMuY29sbGVjdGlvbkJ5UHJvY2Vzc2luZ1BheWxvYWRzKHRoaXMucmVzcG9uc2UudXVpZENvbmZsaWN0UGF5bG9hZHMsIFBheWxvYWRTb3VyY2UuQ29uZmxpY3RVdWlkKTtcbiAgICAgICAgICAgIGlmIChjb2xsZWN0aW9uVXVpZENvbmZsaWN0cy5hbGwoKS5sZW5ndGggPiAwKSB7XG4gICAgICAgICAgICAgICAgY29sbGVjdGlvbnMucHVzaChjb2xsZWN0aW9uVXVpZENvbmZsaWN0cyk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgaWYgKHRoaXMucmVzcG9uc2UuZGF0YUNvbmZsaWN0UGF5bG9hZHMubGVuZ3RoID4gMCkge1xuICAgICAgICAgICAgY29uc3QgY29sbGVjdGlvbkRhdGFDb25mbGljdHMgPSBhd2FpdCB0aGlzLmNvbGxlY3Rpb25CeVByb2Nlc3NpbmdQYXlsb2Fkcyh0aGlzLnJlc3BvbnNlLmRhdGFDb25mbGljdFBheWxvYWRzLCBQYXlsb2FkU291cmNlLkNvbmZsaWN0RGF0YSk7XG4gICAgICAgICAgICBpZiAoY29sbGVjdGlvbkRhdGFDb25mbGljdHMuYWxsKCkubGVuZ3RoID4gMCkge1xuICAgICAgICAgICAgICAgIGNvbGxlY3Rpb25zLnB1c2goY29sbGVjdGlvbkRhdGFDb25mbGljdHMpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIHJldHVybiBjb2xsZWN0aW9ucztcbiAgICB9XG4gICAgYXN5bmMgY29sbGVjdGlvbkJ5UHJvY2Vzc2luZ1BheWxvYWRzKHBheWxvYWRzLCBzb3VyY2UpIHtcbiAgICAgICAgY29uc3QgY29sbGVjdGlvbiA9IEltbXV0YWJsZVBheWxvYWRDb2xsZWN0aW9uLldpdGhQYXlsb2FkcyhwYXlsb2Fkcywgc291cmNlKTtcbiAgICAgICAgY29uc3QgZGVsdGFDbGFzcyA9IERlbHRhQ2xhc3NGb3JTb3VyY2Uoc291cmNlKTtcbiAgICAgICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIG5ldy1jYXBcbiAgICAgICAgY29uc3QgZGVsdGEgPSBuZXcgZGVsdGFDbGFzcyh0aGlzLmJhc2VDb2xsZWN0aW9uLCBjb2xsZWN0aW9uLCB0aGlzLnJlbGF0ZWRDb2xsZWN0aW9uU2V0KTtcbiAgICAgICAgY29uc3QgcmVzdWx0Q29sbGVjdGlvbiA9IGF3YWl0IGRlbHRhLnJlc3VsdGluZ0NvbGxlY3Rpb24oKTtcbiAgICAgICAgY29uc3QgdXBkYXRlZERpcnR5UGF5bG9hZHMgPSByZXN1bHRDb2xsZWN0aW9uLmFsbCgpLm1hcCgocGF5bG9hZCkgPT4ge1xuICAgICAgICAgICAgY29uc3Qgc3RpbGxEaXJ0eSA9IHRoaXMuZmluYWxEaXJ0eVN0YXRlRm9yUGF5bG9hZChwYXlsb2FkKTtcbiAgICAgICAgICAgIHJldHVybiBDb3B5UGF5bG9hZChwYXlsb2FkLCB7XG4gICAgICAgICAgICAgICAgZGlydHk6IHN0aWxsRGlydHksXG4gICAgICAgICAgICAgICAgZGlydGllZERhdGU6IHN0aWxsRGlydHkgPyBuZXcgRGF0ZSgpIDogdW5kZWZpbmVkXG4gICAgICAgICAgICB9KTtcbiAgICAgICAgfSk7XG4gICAgICAgIHJldHVybiBJbW11dGFibGVQYXlsb2FkQ29sbGVjdGlvbi5XaXRoUGF5bG9hZHModXBkYXRlZERpcnR5UGF5bG9hZHMsIHNvdXJjZSk7XG4gICAgfVxuICAgIGZpbmFsRGlydHlTdGF0ZUZvclBheWxvYWQocGF5bG9hZCkge1xuICAgICAgICBjb25zdCBjdXJyZW50ID0gdGhpcy5iYXNlQ29sbGVjdGlvbi5maW5kKHBheWxvYWQudXVpZCk7XG4gICAgICAgIC8qKlxuICAgICAgICAgKiBgY3VycmVudGAgY2FuIGJlIG51bGwgaW4gdGhlIGNhc2Ugb2YgbmV3XG4gICAgICAgICAqIGl0ZW1zIHRoYXQgaGF2ZW4ndCB5ZXQgYmVlbiBtYXBwZWRcbiAgICAgICAgICovXG4gICAgICAgIGxldCBzdGlsbERpcnR5O1xuICAgICAgICBpZiAoY3VycmVudCkge1xuICAgICAgICAgICAgaWYgKHBheWxvYWQuZGlydGllZERhdGUgJiYgcGF5bG9hZC5kaXJ0aWVkRGF0ZSA+IGN1cnJlbnQuZGlydGllZERhdGUpIHtcbiAgICAgICAgICAgICAgICAvKiogVGhlIHBheWxvYWQgd2FzIGRpcnRpZWQgYXMgcGFydCBvZiBoYW5kbGluZyBkZWx0YXMsIGFuZCBub3QgYmVjYXVzZSBpdCB3YXNcbiAgICAgICAgICAgICAgICAgKiBkaXJ0aWVkIGJ5IGEgY2xpZW50LiBXZSBrZWVwIHRoZSBwYXlsb2FkIGRpcnR5IHN0YXRlIGhlcmUuICovXG4gICAgICAgICAgICAgICAgc3RpbGxEaXJ0eSA9IHBheWxvYWQuZGlydHk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgICAgICAvKiogTWFya2luZyBpdGVtcyBkaXJ0eSBhZnRlciBsYXN0U3luY0JlZ2FuIHdpbGwgY2F1c2UgdGhlbSB0byBzeW5jIGFnYWluLiAqL1xuICAgICAgICAgICAgICAgIHN0aWxsRGlydHkgPSBjdXJyZW50LmRpcnRpZWREYXRlID4gY3VycmVudC5sYXN0U3luY0JlZ2FuO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgLyoqIEZvcndhcmQgd2hhdGV2ZXIgdmFsdWUgYW55IGRlbHRhIHJlc29sdmVyIG1heSBoYXZlIHNldCAqL1xuICAgICAgICAgICAgc3RpbGxEaXJ0eSA9IHBheWxvYWQuZGlydHk7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHN0aWxsRGlydHk7XG4gICAgfVxufVxuIl0sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7Ozs7Ozs7QUFNQTtBQUNBO0FBQUE7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUlBO0FBQ0E7QUFUQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFVQTtBQVZBO0FBQUE7QUFDQTtBQURBO0FBV0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBZkE7QUFBQTtBQUNBO0FBREE7QUFlQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFuQkE7QUFBQTtBQUFBO0FBQUE7QUFDQTtBQURBO0FBQUE7QUFDQTtBQURBO0FBb0JBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQXhCQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQ0E7QUFEQTtBQUFBO0FBQ0E7QUFEQTtBQTBCQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUE5QkE7QUFBQTtBQUNBO0FBREE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFDQTtBQURBO0FBQUE7QUFBQTtBQUNBO0FBREE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFDQTtBQURBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFrQ0E7QUFDQTtBQUNBO0FBQ0E7QUFyQ0E7QUFBQTtBQUNBO0FBREE7QUFzQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFGQTtBQUlBO0FBN0NBO0FBQ0E7QUFEQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUNBO0FBREE7QUFBQTtBQUFBO0FBQ0E7QUFEQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBaURBO0FBQ0E7Ozs7O0FBSUE7QUFDQTtBQUFBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUF2RUE7QUFDQTtBQURBO0FBQUEiLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./lib/services/sync/account/response_resolver.ts\n')},"./lib/services/sync/events.ts":
|
||
/*!*************************************!*\
|
||
!*** ./lib/services/sync/events.ts ***!
|
||
\*************************************/
|
||
/*! exports provided: SyncEvent */function(module,__webpack_exports__,__webpack_require__){"use strict";eval('__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "SyncEvent", function() { return SyncEvent; });\nvar SyncEvent;\n\n(function (SyncEvent) {\n /** A full sync can consist of many round-trips to the server */\n SyncEvent["FullSyncCompleted"] = "sync =full-completed";\n /** A single sync is just one round-trip to the server completion */\n\n SyncEvent["SingleSyncCompleted"] = "sync =single-completed";\n SyncEvent["SyncWillBegin"] = "sync =will-begin";\n SyncEvent["DownloadFirstSyncCompleted"] = "sync =download-first-completed";\n SyncEvent["SyncTakingTooLong"] = "sync =taking-too-long";\n SyncEvent["SyncError"] = "sync =error";\n SyncEvent["InvalidSession"] = "sync =invalid-session";\n SyncEvent["MajorDataChange"] = "major-data-change";\n SyncEvent["LocalDataIncrementalLoad"] = "local-data-incremental-load";\n SyncEvent["LocalDataLoaded"] = "local-data-loaded";\n SyncEvent["EnterOutOfSync"] = "enter-out-of-sync";\n SyncEvent["ExitOutOfSync"] = "exit-out-of-sync";\n SyncEvent["StatusChanged"] = "status-changed";\n SyncEvent["DatabaseWriteError"] = "database-write-error";\n SyncEvent["DatabaseReadError"] = "database-read-error";\n})(SyncEvent || (SyncEvent = {}));\n\n;//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9saWIvc2VydmljZXMvc3luYy9ldmVudHMudHMuanMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly9TTkxpYnJhcnkvLi9saWIvc2VydmljZXMvc3luYy9ldmVudHMudHM/ZDgxZCJdLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgdmFyIFN5bmNFdmVudDtcbihmdW5jdGlvbiAoU3luY0V2ZW50KSB7XG4gICAgLyoqIEEgZnVsbCBzeW5jIGNhbiBjb25zaXN0IG9mIG1hbnkgcm91bmQtdHJpcHMgdG8gdGhlIHNlcnZlciAqL1xuICAgIFN5bmNFdmVudFtcIkZ1bGxTeW5jQ29tcGxldGVkXCJdID0gXCJzeW5jID1mdWxsLWNvbXBsZXRlZFwiO1xuICAgIC8qKiBBIHNpbmdsZSBzeW5jIGlzIGp1c3Qgb25lIHJvdW5kLXRyaXAgdG8gdGhlIHNlcnZlciBjb21wbGV0aW9uICovXG4gICAgU3luY0V2ZW50W1wiU2luZ2xlU3luY0NvbXBsZXRlZFwiXSA9IFwic3luYyA9c2luZ2xlLWNvbXBsZXRlZFwiO1xuICAgIFN5bmNFdmVudFtcIlN5bmNXaWxsQmVnaW5cIl0gPSBcInN5bmMgPXdpbGwtYmVnaW5cIjtcbiAgICBTeW5jRXZlbnRbXCJEb3dubG9hZEZpcnN0U3luY0NvbXBsZXRlZFwiXSA9IFwic3luYyA9ZG93bmxvYWQtZmlyc3QtY29tcGxldGVkXCI7XG4gICAgU3luY0V2ZW50W1wiU3luY1Rha2luZ1Rvb0xvbmdcIl0gPSBcInN5bmMgPXRha2luZy10b28tbG9uZ1wiO1xuICAgIFN5bmNFdmVudFtcIlN5bmNFcnJvclwiXSA9IFwic3luYyA9ZXJyb3JcIjtcbiAgICBTeW5jRXZlbnRbXCJJbnZhbGlkU2Vzc2lvblwiXSA9IFwic3luYyA9aW52YWxpZC1zZXNzaW9uXCI7XG4gICAgU3luY0V2ZW50W1wiTWFqb3JEYXRhQ2hhbmdlXCJdID0gXCJtYWpvci1kYXRhLWNoYW5nZVwiO1xuICAgIFN5bmNFdmVudFtcIkxvY2FsRGF0YUluY3JlbWVudGFsTG9hZFwiXSA9IFwibG9jYWwtZGF0YS1pbmNyZW1lbnRhbC1sb2FkXCI7XG4gICAgU3luY0V2ZW50W1wiTG9jYWxEYXRhTG9hZGVkXCJdID0gXCJsb2NhbC1kYXRhLWxvYWRlZFwiO1xuICAgIFN5bmNFdmVudFtcIkVudGVyT3V0T2ZTeW5jXCJdID0gXCJlbnRlci1vdXQtb2Ytc3luY1wiO1xuICAgIFN5bmNFdmVudFtcIkV4aXRPdXRPZlN5bmNcIl0gPSBcImV4aXQtb3V0LW9mLXN5bmNcIjtcbiAgICBTeW5jRXZlbnRbXCJTdGF0dXNDaGFuZ2VkXCJdID0gXCJzdGF0dXMtY2hhbmdlZFwiO1xuICAgIFN5bmNFdmVudFtcIkRhdGFiYXNlV3JpdGVFcnJvclwiXSA9IFwiZGF0YWJhc2Utd3JpdGUtZXJyb3JcIjtcbiAgICBTeW5jRXZlbnRbXCJEYXRhYmFzZVJlYWRFcnJvclwiXSA9IFwiZGF0YWJhc2UtcmVhZC1lcnJvclwiO1xufSkoU3luY0V2ZW50IHx8IChTeW5jRXZlbnQgPSB7fSkpO1xuO1xuIl0sIm1hcHBpbmdzIjoiQUFBQTtBQUFBO0FBQUE7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBIiwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./lib/services/sync/events.ts\n')},"./lib/services/sync/offline/operation.ts":
|
||
/*!************************************************!*\
|
||
!*** ./lib/services/sync/offline/operation.ts ***!
|
||
\************************************************/
|
||
/*! exports provided: OfflineSyncOperation */function(module,__webpack_exports__,__webpack_require__){"use strict";eval('__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "OfflineSyncOperation", function() { return OfflineSyncOperation; });\n/* harmony import */ var _babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @babel/runtime/regenerator */ "./node_modules/@babel/runtime/regenerator/index.js");\n/* harmony import */ var _babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var _Payloads_generator__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! @Payloads/generator */ "./lib/protocol/payloads/generator.ts");\n/* harmony import */ var _Services_sync_signals__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! @Services/sync/signals */ "./lib/services/sync/signals.ts");\n/* harmony import */ var _Payloads_sources__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! @Payloads/sources */ "./lib/protocol/payloads/sources.ts");\n/* harmony import */ var _Services_sync_response__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! @Services/sync/response */ "./lib/services/sync/response.ts");\n/* harmony import */ var _Lib_utils__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! @Lib/utils */ "./lib/utils.ts");\n\n\nfunction asyncGeneratorStep(gen, resolve, reject, _next, _throw, key, arg) { try { var info = gen[key](arg); var value = info.value; } catch (error) { reject(error); return; } if (info.done) { resolve(value); } else { Promise.resolve(value).then(_next, _throw); } }\n\nfunction _asyncToGenerator(fn) { return function () { var self = this, args = arguments; return new Promise(function (resolve, reject) { var gen = fn.apply(self, args); function _next(value) { asyncGeneratorStep(gen, resolve, reject, _next, _throw, "next", value); } function _throw(err) { asyncGeneratorStep(gen, resolve, reject, _next, _throw, "throw", err); } _next(undefined); }); }; }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } }\n\nfunction _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); } }\n\nfunction _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; }\n\n\n\n\n\n\nvar OfflineSyncOperation = /*#__PURE__*/function () {\n /**\n * @param payloads An array of payloads to sync offline\n * @param receiver A function that receives callback multiple times during the operation\n */\n function OfflineSyncOperation(payloads, receiver) {\n _classCallCheck(this, OfflineSyncOperation);\n\n this.payloads = payloads;\n this.receiver = receiver;\n }\n\n _createClass(OfflineSyncOperation, [{\n key: "run",\n value: function () {\n var _run = _asyncToGenerator( /*#__PURE__*/_babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0___default.a.mark(function _callee() {\n var responsePayloads, savedItems, response;\n return _babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0___default.a.wrap(function _callee$(_context) {\n while (1) {\n switch (_context.prev = _context.next) {\n case 0:\n responsePayloads = this.payloads.map(function (payload) {\n return Object(_Payloads_generator__WEBPACK_IMPORTED_MODULE_1__["CreateSourcedPayloadFromObject"])(payload, _Payloads_sources__WEBPACK_IMPORTED_MODULE_3__["PayloadSource"].LocalSaved, {\n dirty: false,\n lastSyncEnd: new Date()\n });\n });\n /* Since we are simulating a server response, they should be pure JS objects */\n\n savedItems = Object(_Lib_utils__WEBPACK_IMPORTED_MODULE_5__["Copy"])(responsePayloads);\n response = new _Services_sync_response__WEBPACK_IMPORTED_MODULE_4__["SyncResponse"]({\n saved_items: savedItems\n });\n _context.next = 5;\n return this.receiver(_Services_sync_signals__WEBPACK_IMPORTED_MODULE_2__["SyncSignal"].Response, response);\n\n case 5:\n case "end":\n return _context.stop();\n }\n }\n }, _callee, this);\n }));\n\n function run() {\n return _run.apply(this, arguments);\n }\n\n return run;\n }()\n }]);\n\n return OfflineSyncOperation;\n}();//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9saWIvc2VydmljZXMvc3luYy9vZmZsaW5lL29wZXJhdGlvbi50cy5qcyIsInNvdXJjZXMiOlsid2VicGFjazovL1NOTGlicmFyeS8uL2xpYi9zZXJ2aWNlcy9zeW5jL29mZmxpbmUvb3BlcmF0aW9uLnRzPzQxNzMiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ3JlYXRlU291cmNlZFBheWxvYWRGcm9tT2JqZWN0IH0gZnJvbSAnQFBheWxvYWRzL2dlbmVyYXRvcic7XG5pbXBvcnQgeyBTeW5jU2lnbmFsIH0gZnJvbSAnQFNlcnZpY2VzL3N5bmMvc2lnbmFscyc7XG5pbXBvcnQgeyBQYXlsb2FkU291cmNlIH0gZnJvbSAnQFBheWxvYWRzL3NvdXJjZXMnO1xuaW1wb3J0IHsgU3luY1Jlc3BvbnNlIH0gZnJvbSAnQFNlcnZpY2VzL3N5bmMvcmVzcG9uc2UnO1xuaW1wb3J0IHsgQ29weSB9IGZyb20gJ0BMaWIvdXRpbHMnO1xuZXhwb3J0IGNsYXNzIE9mZmxpbmVTeW5jT3BlcmF0aW9uIHtcbiAgICAvKipcbiAgICAgKiBAcGFyYW0gcGF5bG9hZHMgIEFuIGFycmF5IG9mIHBheWxvYWRzIHRvIHN5bmMgb2ZmbGluZVxuICAgICAqIEBwYXJhbSByZWNlaXZlciAgQSBmdW5jdGlvbiB0aGF0IHJlY2VpdmVzIGNhbGxiYWNrIG11bHRpcGxlIHRpbWVzIGR1cmluZyB0aGUgb3BlcmF0aW9uXG4gICAgICovXG4gICAgY29uc3RydWN0b3IocGF5bG9hZHMsIHJlY2VpdmVyKSB7XG4gICAgICAgIHRoaXMucGF5bG9hZHMgPSBwYXlsb2FkcztcbiAgICAgICAgdGhpcy5yZWNlaXZlciA9IHJlY2VpdmVyO1xuICAgIH1cbiAgICBhc3luYyBydW4oKSB7XG4gICAgICAgIGNvbnN0IHJlc3BvbnNlUGF5bG9hZHMgPSB0aGlzLnBheWxvYWRzLm1hcCgocGF5bG9hZCkgPT4ge1xuICAgICAgICAgICAgcmV0dXJuIENyZWF0ZVNvdXJjZWRQYXlsb2FkRnJvbU9iamVjdChwYXlsb2FkLCBQYXlsb2FkU291cmNlLkxvY2FsU2F2ZWQsIHtcbiAgICAgICAgICAgICAgICBkaXJ0eTogZmFsc2UsXG4gICAgICAgICAgICAgICAgbGFzdFN5bmNFbmQ6IG5ldyBEYXRlKClcbiAgICAgICAgICAgIH0pO1xuICAgICAgICB9KTtcbiAgICAgICAgLyogU2luY2Ugd2UgYXJlIHNpbXVsYXRpbmcgYSBzZXJ2ZXIgcmVzcG9uc2UsIHRoZXkgc2hvdWxkIGJlIHB1cmUgSlMgb2JqZWN0cyAqL1xuICAgICAgICBjb25zdCBzYXZlZEl0ZW1zID0gQ29weShyZXNwb25zZVBheWxvYWRzKTtcbiAgICAgICAgY29uc3QgcmVzcG9uc2UgPSBuZXcgU3luY1Jlc3BvbnNlKHsgc2F2ZWRfaXRlbXM6IHNhdmVkSXRlbXMgfSk7XG4gICAgICAgIGF3YWl0IHRoaXMucmVjZWl2ZXIoU3luY1NpZ25hbC5SZXNwb25zZSwgcmVzcG9uc2UpO1xuICAgIH1cbn1cbiJdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7Ozs7QUFJQTtBQUFBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQVRBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQVVBO0FBQ0E7QUFDQTtBQUNBO0FBRkE7QUFJQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQUE7QUFBQTtBQWxCQTtBQUFBO0FBQ0E7QUFEQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUNBO0FBREE7QUFBQTtBQUFBO0FBQ0E7QUFEQTtBQUFBO0FBQUE7QUFDQTtBQURBO0FBQUEiLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./lib/services/sync/offline/operation.ts\n')},"./lib/services/sync/response.ts":
|
||
/*!***************************************!*\
|
||
!*** ./lib/services/sync/response.ts ***!
|
||
\***************************************/
|
||
/*! exports provided: SyncResponse */function(module,__webpack_exports__,__webpack_require__){"use strict";eval('__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "SyncResponse", function() { return SyncResponse; });\n/* harmony import */ var _Lib_utils__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @Lib/utils */ "./lib/utils.ts");\n/* harmony import */ var _Services_api_keys__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! @Services/api/keys */ "./lib/services/api/keys.ts");\n/* harmony import */ var _Payloads_sources__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! @Payloads/sources */ "./lib/protocol/payloads/sources.ts");\n/* harmony import */ var _Payloads_generator__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! @Payloads/generator */ "./lib/protocol/payloads/generator.ts");\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } }\n\nfunction _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); } }\n\nfunction _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; }\n\n\n\n\n\nvar ConflictType;\n\n(function (ConflictType) {\n ConflictType["ConflictingData"] = "sync_conflict";\n ConflictType["UuidConflict"] = "uuid_conflict";\n})(ConflictType || (ConflictType = {}));\n\nvar SyncResponse = /*#__PURE__*/function () {\n function SyncResponse(rawResponse) {\n _classCallCheck(this, SyncResponse);\n\n this.rawResponse = rawResponse;\n this.savedPayloads = this.filterRawItemArray(rawResponse.saved_items).map(function (rawItem) {\n return Object(_Payloads_generator__WEBPACK_IMPORTED_MODULE_3__["CreateSourcedPayloadFromObject"])(rawItem, _Payloads_sources__WEBPACK_IMPORTED_MODULE_2__["PayloadSource"].RemoteSaved);\n });\n this.retrievedPayloads = this.filterRawItemArray(rawResponse.retrieved_items).map(function (rawItem) {\n return Object(_Payloads_generator__WEBPACK_IMPORTED_MODULE_3__["CreateSourcedPayloadFromObject"])(rawItem, _Payloads_sources__WEBPACK_IMPORTED_MODULE_2__["PayloadSource"].RemoteRetrieved);\n });\n this.dataConflictPayloads = this.filterRawItemArray(this.rawDataConflictItems).map(function (rawItem) {\n return Object(_Payloads_generator__WEBPACK_IMPORTED_MODULE_3__["CreateSourcedPayloadFromObject"])(rawItem, _Payloads_sources__WEBPACK_IMPORTED_MODULE_2__["PayloadSource"].ConflictData);\n });\n this.uuidConflictPayloads = this.filterRawItemArray(this.rawUuidConflictItems).map(function (rawItem) {\n return Object(_Payloads_generator__WEBPACK_IMPORTED_MODULE_3__["CreateSourcedPayloadFromObject"])(rawItem, _Payloads_sources__WEBPACK_IMPORTED_MODULE_2__["PayloadSource"].ConflictUuid);\n });\n /**\n * Items may be deleted from a combination of sources, such as from RemoteSaved,\n * or if a conflict handler decides to delete a payload.\n */\n\n this.deletedPayloads = this.allProcessedPayloads.filter(function (payload) {\n return payload.discardable;\n });\n Object(_Lib_utils__WEBPACK_IMPORTED_MODULE_0__["deepFreeze"])(this);\n }\n /**\n * Filter out and exclude any items that do not have a uuid. These are useless to us.\n */\n\n\n _createClass(SyncResponse, [{\n key: "filterRawItemArray",\n value: function filterRawItemArray() {\n var rawItems = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : [];\n return rawItems.filter(function (rawItem) {\n if (!rawItem.uuid) {\n return false;\n } else {\n return true;\n }\n });\n }\n }, {\n key: "error",\n get: function get() {\n return this.rawResponse.error;\n }\n /**\n * Returns the HTTP status code for invalid requests\n */\n\n }, {\n key: "status",\n get: function get() {\n return this.rawResponse.status;\n }\n }, {\n key: "lastSyncToken",\n get: function get() {\n return this.rawResponse[_Services_api_keys__WEBPACK_IMPORTED_MODULE_1__["ApiEndpointParam"].LastSyncToken];\n }\n }, {\n key: "paginationToken",\n get: function get() {\n return this.rawResponse[_Services_api_keys__WEBPACK_IMPORTED_MODULE_1__["ApiEndpointParam"].PaginationToken];\n }\n }, {\n key: "integrityHash",\n get: function get() {\n return this.rawResponse[_Services_api_keys__WEBPACK_IMPORTED_MODULE_1__["ApiEndpointParam"].IntegrityResult];\n }\n }, {\n key: "checkIntegrity",\n get: function get() {\n return this.integrityHash && !this.paginationToken;\n }\n }, {\n key: "numberOfItemsInvolved",\n get: function get() {\n return this.allProcessedPayloads.length;\n }\n }, {\n key: "allProcessedPayloads",\n get: function get() {\n var allPayloads = this.savedPayloads.concat(this.retrievedPayloads).concat(this.dataConflictPayloads).concat(this.uuidConflictPayloads);\n return allPayloads;\n }\n }, {\n key: "rawUuidConflictItems",\n get: function get() {\n return this.rawConflictObjects.filter(function (conflict) {\n return conflict.type === ConflictType.UuidConflict;\n }).map(function (conflict) {\n return conflict.unsaved_item || conflict.item;\n });\n }\n }, {\n key: "rawDataConflictItems",\n get: function get() {\n return this.rawConflictObjects.filter(function (conflict) {\n return conflict.type === ConflictType.ConflictingData;\n }).map(function (conflict) {\n return conflict.server_item || conflict.item;\n });\n }\n }, {\n key: "rawConflictObjects",\n get: function get() {\n var conflicts = this.rawResponse.conflicts || [];\n var legacyConflicts = this.rawResponse.unsaved || [];\n return conflicts.concat(legacyConflicts);\n }\n }, {\n key: "hasError",\n get: function get() {\n return !Object(_Lib_utils__WEBPACK_IMPORTED_MODULE_0__["isNullOrUndefined"])(this.rawResponse.error);\n }\n }]);\n\n return SyncResponse;\n}();//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9saWIvc2VydmljZXMvc3luYy9yZXNwb25zZS50cy5qcyIsInNvdXJjZXMiOlsid2VicGFjazovL1NOTGlicmFyeS8uL2xpYi9zZXJ2aWNlcy9zeW5jL3Jlc3BvbnNlLnRzPzcyYWIiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgaXNOdWxsT3JVbmRlZmluZWQsIGRlZXBGcmVlemUgfSBmcm9tICdATGliL3V0aWxzJztcbmltcG9ydCB7IEFwaUVuZHBvaW50UGFyYW0gfSBmcm9tICdAU2VydmljZXMvYXBpL2tleXMnO1xuaW1wb3J0IHsgUGF5bG9hZFNvdXJjZSB9IGZyb20gJ0BQYXlsb2Fkcy9zb3VyY2VzJztcbmltcG9ydCB7IENyZWF0ZVNvdXJjZWRQYXlsb2FkRnJvbU9iamVjdCB9IGZyb20gJ0BQYXlsb2Fkcy9nZW5lcmF0b3InO1xudmFyIENvbmZsaWN0VHlwZTtcbihmdW5jdGlvbiAoQ29uZmxpY3RUeXBlKSB7XG4gICAgQ29uZmxpY3RUeXBlW1wiQ29uZmxpY3RpbmdEYXRhXCJdID0gXCJzeW5jX2NvbmZsaWN0XCI7XG4gICAgQ29uZmxpY3RUeXBlW1wiVXVpZENvbmZsaWN0XCJdID0gXCJ1dWlkX2NvbmZsaWN0XCI7XG59KShDb25mbGljdFR5cGUgfHwgKENvbmZsaWN0VHlwZSA9IHt9KSk7XG5leHBvcnQgY2xhc3MgU3luY1Jlc3BvbnNlIHtcbiAgICBjb25zdHJ1Y3RvcihyYXdSZXNwb25zZSkge1xuICAgICAgICB0aGlzLnJhd1Jlc3BvbnNlID0gcmF3UmVzcG9uc2U7XG4gICAgICAgIHRoaXMuc2F2ZWRQYXlsb2FkcyA9IHRoaXMuXG4gICAgICAgICAgICBmaWx0ZXJSYXdJdGVtQXJyYXkocmF3UmVzcG9uc2Uuc2F2ZWRfaXRlbXMpLlxuICAgICAgICAgICAgbWFwKChyYXdJdGVtKSA9PiB7XG4gICAgICAgICAgICByZXR1cm4gQ3JlYXRlU291cmNlZFBheWxvYWRGcm9tT2JqZWN0KHJhd0l0ZW0sIFBheWxvYWRTb3VyY2UuUmVtb3RlU2F2ZWQpO1xuICAgICAgICB9KTtcbiAgICAgICAgdGhpcy5yZXRyaWV2ZWRQYXlsb2FkcyA9IHRoaXMuXG4gICAgICAgICAgICBmaWx0ZXJSYXdJdGVtQXJyYXkocmF3UmVzcG9uc2UucmV0cmlldmVkX2l0ZW1zKS5cbiAgICAgICAgICAgIG1hcCgocmF3SXRlbSkgPT4ge1xuICAgICAgICAgICAgcmV0dXJuIENyZWF0ZVNvdXJjZWRQYXlsb2FkRnJvbU9iamVjdChyYXdJdGVtLCBQYXlsb2FkU291cmNlLlJlbW90ZVJldHJpZXZlZCk7XG4gICAgICAgIH0pO1xuICAgICAgICB0aGlzLmRhdGFDb25mbGljdFBheWxvYWRzID0gdGhpcy5cbiAgICAgICAgICAgIGZpbHRlclJhd0l0ZW1BcnJheSh0aGlzLnJhd0RhdGFDb25mbGljdEl0ZW1zKS5cbiAgICAgICAgICAgIG1hcCgocmF3SXRlbSkgPT4ge1xuICAgICAgICAgICAgcmV0dXJuIENyZWF0ZVNvdXJjZWRQYXlsb2FkRnJvbU9iamVjdChyYXdJdGVtLCBQYXlsb2FkU291cmNlLkNvbmZsaWN0RGF0YSk7XG4gICAgICAgIH0pO1xuICAgICAgICB0aGlzLnV1aWRDb25mbGljdFBheWxvYWRzID0gdGhpcy5cbiAgICAgICAgICAgIGZpbHRlclJhd0l0ZW1BcnJheSh0aGlzLnJhd1V1aWRDb25mbGljdEl0ZW1zKS5cbiAgICAgICAgICAgIG1hcCgocmF3SXRlbSkgPT4ge1xuICAgICAgICAgICAgcmV0dXJuIENyZWF0ZVNvdXJjZWRQYXlsb2FkRnJvbU9iamVjdChyYXdJdGVtLCBQYXlsb2FkU291cmNlLkNvbmZsaWN0VXVpZCk7XG4gICAgICAgIH0pO1xuICAgICAgICAvKipcbiAgICAgICAgICogSXRlbXMgbWF5IGJlIGRlbGV0ZWQgZnJvbSBhIGNvbWJpbmF0aW9uIG9mIHNvdXJjZXMsIHN1Y2ggYXMgZnJvbSBSZW1vdGVTYXZlZCxcbiAgICAgICAgICogb3IgaWYgYSBjb25mbGljdCBoYW5kbGVyIGRlY2lkZXMgdG8gZGVsZXRlIGEgcGF5bG9hZC5cbiAgICAgICAgICovXG4gICAgICAgIHRoaXMuZGVsZXRlZFBheWxvYWRzID0gdGhpcy5hbGxQcm9jZXNzZWRQYXlsb2Fkcy5maWx0ZXIoKHBheWxvYWQpID0+IHtcbiAgICAgICAgICAgIHJldHVybiBwYXlsb2FkLmRpc2NhcmRhYmxlO1xuICAgICAgICB9KTtcbiAgICAgICAgZGVlcEZyZWV6ZSh0aGlzKTtcbiAgICB9XG4gICAgLyoqXG4gICAgICogRmlsdGVyIG91dCBhbmQgZXhjbHVkZSBhbnkgaXRlbXMgdGhhdCBkbyBub3QgaGF2ZSBhIHV1aWQuIFRoZXNlIGFyZSB1c2VsZXNzIHRvIHVzLlxuICAgICAqL1xuICAgIGZpbHRlclJhd0l0ZW1BcnJheShyYXdJdGVtcyA9IFtdKSB7XG4gICAgICAgIHJldHVybiByYXdJdGVtcy5maWx0ZXIoKHJhd0l0ZW0pID0+IHtcbiAgICAgICAgICAgIGlmICghcmF3SXRlbS51dWlkKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgICAgICAgICB9XG4gICAgICAgIH0pO1xuICAgIH1cbiAgICBnZXQgZXJyb3IoKSB7XG4gICAgICAgIHJldHVybiB0aGlzLnJhd1Jlc3BvbnNlLmVycm9yO1xuICAgIH1cbiAgICAvKipcbiAgICAgKiBSZXR1cm5zIHRoZSBIVFRQIHN0YXR1cyBjb2RlIGZvciBpbnZhbGlkIHJlcXVlc3RzXG4gICAgICovXG4gICAgZ2V0IHN0YXR1cygpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMucmF3UmVzcG9uc2Uuc3RhdHVzO1xuICAgIH1cbiAgICBnZXQgbGFzdFN5bmNUb2tlbigpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMucmF3UmVzcG9uc2VbQXBpRW5kcG9pbnRQYXJhbS5MYXN0U3luY1Rva2VuXTtcbiAgICB9XG4gICAgZ2V0IHBhZ2luYXRpb25Ub2tlbigpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMucmF3UmVzcG9uc2VbQXBpRW5kcG9pbnRQYXJhbS5QYWdpbmF0aW9uVG9rZW5dO1xuICAgIH1cbiAgICBnZXQgaW50ZWdyaXR5SGFzaCgpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMucmF3UmVzcG9uc2VbQXBpRW5kcG9pbnRQYXJhbS5JbnRlZ3JpdHlSZXN1bHRdO1xuICAgIH1cbiAgICBnZXQgY2hlY2tJbnRlZ3JpdHkoKSB7XG4gICAgICAgIHJldHVybiB0aGlzLmludGVncml0eUhhc2ggJiYgIXRoaXMucGFnaW5hdGlvblRva2VuO1xuICAgIH1cbiAgICBnZXQgbnVtYmVyT2ZJdGVtc0ludm9sdmVkKCkge1xuICAgICAgICByZXR1cm4gdGhpcy5hbGxQcm9jZXNzZWRQYXlsb2Fkcy5sZW5ndGg7XG4gICAgfVxuICAgIGdldCBhbGxQcm9jZXNzZWRQYXlsb2FkcygpIHtcbiAgICAgICAgY29uc3QgYWxsUGF5bG9hZHMgPSB0aGlzLnNhdmVkUGF5bG9hZHNcbiAgICAgICAgICAgIC5jb25jYXQodGhpcy5yZXRyaWV2ZWRQYXlsb2FkcylcbiAgICAgICAgICAgIC5jb25jYXQodGhpcy5kYXRhQ29uZmxpY3RQYXlsb2FkcylcbiAgICAgICAgICAgIC5jb25jYXQodGhpcy51dWlkQ29uZmxpY3RQYXlsb2Fkcyk7XG4gICAgICAgIHJldHVybiBhbGxQYXlsb2FkcztcbiAgICB9XG4gICAgZ2V0IHJhd1V1aWRDb25mbGljdEl0ZW1zKCkge1xuICAgICAgICByZXR1cm4gdGhpcy5yYXdDb25mbGljdE9iamVjdHMuZmlsdGVyKChjb25mbGljdCkgPT4ge1xuICAgICAgICAgICAgcmV0dXJuIGNvbmZsaWN0LnR5cGUgPT09IENvbmZsaWN0VHlwZS5VdWlkQ29uZmxpY3Q7XG4gICAgICAgIH0pLm1hcCgoY29uZmxpY3QpID0+IHtcbiAgICAgICAgICAgIHJldHVybiBjb25mbGljdC51bnNhdmVkX2l0ZW0gfHwgY29uZmxpY3QuaXRlbTtcbiAgICAgICAgfSk7XG4gICAgfVxuICAgIGdldCByYXdEYXRhQ29uZmxpY3RJdGVtcygpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMucmF3Q29uZmxpY3RPYmplY3RzLmZpbHRlcigoY29uZmxpY3QpID0+IHtcbiAgICAgICAgICAgIHJldHVybiBjb25mbGljdC50eXBlID09PSBDb25mbGljdFR5cGUuQ29uZmxpY3RpbmdEYXRhO1xuICAgICAgICB9KS5tYXAoKGNvbmZsaWN0KSA9PiB7XG4gICAgICAgICAgICByZXR1cm4gY29uZmxpY3Quc2VydmVyX2l0ZW0gfHwgY29uZmxpY3QuaXRlbTtcbiAgICAgICAgfSk7XG4gICAgfVxuICAgIGdldCByYXdDb25mbGljdE9iamVjdHMoKSB7XG4gICAgICAgIGNvbnN0IGNvbmZsaWN0cyA9IHRoaXMucmF3UmVzcG9uc2UuY29uZmxpY3RzIHx8IFtdO1xuICAgICAgICBjb25zdCBsZWdhY3lDb25mbGljdHMgPSB0aGlzLnJhd1Jlc3BvbnNlLnVuc2F2ZWQgfHwgW107XG4gICAgICAgIHJldHVybiBjb25mbGljdHMuY29uY2F0KGxlZ2FjeUNvbmZsaWN0cyk7XG4gICAgfVxuICAgIGdldCBoYXNFcnJvcigpIHtcbiAgICAgICAgcmV0dXJuICFpc051bGxPclVuZGVmaW5lZCh0aGlzLnJhd1Jlc3BvbnNlLmVycm9yKTtcbiAgICB9XG59XG4iXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7OztBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQUE7QUFDQTtBQUFBO0FBQ0E7QUFHQTtBQUNBO0FBQ0E7QUFHQTtBQUNBO0FBQ0E7QUFHQTtBQUNBO0FBQ0E7QUFHQTtBQUNBO0FBQ0E7Ozs7O0FBSUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOzs7OztBQWhDQTtBQUFBO0FBQUE7QUFtQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBNUNBO0FBQUE7QUFBQTtBQThDQTtBQUNBO0FBQ0E7Ozs7QUFoREE7QUFBQTtBQUFBO0FBb0RBO0FBQ0E7QUFyREE7QUFBQTtBQUFBO0FBdURBO0FBQ0E7QUF4REE7QUFBQTtBQUFBO0FBMERBO0FBQ0E7QUEzREE7QUFBQTtBQUFBO0FBNkRBO0FBQ0E7QUE5REE7QUFBQTtBQUFBO0FBZ0VBO0FBQ0E7QUFqRUE7QUFBQTtBQUFBO0FBbUVBO0FBQ0E7QUFwRUE7QUFBQTtBQUFBO0FBc0VBO0FBSUE7QUFDQTtBQTNFQTtBQUFBO0FBQUE7QUE2RUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBbEZBO0FBQUE7QUFBQTtBQW9GQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUF6RkE7QUFBQTtBQUFBO0FBMkZBO0FBQ0E7QUFDQTtBQUNBO0FBOUZBO0FBQUE7QUFBQTtBQWdHQTtBQUNBO0FBakdBO0FBQ0E7QUFEQTtBQUFBIiwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./lib/services/sync/response.ts\n')},"./lib/services/sync/signals.ts":
|
||
/*!**************************************!*\
|
||
!*** ./lib/services/sync/signals.ts ***!
|
||
\**************************************/
|
||
/*! exports provided: SyncSignal */function(module,__webpack_exports__,__webpack_require__){"use strict";eval('__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "SyncSignal", function() { return SyncSignal; });\nvar SyncSignal;\n\n(function (SyncSignal) {\n SyncSignal[SyncSignal["Response"] = 1] = "Response";\n SyncSignal[SyncSignal["StatusChanged"] = 2] = "StatusChanged";\n})(SyncSignal || (SyncSignal = {}));//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9saWIvc2VydmljZXMvc3luYy9zaWduYWxzLnRzLmpzIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vU05MaWJyYXJ5Ly4vbGliL3NlcnZpY2VzL3N5bmMvc2lnbmFscy50cz9iY2E3Il0sInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCB2YXIgU3luY1NpZ25hbDtcbihmdW5jdGlvbiAoU3luY1NpZ25hbCkge1xuICAgIFN5bmNTaWduYWxbU3luY1NpZ25hbFtcIlJlc3BvbnNlXCJdID0gMV0gPSBcIlJlc3BvbnNlXCI7XG4gICAgU3luY1NpZ25hbFtTeW5jU2lnbmFsW1wiU3RhdHVzQ2hhbmdlZFwiXSA9IDJdID0gXCJTdGF0dXNDaGFuZ2VkXCI7XG59KShTeW5jU2lnbmFsIHx8IChTeW5jU2lnbmFsID0ge30pKTtcbiJdLCJtYXBwaW5ncyI6IkFBQUE7QUFBQTtBQUFBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQSIsInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./lib/services/sync/signals.ts\n')},"./lib/services/sync/sync_op_status.ts":
|
||
/*!*********************************************!*\
|
||
!*** ./lib/services/sync/sync_op_status.ts ***!
|
||
\*********************************************/
|
||
/*! exports provided: SyncOpStatus */function(module,__webpack_exports__,__webpack_require__){"use strict";eval('__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "SyncOpStatus", function() { return SyncOpStatus; });\n/* harmony import */ var _Lib_services_sync_events__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @Lib/services/sync/events */ "./lib/services/sync/events.ts");\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } }\n\nfunction _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); } }\n\nfunction _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; }\n\n\nvar HEALTHY_SYNC_DURATION_THRESHOLD_S = 5;\nvar TIMING_MONITOR_POLL_FREQUENCY_MS = 500;\nvar SyncOpStatus = /*#__PURE__*/function () {\n function SyncOpStatus(interval, receiver) {\n _classCallCheck(this, SyncOpStatus);\n\n this.inProgress = false;\n this.completedUpload = 0;\n this.totalUpload = 0;\n this.downloaded = 0;\n this.databaseLoadCurrent = 0;\n this.databaseLoadTotal = 0;\n this.databaseLoadDone = false;\n this.syncing = false;\n this.interval = interval;\n this.receiver = receiver;\n }\n\n _createClass(SyncOpStatus, [{\n key: "deinit",\n value: function deinit() {\n this.stopTimingMonitor();\n }\n }, {\n key: "setSyncInProgress",\n value: function setSyncInProgress(inProgress) {\n this.inProgress = true;\n }\n }, {\n key: "setUploadStatus",\n value: function setUploadStatus(completed, total) {\n this.completedUpload = completed;\n this.totalUpload = total;\n this.receiver(_Lib_services_sync_events__WEBPACK_IMPORTED_MODULE_0__["SyncEvent"].StatusChanged);\n }\n }, {\n key: "setDownloadStatus",\n value: function setDownloadStatus(downloaded) {\n this.downloaded += downloaded;\n this.receiver(_Lib_services_sync_events__WEBPACK_IMPORTED_MODULE_0__["SyncEvent"].StatusChanged);\n }\n }, {\n key: "setDatabaseLoadStatus",\n value: function setDatabaseLoadStatus(current, total, done) {\n this.databaseLoadCurrent = current;\n this.databaseLoadTotal = total;\n this.databaseLoadDone = done;\n\n if (done) {\n this.receiver(_Lib_services_sync_events__WEBPACK_IMPORTED_MODULE_0__["SyncEvent"].LocalDataLoaded);\n } else {\n this.receiver(_Lib_services_sync_events__WEBPACK_IMPORTED_MODULE_0__["SyncEvent"].LocalDataIncrementalLoad);\n }\n }\n }, {\n key: "getStats",\n value: function getStats() {\n return {\n uploadCompletionCount: this.completedUpload,\n uploadTotalCount: this.totalUpload,\n downloadCount: this.downloaded,\n localDataDone: this.databaseLoadDone,\n localDataCurrent: this.databaseLoadCurrent,\n localDataTotal: this.databaseLoadTotal\n };\n }\n }, {\n key: "setDidBegin",\n value: function setDidBegin() {\n this.syncing = true;\n this.syncStart = new Date();\n }\n }, {\n key: "setDidEnd",\n value: function setDidEnd() {\n this.syncing = false;\n this.syncEnd = new Date();\n }\n }, {\n key: "startTimingMonitor",\n\n /**\n * Notifies receiver if current sync request is taking too long to complete.\n */\n value: function startTimingMonitor() {\n var _this = this;\n\n if (this.timingMonitor) {\n this.stopTimingMonitor();\n }\n\n this.timingMonitor = this.interval(function () {\n if (_this.secondsSinceSyncStart > HEALTHY_SYNC_DURATION_THRESHOLD_S) {\n _this.receiver(_Lib_services_sync_events__WEBPACK_IMPORTED_MODULE_0__["SyncEvent"].SyncTakingTooLong);\n\n _this.stopTimingMonitor();\n }\n }, TIMING_MONITOR_POLL_FREQUENCY_MS);\n }\n }, {\n key: "stopTimingMonitor",\n value: function stopTimingMonitor() {\n if (Object.prototype.hasOwnProperty.call(this.interval, \'cancel\')) {\n this.interval.cancel(this.timingMonitor);\n } else {\n clearInterval(this.timingMonitor);\n }\n\n this.timingMonitor = null;\n }\n }, {\n key: "hasError",\n value: function hasError() {\n return !!this.error;\n }\n }, {\n key: "setError",\n value: function setError(error) {\n this.error = error;\n }\n }, {\n key: "clearError",\n value: function clearError() {\n this.error = null;\n }\n }, {\n key: "reset",\n value: function reset() {\n this.downloaded = 0;\n this.completedUpload = 0;\n this.totalUpload = 0;\n this.inProgress = false;\n this.syncing = false;\n this.error = null;\n this.stopTimingMonitor();\n this.receiver(_Lib_services_sync_events__WEBPACK_IMPORTED_MODULE_0__["SyncEvent"].StatusChanged);\n }\n }, {\n key: "syncInProgress",\n get: function get() {\n return this.syncing === true;\n }\n }, {\n key: "secondsSinceSyncStart",\n get: function get() {\n return (new Date().getTime() - this.syncStart.getTime()) / 1000;\n }\n }]);\n\n return SyncOpStatus;\n}();//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9saWIvc2VydmljZXMvc3luYy9zeW5jX29wX3N0YXR1cy50cy5qcyIsInNvdXJjZXMiOlsid2VicGFjazovL1NOTGlicmFyeS8uL2xpYi9zZXJ2aWNlcy9zeW5jL3N5bmNfb3Bfc3RhdHVzLnRzP2E5NDIiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgU3luY0V2ZW50IH0gZnJvbSAnQExpYi9zZXJ2aWNlcy9zeW5jL2V2ZW50cyc7XG5jb25zdCBIRUFMVEhZX1NZTkNfRFVSQVRJT05fVEhSRVNIT0xEX1MgPSA1O1xuY29uc3QgVElNSU5HX01PTklUT1JfUE9MTF9GUkVRVUVOQ1lfTVMgPSA1MDA7XG5leHBvcnQgY2xhc3MgU3luY09wU3RhdHVzIHtcbiAgICBjb25zdHJ1Y3RvcihpbnRlcnZhbCwgcmVjZWl2ZXIpIHtcbiAgICAgICAgdGhpcy5pblByb2dyZXNzID0gZmFsc2U7XG4gICAgICAgIHRoaXMuY29tcGxldGVkVXBsb2FkID0gMDtcbiAgICAgICAgdGhpcy50b3RhbFVwbG9hZCA9IDA7XG4gICAgICAgIHRoaXMuZG93bmxvYWRlZCA9IDA7XG4gICAgICAgIHRoaXMuZGF0YWJhc2VMb2FkQ3VycmVudCA9IDA7XG4gICAgICAgIHRoaXMuZGF0YWJhc2VMb2FkVG90YWwgPSAwO1xuICAgICAgICB0aGlzLmRhdGFiYXNlTG9hZERvbmUgPSBmYWxzZTtcbiAgICAgICAgdGhpcy5zeW5jaW5nID0gZmFsc2U7XG4gICAgICAgIHRoaXMuaW50ZXJ2YWwgPSBpbnRlcnZhbDtcbiAgICAgICAgdGhpcy5yZWNlaXZlciA9IHJlY2VpdmVyO1xuICAgIH1cbiAgICBkZWluaXQoKSB7XG4gICAgICAgIHRoaXMuc3RvcFRpbWluZ01vbml0b3IoKTtcbiAgICB9XG4gICAgc2V0U3luY0luUHJvZ3Jlc3MoaW5Qcm9ncmVzcykge1xuICAgICAgICB0aGlzLmluUHJvZ3Jlc3MgPSB0cnVlO1xuICAgIH1cbiAgICBzZXRVcGxvYWRTdGF0dXMoY29tcGxldGVkLCB0b3RhbCkge1xuICAgICAgICB0aGlzLmNvbXBsZXRlZFVwbG9hZCA9IGNvbXBsZXRlZDtcbiAgICAgICAgdGhpcy50b3RhbFVwbG9hZCA9IHRvdGFsO1xuICAgICAgICB0aGlzLnJlY2VpdmVyKFN5bmNFdmVudC5TdGF0dXNDaGFuZ2VkKTtcbiAgICB9XG4gICAgc2V0RG93bmxvYWRTdGF0dXMoZG93bmxvYWRlZCkge1xuICAgICAgICB0aGlzLmRvd25sb2FkZWQgKz0gZG93bmxvYWRlZDtcbiAgICAgICAgdGhpcy5yZWNlaXZlcihTeW5jRXZlbnQuU3RhdHVzQ2hhbmdlZCk7XG4gICAgfVxuICAgIHNldERhdGFiYXNlTG9hZFN0YXR1cyhjdXJyZW50LCB0b3RhbCwgZG9uZSkge1xuICAgICAgICB0aGlzLmRhdGFiYXNlTG9hZEN1cnJlbnQgPSBjdXJyZW50O1xuICAgICAgICB0aGlzLmRhdGFiYXNlTG9hZFRvdGFsID0gdG90YWw7XG4gICAgICAgIHRoaXMuZGF0YWJhc2VMb2FkRG9uZSA9IGRvbmU7XG4gICAgICAgIGlmIChkb25lKSB7XG4gICAgICAgICAgICB0aGlzLnJlY2VpdmVyKFN5bmNFdmVudC5Mb2NhbERhdGFMb2FkZWQpO1xuICAgICAgICB9XG4gICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgdGhpcy5yZWNlaXZlcihTeW5jRXZlbnQuTG9jYWxEYXRhSW5jcmVtZW50YWxMb2FkKTtcbiAgICAgICAgfVxuICAgIH1cbiAgICBnZXRTdGF0cygpIHtcbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgIHVwbG9hZENvbXBsZXRpb25Db3VudDogdGhpcy5jb21wbGV0ZWRVcGxvYWQsXG4gICAgICAgICAgICB1cGxvYWRUb3RhbENvdW50OiB0aGlzLnRvdGFsVXBsb2FkLFxuICAgICAgICAgICAgZG93bmxvYWRDb3VudDogdGhpcy5kb3dubG9hZGVkLFxuICAgICAgICAgICAgbG9jYWxEYXRhRG9uZTogdGhpcy5kYXRhYmFzZUxvYWREb25lLFxuICAgICAgICAgICAgbG9jYWxEYXRhQ3VycmVudDogdGhpcy5kYXRhYmFzZUxvYWRDdXJyZW50LFxuICAgICAgICAgICAgbG9jYWxEYXRhVG90YWw6IHRoaXMuZGF0YWJhc2VMb2FkVG90YWxcbiAgICAgICAgfTtcbiAgICB9XG4gICAgc2V0RGlkQmVnaW4oKSB7XG4gICAgICAgIHRoaXMuc3luY2luZyA9IHRydWU7XG4gICAgICAgIHRoaXMuc3luY1N0YXJ0ID0gbmV3IERhdGUoKTtcbiAgICB9XG4gICAgc2V0RGlkRW5kKCkge1xuICAgICAgICB0aGlzLnN5bmNpbmcgPSBmYWxzZTtcbiAgICAgICAgdGhpcy5zeW5jRW5kID0gbmV3IERhdGUoKTtcbiAgICB9XG4gICAgZ2V0IHN5bmNJblByb2dyZXNzKCkge1xuICAgICAgICByZXR1cm4gdGhpcy5zeW5jaW5nID09PSB0cnVlO1xuICAgIH1cbiAgICBnZXQgc2Vjb25kc1NpbmNlU3luY1N0YXJ0KCkge1xuICAgICAgICByZXR1cm4gKG5ldyBEYXRlKCkuZ2V0VGltZSgpIC0gdGhpcy5zeW5jU3RhcnQuZ2V0VGltZSgpKSAvIDEwMDA7XG4gICAgfVxuICAgIC8qKlxuICAgICAqIE5vdGlmaWVzIHJlY2VpdmVyIGlmIGN1cnJlbnQgc3luYyByZXF1ZXN0IGlzIHRha2luZyB0b28gbG9uZyB0byBjb21wbGV0ZS5cbiAgICAgKi9cbiAgICBzdGFydFRpbWluZ01vbml0b3IoKSB7XG4gICAgICAgIGlmICh0aGlzLnRpbWluZ01vbml0b3IpIHtcbiAgICAgICAgICAgIHRoaXMuc3RvcFRpbWluZ01vbml0b3IoKTtcbiAgICAgICAgfVxuICAgICAgICB0aGlzLnRpbWluZ01vbml0b3IgPSB0aGlzLmludGVydmFsKCgpID0+IHtcbiAgICAgICAgICAgIGlmICh0aGlzLnNlY29uZHNTaW5jZVN5bmNTdGFydCA+IEhFQUxUSFlfU1lOQ19EVVJBVElPTl9USFJFU0hPTERfUykge1xuICAgICAgICAgICAgICAgIHRoaXMucmVjZWl2ZXIoU3luY0V2ZW50LlN5bmNUYWtpbmdUb29Mb25nKTtcbiAgICAgICAgICAgICAgICB0aGlzLnN0b3BUaW1pbmdNb25pdG9yKCk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH0sIFRJTUlOR19NT05JVE9SX1BPTExfRlJFUVVFTkNZX01TKTtcbiAgICB9XG4gICAgc3RvcFRpbWluZ01vbml0b3IoKSB7XG4gICAgICAgIGlmIChPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwodGhpcy5pbnRlcnZhbCwgJ2NhbmNlbCcpKSB7XG4gICAgICAgICAgICB0aGlzLmludGVydmFsLmNhbmNlbCh0aGlzLnRpbWluZ01vbml0b3IpO1xuICAgICAgICB9XG4gICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgY2xlYXJJbnRlcnZhbCh0aGlzLnRpbWluZ01vbml0b3IpO1xuICAgICAgICB9XG4gICAgICAgIHRoaXMudGltaW5nTW9uaXRvciA9IG51bGw7XG4gICAgfVxuICAgIGhhc0Vycm9yKCkge1xuICAgICAgICByZXR1cm4gISF0aGlzLmVycm9yO1xuICAgIH1cbiAgICBzZXRFcnJvcihlcnJvcikge1xuICAgICAgICB0aGlzLmVycm9yID0gZXJyb3I7XG4gICAgfVxuICAgIGNsZWFyRXJyb3IoKSB7XG4gICAgICAgIHRoaXMuZXJyb3IgPSBudWxsO1xuICAgIH1cbiAgICByZXNldCgpIHtcbiAgICAgICAgdGhpcy5kb3dubG9hZGVkID0gMDtcbiAgICAgICAgdGhpcy5jb21wbGV0ZWRVcGxvYWQgPSAwO1xuICAgICAgICB0aGlzLnRvdGFsVXBsb2FkID0gMDtcbiAgICAgICAgdGhpcy5pblByb2dyZXNzID0gZmFsc2U7XG4gICAgICAgIHRoaXMuc3luY2luZyA9IGZhbHNlO1xuICAgICAgICB0aGlzLmVycm9yID0gbnVsbDtcbiAgICAgICAgdGhpcy5zdG9wVGltaW5nTW9uaXRvcigpO1xuICAgICAgICB0aGlzLnJlY2VpdmVyKFN5bmNFdmVudC5TdGF0dXNDaGFuZ2VkKTtcbiAgICB9XG59XG4iXSwibWFwcGluZ3MiOiI7Ozs7Ozs7OztBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBYkE7QUFBQTtBQUFBO0FBY0E7QUFDQTtBQWZBO0FBQUE7QUFBQTtBQWlCQTtBQUNBO0FBbEJBO0FBQUE7QUFBQTtBQW9CQTtBQUNBO0FBQ0E7QUFDQTtBQXZCQTtBQUFBO0FBQUE7QUF5QkE7QUFDQTtBQUNBO0FBM0JBO0FBQUE7QUFBQTtBQTZCQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUVBO0FBQ0E7QUFDQTtBQXRDQTtBQUFBO0FBQUE7QUF3Q0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFOQTtBQVFBO0FBaERBO0FBQUE7QUFBQTtBQWtEQTtBQUNBO0FBQ0E7QUFwREE7QUFBQTtBQUFBO0FBc0RBO0FBQ0E7QUFDQTtBQXhEQTtBQUFBO0FBQ0E7QUE4REE7OztBQS9EQTtBQWtFQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBNUVBO0FBQUE7QUFBQTtBQThFQTtBQUNBO0FBQ0E7QUFFQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBckZBO0FBQUE7QUFBQTtBQXVGQTtBQUNBO0FBeEZBO0FBQUE7QUFBQTtBQTBGQTtBQUNBO0FBM0ZBO0FBQUE7QUFBQTtBQTZGQTtBQUNBO0FBOUZBO0FBQUE7QUFBQTtBQWdHQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUF4R0E7QUFBQTtBQUFBO0FBMERBO0FBQ0E7QUEzREE7QUFBQTtBQUFBO0FBNkRBO0FBQ0E7QUE5REE7QUFDQTtBQURBO0FBQUEiLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./lib/services/sync/sync_op_status.ts\n')},"./lib/services/sync/sync_service.ts":
|
||
/*!*******************************************!*\
|
||
!*** ./lib/services/sync/sync_service.ts ***!
|
||
\*******************************************/
|
||
/*! exports provided: SyncQueueStrategy, SyncModes, SyncSources, SNSyncService */function(module,__webpack_exports__,__webpack_require__){"use strict";eval('__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "SyncQueueStrategy", function() { return SyncQueueStrategy; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "SyncModes", function() { return SyncModes; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "SyncSources", function() { return SyncSources; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "SNSyncService", function() { return SNSyncService; });\n/* harmony import */ var _babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @babel/runtime/regenerator */ "./node_modules/@babel/runtime/regenerator/index.js");\n/* harmony import */ var _babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var _Services_sync_events__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! @Services/sync/events */ "./lib/services/sync/events.ts");\n/* harmony import */ var _Lib_storage_keys__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! @Lib/storage_keys */ "./lib/storage_keys.ts");\n/* harmony import */ var _Models_core_item__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! @Models/core/item */ "./lib/models/core/item.ts");\n/* harmony import */ var _Lib_utils__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! @Lib/utils */ "./lib/utils.ts");\n/* harmony import */ var _Services_pure_service__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! @Services/pure_service */ "./lib/services/pure_service.ts");\n/* harmony import */ var _Services_sync_utils__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! @Services/sync/utils */ "./lib/services/sync/utils.ts");\n/* harmony import */ var _Services_sync_sync_op_status__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! @Services/sync/sync_op_status */ "./lib/services/sync/sync_op_status.ts");\n/* harmony import */ var _Services_sync_sync_state__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! @Services/sync/sync_state */ "./lib/services/sync/sync_state.ts");\n/* harmony import */ var _Services_sync_account_downloader__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(/*! @Services/sync/account/downloader */ "./lib/services/sync/account/downloader.ts");\n/* harmony import */ var _Services_sync_account_response_resolver__WEBPACK_IMPORTED_MODULE_10__ = __webpack_require__(/*! @Services/sync/account/response_resolver */ "./lib/services/sync/account/response_resolver.ts");\n/* harmony import */ var _Services_sync_account_operation__WEBPACK_IMPORTED_MODULE_11__ = __webpack_require__(/*! @Services/sync/account/operation */ "./lib/services/sync/account/operation.ts");\n/* harmony import */ var _Services_sync_offline_operation__WEBPACK_IMPORTED_MODULE_12__ = __webpack_require__(/*! @Services/sync/offline/operation */ "./lib/services/sync/offline/operation.ts");\n/* harmony import */ var _Payloads_deltas__WEBPACK_IMPORTED_MODULE_13__ = __webpack_require__(/*! @Payloads/deltas */ "./lib/protocol/payloads/deltas/index.ts");\n/* harmony import */ var _Payloads_fields__WEBPACK_IMPORTED_MODULE_14__ = __webpack_require__(/*! @Payloads/fields */ "./lib/protocol/payloads/fields.ts");\n/* harmony import */ var _Payloads_sources__WEBPACK_IMPORTED_MODULE_15__ = __webpack_require__(/*! @Payloads/sources */ "./lib/protocol/payloads/sources.ts");\n/* harmony import */ var _Protocol_collection_payload_collection__WEBPACK_IMPORTED_MODULE_16__ = __webpack_require__(/*! @Protocol/collection/payload_collection */ "./lib/protocol/collection/payload_collection.ts");\n/* harmony import */ var _Payloads_functions__WEBPACK_IMPORTED_MODULE_17__ = __webpack_require__(/*! @Payloads/functions */ "./lib/protocol/payloads/functions.ts");\n/* harmony import */ var _Payloads_generator__WEBPACK_IMPORTED_MODULE_18__ = __webpack_require__(/*! @Payloads/generator */ "./lib/protocol/payloads/generator.ts");\n/* harmony import */ var _Protocol_intents__WEBPACK_IMPORTED_MODULE_19__ = __webpack_require__(/*! @Protocol/intents */ "./lib/protocol/intents.ts");\n/* harmony import */ var _Models_content_types__WEBPACK_IMPORTED_MODULE_20__ = __webpack_require__(/*! @Models/content_types */ "./lib/models/content_types.ts");\n/* harmony import */ var _Models_generator__WEBPACK_IMPORTED_MODULE_21__ = __webpack_require__(/*! @Models/generator */ "./lib/models/generator.ts");\n/* harmony import */ var _Models_functions__WEBPACK_IMPORTED_MODULE_22__ = __webpack_require__(/*! @Models/functions */ "./lib/models/functions.ts");\n/* harmony import */ var _Services_sync_signals__WEBPACK_IMPORTED_MODULE_23__ = __webpack_require__(/*! @Services/sync/signals */ "./lib/services/sync/signals.ts");\n\n\nfunction _typeof(obj) { "@babel/helpers - typeof"; if (typeof Symbol === "function" && typeof Symbol.iterator === "symbol") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }; } return _typeof(obj); }\n\nfunction ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly) symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); keys.push.apply(keys, symbols); } return keys; }\n\nfunction _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; if (i % 2) { ownKeys(Object(source), true).forEach(function (key) { _defineProperty(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } } return target; }\n\nfunction _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\n\nfunction asyncGeneratorStep(gen, resolve, reject, _next, _throw, key, arg) { try { var info = gen[key](arg); var value = info.value; } catch (error) { reject(error); return; } if (info.done) { resolve(value); } else { Promise.resolve(value).then(_next, _throw); } }\n\nfunction _asyncToGenerator(fn) { return function () { var self = this, args = arguments; return new Promise(function (resolve, reject) { var gen = fn.apply(self, args); function _next(value) { asyncGeneratorStep(gen, resolve, reject, _next, _throw, "next", value); } function _throw(err) { asyncGeneratorStep(gen, resolve, reject, _next, _throw, "throw", err); } _next(undefined); }); }; }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } }\n\nfunction _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); } }\n\nfunction _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; }\n\nfunction _possibleConstructorReturn(self, call) { if (call && (_typeof(call) === "object" || typeof call === "function")) { return call; } return _assertThisInitialized(self); }\n\nfunction _assertThisInitialized(self) { if (self === void 0) { throw new ReferenceError("this hasn\'t been initialised - super() hasn\'t been called"); } return self; }\n\nfunction _get(target, property, receiver) { if (typeof Reflect !== "undefined" && Reflect.get) { _get = Reflect.get; } else { _get = function _get(target, property, receiver) { var base = _superPropBase(target, property); if (!base) return; var desc = Object.getOwnPropertyDescriptor(base, property); if (desc.get) { return desc.get.call(receiver); } return desc.value; }; } return _get(target, property, receiver || target); }\n\nfunction _superPropBase(object, property) { while (!Object.prototype.hasOwnProperty.call(object, property)) { object = _getPrototypeOf(object); if (object === null) break; } return object; }\n\nfunction _getPrototypeOf(o) { _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function _getPrototypeOf(o) { return o.__proto__ || Object.getPrototypeOf(o); }; return _getPrototypeOf(o); }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== "function" && superClass !== null) { throw new TypeError("Super expression must either be null or a function"); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, writable: true, configurable: true } }); if (superClass) _setPrototypeOf(subClass, superClass); }\n\nfunction _setPrototypeOf(o, p) { _setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) { o.__proto__ = p; return o; }; return _setPrototypeOf(o, p); }\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\nvar DEFAULT_DATABASE_LOAD_BATCH_SIZE = 100;\nvar DEFAULT_MAX_DISCORDANCE = 5;\nvar DEFAULT_MAJOR_CHANGE_THRESHOLD = 15;\nvar INVALID_SESSION_RESPONSE_STATUS = 401;\nvar SyncQueueStrategy;\n\n(function (SyncQueueStrategy) {\n /**\n * Promise will be resolved on the next sync request after the current one completes.\n * If there is no scheduled sync request, one will be scheduled.\n */\n SyncQueueStrategy[SyncQueueStrategy["ResolveOnNext"] = 1] = "ResolveOnNext";\n /**\n * A new sync request is guarenteed to be generated for your request, no matter how long it takes.\n * Promise will be resolved whenever this sync request is processed in the serial queue.\n */\n\n SyncQueueStrategy[SyncQueueStrategy["ForceSpawnNew"] = 2] = "ForceSpawnNew";\n})(SyncQueueStrategy || (SyncQueueStrategy = {}));\n\nvar SyncModes;\n\n(function (SyncModes) {\n /**\n * Performs a standard sync, uploading any dirty items and retrieving items.\n */\n SyncModes[SyncModes["Default"] = 1] = "Default";\n /**\n * The first sync for an account, where we first want to download all remote items first\n * before uploading any dirty items. This allows a consumer, for example, to download\n * all data to see if user has an items key, and if not, only then create a new one.\n */\n\n SyncModes[SyncModes["DownloadFirst"] = 2] = "DownloadFirst";\n})(SyncModes || (SyncModes = {}));\n\n;\nvar SyncSources;\n\n(function (SyncSources) {\n SyncSources[SyncSources["External"] = 1] = "External";\n SyncSources[SyncSources["SpawnQueue"] = 2] = "SpawnQueue";\n SyncSources[SyncSources["ResolveQueue"] = 3] = "ResolveQueue";\n SyncSources[SyncSources["MoreDirtyItems"] = 4] = "MoreDirtyItems";\n SyncSources[SyncSources["AfterDownloadFirst"] = 5] = "AfterDownloadFirst";\n SyncSources[SyncSources["IntegrityCheck"] = 6] = "IntegrityCheck";\n SyncSources[SyncSources["ResolveOutOfSync"] = 7] = "ResolveOutOfSync";\n})(SyncSources || (SyncSources = {}));\n\n;\n/**\n * The sync service orchestrates with the model manager, api service, and storage service\n * to ensure consistent state between the three. When a change is made to an item, consumers\n * call the sync service\'s sync function to first persist pending changes to local storage.\n * Then, the items are uploaded to the server. The sync service handles server responses,\n * including mapping any retrieved items to application state via model manager mapping.\n * After each sync request, any changes made or retrieved are also persisted locally.\n * The sync service largely does not perform any task unless it is called upon.\n */\n\nvar SNSyncService = /*#__PURE__*/function (_PureService) {\n _inherits(SNSyncService, _PureService);\n\n function SNSyncService(itemManager, sessionManager, protocolService, storageService, modelManager, apiService, interval) {\n var _this;\n\n _classCallCheck(this, SNSyncService);\n\n _this = _possibleConstructorReturn(this, _getPrototypeOf(SNSyncService).call(this));\n _this.resolveQueue = [];\n _this.spawnQueue = [];\n /* A DownloadFirst sync must always be the first sync completed */\n\n _this.completedOnlineDownloadFirstSync = false;\n _this.majorChangeThreshold = DEFAULT_MAJOR_CHANGE_THRESHOLD;\n _this.maxDiscordance = DEFAULT_MAX_DISCORDANCE;\n _this.locked = false;\n _this.databaseLoaded = false;\n /** Content types appearing first are always mapped first */\n\n _this.localLoadPriorty = [_Models_content_types__WEBPACK_IMPORTED_MODULE_20__["ContentType"].ItemsKey, _Models_content_types__WEBPACK_IMPORTED_MODULE_20__["ContentType"].UserPrefs, _Models_content_types__WEBPACK_IMPORTED_MODULE_20__["ContentType"].Privileges, _Models_content_types__WEBPACK_IMPORTED_MODULE_20__["ContentType"].Component, _Models_content_types__WEBPACK_IMPORTED_MODULE_20__["ContentType"].Theme];\n /**\n * Non-encrypted types are items whose values a server must be able to read.\n * These include server extensions (such as a note history endpoint), and\n * multi-factor authentication items, which include a secret value that the server\n * needs to be able to read in order to enforce.\n */\n\n _this.nonEncryptedTypes = [_Models_content_types__WEBPACK_IMPORTED_MODULE_20__["ContentType"].Mfa, _Models_content_types__WEBPACK_IMPORTED_MODULE_20__["ContentType"].ServerExtension];\n _this.itemManager = itemManager;\n _this.sessionManager = sessionManager;\n _this.protocolService = protocolService;\n _this.modelManager = modelManager;\n _this.storageService = storageService;\n _this.apiService = apiService;\n _this.interval = interval;\n\n _this.initializeStatus();\n\n _this.initializeState();\n\n return _this;\n }\n /**\n * If the database has been newly created (because its new or was previously destroyed)\n * we want to reset any sync tokens we have.\n */\n\n\n _createClass(SNSyncService, [{\n key: "onNewDatabaseCreated",\n value: function () {\n var _onNewDatabaseCreated = _asyncToGenerator( /*#__PURE__*/_babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0___default.a.mark(function _callee() {\n return _babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0___default.a.wrap(function _callee$(_context) {\n while (1) {\n switch (_context.prev = _context.next) {\n case 0:\n _context.next = 2;\n return this.getLastSyncToken();\n\n case 2:\n if (!_context.sent) {\n _context.next = 5;\n break;\n }\n\n _context.next = 5;\n return this.clearSyncPositionTokens();\n\n case 5:\n case "end":\n return _context.stop();\n }\n }\n }, _callee, this);\n }));\n\n function onNewDatabaseCreated() {\n return _onNewDatabaseCreated.apply(this, arguments);\n }\n\n return onNewDatabaseCreated;\n }()\n }, {\n key: "deinit",\n value: function deinit() {\n this.sessionManager = undefined;\n this.itemManager = undefined;\n this.protocolService = undefined;\n this.modelManager = undefined;\n this.storageService = undefined;\n this.apiService = undefined;\n this.interval = undefined;\n this.state.reset();\n this.opStatus.reset();\n this.state = undefined;\n this.opStatus = undefined;\n this.resolveQueue.length = 0;\n this.spawnQueue.length = 0;\n\n _get(_getPrototypeOf(SNSyncService.prototype), "deinit", this).call(this);\n }\n }, {\n key: "initializeStatus",\n value: function initializeStatus() {\n var _this2 = this;\n\n this.opStatus = new _Services_sync_sync_op_status__WEBPACK_IMPORTED_MODULE_7__["SyncOpStatus"](this.interval, function (event) {\n _this2.notifyEvent(event);\n });\n }\n }, {\n key: "initializeState",\n value: function initializeState() {\n var _this3 = this;\n\n this.state = new _Services_sync_sync_state__WEBPACK_IMPORTED_MODULE_8__["SyncState"](function (event) {\n if (event === _Services_sync_events__WEBPACK_IMPORTED_MODULE_1__["SyncEvent"].EnterOutOfSync) {\n _this3.notifyEvent(_Services_sync_events__WEBPACK_IMPORTED_MODULE_1__["SyncEvent"].EnterOutOfSync);\n } else if (event === _Services_sync_events__WEBPACK_IMPORTED_MODULE_1__["SyncEvent"].ExitOutOfSync) {\n _this3.notifyEvent(_Services_sync_events__WEBPACK_IMPORTED_MODULE_1__["SyncEvent"].ExitOutOfSync);\n }\n }, this.maxDiscordance);\n }\n }, {\n key: "lockSyncing",\n value: function lockSyncing() {\n this.locked = true;\n }\n }, {\n key: "unlockSyncing",\n value: function unlockSyncing() {\n this.locked = false;\n }\n }, {\n key: "isOutOfSync",\n value: function isOutOfSync() {\n return this.state.isOutOfSync();\n }\n }, {\n key: "getLastSyncDate",\n value: function getLastSyncDate() {\n return this.state.lastSyncDate;\n }\n }, {\n key: "getStatus",\n value: function getStatus() {\n return this.opStatus;\n }\n /**\n * Called by application when sign in or registration occurs.\n */\n\n }, {\n key: "resetSyncState",\n value: function resetSyncState() {\n this.state.reset();\n }\n }, {\n key: "isDatabaseLoaded",\n value: function isDatabaseLoaded() {\n return this.databaseLoaded;\n }\n /**\n * Used in tandem with `loadDatabasePayloads`\n */\n\n }, {\n key: "getDatabasePayloads",\n value: function () {\n var _getDatabasePayloads = _asyncToGenerator( /*#__PURE__*/_babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0___default.a.mark(function _callee2() {\n var _this4 = this;\n\n return _babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0___default.a.wrap(function _callee2$(_context2) {\n while (1) {\n switch (_context2.prev = _context2.next) {\n case 0:\n return _context2.abrupt("return", this.storageService.getAllRawPayloads().catch(function (error) {\n _this4.notifyEvent(_Services_sync_events__WEBPACK_IMPORTED_MODULE_1__["SyncEvent"].DatabaseReadError, error);\n\n throw error;\n }));\n\n case 1:\n case "end":\n return _context2.stop();\n }\n }\n }, _callee2, this);\n }));\n\n function getDatabasePayloads() {\n return _getDatabasePayloads.apply(this, arguments);\n }\n\n return getDatabasePayloads;\n }()\n /**\n * @param rawPayloads - use `getDatabasePayloads` to get these payloads.\n * They are fed as a parameter so that callers don\'t have to await the loading, but can\n * await getting the raw payloads from storage\n */\n\n }, {\n key: "loadDatabasePayloads",\n value: function () {\n var _loadDatabasePayloads = _asyncToGenerator( /*#__PURE__*/_babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0___default.a.mark(function _callee3(rawPayloads) {\n var unsortedPayloads, payloads, itemsKeysPayloads, decryptedItemsKeys, payloadCount, batchSize, numBatches, batchIndex, currentPosition, batch, decrypted;\n return _babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0___default.a.wrap(function _callee3$(_context3) {\n while (1) {\n switch (_context3.prev = _context3.next) {\n case 0:\n if (!this.databaseLoaded) {\n _context3.next = 2;\n break;\n }\n\n throw \'Attempting to initialize already initialized local database.\';\n\n case 2:\n if (!(rawPayloads.length === 0)) {\n _context3.next = 6;\n break;\n }\n\n this.databaseLoaded = true;\n this.opStatus.setDatabaseLoadStatus(0, 0, true);\n return _context3.abrupt("return");\n\n case 6:\n unsortedPayloads = rawPayloads.map(function (rawPayload) {\n return Object(_Payloads_generator__WEBPACK_IMPORTED_MODULE_18__["CreateMaxPayloadFromAnyObject"])(rawPayload);\n });\n payloads = Object(_Services_sync_utils__WEBPACK_IMPORTED_MODULE_6__["SortPayloadsByRecentAndContentPriority"])(unsortedPayloads, this.localLoadPriorty);\n /** Decrypt and map items keys first */\n\n itemsKeysPayloads = payloads.filter(function (payload) {\n return payload.content_type === _Models_content_types__WEBPACK_IMPORTED_MODULE_20__["ContentType"].ItemsKey;\n });\n Object(_Lib_utils__WEBPACK_IMPORTED_MODULE_4__["subtractFromArray"])(payloads, itemsKeysPayloads);\n _context3.next = 12;\n return this.protocolService.payloadsByDecryptingPayloads(itemsKeysPayloads);\n\n case 12:\n decryptedItemsKeys = _context3.sent;\n _context3.next = 15;\n return this.modelManager.emitPayloads(decryptedItemsKeys, _Payloads_sources__WEBPACK_IMPORTED_MODULE_15__["PayloadSource"].LocalRetrieved);\n\n case 15:\n /** Map in batches to give interface a chance to update */\n payloadCount = payloads.length;\n batchSize = DEFAULT_DATABASE_LOAD_BATCH_SIZE;\n numBatches = Math.ceil(payloadCount / batchSize);\n batchIndex = 0;\n\n case 19:\n if (!(batchIndex < numBatches)) {\n _context3.next = 32;\n break;\n }\n\n currentPosition = batchIndex * batchSize;\n batch = payloads.slice(currentPosition, currentPosition + batchSize);\n _context3.next = 24;\n return this.protocolService.payloadsByDecryptingPayloads(batch);\n\n case 24:\n decrypted = _context3.sent;\n _context3.next = 27;\n return this.modelManager.emitPayloads(decrypted, _Payloads_sources__WEBPACK_IMPORTED_MODULE_15__["PayloadSource"].LocalRetrieved);\n\n case 27:\n this.notifyEvent(_Services_sync_events__WEBPACK_IMPORTED_MODULE_1__["SyncEvent"].LocalDataIncrementalLoad);\n this.opStatus.setDatabaseLoadStatus(currentPosition, payloadCount, false);\n\n case 29:\n batchIndex++;\n _context3.next = 19;\n break;\n\n case 32:\n this.databaseLoaded = true;\n this.opStatus.setDatabaseLoadStatus(0, 0, true);\n\n case 34:\n case "end":\n return _context3.stop();\n }\n }\n }, _callee3, this);\n }));\n\n function loadDatabasePayloads(_x) {\n return _loadDatabasePayloads.apply(this, arguments);\n }\n\n return loadDatabasePayloads;\n }()\n }, {\n key: "setLastSyncToken",\n value: function () {\n var _setLastSyncToken = _asyncToGenerator( /*#__PURE__*/_babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0___default.a.mark(function _callee4(token) {\n return _babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0___default.a.wrap(function _callee4$(_context4) {\n while (1) {\n switch (_context4.prev = _context4.next) {\n case 0:\n this.syncToken = token;\n return _context4.abrupt("return", this.storageService.setValue(_Lib_storage_keys__WEBPACK_IMPORTED_MODULE_2__["StorageKey"].LastSyncToken, token));\n\n case 2:\n case "end":\n return _context4.stop();\n }\n }\n }, _callee4, this);\n }));\n\n function setLastSyncToken(_x2) {\n return _setLastSyncToken.apply(this, arguments);\n }\n\n return setLastSyncToken;\n }()\n }, {\n key: "setPaginationToken",\n value: function () {\n var _setPaginationToken = _asyncToGenerator( /*#__PURE__*/_babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0___default.a.mark(function _callee5(token) {\n return _babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0___default.a.wrap(function _callee5$(_context5) {\n while (1) {\n switch (_context5.prev = _context5.next) {\n case 0:\n this.cursorToken = token;\n\n if (!token) {\n _context5.next = 5;\n break;\n }\n\n return _context5.abrupt("return", this.storageService.setValue(_Lib_storage_keys__WEBPACK_IMPORTED_MODULE_2__["StorageKey"].PaginationToken, token));\n\n case 5:\n return _context5.abrupt("return", this.storageService.removeValue(_Lib_storage_keys__WEBPACK_IMPORTED_MODULE_2__["StorageKey"].PaginationToken));\n\n case 6:\n case "end":\n return _context5.stop();\n }\n }\n }, _callee5, this);\n }));\n\n function setPaginationToken(_x3) {\n return _setPaginationToken.apply(this, arguments);\n }\n\n return setPaginationToken;\n }()\n }, {\n key: "getLastSyncToken",\n value: function () {\n var _getLastSyncToken = _asyncToGenerator( /*#__PURE__*/_babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0___default.a.mark(function _callee6() {\n return _babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0___default.a.wrap(function _callee6$(_context6) {\n while (1) {\n switch (_context6.prev = _context6.next) {\n case 0:\n if (this.syncToken) {\n _context6.next = 4;\n break;\n }\n\n _context6.next = 3;\n return this.storageService.getValue(_Lib_storage_keys__WEBPACK_IMPORTED_MODULE_2__["StorageKey"].LastSyncToken);\n\n case 3:\n this.syncToken = _context6.sent;\n\n case 4:\n return _context6.abrupt("return", this.syncToken);\n\n case 5:\n case "end":\n return _context6.stop();\n }\n }\n }, _callee6, this);\n }));\n\n function getLastSyncToken() {\n return _getLastSyncToken.apply(this, arguments);\n }\n\n return getLastSyncToken;\n }()\n }, {\n key: "getPaginationToken",\n value: function () {\n var _getPaginationToken = _asyncToGenerator( /*#__PURE__*/_babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0___default.a.mark(function _callee7() {\n return _babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0___default.a.wrap(function _callee7$(_context7) {\n while (1) {\n switch (_context7.prev = _context7.next) {\n case 0:\n if (this.cursorToken) {\n _context7.next = 4;\n break;\n }\n\n _context7.next = 3;\n return this.storageService.getValue(_Lib_storage_keys__WEBPACK_IMPORTED_MODULE_2__["StorageKey"].PaginationToken);\n\n case 3:\n this.cursorToken = _context7.sent;\n\n case 4:\n return _context7.abrupt("return", this.cursorToken);\n\n case 5:\n case "end":\n return _context7.stop();\n }\n }\n }, _callee7, this);\n }));\n\n function getPaginationToken() {\n return _getPaginationToken.apply(this, arguments);\n }\n\n return getPaginationToken;\n }()\n }, {\n key: "clearSyncPositionTokens",\n value: function () {\n var _clearSyncPositionTokens = _asyncToGenerator( /*#__PURE__*/_babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0___default.a.mark(function _callee8() {\n return _babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0___default.a.wrap(function _callee8$(_context8) {\n while (1) {\n switch (_context8.prev = _context8.next) {\n case 0:\n this.syncToken = undefined;\n this.cursorToken = undefined;\n _context8.next = 4;\n return this.storageService.removeValue(_Lib_storage_keys__WEBPACK_IMPORTED_MODULE_2__["StorageKey"].LastSyncToken);\n\n case 4:\n _context8.next = 6;\n return this.storageService.removeValue(_Lib_storage_keys__WEBPACK_IMPORTED_MODULE_2__["StorageKey"].PaginationToken);\n\n case 6:\n case "end":\n return _context8.stop();\n }\n }\n }, _callee8, this);\n }));\n\n function clearSyncPositionTokens() {\n return _clearSyncPositionTokens.apply(this, arguments);\n }\n\n return clearSyncPositionTokens;\n }()\n }, {\n key: "itemsNeedingSync",\n value: function () {\n var _itemsNeedingSync = _asyncToGenerator( /*#__PURE__*/_babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0___default.a.mark(function _callee9() {\n var items;\n return _babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0___default.a.wrap(function _callee9$(_context9) {\n while (1) {\n switch (_context9.prev = _context9.next) {\n case 0:\n items = this.itemManager.getDirtyItems();\n return _context9.abrupt("return", items);\n\n case 2:\n case "end":\n return _context9.stop();\n }\n }\n }, _callee9, this);\n }));\n\n function itemsNeedingSync() {\n return _itemsNeedingSync.apply(this, arguments);\n }\n\n return itemsNeedingSync;\n }()\n }, {\n key: "alternateUuidForItem",\n value: function () {\n var _alternateUuidForItem = _asyncToGenerator( /*#__PURE__*/_babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0___default.a.mark(function _callee10(uuid) {\n var item, payload, results;\n return _babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0___default.a.wrap(function _callee10$(_context10) {\n while (1) {\n switch (_context10.prev = _context10.next) {\n case 0:\n item = this.itemManager.findItem(uuid);\n payload = Object(_Payloads_generator__WEBPACK_IMPORTED_MODULE_18__["CreateMaxPayloadFromAnyObject"])(item);\n _context10.next = 4;\n return Object(_Payloads_functions__WEBPACK_IMPORTED_MODULE_17__["PayloadsByAlternatingUuid"])(payload, this.modelManager.getMasterCollection());\n\n case 4:\n results = _context10.sent;\n _context10.next = 7;\n return this.modelManager.emitPayloads(results, _Payloads_sources__WEBPACK_IMPORTED_MODULE_15__["PayloadSource"].LocalChanged);\n\n case 7:\n _context10.next = 9;\n return this.persistPayloads(results);\n\n case 9:\n return _context10.abrupt("return", this.itemManager.findItem(results[0].uuid));\n\n case 10:\n case "end":\n return _context10.stop();\n }\n }\n }, _callee10, this);\n }));\n\n function alternateUuidForItem(_x4) {\n return _alternateUuidForItem.apply(this, arguments);\n }\n\n return alternateUuidForItem;\n }()\n /**\n * Mark all items as dirty and needing sync, then persist to storage.\n * @param alternateUuids\n * In the case of signing in and merging local data, we alternate UUIDs\n * to avoid overwriting data a user may retrieve that has the same UUID.\n * Alternating here forces us to to create duplicates of the items instead.\n */\n\n }, {\n key: "markAllItemsAsNeedingSync",\n value: function () {\n var _markAllItemsAsNeedingSync = _asyncToGenerator( /*#__PURE__*/_babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0___default.a.mark(function _callee11(alternateUuids) {\n var _items, _iteratorNormalCompletion, _didIteratorError, _iteratorError, _iterator, _step, item, items, payloads;\n\n return _babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0___default.a.wrap(function _callee11$(_context11) {\n while (1) {\n switch (_context11.prev = _context11.next) {\n case 0:\n this.log(\'Marking all items as needing sync\');\n\n if (!alternateUuids) {\n _context11.next = 29;\n break;\n }\n\n /** Make a copy of the array, as alternating uuid will affect array */\n _items = this.itemManager.items.filter(function (item) {\n return !item.errorDecrypting;\n }).slice();\n _iteratorNormalCompletion = true;\n _didIteratorError = false;\n _iteratorError = undefined;\n _context11.prev = 6;\n _iterator = _items[Symbol.iterator]();\n\n case 8:\n if (_iteratorNormalCompletion = (_step = _iterator.next()).done) {\n _context11.next = 15;\n break;\n }\n\n item = _step.value;\n _context11.next = 12;\n return this.alternateUuidForItem(item.uuid);\n\n case 12:\n _iteratorNormalCompletion = true;\n _context11.next = 8;\n break;\n\n case 15:\n _context11.next = 21;\n break;\n\n case 17:\n _context11.prev = 17;\n _context11.t0 = _context11["catch"](6);\n _didIteratorError = true;\n _iteratorError = _context11.t0;\n\n case 21:\n _context11.prev = 21;\n _context11.prev = 22;\n\n if (!_iteratorNormalCompletion && _iterator.return != null) {\n _iterator.return();\n }\n\n case 24:\n _context11.prev = 24;\n\n if (!_didIteratorError) {\n _context11.next = 27;\n break;\n }\n\n throw _iteratorError;\n\n case 27:\n return _context11.finish(24);\n\n case 28:\n return _context11.finish(21);\n\n case 29:\n items = this.itemManager.items;\n payloads = items.map(function (item) {\n return Object(_Payloads_generator__WEBPACK_IMPORTED_MODULE_18__["CreateMaxPayloadFromAnyObject"])(item, {\n dirty: true,\n dirtiedDate: new Date()\n });\n });\n _context11.next = 33;\n return this.modelManager.emitPayloads(payloads, _Payloads_sources__WEBPACK_IMPORTED_MODULE_15__["PayloadSource"].LocalChanged);\n\n case 33:\n _context11.next = 35;\n return this.persistPayloads(payloads);\n\n case 35:\n case "end":\n return _context11.stop();\n }\n }\n }, _callee11, this, [[6, 17, 21, 29], [22,, 24, 28]]);\n }));\n\n function markAllItemsAsNeedingSync(_x5) {\n return _markAllItemsAsNeedingSync.apply(this, arguments);\n }\n\n return markAllItemsAsNeedingSync;\n }()\n /**\n * Return the payloads that need local persistence, before beginning a sync.\n * This way, if the application is closed before a sync request completes,\n * pending data will be saved to disk, and synced the next time the app opens.\n */\n\n }, {\n key: "popPayloadsNeedingPreSyncSave",\n value: function () {\n var _popPayloadsNeedingPreSyncSave = _asyncToGenerator( /*#__PURE__*/_babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0___default.a.mark(function _callee12(from) {\n var lastPreSyncSave, payloads;\n return _babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0___default.a.wrap(function _callee12$(_context12) {\n while (1) {\n switch (_context12.prev = _context12.next) {\n case 0:\n lastPreSyncSave = this.state.lastPreSyncSave;\n\n if (lastPreSyncSave) {\n _context12.next = 3;\n break;\n }\n\n return _context12.abrupt("return", from);\n\n case 3:\n /** dirtiedDate can be null if the payload was created as dirty */\n payloads = from.filter(function (candidate) {\n return !candidate.dirtiedDate || candidate.dirtiedDate > lastPreSyncSave;\n });\n this.state.lastPreSyncSave = new Date();\n return _context12.abrupt("return", payloads);\n\n case 6:\n case "end":\n return _context12.stop();\n }\n }\n }, _callee12, this);\n }));\n\n function popPayloadsNeedingPreSyncSave(_x6) {\n return _popPayloadsNeedingPreSyncSave.apply(this, arguments);\n }\n\n return popPayloadsNeedingPreSyncSave;\n }()\n }, {\n key: "queueStrategyResolveOnNext",\n value: function queueStrategyResolveOnNext() {\n var _this5 = this;\n\n return new Promise(function (resolve, reject) {\n _this5.resolveQueue.push({\n resolve: resolve,\n reject: reject\n });\n });\n }\n }, {\n key: "queueStrategyForceSpawnNew",\n value: function queueStrategyForceSpawnNew(options) {\n var _this6 = this;\n\n return new Promise(function (resolve, reject) {\n _this6.spawnQueue.push({\n resolve: resolve,\n reject: reject,\n options: options\n });\n });\n }\n /**\n * For timing strategy SyncQueueStrategy.ForceSpawnNew, we will execute a whole sync request\n * and pop it from the queue.\n */\n\n }, {\n key: "popSpawnQueue",\n value: function popSpawnQueue() {\n if (this.spawnQueue.length === 0) {\n return null;\n }\n\n var promise = this.spawnQueue[0];\n Object(_Lib_utils__WEBPACK_IMPORTED_MODULE_4__["removeFromIndex"])(this.spawnQueue, 0);\n this.log(\'Syncing again from spawn queue\');\n return this.sync(_objectSpread({\n queueStrategy: SyncQueueStrategy.ForceSpawnNew,\n source: SyncSources.SpawnQueue\n }, promise.options)).then(function () {\n promise.resolve();\n }).catch(function () {\n promise.reject();\n });\n }\n /**\n * Certain content types should not be encrypted when sending to server,\n * such as server extensions\n */\n\n }, {\n key: "payloadsByPreparingForServer",\n value: function () {\n var _payloadsByPreparingForServer = _asyncToGenerator( /*#__PURE__*/_babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0___default.a.mark(function _callee13(payloads) {\n var _this7 = this;\n\n return _babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0___default.a.wrap(function _callee13$(_context13) {\n while (1) {\n switch (_context13.prev = _context13.next) {\n case 0:\n return _context13.abrupt("return", this.protocolService.payloadsByEncryptingPayloads(payloads, function (payload) {\n return _this7.nonEncryptedTypes.includes(payload.content_type) ? _Protocol_intents__WEBPACK_IMPORTED_MODULE_19__["EncryptionIntent"].SyncDecrypted : _Protocol_intents__WEBPACK_IMPORTED_MODULE_19__["EncryptionIntent"].Sync;\n }));\n\n case 1:\n case "end":\n return _context13.stop();\n }\n }\n }, _callee13, this);\n }));\n\n function payloadsByPreparingForServer(_x7) {\n return _payloadsByPreparingForServer.apply(this, arguments);\n }\n\n return payloadsByPreparingForServer;\n }()\n }, {\n key: "sync",\n value: function () {\n var _sync = _asyncToGenerator( /*#__PURE__*/_babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0___default.a.mark(function _callee14() {\n var _this8 = this;\n\n var options,\n syncLocked,\n captureLock,\n releaseLock,\n syncInProgress,\n databaseLoaded,\n canExecuteSync,\n items,\n neverSyncedDeleted,\n decryptedPayloads,\n payloadsNeedingSave,\n inTimeResolveQueue,\n useStrategy,\n beginDate,\n online,\n useMode,\n uploadPayloads,\n operation,\n promise,\n _promise,\n _iteratorNormalCompletion2,\n _didIteratorError2,\n _iteratorError2,\n _iterator2,\n _step2,\n callback,\n _args14 = arguments;\n\n return _babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0___default.a.wrap(function _callee14$(_context14) {\n while (1) {\n switch (_context14.prev = _context14.next) {\n case 0:\n options = _args14.length > 0 && _args14[0] !== undefined ? _args14[0] : {};\n\n if (!this.locked) {\n _context14.next = 4;\n break;\n }\n\n this.log(\'Sync Locked\');\n return _context14.abrupt("return");\n\n case 4:\n /**\n * Allows us to lock this function from triggering duplicate network requests.\n * There are two types of locking checks:\n * 1. syncLocked(): If a call to sync() call has begun preparing to be sent to the server.\n * but not yet completed all the code below before reaching that point.\n * (before reaching opStatus.setDidBegin).\n * 2. syncOpInProgress: If a sync() call is in flight to the server.\n */\n syncLocked = function syncLocked() {\n return _this8.syncLock;\n };\n\n captureLock = function captureLock() {\n _this8.syncLock = true;\n };\n\n releaseLock = function releaseLock() {\n _this8.syncLock = false;\n };\n\n syncInProgress = this.opStatus.syncInProgress;\n databaseLoaded = this.databaseLoaded;\n canExecuteSync = !syncLocked();\n\n if (canExecuteSync && databaseLoaded && !syncInProgress) {\n captureLock();\n }\n\n if (!options.source) {\n options.source = SyncSources.External;\n }\n\n _context14.next = 14;\n return this.itemsNeedingSync();\n\n case 14:\n items = _context14.sent;\n\n /** Items that have never been synced and marked as deleted should not be\n * uploaded to server, and instead deleted directly after sync completion. */\n neverSyncedDeleted = items.filter(function (item) {\n return item.neverSynced && item.deleted;\n });\n Object(_Lib_utils__WEBPACK_IMPORTED_MODULE_4__["subtractFromArray"])(items, neverSyncedDeleted);\n decryptedPayloads = items.map(function (item) {\n return item.payloadRepresentation();\n });\n _context14.next = 20;\n return this.popPayloadsNeedingPreSyncSave(decryptedPayloads);\n\n case 20:\n payloadsNeedingSave = _context14.sent;\n _context14.next = 23;\n return this.persistPayloads(payloadsNeedingSave);\n\n case 23:\n /** The in time resolve queue refers to any sync requests that were made while we still\n * have not sent out the current request. So, anything in the in time resolve queue\n * will have made it in time to piggyback on the current request. Anything that comes\n * _after_ in-time will schedule a new sync request. */\n inTimeResolveQueue = this.resolveQueue.slice();\n useStrategy = !Object(_Lib_utils__WEBPACK_IMPORTED_MODULE_4__["isNullOrUndefined"])(options.queueStrategy) ? options.queueStrategy : SyncQueueStrategy.ResolveOnNext;\n\n if (!(syncInProgress || !databaseLoaded || !canExecuteSync)) {\n _context14.next = 36;\n break;\n }\n\n this.log(!canExecuteSync ? \'Another function call has begun preparing for sync.\' : syncInProgress ? \'Attempting to sync while existing sync in progress.\' : \'Attempting to sync before local database has loaded.\');\n\n if (!(useStrategy === SyncQueueStrategy.ResolveOnNext)) {\n _context14.next = 31;\n break;\n }\n\n return _context14.abrupt("return", this.queueStrategyResolveOnNext());\n\n case 31:\n if (!(useStrategy === SyncQueueStrategy.ForceSpawnNew)) {\n _context14.next = 35;\n break;\n }\n\n return _context14.abrupt("return", this.queueStrategyForceSpawnNew({\n mode: options.mode,\n checkIntegrity: options.checkIntegrity,\n source: options.source\n }));\n\n case 35:\n throw "Unhandled timing strategy ".concat(useStrategy);\n\n case 36:\n /** Lock syncing immediately after checking in progress above */\n this.opStatus.setDidBegin();\n this.notifyEvent(_Services_sync_events__WEBPACK_IMPORTED_MODULE_1__["SyncEvent"].SyncWillBegin);\n /* Subtract from array as soon as we\'re sure they\'ll be called.\n resolves are triggered at the end of this function call */\n\n Object(_Lib_utils__WEBPACK_IMPORTED_MODULE_4__["subtractFromArray"])(this.resolveQueue, inTimeResolveQueue);\n /** lastSyncBegan must be set *after* any point we may have returned above.\n * Setting this value means the item was 100% sent to the server. */\n\n beginDate = new Date();\n\n if (!(items.length > 0)) {\n _context14.next = 43;\n break;\n }\n\n _context14.next = 43;\n return this.itemManager.changeItems(Object(_Models_functions__WEBPACK_IMPORTED_MODULE_22__["Uuids"])(items), function (mutator) {\n mutator.lastSyncBegan = beginDate;\n }, _Models_core_item__WEBPACK_IMPORTED_MODULE_3__["MutationType"].NonDirtying, _Payloads_sources__WEBPACK_IMPORTED_MODULE_15__["PayloadSource"].PreSyncSave);\n\n case 43:\n online = this.sessionManager.online();\n\n useMode = function (tryMode) {\n if (online && !_this8.completedOnlineDownloadFirstSync) {\n return SyncModes.DownloadFirst;\n } else if (!Object(_Lib_utils__WEBPACK_IMPORTED_MODULE_4__["isNullOrUndefined"])(tryMode)) {\n return tryMode;\n } else {\n return SyncModes.Default;\n }\n }(options.mode);\n\n uploadPayloads = [];\n\n if (!(useMode === SyncModes.Default)) {\n _context14.next = 58;\n break;\n }\n\n if (!(online && !this.completedOnlineDownloadFirstSync)) {\n _context14.next = 49;\n break;\n }\n\n throw Error(\'Attempting to default mode sync without having completed initial.\');\n\n case 49:\n if (!online) {\n _context14.next = 55;\n break;\n }\n\n _context14.next = 52;\n return this.payloadsByPreparingForServer(decryptedPayloads);\n\n case 52:\n uploadPayloads = _context14.sent;\n _context14.next = 56;\n break;\n\n case 55:\n uploadPayloads = decryptedPayloads;\n\n case 56:\n _context14.next = 59;\n break;\n\n case 58:\n if (useMode === SyncModes.DownloadFirst) {\n uploadPayloads = [];\n }\n\n case 59:\n if (!online) {\n _context14.next = 65;\n break;\n }\n\n _context14.next = 62;\n return this.syncOnlineOperation(uploadPayloads, options.checkIntegrity, options.source, useMode);\n\n case 62:\n operation = _context14.sent;\n _context14.next = 68;\n break;\n\n case 65:\n _context14.next = 67;\n return this.syncOfflineOperation(uploadPayloads, options.source, useMode);\n\n case 67:\n operation = _context14.sent;\n\n case 68:\n _context14.next = 70;\n return operation.run();\n\n case 70:\n this.opStatus.setDidEnd();\n releaseLock();\n\n if (!this.opStatus.hasError()) {\n _context14.next = 74;\n break;\n }\n\n return _context14.abrupt("return");\n\n case 74:\n this.opStatus.reset();\n this.state.lastSyncDate = new Date();\n\n if (operation instanceof _Services_sync_account_operation__WEBPACK_IMPORTED_MODULE_11__["AccountSyncOperation"] && operation.numberOfItemsInvolved >= this.majorChangeThreshold) {\n this.notifyEvent(_Services_sync_events__WEBPACK_IMPORTED_MODULE_1__["SyncEvent"].MajorDataChange);\n }\n\n if (!(neverSyncedDeleted.length > 0)) {\n _context14.next = 80;\n break;\n }\n\n _context14.next = 80;\n return this.handleNeverSyncedDeleted(neverSyncedDeleted);\n\n case 80:\n if (!(useMode !== SyncModes.DownloadFirst)) {\n _context14.next = 83;\n break;\n }\n\n _context14.next = 83;\n return this.notifyEvent(_Services_sync_events__WEBPACK_IMPORTED_MODULE_1__["SyncEvent"].FullSyncCompleted, {\n source: options.source\n });\n\n case 83:\n if (!(useMode === SyncModes.DownloadFirst)) {\n _context14.next = 91;\n break;\n }\n\n if (online) {\n this.completedOnlineDownloadFirstSync = true;\n }\n\n _context14.next = 87;\n return this.notifyEvent(_Services_sync_events__WEBPACK_IMPORTED_MODULE_1__["SyncEvent"].DownloadFirstSyncCompleted);\n\n case 87:\n _context14.next = 89;\n return this.sync({\n source: SyncSources.AfterDownloadFirst,\n checkIntegrity: true,\n awaitAll: options.awaitAll\n });\n\n case 89:\n _context14.next = 117;\n break;\n\n case 91:\n if (!(!this.popSpawnQueue() && this.resolveQueue.length > 0)) {\n _context14.next = 99;\n break;\n }\n\n this.log(\'Syncing again from resolve queue\');\n /** No need to await. */\n\n promise = this.sync({\n source: SyncSources.ResolveQueue,\n checkIntegrity: options.checkIntegrity\n });\n\n if (!options.awaitAll) {\n _context14.next = 97;\n break;\n }\n\n _context14.next = 97;\n return promise;\n\n case 97:\n _context14.next = 117;\n break;\n\n case 99:\n _context14.next = 101;\n return this.itemsNeedingSync();\n\n case 101:\n _context14.t0 = _context14.sent.length;\n\n if (!(_context14.t0 > 0)) {\n _context14.next = 107;\n break;\n }\n\n _context14.next = 105;\n return this.sync({\n source: SyncSources.MoreDirtyItems,\n checkIntegrity: options.checkIntegrity,\n awaitAll: options.awaitAll\n });\n\n case 105:\n _context14.next = 117;\n break;\n\n case 107:\n if (!(operation instanceof _Services_sync_account_operation__WEBPACK_IMPORTED_MODULE_11__["AccountSyncOperation"] && operation.checkIntegrity)) {\n _context14.next = 116;\n break;\n }\n\n if (!(this.state.needsSync && operation.done)) {\n _context14.next = 114;\n break;\n }\n\n this.log(\'Syncing again from integrity check\');\n _promise = this.sync({\n checkIntegrity: true,\n queueStrategy: SyncQueueStrategy.ForceSpawnNew,\n source: SyncSources.IntegrityCheck,\n awaitAll: options.awaitAll\n });\n\n if (!options.awaitAll) {\n _context14.next = 114;\n break;\n }\n\n _context14.next = 114;\n return _promise;\n\n case 114:\n _context14.next = 117;\n break;\n\n case 116:\n this.state.clearIntegrityHashes();\n\n case 117:\n /**\n * For timing strategy SyncQueueStrategy.ResolveOnNext.\n * Execute any callbacks pulled before this sync request began.\n * Calling resolve on the callbacks should be the last thing we do in this function,\n * to simulate calling .sync as if it went through straight to the end without having\n * to be queued.\n */\n _iteratorNormalCompletion2 = true;\n _didIteratorError2 = false;\n _iteratorError2 = undefined;\n _context14.prev = 120;\n\n for (_iterator2 = inTimeResolveQueue[Symbol.iterator](); !(_iteratorNormalCompletion2 = (_step2 = _iterator2.next()).done); _iteratorNormalCompletion2 = true) {\n callback = _step2.value;\n callback.resolve();\n }\n\n _context14.next = 128;\n break;\n\n case 124:\n _context14.prev = 124;\n _context14.t1 = _context14["catch"](120);\n _didIteratorError2 = true;\n _iteratorError2 = _context14.t1;\n\n case 128:\n _context14.prev = 128;\n _context14.prev = 129;\n\n if (!_iteratorNormalCompletion2 && _iterator2.return != null) {\n _iterator2.return();\n }\n\n case 131:\n _context14.prev = 131;\n\n if (!_didIteratorError2) {\n _context14.next = 134;\n break;\n }\n\n throw _iteratorError2;\n\n case 134:\n return _context14.finish(131);\n\n case 135:\n return _context14.finish(128);\n\n case 136:\n case "end":\n return _context14.stop();\n }\n }\n }, _callee14, this, [[120, 124, 128, 136], [129,, 131, 135]]);\n }));\n\n function sync() {\n return _sync.apply(this, arguments);\n }\n\n return sync;\n }()\n }, {\n key: "syncOnlineOperation",\n value: function () {\n var _syncOnlineOperation = _asyncToGenerator( /*#__PURE__*/_babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0___default.a.mark(function _callee16(payloads, checkIntegrity, source, mode) {\n var _this9 = this;\n\n var operation;\n return _babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0___default.a.wrap(function _callee16$(_context16) {\n while (1) {\n switch (_context16.prev = _context16.next) {\n case 0:\n this.log(\'Syncing online user\', \'source:\', source, "integrity check", checkIntegrity, \'mode:\', mode, \'payloads:\', payloads);\n _context16.t0 = _Services_sync_account_operation__WEBPACK_IMPORTED_MODULE_11__["AccountSyncOperation"];\n _context16.t1 = payloads;\n\n _context16.t2 = /*#__PURE__*/function () {\n var _ref = _asyncToGenerator( /*#__PURE__*/_babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0___default.a.mark(function _callee15(type, response) {\n return _babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0___default.a.wrap(function _callee15$(_context15) {\n while (1) {\n switch (_context15.prev = _context15.next) {\n case 0:\n if (!(type === _Services_sync_signals__WEBPACK_IMPORTED_MODULE_23__["SyncSignal"].Response)) {\n _context15.next = 10;\n break;\n }\n\n if (!response.hasError) {\n _context15.next = 6;\n break;\n }\n\n _context15.next = 4;\n return _this9.handleErrorServerResponse(response);\n\n case 4:\n _context15.next = 8;\n break;\n\n case 6:\n _context15.next = 8;\n return _this9.handleSuccessServerResponse(operation, response);\n\n case 8:\n _context15.next = 13;\n break;\n\n case 10:\n if (!(type === _Services_sync_signals__WEBPACK_IMPORTED_MODULE_23__["SyncSignal"].StatusChanged)) {\n _context15.next = 13;\n break;\n }\n\n _context15.next = 13;\n return _this9.handleStatusChange(operation);\n\n case 13:\n case "end":\n return _context15.stop();\n }\n }\n }, _callee15);\n }));\n\n return function (_x12, _x13) {\n return _ref.apply(this, arguments);\n };\n }();\n\n _context16.next = 6;\n return this.getLastSyncToken();\n\n case 6:\n _context16.t3 = _context16.sent;\n _context16.next = 9;\n return this.getPaginationToken();\n\n case 9:\n _context16.t4 = _context16.sent;\n _context16.t5 = checkIntegrity;\n _context16.t6 = this.apiService;\n operation = new _context16.t0(_context16.t1, _context16.t2, _context16.t3, _context16.t4, _context16.t5, _context16.t6);\n return _context16.abrupt("return", operation);\n\n case 14:\n case "end":\n return _context16.stop();\n }\n }\n }, _callee16, this);\n }));\n\n function syncOnlineOperation(_x8, _x9, _x10, _x11) {\n return _syncOnlineOperation.apply(this, arguments);\n }\n\n return syncOnlineOperation;\n }()\n }, {\n key: "syncOfflineOperation",\n value: function () {\n var _syncOfflineOperation = _asyncToGenerator( /*#__PURE__*/_babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0___default.a.mark(function _callee18(payloads, source, mode) {\n var _this10 = this;\n\n var operation;\n return _babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0___default.a.wrap(function _callee18$(_context18) {\n while (1) {\n switch (_context18.prev = _context18.next) {\n case 0:\n this.log(\'Syncing offline user\', \'source:\', source, \'mode:\', mode, \'payloads:\', payloads);\n operation = new _Services_sync_offline_operation__WEBPACK_IMPORTED_MODULE_12__["OfflineSyncOperation"](payloads, /*#__PURE__*/function () {\n var _ref2 = _asyncToGenerator( /*#__PURE__*/_babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0___default.a.mark(function _callee17(type, response) {\n return _babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0___default.a.wrap(function _callee17$(_context17) {\n while (1) {\n switch (_context17.prev = _context17.next) {\n case 0:\n if (!(type === _Services_sync_signals__WEBPACK_IMPORTED_MODULE_23__["SyncSignal"].Response)) {\n _context17.next = 3;\n break;\n }\n\n _context17.next = 3;\n return _this10.handleOfflineResponse(response);\n\n case 3:\n case "end":\n return _context17.stop();\n }\n }\n }, _callee17);\n }));\n\n return function (_x17, _x18) {\n return _ref2.apply(this, arguments);\n };\n }());\n return _context18.abrupt("return", operation);\n\n case 3:\n case "end":\n return _context18.stop();\n }\n }\n }, _callee18, this);\n }));\n\n function syncOfflineOperation(_x14, _x15, _x16) {\n return _syncOfflineOperation.apply(this, arguments);\n }\n\n return syncOfflineOperation;\n }()\n }, {\n key: "handleStatusChange",\n value: function () {\n var _handleStatusChange = _asyncToGenerator( /*#__PURE__*/_babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0___default.a.mark(function _callee19(operation) {\n var pendingUploadCount, totalUploadCount, completedUploadCount;\n return _babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0___default.a.wrap(function _callee19$(_context19) {\n while (1) {\n switch (_context19.prev = _context19.next) {\n case 0:\n pendingUploadCount = operation.pendingUploadCount();\n totalUploadCount = operation.totalUploadCount();\n completedUploadCount = totalUploadCount - pendingUploadCount;\n this.opStatus.setUploadStatus(completedUploadCount, totalUploadCount);\n\n case 4:\n case "end":\n return _context19.stop();\n }\n }\n }, _callee19, this);\n }));\n\n function handleStatusChange(_x19) {\n return _handleStatusChange.apply(this, arguments);\n }\n\n return handleStatusChange;\n }()\n }, {\n key: "handleOfflineResponse",\n value: function () {\n var _handleOfflineResponse = _asyncToGenerator( /*#__PURE__*/_babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0___default.a.mark(function _callee20(response) {\n var payloadsToEmit, payloadsToPersist, deletedPayloads;\n return _babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0___default.a.wrap(function _callee20$(_context20) {\n while (1) {\n switch (_context20.prev = _context20.next) {\n case 0:\n this.log(\'Offline Sync Response\', response.rawResponse);\n payloadsToEmit = response.savedPayloads;\n\n if (!(payloadsToEmit.length > 0)) {\n _context20.next = 8;\n break;\n }\n\n _context20.next = 5;\n return this.modelManager.emitPayloads(payloadsToEmit, _Payloads_sources__WEBPACK_IMPORTED_MODULE_15__["PayloadSource"].LocalSaved);\n\n case 5:\n payloadsToPersist = this.modelManager.find(Object(_Models_functions__WEBPACK_IMPORTED_MODULE_22__["Uuids"])(payloadsToEmit));\n _context20.next = 8;\n return this.persistPayloads(payloadsToPersist);\n\n case 8:\n deletedPayloads = response.deletedPayloads;\n\n if (!(deletedPayloads.length > 0)) {\n _context20.next = 12;\n break;\n }\n\n _context20.next = 12;\n return this.deletePayloads(deletedPayloads);\n\n case 12:\n this.opStatus.clearError();\n this.opStatus.setDownloadStatus(response.retrievedPayloads.length);\n _context20.next = 16;\n return this.notifyEvent(_Services_sync_events__WEBPACK_IMPORTED_MODULE_1__["SyncEvent"].SingleSyncCompleted, response);\n\n case 16:\n case "end":\n return _context20.stop();\n }\n }\n }, _callee20, this);\n }));\n\n function handleOfflineResponse(_x20) {\n return _handleOfflineResponse.apply(this, arguments);\n }\n\n return handleOfflineResponse;\n }()\n }, {\n key: "handleErrorServerResponse",\n value: function () {\n var _handleErrorServerResponse = _asyncToGenerator( /*#__PURE__*/_babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0___default.a.mark(function _callee21(response) {\n return _babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0___default.a.wrap(function _callee21$(_context21) {\n while (1) {\n switch (_context21.prev = _context21.next) {\n case 0:\n this.log(\'Sync Error\', response);\n\n if (response.status === INVALID_SESSION_RESPONSE_STATUS) {\n this.notifyEvent(_Services_sync_events__WEBPACK_IMPORTED_MODULE_1__["SyncEvent"].InvalidSession);\n }\n\n this.opStatus.setError(response.error);\n this.notifyEvent(_Services_sync_events__WEBPACK_IMPORTED_MODULE_1__["SyncEvent"].SyncError, response.error);\n\n case 4:\n case "end":\n return _context21.stop();\n }\n }\n }, _callee21, this);\n }));\n\n function handleErrorServerResponse(_x21) {\n return _handleErrorServerResponse.apply(this, arguments);\n }\n\n return handleErrorServerResponse;\n }()\n }, {\n key: "handleSuccessServerResponse",\n value: function () {\n var _handleSuccessServerResponse = _asyncToGenerator( /*#__PURE__*/_babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0___default.a.mark(function _callee22(operation, response) {\n var decryptedPayloads, _iteratorNormalCompletion3, _didIteratorError3, _iteratorError3, _iterator3, _step3, payload, decrypted, masterCollection, resolver, collections, _iteratorNormalCompletion4, _didIteratorError4, _iteratorError4, _iterator4, _step4, collection, payloadsToPersist, deletedPayloads, clientHash;\n\n return _babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0___default.a.wrap(function _callee22$(_context22) {\n while (1) {\n switch (_context22.prev = _context22.next) {\n case 0:\n if (!this._simulate_latency) {\n _context22.next = 3;\n break;\n }\n\n _context22.next = 3;\n return Object(_Lib_utils__WEBPACK_IMPORTED_MODULE_4__["sleep"])(this._simulate_latency.latency);\n\n case 3:\n this.log(\'Online Sync Response\', response.rawResponse);\n this.setLastSyncToken(response.lastSyncToken);\n this.setPaginationToken(response.paginationToken);\n this.opStatus.clearError();\n this.opStatus.setDownloadStatus(response.retrievedPayloads.length);\n decryptedPayloads = [];\n _iteratorNormalCompletion3 = true;\n _didIteratorError3 = false;\n _iteratorError3 = undefined;\n _context22.prev = 12;\n _iterator3 = response.allProcessedPayloads[Symbol.iterator]();\n\n case 14:\n if (_iteratorNormalCompletion3 = (_step3 = _iterator3.next()).done) {\n _context22.next = 25;\n break;\n }\n\n payload = _step3.value;\n\n if (!(payload.deleted || !payload.fields.includes(_Payloads_fields__WEBPACK_IMPORTED_MODULE_14__["PayloadField"].Content))) {\n _context22.next = 18;\n break;\n }\n\n return _context22.abrupt("continue", 22);\n\n case 18:\n _context22.next = 20;\n return this.protocolService.payloadByDecryptingPayload(payload);\n\n case 20:\n decrypted = _context22.sent;\n decryptedPayloads.push(decrypted);\n\n case 22:\n _iteratorNormalCompletion3 = true;\n _context22.next = 14;\n break;\n\n case 25:\n _context22.next = 31;\n break;\n\n case 27:\n _context22.prev = 27;\n _context22.t0 = _context22["catch"](12);\n _didIteratorError3 = true;\n _iteratorError3 = _context22.t0;\n\n case 31:\n _context22.prev = 31;\n _context22.prev = 32;\n\n if (!_iteratorNormalCompletion3 && _iterator3.return != null) {\n _iterator3.return();\n }\n\n case 34:\n _context22.prev = 34;\n\n if (!_didIteratorError3) {\n _context22.next = 37;\n break;\n }\n\n throw _iteratorError3;\n\n case 37:\n return _context22.finish(34);\n\n case 38:\n return _context22.finish(31);\n\n case 39:\n masterCollection = this.modelManager.getMasterCollection();\n resolver = new _Services_sync_account_response_resolver__WEBPACK_IMPORTED_MODULE_10__["SyncResponseResolver"](response, decryptedPayloads, masterCollection, operation.payloadsSavedOrSaving);\n _context22.next = 43;\n return resolver.collectionsByProcessingResponse();\n\n case 43:\n collections = _context22.sent;\n _iteratorNormalCompletion4 = true;\n _didIteratorError4 = false;\n _iteratorError4 = undefined;\n _context22.prev = 47;\n _iterator4 = collections[Symbol.iterator]();\n\n case 49:\n if (_iteratorNormalCompletion4 = (_step4 = _iterator4.next()).done) {\n _context22.next = 59;\n break;\n }\n\n collection = _step4.value;\n _context22.next = 53;\n return this.modelManager.emitCollection(collection);\n\n case 53:\n payloadsToPersist = this.modelManager.find(collection.uuids());\n _context22.next = 56;\n return this.persistPayloads(payloadsToPersist);\n\n case 56:\n _iteratorNormalCompletion4 = true;\n _context22.next = 49;\n break;\n\n case 59:\n _context22.next = 65;\n break;\n\n case 61:\n _context22.prev = 61;\n _context22.t1 = _context22["catch"](47);\n _didIteratorError4 = true;\n _iteratorError4 = _context22.t1;\n\n case 65:\n _context22.prev = 65;\n _context22.prev = 66;\n\n if (!_iteratorNormalCompletion4 && _iterator4.return != null) {\n _iterator4.return();\n }\n\n case 68:\n _context22.prev = 68;\n\n if (!_didIteratorError4) {\n _context22.next = 71;\n break;\n }\n\n throw _iteratorError4;\n\n case 71:\n return _context22.finish(68);\n\n case 72:\n return _context22.finish(65);\n\n case 73:\n deletedPayloads = response.deletedPayloads;\n\n if (!(deletedPayloads.length > 0)) {\n _context22.next = 77;\n break;\n }\n\n _context22.next = 77;\n return this.deletePayloads(deletedPayloads);\n\n case 77:\n _context22.next = 79;\n return this.notifyEvent(_Services_sync_events__WEBPACK_IMPORTED_MODULE_1__["SyncEvent"].SingleSyncCompleted, response);\n\n case 79:\n if (!response.checkIntegrity) {\n _context22.next = 85;\n break;\n }\n\n _context22.next = 82;\n return this.computeDataIntegrityHash();\n\n case 82:\n clientHash = _context22.sent;\n _context22.next = 85;\n return this.state.setIntegrityHashes(clientHash, response.integrityHash);\n\n case 85:\n case "end":\n return _context22.stop();\n }\n }\n }, _callee22, this, [[12, 27, 31, 39], [32,, 34, 38], [47, 61, 65, 73], [66,, 68, 72]]);\n }));\n\n function handleSuccessServerResponse(_x22, _x23) {\n return _handleSuccessServerResponse.apply(this, arguments);\n }\n\n return handleSuccessServerResponse;\n }()\n /**\n * Items that have never been synced and marked as deleted should be cleared\n * as dirty, mapped, then removed from storage.\n */\n\n }, {\n key: "handleNeverSyncedDeleted",\n value: function () {\n var _handleNeverSyncedDeleted = _asyncToGenerator( /*#__PURE__*/_babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0___default.a.mark(function _callee23(items) {\n var payloads;\n return _babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0___default.a.wrap(function _callee23$(_context23) {\n while (1) {\n switch (_context23.prev = _context23.next) {\n case 0:\n payloads = items.map(function (item) {\n return item.payloadRepresentation({\n dirty: false\n });\n });\n _context23.next = 3;\n return this.modelManager.emitPayloads(payloads, _Payloads_sources__WEBPACK_IMPORTED_MODULE_15__["PayloadSource"].LocalChanged);\n\n case 3:\n _context23.next = 5;\n return this.persistPayloads(payloads);\n\n case 5:\n case "end":\n return _context23.stop();\n }\n }\n }, _callee23, this);\n }));\n\n function handleNeverSyncedDeleted(_x24) {\n return _handleNeverSyncedDeleted.apply(this, arguments);\n }\n\n return handleNeverSyncedDeleted;\n }()\n /**\n * @param payloads The decrypted payloads to persist\n */\n\n }, {\n key: "persistPayloads",\n value: function () {\n var _persistPayloads = _asyncToGenerator( /*#__PURE__*/_babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0___default.a.mark(function _callee24(payloads) {\n var _this11 = this;\n\n return _babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0___default.a.wrap(function _callee24$(_context24) {\n while (1) {\n switch (_context24.prev = _context24.next) {\n case 0:\n if (!(payloads.length === 0)) {\n _context24.next = 2;\n break;\n }\n\n return _context24.abrupt("return");\n\n case 2:\n return _context24.abrupt("return", this.storageService.savePayloads(payloads).catch(function (error) {\n _this11.notifyEvent(_Services_sync_events__WEBPACK_IMPORTED_MODULE_1__["SyncEvent"].DatabaseWriteError, error);\n\n throw error;\n }));\n\n case 3:\n case "end":\n return _context24.stop();\n }\n }\n }, _callee24, this);\n }));\n\n function persistPayloads(_x25) {\n return _persistPayloads.apply(this, arguments);\n }\n\n return persistPayloads;\n }()\n }, {\n key: "deletePayloads",\n value: function () {\n var _deletePayloads = _asyncToGenerator( /*#__PURE__*/_babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0___default.a.mark(function _callee25(payloads) {\n return _babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0___default.a.wrap(function _callee25$(_context25) {\n while (1) {\n switch (_context25.prev = _context25.next) {\n case 0:\n return _context25.abrupt("return", this.persistPayloads(payloads));\n\n case 1:\n case "end":\n return _context25.stop();\n }\n }\n }, _callee25, this);\n }));\n\n function deletePayloads(_x26) {\n return _deletePayloads.apply(this, arguments);\n }\n\n return deletePayloads;\n }()\n /**\n * Computes a hash of all items updated_at strings joined with a comma.\n * The server will also do the same, to determine whether the client values match server values.\n * @returns A SHA256 digest string (hex).\n */\n\n }, {\n key: "computeDataIntegrityHash",\n value: function () {\n var _computeDataIntegrityHash = _asyncToGenerator( /*#__PURE__*/_babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0___default.a.mark(function _callee26() {\n var items, dates, string;\n return _babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0___default.a.wrap(function _callee26$(_context26) {\n while (1) {\n switch (_context26.prev = _context26.next) {\n case 0:\n _context26.prev = 0;\n items = this.itemManager.nonDeletedItems.sort(function (a, b) {\n return b.updated_at.getTime() - a.updated_at.getTime();\n });\n dates = items.map(function (item) {\n return item.updatedAtTimestamp();\n });\n string = dates.join(\',\');\n return _context26.abrupt("return", this.protocolService.crypto.sha256(string));\n\n case 7:\n _context26.prev = 7;\n _context26.t0 = _context26["catch"](0);\n console.error(\'Error computing data integrity hash\', _context26.t0);\n return _context26.abrupt("return", undefined);\n\n case 11:\n case "end":\n return _context26.stop();\n }\n }\n }, _callee26, this, [[0, 7]]);\n }));\n\n function computeDataIntegrityHash() {\n return _computeDataIntegrityHash.apply(this, arguments);\n }\n\n return computeDataIntegrityHash;\n }()\n /**\n * Downloads all items and maps to lcoal items to attempt resolve out-of-sync state\n */\n\n }, {\n key: "resolveOutOfSync",\n value: function () {\n var _resolveOutOfSync = _asyncToGenerator( /*#__PURE__*/_babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0___default.a.mark(function _callee27() {\n var downloader, payloads, delta, collection;\n return _babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0___default.a.wrap(function _callee27$(_context27) {\n while (1) {\n switch (_context27.prev = _context27.next) {\n case 0:\n downloader = new _Services_sync_account_downloader__WEBPACK_IMPORTED_MODULE_9__["AccountDownloader"](this.apiService, this.protocolService, undefined, \'resolve-out-of-sync\');\n _context27.next = 3;\n return downloader.run();\n\n case 3:\n payloads = _context27.sent;\n delta = new _Payloads_deltas__WEBPACK_IMPORTED_MODULE_13__["DeltaOutOfSync"](this.modelManager.getMasterCollection(), _Protocol_collection_payload_collection__WEBPACK_IMPORTED_MODULE_16__["ImmutablePayloadCollection"].WithPayloads(payloads, _Payloads_sources__WEBPACK_IMPORTED_MODULE_15__["PayloadSource"].RemoteRetrieved));\n _context27.next = 7;\n return delta.resultingCollection();\n\n case 7:\n collection = _context27.sent;\n _context27.next = 10;\n return this.modelManager.emitCollection(collection);\n\n case 10:\n _context27.next = 12;\n return this.persistPayloads(collection.payloads);\n\n case 12:\n return _context27.abrupt("return", this.sync({\n checkIntegrity: true,\n source: SyncSources.ResolveOutOfSync\n }));\n\n case 13:\n case "end":\n return _context27.stop();\n }\n }\n }, _callee27, this);\n }));\n\n function resolveOutOfSync() {\n return _resolveOutOfSync.apply(this, arguments);\n }\n\n return resolveOutOfSync;\n }()\n }, {\n key: "statelessDownloadAllItems",\n value: function () {\n var _statelessDownloadAllItems = _asyncToGenerator( /*#__PURE__*/_babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0___default.a.mark(function _callee28(contentType, customEvent) {\n var downloader, payloads;\n return _babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0___default.a.wrap(function _callee28$(_context28) {\n while (1) {\n switch (_context28.prev = _context28.next) {\n case 0:\n downloader = new _Services_sync_account_downloader__WEBPACK_IMPORTED_MODULE_9__["AccountDownloader"](this.apiService, this.protocolService, contentType, customEvent);\n _context28.next = 3;\n return downloader.run();\n\n case 3:\n payloads = _context28.sent;\n return _context28.abrupt("return", payloads.map(function (payload) {\n return Object(_Models_generator__WEBPACK_IMPORTED_MODULE_21__["CreateItemFromPayload"])(payload);\n }));\n\n case 5:\n case "end":\n return _context28.stop();\n }\n }\n }, _callee28, this);\n }));\n\n function statelessDownloadAllItems(_x27, _x28) {\n return _statelessDownloadAllItems.apply(this, arguments);\n }\n\n return statelessDownloadAllItems;\n }()\n /** @unit_testing */\n // eslint-disable-next-line camelcase\n\n }, {\n key: "ut_setDatabaseLoaded",\n value: function ut_setDatabaseLoaded(loaded) {\n this.databaseLoaded = loaded;\n }\n /** @unit_testing */\n // eslint-disable-next-line camelcase\n\n }, {\n key: "ut_clearLastSyncDate",\n value: function ut_clearLastSyncDate() {\n this.state.lastSyncDate = undefined;\n }\n /** @unit_testing */\n // eslint-disable-next-line camelcase\n\n }, {\n key: "ut_beginLatencySimulator",\n value: function ut_beginLatencySimulator(latency) {\n this._simulate_latency = {\n latency: latency || 1000,\n enabled: true\n };\n }\n /** @unit_testing */\n // eslint-disable-next-line camelcase\n\n }, {\n key: "ut_endLatencySimulator",\n value: function ut_endLatencySimulator() {\n this._simulate_latency = null;\n }\n }]);\n\n return SNSyncService;\n}(_Services_pure_service__WEBPACK_IMPORTED_MODULE_5__["PureService"]);//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9saWIvc2VydmljZXMvc3luYy9zeW5jX3NlcnZpY2UudHMuanMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly9TTkxpYnJhcnkvLi9saWIvc2VydmljZXMvc3luYy9zeW5jX3NlcnZpY2UudHM/NGJhZiJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBTeW5jRXZlbnQgfSBmcm9tICdAU2VydmljZXMvc3luYy9ldmVudHMnO1xuaW1wb3J0IHsgU3RvcmFnZUtleSB9IGZyb20gJ0BMaWIvc3RvcmFnZV9rZXlzJztcbmltcG9ydCB7IE11dGF0aW9uVHlwZSB9IGZyb20gJ0BNb2RlbHMvY29yZS9pdGVtJztcbmltcG9ydCB7IHJlbW92ZUZyb21JbmRleCwgc2xlZXAsIHN1YnRyYWN0RnJvbUFycmF5LCBpc051bGxPclVuZGVmaW5lZCB9IGZyb20gJ0BMaWIvdXRpbHMnO1xuaW1wb3J0IHsgUHVyZVNlcnZpY2UgfSBmcm9tICdAU2VydmljZXMvcHVyZV9zZXJ2aWNlJztcbmltcG9ydCB7IFNvcnRQYXlsb2Fkc0J5UmVjZW50QW5kQ29udGVudFByaW9yaXR5IH0gZnJvbSAnQFNlcnZpY2VzL3N5bmMvdXRpbHMnO1xuaW1wb3J0IHsgU3luY09wU3RhdHVzIH0gZnJvbSAnQFNlcnZpY2VzL3N5bmMvc3luY19vcF9zdGF0dXMnO1xuaW1wb3J0IHsgU3luY1N0YXRlIH0gZnJvbSAnQFNlcnZpY2VzL3N5bmMvc3luY19zdGF0ZSc7XG5pbXBvcnQgeyBBY2NvdW50RG93bmxvYWRlciB9IGZyb20gJ0BTZXJ2aWNlcy9zeW5jL2FjY291bnQvZG93bmxvYWRlcic7XG5pbXBvcnQgeyBTeW5jUmVzcG9uc2VSZXNvbHZlciB9IGZyb20gJ0BTZXJ2aWNlcy9zeW5jL2FjY291bnQvcmVzcG9uc2VfcmVzb2x2ZXInO1xuaW1wb3J0IHsgQWNjb3VudFN5bmNPcGVyYXRpb24gfSBmcm9tICdAU2VydmljZXMvc3luYy9hY2NvdW50L29wZXJhdGlvbic7XG5pbXBvcnQgeyBPZmZsaW5lU3luY09wZXJhdGlvbiB9IGZyb20gJ0BTZXJ2aWNlcy9zeW5jL29mZmxpbmUvb3BlcmF0aW9uJztcbmltcG9ydCB7IERlbHRhT3V0T2ZTeW5jIH0gZnJvbSAnQFBheWxvYWRzL2RlbHRhcyc7XG5pbXBvcnQgeyBQYXlsb2FkRmllbGQgfSBmcm9tICdAUGF5bG9hZHMvZmllbGRzJztcbmltcG9ydCB7IFBheWxvYWRTb3VyY2UgfSBmcm9tICdAUGF5bG9hZHMvc291cmNlcyc7XG5pbXBvcnQgeyBJbW11dGFibGVQYXlsb2FkQ29sbGVjdGlvbiB9IGZyb20gXCJAUHJvdG9jb2wvY29sbGVjdGlvbi9wYXlsb2FkX2NvbGxlY3Rpb25cIjtcbmltcG9ydCB7IFBheWxvYWRzQnlBbHRlcm5hdGluZ1V1aWQgfSBmcm9tICdAUGF5bG9hZHMvZnVuY3Rpb25zJztcbmltcG9ydCB7IENyZWF0ZU1heFBheWxvYWRGcm9tQW55T2JqZWN0IH0gZnJvbSAnQFBheWxvYWRzL2dlbmVyYXRvcic7XG5pbXBvcnQgeyBFbmNyeXB0aW9uSW50ZW50IH0gZnJvbSAnQFByb3RvY29sL2ludGVudHMnO1xuaW1wb3J0IHsgQ29udGVudFR5cGUgfSBmcm9tICdATW9kZWxzL2NvbnRlbnRfdHlwZXMnO1xuaW1wb3J0IHsgQ3JlYXRlSXRlbUZyb21QYXlsb2FkIH0gZnJvbSAnQE1vZGVscy9nZW5lcmF0b3InO1xuaW1wb3J0IHsgVXVpZHMgfSBmcm9tICdATW9kZWxzL2Z1bmN0aW9ucyc7XG5pbXBvcnQgeyBTeW5jU2lnbmFsIH0gZnJvbSAnQFNlcnZpY2VzL3N5bmMvc2lnbmFscyc7XG5jb25zdCBERUZBVUxUX0RBVEFCQVNFX0xPQURfQkFUQ0hfU0laRSA9IDEwMDtcbmNvbnN0IERFRkFVTFRfTUFYX0RJU0NPUkRBTkNFID0gNTtcbmNvbnN0IERFRkFVTFRfTUFKT1JfQ0hBTkdFX1RIUkVTSE9MRCA9IDE1O1xuY29uc3QgSU5WQUxJRF9TRVNTSU9OX1JFU1BPTlNFX1NUQVRVUyA9IDQwMTtcbmV4cG9ydCB2YXIgU3luY1F1ZXVlU3RyYXRlZ3k7XG4oZnVuY3Rpb24gKFN5bmNRdWV1ZVN0cmF0ZWd5KSB7XG4gICAgLyoqXG4gICAgICogUHJvbWlzZSB3aWxsIGJlIHJlc29sdmVkIG9uIHRoZSBuZXh0IHN5bmMgcmVxdWVzdCBhZnRlciB0aGUgY3VycmVudCBvbmUgY29tcGxldGVzLlxuICAgICAqIElmIHRoZXJlIGlzIG5vIHNjaGVkdWxlZCBzeW5jIHJlcXVlc3QsIG9uZSB3aWxsIGJlIHNjaGVkdWxlZC5cbiAgICAgKi9cbiAgICBTeW5jUXVldWVTdHJhdGVneVtTeW5jUXVldWVTdHJhdGVneVtcIlJlc29sdmVPbk5leHRcIl0gPSAxXSA9IFwiUmVzb2x2ZU9uTmV4dFwiO1xuICAgIC8qKlxuICAgICAqIEEgbmV3IHN5bmMgcmVxdWVzdCBpcyBndWFyZW50ZWVkIHRvIGJlIGdlbmVyYXRlZCBmb3IgeW91ciByZXF1ZXN0LCBubyBtYXR0ZXIgaG93IGxvbmcgaXQgdGFrZXMuXG4gICAgICogUHJvbWlzZSB3aWxsIGJlIHJlc29sdmVkIHdoZW5ldmVyIHRoaXMgc3luYyByZXF1ZXN0IGlzIHByb2Nlc3NlZCBpbiB0aGUgc2VyaWFsIHF1ZXVlLlxuICAgICAqL1xuICAgIFN5bmNRdWV1ZVN0cmF0ZWd5W1N5bmNRdWV1ZVN0cmF0ZWd5W1wiRm9yY2VTcGF3bk5ld1wiXSA9IDJdID0gXCJGb3JjZVNwYXduTmV3XCI7XG59KShTeW5jUXVldWVTdHJhdGVneSB8fCAoU3luY1F1ZXVlU3RyYXRlZ3kgPSB7fSkpO1xuZXhwb3J0IHZhciBTeW5jTW9kZXM7XG4oZnVuY3Rpb24gKFN5bmNNb2Rlcykge1xuICAgIC8qKlxuICAgICAqIFBlcmZvcm1zIGEgc3RhbmRhcmQgc3luYywgdXBsb2FkaW5nIGFueSBkaXJ0eSBpdGVtcyBhbmQgcmV0cmlldmluZyBpdGVtcy5cbiAgICAgKi9cbiAgICBTeW5jTW9kZXNbU3luY01vZGVzW1wiRGVmYXVsdFwiXSA9IDFdID0gXCJEZWZhdWx0XCI7XG4gICAgLyoqXG4gICAgICogVGhlIGZpcnN0IHN5bmMgZm9yIGFuIGFjY291bnQsIHdoZXJlIHdlIGZpcnN0IHdhbnQgdG8gZG93bmxvYWQgYWxsIHJlbW90ZSBpdGVtcyBmaXJzdFxuICAgICAqIGJlZm9yZSB1cGxvYWRpbmcgYW55IGRpcnR5IGl0ZW1zLiBUaGlzIGFsbG93cyBhIGNvbnN1bWVyLCBmb3IgZXhhbXBsZSwgdG8gZG93bmxvYWRcbiAgICAgKiBhbGwgZGF0YSB0byBzZWUgaWYgdXNlciBoYXMgYW4gaXRlbXMga2V5LCBhbmQgaWYgbm90LCBvbmx5IHRoZW4gY3JlYXRlIGEgbmV3IG9uZS5cbiAgICAgKi9cbiAgICBTeW5jTW9kZXNbU3luY01vZGVzW1wiRG93bmxvYWRGaXJzdFwiXSA9IDJdID0gXCJEb3dubG9hZEZpcnN0XCI7XG59KShTeW5jTW9kZXMgfHwgKFN5bmNNb2RlcyA9IHt9KSk7XG47XG5leHBvcnQgdmFyIFN5bmNTb3VyY2VzO1xuKGZ1bmN0aW9uIChTeW5jU291cmNlcykge1xuICAgIFN5bmNTb3VyY2VzW1N5bmNTb3VyY2VzW1wiRXh0ZXJuYWxcIl0gPSAxXSA9IFwiRXh0ZXJuYWxcIjtcbiAgICBTeW5jU291cmNlc1tTeW5jU291cmNlc1tcIlNwYXduUXVldWVcIl0gPSAyXSA9IFwiU3Bhd25RdWV1ZVwiO1xuICAgIFN5bmNTb3VyY2VzW1N5bmNTb3VyY2VzW1wiUmVzb2x2ZVF1ZXVlXCJdID0gM10gPSBcIlJlc29sdmVRdWV1ZVwiO1xuICAgIFN5bmNTb3VyY2VzW1N5bmNTb3VyY2VzW1wiTW9yZURpcnR5SXRlbXNcIl0gPSA0XSA9IFwiTW9yZURpcnR5SXRlbXNcIjtcbiAgICBTeW5jU291cmNlc1tTeW5jU291cmNlc1tcIkFmdGVyRG93bmxvYWRGaXJzdFwiXSA9IDVdID0gXCJBZnRlckRvd25sb2FkRmlyc3RcIjtcbiAgICBTeW5jU291cmNlc1tTeW5jU291cmNlc1tcIkludGVncml0eUNoZWNrXCJdID0gNl0gPSBcIkludGVncml0eUNoZWNrXCI7XG4gICAgU3luY1NvdXJjZXNbU3luY1NvdXJjZXNbXCJSZXNvbHZlT3V0T2ZTeW5jXCJdID0gN10gPSBcIlJlc29sdmVPdXRPZlN5bmNcIjtcbn0pKFN5bmNTb3VyY2VzIHx8IChTeW5jU291cmNlcyA9IHt9KSk7XG47XG4vKipcbiAqIFRoZSBzeW5jIHNlcnZpY2Ugb3JjaGVzdHJhdGVzIHdpdGggdGhlIG1vZGVsIG1hbmFnZXIsIGFwaSBzZXJ2aWNlLCBhbmQgc3RvcmFnZSBzZXJ2aWNlXG4gKiB0byBlbnN1cmUgY29uc2lzdGVudCBzdGF0ZSBiZXR3ZWVuIHRoZSB0aHJlZS4gV2hlbiBhIGNoYW5nZSBpcyBtYWRlIHRvIGFuIGl0ZW0sIGNvbnN1bWVyc1xuICogY2FsbCB0aGUgc3luYyBzZXJ2aWNlJ3Mgc3luYyBmdW5jdGlvbiB0byBmaXJzdCBwZXJzaXN0IHBlbmRpbmcgY2hhbmdlcyB0byBsb2NhbCBzdG9yYWdlLlxuICogVGhlbiwgdGhlIGl0ZW1zIGFyZSB1cGxvYWRlZCB0byB0aGUgc2VydmVyLiBUaGUgc3luYyBzZXJ2aWNlIGhhbmRsZXMgc2VydmVyIHJlc3BvbnNlcyxcbiAqIGluY2x1ZGluZyBtYXBwaW5nIGFueSByZXRyaWV2ZWQgaXRlbXMgdG8gYXBwbGljYXRpb24gc3RhdGUgdmlhIG1vZGVsIG1hbmFnZXIgbWFwcGluZy5cbiAqIEFmdGVyIGVhY2ggc3luYyByZXF1ZXN0LCBhbnkgY2hhbmdlcyBtYWRlIG9yIHJldHJpZXZlZCBhcmUgYWxzbyBwZXJzaXN0ZWQgbG9jYWxseS5cbiAqIFRoZSBzeW5jIHNlcnZpY2UgbGFyZ2VseSBkb2VzIG5vdCBwZXJmb3JtIGFueSB0YXNrIHVubGVzcyBpdCBpcyBjYWxsZWQgdXBvbi5cbiAqL1xuZXhwb3J0IGNsYXNzIFNOU3luY1NlcnZpY2UgZXh0ZW5kcyBQdXJlU2VydmljZSB7XG4gICAgY29uc3RydWN0b3IoaXRlbU1hbmFnZXIsIHNlc3Npb25NYW5hZ2VyLCBwcm90b2NvbFNlcnZpY2UsIHN0b3JhZ2VTZXJ2aWNlLCBtb2RlbE1hbmFnZXIsIGFwaVNlcnZpY2UsIGludGVydmFsKSB7XG4gICAgICAgIHN1cGVyKCk7XG4gICAgICAgIHRoaXMucmVzb2x2ZVF1ZXVlID0gW107XG4gICAgICAgIHRoaXMuc3Bhd25RdWV1ZSA9IFtdO1xuICAgICAgICAvKiBBIERvd25sb2FkRmlyc3Qgc3luYyBtdXN0IGFsd2F5cyBiZSB0aGUgZmlyc3Qgc3luYyBjb21wbGV0ZWQgKi9cbiAgICAgICAgdGhpcy5jb21wbGV0ZWRPbmxpbmVEb3dubG9hZEZpcnN0U3luYyA9IGZhbHNlO1xuICAgICAgICB0aGlzLm1ham9yQ2hhbmdlVGhyZXNob2xkID0gREVGQVVMVF9NQUpPUl9DSEFOR0VfVEhSRVNIT0xEO1xuICAgICAgICB0aGlzLm1heERpc2NvcmRhbmNlID0gREVGQVVMVF9NQVhfRElTQ09SREFOQ0U7XG4gICAgICAgIHRoaXMubG9ja2VkID0gZmFsc2U7XG4gICAgICAgIHRoaXMuZGF0YWJhc2VMb2FkZWQgPSBmYWxzZTtcbiAgICAgICAgLyoqIENvbnRlbnQgdHlwZXMgYXBwZWFyaW5nIGZpcnN0IGFyZSBhbHdheXMgbWFwcGVkIGZpcnN0ICovXG4gICAgICAgIHRoaXMubG9jYWxMb2FkUHJpb3J0eSA9IFtcbiAgICAgICAgICAgIENvbnRlbnRUeXBlLkl0ZW1zS2V5LFxuICAgICAgICAgICAgQ29udGVudFR5cGUuVXNlclByZWZzLFxuICAgICAgICAgICAgQ29udGVudFR5cGUuUHJpdmlsZWdlcyxcbiAgICAgICAgICAgIENvbnRlbnRUeXBlLkNvbXBvbmVudCxcbiAgICAgICAgICAgIENvbnRlbnRUeXBlLlRoZW1lXG4gICAgICAgIF07XG4gICAgICAgIC8qKlxuICAgICAgICAgKiBOb24tZW5jcnlwdGVkIHR5cGVzIGFyZSBpdGVtcyB3aG9zZSB2YWx1ZXMgYSBzZXJ2ZXIgbXVzdCBiZSBhYmxlIHRvIHJlYWQuXG4gICAgICAgICAqIFRoZXNlIGluY2x1ZGUgc2VydmVyIGV4dGVuc2lvbnMgKHN1Y2ggYXMgYSBub3RlIGhpc3RvcnkgZW5kcG9pbnQpLCBhbmRcbiAgICAgICAgICogbXVsdGktZmFjdG9yIGF1dGhlbnRpY2F0aW9uIGl0ZW1zLCB3aGljaCBpbmNsdWRlIGEgc2VjcmV0IHZhbHVlIHRoYXQgdGhlIHNlcnZlclxuICAgICAgICAgKiBuZWVkcyB0byBiZSBhYmxlIHRvIHJlYWQgaW4gb3JkZXIgdG8gZW5mb3JjZS5cbiAgICAgICAgICovXG4gICAgICAgIHRoaXMubm9uRW5jcnlwdGVkVHlwZXMgPSBbXG4gICAgICAgICAgICBDb250ZW50VHlwZS5NZmEsXG4gICAgICAgICAgICBDb250ZW50VHlwZS5TZXJ2ZXJFeHRlbnNpb25cbiAgICAgICAgXTtcbiAgICAgICAgdGhpcy5pdGVtTWFuYWdlciA9IGl0ZW1NYW5hZ2VyO1xuICAgICAgICB0aGlzLnNlc3Npb25NYW5hZ2VyID0gc2Vzc2lvbk1hbmFnZXI7XG4gICAgICAgIHRoaXMucHJvdG9jb2xTZXJ2aWNlID0gcHJvdG9jb2xTZXJ2aWNlO1xuICAgICAgICB0aGlzLm1vZGVsTWFuYWdlciA9IG1vZGVsTWFuYWdlcjtcbiAgICAgICAgdGhpcy5zdG9yYWdlU2VydmljZSA9IHN0b3JhZ2VTZXJ2aWNlO1xuICAgICAgICB0aGlzLmFwaVNlcnZpY2UgPSBhcGlTZXJ2aWNlO1xuICAgICAgICB0aGlzLmludGVydmFsID0gaW50ZXJ2YWw7XG4gICAgICAgIHRoaXMuaW5pdGlhbGl6ZVN0YXR1cygpO1xuICAgICAgICB0aGlzLmluaXRpYWxpemVTdGF0ZSgpO1xuICAgIH1cbiAgICAvKipcbiAgICAgKiBJZiB0aGUgZGF0YWJhc2UgaGFzIGJlZW4gbmV3bHkgY3JlYXRlZCAoYmVjYXVzZSBpdHMgbmV3IG9yIHdhcyBwcmV2aW91c2x5IGRlc3Ryb3llZClcbiAgICAgKiB3ZSB3YW50IHRvIHJlc2V0IGFueSBzeW5jIHRva2VucyB3ZSBoYXZlLlxuICAgICAqL1xuICAgIGFzeW5jIG9uTmV3RGF0YWJhc2VDcmVhdGVkKCkge1xuICAgICAgICBpZiAoYXdhaXQgdGhpcy5nZXRMYXN0U3luY1Rva2VuKCkpIHtcbiAgICAgICAgICAgIGF3YWl0IHRoaXMuY2xlYXJTeW5jUG9zaXRpb25Ub2tlbnMoKTtcbiAgICAgICAgfVxuICAgIH1cbiAgICBkZWluaXQoKSB7XG4gICAgICAgIHRoaXMuc2Vzc2lvbk1hbmFnZXIgPSB1bmRlZmluZWQ7XG4gICAgICAgIHRoaXMuaXRlbU1hbmFnZXIgPSB1bmRlZmluZWQ7XG4gICAgICAgIHRoaXMucHJvdG9jb2xTZXJ2aWNlID0gdW5kZWZpbmVkO1xuICAgICAgICB0aGlzLm1vZGVsTWFuYWdlciA9IHVuZGVmaW5lZDtcbiAgICAgICAgdGhpcy5zdG9yYWdlU2VydmljZSA9IHVuZGVmaW5lZDtcbiAgICAgICAgdGhpcy5hcGlTZXJ2aWNlID0gdW5kZWZpbmVkO1xuICAgICAgICB0aGlzLmludGVydmFsID0gdW5kZWZpbmVkO1xuICAgICAgICB0aGlzLnN0YXRlLnJlc2V0KCk7XG4gICAgICAgIHRoaXMub3BTdGF0dXMucmVzZXQoKTtcbiAgICAgICAgdGhpcy5zdGF0ZSA9IHVuZGVmaW5lZDtcbiAgICAgICAgdGhpcy5vcFN0YXR1cyA9IHVuZGVmaW5lZDtcbiAgICAgICAgdGhpcy5yZXNvbHZlUXVldWUubGVuZ3RoID0gMDtcbiAgICAgICAgdGhpcy5zcGF3blF1ZXVlLmxlbmd0aCA9IDA7XG4gICAgICAgIHN1cGVyLmRlaW5pdCgpO1xuICAgIH1cbiAgICBpbml0aWFsaXplU3RhdHVzKCkge1xuICAgICAgICB0aGlzLm9wU3RhdHVzID0gbmV3IFN5bmNPcFN0YXR1cyh0aGlzLmludGVydmFsLCAoZXZlbnQpID0+IHtcbiAgICAgICAgICAgIHRoaXMubm90aWZ5RXZlbnQoZXZlbnQpO1xuICAgICAgICB9KTtcbiAgICB9XG4gICAgaW5pdGlhbGl6ZVN0YXRlKCkge1xuICAgICAgICB0aGlzLnN0YXRlID0gbmV3IFN5bmNTdGF0ZSgoZXZlbnQpID0+IHtcbiAgICAgICAgICAgIGlmIChldmVudCA9PT0gU3luY0V2ZW50LkVudGVyT3V0T2ZTeW5jKSB7XG4gICAgICAgICAgICAgICAgdGhpcy5ub3RpZnlFdmVudChTeW5jRXZlbnQuRW50ZXJPdXRPZlN5bmMpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgZWxzZSBpZiAoZXZlbnQgPT09IFN5bmNFdmVudC5FeGl0T3V0T2ZTeW5jKSB7XG4gICAgICAgICAgICAgICAgdGhpcy5ub3RpZnlFdmVudChTeW5jRXZlbnQuRXhpdE91dE9mU3luYyk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH0sIHRoaXMubWF4RGlzY29yZGFuY2UpO1xuICAgIH1cbiAgICBsb2NrU3luY2luZygpIHtcbiAgICAgICAgdGhpcy5sb2NrZWQgPSB0cnVlO1xuICAgIH1cbiAgICB1bmxvY2tTeW5jaW5nKCkge1xuICAgICAgICB0aGlzLmxvY2tlZCA9IGZhbHNlO1xuICAgIH1cbiAgICBpc091dE9mU3luYygpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuc3RhdGUuaXNPdXRPZlN5bmMoKTtcbiAgICB9XG4gICAgZ2V0TGFzdFN5bmNEYXRlKCkge1xuICAgICAgICByZXR1cm4gdGhpcy5zdGF0ZS5sYXN0U3luY0RhdGU7XG4gICAgfVxuICAgIGdldFN0YXR1cygpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMub3BTdGF0dXM7XG4gICAgfVxuICAgIC8qKlxuICAgICAqIENhbGxlZCBieSBhcHBsaWNhdGlvbiB3aGVuIHNpZ24gaW4gb3IgcmVnaXN0cmF0aW9uIG9jY3Vycy5cbiAgICAgKi9cbiAgICByZXNldFN5bmNTdGF0ZSgpIHtcbiAgICAgICAgdGhpcy5zdGF0ZS5yZXNldCgpO1xuICAgIH1cbiAgICBpc0RhdGFiYXNlTG9hZGVkKCkge1xuICAgICAgICByZXR1cm4gdGhpcy5kYXRhYmFzZUxvYWRlZDtcbiAgICB9XG4gICAgLyoqXG4gICAgICogVXNlZCBpbiB0YW5kZW0gd2l0aCBgbG9hZERhdGFiYXNlUGF5bG9hZHNgXG4gICAgICovXG4gICAgYXN5bmMgZ2V0RGF0YWJhc2VQYXlsb2FkcygpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuc3RvcmFnZVNlcnZpY2UuZ2V0QWxsUmF3UGF5bG9hZHMoKS5jYXRjaCgoZXJyb3IpID0+IHtcbiAgICAgICAgICAgIHRoaXMubm90aWZ5RXZlbnQoU3luY0V2ZW50LkRhdGFiYXNlUmVhZEVycm9yLCBlcnJvcik7XG4gICAgICAgICAgICB0aHJvdyBlcnJvcjtcbiAgICAgICAgfSk7XG4gICAgfVxuICAgIC8qKlxuICAgICAqIEBwYXJhbSByYXdQYXlsb2FkcyAtIHVzZSBgZ2V0RGF0YWJhc2VQYXlsb2Fkc2AgdG8gZ2V0IHRoZXNlIHBheWxvYWRzLlxuICAgICAqIFRoZXkgYXJlIGZlZCBhcyBhIHBhcmFtZXRlciBzbyB0aGF0IGNhbGxlcnMgZG9uJ3QgaGF2ZSB0byBhd2FpdCB0aGUgbG9hZGluZywgYnV0IGNhblxuICAgICAqIGF3YWl0IGdldHRpbmcgdGhlIHJhdyBwYXlsb2FkcyBmcm9tIHN0b3JhZ2VcbiAgICAgKi9cbiAgICBhc3luYyBsb2FkRGF0YWJhc2VQYXlsb2FkcyhyYXdQYXlsb2Fkcykge1xuICAgICAgICBpZiAodGhpcy5kYXRhYmFzZUxvYWRlZCkge1xuICAgICAgICAgICAgdGhyb3cgJ0F0dGVtcHRpbmcgdG8gaW5pdGlhbGl6ZSBhbHJlYWR5IGluaXRpYWxpemVkIGxvY2FsIGRhdGFiYXNlLic7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKHJhd1BheWxvYWRzLmxlbmd0aCA9PT0gMCkge1xuICAgICAgICAgICAgdGhpcy5kYXRhYmFzZUxvYWRlZCA9IHRydWU7XG4gICAgICAgICAgICB0aGlzLm9wU3RhdHVzLnNldERhdGFiYXNlTG9hZFN0YXR1cygwLCAwLCB0cnVlKTtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuICAgICAgICBjb25zdCB1bnNvcnRlZFBheWxvYWRzID0gcmF3UGF5bG9hZHMubWFwKChyYXdQYXlsb2FkKSA9PiB7XG4gICAgICAgICAgICByZXR1cm4gQ3JlYXRlTWF4UGF5bG9hZEZyb21BbnlPYmplY3QocmF3UGF5bG9hZCk7XG4gICAgICAgIH0pO1xuICAgICAgICBjb25zdCBwYXlsb2FkcyA9IFNvcnRQYXlsb2Fkc0J5UmVjZW50QW5kQ29udGVudFByaW9yaXR5KHVuc29ydGVkUGF5bG9hZHMsIHRoaXMubG9jYWxMb2FkUHJpb3J0eSk7XG4gICAgICAgIC8qKiBEZWNyeXB0IGFuZCBtYXAgaXRlbXMga2V5cyBmaXJzdCAqL1xuICAgICAgICBjb25zdCBpdGVtc0tleXNQYXlsb2FkcyA9IHBheWxvYWRzLmZpbHRlcigocGF5bG9hZCkgPT4ge1xuICAgICAgICAgICAgcmV0dXJuIHBheWxvYWQuY29udGVudF90eXBlID09PSBDb250ZW50VHlwZS5JdGVtc0tleTtcbiAgICAgICAgfSk7XG4gICAgICAgIHN1YnRyYWN0RnJvbUFycmF5KHBheWxvYWRzLCBpdGVtc0tleXNQYXlsb2Fkcyk7XG4gICAgICAgIGNvbnN0IGRlY3J5cHRlZEl0ZW1zS2V5cyA9IGF3YWl0IHRoaXMucHJvdG9jb2xTZXJ2aWNlXG4gICAgICAgICAgICAucGF5bG9hZHNCeURlY3J5cHRpbmdQYXlsb2FkcyhpdGVtc0tleXNQYXlsb2Fkcyk7XG4gICAgICAgIGF3YWl0IHRoaXMubW9kZWxNYW5hZ2VyLmVtaXRQYXlsb2FkcyhkZWNyeXB0ZWRJdGVtc0tleXMsIFBheWxvYWRTb3VyY2UuTG9jYWxSZXRyaWV2ZWQpO1xuICAgICAgICAvKiogTWFwIGluIGJhdGNoZXMgdG8gZ2l2ZSBpbnRlcmZhY2UgYSBjaGFuY2UgdG8gdXBkYXRlICovXG4gICAgICAgIGNvbnN0IHBheWxvYWRDb3VudCA9IHBheWxvYWRzLmxlbmd0aDtcbiAgICAgICAgY29uc3QgYmF0Y2hTaXplID0gREVGQVVMVF9EQVRBQkFTRV9MT0FEX0JBVENIX1NJWkU7XG4gICAgICAgIGNvbnN0IG51bUJhdGNoZXMgPSBNYXRoLmNlaWwocGF5bG9hZENvdW50IC8gYmF0Y2hTaXplKTtcbiAgICAgICAgZm9yIChsZXQgYmF0Y2hJbmRleCA9IDA7IGJhdGNoSW5kZXggPCBudW1CYXRjaGVzOyBiYXRjaEluZGV4KyspIHtcbiAgICAgICAgICAgIGNvbnN0IGN1cnJlbnRQb3NpdGlvbiA9IGJhdGNoSW5kZXggKiBiYXRjaFNpemU7XG4gICAgICAgICAgICBjb25zdCBiYXRjaCA9IHBheWxvYWRzLnNsaWNlKGN1cnJlbnRQb3NpdGlvbiwgY3VycmVudFBvc2l0aW9uICsgYmF0Y2hTaXplKTtcbiAgICAgICAgICAgIGNvbnN0IGRlY3J5cHRlZCA9IGF3YWl0IHRoaXMucHJvdG9jb2xTZXJ2aWNlXG4gICAgICAgICAgICAgICAgLnBheWxvYWRzQnlEZWNyeXB0aW5nUGF5bG9hZHMoYmF0Y2gpO1xuICAgICAgICAgICAgYXdhaXQgdGhpcy5tb2RlbE1hbmFnZXIuZW1pdFBheWxvYWRzKGRlY3J5cHRlZCwgUGF5bG9hZFNvdXJjZS5Mb2NhbFJldHJpZXZlZCk7XG4gICAgICAgICAgICB0aGlzLm5vdGlmeUV2ZW50KFN5bmNFdmVudC5Mb2NhbERhdGFJbmNyZW1lbnRhbExvYWQpO1xuICAgICAgICAgICAgdGhpcy5vcFN0YXR1cy5zZXREYXRhYmFzZUxvYWRTdGF0dXMoY3VycmVudFBvc2l0aW9uLCBwYXlsb2FkQ291bnQsIGZhbHNlKTtcbiAgICAgICAgfVxuICAgICAgICB0aGlzLmRhdGFiYXNlTG9hZGVkID0gdHJ1ZTtcbiAgICAgICAgdGhpcy5vcFN0YXR1cy5zZXREYXRhYmFzZUxvYWRTdGF0dXMoMCwgMCwgdHJ1ZSk7XG4gICAgfVxuICAgIGFzeW5jIHNldExhc3RTeW5jVG9rZW4odG9rZW4pIHtcbiAgICAgICAgdGhpcy5zeW5jVG9rZW4gPSB0b2tlbjtcbiAgICAgICAgcmV0dXJuIHRoaXMuc3RvcmFnZVNlcnZpY2Uuc2V0VmFsdWUoU3RvcmFnZUtleS5MYXN0U3luY1Rva2VuLCB0b2tlbik7XG4gICAgfVxuICAgIGFzeW5jIHNldFBhZ2luYXRpb25Ub2tlbih0b2tlbikge1xuICAgICAgICB0aGlzLmN1cnNvclRva2VuID0gdG9rZW47XG4gICAgICAgIGlmICh0b2tlbikge1xuICAgICAgICAgICAgcmV0dXJuIHRoaXMuc3RvcmFnZVNlcnZpY2Uuc2V0VmFsdWUoU3RvcmFnZUtleS5QYWdpbmF0aW9uVG9rZW4sIHRva2VuKTtcbiAgICAgICAgfVxuICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgIHJldHVybiB0aGlzLnN0b3JhZ2VTZXJ2aWNlLnJlbW92ZVZhbHVlKFN0b3JhZ2VLZXkuUGFnaW5hdGlvblRva2VuKTtcbiAgICAgICAgfVxuICAgIH1cbiAgICBhc3luYyBnZXRMYXN0U3luY1Rva2VuKCkge1xuICAgICAgICBpZiAoIXRoaXMuc3luY1Rva2VuKSB7XG4gICAgICAgICAgICB0aGlzLnN5bmNUb2tlbiA9IGF3YWl0IHRoaXMuc3RvcmFnZVNlcnZpY2UuZ2V0VmFsdWUoU3RvcmFnZUtleS5MYXN0U3luY1Rva2VuKTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gdGhpcy5zeW5jVG9rZW47XG4gICAgfVxuICAgIGFzeW5jIGdldFBhZ2luYXRpb25Ub2tlbigpIHtcbiAgICAgICAgaWYgKCF0aGlzLmN1cnNvclRva2VuKSB7XG4gICAgICAgICAgICB0aGlzLmN1cnNvclRva2VuID0gYXdhaXQgdGhpcy5zdG9yYWdlU2VydmljZS5nZXRWYWx1ZShTdG9yYWdlS2V5LlBhZ2luYXRpb25Ub2tlbik7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHRoaXMuY3Vyc29yVG9rZW47XG4gICAgfVxuICAgIGFzeW5jIGNsZWFyU3luY1Bvc2l0aW9uVG9rZW5zKCkge1xuICAgICAgICB0aGlzLnN5bmNUb2tlbiA9IHVuZGVmaW5lZDtcbiAgICAgICAgdGhpcy5jdXJzb3JUb2tlbiA9IHVuZGVmaW5lZDtcbiAgICAgICAgYXdhaXQgdGhpcy5zdG9yYWdlU2VydmljZS5yZW1vdmVWYWx1ZShTdG9yYWdlS2V5Lkxhc3RTeW5jVG9rZW4pO1xuICAgICAgICBhd2FpdCB0aGlzLnN0b3JhZ2VTZXJ2aWNlLnJlbW92ZVZhbHVlKFN0b3JhZ2VLZXkuUGFnaW5hdGlvblRva2VuKTtcbiAgICB9XG4gICAgYXN5bmMgaXRlbXNOZWVkaW5nU3luYygpIHtcbiAgICAgICAgY29uc3QgaXRlbXMgPSB0aGlzLml0ZW1NYW5hZ2VyLmdldERpcnR5SXRlbXMoKTtcbiAgICAgICAgcmV0dXJuIGl0ZW1zO1xuICAgIH1cbiAgICBhc3luYyBhbHRlcm5hdGVVdWlkRm9ySXRlbSh1dWlkKSB7XG4gICAgICAgIGNvbnN0IGl0ZW0gPSB0aGlzLml0ZW1NYW5hZ2VyLmZpbmRJdGVtKHV1aWQpO1xuICAgICAgICBjb25zdCBwYXlsb2FkID0gQ3JlYXRlTWF4UGF5bG9hZEZyb21BbnlPYmplY3QoaXRlbSk7XG4gICAgICAgIGNvbnN0IHJlc3VsdHMgPSBhd2FpdCBQYXlsb2Fkc0J5QWx0ZXJuYXRpbmdVdWlkKHBheWxvYWQsIHRoaXMubW9kZWxNYW5hZ2VyLmdldE1hc3RlckNvbGxlY3Rpb24oKSk7XG4gICAgICAgIGF3YWl0IHRoaXMubW9kZWxNYW5hZ2VyLmVtaXRQYXlsb2FkcyhyZXN1bHRzLCBQYXlsb2FkU291cmNlLkxvY2FsQ2hhbmdlZCk7XG4gICAgICAgIGF3YWl0IHRoaXMucGVyc2lzdFBheWxvYWRzKHJlc3VsdHMpO1xuICAgICAgICByZXR1cm4gdGhpcy5pdGVtTWFuYWdlci5maW5kSXRlbShyZXN1bHRzWzBdLnV1aWQpO1xuICAgIH1cbiAgICAvKipcbiAgICAgKiBNYXJrIGFsbCBpdGVtcyBhcyBkaXJ0eSBhbmQgbmVlZGluZyBzeW5jLCB0aGVuIHBlcnNpc3QgdG8gc3RvcmFnZS5cbiAgICAgKiBAcGFyYW0gYWx0ZXJuYXRlVXVpZHNcbiAgICAgKiBJbiB0aGUgY2FzZSBvZiBzaWduaW5nIGluIGFuZCBtZXJnaW5nIGxvY2FsIGRhdGEsIHdlIGFsdGVybmF0ZSBVVUlEc1xuICAgICAqIHRvIGF2b2lkIG92ZXJ3cml0aW5nIGRhdGEgYSB1c2VyIG1heSByZXRyaWV2ZSB0aGF0IGhhcyB0aGUgc2FtZSBVVUlELlxuICAgICAqIEFsdGVybmF0aW5nIGhlcmUgZm9yY2VzIHVzIHRvIHRvIGNyZWF0ZSBkdXBsaWNhdGVzIG9mIHRoZSBpdGVtcyBpbnN0ZWFkLlxuICAgICAqL1xuICAgIGFzeW5jIG1hcmtBbGxJdGVtc0FzTmVlZGluZ1N5bmMoYWx0ZXJuYXRlVXVpZHMpIHtcbiAgICAgICAgdGhpcy5sb2coJ01hcmtpbmcgYWxsIGl0ZW1zIGFzIG5lZWRpbmcgc3luYycpO1xuICAgICAgICBpZiAoYWx0ZXJuYXRlVXVpZHMpIHtcbiAgICAgICAgICAgIC8qKiBNYWtlIGEgY29weSBvZiB0aGUgYXJyYXksIGFzIGFsdGVybmF0aW5nIHV1aWQgd2lsbCBhZmZlY3QgYXJyYXkgKi9cbiAgICAgICAgICAgIGNvbnN0IGl0ZW1zID0gdGhpcy5pdGVtTWFuYWdlci5pdGVtcy5maWx0ZXIoKGl0ZW0pID0+IHtcbiAgICAgICAgICAgICAgICByZXR1cm4gIWl0ZW0uZXJyb3JEZWNyeXB0aW5nO1xuICAgICAgICAgICAgfSkuc2xpY2UoKTtcbiAgICAgICAgICAgIGZvciAoY29uc3QgaXRlbSBvZiBpdGVtcykge1xuICAgICAgICAgICAgICAgIGF3YWl0IHRoaXMuYWx0ZXJuYXRlVXVpZEZvckl0ZW0oaXRlbS51dWlkKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICBjb25zdCBpdGVtcyA9IHRoaXMuaXRlbU1hbmFnZXIuaXRlbXM7XG4gICAgICAgIGNvbnN0IHBheWxvYWRzID0gaXRlbXMubWFwKChpdGVtKSA9PiB7XG4gICAgICAgICAgICByZXR1cm4gQ3JlYXRlTWF4UGF5bG9hZEZyb21BbnlPYmplY3QoaXRlbSwge1xuICAgICAgICAgICAgICAgIGRpcnR5OiB0cnVlLFxuICAgICAgICAgICAgICAgIGRpcnRpZWREYXRlOiBuZXcgRGF0ZSgpXG4gICAgICAgICAgICB9KTtcbiAgICAgICAgfSk7XG4gICAgICAgIGF3YWl0IHRoaXMubW9kZWxNYW5hZ2VyLmVtaXRQYXlsb2FkcyhwYXlsb2FkcywgUGF5bG9hZFNvdXJjZS5Mb2NhbENoYW5nZWQpO1xuICAgICAgICBhd2FpdCB0aGlzLnBlcnNpc3RQYXlsb2FkcyhwYXlsb2Fkcyk7XG4gICAgfVxuICAgIC8qKlxuICAgICAqIFJldHVybiB0aGUgcGF5bG9hZHMgdGhhdCBuZWVkIGxvY2FsIHBlcnNpc3RlbmNlLCBiZWZvcmUgYmVnaW5uaW5nIGEgc3luYy5cbiAgICAgKiBUaGlzIHdheSwgaWYgdGhlIGFwcGxpY2F0aW9uIGlzIGNsb3NlZCBiZWZvcmUgYSBzeW5jIHJlcXVlc3QgY29tcGxldGVzLFxuICAgICAqIHBlbmRpbmcgZGF0YSB3aWxsIGJlIHNhdmVkIHRvIGRpc2ssIGFuZCBzeW5jZWQgdGhlIG5leHQgdGltZSB0aGUgYXBwIG9wZW5zLlxuICAgICAqL1xuICAgIGFzeW5jIHBvcFBheWxvYWRzTmVlZGluZ1ByZVN5bmNTYXZlKGZyb20pIHtcbiAgICAgICAgY29uc3QgbGFzdFByZVN5bmNTYXZlID0gdGhpcy5zdGF0ZS5sYXN0UHJlU3luY1NhdmU7XG4gICAgICAgIGlmICghbGFzdFByZVN5bmNTYXZlKSB7XG4gICAgICAgICAgICByZXR1cm4gZnJvbTtcbiAgICAgICAgfVxuICAgICAgICAvKiogZGlydGllZERhdGUgY2FuIGJlIG51bGwgaWYgdGhlIHBheWxvYWQgd2FzIGNyZWF0ZWQgYXMgZGlydHkgKi9cbiAgICAgICAgY29uc3QgcGF5bG9hZHMgPSBmcm9tLmZpbHRlcigoY2FuZGlkYXRlKSA9PiB7XG4gICAgICAgICAgICByZXR1cm4gIWNhbmRpZGF0ZS5kaXJ0aWVkRGF0ZSB8fCBjYW5kaWRhdGUuZGlydGllZERhdGUgPiBsYXN0UHJlU3luY1NhdmU7XG4gICAgICAgIH0pO1xuICAgICAgICB0aGlzLnN0YXRlLmxhc3RQcmVTeW5jU2F2ZSA9IG5ldyBEYXRlKCk7XG4gICAgICAgIHJldHVybiBwYXlsb2FkcztcbiAgICB9XG4gICAgcXVldWVTdHJhdGVneVJlc29sdmVPbk5leHQoKSB7XG4gICAgICAgIHJldHVybiBuZXcgUHJvbWlzZSgocmVzb2x2ZSwgcmVqZWN0KSA9PiB7XG4gICAgICAgICAgICB0aGlzLnJlc29sdmVRdWV1ZS5wdXNoKHsgcmVzb2x2ZSwgcmVqZWN0IH0pO1xuICAgICAgICB9KTtcbiAgICB9XG4gICAgcXVldWVTdHJhdGVneUZvcmNlU3Bhd25OZXcob3B0aW9ucykge1xuICAgICAgICByZXR1cm4gbmV3IFByb21pc2UoKHJlc29sdmUsIHJlamVjdCkgPT4ge1xuICAgICAgICAgICAgdGhpcy5zcGF3blF1ZXVlLnB1c2goeyByZXNvbHZlLCByZWplY3QsIG9wdGlvbnMgfSk7XG4gICAgICAgIH0pO1xuICAgIH1cbiAgICAvKipcbiAgICAgKiBGb3IgdGltaW5nIHN0cmF0ZWd5IFN5bmNRdWV1ZVN0cmF0ZWd5LkZvcmNlU3Bhd25OZXcsIHdlIHdpbGwgZXhlY3V0ZSBhIHdob2xlIHN5bmMgcmVxdWVzdFxuICAgICAqIGFuZCBwb3AgaXQgZnJvbSB0aGUgcXVldWUuXG4gICAgICovXG4gICAgcG9wU3Bhd25RdWV1ZSgpIHtcbiAgICAgICAgaWYgKHRoaXMuc3Bhd25RdWV1ZS5sZW5ndGggPT09IDApIHtcbiAgICAgICAgICAgIHJldHVybiBudWxsO1xuICAgICAgICB9XG4gICAgICAgIGNvbnN0IHByb21pc2UgPSB0aGlzLnNwYXduUXVldWVbMF07XG4gICAgICAgIHJlbW92ZUZyb21JbmRleCh0aGlzLnNwYXduUXVldWUsIDApO1xuICAgICAgICB0aGlzLmxvZygnU3luY2luZyBhZ2FpbiBmcm9tIHNwYXduIHF1ZXVlJyk7XG4gICAgICAgIHJldHVybiB0aGlzLnN5bmMoe1xuICAgICAgICAgICAgcXVldWVTdHJhdGVneTogU3luY1F1ZXVlU3RyYXRlZ3kuRm9yY2VTcGF3bk5ldyxcbiAgICAgICAgICAgIHNvdXJjZTogU3luY1NvdXJjZXMuU3Bhd25RdWV1ZSxcbiAgICAgICAgICAgIC4uLnByb21pc2Uub3B0aW9uc1xuICAgICAgICB9KS50aGVuKCgpID0+IHtcbiAgICAgICAgICAgIHByb21pc2UucmVzb2x2ZSgpO1xuICAgICAgICB9KS5jYXRjaCgoKSA9PiB7XG4gICAgICAgICAgICBwcm9taXNlLnJlamVjdCgpO1xuICAgICAgICB9KTtcbiAgICB9XG4gICAgLyoqXG4gICAgICogQ2VydGFpbiBjb250ZW50IHR5cGVzIHNob3VsZCBub3QgYmUgZW5jcnlwdGVkIHdoZW4gc2VuZGluZyB0byBzZXJ2ZXIsXG4gICAgICogc3VjaCBhcyBzZXJ2ZXIgZXh0ZW5zaW9uc1xuICAgICAqL1xuICAgIGFzeW5jIHBheWxvYWRzQnlQcmVwYXJpbmdGb3JTZXJ2ZXIocGF5bG9hZHMpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMucHJvdG9jb2xTZXJ2aWNlLnBheWxvYWRzQnlFbmNyeXB0aW5nUGF5bG9hZHMocGF5bG9hZHMsIChwYXlsb2FkKSA9PiB7XG4gICAgICAgICAgICByZXR1cm4gKHRoaXMubm9uRW5jcnlwdGVkVHlwZXMuaW5jbHVkZXMocGF5bG9hZC5jb250ZW50X3R5cGUpXG4gICAgICAgICAgICAgICAgPyBFbmNyeXB0aW9uSW50ZW50LlN5bmNEZWNyeXB0ZWRcbiAgICAgICAgICAgICAgICA6IEVuY3J5cHRpb25JbnRlbnQuU3luYyk7XG4gICAgICAgIH0pO1xuICAgIH1cbiAgICBhc3luYyBzeW5jKG9wdGlvbnMgPSB7fSkge1xuICAgICAgICAvKiogSGFyZCBsb2NraW5nLCBkb2VzIG5vdCBhcHBseSB0byBsb2NraW5nIG1vZGVzIGJlbG93ICovXG4gICAgICAgIGlmICh0aGlzLmxvY2tlZCkge1xuICAgICAgICAgICAgdGhpcy5sb2coJ1N5bmMgTG9ja2VkJyk7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cbiAgICAgICAgLyoqXG4gICAgICAgICAqIEFsbG93cyB1cyB0byBsb2NrIHRoaXMgZnVuY3Rpb24gZnJvbSB0cmlnZ2VyaW5nIGR1cGxpY2F0ZSBuZXR3b3JrIHJlcXVlc3RzLlxuICAgICAgICAgKiBUaGVyZSBhcmUgdHdvIHR5cGVzIG9mIGxvY2tpbmcgY2hlY2tzOlxuICAgICAgICAgKiAxLiBzeW5jTG9ja2VkKCk6IElmIGEgY2FsbCB0byBzeW5jKCkgY2FsbCBoYXMgYmVndW4gcHJlcGFyaW5nIHRvIGJlIHNlbnQgdG8gdGhlIHNlcnZlci5cbiAgICAgICAgICogICAgICAgICAgICAgICAgICBidXQgbm90IHlldCBjb21wbGV0ZWQgYWxsIHRoZSBjb2RlIGJlbG93IGJlZm9yZSByZWFjaGluZyB0aGF0IHBvaW50LlxuICAgICAgICAgKiAgICAgICAgICAgICAgICAgIChiZWZvcmUgcmVhY2hpbmcgb3BTdGF0dXMuc2V0RGlkQmVnaW4pLlxuICAgICAgICAgKiAyLiBzeW5jT3BJblByb2dyZXNzOiBJZiBhIHN5bmMoKSBjYWxsIGlzIGluIGZsaWdodCB0byB0aGUgc2VydmVyLlxuICAgICAgICAgKi9cbiAgICAgICAgY29uc3Qgc3luY0xvY2tlZCA9ICgpID0+IHtcbiAgICAgICAgICAgIHJldHVybiB0aGlzLnN5bmNMb2NrO1xuICAgICAgICB9O1xuICAgICAgICBjb25zdCBjYXB0dXJlTG9jayA9ICgpID0+IHtcbiAgICAgICAgICAgIHRoaXMuc3luY0xvY2sgPSB0cnVlO1xuICAgICAgICB9O1xuICAgICAgICBjb25zdCByZWxlYXNlTG9jayA9ICgpID0+IHtcbiAgICAgICAgICAgIHRoaXMuc3luY0xvY2sgPSBmYWxzZTtcbiAgICAgICAgfTtcbiAgICAgICAgY29uc3Qgc3luY0luUHJvZ3Jlc3MgPSB0aGlzLm9wU3RhdHVzLnN5bmNJblByb2dyZXNzO1xuICAgICAgICBjb25zdCBkYXRhYmFzZUxvYWRlZCA9IHRoaXMuZGF0YWJhc2VMb2FkZWQ7XG4gICAgICAgIGNvbnN0IGNhbkV4ZWN1dGVTeW5jID0gIXN5bmNMb2NrZWQoKTtcbiAgICAgICAgaWYgKGNhbkV4ZWN1dGVTeW5jICYmIGRhdGFiYXNlTG9hZGVkICYmICFzeW5jSW5Qcm9ncmVzcykge1xuICAgICAgICAgICAgY2FwdHVyZUxvY2soKTtcbiAgICAgICAgfVxuICAgICAgICBpZiAoIW9wdGlvbnMuc291cmNlKSB7XG4gICAgICAgICAgICBvcHRpb25zLnNvdXJjZSA9IFN5bmNTb3VyY2VzLkV4dGVybmFsO1xuICAgICAgICB9XG4gICAgICAgIGNvbnN0IGl0ZW1zID0gYXdhaXQgdGhpcy5pdGVtc05lZWRpbmdTeW5jKCk7XG4gICAgICAgIC8qKiBJdGVtcyB0aGF0IGhhdmUgbmV2ZXIgYmVlbiBzeW5jZWQgYW5kIG1hcmtlZCBhcyBkZWxldGVkIHNob3VsZCBub3QgYmVcbiAgICAgICAgICogdXBsb2FkZWQgdG8gc2VydmVyLCBhbmQgaW5zdGVhZCBkZWxldGVkIGRpcmVjdGx5IGFmdGVyIHN5bmMgY29tcGxldGlvbi4gKi9cbiAgICAgICAgY29uc3QgbmV2ZXJTeW5jZWREZWxldGVkID0gaXRlbXMuZmlsdGVyKChpdGVtKSA9PiB7XG4gICAgICAgICAgICByZXR1cm4gaXRlbS5uZXZlclN5bmNlZCAmJiBpdGVtLmRlbGV0ZWQ7XG4gICAgICAgIH0pO1xuICAgICAgICBzdWJ0cmFjdEZyb21BcnJheShpdGVtcywgbmV2ZXJTeW5jZWREZWxldGVkKTtcbiAgICAgICAgY29uc3QgZGVjcnlwdGVkUGF5bG9hZHMgPSBpdGVtcy5tYXAoKGl0ZW0pID0+IHtcbiAgICAgICAgICAgIHJldHVybiBpdGVtLnBheWxvYWRSZXByZXNlbnRhdGlvbigpO1xuICAgICAgICB9KTtcbiAgICAgICAgY29uc3QgcGF5bG9hZHNOZWVkaW5nU2F2ZSA9IGF3YWl0IHRoaXMucG9wUGF5bG9hZHNOZWVkaW5nUHJlU3luY1NhdmUoZGVjcnlwdGVkUGF5bG9hZHMpO1xuICAgICAgICBhd2FpdCB0aGlzLnBlcnNpc3RQYXlsb2FkcyhwYXlsb2Fkc05lZWRpbmdTYXZlKTtcbiAgICAgICAgLyoqIFRoZSBpbiB0aW1lIHJlc29sdmUgcXVldWUgcmVmZXJzIHRvIGFueSBzeW5jIHJlcXVlc3RzIHRoYXQgd2VyZSBtYWRlIHdoaWxlIHdlIHN0aWxsXG4gICAgICAgICAqIGhhdmUgbm90IHNlbnQgb3V0IHRoZSBjdXJyZW50IHJlcXVlc3QuIFNvLCBhbnl0aGluZyBpbiB0aGUgaW4gdGltZSByZXNvbHZlIHF1ZXVlXG4gICAgICAgICAqIHdpbGwgaGF2ZSBtYWRlIGl0IGluIHRpbWUgdG8gcGlnZ3liYWNrIG9uIHRoZSBjdXJyZW50IHJlcXVlc3QuIEFueXRoaW5nIHRoYXQgY29tZXNcbiAgICAgICAgICogX2FmdGVyXyBpbi10aW1lIHdpbGwgc2NoZWR1bGUgYSBuZXcgc3luYyByZXF1ZXN0LiAqL1xuICAgICAgICBjb25zdCBpblRpbWVSZXNvbHZlUXVldWUgPSB0aGlzLnJlc29sdmVRdWV1ZS5zbGljZSgpO1xuICAgICAgICBjb25zdCB1c2VTdHJhdGVneSA9ICghaXNOdWxsT3JVbmRlZmluZWQob3B0aW9ucy5xdWV1ZVN0cmF0ZWd5KVxuICAgICAgICAgICAgPyBvcHRpb25zLnF1ZXVlU3RyYXRlZ3lcbiAgICAgICAgICAgIDogU3luY1F1ZXVlU3RyYXRlZ3kuUmVzb2x2ZU9uTmV4dCk7XG4gICAgICAgIGlmIChzeW5jSW5Qcm9ncmVzcyB8fCAhZGF0YWJhc2VMb2FkZWQgfHwgIWNhbkV4ZWN1dGVTeW5jKSB7XG4gICAgICAgICAgICB0aGlzLmxvZyghY2FuRXhlY3V0ZVN5bmMgPyAnQW5vdGhlciBmdW5jdGlvbiBjYWxsIGhhcyBiZWd1biBwcmVwYXJpbmcgZm9yIHN5bmMuJyA6XG4gICAgICAgICAgICAgICAgc3luY0luUHJvZ3Jlc3MgP1xuICAgICAgICAgICAgICAgICAgICAnQXR0ZW1wdGluZyB0byBzeW5jIHdoaWxlIGV4aXN0aW5nIHN5bmMgaW4gcHJvZ3Jlc3MuJyA6XG4gICAgICAgICAgICAgICAgICAgICdBdHRlbXB0aW5nIHRvIHN5bmMgYmVmb3JlIGxvY2FsIGRhdGFiYXNlIGhhcyBsb2FkZWQuJyk7XG4gICAgICAgICAgICBpZiAodXNlU3RyYXRlZ3kgPT09IFN5bmNRdWV1ZVN0cmF0ZWd5LlJlc29sdmVPbk5leHQpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gdGhpcy5xdWV1ZVN0cmF0ZWd5UmVzb2x2ZU9uTmV4dCgpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgZWxzZSBpZiAodXNlU3RyYXRlZ3kgPT09IFN5bmNRdWV1ZVN0cmF0ZWd5LkZvcmNlU3Bhd25OZXcpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gdGhpcy5xdWV1ZVN0cmF0ZWd5Rm9yY2VTcGF3bk5ldyh7XG4gICAgICAgICAgICAgICAgICAgIG1vZGU6IG9wdGlvbnMubW9kZSxcbiAgICAgICAgICAgICAgICAgICAgY2hlY2tJbnRlZ3JpdHk6IG9wdGlvbnMuY2hlY2tJbnRlZ3JpdHksXG4gICAgICAgICAgICAgICAgICAgIHNvdXJjZTogb3B0aW9ucy5zb3VyY2VcbiAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgICAgIHRocm93IGBVbmhhbmRsZWQgdGltaW5nIHN0cmF0ZWd5ICR7dXNlU3RyYXRlZ3l9YDtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICAvKiogTG9jayBzeW5jaW5nIGltbWVkaWF0ZWx5IGFmdGVyIGNoZWNraW5nIGluIHByb2dyZXNzIGFib3ZlICovXG4gICAgICAgIHRoaXMub3BTdGF0dXMuc2V0RGlkQmVnaW4oKTtcbiAgICAgICAgdGhpcy5ub3RpZnlFdmVudChTeW5jRXZlbnQuU3luY1dpbGxCZWdpbik7XG4gICAgICAgIC8qIFN1YnRyYWN0IGZyb20gYXJyYXkgYXMgc29vbiBhcyB3ZSdyZSBzdXJlIHRoZXknbGwgYmUgY2FsbGVkLlxuICAgICAgICByZXNvbHZlcyBhcmUgdHJpZ2dlcmVkIGF0IHRoZSBlbmQgb2YgdGhpcyBmdW5jdGlvbiBjYWxsICovXG4gICAgICAgIHN1YnRyYWN0RnJvbUFycmF5KHRoaXMucmVzb2x2ZVF1ZXVlLCBpblRpbWVSZXNvbHZlUXVldWUpO1xuICAgICAgICAvKiogbGFzdFN5bmNCZWdhbiBtdXN0IGJlIHNldCAqYWZ0ZXIqIGFueSBwb2ludCB3ZSBtYXkgaGF2ZSByZXR1cm5lZCBhYm92ZS5cbiAgICAgICAgICogU2V0dGluZyB0aGlzIHZhbHVlIG1lYW5zIHRoZSBpdGVtIHdhcyAxMDAlIHNlbnQgdG8gdGhlIHNlcnZlci4gKi9cbiAgICAgICAgY29uc3QgYmVnaW5EYXRlID0gbmV3IERhdGUoKTtcbiAgICAgICAgaWYgKGl0ZW1zLmxlbmd0aCA+IDApIHtcbiAgICAgICAgICAgIGF3YWl0IHRoaXMuaXRlbU1hbmFnZXIuY2hhbmdlSXRlbXMoVXVpZHMoaXRlbXMpLCAobXV0YXRvcikgPT4ge1xuICAgICAgICAgICAgICAgIG11dGF0b3IubGFzdFN5bmNCZWdhbiA9IGJlZ2luRGF0ZTtcbiAgICAgICAgICAgIH0sIE11dGF0aW9uVHlwZS5Ob25EaXJ0eWluZywgUGF5bG9hZFNvdXJjZS5QcmVTeW5jU2F2ZSk7XG4gICAgICAgIH1cbiAgICAgICAgY29uc3Qgb25saW5lID0gdGhpcy5zZXNzaW9uTWFuYWdlci5vbmxpbmUoKTtcbiAgICAgICAgY29uc3QgdXNlTW9kZSA9ICgodHJ5TW9kZSkgPT4ge1xuICAgICAgICAgICAgaWYgKG9ubGluZSAmJiAhdGhpcy5jb21wbGV0ZWRPbmxpbmVEb3dubG9hZEZpcnN0U3luYykge1xuICAgICAgICAgICAgICAgIHJldHVybiBTeW5jTW9kZXMuRG93bmxvYWRGaXJzdDtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGVsc2UgaWYgKCFpc051bGxPclVuZGVmaW5lZCh0cnlNb2RlKSkge1xuICAgICAgICAgICAgICAgIHJldHVybiB0cnlNb2RlO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIFN5bmNNb2Rlcy5EZWZhdWx0O1xuICAgICAgICAgICAgfVxuICAgICAgICB9KShvcHRpb25zLm1vZGUpO1xuICAgICAgICBsZXQgdXBsb2FkUGF5bG9hZHMgPSBbXTtcbiAgICAgICAgaWYgKHVzZU1vZGUgPT09IFN5bmNNb2Rlcy5EZWZhdWx0KSB7XG4gICAgICAgICAgICBpZiAob25saW5lICYmICF0aGlzLmNvbXBsZXRlZE9ubGluZURvd25sb2FkRmlyc3RTeW5jKSB7XG4gICAgICAgICAgICAgICAgdGhyb3cgRXJyb3IoJ0F0dGVtcHRpbmcgdG8gZGVmYXVsdCBtb2RlIHN5bmMgd2l0aG91dCBoYXZpbmcgY29tcGxldGVkIGluaXRpYWwuJyk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBpZiAob25saW5lKSB7XG4gICAgICAgICAgICAgICAgdXBsb2FkUGF5bG9hZHMgPSBhd2FpdCB0aGlzLnBheWxvYWRzQnlQcmVwYXJpbmdGb3JTZXJ2ZXIoZGVjcnlwdGVkUGF5bG9hZHMpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICAgICAgdXBsb2FkUGF5bG9hZHMgPSBkZWNyeXB0ZWRQYXlsb2FkcztcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICBlbHNlIGlmICh1c2VNb2RlID09PSBTeW5jTW9kZXMuRG93bmxvYWRGaXJzdCkge1xuICAgICAgICAgICAgdXBsb2FkUGF5bG9hZHMgPSBbXTtcbiAgICAgICAgfVxuICAgICAgICBsZXQgb3BlcmF0aW9uO1xuICAgICAgICBpZiAob25saW5lKSB7XG4gICAgICAgICAgICBvcGVyYXRpb24gPSBhd2FpdCB0aGlzLnN5bmNPbmxpbmVPcGVyYXRpb24odXBsb2FkUGF5bG9hZHMsIG9wdGlvbnMuY2hlY2tJbnRlZ3JpdHksIG9wdGlvbnMuc291cmNlLCB1c2VNb2RlKTtcbiAgICAgICAgfVxuICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgIG9wZXJhdGlvbiA9IGF3YWl0IHRoaXMuc3luY09mZmxpbmVPcGVyYXRpb24odXBsb2FkUGF5bG9hZHMsIG9wdGlvbnMuc291cmNlLCB1c2VNb2RlKTtcbiAgICAgICAgfVxuICAgICAgICBhd2FpdCBvcGVyYXRpb24ucnVuKCk7XG4gICAgICAgIHRoaXMub3BTdGF0dXMuc2V0RGlkRW5kKCk7XG4gICAgICAgIHJlbGVhc2VMb2NrKCk7XG4gICAgICAgIGlmICh0aGlzLm9wU3RhdHVzLmhhc0Vycm9yKCkpIHtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuICAgICAgICB0aGlzLm9wU3RhdHVzLnJlc2V0KCk7XG4gICAgICAgIHRoaXMuc3RhdGUubGFzdFN5bmNEYXRlID0gbmV3IERhdGUoKTtcbiAgICAgICAgaWYgKG9wZXJhdGlvbiBpbnN0YW5jZW9mIEFjY291bnRTeW5jT3BlcmF0aW9uICYmXG4gICAgICAgICAgICBvcGVyYXRpb24ubnVtYmVyT2ZJdGVtc0ludm9sdmVkID49IHRoaXMubWFqb3JDaGFuZ2VUaHJlc2hvbGQpIHtcbiAgICAgICAgICAgIHRoaXMubm90aWZ5RXZlbnQoU3luY0V2ZW50Lk1ham9yRGF0YUNoYW5nZSk7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKG5ldmVyU3luY2VkRGVsZXRlZC5sZW5ndGggPiAwKSB7XG4gICAgICAgICAgICBhd2FpdCB0aGlzLmhhbmRsZU5ldmVyU3luY2VkRGVsZXRlZChuZXZlclN5bmNlZERlbGV0ZWQpO1xuICAgICAgICB9XG4gICAgICAgIGlmICh1c2VNb2RlICE9PSBTeW5jTW9kZXMuRG93bmxvYWRGaXJzdCkge1xuICAgICAgICAgICAgYXdhaXQgdGhpcy5ub3RpZnlFdmVudChTeW5jRXZlbnQuRnVsbFN5bmNDb21wbGV0ZWQsIHsgc291cmNlOiBvcHRpb25zLnNvdXJjZSB9KTtcbiAgICAgICAgfVxuICAgICAgICBpZiAodXNlTW9kZSA9PT0gU3luY01vZGVzLkRvd25sb2FkRmlyc3QpIHtcbiAgICAgICAgICAgIGlmIChvbmxpbmUpIHtcbiAgICAgICAgICAgICAgICB0aGlzLmNvbXBsZXRlZE9ubGluZURvd25sb2FkRmlyc3RTeW5jID0gdHJ1ZTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGF3YWl0IHRoaXMubm90aWZ5RXZlbnQoU3luY0V2ZW50LkRvd25sb2FkRmlyc3RTeW5jQ29tcGxldGVkKTtcbiAgICAgICAgICAgIC8qKiBQZXJmb3JtIHJlZ3VsYXIgc3luYyBub3cgdGhhdCB3ZSd2ZSBmaW5pc2hlZCBkb3dubG9hZCBmaXJzdCBzeW5jICovXG4gICAgICAgICAgICBhd2FpdCB0aGlzLnN5bmMoe1xuICAgICAgICAgICAgICAgIHNvdXJjZTogU3luY1NvdXJjZXMuQWZ0ZXJEb3dubG9hZEZpcnN0LFxuICAgICAgICAgICAgICAgIGNoZWNrSW50ZWdyaXR5OiB0cnVlLFxuICAgICAgICAgICAgICAgIGF3YWl0QWxsOiBvcHRpb25zLmF3YWl0QWxsXG4gICAgICAgICAgICB9KTtcbiAgICAgICAgfVxuICAgICAgICBlbHNlIGlmICghdGhpcy5wb3BTcGF3blF1ZXVlKCkgJiYgdGhpcy5yZXNvbHZlUXVldWUubGVuZ3RoID4gMCkge1xuICAgICAgICAgICAgdGhpcy5sb2coJ1N5bmNpbmcgYWdhaW4gZnJvbSByZXNvbHZlIHF1ZXVlJyk7XG4gICAgICAgICAgICAvKiogTm8gbmVlZCB0byBhd2FpdC4gKi9cbiAgICAgICAgICAgIGNvbnN0IHByb21pc2UgPSB0aGlzLnN5bmMoe1xuICAgICAgICAgICAgICAgIHNvdXJjZTogU3luY1NvdXJjZXMuUmVzb2x2ZVF1ZXVlLFxuICAgICAgICAgICAgICAgIGNoZWNrSW50ZWdyaXR5OiBvcHRpb25zLmNoZWNrSW50ZWdyaXR5XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIGlmIChvcHRpb25zLmF3YWl0QWxsKSB7XG4gICAgICAgICAgICAgICAgYXdhaXQgcHJvbWlzZTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICBlbHNlIGlmICgoYXdhaXQgdGhpcy5pdGVtc05lZWRpbmdTeW5jKCkpLmxlbmd0aCA+IDApIHtcbiAgICAgICAgICAgIC8qKlxuICAgICAgICAgICAgICogQXMgcGFydCBvZiB0aGUganVzdCBjb25jbHVkZWQgc3luYyBvcGVyYXRpb24sIG1vcmUgaXRlbXMgbWF5IGhhdmVcbiAgICAgICAgICAgICAqIGJlZW4gZGlydGllZCAobGlrZSBjb25mbGljdHMpLCBhbmQgdGhlIGNhbGxlciBtYXkgd2FudCB0byBhd2FpdCB0aGVcbiAgICAgICAgICAgICAqIGZ1bGwgcmVzb2x1dGlvbiBvZiB0aGVzZSBpdGVtcy5cbiAgICAgICAgICAgICAqL1xuICAgICAgICAgICAgYXdhaXQgdGhpcy5zeW5jKHtcbiAgICAgICAgICAgICAgICBzb3VyY2U6IFN5bmNTb3VyY2VzLk1vcmVEaXJ0eUl0ZW1zLFxuICAgICAgICAgICAgICAgIGNoZWNrSW50ZWdyaXR5OiBvcHRpb25zLmNoZWNrSW50ZWdyaXR5LFxuICAgICAgICAgICAgICAgIGF3YWl0QWxsOiBvcHRpb25zLmF3YWl0QWxsXG4gICAgICAgICAgICB9KTtcbiAgICAgICAgfVxuICAgICAgICBlbHNlIGlmIChvcGVyYXRpb24gaW5zdGFuY2VvZiBBY2NvdW50U3luY09wZXJhdGlvbiAmJiBvcGVyYXRpb24uY2hlY2tJbnRlZ3JpdHkpIHtcbiAgICAgICAgICAgIGlmICh0aGlzLnN0YXRlLm5lZWRzU3luYyAmJiBvcGVyYXRpb24uZG9uZSkge1xuICAgICAgICAgICAgICAgIHRoaXMubG9nKCdTeW5jaW5nIGFnYWluIGZyb20gaW50ZWdyaXR5IGNoZWNrJyk7XG4gICAgICAgICAgICAgICAgY29uc3QgcHJvbWlzZSA9IHRoaXMuc3luYyh7XG4gICAgICAgICAgICAgICAgICAgIGNoZWNrSW50ZWdyaXR5OiB0cnVlLFxuICAgICAgICAgICAgICAgICAgICBxdWV1ZVN0cmF0ZWd5OiBTeW5jUXVldWVTdHJhdGVneS5Gb3JjZVNwYXduTmV3LFxuICAgICAgICAgICAgICAgICAgICBzb3VyY2U6IFN5bmNTb3VyY2VzLkludGVncml0eUNoZWNrLFxuICAgICAgICAgICAgICAgICAgICBhd2FpdEFsbDogb3B0aW9ucy5hd2FpdEFsbFxuICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICAgIGlmIChvcHRpb25zLmF3YWl0QWxsKSB7XG4gICAgICAgICAgICAgICAgICAgIGF3YWl0IHByb21pc2U7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgdGhpcy5zdGF0ZS5jbGVhckludGVncml0eUhhc2hlcygpO1xuICAgICAgICB9XG4gICAgICAgIC8qKlxuICAgICAgICAgKiBGb3IgdGltaW5nIHN0cmF0ZWd5IFN5bmNRdWV1ZVN0cmF0ZWd5LlJlc29sdmVPbk5leHQuXG4gICAgICAgICAqIEV4ZWN1dGUgYW55IGNhbGxiYWNrcyBwdWxsZWQgYmVmb3JlIHRoaXMgc3luYyByZXF1ZXN0IGJlZ2FuLlxuICAgICAgICAgKiBDYWxsaW5nIHJlc29sdmUgb24gdGhlIGNhbGxiYWNrcyBzaG91bGQgYmUgdGhlIGxhc3QgdGhpbmcgd2UgZG8gaW4gdGhpcyBmdW5jdGlvbixcbiAgICAgICAgICogdG8gc2ltdWxhdGUgY2FsbGluZyAuc3luYyBhcyBpZiBpdCB3ZW50IHRocm91Z2ggc3RyYWlnaHQgdG8gdGhlIGVuZCB3aXRob3V0IGhhdmluZ1xuICAgICAgICAgKiB0byBiZSBxdWV1ZWQuXG4gICAgICAgICAqL1xuICAgICAgICBmb3IgKGNvbnN0IGNhbGxiYWNrIG9mIGluVGltZVJlc29sdmVRdWV1ZSkge1xuICAgICAgICAgICAgY2FsbGJhY2sucmVzb2x2ZSgpO1xuICAgICAgICB9XG4gICAgfVxuICAgIGFzeW5jIHN5bmNPbmxpbmVPcGVyYXRpb24ocGF5bG9hZHMsIGNoZWNrSW50ZWdyaXR5LCBzb3VyY2UsIG1vZGUpIHtcbiAgICAgICAgdGhpcy5sb2coJ1N5bmNpbmcgb25saW5lIHVzZXInLCAnc291cmNlOicsIHNvdXJjZSwgXCJpbnRlZ3JpdHkgY2hlY2tcIiwgY2hlY2tJbnRlZ3JpdHksICdtb2RlOicsIG1vZGUsICdwYXlsb2FkczonLCBwYXlsb2Fkcyk7XG4gICAgICAgIGNvbnN0IG9wZXJhdGlvbiA9IG5ldyBBY2NvdW50U3luY09wZXJhdGlvbihwYXlsb2FkcywgYXN5bmMgKHR5cGUsIHJlc3BvbnNlKSA9PiB7XG4gICAgICAgICAgICBpZiAodHlwZSA9PT0gU3luY1NpZ25hbC5SZXNwb25zZSkge1xuICAgICAgICAgICAgICAgIGlmIChyZXNwb25zZS5oYXNFcnJvcikge1xuICAgICAgICAgICAgICAgICAgICBhd2FpdCB0aGlzLmhhbmRsZUVycm9yU2VydmVyUmVzcG9uc2UocmVzcG9uc2UpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgYXdhaXQgdGhpcy5oYW5kbGVTdWNjZXNzU2VydmVyUmVzcG9uc2Uob3BlcmF0aW9uLCByZXNwb25zZSk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICAgICAgZWxzZSBpZiAodHlwZSA9PT0gU3luY1NpZ25hbC5TdGF0dXNDaGFuZ2VkKSB7XG4gICAgICAgICAgICAgICAgYXdhaXQgdGhpcy5oYW5kbGVTdGF0dXNDaGFuZ2Uob3BlcmF0aW9uKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSwgYXdhaXQgdGhpcy5nZXRMYXN0U3luY1Rva2VuKCksIGF3YWl0IHRoaXMuZ2V0UGFnaW5hdGlvblRva2VuKCksIGNoZWNrSW50ZWdyaXR5LCB0aGlzLmFwaVNlcnZpY2UpO1xuICAgICAgICByZXR1cm4gb3BlcmF0aW9uO1xuICAgIH1cbiAgICBhc3luYyBzeW5jT2ZmbGluZU9wZXJhdGlvbihwYXlsb2Fkcywgc291cmNlLCBtb2RlKSB7XG4gICAgICAgIHRoaXMubG9nKCdTeW5jaW5nIG9mZmxpbmUgdXNlcicsICdzb3VyY2U6Jywgc291cmNlLCAnbW9kZTonLCBtb2RlLCAncGF5bG9hZHM6JywgcGF5bG9hZHMpO1xuICAgICAgICBjb25zdCBvcGVyYXRpb24gPSBuZXcgT2ZmbGluZVN5bmNPcGVyYXRpb24ocGF5bG9hZHMsIGFzeW5jICh0eXBlLCByZXNwb25zZSkgPT4ge1xuICAgICAgICAgICAgaWYgKHR5cGUgPT09IFN5bmNTaWduYWwuUmVzcG9uc2UpIHtcbiAgICAgICAgICAgICAgICBhd2FpdCB0aGlzLmhhbmRsZU9mZmxpbmVSZXNwb25zZShyZXNwb25zZSk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH0pO1xuICAgICAgICByZXR1cm4gb3BlcmF0aW9uO1xuICAgIH1cbiAgICBhc3luYyBoYW5kbGVTdGF0dXNDaGFuZ2Uob3BlcmF0aW9uKSB7XG4gICAgICAgIGNvbnN0IHBlbmRpbmdVcGxvYWRDb3VudCA9IG9wZXJhdGlvbi5wZW5kaW5nVXBsb2FkQ291bnQoKTtcbiAgICAgICAgY29uc3QgdG90YWxVcGxvYWRDb3VudCA9IG9wZXJhdGlvbi50b3RhbFVwbG9hZENvdW50KCk7XG4gICAgICAgIGNvbnN0IGNvbXBsZXRlZFVwbG9hZENvdW50ID0gdG90YWxVcGxvYWRDb3VudCAtIHBlbmRpbmdVcGxvYWRDb3VudDtcbiAgICAgICAgdGhpcy5vcFN0YXR1cy5zZXRVcGxvYWRTdGF0dXMoY29tcGxldGVkVXBsb2FkQ291bnQsIHRvdGFsVXBsb2FkQ291bnQpO1xuICAgIH1cbiAgICBhc3luYyBoYW5kbGVPZmZsaW5lUmVzcG9uc2UocmVzcG9uc2UpIHtcbiAgICAgICAgdGhpcy5sb2coJ09mZmxpbmUgU3luYyBSZXNwb25zZScsIHJlc3BvbnNlLnJhd1Jlc3BvbnNlKTtcbiAgICAgICAgY29uc3QgcGF5bG9hZHNUb0VtaXQgPSByZXNwb25zZS5zYXZlZFBheWxvYWRzO1xuICAgICAgICBpZiAocGF5bG9hZHNUb0VtaXQubGVuZ3RoID4gMCkge1xuICAgICAgICAgICAgYXdhaXQgdGhpcy5tb2RlbE1hbmFnZXIuZW1pdFBheWxvYWRzKHBheWxvYWRzVG9FbWl0LCBQYXlsb2FkU291cmNlLkxvY2FsU2F2ZWQpO1xuICAgICAgICAgICAgY29uc3QgcGF5bG9hZHNUb1BlcnNpc3QgPSB0aGlzLm1vZGVsTWFuYWdlci5maW5kKFV1aWRzKHBheWxvYWRzVG9FbWl0KSk7XG4gICAgICAgICAgICBhd2FpdCB0aGlzLnBlcnNpc3RQYXlsb2FkcyhwYXlsb2Fkc1RvUGVyc2lzdCk7XG4gICAgICAgIH1cbiAgICAgICAgY29uc3QgZGVsZXRlZFBheWxvYWRzID0gcmVzcG9uc2UuZGVsZXRlZFBheWxvYWRzO1xuICAgICAgICBpZiAoZGVsZXRlZFBheWxvYWRzLmxlbmd0aCA+IDApIHtcbiAgICAgICAgICAgIGF3YWl0IHRoaXMuZGVsZXRlUGF5bG9hZHMoZGVsZXRlZFBheWxvYWRzKTtcbiAgICAgICAgfVxuICAgICAgICB0aGlzLm9wU3RhdHVzLmNsZWFyRXJyb3IoKTtcbiAgICAgICAgdGhpcy5vcFN0YXR1cy5zZXREb3dubG9hZFN0YXR1cyhyZXNwb25zZS5yZXRyaWV2ZWRQYXlsb2Fkcy5sZW5ndGgpO1xuICAgICAgICBhd2FpdCB0aGlzLm5vdGlmeUV2ZW50KFN5bmNFdmVudC5TaW5nbGVTeW5jQ29tcGxldGVkLCByZXNwb25zZSk7XG4gICAgfVxuICAgIGFzeW5jIGhhbmRsZUVycm9yU2VydmVyUmVzcG9uc2UocmVzcG9uc2UpIHtcbiAgICAgICAgdGhpcy5sb2coJ1N5bmMgRXJyb3InLCByZXNwb25zZSk7XG4gICAgICAgIGlmIChyZXNwb25zZS5zdGF0dXMgPT09IElOVkFMSURfU0VTU0lPTl9SRVNQT05TRV9TVEFUVVMpIHtcbiAgICAgICAgICAgIHRoaXMubm90aWZ5RXZlbnQoU3luY0V2ZW50LkludmFsaWRTZXNzaW9uKTtcbiAgICAgICAgfVxuICAgICAgICB0aGlzLm9wU3RhdHVzLnNldEVycm9yKHJlc3BvbnNlLmVycm9yKTtcbiAgICAgICAgdGhpcy5ub3RpZnlFdmVudChTeW5jRXZlbnQuU3luY0Vycm9yLCByZXNwb25zZS5lcnJvcik7XG4gICAgfVxuICAgIGFzeW5jIGhhbmRsZVN1Y2Nlc3NTZXJ2ZXJSZXNwb25zZShvcGVyYXRpb24sIHJlc3BvbnNlKSB7XG4gICAgICAgIGlmICh0aGlzLl9zaW11bGF0ZV9sYXRlbmN5KSB7XG4gICAgICAgICAgICBhd2FpdCBzbGVlcCh0aGlzLl9zaW11bGF0ZV9sYXRlbmN5LmxhdGVuY3kpO1xuICAgICAgICB9XG4gICAgICAgIHRoaXMubG9nKCdPbmxpbmUgU3luYyBSZXNwb25zZScsIHJlc3BvbnNlLnJhd1Jlc3BvbnNlKTtcbiAgICAgICAgdGhpcy5zZXRMYXN0U3luY1Rva2VuKHJlc3BvbnNlLmxhc3RTeW5jVG9rZW4pO1xuICAgICAgICB0aGlzLnNldFBhZ2luYXRpb25Ub2tlbihyZXNwb25zZS5wYWdpbmF0aW9uVG9rZW4pO1xuICAgICAgICB0aGlzLm9wU3RhdHVzLmNsZWFyRXJyb3IoKTtcbiAgICAgICAgdGhpcy5vcFN0YXR1cy5zZXREb3dubG9hZFN0YXR1cyhyZXNwb25zZS5yZXRyaWV2ZWRQYXlsb2Fkcy5sZW5ndGgpO1xuICAgICAgICBjb25zdCBkZWNyeXB0ZWRQYXlsb2FkcyA9IFtdO1xuICAgICAgICBmb3IgKGNvbnN0IHBheWxvYWQgb2YgcmVzcG9uc2UuYWxsUHJvY2Vzc2VkUGF5bG9hZHMpIHtcbiAgICAgICAgICAgIGlmIChwYXlsb2FkLmRlbGV0ZWQgfHwgIXBheWxvYWQuZmllbGRzLmluY2x1ZGVzKFBheWxvYWRGaWVsZC5Db250ZW50KSkge1xuICAgICAgICAgICAgICAgIC8qIERlbGV0ZWQgcGF5bG9hZHMsIGFuZCBzb21lIHBheWxvYWQgdHlwZXNcbiAgICAgICAgICAgICAgICAgIGRvIG5vdCBjb250aWFpbiBjb250ZW50IChsaWtlIHJlbW90ZSBzYXZlZCkgKi9cbiAgICAgICAgICAgICAgICBjb250aW51ZTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGNvbnN0IGRlY3J5cHRlZCA9IGF3YWl0IHRoaXMucHJvdG9jb2xTZXJ2aWNlLnBheWxvYWRCeURlY3J5cHRpbmdQYXlsb2FkKHBheWxvYWQpO1xuICAgICAgICAgICAgZGVjcnlwdGVkUGF5bG9hZHMucHVzaChkZWNyeXB0ZWQpO1xuICAgICAgICB9XG4gICAgICAgIGNvbnN0IG1hc3RlckNvbGxlY3Rpb24gPSB0aGlzLm1vZGVsTWFuYWdlci5nZXRNYXN0ZXJDb2xsZWN0aW9uKCk7XG4gICAgICAgIGNvbnN0IHJlc29sdmVyID0gbmV3IFN5bmNSZXNwb25zZVJlc29sdmVyKHJlc3BvbnNlLCBkZWNyeXB0ZWRQYXlsb2FkcywgbWFzdGVyQ29sbGVjdGlvbiwgb3BlcmF0aW9uLnBheWxvYWRzU2F2ZWRPclNhdmluZyk7XG4gICAgICAgIGNvbnN0IGNvbGxlY3Rpb25zID0gYXdhaXQgcmVzb2x2ZXIuY29sbGVjdGlvbnNCeVByb2Nlc3NpbmdSZXNwb25zZSgpO1xuICAgICAgICBmb3IgKGNvbnN0IGNvbGxlY3Rpb24gb2YgY29sbGVjdGlvbnMpIHtcbiAgICAgICAgICAgIGF3YWl0IHRoaXMubW9kZWxNYW5hZ2VyLmVtaXRDb2xsZWN0aW9uKGNvbGxlY3Rpb24pO1xuICAgICAgICAgICAgY29uc3QgcGF5bG9hZHNUb1BlcnNpc3QgPSB0aGlzLm1vZGVsTWFuYWdlci5maW5kKGNvbGxlY3Rpb24udXVpZHMoKSk7XG4gICAgICAgICAgICBhd2FpdCB0aGlzLnBlcnNpc3RQYXlsb2FkcyhwYXlsb2Fkc1RvUGVyc2lzdCk7XG4gICAgICAgIH1cbiAgICAgICAgY29uc3QgZGVsZXRlZFBheWxvYWRzID0gcmVzcG9uc2UuZGVsZXRlZFBheWxvYWRzO1xuICAgICAgICBpZiAoZGVsZXRlZFBheWxvYWRzLmxlbmd0aCA+IDApIHtcbiAgICAgICAgICAgIGF3YWl0IHRoaXMuZGVsZXRlUGF5bG9hZHMoZGVsZXRlZFBheWxvYWRzKTtcbiAgICAgICAgfVxuICAgICAgICBhd2FpdCB0aGlzLm5vdGlmeUV2ZW50KFN5bmNFdmVudC5TaW5nbGVTeW5jQ29tcGxldGVkLCByZXNwb25zZSk7XG4gICAgICAgIGlmIChyZXNwb25zZS5jaGVja0ludGVncml0eSkge1xuICAgICAgICAgICAgY29uc3QgY2xpZW50SGFzaCA9IGF3YWl0IHRoaXMuY29tcHV0ZURhdGFJbnRlZ3JpdHlIYXNoKCk7XG4gICAgICAgICAgICBhd2FpdCB0aGlzLnN0YXRlLnNldEludGVncml0eUhhc2hlcyhjbGllbnRIYXNoLCByZXNwb25zZS5pbnRlZ3JpdHlIYXNoKTtcbiAgICAgICAgfVxuICAgIH1cbiAgICAvKipcbiAgICAgKiBJdGVtcyB0aGF0IGhhdmUgbmV2ZXIgYmVlbiBzeW5jZWQgYW5kIG1hcmtlZCBhcyBkZWxldGVkIHNob3VsZCBiZSBjbGVhcmVkXG4gICAgICogYXMgZGlydHksIG1hcHBlZCwgdGhlbiByZW1vdmVkIGZyb20gc3RvcmFnZS5cbiAgICAgKi9cbiAgICBhc3luYyBoYW5kbGVOZXZlclN5bmNlZERlbGV0ZWQoaXRlbXMpIHtcbiAgICAgICAgY29uc3QgcGF5bG9hZHMgPSBpdGVtcy5tYXAoKGl0ZW0pID0+IHtcbiAgICAgICAgICAgIHJldHVybiBpdGVtLnBheWxvYWRSZXByZXNlbnRhdGlvbih7XG4gICAgICAgICAgICAgICAgZGlydHk6IGZhbHNlXG4gICAgICAgICAgICB9KTtcbiAgICAgICAgfSk7XG4gICAgICAgIGF3YWl0IHRoaXMubW9kZWxNYW5hZ2VyLmVtaXRQYXlsb2FkcyhwYXlsb2FkcywgUGF5bG9hZFNvdXJjZS5Mb2NhbENoYW5nZWQpO1xuICAgICAgICBhd2FpdCB0aGlzLnBlcnNpc3RQYXlsb2FkcyhwYXlsb2Fkcyk7XG4gICAgfVxuICAgIC8qKlxuICAgICAqIEBwYXJhbSBwYXlsb2FkcyBUaGUgZGVjcnlwdGVkIHBheWxvYWRzIHRvIHBlcnNpc3RcbiAgICAgKi9cbiAgICBhc3luYyBwZXJzaXN0UGF5bG9hZHMocGF5bG9hZHMpIHtcbiAgICAgICAgaWYgKHBheWxvYWRzLmxlbmd0aCA9PT0gMCkge1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiB0aGlzLnN0b3JhZ2VTZXJ2aWNlLnNhdmVQYXlsb2FkcyhwYXlsb2FkcykuY2F0Y2goKGVycm9yKSA9PiB7XG4gICAgICAgICAgICB0aGlzLm5vdGlmeUV2ZW50KFN5bmNFdmVudC5EYXRhYmFzZVdyaXRlRXJyb3IsIGVycm9yKTtcbiAgICAgICAgICAgIHRocm93IGVycm9yO1xuICAgICAgICB9KTtcbiAgICB9XG4gICAgYXN5bmMgZGVsZXRlUGF5bG9hZHMocGF5bG9hZHMpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMucGVyc2lzdFBheWxvYWRzKHBheWxvYWRzKTtcbiAgICB9XG4gICAgLyoqXG4gICAgICogQ29tcHV0ZXMgYSBoYXNoIG9mIGFsbCBpdGVtcyB1cGRhdGVkX2F0IHN0cmluZ3Mgam9pbmVkIHdpdGggYSBjb21tYS5cbiAgICAgKiBUaGUgc2VydmVyIHdpbGwgYWxzbyBkbyB0aGUgc2FtZSwgdG8gZGV0ZXJtaW5lIHdoZXRoZXIgdGhlIGNsaWVudCB2YWx1ZXMgbWF0Y2ggc2VydmVyIHZhbHVlcy5cbiAgICAgKiBAcmV0dXJucyBBIFNIQTI1NiBkaWdlc3Qgc3RyaW5nIChoZXgpLlxuICAgICAqL1xuICAgIGFzeW5jIGNvbXB1dGVEYXRhSW50ZWdyaXR5SGFzaCgpIHtcbiAgICAgICAgdHJ5IHtcbiAgICAgICAgICAgIGNvbnN0IGl0ZW1zID0gdGhpcy5pdGVtTWFuYWdlci5ub25EZWxldGVkSXRlbXMuc29ydCgoYSwgYikgPT4ge1xuICAgICAgICAgICAgICAgIHJldHVybiBiLnVwZGF0ZWRfYXQuZ2V0VGltZSgpIC0gYS51cGRhdGVkX2F0LmdldFRpbWUoKTtcbiAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgY29uc3QgZGF0ZXMgPSBpdGVtcy5tYXAoKGl0ZW0pID0+IGl0ZW0udXBkYXRlZEF0VGltZXN0YW1wKCkpO1xuICAgICAgICAgICAgY29uc3Qgc3RyaW5nID0gZGF0ZXMuam9pbignLCcpO1xuICAgICAgICAgICAgcmV0dXJuIHRoaXMucHJvdG9jb2xTZXJ2aWNlLmNyeXB0by5zaGEyNTYoc3RyaW5nKTtcbiAgICAgICAgfVxuICAgICAgICBjYXRjaCAoZSkge1xuICAgICAgICAgICAgY29uc29sZS5lcnJvcignRXJyb3IgY29tcHV0aW5nIGRhdGEgaW50ZWdyaXR5IGhhc2gnLCBlKTtcbiAgICAgICAgICAgIHJldHVybiB1bmRlZmluZWQ7XG4gICAgICAgIH1cbiAgICB9XG4gICAgLyoqXG4gICAgICogRG93bmxvYWRzIGFsbCBpdGVtcyBhbmQgbWFwcyB0byBsY29hbCBpdGVtcyB0byBhdHRlbXB0IHJlc29sdmUgb3V0LW9mLXN5bmMgc3RhdGVcbiAgICAgKi9cbiAgICBhc3luYyByZXNvbHZlT3V0T2ZTeW5jKCkge1xuICAgICAgICBjb25zdCBkb3dubG9hZGVyID0gbmV3IEFjY291bnREb3dubG9hZGVyKHRoaXMuYXBpU2VydmljZSwgdGhpcy5wcm90b2NvbFNlcnZpY2UsIHVuZGVmaW5lZCwgJ3Jlc29sdmUtb3V0LW9mLXN5bmMnKTtcbiAgICAgICAgY29uc3QgcGF5bG9hZHMgPSBhd2FpdCBkb3dubG9hZGVyLnJ1bigpO1xuICAgICAgICBjb25zdCBkZWx0YSA9IG5ldyBEZWx0YU91dE9mU3luYyh0aGlzLm1vZGVsTWFuYWdlci5nZXRNYXN0ZXJDb2xsZWN0aW9uKCksIEltbXV0YWJsZVBheWxvYWRDb2xsZWN0aW9uLldpdGhQYXlsb2FkcyhwYXlsb2FkcywgUGF5bG9hZFNvdXJjZS5SZW1vdGVSZXRyaWV2ZWQpKTtcbiAgICAgICAgY29uc3QgY29sbGVjdGlvbiA9IGF3YWl0IGRlbHRhLnJlc3VsdGluZ0NvbGxlY3Rpb24oKTtcbiAgICAgICAgYXdhaXQgdGhpcy5tb2RlbE1hbmFnZXIuZW1pdENvbGxlY3Rpb24oY29sbGVjdGlvbik7XG4gICAgICAgIGF3YWl0IHRoaXMucGVyc2lzdFBheWxvYWRzKGNvbGxlY3Rpb24ucGF5bG9hZHMpO1xuICAgICAgICByZXR1cm4gdGhpcy5zeW5jKHtcbiAgICAgICAgICAgIGNoZWNrSW50ZWdyaXR5OiB0cnVlLFxuICAgICAgICAgICAgc291cmNlOiBTeW5jU291cmNlcy5SZXNvbHZlT3V0T2ZTeW5jXG4gICAgICAgIH0pO1xuICAgIH1cbiAgICBhc3luYyBzdGF0ZWxlc3NEb3dubG9hZEFsbEl0ZW1zKGNvbnRlbnRUeXBlLCBjdXN0b21FdmVudCkge1xuICAgICAgICBjb25zdCBkb3dubG9hZGVyID0gbmV3IEFjY291bnREb3dubG9hZGVyKHRoaXMuYXBpU2VydmljZSwgdGhpcy5wcm90b2NvbFNlcnZpY2UsIGNvbnRlbnRUeXBlLCBjdXN0b21FdmVudCk7XG4gICAgICAgIGNvbnN0IHBheWxvYWRzID0gYXdhaXQgZG93bmxvYWRlci5ydW4oKTtcbiAgICAgICAgcmV0dXJuIHBheWxvYWRzLm1hcCgocGF5bG9hZCkgPT4ge1xuICAgICAgICAgICAgcmV0dXJuIENyZWF0ZUl0ZW1Gcm9tUGF5bG9hZChwYXlsb2FkKTtcbiAgICAgICAgfSk7XG4gICAgfVxuICAgIC8qKiBAdW5pdF90ZXN0aW5nICovXG4gICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIGNhbWVsY2FzZVxuICAgIHV0X3NldERhdGFiYXNlTG9hZGVkKGxvYWRlZCkge1xuICAgICAgICB0aGlzLmRhdGFiYXNlTG9hZGVkID0gbG9hZGVkO1xuICAgIH1cbiAgICAvKiogQHVuaXRfdGVzdGluZyAqL1xuICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBjYW1lbGNhc2VcbiAgICB1dF9jbGVhckxhc3RTeW5jRGF0ZSgpIHtcbiAgICAgICAgdGhpcy5zdGF0ZS5sYXN0U3luY0RhdGUgPSB1bmRlZmluZWQ7XG4gICAgfVxuICAgIC8qKiBAdW5pdF90ZXN0aW5nICovXG4gICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIGNhbWVsY2FzZVxuICAgIHV0X2JlZ2luTGF0ZW5jeVNpbXVsYXRvcihsYXRlbmN5KSB7XG4gICAgICAgIHRoaXMuX3NpbXVsYXRlX2xhdGVuY3kgPSB7XG4gICAgICAgICAgICBsYXRlbmN5OiBsYXRlbmN5IHx8IDEwMDAsXG4gICAgICAgICAgICBlbmFibGVkOiB0cnVlXG4gICAgICAgIH07XG4gICAgfVxuICAgIC8qKiBAdW5pdF90ZXN0aW5nICovXG4gICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIGNhbWVsY2FzZVxuICAgIHV0X2VuZExhdGVuY3lTaW11bGF0b3IoKSB7XG4gICAgICAgIHRoaXMuX3NpbXVsYXRlX2xhdGVuY3kgPSBudWxsO1xuICAgIH1cbn1cbiJdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBOzs7O0FBSUE7QUFDQTs7Ozs7QUFJQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQUE7QUFDQTs7O0FBR0E7QUFDQTs7Ozs7O0FBS0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBOzs7Ozs7Ozs7O0FBU0E7QUFBQTtBQUNBO0FBQUE7QUFBQTtBQUNBO0FBREE7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBT0E7Ozs7Ozs7QUFNQTtBQUlBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQUE7QUFDQTtBQXJDQTtBQXFDQTtBQUNBOzs7Ozs7QUF2Q0E7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFDQTtBQURBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFDQTtBQURBO0FBQUE7QUFDQTtBQURBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQ0E7QUFEQTtBQUFBO0FBQUE7QUFDQTtBQURBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFpREE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUEvREE7QUFBQTtBQUFBO0FBZ0VBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQXBFQTtBQUFBO0FBQUE7QUFxRUE7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUE5RUE7QUFBQTtBQUFBO0FBZ0ZBO0FBQ0E7QUFqRkE7QUFBQTtBQUFBO0FBbUZBO0FBQ0E7QUFwRkE7QUFBQTtBQUFBO0FBc0ZBO0FBQ0E7QUF2RkE7QUFBQTtBQUFBO0FBeUZBO0FBQ0E7QUExRkE7QUFBQTtBQUFBO0FBNEZBO0FBQ0E7QUFDQTs7OztBQTlGQTtBQUFBO0FBQUE7QUFrR0E7QUFDQTtBQW5HQTtBQUFBO0FBQUE7QUFxR0E7QUFDQTtBQUNBOzs7O0FBdkdBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFDQTtBQURBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUE0R0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQS9HQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUNBO0FBREE7QUFBQTtBQUFBO0FBQ0E7QUFEQTtBQUFBO0FBZ0hBOzs7Ozs7QUFoSEE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFDQTtBQURBO0FBQ0E7QUFEQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQ0E7QUF5SEE7QUFDQTtBQTNIQTtBQUNBO0FBREE7QUE4SEE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUF0SUE7QUFBQTtBQUNBO0FBREE7QUF1SUE7QUF2SUE7QUFBQTtBQUNBO0FBREE7QUEwSUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBL0lBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFDQTtBQThJQTtBQUNBO0FBaEpBO0FBQUE7QUFDQTtBQURBO0FBaUpBO0FBakpBO0FBQUE7QUFDQTtBQURBO0FBb0pBO0FBQ0E7QUFDQTtBQXRKQTtBQThJQTtBQTlJQTtBQUFBO0FBQ0E7QUFEQTtBQXVKQTtBQUNBO0FBQ0E7QUF6SkE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFDQTtBQURBO0FBQUE7QUFBQTtBQUNBO0FBREE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUEySkE7QUEzSkE7QUFDQTtBQURBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQ0E7QUFEQTtBQUFBO0FBQUE7QUFDQTtBQURBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBK0pBO0FBQ0E7QUFoS0E7QUFBQTtBQUFBO0FBQUE7QUFDQTtBQURBO0FBQ0E7QUFEQTtBQUFBO0FBQ0E7QUFEQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUNBO0FBREE7QUFBQTtBQUFBO0FBQ0E7QUFEQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQ0E7QUFEQTtBQUFBO0FBQ0E7QUFEQTtBQXlLQTtBQUNBO0FBMUtBO0FBQUE7QUFDQTtBQURBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQ0E7QUFEQTtBQUFBO0FBQUE7QUFDQTtBQURBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFDQTtBQURBO0FBQUE7QUFDQTtBQURBO0FBK0tBO0FBQ0E7QUFoTEE7QUFBQTtBQUNBO0FBREE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFDQTtBQURBO0FBQUE7QUFBQTtBQUNBO0FBREE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFvTEE7QUFDQTtBQXJMQTtBQUFBO0FBQ0E7QUFEQTtBQUFBO0FBQUE7QUFDQTtBQURBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQ0E7QUFEQTtBQUFBO0FBQUE7QUFDQTtBQURBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUEwTEE7QUExTEE7QUFDQTtBQURBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQ0E7QUFEQTtBQUFBO0FBQUE7QUFDQTtBQURBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUE4TEE7QUFDQTtBQS9MQTtBQUFBO0FBQ0E7QUFEQTtBQWdNQTtBQWhNQTtBQUFBO0FBQ0E7QUFEQTtBQUFBO0FBQUE7QUFDQTtBQURBO0FBQUE7QUFDQTtBQURBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQ0E7QUFEQTtBQUFBO0FBQUE7QUFDQTtBQURBO0FBQUE7QUFxTUE7Ozs7Ozs7O0FBck1BO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFDQTtBQURBO0FBQUE7QUFBQTtBQUFBO0FBNk1BO0FBQ0E7QUE5TUE7QUFBQTtBQUFBO0FBQUE7QUFDQTtBQThNQTtBQUNBO0FBQ0E7QUFDQTtBQWxOQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQ0E7QUFEQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQ0E7QUFrTkE7QUFuTkE7QUFBQTtBQUNBO0FBREE7QUFBQTtBQUFBO0FBQUE7QUFDQTtBQURBO0FBQUE7QUFBQTtBQUNBO0FBREE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUNBO0FBREE7QUFBQTtBQUFBO0FBQ0E7QUFEQTtBQUFBO0FBQUE7QUFDQTtBQURBO0FBQUE7QUFDQTtBQURBO0FBQUE7QUFBQTtBQUFBO0FBQ0E7QUFEQTtBQUNBO0FBREE7QUFBQTtBQUNBO0FBREE7QUFBQTtBQUNBO0FBREE7QUF1TkE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUZBO0FBSUE7QUE3TkE7QUFBQTtBQUNBO0FBREE7QUFBQTtBQUFBO0FBQ0E7QUFEQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUNBO0FBREE7QUFBQTtBQUFBO0FBQ0E7QUFEQTtBQUFBO0FBaU9BOzs7Ozs7QUFqT0E7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBdU9BO0FBQ0E7QUF4T0E7QUFBQTtBQUFBO0FBQUE7QUFDQTtBQURBO0FBQ0E7QUFEQTtBQTJPQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBL09BO0FBQ0E7QUFEQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUNBO0FBREE7QUFBQTtBQUFBO0FBQ0E7QUFEQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBa1BBO0FBQ0E7QUFBQTtBQUNBO0FBQUE7QUFBQTtBQUFBO0FBQ0E7QUFDQTtBQXRQQTtBQUFBO0FBQUE7QUF1UEE7QUFDQTtBQUFBO0FBQ0E7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUNBO0FBQ0E7QUFDQTs7Ozs7QUE1UEE7QUFBQTtBQUFBO0FBaVFBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBRkE7QUFLQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7Ozs7O0FBalJBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFDQTtBQURBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUF1UkE7QUFHQTtBQUNBO0FBM1JBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQ0E7QUFEQTtBQUFBO0FBQUE7QUFDQTtBQURBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQ0E7QUFEQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFDQTtBQURBO0FBQUE7QUFBQTtBQUFBO0FBNFJBO0FBQ0E7QUE3UkE7QUFBQTtBQUFBO0FBQUE7QUFDQTtBQThSQTtBQS9SQTtBQUNBO0FBREE7QUFrU0E7Ozs7Ozs7O0FBUUE7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBNVRBO0FBQUE7QUFDQTtBQURBO0FBNFRBO0FBQ0E7QUFBQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQXJVQTtBQUFBO0FBQ0E7QUFEQTtBQXNVQTtBQXRVQTtBQUFBO0FBQ0E7QUFEQTtBQXdVQTs7OztBQUlBO0FBQ0E7QUFDQTtBQTlVQTtBQUFBO0FBQUE7QUFBQTtBQUNBO0FBZ1ZBO0FBQ0E7QUFsVkE7QUFBQTtBQUFBO0FBQUE7QUFDQTtBQURBO0FBQ0E7QUFEQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQ0E7QUFEQTtBQTBWQTtBQUNBO0FBQ0E7QUFIQTtBQUNBO0FBMVZBO0FBQUE7QUFDQTtBQURBO0FBbVdBO0FBQ0E7QUFDQTtBQUNBOzs7QUFFQTtBQUNBOzs7QUFFQTtBQUNBO0FBNVdBO0FBQUE7QUFBQTtBQUFBO0FBQ0E7QUFEQTtBQUFBO0FBOFdBO0FBQ0E7QUFDQTtBQWhYQTtBQWlYQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFFQTtBQUNBO0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBOVhBO0FBQUE7QUFBQTtBQUFBO0FBQ0E7QUFEQTtBQUFBO0FBQUE7QUFBQTtBQUNBO0FBREE7QUFDQTtBQURBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFDQTtBQURBO0FBQUE7QUFDQTtBQURBO0FBbVlBO0FBbllBO0FBQUE7QUFDQTtBQURBO0FBc1lBO0FBQ0E7QUF2WUE7QUFBQTtBQUFBO0FBQ0E7QUFEQTtBQXlZQTtBQUNBO0FBQ0E7QUFDQTtBQTVZQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQ0E7QUFEQTtBQUFBO0FBQ0E7QUFEQTtBQThZQTtBQTlZQTtBQUFBO0FBQ0E7QUFEQTtBQUFBO0FBQUE7QUFDQTtBQURBO0FBaVpBO0FBQ0E7QUFsWkE7QUFBQTtBQUFBO0FBQ0E7QUFEQTtBQW9aQTtBQUNBO0FBQ0E7QUF0WkE7QUFBQTtBQUFBO0FBQUE7QUFDQTtBQURBO0FBQ0E7QUFEQTtBQXlaQTtBQUNBO0FBQ0E7QUFBQTtBQUVBO0FBQ0E7QUFDQTtBQS9aQTtBQUFBO0FBQUE7QUFBQTtBQUNBO0FBREE7QUFBQTtBQUNBO0FBREE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUNBO0FBREE7QUFBQTtBQW1hQTtBQUFBO0FBQ0E7QUFwYUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUNBO0FBcWFBO0FBQ0E7QUFDQTtBQUNBO0FBemFBO0FBQUE7QUFDQTtBQURBO0FBQUE7QUFBQTtBQTRhQTtBQUNBO0FBQ0E7QUFIQTtBQUNBO0FBNWFBO0FBQUE7QUFBQTtBQUNBO0FBREE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUNBO0FBaWJBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUZBO0FBQ0E7QUFyYkE7QUFBQTtBQUFBO0FBQUE7QUFDQTtBQURBO0FBQUE7QUFDQTtBQURBO0FBQUE7QUFBQTtBQUNBO0FBREE7QUFBQTtBQUFBO0FBQ0E7QUFEQTtBQUFBO0FBQ0E7QUFEQTtBQUFBO0FBQUE7QUFBQTtBQUNBO0FBREE7QUFBQTtBQW1jQTtBQUNBO0FBQ0E7QUFIQTtBQUNBO0FBbmNBO0FBQUE7QUFBQTtBQUNBO0FBREE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUNBO0FBREE7QUFBQTtBQUFBO0FBQUE7QUFDQTtBQXljQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFKQTtBQUNBO0FBNWNBO0FBQUE7QUFBQTtBQUFBO0FBQ0E7QUFEQTtBQUFBO0FBQ0E7QUFEQTtBQUFBO0FBQUE7QUFDQTtBQURBO0FBdWRBO0FBQ0E7QUF4ZEE7QUF5ZEE7Ozs7Ozs7QUF6ZEE7QUFBQTtBQUFBO0FBQUE7QUFDQTtBQStkQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBbmVBO0FBQUE7QUFDQTtBQURBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFDQTtBQURBO0FBQUE7QUFBQTtBQUNBO0FBREE7QUFBQTtBQUFBO0FBQ0E7QUFEQTtBQUFBO0FBQ0E7QUFEQTtBQUFBO0FBQUE7QUFBQTtBQUNBO0FBREE7QUFDQTtBQURBO0FBQUE7QUFDQTtBQURBO0FBQUE7QUFDQTtBQURBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQ0E7QUFEQTtBQUFBO0FBQUE7QUFDQTtBQURBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQ0E7QUFEQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBcWVBO0FBcmVBO0FBQUE7QUFDQTtBQURBO0FBQUE7QUFzZUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUNBO0FBREE7QUFBQTtBQUFBO0FBQUE7QUFDQTtBQURBO0FBQUE7QUFDQTtBQURBO0FBQUE7QUFBQTtBQUNBO0FBREE7QUFBQTtBQUFBO0FBQ0E7QUFEQTtBQUFBO0FBQUE7QUFDQTtBQURBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFDQTtBQURBO0FBQUE7QUFDQTtBQURBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQ0E7QUF2ZUE7QUFBQTtBQUFBO0FBQUE7QUFDQTtBQURBO0FBQUE7QUFDQTtBQURBO0FBQUE7QUFBQTtBQUFBO0FBQ0E7QUFEQTtBQUFBO0FBQUE7QUFBQTtBQXNlQTtBQXRlQTtBQUNBO0FBREE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFDQTtBQURBO0FBQUE7QUFBQTtBQUNBO0FBREE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFDQTtBQURBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFzZkE7QUFDQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUNBO0FBREE7QUFBQTtBQUNBO0FBREE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFDQTtBQURBO0FBQUE7QUFBQTtBQUFBO0FBdmZBO0FBQ0E7QUFEQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUNBO0FBREE7QUFBQTtBQUFBO0FBQ0E7QUFEQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBK2ZBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFuZ0JBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQ0E7QUFEQTtBQUFBO0FBQUE7QUFDQTtBQURBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFxZ0JBO0FBQ0E7QUFDQTtBQXZnQkE7QUFBQTtBQUFBO0FBQUE7QUFDQTtBQURBO0FBQUE7QUFDQTtBQURBO0FBeWdCQTtBQXpnQkE7QUFBQTtBQUNBO0FBREE7QUE0Z0JBO0FBQ0E7QUE3Z0JBO0FBQUE7QUFBQTtBQUFBO0FBQ0E7QUFEQTtBQUFBO0FBQ0E7QUFEQTtBQWdoQkE7QUFDQTtBQWpoQkE7QUFBQTtBQUNBO0FBREE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFDQTtBQURBO0FBQUE7QUFBQTtBQUNBO0FBREE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFxaEJBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQTNoQkE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFDQTtBQURBO0FBQUE7QUFBQTtBQUNBO0FBREE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFDQTtBQURBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFDQTtBQURBO0FBQUE7QUFDQTtBQURBO0FBZ2lCQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFyaUJBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFDQTtBQURBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFDQTtBQXFpQkE7QUFDQTtBQXZpQkE7QUFBQTtBQUFBO0FBQUE7QUFDQTtBQURBO0FBQ0E7QUFEQTtBQUFBO0FBQUE7QUFDQTtBQURBO0FBNGlCQTtBQUNBO0FBQ0E7QUE5aUJBO0FBQUE7QUFBQTtBQUFBO0FBQ0E7QUFEQTtBQUFBO0FBQUE7QUFDQTtBQURBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFDQTtBQURBO0FBQUE7QUFBQTtBQUNBO0FBREE7QUFBQTtBQUFBO0FBQ0E7QUFEQTtBQUFBO0FBQ0E7QUFEQTtBQUFBO0FBQUE7QUFBQTtBQUNBO0FBREE7QUFDQTtBQURBO0FBQUE7QUFDQTtBQURBO0FBQUE7QUFDQTtBQURBO0FBK2lCQTtBQUNBO0FBaGpCQTtBQUFBO0FBQ0E7QUFEQTtBQWlqQkE7QUFqakJBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFDQTtBQURBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFDQTtBQWlqQkE7QUFsakJBO0FBQUE7QUFDQTtBQURBO0FBb2pCQTtBQXBqQkE7QUFBQTtBQUNBO0FBREE7QUFBQTtBQUFBO0FBQUE7QUFDQTtBQURBO0FBQUE7QUFBQTtBQUNBO0FBREE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUNBO0FBREE7QUFBQTtBQUFBO0FBQ0E7QUFEQTtBQUFBO0FBQUE7QUFDQTtBQURBO0FBQUE7QUFDQTtBQURBO0FBQUE7QUFBQTtBQUFBO0FBQ0E7QUFEQTtBQUNBO0FBREE7QUFBQTtBQUNBO0FBREE7QUFBQTtBQUNBO0FBREE7QUF1akJBO0FBQ0E7QUF4akJBO0FBQUE7QUFBQTtBQUFBO0FBQ0E7QUFEQTtBQUFBO0FBQ0E7QUFEQTtBQUFBO0FBQUE7QUFDQTtBQURBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFDQTtBQURBO0FBQUE7QUFDQTtBQURBO0FBNmpCQTtBQTdqQkE7QUFBQTtBQUNBO0FBREE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFDQTtBQURBO0FBQUE7QUFBQTtBQUNBO0FBREE7QUFBQTtBQWlrQkE7Ozs7O0FBamtCQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFza0JBO0FBQ0E7QUFDQTtBQURBO0FBR0E7QUExa0JBO0FBQUE7QUFDQTtBQURBO0FBQUE7QUFBQTtBQUNBO0FBREE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFDQTtBQURBO0FBQUE7QUFBQTtBQUNBO0FBREE7QUFBQTtBQThrQkE7Ozs7QUE5a0JBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFDQTtBQURBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFDQTtBQURBO0FBQ0E7QUFEQTtBQUFBO0FBc2xCQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBemxCQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUNBO0FBREE7QUFBQTtBQUFBO0FBQ0E7QUFEQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQ0E7QUFEQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUNBO0FBREE7QUFBQTtBQUFBO0FBQ0E7QUFEQTtBQUFBO0FBNmxCQTs7Ozs7O0FBN2xCQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQW9tQkE7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUFBO0FBQ0E7QUF4bUJBO0FBQ0E7QUFEQTtBQUFBO0FBQUE7QUE0bUJBO0FBNW1CQTtBQUNBO0FBREE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFDQTtBQURBO0FBQUE7QUFBQTtBQUNBO0FBREE7QUFBQTtBQWduQkE7Ozs7QUFobkJBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQW9uQkE7QUFwbkJBO0FBQUE7QUFDQTtBQURBO0FBcW5CQTtBQUNBO0FBdG5CQTtBQUFBO0FBQ0E7QUFEQTtBQXVuQkE7QUF2bkJBO0FBQUE7QUFDQTtBQURBO0FBQUE7QUFBQTtBQUNBO0FBREE7QUFBQTtBQTJuQkE7QUFDQTtBQUZBO0FBQ0E7QUEzbkJBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQ0E7QUFEQTtBQUFBO0FBQUE7QUFDQTtBQURBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFnb0JBO0FBaG9CQTtBQUFBO0FBQ0E7QUFEQTtBQWlvQkE7QUFqb0JBO0FBbW9CQTtBQUNBO0FBQ0E7QUFyb0JBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQ0E7QUFEQTtBQUFBO0FBQUE7QUFDQTtBQURBO0FBQUE7QUFzb0JBO0FBQ0E7QUFDQTtBQXhvQkE7QUFBQTtBQUFBO0FBeW9CQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBN29CQTtBQUFBO0FBQUE7QUE4b0JBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFscEJBO0FBQUE7QUFBQTtBQW1wQkE7QUFDQTtBQUNBO0FBRkE7QUFJQTtBQUNBO0FBQ0E7QUFDQTtBQTFwQkE7QUFBQTtBQUFBO0FBMnBCQTtBQUNBO0FBNXBCQTtBQUNBO0FBREE7QUFBQSIsInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./lib/services/sync/sync_service.ts\n')},"./lib/services/sync/sync_state.ts":
|
||
/*!*****************************************!*\
|
||
!*** ./lib/services/sync/sync_state.ts ***!
|
||
\*****************************************/
|
||
/*! exports provided: SyncState */function(module,__webpack_exports__,__webpack_require__){"use strict";eval('__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "SyncState", function() { return SyncState; });\n/* harmony import */ var _babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @babel/runtime/regenerator */ "./node_modules/@babel/runtime/regenerator/index.js");\n/* harmony import */ var _babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var _Lib_services_sync_events__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! @Lib/services/sync/events */ "./lib/services/sync/events.ts");\n\n\nfunction asyncGeneratorStep(gen, resolve, reject, _next, _throw, key, arg) { try { var info = gen[key](arg); var value = info.value; } catch (error) { reject(error); return; } if (info.done) { resolve(value); } else { Promise.resolve(value).then(_next, _throw); } }\n\nfunction _asyncToGenerator(fn) { return function () { var self = this, args = arguments; return new Promise(function (resolve, reject) { var gen = fn.apply(self, args); function _next(value) { asyncGeneratorStep(gen, resolve, reject, _next, _throw, "next", value); } function _throw(err) { asyncGeneratorStep(gen, resolve, reject, _next, _throw, "throw", err); } _next(undefined); }); }; }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } }\n\nfunction _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); } }\n\nfunction _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; }\n\n\nvar SyncState = /*#__PURE__*/function () {\n function SyncState(receiver, maxDiscordance) {\n _classCallCheck(this, SyncState);\n\n this.discordance = 0;\n this.outOfSync = false;\n this.receiver = receiver;\n this.maxDiscordance = maxDiscordance;\n this.reset();\n }\n\n _createClass(SyncState, [{\n key: "isOutOfSync",\n value: function isOutOfSync() {\n return this.outOfSync;\n }\n }, {\n key: "reset",\n value: function reset() {\n this.lastPreSyncSave = undefined;\n this.lastSyncDate = undefined;\n this.discordance = 0;\n this.outOfSync = false;\n }\n }, {\n key: "getLastClientIntegrityHash",\n value: function getLastClientIntegrityHash() {\n return this.lastClientHash;\n }\n }, {\n key: "clearIntegrityHashes",\n value: function clearIntegrityHashes() {\n this.lastClientHash = undefined;\n this.lastServerHash = undefined;\n }\n }, {\n key: "setIntegrityHashes",\n value: function () {\n var _setIntegrityHashes = _asyncToGenerator( /*#__PURE__*/_babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0___default.a.mark(function _callee(clientHash, serverHash) {\n var isInSync;\n return _babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0___default.a.wrap(function _callee$(_context) {\n while (1) {\n switch (_context.prev = _context.next) {\n case 0:\n this.lastClientHash = clientHash;\n this.lastServerHash = serverHash;\n isInSync = !serverHash || serverHash.length === 0 || !clientHash || clientHash === serverHash;\n\n if (isInSync) {\n if (this.outOfSync) {\n this.outOfSync = false;\n this.receiver(_Lib_services_sync_events__WEBPACK_IMPORTED_MODULE_1__["SyncEvent"].ExitOutOfSync);\n }\n\n this.discordance = 0;\n } else {\n this.discordance++;\n\n if (this.discordance >= this.maxDiscordance && !this.outOfSync) {\n this.outOfSync = true;\n this.receiver(_Lib_services_sync_events__WEBPACK_IMPORTED_MODULE_1__["SyncEvent"].EnterOutOfSync);\n }\n }\n\n case 4:\n case "end":\n return _context.stop();\n }\n }\n }, _callee, this);\n }));\n\n function setIntegrityHashes(_x, _x2) {\n return _setIntegrityHashes.apply(this, arguments);\n }\n\n return setIntegrityHashes;\n }()\n }, {\n key: "needsSync",\n get: function get() {\n return this.discordance > 0 && this.discordance < this.maxDiscordance;\n }\n }]);\n\n return SyncState;\n}();//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9saWIvc2VydmljZXMvc3luYy9zeW5jX3N0YXRlLnRzLmpzIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vU05MaWJyYXJ5Ly4vbGliL3NlcnZpY2VzL3N5bmMvc3luY19zdGF0ZS50cz8zZjA3Il0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IFN5bmNFdmVudCB9IGZyb20gJ0BMaWIvc2VydmljZXMvc3luYy9ldmVudHMnO1xuZXhwb3J0IGNsYXNzIFN5bmNTdGF0ZSB7XG4gICAgY29uc3RydWN0b3IocmVjZWl2ZXIsIG1heERpc2NvcmRhbmNlKSB7XG4gICAgICAgIHRoaXMuZGlzY29yZGFuY2UgPSAwO1xuICAgICAgICB0aGlzLm91dE9mU3luYyA9IGZhbHNlO1xuICAgICAgICB0aGlzLnJlY2VpdmVyID0gcmVjZWl2ZXI7XG4gICAgICAgIHRoaXMubWF4RGlzY29yZGFuY2UgPSBtYXhEaXNjb3JkYW5jZTtcbiAgICAgICAgdGhpcy5yZXNldCgpO1xuICAgIH1cbiAgICBpc091dE9mU3luYygpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMub3V0T2ZTeW5jO1xuICAgIH1cbiAgICByZXNldCgpIHtcbiAgICAgICAgdGhpcy5sYXN0UHJlU3luY1NhdmUgPSB1bmRlZmluZWQ7XG4gICAgICAgIHRoaXMubGFzdFN5bmNEYXRlID0gdW5kZWZpbmVkO1xuICAgICAgICB0aGlzLmRpc2NvcmRhbmNlID0gMDtcbiAgICAgICAgdGhpcy5vdXRPZlN5bmMgPSBmYWxzZTtcbiAgICB9XG4gICAgZ2V0IG5lZWRzU3luYygpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuZGlzY29yZGFuY2UgPiAwXG4gICAgICAgICAgICAmJiB0aGlzLmRpc2NvcmRhbmNlIDwgdGhpcy5tYXhEaXNjb3JkYW5jZTtcbiAgICB9XG4gICAgZ2V0TGFzdENsaWVudEludGVncml0eUhhc2goKSB7XG4gICAgICAgIHJldHVybiB0aGlzLmxhc3RDbGllbnRIYXNoO1xuICAgIH1cbiAgICBjbGVhckludGVncml0eUhhc2hlcygpIHtcbiAgICAgICAgdGhpcy5sYXN0Q2xpZW50SGFzaCA9IHVuZGVmaW5lZDtcbiAgICAgICAgdGhpcy5sYXN0U2VydmVySGFzaCA9IHVuZGVmaW5lZDtcbiAgICB9XG4gICAgYXN5bmMgc2V0SW50ZWdyaXR5SGFzaGVzKGNsaWVudEhhc2gsIHNlcnZlckhhc2gpIHtcbiAgICAgICAgdGhpcy5sYXN0Q2xpZW50SGFzaCA9IGNsaWVudEhhc2g7XG4gICAgICAgIHRoaXMubGFzdFNlcnZlckhhc2ggPSBzZXJ2ZXJIYXNoO1xuICAgICAgICBjb25zdCBpc0luU3luYyA9ICgoIXNlcnZlckhhc2ggfHwgc2VydmVySGFzaC5sZW5ndGggPT09IDApIHx8XG4gICAgICAgICAgICAhY2xpZW50SGFzaCB8fFxuICAgICAgICAgICAgY2xpZW50SGFzaCA9PT0gc2VydmVySGFzaCk7XG4gICAgICAgIGlmIChpc0luU3luYykge1xuICAgICAgICAgICAgaWYgKHRoaXMub3V0T2ZTeW5jKSB7XG4gICAgICAgICAgICAgICAgdGhpcy5vdXRPZlN5bmMgPSBmYWxzZTtcbiAgICAgICAgICAgICAgICB0aGlzLnJlY2VpdmVyKFN5bmNFdmVudC5FeGl0T3V0T2ZTeW5jKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHRoaXMuZGlzY29yZGFuY2UgPSAwO1xuICAgICAgICB9XG4gICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgdGhpcy5kaXNjb3JkYW5jZSsrO1xuICAgICAgICAgICAgaWYgKHRoaXMuZGlzY29yZGFuY2UgPj0gdGhpcy5tYXhEaXNjb3JkYW5jZSAmJiAhdGhpcy5vdXRPZlN5bmMpIHtcbiAgICAgICAgICAgICAgICB0aGlzLm91dE9mU3luYyA9IHRydWU7XG4gICAgICAgICAgICAgICAgdGhpcy5yZWNlaXZlcihTeW5jRXZlbnQuRW50ZXJPdXRPZlN5bmMpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfVxufVxuIl0sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7OztBQUFBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQVJBO0FBQUE7QUFBQTtBQVNBO0FBQ0E7QUFWQTtBQUFBO0FBQUE7QUFZQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBaEJBO0FBQUE7QUFBQTtBQXNCQTtBQUNBO0FBdkJBO0FBQUE7QUFBQTtBQXlCQTtBQUNBO0FBQ0E7QUEzQkE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBNkJBO0FBQ0E7QUFDQTtBQUNBO0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUVBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFoREE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFDQTtBQURBO0FBQUE7QUFBQTtBQUNBO0FBREE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQWtCQTtBQUVBO0FBcEJBO0FBQ0E7QUFEQTtBQUFBIiwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./lib/services/sync/sync_state.ts\n')},"./lib/services/sync/utils.ts":
|
||
/*!************************************!*\
|
||
!*** ./lib/services/sync/utils.ts ***!
|
||
\************************************/
|
||
/*! exports provided: SortPayloadsByRecentAndContentPriority */function(module,__webpack_exports__,__webpack_require__){"use strict";eval('__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "SortPayloadsByRecentAndContentPriority", function() { return SortPayloadsByRecentAndContentPriority; });\n/**\n * Sorts payloads according by most recently modified first, according to the priority,\n * whereby the earlier a content_type appears in the priorityList,\n * the earlier it will appear in the resulting sorted array.\n */\nfunction SortPayloadsByRecentAndContentPriority(payloads, priorityList) {\n return payloads.sort(function (a, b) {\n var dateResult = new Date(b.updated_at).getTime() - new Date(a.updated_at).getTime();\n var aPriority = 0;\n var bPriority = 0;\n\n if (priorityList) {\n aPriority = priorityList.indexOf(a.content_type);\n bPriority = priorityList.indexOf(b.content_type);\n\n if (aPriority === -1) {\n /** Not found in list, not prioritized. Set it to max value */\n aPriority = priorityList.length;\n }\n\n if (bPriority === -1) {\n /** Not found in list, not prioritized. Set it to max value */\n bPriority = priorityList.length;\n }\n }\n\n if (aPriority === bPriority) {\n return dateResult;\n }\n\n if (aPriority < bPriority) {\n return -1;\n } else {\n return 1;\n }\n });\n}//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9saWIvc2VydmljZXMvc3luYy91dGlscy50cy5qcyIsInNvdXJjZXMiOlsid2VicGFjazovL1NOTGlicmFyeS8uL2xpYi9zZXJ2aWNlcy9zeW5jL3V0aWxzLnRzPzEwNjQiXSwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gICogU29ydHMgcGF5bG9hZHMgYWNjb3JkaW5nIGJ5IG1vc3QgcmVjZW50bHkgbW9kaWZpZWQgZmlyc3QsIGFjY29yZGluZyB0byB0aGUgcHJpb3JpdHksXG4gICogd2hlcmVieSB0aGUgZWFybGllciBhIGNvbnRlbnRfdHlwZSBhcHBlYXJzIGluIHRoZSBwcmlvcml0eUxpc3QsXG4gICogdGhlIGVhcmxpZXIgaXQgd2lsbCBhcHBlYXIgaW4gdGhlIHJlc3VsdGluZyBzb3J0ZWQgYXJyYXkuXG4gICovXG5leHBvcnQgZnVuY3Rpb24gU29ydFBheWxvYWRzQnlSZWNlbnRBbmRDb250ZW50UHJpb3JpdHkocGF5bG9hZHMsIHByaW9yaXR5TGlzdCkge1xuICAgIHJldHVybiBwYXlsb2Fkcy5zb3J0KChhLCBiKSA9PiB7XG4gICAgICAgIGNvbnN0IGRhdGVSZXN1bHQgPSBuZXcgRGF0ZShiLnVwZGF0ZWRfYXQpLmdldFRpbWUoKSAtIG5ldyBEYXRlKGEudXBkYXRlZF9hdCkuZ2V0VGltZSgpO1xuICAgICAgICBsZXQgYVByaW9yaXR5ID0gMDtcbiAgICAgICAgbGV0IGJQcmlvcml0eSA9IDA7XG4gICAgICAgIGlmIChwcmlvcml0eUxpc3QpIHtcbiAgICAgICAgICAgIGFQcmlvcml0eSA9IHByaW9yaXR5TGlzdC5pbmRleE9mKGEuY29udGVudF90eXBlKTtcbiAgICAgICAgICAgIGJQcmlvcml0eSA9IHByaW9yaXR5TGlzdC5pbmRleE9mKGIuY29udGVudF90eXBlKTtcbiAgICAgICAgICAgIGlmIChhUHJpb3JpdHkgPT09IC0xKSB7XG4gICAgICAgICAgICAgICAgLyoqIE5vdCBmb3VuZCBpbiBsaXN0LCBub3QgcHJpb3JpdGl6ZWQuIFNldCBpdCB0byBtYXggdmFsdWUgKi9cbiAgICAgICAgICAgICAgICBhUHJpb3JpdHkgPSBwcmlvcml0eUxpc3QubGVuZ3RoO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgaWYgKGJQcmlvcml0eSA9PT0gLTEpIHtcbiAgICAgICAgICAgICAgICAvKiogTm90IGZvdW5kIGluIGxpc3QsIG5vdCBwcmlvcml0aXplZC4gU2V0IGl0IHRvIG1heCB2YWx1ZSAqL1xuICAgICAgICAgICAgICAgIGJQcmlvcml0eSA9IHByaW9yaXR5TGlzdC5sZW5ndGg7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgaWYgKGFQcmlvcml0eSA9PT0gYlByaW9yaXR5KSB7XG4gICAgICAgICAgICByZXR1cm4gZGF0ZVJlc3VsdDtcbiAgICAgICAgfVxuICAgICAgICBpZiAoYVByaW9yaXR5IDwgYlByaW9yaXR5KSB7XG4gICAgICAgICAgICByZXR1cm4gLTE7XG4gICAgICAgIH1cbiAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICByZXR1cm4gMTtcbiAgICAgICAgfVxuICAgIH0pO1xufVxuIl0sIm1hcHBpbmdzIjoiQUFBQTtBQUFBO0FBQUE7Ozs7O0FBS0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFFQTtBQUNBO0FBQ0E7QUFDQSIsInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./lib/services/sync/utils.ts\n')},"./lib/stages.ts":
|
||
/*!***********************!*\
|
||
!*** ./lib/stages.ts ***!
|
||
\***********************/
|
||
/*! exports provided: ApplicationStage */function(module,__webpack_exports__,__webpack_require__){"use strict";eval('__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "ApplicationStage", function() { return ApplicationStage; });\nvar ApplicationStage;\n\n(function (ApplicationStage) {\n ApplicationStage[ApplicationStage["PreparingForLaunch_0"] = 0] = "PreparingForLaunch_0";\n ApplicationStage[ApplicationStage["ReadyForLaunch_05"] = 0.5] = "ReadyForLaunch_05";\n ApplicationStage[ApplicationStage["StorageDecrypted_09"] = 0.9] = "StorageDecrypted_09";\n ApplicationStage[ApplicationStage["Launched_10"] = 1] = "Launched_10";\n ApplicationStage[ApplicationStage["LoadingDatabase_11"] = 1.1] = "LoadingDatabase_11";\n ApplicationStage[ApplicationStage["LoadedDatabase_12"] = 1.2] = "LoadedDatabase_12";\n ApplicationStage[ApplicationStage["FullSyncCompleted_13"] = 1.3] = "FullSyncCompleted_13";\n ApplicationStage[ApplicationStage["SignedIn_30"] = 3] = "SignedIn_30";\n})(ApplicationStage || (ApplicationStage = {}));\n\n;//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9saWIvc3RhZ2VzLnRzLmpzIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vU05MaWJyYXJ5Ly4vbGliL3N0YWdlcy50cz85YWQ0Il0sInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCB2YXIgQXBwbGljYXRpb25TdGFnZTtcbihmdW5jdGlvbiAoQXBwbGljYXRpb25TdGFnZSkge1xuICAgIEFwcGxpY2F0aW9uU3RhZ2VbQXBwbGljYXRpb25TdGFnZVtcIlByZXBhcmluZ0ZvckxhdW5jaF8wXCJdID0gMF0gPSBcIlByZXBhcmluZ0ZvckxhdW5jaF8wXCI7XG4gICAgQXBwbGljYXRpb25TdGFnZVtBcHBsaWNhdGlvblN0YWdlW1wiUmVhZHlGb3JMYXVuY2hfMDVcIl0gPSAwLjVdID0gXCJSZWFkeUZvckxhdW5jaF8wNVwiO1xuICAgIEFwcGxpY2F0aW9uU3RhZ2VbQXBwbGljYXRpb25TdGFnZVtcIlN0b3JhZ2VEZWNyeXB0ZWRfMDlcIl0gPSAwLjldID0gXCJTdG9yYWdlRGVjcnlwdGVkXzA5XCI7XG4gICAgQXBwbGljYXRpb25TdGFnZVtBcHBsaWNhdGlvblN0YWdlW1wiTGF1bmNoZWRfMTBcIl0gPSAxXSA9IFwiTGF1bmNoZWRfMTBcIjtcbiAgICBBcHBsaWNhdGlvblN0YWdlW0FwcGxpY2F0aW9uU3RhZ2VbXCJMb2FkaW5nRGF0YWJhc2VfMTFcIl0gPSAxLjFdID0gXCJMb2FkaW5nRGF0YWJhc2VfMTFcIjtcbiAgICBBcHBsaWNhdGlvblN0YWdlW0FwcGxpY2F0aW9uU3RhZ2VbXCJMb2FkZWREYXRhYmFzZV8xMlwiXSA9IDEuMl0gPSBcIkxvYWRlZERhdGFiYXNlXzEyXCI7XG4gICAgQXBwbGljYXRpb25TdGFnZVtBcHBsaWNhdGlvblN0YWdlW1wiRnVsbFN5bmNDb21wbGV0ZWRfMTNcIl0gPSAxLjNdID0gXCJGdWxsU3luY0NvbXBsZXRlZF8xM1wiO1xuICAgIEFwcGxpY2F0aW9uU3RhZ2VbQXBwbGljYXRpb25TdGFnZVtcIlNpZ25lZEluXzMwXCJdID0gM10gPSBcIlNpZ25lZEluXzMwXCI7XG59KShBcHBsaWNhdGlvblN0YWdlIHx8IChBcHBsaWNhdGlvblN0YWdlID0ge30pKTtcbjtcbiJdLCJtYXBwaW5ncyI6IkFBQUE7QUFBQTtBQUFBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUEiLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./lib/stages.ts\n')},"./lib/storage_keys.ts":
|
||
/*!*****************************!*\
|
||
!*** ./lib/storage_keys.ts ***!
|
||
\*****************************/
|
||
/*! exports provided: RawStorageKey, StorageKey, namespacedKey */function(module,__webpack_exports__,__webpack_require__){"use strict";eval('__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "RawStorageKey", function() { return RawStorageKey; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "StorageKey", function() { return StorageKey; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "namespacedKey", function() { return namespacedKey; });\n/**\n * Unmanaged keys stored in root storage\n */\nvar RawStorageKey;\n\n(function (RawStorageKey) {\n RawStorageKey["StorageObject"] = "storage";\n /** Raw storage keys exist outside of StorageManager domain */\n\n RawStorageKey["LastMigrationTimestamp"] = "last_migration_timestamp";\n})(RawStorageKey || (RawStorageKey = {}));\n\n;\n/**\n * Keys used for retrieving and saving simple key/value pairs.\n * These keys are managed and are embedded inside RawStorageKey.StorageObject\n */\n\nvar StorageKey;\n\n(function (StorageKey) {\n StorageKey["RootKeyParams"] = "ROOT_KEY_PARAMS";\n StorageKey["WrappedRootKey"] = "WRAPPED_ROOT_KEY";\n StorageKey["RootKeyWrapperKeyParams"] = "ROOT_KEY_WRAPPER_KEY_PARAMS";\n StorageKey["Session"] = "session";\n StorageKey["User"] = "user";\n StorageKey["ServerHost"] = "server";\n StorageKey["LegacyUuid"] = "uuid";\n StorageKey["LastSyncToken"] = "syncToken";\n StorageKey["PaginationToken"] = "cursorToken";\n StorageKey["BiometricPrefs"] = "biometrics_prefs";\n StorageKey["MobilePasscodeTiming"] = "passcode_timing";\n StorageKey["PrivilegesExpirey"] = "SessionExpiresAtKey";\n StorageKey["PrivilegesSessionLength"] = "SessionLengthKey";\n StorageKey["SessionHistoryPersistable"] = "sessionHistory_persist";\n StorageKey["SessionHistoryRevisions"] = "sessionHistory_revisions";\n StorageKey["SessionHistoryOptimize"] = "sessionHistory_autoOptimize";\n})(StorageKey || (StorageKey = {}));\n\n;\nfunction namespacedKey(namespace, key) {\n if (namespace) {\n return "".concat(namespace, "-").concat(key);\n } else {\n return key;\n }\n}//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9saWIvc3RvcmFnZV9rZXlzLnRzLmpzIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vU05MaWJyYXJ5Ly4vbGliL3N0b3JhZ2Vfa2V5cy50cz9iYzI3Il0sInNvdXJjZXNDb250ZW50IjpbIi8qKlxuICogVW5tYW5hZ2VkIGtleXMgc3RvcmVkIGluIHJvb3Qgc3RvcmFnZVxuICovXG5leHBvcnQgdmFyIFJhd1N0b3JhZ2VLZXk7XG4oZnVuY3Rpb24gKFJhd1N0b3JhZ2VLZXkpIHtcbiAgICBSYXdTdG9yYWdlS2V5W1wiU3RvcmFnZU9iamVjdFwiXSA9IFwic3RvcmFnZVwiO1xuICAgIC8qKiBSYXcgc3RvcmFnZSBrZXlzIGV4aXN0IG91dHNpZGUgb2YgU3RvcmFnZU1hbmFnZXIgZG9tYWluICovXG4gICAgUmF3U3RvcmFnZUtleVtcIkxhc3RNaWdyYXRpb25UaW1lc3RhbXBcIl0gPSBcImxhc3RfbWlncmF0aW9uX3RpbWVzdGFtcFwiO1xufSkoUmF3U3RvcmFnZUtleSB8fCAoUmF3U3RvcmFnZUtleSA9IHt9KSk7XG47XG4vKipcbiAqIEtleXMgdXNlZCBmb3IgcmV0cmlldmluZyBhbmQgc2F2aW5nIHNpbXBsZSBrZXkvdmFsdWUgcGFpcnMuXG4gKiBUaGVzZSBrZXlzIGFyZSBtYW5hZ2VkIGFuZCBhcmUgZW1iZWRkZWQgaW5zaWRlIFJhd1N0b3JhZ2VLZXkuU3RvcmFnZU9iamVjdFxuICovXG5leHBvcnQgdmFyIFN0b3JhZ2VLZXk7XG4oZnVuY3Rpb24gKFN0b3JhZ2VLZXkpIHtcbiAgICBTdG9yYWdlS2V5W1wiUm9vdEtleVBhcmFtc1wiXSA9IFwiUk9PVF9LRVlfUEFSQU1TXCI7XG4gICAgU3RvcmFnZUtleVtcIldyYXBwZWRSb290S2V5XCJdID0gXCJXUkFQUEVEX1JPT1RfS0VZXCI7XG4gICAgU3RvcmFnZUtleVtcIlJvb3RLZXlXcmFwcGVyS2V5UGFyYW1zXCJdID0gXCJST09UX0tFWV9XUkFQUEVSX0tFWV9QQVJBTVNcIjtcbiAgICBTdG9yYWdlS2V5W1wiU2Vzc2lvblwiXSA9IFwic2Vzc2lvblwiO1xuICAgIFN0b3JhZ2VLZXlbXCJVc2VyXCJdID0gXCJ1c2VyXCI7XG4gICAgU3RvcmFnZUtleVtcIlNlcnZlckhvc3RcIl0gPSBcInNlcnZlclwiO1xuICAgIFN0b3JhZ2VLZXlbXCJMZWdhY3lVdWlkXCJdID0gXCJ1dWlkXCI7XG4gICAgU3RvcmFnZUtleVtcIkxhc3RTeW5jVG9rZW5cIl0gPSBcInN5bmNUb2tlblwiO1xuICAgIFN0b3JhZ2VLZXlbXCJQYWdpbmF0aW9uVG9rZW5cIl0gPSBcImN1cnNvclRva2VuXCI7XG4gICAgU3RvcmFnZUtleVtcIkJpb21ldHJpY1ByZWZzXCJdID0gXCJiaW9tZXRyaWNzX3ByZWZzXCI7XG4gICAgU3RvcmFnZUtleVtcIk1vYmlsZVBhc3Njb2RlVGltaW5nXCJdID0gXCJwYXNzY29kZV90aW1pbmdcIjtcbiAgICBTdG9yYWdlS2V5W1wiUHJpdmlsZWdlc0V4cGlyZXlcIl0gPSBcIlNlc3Npb25FeHBpcmVzQXRLZXlcIjtcbiAgICBTdG9yYWdlS2V5W1wiUHJpdmlsZWdlc1Nlc3Npb25MZW5ndGhcIl0gPSBcIlNlc3Npb25MZW5ndGhLZXlcIjtcbiAgICBTdG9yYWdlS2V5W1wiU2Vzc2lvbkhpc3RvcnlQZXJzaXN0YWJsZVwiXSA9IFwic2Vzc2lvbkhpc3RvcnlfcGVyc2lzdFwiO1xuICAgIFN0b3JhZ2VLZXlbXCJTZXNzaW9uSGlzdG9yeVJldmlzaW9uc1wiXSA9IFwic2Vzc2lvbkhpc3RvcnlfcmV2aXNpb25zXCI7XG4gICAgU3RvcmFnZUtleVtcIlNlc3Npb25IaXN0b3J5T3B0aW1pemVcIl0gPSBcInNlc3Npb25IaXN0b3J5X2F1dG9PcHRpbWl6ZVwiO1xufSkoU3RvcmFnZUtleSB8fCAoU3RvcmFnZUtleSA9IHt9KSk7XG47XG5leHBvcnQgZnVuY3Rpb24gbmFtZXNwYWNlZEtleShuYW1lc3BhY2UsIGtleSkge1xuICAgIGlmIChuYW1lc3BhY2UpIHtcbiAgICAgICAgcmV0dXJuIGAke25hbWVzcGFjZX0tJHtrZXl9YDtcbiAgICB9XG4gICAgZWxzZSB7XG4gICAgICAgIHJldHVybiBrZXk7XG4gICAgfVxufVxuIl0sIm1hcHBpbmdzIjoiQUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBOzs7QUFHQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFBQTtBQUNBOzs7OztBQUlBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFFQTtBQUNBO0FBQ0EiLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./lib/storage_keys.ts\n')},"./lib/utils.ts":
|
||
/*!**********************!*\
|
||
!*** ./lib/utils.ts ***!
|
||
\**********************/
|
||
/*! exports provided: getGlobalScope, dictToArray, isWebEnvironment, isWebCryptoAvailable, isReactNativeEnvironment, findInArray, searchArray, concatArrays, isObject, isFunction, isNullOrUndefined, isString, greaterOfTwoDates, uniqCombineObjArrays, uniqueArray, lastElement, extendArray, subtractFromArray, removeFromArray, addIfUnique, filterFromArray, arrayByDifference, compareValues, removeFromIndex, addAtIndex, arrayByRemovingFromIndex, objectToValueArray, sortedCopy, topLevelCompare, jsonParseEmbeddedKeys, omitInPlace, omitByCopy, joinPaths, Copy, deepMerge, pickByCopy, deepFreeze, hasGetter, truncateHexString, sleep, unreachable */function(module,__webpack_exports__,__webpack_require__){"use strict";eval('__webpack_require__.r(__webpack_exports__);\n/* WEBPACK VAR INJECTION */(function(global) {/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "getGlobalScope", function() { return getGlobalScope; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "dictToArray", function() { return dictToArray; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "isWebEnvironment", function() { return isWebEnvironment; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "isWebCryptoAvailable", function() { return isWebCryptoAvailable; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "isReactNativeEnvironment", function() { return isReactNativeEnvironment; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "findInArray", function() { return findInArray; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "searchArray", function() { return searchArray; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "concatArrays", function() { return concatArrays; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "isObject", function() { return isObject; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "isFunction", function() { return isFunction; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "isNullOrUndefined", function() { return isNullOrUndefined; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "isString", function() { return isString; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "greaterOfTwoDates", function() { return greaterOfTwoDates; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "uniqCombineObjArrays", function() { return uniqCombineObjArrays; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "uniqueArray", function() { return uniqueArray; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "lastElement", function() { return lastElement; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "extendArray", function() { return extendArray; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "subtractFromArray", function() { return subtractFromArray; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "removeFromArray", function() { return removeFromArray; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "addIfUnique", function() { return addIfUnique; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "filterFromArray", function() { return filterFromArray; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "arrayByDifference", function() { return arrayByDifference; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "compareValues", function() { return compareValues; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "removeFromIndex", function() { return removeFromIndex; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "addAtIndex", function() { return addAtIndex; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "arrayByRemovingFromIndex", function() { return arrayByRemovingFromIndex; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "objectToValueArray", function() { return objectToValueArray; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "sortedCopy", function() { return sortedCopy; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "topLevelCompare", function() { return topLevelCompare; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "jsonParseEmbeddedKeys", function() { return jsonParseEmbeddedKeys; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "omitInPlace", function() { return omitInPlace; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "omitByCopy", function() { return omitByCopy; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "joinPaths", function() { return joinPaths; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "Copy", function() { return Copy; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "deepMerge", function() { return deepMerge; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "pickByCopy", function() { return pickByCopy; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "deepFreeze", function() { return deepFreeze; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "hasGetter", function() { return hasGetter; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "truncateHexString", function() { return truncateHexString; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "sleep", function() { return sleep; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "unreachable", function() { return unreachable; });\n/* harmony import */ var _babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @babel/runtime/regenerator */ "./node_modules/@babel/runtime/regenerator/index.js");\n/* harmony import */ var _babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var lodash_remove__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! lodash/remove */ "./node_modules/lodash/remove.js");\n/* harmony import */ var lodash_remove__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(lodash_remove__WEBPACK_IMPORTED_MODULE_1__);\n/* harmony import */ var lodash_find__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! lodash/find */ "./node_modules/lodash/find.js");\n/* harmony import */ var lodash_find__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(lodash_find__WEBPACK_IMPORTED_MODULE_2__);\n/* harmony import */ var lodash_isArray__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! lodash/isArray */ "./node_modules/lodash/isArray.js");\n/* harmony import */ var lodash_isArray__WEBPACK_IMPORTED_MODULE_3___default = /*#__PURE__*/__webpack_require__.n(lodash_isArray__WEBPACK_IMPORTED_MODULE_3__);\n/* harmony import */ var lodash_mergeWith__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! lodash/mergeWith */ "./node_modules/lodash/mergeWith.js");\n/* harmony import */ var lodash_mergeWith__WEBPACK_IMPORTED_MODULE_4___default = /*#__PURE__*/__webpack_require__.n(lodash_mergeWith__WEBPACK_IMPORTED_MODULE_4__);\n/* harmony import */ var lodash_uniqWith__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! lodash/uniqWith */ "./node_modules/lodash/uniqWith.js");\n/* harmony import */ var lodash_uniqWith__WEBPACK_IMPORTED_MODULE_5___default = /*#__PURE__*/__webpack_require__.n(lodash_uniqWith__WEBPACK_IMPORTED_MODULE_5__);\n/* harmony import */ var lodash_uniq__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! lodash/uniq */ "./node_modules/lodash/uniq.js");\n/* harmony import */ var lodash_uniq__WEBPACK_IMPORTED_MODULE_6___default = /*#__PURE__*/__webpack_require__.n(lodash_uniq__WEBPACK_IMPORTED_MODULE_6__);\n\n\nfunction asyncGeneratorStep(gen, resolve, reject, _next, _throw, key, arg) { try { var info = gen[key](arg); var value = info.value; } catch (error) { reject(error); return; } if (info.done) { resolve(value); } else { Promise.resolve(value).then(_next, _throw); } }\n\nfunction _asyncToGenerator(fn) { return function () { var self = this, args = arguments; return new Promise(function (resolve, reject) { var gen = fn.apply(self, args); function _next(value) { asyncGeneratorStep(gen, resolve, reject, _next, _throw, "next", value); } function _throw(err) { asyncGeneratorStep(gen, resolve, reject, _next, _throw, "throw", err); } _next(undefined); }); }; }\n\nfunction _typeof(obj) { "@babel/helpers - typeof"; if (typeof Symbol === "function" && typeof Symbol.iterator === "symbol") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }; } return _typeof(obj); }\n\n\n\n\n\n\n\nfunction getGlobalScope() {\n return typeof window !== \'undefined\' ? window : typeof global !== \'undefined\' ? global : null;\n}\nfunction dictToArray(dict) {\n return Object.keys(dict).map(function (key) {\n return dict[key];\n });\n}\n/**\n * Whether we are in a web browser\n */\n\nfunction isWebEnvironment() {\n return getGlobalScope() !== null;\n}\n/**\n * Returns true if WebCrypto is available\n * @access public\n */\n\nfunction isWebCryptoAvailable() {\n // @ts-ignore documentMode does not exit in definitions but might exist on IE\n return isWebEnvironment() && !(document && document.documentMode) || /Edge/.test(navigator.userAgent) && window.crypto && !!window.crypto.subtle;\n}\n/**\n * Whether we are in React Native app\n */\n\nfunction isReactNativeEnvironment() {\n return typeof navigator !== \'undefined\' && navigator.product === \'ReactNative\';\n}\n/**\n * Searches array of objects for first object where object[key] === value\n * @returns Matching object or null if not found\n */\n\nfunction findInArray(array, key, value) {\n return array.find(function (item) {\n return item[key] === value;\n });\n}\n/**\n * Searches array of objects for first object where object[key] === value\n * @returns Matching object or null if not found\n */\n\nfunction searchArray(array, predicate) {\n return lodash_find__WEBPACK_IMPORTED_MODULE_2___default()(array, predicate);\n}\n/**\n * Searches array of objects for first object where object[key] === value\n * @returns Matching object or null if not found\n */\n\nfunction concatArrays() {\n var result = [];\n\n for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n\n for (var _i = 0, _args = args; _i < _args.length; _i++) {\n var array = _args[_i];\n result = result.concat(array);\n }\n\n return result;\n}\n/**\n * @returns Whether the value is a function or object\n */\n\nfunction isObject(value) {\n if (value === null) {\n return false;\n }\n\n return typeof value === \'function\' || _typeof(value) === \'object\';\n}\n/**\n * @returns Whether the value is a function\n */\n\nfunction isFunction(value) {\n if (value === null) {\n return false;\n }\n\n return typeof value === \'function\';\n}\n/**\n * @returns True if the object is null or undefined, otherwise false\n */\n\nfunction isNullOrUndefined(value) {\n return value === null || value === undefined;\n}\n/**\n * @returns Whether the value is a string\n */\n\nfunction isString(value) {\n return typeof value === \'string\' || value instanceof String;\n}\n/**\n * @returns The greater of the two dates\n */\n\nfunction greaterOfTwoDates(dateA, dateB) {\n if (dateA > dateB) {\n return dateA;\n } else {\n return dateB;\n }\n}\n/**\n * Returns a new array containing only unique values by combining the two input arrays.\n * Elements are unique based on the values of `equalityKeys`.\n * @param equalityKeys - Keys to determine element equality\n * @returns Array containing unique values\n */\n\nfunction uniqCombineObjArrays(arrayA, arrayB, equalityKeys) {\n return lodash_uniqWith__WEBPACK_IMPORTED_MODULE_5___default()(arrayA.concat(arrayB), function (a, b) {\n var _iteratorNormalCompletion = true;\n var _didIteratorError = false;\n var _iteratorError = undefined;\n\n try {\n for (var _iterator = equalityKeys[Symbol.iterator](), _step; !(_iteratorNormalCompletion = (_step = _iterator.next()).done); _iteratorNormalCompletion = true) {\n var key = _step.value;\n\n if (a[key] !== b[key]) {\n return false;\n }\n }\n } catch (err) {\n _didIteratorError = true;\n _iteratorError = err;\n } finally {\n try {\n if (!_iteratorNormalCompletion && _iterator.return != null) {\n _iterator.return();\n }\n } finally {\n if (_didIteratorError) {\n throw _iteratorError;\n }\n }\n }\n\n return true;\n });\n}\n/**\n * Returns a new array containing only unique values\n * @returns Array containing unique values\n */\n\nfunction uniqueArray(array) {\n return lodash_uniq__WEBPACK_IMPORTED_MODULE_6___default()(array);\n}\n/**\n * Returns the last element in the array.\n * @returns The last element in the array\n */\n\nfunction lastElement(array) {\n return array[array.length - 1];\n}\n/**\n * Adds all items from otherArray into inArray, in-place.\n * Does not return a value.\n */\n\nfunction extendArray(inArray, otherArray) {\n var _iteratorNormalCompletion2 = true;\n var _didIteratorError2 = false;\n var _iteratorError2 = undefined;\n\n try {\n for (var _iterator2 = otherArray[Symbol.iterator](), _step2; !(_iteratorNormalCompletion2 = (_step2 = _iterator2.next()).done); _iteratorNormalCompletion2 = true) {\n var value = _step2.value;\n inArray.push(value);\n }\n } catch (err) {\n _didIteratorError2 = true;\n _iteratorError2 = err;\n } finally {\n try {\n if (!_iteratorNormalCompletion2 && _iterator2.return != null) {\n _iterator2.return();\n }\n } finally {\n if (_didIteratorError2) {\n throw _iteratorError2;\n }\n }\n }\n}\n/**\n * Removes all items appearing in toSubtract from inArray, in-place\n * @param toSubtract - The list of items to remove from inArray\n */\n\nfunction subtractFromArray(inArray, toSubtract) {\n var _iteratorNormalCompletion3 = true;\n var _didIteratorError3 = false;\n var _iteratorError3 = undefined;\n\n try {\n for (var _iterator3 = toSubtract[Symbol.iterator](), _step3; !(_iteratorNormalCompletion3 = (_step3 = _iterator3.next()).done); _iteratorNormalCompletion3 = true) {\n var value = _step3.value;\n removeFromArray(inArray, value);\n }\n } catch (err) {\n _didIteratorError3 = true;\n _iteratorError3 = err;\n } finally {\n try {\n if (!_iteratorNormalCompletion3 && _iterator3.return != null) {\n _iterator3.return();\n }\n } finally {\n if (_didIteratorError3) {\n throw _iteratorError3;\n }\n }\n }\n}\n/**\n * Removes the first matching element of an array by strict equality.\n * If no matchin element is found, the array is left unchanged.\n */\n\nfunction removeFromArray(array, value) {\n var valueIndex = array.indexOf(value);\n\n if (valueIndex === -1) {\n return;\n }\n\n array.splice(valueIndex, 1);\n}\n/**\n * Adds the element to the array if the array does not already include the value.\n * The array is searched via array.indexOf\n */\n\nfunction addIfUnique(array, value) {\n if (!array.includes(value)) {\n array.push(value);\n }\n}\n/**\n * Removes an object from the array in-place by searching for an object where all the\n * key/values in predicate match with the candidate element.\n */\n\nfunction filterFromArray(array, predicate) {\n lodash_remove__WEBPACK_IMPORTED_MODULE_1___default()(array, predicate);\n}\n/**\n * Returns a new array by removing all elements in subtract from array\n */\n\nfunction arrayByDifference(array, subtract) {\n return array.filter(function (x) {\n return !subtract.includes(x);\n }).concat(subtract.filter(function (x) {\n return !array.includes(x);\n }));\n}\nfunction compareValues(left, right) {\n if (left && !right || !left && right) {\n return false;\n }\n\n if (left instanceof Date && right instanceof Date) {\n return left.getTime() === right.getTime();\n } else if (left instanceof String && right instanceof String) {\n return left === right;\n } else {\n return topLevelCompare(left, right);\n }\n}\n/**\n * Removes the value from the array at the given index, in-place.\n */\n\nfunction removeFromIndex(array, index) {\n array.splice(index, 1);\n}\n/**\n * Adds the value from the array at the given index, in-place.\n */\n\nfunction addAtIndex(array, element, index) {\n array.splice(index, 0, element);\n}\n/**\n * Returns a new array by removeing the value from the array at the given index\n */\n\nfunction arrayByRemovingFromIndex(array, index) {\n var copy = array.slice();\n removeFromIndex(copy, index);\n return copy;\n}\n/**\n * Returns an array where each element is the value of a top-level\n * object key.\n * Example: objectToValueArray({a: 1, b: 2}) returns [1, 2]\n */\n\nfunction objectToValueArray(object) {\n var values = [];\n\n for (var _i2 = 0, _Object$keys = Object.keys(object); _i2 < _Object$keys.length; _i2++) {\n var key = _Object$keys[_i2];\n values.push(object[key]);\n }\n\n return values;\n}\n/**\n * Returns a key-sorted copy of the object.\n * For example, sortedCopy({b: \'1\', a: \'2\'}) returns {a: \'2\', b: \'1\'}\n */\n\nfunction sortedCopy(object) {\n var keys = Object.keys(object).sort();\n var result = {};\n var _iteratorNormalCompletion4 = true;\n var _didIteratorError4 = false;\n var _iteratorError4 = undefined;\n\n try {\n for (var _iterator4 = keys[Symbol.iterator](), _step4; !(_iteratorNormalCompletion4 = (_step4 = _iterator4.next()).done); _iteratorNormalCompletion4 = true) {\n var key = _step4.value;\n result[key] = object[key];\n }\n } catch (err) {\n _didIteratorError4 = true;\n _iteratorError4 = err;\n } finally {\n try {\n if (!_iteratorNormalCompletion4 && _iterator4.return != null) {\n _iterator4.return();\n }\n } finally {\n if (_didIteratorError4) {\n throw _iteratorError4;\n }\n }\n }\n\n return Copy(result);\n}\n/** Compares for equality by comparing top-level keys value equality (===) */\n\nfunction topLevelCompare(left, right) {\n if (!left && !right) {\n return true;\n }\n\n if (!left || !right) {\n return false;\n }\n\n var leftKeys = Object.keys(left);\n var rightKeys = Object.keys(right);\n\n if (leftKeys.length !== rightKeys.length) {\n return false;\n }\n\n for (var _i3 = 0, _leftKeys = leftKeys; _i3 < _leftKeys.length; _i3++) {\n var key = _leftKeys[_i3];\n\n if (left[key] !== right[key]) {\n return false;\n }\n }\n\n return true;\n}\n/**\n * Returns a new object by attempting to JSON.parse any top-level object keys.\n */\n\nfunction jsonParseEmbeddedKeys(object) {\n var result = {};\n\n for (var _i4 = 0, _Object$keys2 = Object.keys(object); _i4 < _Object$keys2.length; _i4++) {\n var key = _Object$keys2[_i4];\n var value = void 0;\n\n try {\n value = JSON.parse(object[key]);\n ;\n } catch (error) {\n value = object[key];\n }\n\n result[key] = value;\n }\n\n return result;\n}\n/**\n * Deletes keys of the input object.\n */\n\nfunction omitInPlace(object, keys) {\n if (!object) {\n return;\n }\n\n var _iteratorNormalCompletion5 = true;\n var _didIteratorError5 = false;\n var _iteratorError5 = undefined;\n\n try {\n for (var _iterator5 = keys[Symbol.iterator](), _step5; !(_iteratorNormalCompletion5 = (_step5 = _iterator5.next()).done); _iteratorNormalCompletion5 = true) {\n var key = _step5.value;\n delete object[key];\n }\n } catch (err) {\n _didIteratorError5 = true;\n _iteratorError5 = err;\n } finally {\n try {\n if (!_iteratorNormalCompletion5 && _iterator5.return != null) {\n _iterator5.return();\n }\n } finally {\n if (_didIteratorError5) {\n throw _iteratorError5;\n }\n }\n }\n}\n/**\n * Creates a new object by omitting `keys` from `object`\n */\n\nfunction omitByCopy(object, keys) {\n var newObject = Object.assign({}, object);\n /**\n * Lodash\'s omit, which was previously used, seems to cause unexpected behavior\n * when payload is an ES6 item class. So we instead manually omit each key.\n */\n\n var _iteratorNormalCompletion6 = true;\n var _didIteratorError6 = false;\n var _iteratorError6 = undefined;\n\n try {\n for (var _iterator6 = keys[Symbol.iterator](), _step6; !(_iteratorNormalCompletion6 = (_step6 = _iterator6.next()).done); _iteratorNormalCompletion6 = true) {\n var key = _step6.value;\n delete newObject[key];\n }\n } catch (err) {\n _didIteratorError6 = true;\n _iteratorError6 = err;\n } finally {\n try {\n if (!_iteratorNormalCompletion6 && _iterator6.return != null) {\n _iterator6.return();\n }\n } finally {\n if (_didIteratorError6) {\n throw _iteratorError6;\n }\n }\n }\n\n return newObject;\n}\n/**\n * Similiar to Node\'s path.join, this function combines an array of paths into\n * one resolved path.\n */\n\nfunction joinPaths() {\n for (var _len2 = arguments.length, args = new Array(_len2), _key2 = 0; _key2 < _len2; _key2++) {\n args[_key2] = arguments[_key2];\n }\n\n return args.map(function (part, i) {\n if (i === 0) {\n return part.trim().replace(/[\\/]*$/g, \'\');\n } else {\n return part.trim().replace(/(^[\\/]*|[\\/]*$)/g, \'\');\n }\n }).filter(function (x) {\n return x.length;\n }).join(\'/\');\n}\n/**\n * Creates a copy of the input object by JSON stringifying the object then JSON parsing\n * the string (if the input is an object). If input is date, a Date copy will be created,\n * and if input is a primitive value, it will be returned as-is.\n */\n\nfunction Copy(object) {\n if (object instanceof Date) {\n return new Date(object);\n } else if (isObject(object)) {\n return JSON.parse(JSON.stringify(object));\n } else {\n return object;\n }\n}\n/**\n * Merges the second object parameter into the first object, in-place.\n * @returns The now modified first object parameter passed into the function.\n */\n\nfunction deepMerge(a, b) {\n /**\n * lodash.merge will not merge a full array with an empty one.\n * deepMerge will replace arrays wholesale\n */\n if (!a || !b) {\n throw \'Attempting to deepMerge with null values\';\n }\n\n var customizer = function customizer(aValue, bValue) {\n if (lodash_isArray__WEBPACK_IMPORTED_MODULE_3___default()(aValue)) {\n return bValue;\n }\n };\n\n lodash_mergeWith__WEBPACK_IMPORTED_MODULE_4___default()(a, b, customizer);\n return a;\n}\n/**\n * Returns a new object by selecting certain keys from input object.\n */\n\nfunction pickByCopy(object, keys) {\n var result = {};\n var _iteratorNormalCompletion7 = true;\n var _didIteratorError7 = false;\n var _iteratorError7 = undefined;\n\n try {\n for (var _iterator7 = keys[Symbol.iterator](), _step7; !(_iteratorNormalCompletion7 = (_step7 = _iterator7.next()).done); _iteratorNormalCompletion7 = true) {\n var key = _step7.value;\n result[key] = object[key];\n }\n } catch (err) {\n _didIteratorError7 = true;\n _iteratorError7 = err;\n } finally {\n try {\n if (!_iteratorNormalCompletion7 && _iterator7.return != null) {\n _iterator7.return();\n }\n } finally {\n if (_didIteratorError7) {\n throw _iteratorError7;\n }\n }\n }\n\n return Copy(result);\n}\n/**\n * Recursively makes an object immutable via Object.freeze\n */\n\nfunction deepFreeze(object) {\n var propNames = Object.getOwnPropertyNames(object);\n var _iteratorNormalCompletion8 = true;\n var _didIteratorError8 = false;\n var _iteratorError8 = undefined;\n\n try {\n for (var _iterator8 = propNames[Symbol.iterator](), _step8; !(_iteratorNormalCompletion8 = (_step8 = _iterator8.next()).done); _iteratorNormalCompletion8 = true) {\n var name = _step8.value;\n var value = object[name];\n\n if (value && _typeof(value) === \'object\' && !Object.isFrozen(value)) {\n object[name] = deepFreeze(value);\n } else {\n object[name] = value;\n }\n }\n } catch (err) {\n _didIteratorError8 = true;\n _iteratorError8 = err;\n } finally {\n try {\n if (!_iteratorNormalCompletion8 && _iterator8.return != null) {\n _iterator8.return();\n }\n } finally {\n if (_didIteratorError8) {\n throw _iteratorError8;\n }\n }\n }\n\n return Object.freeze(object);\n}\n/**\n * Determines if an object has a getter defined for a given property\n */\n\nfunction hasGetter(object, property) {\n var descriptor = Object.getOwnPropertyDescriptor(Object.getPrototypeOf(object), property);\n return descriptor && !isNullOrUndefined(descriptor.get);\n}\n/**\n * Truncates a hex string into a desired number of bits\n * @returns A hexadecimal string truncated to the number of desired bits\n */\n\nfunction truncateHexString(string, desiredBits) {\n var BITS_PER_HEX_CHAR = 4;\n var desiredCharLength = desiredBits / BITS_PER_HEX_CHAR;\n return string.substring(0, desiredCharLength);\n}\n/**\n * When awaited, this function allows code execution to pause for a set time.\n * Should be used primarily for testing.\n */\n\nfunction sleep(_x) {\n return _sleep.apply(this, arguments);\n}\n\nfunction _sleep() {\n _sleep = _asyncToGenerator( /*#__PURE__*/_babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0___default.a.mark(function _callee(milliseconds) {\n return _babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0___default.a.wrap(function _callee$(_context) {\n while (1) {\n switch (_context.prev = _context.next) {\n case 0:\n console.warn(\'Sleeping for\', milliseconds);\n return _context.abrupt("return", new Promise(function (resolve, reject) {\n setTimeout(function () {\n resolve();\n }, milliseconds);\n }));\n\n case 2:\n case "end":\n return _context.stop();\n }\n }\n }, _callee);\n }));\n return _sleep.apply(this, arguments);\n}\n\nfunction unreachable(message) {\n throw Error(message);\n}\n/* WEBPACK VAR INJECTION */}.call(this, __webpack_require__(/*! ./../node_modules/webpack/buildin/global.js */ "./node_modules/webpack/buildin/global.js")))//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9saWIvdXRpbHMudHMuanMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly9TTkxpYnJhcnkvLi9saWIvdXRpbHMudHM/YTA4MSJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgcmVtb3ZlIGZyb20gJ2xvZGFzaC9yZW1vdmUnO1xuaW1wb3J0IGZpbmQgZnJvbSAnbG9kYXNoL2ZpbmQnO1xuaW1wb3J0IGlzQXJyYXkgZnJvbSAnbG9kYXNoL2lzQXJyYXknO1xuaW1wb3J0IG1lcmdlV2l0aCBmcm9tICdsb2Rhc2gvbWVyZ2VXaXRoJztcbmltcG9ydCB1bmlxV2l0aCBmcm9tICdsb2Rhc2gvdW5pcVdpdGgnO1xuaW1wb3J0IHVuaXEgZnJvbSAnbG9kYXNoL3VuaXEnO1xuZXhwb3J0IGZ1bmN0aW9uIGdldEdsb2JhbFNjb3BlKCkge1xuICAgIHJldHVybiB0eXBlb2Ygd2luZG93ICE9PSAndW5kZWZpbmVkJ1xuICAgICAgICA/IHdpbmRvd1xuICAgICAgICA6ICh0eXBlb2YgZ2xvYmFsICE9PSAndW5kZWZpbmVkJyA/IGdsb2JhbCA6IG51bGwpO1xufVxuZXhwb3J0IGZ1bmN0aW9uIGRpY3RUb0FycmF5KGRpY3QpIHtcbiAgICByZXR1cm4gT2JqZWN0LmtleXMoZGljdCkubWFwKChrZXkpID0+IGRpY3Rba2V5XSk7XG59XG4vKipcbiAqIFdoZXRoZXIgd2UgYXJlIGluIGEgd2ViIGJyb3dzZXJcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGlzV2ViRW52aXJvbm1lbnQoKSB7XG4gICAgcmV0dXJuIGdldEdsb2JhbFNjb3BlKCkgIT09IG51bGw7XG59XG4vKipcbiAqIFJldHVybnMgdHJ1ZSBpZiBXZWJDcnlwdG8gaXMgYXZhaWxhYmxlXG4gKiBAYWNjZXNzIHB1YmxpY1xuICovXG5leHBvcnQgZnVuY3Rpb24gaXNXZWJDcnlwdG9BdmFpbGFibGUoKSB7XG4gICAgLy8gQHRzLWlnbm9yZSBkb2N1bWVudE1vZGUgZG9lcyBub3QgZXhpdCBpbiBkZWZpbml0aW9ucyBidXQgbWlnaHQgZXhpc3Qgb24gSUVcbiAgICByZXR1cm4gaXNXZWJFbnZpcm9ubWVudCgpICYmICEoZG9jdW1lbnQgJiYgZG9jdW1lbnQuZG9jdW1lbnRNb2RlKSB8fCAvRWRnZS8udGVzdChuYXZpZ2F0b3IudXNlckFnZW50KSAmJiB3aW5kb3cuY3J5cHRvICYmICEhd2luZG93LmNyeXB0by5zdWJ0bGU7XG59XG4vKipcbiAqIFdoZXRoZXIgd2UgYXJlIGluIFJlYWN0IE5hdGl2ZSBhcHBcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGlzUmVhY3ROYXRpdmVFbnZpcm9ubWVudCgpIHtcbiAgICByZXR1cm4gdHlwZW9mIG5hdmlnYXRvciAhPT0gJ3VuZGVmaW5lZCcgJiYgbmF2aWdhdG9yLnByb2R1Y3QgPT09ICdSZWFjdE5hdGl2ZSc7XG59XG4vKipcbiAqIFNlYXJjaGVzIGFycmF5IG9mIG9iamVjdHMgZm9yIGZpcnN0IG9iamVjdCB3aGVyZSBvYmplY3Rba2V5XSA9PT0gdmFsdWVcbiAqIEByZXR1cm5zIE1hdGNoaW5nIG9iamVjdCBvciBudWxsIGlmIG5vdCBmb3VuZFxuICovXG5leHBvcnQgZnVuY3Rpb24gZmluZEluQXJyYXkoYXJyYXksIGtleSwgdmFsdWUpIHtcbiAgICByZXR1cm4gYXJyYXkuZmluZCgoaXRlbSkgPT4gaXRlbVtrZXldID09PSB2YWx1ZSk7XG59XG4vKipcbiAqIFNlYXJjaGVzIGFycmF5IG9mIG9iamVjdHMgZm9yIGZpcnN0IG9iamVjdCB3aGVyZSBvYmplY3Rba2V5XSA9PT0gdmFsdWVcbiAqIEByZXR1cm5zIE1hdGNoaW5nIG9iamVjdCBvciBudWxsIGlmIG5vdCBmb3VuZFxuICovXG5leHBvcnQgZnVuY3Rpb24gc2VhcmNoQXJyYXkoYXJyYXksIHByZWRpY2F0ZSkge1xuICAgIHJldHVybiBmaW5kKGFycmF5LCBwcmVkaWNhdGUpO1xufVxuLyoqXG4gKiBTZWFyY2hlcyBhcnJheSBvZiBvYmplY3RzIGZvciBmaXJzdCBvYmplY3Qgd2hlcmUgb2JqZWN0W2tleV0gPT09IHZhbHVlXG4gKiBAcmV0dXJucyBNYXRjaGluZyBvYmplY3Qgb3IgbnVsbCBpZiBub3QgZm91bmRcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGNvbmNhdEFycmF5cyguLi5hcmdzKSB7XG4gICAgbGV0IHJlc3VsdCA9IFtdO1xuICAgIGZvciAoY29uc3QgYXJyYXkgb2YgYXJncykge1xuICAgICAgICByZXN1bHQgPSByZXN1bHQuY29uY2F0KGFycmF5KTtcbiAgICB9XG4gICAgcmV0dXJuIHJlc3VsdDtcbn1cbi8qKlxuICogQHJldHVybnMgV2hldGhlciB0aGUgdmFsdWUgaXMgYSBmdW5jdGlvbiBvciBvYmplY3RcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGlzT2JqZWN0KHZhbHVlKSB7XG4gICAgaWYgKHZhbHVlID09PSBudWxsKSB7XG4gICAgICAgIHJldHVybiBmYWxzZTtcbiAgICB9XG4gICAgcmV0dXJuIHR5cGVvZiB2YWx1ZSA9PT0gJ2Z1bmN0aW9uJyB8fCB0eXBlb2YgdmFsdWUgPT09ICdvYmplY3QnO1xufVxuLyoqXG4gKiBAcmV0dXJucyBXaGV0aGVyIHRoZSB2YWx1ZSBpcyBhIGZ1bmN0aW9uXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBpc0Z1bmN0aW9uKHZhbHVlKSB7XG4gICAgaWYgKHZhbHVlID09PSBudWxsKSB7XG4gICAgICAgIHJldHVybiBmYWxzZTtcbiAgICB9XG4gICAgcmV0dXJuIHR5cGVvZiB2YWx1ZSA9PT0gJ2Z1bmN0aW9uJztcbn1cbi8qKlxuICogQHJldHVybnMgVHJ1ZSBpZiB0aGUgb2JqZWN0IGlzIG51bGwgb3IgdW5kZWZpbmVkLCBvdGhlcndpc2UgZmFsc2VcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGlzTnVsbE9yVW5kZWZpbmVkKHZhbHVlKSB7XG4gICAgcmV0dXJuIHZhbHVlID09PSBudWxsIHx8IHZhbHVlID09PSB1bmRlZmluZWQ7XG59XG4vKipcbiAqIEByZXR1cm5zIFdoZXRoZXIgdGhlIHZhbHVlIGlzIGEgc3RyaW5nXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBpc1N0cmluZyh2YWx1ZSkge1xuICAgIHJldHVybiB0eXBlb2YgdmFsdWUgPT09ICdzdHJpbmcnIHx8IHZhbHVlIGluc3RhbmNlb2YgU3RyaW5nO1xufVxuLyoqXG4gKiBAcmV0dXJucyBUaGUgZ3JlYXRlciBvZiB0aGUgdHdvIGRhdGVzXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBncmVhdGVyT2ZUd29EYXRlcyhkYXRlQSwgZGF0ZUIpIHtcbiAgICBpZiAoZGF0ZUEgPiBkYXRlQikge1xuICAgICAgICByZXR1cm4gZGF0ZUE7XG4gICAgfVxuICAgIGVsc2Uge1xuICAgICAgICByZXR1cm4gZGF0ZUI7XG4gICAgfVxufVxuLyoqXG4gKiBSZXR1cm5zIGEgbmV3IGFycmF5IGNvbnRhaW5pbmcgb25seSB1bmlxdWUgdmFsdWVzIGJ5IGNvbWJpbmluZyB0aGUgdHdvIGlucHV0IGFycmF5cy5cbiAqIEVsZW1lbnRzIGFyZSB1bmlxdWUgYmFzZWQgb24gdGhlIHZhbHVlcyBvZiBgZXF1YWxpdHlLZXlzYC5cbiAqIEBwYXJhbSBlcXVhbGl0eUtleXMgLSBLZXlzIHRvIGRldGVybWluZSBlbGVtZW50IGVxdWFsaXR5XG4gKiBAcmV0dXJucyBBcnJheSBjb250YWluaW5nIHVuaXF1ZSB2YWx1ZXNcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHVuaXFDb21iaW5lT2JqQXJyYXlzKGFycmF5QSwgYXJyYXlCLCBlcXVhbGl0eUtleXMpIHtcbiAgICByZXR1cm4gdW5pcVdpdGgoYXJyYXlBLmNvbmNhdChhcnJheUIpLCAoYSwgYikgPT4ge1xuICAgICAgICBmb3IgKGNvbnN0IGtleSBvZiBlcXVhbGl0eUtleXMpIHtcbiAgICAgICAgICAgIGlmIChhW2tleV0gIT09IGJba2V5XSkge1xuICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICB9KTtcbn1cbi8qKlxuICogUmV0dXJucyBhIG5ldyBhcnJheSBjb250YWluaW5nIG9ubHkgdW5pcXVlIHZhbHVlc1xuICogQHJldHVybnMgQXJyYXkgY29udGFpbmluZyB1bmlxdWUgdmFsdWVzXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiB1bmlxdWVBcnJheShhcnJheSkge1xuICAgIHJldHVybiB1bmlxKGFycmF5KTtcbn1cbi8qKlxuICogUmV0dXJucyB0aGUgbGFzdCBlbGVtZW50IGluIHRoZSBhcnJheS5cbiAqIEByZXR1cm5zIFRoZSBsYXN0IGVsZW1lbnQgaW4gdGhlIGFycmF5XG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBsYXN0RWxlbWVudChhcnJheSkge1xuICAgIHJldHVybiBhcnJheVthcnJheS5sZW5ndGggLSAxXTtcbn1cbi8qKlxuICogQWRkcyBhbGwgaXRlbXMgZnJvbSBvdGhlckFycmF5IGludG8gaW5BcnJheSwgaW4tcGxhY2UuXG4gKiBEb2VzIG5vdCByZXR1cm4gYSB2YWx1ZS5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGV4dGVuZEFycmF5KGluQXJyYXksIG90aGVyQXJyYXkpIHtcbiAgICBmb3IgKGNvbnN0IHZhbHVlIG9mIG90aGVyQXJyYXkpIHtcbiAgICAgICAgaW5BcnJheS5wdXNoKHZhbHVlKTtcbiAgICB9XG59XG4vKipcbiAqIFJlbW92ZXMgYWxsIGl0ZW1zIGFwcGVhcmluZyBpbiB0b1N1YnRyYWN0IGZyb20gaW5BcnJheSwgaW4tcGxhY2VcbiAqIEBwYXJhbSB0b1N1YnRyYWN0IC0gVGhlIGxpc3Qgb2YgaXRlbXMgdG8gcmVtb3ZlIGZyb20gaW5BcnJheVxuICovXG5leHBvcnQgZnVuY3Rpb24gc3VidHJhY3RGcm9tQXJyYXkoaW5BcnJheSwgdG9TdWJ0cmFjdCkge1xuICAgIGZvciAoY29uc3QgdmFsdWUgb2YgdG9TdWJ0cmFjdCkge1xuICAgICAgICByZW1vdmVGcm9tQXJyYXkoaW5BcnJheSwgdmFsdWUpO1xuICAgIH1cbn1cbi8qKlxuICogUmVtb3ZlcyB0aGUgZmlyc3QgbWF0Y2hpbmcgZWxlbWVudCBvZiBhbiBhcnJheSBieSBzdHJpY3QgZXF1YWxpdHkuXG4gKiBJZiBubyBtYXRjaGluIGVsZW1lbnQgaXMgZm91bmQsIHRoZSBhcnJheSBpcyBsZWZ0IHVuY2hhbmdlZC5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHJlbW92ZUZyb21BcnJheShhcnJheSwgdmFsdWUpIHtcbiAgICBjb25zdCB2YWx1ZUluZGV4ID0gYXJyYXkuaW5kZXhPZih2YWx1ZSk7XG4gICAgaWYgKHZhbHVlSW5kZXggPT09IC0xKSB7XG4gICAgICAgIHJldHVybjtcbiAgICB9XG4gICAgYXJyYXkuc3BsaWNlKHZhbHVlSW5kZXgsIDEpO1xufVxuLyoqXG4gKiBBZGRzIHRoZSBlbGVtZW50IHRvIHRoZSBhcnJheSBpZiB0aGUgYXJyYXkgZG9lcyBub3QgYWxyZWFkeSBpbmNsdWRlIHRoZSB2YWx1ZS5cbiAqIFRoZSBhcnJheSBpcyBzZWFyY2hlZCB2aWEgYXJyYXkuaW5kZXhPZlxuICovXG5leHBvcnQgZnVuY3Rpb24gYWRkSWZVbmlxdWUoYXJyYXksIHZhbHVlKSB7XG4gICAgaWYgKCFhcnJheS5pbmNsdWRlcyh2YWx1ZSkpIHtcbiAgICAgICAgYXJyYXkucHVzaCh2YWx1ZSk7XG4gICAgfVxufVxuLyoqXG4gKiBSZW1vdmVzIGFuIG9iamVjdCBmcm9tIHRoZSBhcnJheSBpbi1wbGFjZSBieSBzZWFyY2hpbmcgZm9yIGFuIG9iamVjdCB3aGVyZSBhbGwgdGhlXG4gKiBrZXkvdmFsdWVzIGluIHByZWRpY2F0ZSBtYXRjaCB3aXRoIHRoZSBjYW5kaWRhdGUgZWxlbWVudC5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGZpbHRlckZyb21BcnJheShhcnJheSwgcHJlZGljYXRlKSB7XG4gICAgcmVtb3ZlKGFycmF5LCBwcmVkaWNhdGUpO1xufVxuLyoqXG4gKiBSZXR1cm5zIGEgbmV3IGFycmF5IGJ5IHJlbW92aW5nIGFsbCBlbGVtZW50cyBpbiBzdWJ0cmFjdCBmcm9tIGFycmF5XG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBhcnJheUJ5RGlmZmVyZW5jZShhcnJheSwgc3VidHJhY3QpIHtcbiAgICByZXR1cm4gYXJyYXlcbiAgICAgICAgLmZpbHRlcih4ID0+ICFzdWJ0cmFjdC5pbmNsdWRlcyh4KSlcbiAgICAgICAgLmNvbmNhdChzdWJ0cmFjdC5maWx0ZXIoeCA9PiAhYXJyYXkuaW5jbHVkZXMoeCkpKTtcbn1cbmV4cG9ydCBmdW5jdGlvbiBjb21wYXJlVmFsdWVzKGxlZnQsIHJpZ2h0KSB7XG4gICAgaWYgKChsZWZ0ICYmICFyaWdodCkgfHwgKCFsZWZ0ICYmIHJpZ2h0KSkge1xuICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgfVxuICAgIGlmIChsZWZ0IGluc3RhbmNlb2YgRGF0ZSAmJiByaWdodCBpbnN0YW5jZW9mIERhdGUpIHtcbiAgICAgICAgcmV0dXJuIGxlZnQuZ2V0VGltZSgpID09PSByaWdodC5nZXRUaW1lKCk7XG4gICAgfVxuICAgIGVsc2UgaWYgKGxlZnQgaW5zdGFuY2VvZiBTdHJpbmcgJiYgcmlnaHQgaW5zdGFuY2VvZiBTdHJpbmcpIHtcbiAgICAgICAgcmV0dXJuIGxlZnQgPT09IHJpZ2h0O1xuICAgIH1cbiAgICBlbHNlIHtcbiAgICAgICAgcmV0dXJuIHRvcExldmVsQ29tcGFyZShsZWZ0LCByaWdodCk7XG4gICAgfVxufVxuLyoqXG4gKiBSZW1vdmVzIHRoZSB2YWx1ZSBmcm9tIHRoZSBhcnJheSBhdCB0aGUgZ2l2ZW4gaW5kZXgsIGluLXBsYWNlLlxuICovXG5leHBvcnQgZnVuY3Rpb24gcmVtb3ZlRnJvbUluZGV4KGFycmF5LCBpbmRleCkge1xuICAgIGFycmF5LnNwbGljZShpbmRleCwgMSk7XG59XG4vKipcbiAqIEFkZHMgdGhlIHZhbHVlIGZyb20gdGhlIGFycmF5IGF0IHRoZSBnaXZlbiBpbmRleCwgaW4tcGxhY2UuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBhZGRBdEluZGV4KGFycmF5LCBlbGVtZW50LCBpbmRleCkge1xuICAgIGFycmF5LnNwbGljZShpbmRleCwgMCwgZWxlbWVudCk7XG59XG4vKipcbiAqIFJldHVybnMgYSBuZXcgYXJyYXkgYnkgcmVtb3ZlaW5nIHRoZSB2YWx1ZSBmcm9tIHRoZSBhcnJheSBhdCB0aGUgZ2l2ZW4gaW5kZXhcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGFycmF5QnlSZW1vdmluZ0Zyb21JbmRleChhcnJheSwgaW5kZXgpIHtcbiAgICBjb25zdCBjb3B5ID0gYXJyYXkuc2xpY2UoKTtcbiAgICByZW1vdmVGcm9tSW5kZXgoY29weSwgaW5kZXgpO1xuICAgIHJldHVybiBjb3B5O1xufVxuLyoqXG4gKiBSZXR1cm5zIGFuIGFycmF5IHdoZXJlIGVhY2ggZWxlbWVudCBpcyB0aGUgdmFsdWUgb2YgYSB0b3AtbGV2ZWxcbiAqIG9iamVjdCBrZXkuXG4gKiBFeGFtcGxlOiBvYmplY3RUb1ZhbHVlQXJyYXkoe2E6IDEsIGI6IDJ9KSByZXR1cm5zIFsxLCAyXVxuICovXG5leHBvcnQgZnVuY3Rpb24gb2JqZWN0VG9WYWx1ZUFycmF5KG9iamVjdCkge1xuICAgIGNvbnN0IHZhbHVlcyA9IFtdO1xuICAgIGZvciAoY29uc3Qga2V5IG9mIE9iamVjdC5rZXlzKG9iamVjdCkpIHtcbiAgICAgICAgdmFsdWVzLnB1c2gob2JqZWN0W2tleV0pO1xuICAgIH1cbiAgICByZXR1cm4gdmFsdWVzO1xufVxuLyoqXG4gKiBSZXR1cm5zIGEga2V5LXNvcnRlZCBjb3B5IG9mIHRoZSBvYmplY3QuXG4gKiBGb3IgZXhhbXBsZSwgc29ydGVkQ29weSh7YjogJzEnLCBhOiAnMid9KSByZXR1cm5zIHthOiAnMicsIGI6ICcxJ31cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHNvcnRlZENvcHkob2JqZWN0KSB7XG4gICAgY29uc3Qga2V5cyA9IE9iamVjdC5rZXlzKG9iamVjdCkuc29ydCgpO1xuICAgIGNvbnN0IHJlc3VsdCA9IHt9O1xuICAgIGZvciAoY29uc3Qga2V5IG9mIGtleXMpIHtcbiAgICAgICAgcmVzdWx0W2tleV0gPSBvYmplY3Rba2V5XTtcbiAgICB9XG4gICAgcmV0dXJuIENvcHkocmVzdWx0KTtcbn1cbi8qKiBDb21wYXJlcyBmb3IgZXF1YWxpdHkgYnkgY29tcGFyaW5nIHRvcC1sZXZlbCBrZXlzIHZhbHVlIGVxdWFsaXR5ICg9PT0pICovXG5leHBvcnQgZnVuY3Rpb24gdG9wTGV2ZWxDb21wYXJlKGxlZnQsIHJpZ2h0KSB7XG4gICAgaWYgKCFsZWZ0ICYmICFyaWdodCkge1xuICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICB9XG4gICAgaWYgKCFsZWZ0IHx8ICFyaWdodCkge1xuICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgfVxuICAgIGNvbnN0IGxlZnRLZXlzID0gT2JqZWN0LmtleXMobGVmdCk7XG4gICAgY29uc3QgcmlnaHRLZXlzID0gT2JqZWN0LmtleXMocmlnaHQpO1xuICAgIGlmIChsZWZ0S2V5cy5sZW5ndGggIT09IHJpZ2h0S2V5cy5sZW5ndGgpIHtcbiAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH1cbiAgICBmb3IgKGNvbnN0IGtleSBvZiBsZWZ0S2V5cykge1xuICAgICAgICBpZiAobGVmdFtrZXldICE9PSByaWdodFtrZXldKSB7XG4gICAgICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICAgIH1cbiAgICB9XG4gICAgcmV0dXJuIHRydWU7XG59XG4vKipcbiAqIFJldHVybnMgYSBuZXcgb2JqZWN0IGJ5IGF0dGVtcHRpbmcgdG8gSlNPTi5wYXJzZSBhbnkgdG9wLWxldmVsIG9iamVjdCBrZXlzLlxuICovXG5leHBvcnQgZnVuY3Rpb24ganNvblBhcnNlRW1iZWRkZWRLZXlzKG9iamVjdCkge1xuICAgIGNvbnN0IHJlc3VsdCA9IHt9O1xuICAgIGZvciAoY29uc3Qga2V5IG9mIE9iamVjdC5rZXlzKG9iamVjdCkpIHtcbiAgICAgICAgbGV0IHZhbHVlO1xuICAgICAgICB0cnkge1xuICAgICAgICAgICAgdmFsdWUgPSBKU09OLnBhcnNlKG9iamVjdFtrZXldKTtcbiAgICAgICAgICAgIDtcbiAgICAgICAgfVxuICAgICAgICBjYXRjaCAoZXJyb3IpIHtcbiAgICAgICAgICAgIHZhbHVlID0gb2JqZWN0W2tleV07XG4gICAgICAgIH1cbiAgICAgICAgcmVzdWx0W2tleV0gPSB2YWx1ZTtcbiAgICB9XG4gICAgcmV0dXJuIHJlc3VsdDtcbn1cbi8qKlxuICogRGVsZXRlcyBrZXlzIG9mIHRoZSBpbnB1dCBvYmplY3QuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBvbWl0SW5QbGFjZShvYmplY3QsIGtleXMpIHtcbiAgICBpZiAoIW9iamVjdCkge1xuICAgICAgICByZXR1cm47XG4gICAgfVxuICAgIGZvciAoY29uc3Qga2V5IG9mIGtleXMpIHtcbiAgICAgICAgZGVsZXRlIG9iamVjdFtrZXldO1xuICAgIH1cbn1cbi8qKlxuICogQ3JlYXRlcyBhIG5ldyBvYmplY3QgYnkgb21pdHRpbmcgYGtleXNgIGZyb20gYG9iamVjdGBcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIG9taXRCeUNvcHkob2JqZWN0LCBrZXlzKSB7XG4gICAgY29uc3QgbmV3T2JqZWN0ID0gT2JqZWN0LmFzc2lnbih7fSwgb2JqZWN0KTtcbiAgICAvKipcbiAgICAgKiBMb2Rhc2gncyBvbWl0LCB3aGljaCB3YXMgcHJldmlvdXNseSB1c2VkLCBzZWVtcyB0byBjYXVzZSB1bmV4cGVjdGVkIGJlaGF2aW9yXG4gICAgICogd2hlbiBwYXlsb2FkIGlzIGFuIEVTNiBpdGVtIGNsYXNzLiBTbyB3ZSBpbnN0ZWFkIG1hbnVhbGx5IG9taXQgZWFjaCBrZXkuXG4gICAgICovXG4gICAgZm9yIChjb25zdCBrZXkgb2Yga2V5cykge1xuICAgICAgICBkZWxldGUgbmV3T2JqZWN0W2tleV07XG4gICAgfVxuICAgIHJldHVybiBuZXdPYmplY3Q7XG59XG4vKipcbiAqIFNpbWlsaWFyIHRvIE5vZGUncyBwYXRoLmpvaW4sIHRoaXMgZnVuY3Rpb24gY29tYmluZXMgYW4gYXJyYXkgb2YgcGF0aHMgaW50b1xuICogb25lIHJlc29sdmVkIHBhdGguXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBqb2luUGF0aHMoLi4uYXJncykge1xuICAgIHJldHVybiBhcmdzLm1hcCgocGFydCwgaSkgPT4ge1xuICAgICAgICBpZiAoaSA9PT0gMCkge1xuICAgICAgICAgICAgcmV0dXJuIHBhcnQudHJpbSgpLnJlcGxhY2UoL1tcXC9dKiQvZywgJycpO1xuICAgICAgICB9XG4gICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgcmV0dXJuIHBhcnQudHJpbSgpLnJlcGxhY2UoLyheW1xcL10qfFtcXC9dKiQpL2csICcnKTtcbiAgICAgICAgfVxuICAgIH0pLmZpbHRlcih4ID0+IHgubGVuZ3RoKS5qb2luKCcvJyk7XG59XG4vKipcbiAqIENyZWF0ZXMgYSBjb3B5IG9mIHRoZSBpbnB1dCBvYmplY3QgYnkgSlNPTiBzdHJpbmdpZnlpbmcgdGhlIG9iamVjdCB0aGVuIEpTT04gcGFyc2luZ1xuICogdGhlIHN0cmluZyAoaWYgdGhlIGlucHV0IGlzIGFuIG9iamVjdCkuIElmIGlucHV0IGlzIGRhdGUsIGEgRGF0ZSBjb3B5IHdpbGwgYmUgY3JlYXRlZCxcbiAqIGFuZCBpZiBpbnB1dCBpcyBhIHByaW1pdGl2ZSB2YWx1ZSwgaXQgd2lsbCBiZSByZXR1cm5lZCBhcy1pcy5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIENvcHkob2JqZWN0KSB7XG4gICAgaWYgKG9iamVjdCBpbnN0YW5jZW9mIERhdGUpIHtcbiAgICAgICAgcmV0dXJuIG5ldyBEYXRlKG9iamVjdCk7XG4gICAgfVxuICAgIGVsc2UgaWYgKGlzT2JqZWN0KG9iamVjdCkpIHtcbiAgICAgICAgcmV0dXJuIEpTT04ucGFyc2UoSlNPTi5zdHJpbmdpZnkob2JqZWN0KSk7XG4gICAgfVxuICAgIGVsc2Uge1xuICAgICAgICByZXR1cm4gb2JqZWN0O1xuICAgIH1cbn1cbi8qKlxuICogTWVyZ2VzIHRoZSBzZWNvbmQgb2JqZWN0IHBhcmFtZXRlciBpbnRvIHRoZSBmaXJzdCBvYmplY3QsIGluLXBsYWNlLlxuICogQHJldHVybnMgVGhlIG5vdyBtb2RpZmllZCBmaXJzdCBvYmplY3QgcGFyYW1ldGVyIHBhc3NlZCBpbnRvIHRoZSBmdW5jdGlvbi5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGRlZXBNZXJnZShhLCBiKSB7XG4gICAgLyoqXG4gICAgICogbG9kYXNoLm1lcmdlIHdpbGwgbm90IG1lcmdlIGEgZnVsbCBhcnJheSB3aXRoIGFuIGVtcHR5IG9uZS5cbiAgICAgKiBkZWVwTWVyZ2Ugd2lsbCByZXBsYWNlIGFycmF5cyB3aG9sZXNhbGVcbiAgICAgKi9cbiAgICBpZiAoIWEgfHwgIWIpIHtcbiAgICAgICAgdGhyb3cgJ0F0dGVtcHRpbmcgdG8gZGVlcE1lcmdlIHdpdGggbnVsbCB2YWx1ZXMnO1xuICAgIH1cbiAgICBjb25zdCBjdXN0b21pemVyID0gKGFWYWx1ZSwgYlZhbHVlKSA9PiB7XG4gICAgICAgIGlmIChpc0FycmF5KGFWYWx1ZSkpIHtcbiAgICAgICAgICAgIHJldHVybiBiVmFsdWU7XG4gICAgICAgIH1cbiAgICB9O1xuICAgIG1lcmdlV2l0aChhLCBiLCBjdXN0b21pemVyKTtcbiAgICByZXR1cm4gYTtcbn1cbi8qKlxuICogUmV0dXJucyBhIG5ldyBvYmplY3QgYnkgc2VsZWN0aW5nIGNlcnRhaW4ga2V5cyBmcm9tIGlucHV0IG9iamVjdC5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHBpY2tCeUNvcHkob2JqZWN0LCBrZXlzKSB7XG4gICAgY29uc3QgcmVzdWx0ID0ge307XG4gICAgZm9yIChjb25zdCBrZXkgb2Yga2V5cykge1xuICAgICAgICByZXN1bHRba2V5XSA9IG9iamVjdFtrZXldO1xuICAgIH1cbiAgICByZXR1cm4gQ29weShyZXN1bHQpO1xufVxuLyoqXG4gKiBSZWN1cnNpdmVseSBtYWtlcyBhbiBvYmplY3QgaW1tdXRhYmxlIHZpYSBPYmplY3QuZnJlZXplXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBkZWVwRnJlZXplKG9iamVjdCkge1xuICAgIGNvbnN0IHByb3BOYW1lcyA9IE9iamVjdC5nZXRPd25Qcm9wZXJ0eU5hbWVzKG9iamVjdCk7XG4gICAgZm9yIChjb25zdCBuYW1lIG9mIHByb3BOYW1lcykge1xuICAgICAgICBjb25zdCB2YWx1ZSA9IG9iamVjdFtuYW1lXTtcbiAgICAgICAgaWYgKHZhbHVlICYmIHR5cGVvZiB2YWx1ZSA9PT0gJ29iamVjdCcgJiYgIU9iamVjdC5pc0Zyb3plbih2YWx1ZSkpIHtcbiAgICAgICAgICAgIG9iamVjdFtuYW1lXSA9IGRlZXBGcmVlemUodmFsdWUpO1xuICAgICAgICB9XG4gICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgb2JqZWN0W25hbWVdID0gdmFsdWU7XG4gICAgICAgIH1cbiAgICB9XG4gICAgcmV0dXJuIE9iamVjdC5mcmVlemUob2JqZWN0KTtcbn1cbi8qKlxuICogRGV0ZXJtaW5lcyBpZiBhbiBvYmplY3QgaGFzIGEgZ2V0dGVyIGRlZmluZWQgZm9yIGEgZ2l2ZW4gcHJvcGVydHlcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGhhc0dldHRlcihvYmplY3QsIHByb3BlcnR5KSB7XG4gICAgY29uc3QgZGVzY3JpcHRvciA9IE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IoT2JqZWN0LmdldFByb3RvdHlwZU9mKG9iamVjdCksIHByb3BlcnR5KTtcbiAgICByZXR1cm4gZGVzY3JpcHRvciAmJiAhaXNOdWxsT3JVbmRlZmluZWQoZGVzY3JpcHRvci5nZXQpO1xufVxuLyoqXG4gICogVHJ1bmNhdGVzIGEgaGV4IHN0cmluZyBpbnRvIGEgZGVzaXJlZCBudW1iZXIgb2YgYml0c1xuICAqIEByZXR1cm5zIEEgaGV4YWRlY2ltYWwgc3RyaW5nIHRydW5jYXRlZCB0byB0aGUgbnVtYmVyIG9mIGRlc2lyZWQgYml0c1xuICAqL1xuZXhwb3J0IGZ1bmN0aW9uIHRydW5jYXRlSGV4U3RyaW5nKHN0cmluZywgZGVzaXJlZEJpdHMpIHtcbiAgICBjb25zdCBCSVRTX1BFUl9IRVhfQ0hBUiA9IDQ7XG4gICAgY29uc3QgZGVzaXJlZENoYXJMZW5ndGggPSBkZXNpcmVkQml0cyAvIEJJVFNfUEVSX0hFWF9DSEFSO1xuICAgIHJldHVybiBzdHJpbmcuc3Vic3RyaW5nKDAsIGRlc2lyZWRDaGFyTGVuZ3RoKTtcbn1cbi8qKlxuICogV2hlbiBhd2FpdGVkLCB0aGlzIGZ1bmN0aW9uIGFsbG93cyBjb2RlIGV4ZWN1dGlvbiB0byBwYXVzZSBmb3IgYSBzZXQgdGltZS5cbiAqIFNob3VsZCBiZSB1c2VkIHByaW1hcmlseSBmb3IgdGVzdGluZy5cbiAqL1xuZXhwb3J0IGFzeW5jIGZ1bmN0aW9uIHNsZWVwKG1pbGxpc2Vjb25kcykge1xuICAgIGNvbnNvbGUud2FybignU2xlZXBpbmcgZm9yJywgbWlsbGlzZWNvbmRzKTtcbiAgICByZXR1cm4gbmV3IFByb21pc2UoKHJlc29sdmUsIHJlamVjdCkgPT4ge1xuICAgICAgICBzZXRUaW1lb3V0KGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICAgIHJlc29sdmUoKTtcbiAgICAgICAgfSwgbWlsbGlzZWNvbmRzKTtcbiAgICB9KTtcbn1cbmV4cG9ydCBmdW5jdGlvbiB1bnJlYWNoYWJsZShtZXNzYWdlKSB7XG4gICAgdGhyb3cgRXJyb3IobWVzc2FnZSk7XG59XG4iXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBR0E7QUFDQTtBQUNBO0FBQUE7QUFBQTtBQUNBO0FBQ0E7Ozs7QUFHQTtBQUNBO0FBQ0E7QUFDQTs7Ozs7QUFJQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOzs7O0FBR0E7QUFDQTtBQUNBO0FBQ0E7Ozs7O0FBSUE7QUFDQTtBQUFBO0FBQUE7QUFDQTtBQUNBOzs7OztBQUlBO0FBQ0E7QUFDQTtBQUNBOzs7OztBQUlBO0FBQ0E7QUFDQTtBQUZBO0FBQUE7QUFBQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTs7OztBQUdBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7Ozs7QUFHQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUNBOzs7O0FBR0E7QUFDQTtBQUNBO0FBQ0E7Ozs7QUFHQTtBQUNBO0FBQ0E7QUFDQTs7OztBQUdBO0FBQ0E7QUFDQTtBQUNBO0FBRUE7QUFDQTtBQUNBO0FBQ0E7Ozs7Ozs7QUFNQTtBQUNBO0FBQUE7QUFBQTtBQUFBO0FBQ0E7QUFEQTtBQUNBO0FBQUE7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBTEE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUNBO0FBS0E7QUFDQTtBQUNBO0FBQ0E7Ozs7O0FBSUE7QUFDQTtBQUNBO0FBQ0E7Ozs7O0FBSUE7QUFDQTtBQUNBO0FBQ0E7Ozs7O0FBSUE7QUFBQTtBQUFBO0FBQUE7QUFDQTtBQURBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFIQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBSUE7QUFDQTs7Ozs7QUFJQTtBQUFBO0FBQUE7QUFBQTtBQUNBO0FBREE7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUhBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFJQTtBQUNBOzs7OztBQUlBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUNBOzs7OztBQUlBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7Ozs7QUFJQTtBQUNBO0FBQ0E7QUFDQTs7OztBQUdBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUVBO0FBQ0E7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7OztBQUdBO0FBQ0E7QUFDQTtBQUNBOzs7O0FBR0E7QUFDQTtBQUNBO0FBQ0E7Ozs7QUFHQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7Ozs7OztBQUtBO0FBQ0E7QUFDQTtBQUFBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7Ozs7O0FBSUE7QUFDQTtBQUNBO0FBRkE7QUFBQTtBQUFBO0FBQ0E7QUFEQTtBQUdBO0FBQUE7QUFDQTtBQUNBO0FBTEE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUNBO0FBS0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQUE7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7Ozs7QUFHQTtBQUNBO0FBQ0E7QUFBQTtBQUFBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBRUE7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUNBOzs7O0FBR0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUpBO0FBQUE7QUFBQTtBQUNBO0FBREE7QUFJQTtBQUFBO0FBQ0E7QUFDQTtBQU5BO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFPQTtBQUNBOzs7O0FBR0E7QUFDQTtBQUNBOzs7OztBQUZBO0FBQUE7QUFBQTtBQUNBO0FBREE7QUFNQTtBQUFBO0FBQ0E7QUFDQTtBQVJBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFDQTtBQVFBO0FBQ0E7QUFDQTs7Ozs7QUFJQTtBQUFBO0FBQUE7QUFBQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFFQTtBQUNBO0FBQ0E7QUFBQTtBQUFBO0FBQ0E7QUFDQTs7Ozs7O0FBS0E7QUFDQTtBQUNBO0FBQ0E7QUFFQTtBQUNBO0FBRUE7QUFDQTtBQUNBO0FBQ0E7Ozs7O0FBSUE7QUFDQTs7OztBQUlBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7Ozs7QUFHQTtBQUNBO0FBREE7QUFBQTtBQUFBO0FBQ0E7QUFEQTtBQUVBO0FBQUE7QUFDQTtBQUNBO0FBSkE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUNBO0FBSUE7QUFDQTtBQUNBOzs7O0FBR0E7QUFDQTtBQURBO0FBQUE7QUFBQTtBQUNBO0FBREE7QUFFQTtBQUFBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUVBO0FBQ0E7QUFDQTtBQVZBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFDQTtBQVVBO0FBQ0E7QUFDQTs7OztBQUdBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7Ozs7O0FBSUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOzs7OztBQUlBO0FBQUE7QUFBQTtBQUNBOztBQURBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFDQTtBQURBO0FBR0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQVBBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBOzs7O0FBUUE7QUFDQTtBQUNBO0EiLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./lib/utils.ts\n')},"./lib/uuid.ts":
|
||
/*!*********************!*\
|
||
!*** ./lib/uuid.ts ***!
|
||
\*********************/
|
||
/*! exports provided: Uuid */function(module,__webpack_exports__,__webpack_require__){"use strict";eval('__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "Uuid", function() { return Uuid; });\n/* harmony import */ var _babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @babel/runtime/regenerator */ "./node_modules/@babel/runtime/regenerator/index.js");\n/* harmony import */ var _babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var _Lib_utils__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! @Lib/utils */ "./lib/utils.ts");\n\n\nfunction asyncGeneratorStep(gen, resolve, reject, _next, _throw, key, arg) { try { var info = gen[key](arg); var value = info.value; } catch (error) { reject(error); return; } if (info.done) { resolve(value); } else { Promise.resolve(value).then(_next, _throw); } }\n\nfunction _asyncToGenerator(fn) { return function () { var self = this, args = arguments; return new Promise(function (resolve, reject) { var gen = fn.apply(self, args); function _next(value) { asyncGeneratorStep(gen, resolve, reject, _next, _throw, "next", value); } function _throw(err) { asyncGeneratorStep(gen, resolve, reject, _next, _throw, "throw", err); } _next(undefined); }); }; }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } }\n\nfunction _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); } }\n\nfunction _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; }\n\n\n/**\n * An abstract class with no instance methods. Used globally to generate uuids by any\n * consumer. Application must call SetGenerators before use.\n */\n\nvar Uuid = /*#__PURE__*/function () {\n function Uuid() {\n _classCallCheck(this, Uuid);\n }\n\n _createClass(Uuid, null, [{\n key: "SetGenerators",\n\n /**\n * Dynamically feed both a syncronous and asyncronous implementation of a UUID generator function.\n * Feeding it this way allows platforms to implement their own uuid generation schemes, without\n * this class having to import any global functions.\n * @param {function} asyncImpl - An asyncronous function that returns a UUID.\n * @param {function} syncImpl - A syncronous function that returns a UUID.\n */\n value: function SetGenerators(asyncImpl, syncImpl) {\n this.syncUuidFunc = syncImpl;\n this.asyncUuidFunc = asyncImpl;\n }\n /**\n * Whether there is a syncronous UUID generation function available.\n */\n\n }, {\n key: "canGenSync",\n value: function canGenSync() {\n return !Object(_Lib_utils__WEBPACK_IMPORTED_MODULE_1__["isNullOrUndefined"])(this.syncUuidFunc);\n }\n /**\n * Generates a UUID string asyncronously.\n */\n\n }, {\n key: "GenerateUuid",\n value: function () {\n var _GenerateUuid = _asyncToGenerator( /*#__PURE__*/_babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0___default.a.mark(function _callee() {\n return _babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0___default.a.wrap(function _callee$(_context) {\n while (1) {\n switch (_context.prev = _context.next) {\n case 0:\n if (!this.syncUuidFunc) {\n _context.next = 4;\n break;\n }\n\n return _context.abrupt("return", this.syncUuidFunc());\n\n case 4:\n return _context.abrupt("return", this.asyncUuidFunc());\n\n case 5:\n case "end":\n return _context.stop();\n }\n }\n }, _callee, this);\n }));\n\n function GenerateUuid() {\n return _GenerateUuid.apply(this, arguments);\n }\n\n return GenerateUuid;\n }()\n /**\n * Generates a UUID string syncronously.\n */\n\n }, {\n key: "GenerateUuidSynchronously",\n value: function GenerateUuidSynchronously() {\n return this.syncUuidFunc();\n }\n }]);\n\n return Uuid;\n}();//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9saWIvdXVpZC50cy5qcyIsInNvdXJjZXMiOlsid2VicGFjazovL1NOTGlicmFyeS8uL2xpYi91dWlkLnRzP2NlNWQiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgaXNOdWxsT3JVbmRlZmluZWQgfSBmcm9tICdATGliL3V0aWxzJztcbi8qKlxuICogQW4gYWJzdHJhY3QgY2xhc3Mgd2l0aCBubyBpbnN0YW5jZSBtZXRob2RzLiBVc2VkIGdsb2JhbGx5IHRvIGdlbmVyYXRlIHV1aWRzIGJ5IGFueVxuICogY29uc3VtZXIuIEFwcGxpY2F0aW9uIG11c3QgY2FsbCBTZXRHZW5lcmF0b3JzIGJlZm9yZSB1c2UuXG4gKi9cbmV4cG9ydCBjbGFzcyBVdWlkIHtcbiAgICAvKipcbiAgICAgKiBEeW5hbWljYWxseSBmZWVkIGJvdGggYSBzeW5jcm9ub3VzIGFuZCBhc3luY3Jvbm91cyBpbXBsZW1lbnRhdGlvbiBvZiBhIFVVSUQgZ2VuZXJhdG9yIGZ1bmN0aW9uLlxuICAgICAqIEZlZWRpbmcgaXQgdGhpcyB3YXkgYWxsb3dzIHBsYXRmb3JtcyB0byBpbXBsZW1lbnQgdGhlaXIgb3duIHV1aWQgZ2VuZXJhdGlvbiBzY2hlbWVzLCB3aXRob3V0XG4gICAgICogdGhpcyBjbGFzcyBoYXZpbmcgdG8gaW1wb3J0IGFueSBnbG9iYWwgZnVuY3Rpb25zLlxuICAgICAqIEBwYXJhbSB7ZnVuY3Rpb259IGFzeW5jSW1wbCAtIEFuIGFzeW5jcm9ub3VzIGZ1bmN0aW9uIHRoYXQgcmV0dXJucyBhIFVVSUQuXG4gICAgICogQHBhcmFtIHtmdW5jdGlvbn0gc3luY0ltcGwgLSBBIHN5bmNyb25vdXMgZnVuY3Rpb24gdGhhdCByZXR1cm5zIGEgVVVJRC5cbiAgICAgKi9cbiAgICBzdGF0aWMgU2V0R2VuZXJhdG9ycyhhc3luY0ltcGwsIHN5bmNJbXBsKSB7XG4gICAgICAgIHRoaXMuc3luY1V1aWRGdW5jID0gc3luY0ltcGw7XG4gICAgICAgIHRoaXMuYXN5bmNVdWlkRnVuYyA9IGFzeW5jSW1wbDtcbiAgICB9XG4gICAgLyoqXG4gICAgICogV2hldGhlciB0aGVyZSBpcyBhIHN5bmNyb25vdXMgVVVJRCBnZW5lcmF0aW9uIGZ1bmN0aW9uIGF2YWlsYWJsZS5cbiAgICAgKi9cbiAgICBzdGF0aWMgY2FuR2VuU3luYygpIHtcbiAgICAgICAgcmV0dXJuICFpc051bGxPclVuZGVmaW5lZCh0aGlzLnN5bmNVdWlkRnVuYyk7XG4gICAgfVxuICAgIC8qKlxuICAgICAqIEdlbmVyYXRlcyBhIFVVSUQgc3RyaW5nIGFzeW5jcm9ub3VzbHkuXG4gICAgICovXG4gICAgc3RhdGljIGFzeW5jIEdlbmVyYXRlVXVpZCgpIHtcbiAgICAgICAgaWYgKHRoaXMuc3luY1V1aWRGdW5jKSB7XG4gICAgICAgICAgICByZXR1cm4gdGhpcy5zeW5jVXVpZEZ1bmMoKTtcbiAgICAgICAgfVxuICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgIHJldHVybiB0aGlzLmFzeW5jVXVpZEZ1bmMoKTtcbiAgICAgICAgfVxuICAgIH1cbiAgICAvKipcbiAgICAgKiBHZW5lcmF0ZXMgYSBVVUlEIHN0cmluZyBzeW5jcm9ub3VzbHkuXG4gICAgICovXG4gICAgc3RhdGljIEdlbmVyYXRlVXVpZFN5bmNocm9ub3VzbHkoKSB7XG4gICAgICAgIHJldHVybiB0aGlzLnN5bmNVdWlkRnVuYygpO1xuICAgIH1cbn1cbiJdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFBQTtBQUNBOzs7OztBQUlBO0FBQUE7QUFBQTtBQUFBO0FBQ0E7QUFEQTtBQUFBO0FBQ0E7QUFBQTs7Ozs7OztBQURBO0FBU0E7QUFDQTtBQUNBO0FBQ0E7Ozs7QUFaQTtBQUFBO0FBQUE7QUFnQkE7QUFDQTtBQUNBOzs7O0FBbEJBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUNBO0FBREE7QUFDQTtBQURBO0FBQUE7QUFDQTtBQURBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQ0E7QUFEQTtBQUFBO0FBQUE7QUFDQTtBQURBO0FBQUE7QUE2QkE7Ozs7QUE3QkE7QUFBQTtBQUFBO0FBaUNBO0FBQ0E7QUFsQ0E7QUFDQTtBQURBO0FBQUEiLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./lib/uuid.ts\n')},"./node_modules/@babel/runtime/regenerator/index.js":
|
||
/*!**********************************************************!*\
|
||
!*** ./node_modules/@babel/runtime/regenerator/index.js ***!
|
||
\**********************************************************/
|
||
/*! no static exports found */function(module,exports,__webpack_require__){"use strict";eval('\n\nmodule.exports = __webpack_require__(/*! regenerator-runtime */ "./node_modules/regenerator-runtime/runtime.js");//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvQGJhYmVsL3J1bnRpbWUvcmVnZW5lcmF0b3IvaW5kZXguanMuanMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly9TTkxpYnJhcnkvLi9ub2RlX21vZHVsZXMvQGJhYmVsL3J1bnRpbWUvcmVnZW5lcmF0b3IvaW5kZXguanM/YTM0YSJdLCJzb3VyY2VzQ29udGVudCI6WyJcInVzZSBzdHJpY3RcIjtcbm1vZHVsZS5leHBvcnRzID0gcmVxdWlyZShcInJlZ2VuZXJhdG9yLXJ1bnRpbWVcIik7XG4iXSwibWFwcGluZ3MiOiJBQUFBO0FBQ0E7QUFBQSIsInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./node_modules/@babel/runtime/regenerator/index.js\n')},"./node_modules/lodash/_DataView.js":
|
||
/*!******************************************!*\
|
||
!*** ./node_modules/lodash/_DataView.js ***!
|
||
\******************************************/
|
||
/*! no static exports found */function(module,exports,__webpack_require__){"use strict";eval('\n\nvar getNative = __webpack_require__(/*! ./_getNative */ "./node_modules/lodash/_getNative.js"),\n root = __webpack_require__(/*! ./_root */ "./node_modules/lodash/_root.js");\n/* Built-in method references that are verified to be native. */\n\n\nvar DataView = getNative(root, \'DataView\');\nmodule.exports = DataView;//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvbG9kYXNoL19EYXRhVmlldy5qcy5qcyIsInNvdXJjZXMiOlsid2VicGFjazovL1NOTGlicmFyeS8uL25vZGVfbW9kdWxlcy9sb2Rhc2gvX0RhdGFWaWV3LmpzP2I1YTciXSwic291cmNlc0NvbnRlbnQiOlsiXCJ1c2Ugc3RyaWN0XCI7XG52YXIgZ2V0TmF0aXZlID0gcmVxdWlyZSgnLi9fZ2V0TmF0aXZlJyksIHJvb3QgPSByZXF1aXJlKCcuL19yb290Jyk7XG4vKiBCdWlsdC1pbiBtZXRob2QgcmVmZXJlbmNlcyB0aGF0IGFyZSB2ZXJpZmllZCB0byBiZSBuYXRpdmUuICovXG52YXIgRGF0YVZpZXcgPSBnZXROYXRpdmUocm9vdCwgJ0RhdGFWaWV3Jyk7XG5tb2R1bGUuZXhwb3J0cyA9IERhdGFWaWV3O1xuIl0sIm1hcHBpbmdzIjoiQUFBQTtBQUNBO0FBQUE7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQURBO0FBQ0EiLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./node_modules/lodash/_DataView.js\n')},"./node_modules/lodash/_Hash.js":
|
||
/*!**************************************!*\
|
||
!*** ./node_modules/lodash/_Hash.js ***!
|
||
\**************************************/
|
||
/*! no static exports found */function(module,exports,__webpack_require__){"use strict";eval('\n\nvar hashClear = __webpack_require__(/*! ./_hashClear */ "./node_modules/lodash/_hashClear.js"),\n hashDelete = __webpack_require__(/*! ./_hashDelete */ "./node_modules/lodash/_hashDelete.js"),\n hashGet = __webpack_require__(/*! ./_hashGet */ "./node_modules/lodash/_hashGet.js"),\n hashHas = __webpack_require__(/*! ./_hashHas */ "./node_modules/lodash/_hashHas.js"),\n hashSet = __webpack_require__(/*! ./_hashSet */ "./node_modules/lodash/_hashSet.js");\n/**\n * Creates a hash object.\n *\n * @private\n * @constructor\n * @param {Array} [entries] The key-value pairs to cache.\n */\n\n\nfunction Hash(entries) {\n var index = -1,\n length = entries == null ? 0 : entries.length;\n this.clear();\n\n while (++index < length) {\n var entry = entries[index];\n this.set(entry[0], entry[1]);\n }\n} // Add methods to `Hash`.\n\n\nHash.prototype.clear = hashClear;\nHash.prototype[\'delete\'] = hashDelete;\nHash.prototype.get = hashGet;\nHash.prototype.has = hashHas;\nHash.prototype.set = hashSet;\nmodule.exports = Hash;//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvbG9kYXNoL19IYXNoLmpzLmpzIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vU05MaWJyYXJ5Ly4vbm9kZV9tb2R1bGVzL2xvZGFzaC9fSGFzaC5qcz9lMjRiIl0sInNvdXJjZXNDb250ZW50IjpbIlwidXNlIHN0cmljdFwiO1xudmFyIGhhc2hDbGVhciA9IHJlcXVpcmUoJy4vX2hhc2hDbGVhcicpLCBoYXNoRGVsZXRlID0gcmVxdWlyZSgnLi9faGFzaERlbGV0ZScpLCBoYXNoR2V0ID0gcmVxdWlyZSgnLi9faGFzaEdldCcpLCBoYXNoSGFzID0gcmVxdWlyZSgnLi9faGFzaEhhcycpLCBoYXNoU2V0ID0gcmVxdWlyZSgnLi9faGFzaFNldCcpO1xuLyoqXG4gKiBDcmVhdGVzIGEgaGFzaCBvYmplY3QuXG4gKlxuICogQHByaXZhdGVcbiAqIEBjb25zdHJ1Y3RvclxuICogQHBhcmFtIHtBcnJheX0gW2VudHJpZXNdIFRoZSBrZXktdmFsdWUgcGFpcnMgdG8gY2FjaGUuXG4gKi9cbmZ1bmN0aW9uIEhhc2goZW50cmllcykge1xuICAgIHZhciBpbmRleCA9IC0xLCBsZW5ndGggPSBlbnRyaWVzID09IG51bGwgPyAwIDogZW50cmllcy5sZW5ndGg7XG4gICAgdGhpcy5jbGVhcigpO1xuICAgIHdoaWxlICgrK2luZGV4IDwgbGVuZ3RoKSB7XG4gICAgICAgIHZhciBlbnRyeSA9IGVudHJpZXNbaW5kZXhdO1xuICAgICAgICB0aGlzLnNldChlbnRyeVswXSwgZW50cnlbMV0pO1xuICAgIH1cbn1cbi8vIEFkZCBtZXRob2RzIHRvIGBIYXNoYC5cbkhhc2gucHJvdG90eXBlLmNsZWFyID0gaGFzaENsZWFyO1xuSGFzaC5wcm90b3R5cGVbJ2RlbGV0ZSddID0gaGFzaERlbGV0ZTtcbkhhc2gucHJvdG90eXBlLmdldCA9IGhhc2hHZXQ7XG5IYXNoLnByb3RvdHlwZS5oYXMgPSBoYXNoSGFzO1xuSGFzaC5wcm90b3R5cGUuc2V0ID0gaGFzaFNldDtcbm1vZHVsZS5leHBvcnRzID0gSGFzaDtcbiJdLCJtYXBwaW5ncyI6IkFBQUE7QUFDQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFDQTs7Ozs7Ozs7O0FBT0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBIiwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./node_modules/lodash/_Hash.js\n')},"./node_modules/lodash/_ListCache.js":
|
||
/*!*******************************************!*\
|
||
!*** ./node_modules/lodash/_ListCache.js ***!
|
||
\*******************************************/
|
||
/*! no static exports found */function(module,exports,__webpack_require__){"use strict";eval('\n\nvar listCacheClear = __webpack_require__(/*! ./_listCacheClear */ "./node_modules/lodash/_listCacheClear.js"),\n listCacheDelete = __webpack_require__(/*! ./_listCacheDelete */ "./node_modules/lodash/_listCacheDelete.js"),\n listCacheGet = __webpack_require__(/*! ./_listCacheGet */ "./node_modules/lodash/_listCacheGet.js"),\n listCacheHas = __webpack_require__(/*! ./_listCacheHas */ "./node_modules/lodash/_listCacheHas.js"),\n listCacheSet = __webpack_require__(/*! ./_listCacheSet */ "./node_modules/lodash/_listCacheSet.js");\n/**\n * Creates an list cache object.\n *\n * @private\n * @constructor\n * @param {Array} [entries] The key-value pairs to cache.\n */\n\n\nfunction ListCache(entries) {\n var index = -1,\n length = entries == null ? 0 : entries.length;\n this.clear();\n\n while (++index < length) {\n var entry = entries[index];\n this.set(entry[0], entry[1]);\n }\n} // Add methods to `ListCache`.\n\n\nListCache.prototype.clear = listCacheClear;\nListCache.prototype[\'delete\'] = listCacheDelete;\nListCache.prototype.get = listCacheGet;\nListCache.prototype.has = listCacheHas;\nListCache.prototype.set = listCacheSet;\nmodule.exports = ListCache;//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvbG9kYXNoL19MaXN0Q2FjaGUuanMuanMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly9TTkxpYnJhcnkvLi9ub2RlX21vZHVsZXMvbG9kYXNoL19MaXN0Q2FjaGUuanM/NWUyZSJdLCJzb3VyY2VzQ29udGVudCI6WyJcInVzZSBzdHJpY3RcIjtcbnZhciBsaXN0Q2FjaGVDbGVhciA9IHJlcXVpcmUoJy4vX2xpc3RDYWNoZUNsZWFyJyksIGxpc3RDYWNoZURlbGV0ZSA9IHJlcXVpcmUoJy4vX2xpc3RDYWNoZURlbGV0ZScpLCBsaXN0Q2FjaGVHZXQgPSByZXF1aXJlKCcuL19saXN0Q2FjaGVHZXQnKSwgbGlzdENhY2hlSGFzID0gcmVxdWlyZSgnLi9fbGlzdENhY2hlSGFzJyksIGxpc3RDYWNoZVNldCA9IHJlcXVpcmUoJy4vX2xpc3RDYWNoZVNldCcpO1xuLyoqXG4gKiBDcmVhdGVzIGFuIGxpc3QgY2FjaGUgb2JqZWN0LlxuICpcbiAqIEBwcml2YXRlXG4gKiBAY29uc3RydWN0b3JcbiAqIEBwYXJhbSB7QXJyYXl9IFtlbnRyaWVzXSBUaGUga2V5LXZhbHVlIHBhaXJzIHRvIGNhY2hlLlxuICovXG5mdW5jdGlvbiBMaXN0Q2FjaGUoZW50cmllcykge1xuICAgIHZhciBpbmRleCA9IC0xLCBsZW5ndGggPSBlbnRyaWVzID09IG51bGwgPyAwIDogZW50cmllcy5sZW5ndGg7XG4gICAgdGhpcy5jbGVhcigpO1xuICAgIHdoaWxlICgrK2luZGV4IDwgbGVuZ3RoKSB7XG4gICAgICAgIHZhciBlbnRyeSA9IGVudHJpZXNbaW5kZXhdO1xuICAgICAgICB0aGlzLnNldChlbnRyeVswXSwgZW50cnlbMV0pO1xuICAgIH1cbn1cbi8vIEFkZCBtZXRob2RzIHRvIGBMaXN0Q2FjaGVgLlxuTGlzdENhY2hlLnByb3RvdHlwZS5jbGVhciA9IGxpc3RDYWNoZUNsZWFyO1xuTGlzdENhY2hlLnByb3RvdHlwZVsnZGVsZXRlJ10gPSBsaXN0Q2FjaGVEZWxldGU7XG5MaXN0Q2FjaGUucHJvdG90eXBlLmdldCA9IGxpc3RDYWNoZUdldDtcbkxpc3RDYWNoZS5wcm90b3R5cGUuaGFzID0gbGlzdENhY2hlSGFzO1xuTGlzdENhY2hlLnByb3RvdHlwZS5zZXQgPSBsaXN0Q2FjaGVTZXQ7XG5tb2R1bGUuZXhwb3J0cyA9IExpc3RDYWNoZTtcbiJdLCJtYXBwaW5ncyI6IkFBQUE7QUFDQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFDQTs7Ozs7Ozs7O0FBT0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBIiwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./node_modules/lodash/_ListCache.js\n')},"./node_modules/lodash/_Map.js":
|
||
/*!*************************************!*\
|
||
!*** ./node_modules/lodash/_Map.js ***!
|
||
\*************************************/
|
||
/*! no static exports found */function(module,exports,__webpack_require__){"use strict";eval('\n\nvar getNative = __webpack_require__(/*! ./_getNative */ "./node_modules/lodash/_getNative.js"),\n root = __webpack_require__(/*! ./_root */ "./node_modules/lodash/_root.js");\n/* Built-in method references that are verified to be native. */\n\n\nvar Map = getNative(root, \'Map\');\nmodule.exports = Map;//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvbG9kYXNoL19NYXAuanMuanMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly9TTkxpYnJhcnkvLi9ub2RlX21vZHVsZXMvbG9kYXNoL19NYXAuanM/NzliYyJdLCJzb3VyY2VzQ29udGVudCI6WyJcInVzZSBzdHJpY3RcIjtcbnZhciBnZXROYXRpdmUgPSByZXF1aXJlKCcuL19nZXROYXRpdmUnKSwgcm9vdCA9IHJlcXVpcmUoJy4vX3Jvb3QnKTtcbi8qIEJ1aWx0LWluIG1ldGhvZCByZWZlcmVuY2VzIHRoYXQgYXJlIHZlcmlmaWVkIHRvIGJlIG5hdGl2ZS4gKi9cbnZhciBNYXAgPSBnZXROYXRpdmUocm9vdCwgJ01hcCcpO1xubW9kdWxlLmV4cG9ydHMgPSBNYXA7XG4iXSwibWFwcGluZ3MiOiJBQUFBO0FBQ0E7QUFBQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBREE7QUFDQSIsInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./node_modules/lodash/_Map.js\n')},"./node_modules/lodash/_MapCache.js":
|
||
/*!******************************************!*\
|
||
!*** ./node_modules/lodash/_MapCache.js ***!
|
||
\******************************************/
|
||
/*! no static exports found */function(module,exports,__webpack_require__){"use strict";eval('\n\nvar mapCacheClear = __webpack_require__(/*! ./_mapCacheClear */ "./node_modules/lodash/_mapCacheClear.js"),\n mapCacheDelete = __webpack_require__(/*! ./_mapCacheDelete */ "./node_modules/lodash/_mapCacheDelete.js"),\n mapCacheGet = __webpack_require__(/*! ./_mapCacheGet */ "./node_modules/lodash/_mapCacheGet.js"),\n mapCacheHas = __webpack_require__(/*! ./_mapCacheHas */ "./node_modules/lodash/_mapCacheHas.js"),\n mapCacheSet = __webpack_require__(/*! ./_mapCacheSet */ "./node_modules/lodash/_mapCacheSet.js");\n/**\n * Creates a map cache object to store key-value pairs.\n *\n * @private\n * @constructor\n * @param {Array} [entries] The key-value pairs to cache.\n */\n\n\nfunction MapCache(entries) {\n var index = -1,\n length = entries == null ? 0 : entries.length;\n this.clear();\n\n while (++index < length) {\n var entry = entries[index];\n this.set(entry[0], entry[1]);\n }\n} // Add methods to `MapCache`.\n\n\nMapCache.prototype.clear = mapCacheClear;\nMapCache.prototype[\'delete\'] = mapCacheDelete;\nMapCache.prototype.get = mapCacheGet;\nMapCache.prototype.has = mapCacheHas;\nMapCache.prototype.set = mapCacheSet;\nmodule.exports = MapCache;//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvbG9kYXNoL19NYXBDYWNoZS5qcy5qcyIsInNvdXJjZXMiOlsid2VicGFjazovL1NOTGlicmFyeS8uL25vZGVfbW9kdWxlcy9sb2Rhc2gvX01hcENhY2hlLmpzPzdiODMiXSwic291cmNlc0NvbnRlbnQiOlsiXCJ1c2Ugc3RyaWN0XCI7XG52YXIgbWFwQ2FjaGVDbGVhciA9IHJlcXVpcmUoJy4vX21hcENhY2hlQ2xlYXInKSwgbWFwQ2FjaGVEZWxldGUgPSByZXF1aXJlKCcuL19tYXBDYWNoZURlbGV0ZScpLCBtYXBDYWNoZUdldCA9IHJlcXVpcmUoJy4vX21hcENhY2hlR2V0JyksIG1hcENhY2hlSGFzID0gcmVxdWlyZSgnLi9fbWFwQ2FjaGVIYXMnKSwgbWFwQ2FjaGVTZXQgPSByZXF1aXJlKCcuL19tYXBDYWNoZVNldCcpO1xuLyoqXG4gKiBDcmVhdGVzIGEgbWFwIGNhY2hlIG9iamVjdCB0byBzdG9yZSBrZXktdmFsdWUgcGFpcnMuXG4gKlxuICogQHByaXZhdGVcbiAqIEBjb25zdHJ1Y3RvclxuICogQHBhcmFtIHtBcnJheX0gW2VudHJpZXNdIFRoZSBrZXktdmFsdWUgcGFpcnMgdG8gY2FjaGUuXG4gKi9cbmZ1bmN0aW9uIE1hcENhY2hlKGVudHJpZXMpIHtcbiAgICB2YXIgaW5kZXggPSAtMSwgbGVuZ3RoID0gZW50cmllcyA9PSBudWxsID8gMCA6IGVudHJpZXMubGVuZ3RoO1xuICAgIHRoaXMuY2xlYXIoKTtcbiAgICB3aGlsZSAoKytpbmRleCA8IGxlbmd0aCkge1xuICAgICAgICB2YXIgZW50cnkgPSBlbnRyaWVzW2luZGV4XTtcbiAgICAgICAgdGhpcy5zZXQoZW50cnlbMF0sIGVudHJ5WzFdKTtcbiAgICB9XG59XG4vLyBBZGQgbWV0aG9kcyB0byBgTWFwQ2FjaGVgLlxuTWFwQ2FjaGUucHJvdG90eXBlLmNsZWFyID0gbWFwQ2FjaGVDbGVhcjtcbk1hcENhY2hlLnByb3RvdHlwZVsnZGVsZXRlJ10gPSBtYXBDYWNoZURlbGV0ZTtcbk1hcENhY2hlLnByb3RvdHlwZS5nZXQgPSBtYXBDYWNoZUdldDtcbk1hcENhY2hlLnByb3RvdHlwZS5oYXMgPSBtYXBDYWNoZUhhcztcbk1hcENhY2hlLnByb3RvdHlwZS5zZXQgPSBtYXBDYWNoZVNldDtcbm1vZHVsZS5leHBvcnRzID0gTWFwQ2FjaGU7XG4iXSwibWFwcGluZ3MiOiJBQUFBO0FBQ0E7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQ0E7Ozs7Ozs7OztBQU9BO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSIsInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./node_modules/lodash/_MapCache.js\n')},"./node_modules/lodash/_Promise.js":
|
||
/*!*****************************************!*\
|
||
!*** ./node_modules/lodash/_Promise.js ***!
|
||
\*****************************************/
|
||
/*! no static exports found */function(module,exports,__webpack_require__){"use strict";eval('\n\nvar getNative = __webpack_require__(/*! ./_getNative */ "./node_modules/lodash/_getNative.js"),\n root = __webpack_require__(/*! ./_root */ "./node_modules/lodash/_root.js");\n/* Built-in method references that are verified to be native. */\n\n\nvar Promise = getNative(root, \'Promise\');\nmodule.exports = Promise;//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvbG9kYXNoL19Qcm9taXNlLmpzLmpzIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vU05MaWJyYXJ5Ly4vbm9kZV9tb2R1bGVzL2xvZGFzaC9fUHJvbWlzZS5qcz8xY2VjIl0sInNvdXJjZXNDb250ZW50IjpbIlwidXNlIHN0cmljdFwiO1xudmFyIGdldE5hdGl2ZSA9IHJlcXVpcmUoJy4vX2dldE5hdGl2ZScpLCByb290ID0gcmVxdWlyZSgnLi9fcm9vdCcpO1xuLyogQnVpbHQtaW4gbWV0aG9kIHJlZmVyZW5jZXMgdGhhdCBhcmUgdmVyaWZpZWQgdG8gYmUgbmF0aXZlLiAqL1xudmFyIFByb21pc2UgPSBnZXROYXRpdmUocm9vdCwgJ1Byb21pc2UnKTtcbm1vZHVsZS5leHBvcnRzID0gUHJvbWlzZTtcbiJdLCJtYXBwaW5ncyI6IkFBQUE7QUFDQTtBQUFBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFEQTtBQUNBIiwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./node_modules/lodash/_Promise.js\n')},"./node_modules/lodash/_Set.js":
|
||
/*!*************************************!*\
|
||
!*** ./node_modules/lodash/_Set.js ***!
|
||
\*************************************/
|
||
/*! no static exports found */function(module,exports,__webpack_require__){"use strict";eval('\n\nvar getNative = __webpack_require__(/*! ./_getNative */ "./node_modules/lodash/_getNative.js"),\n root = __webpack_require__(/*! ./_root */ "./node_modules/lodash/_root.js");\n/* Built-in method references that are verified to be native. */\n\n\nvar Set = getNative(root, \'Set\');\nmodule.exports = Set;//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvbG9kYXNoL19TZXQuanMuanMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly9TTkxpYnJhcnkvLi9ub2RlX21vZHVsZXMvbG9kYXNoL19TZXQuanM/Yzg2OSJdLCJzb3VyY2VzQ29udGVudCI6WyJcInVzZSBzdHJpY3RcIjtcbnZhciBnZXROYXRpdmUgPSByZXF1aXJlKCcuL19nZXROYXRpdmUnKSwgcm9vdCA9IHJlcXVpcmUoJy4vX3Jvb3QnKTtcbi8qIEJ1aWx0LWluIG1ldGhvZCByZWZlcmVuY2VzIHRoYXQgYXJlIHZlcmlmaWVkIHRvIGJlIG5hdGl2ZS4gKi9cbnZhciBTZXQgPSBnZXROYXRpdmUocm9vdCwgJ1NldCcpO1xubW9kdWxlLmV4cG9ydHMgPSBTZXQ7XG4iXSwibWFwcGluZ3MiOiJBQUFBO0FBQ0E7QUFBQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBREE7QUFDQSIsInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./node_modules/lodash/_Set.js\n')},"./node_modules/lodash/_SetCache.js":
|
||
/*!******************************************!*\
|
||
!*** ./node_modules/lodash/_SetCache.js ***!
|
||
\******************************************/
|
||
/*! no static exports found */function(module,exports,__webpack_require__){"use strict";eval('\n\nvar MapCache = __webpack_require__(/*! ./_MapCache */ "./node_modules/lodash/_MapCache.js"),\n setCacheAdd = __webpack_require__(/*! ./_setCacheAdd */ "./node_modules/lodash/_setCacheAdd.js"),\n setCacheHas = __webpack_require__(/*! ./_setCacheHas */ "./node_modules/lodash/_setCacheHas.js");\n/**\n *\n * Creates an array cache object to store unique values.\n *\n * @private\n * @constructor\n * @param {Array} [values] The values to cache.\n */\n\n\nfunction SetCache(values) {\n var index = -1,\n length = values == null ? 0 : values.length;\n this.__data__ = new MapCache();\n\n while (++index < length) {\n this.add(values[index]);\n }\n} // Add methods to `SetCache`.\n\n\nSetCache.prototype.add = SetCache.prototype.push = setCacheAdd;\nSetCache.prototype.has = setCacheHas;\nmodule.exports = SetCache;//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvbG9kYXNoL19TZXRDYWNoZS5qcy5qcyIsInNvdXJjZXMiOlsid2VicGFjazovL1NOTGlicmFyeS8uL25vZGVfbW9kdWxlcy9sb2Rhc2gvX1NldENhY2hlLmpzP2Q2MTIiXSwic291cmNlc0NvbnRlbnQiOlsiXCJ1c2Ugc3RyaWN0XCI7XG52YXIgTWFwQ2FjaGUgPSByZXF1aXJlKCcuL19NYXBDYWNoZScpLCBzZXRDYWNoZUFkZCA9IHJlcXVpcmUoJy4vX3NldENhY2hlQWRkJyksIHNldENhY2hlSGFzID0gcmVxdWlyZSgnLi9fc2V0Q2FjaGVIYXMnKTtcbi8qKlxuICpcbiAqIENyZWF0ZXMgYW4gYXJyYXkgY2FjaGUgb2JqZWN0IHRvIHN0b3JlIHVuaXF1ZSB2YWx1ZXMuXG4gKlxuICogQHByaXZhdGVcbiAqIEBjb25zdHJ1Y3RvclxuICogQHBhcmFtIHtBcnJheX0gW3ZhbHVlc10gVGhlIHZhbHVlcyB0byBjYWNoZS5cbiAqL1xuZnVuY3Rpb24gU2V0Q2FjaGUodmFsdWVzKSB7XG4gICAgdmFyIGluZGV4ID0gLTEsIGxlbmd0aCA9IHZhbHVlcyA9PSBudWxsID8gMCA6IHZhbHVlcy5sZW5ndGg7XG4gICAgdGhpcy5fX2RhdGFfXyA9IG5ldyBNYXBDYWNoZTtcbiAgICB3aGlsZSAoKytpbmRleCA8IGxlbmd0aCkge1xuICAgICAgICB0aGlzLmFkZCh2YWx1ZXNbaW5kZXhdKTtcbiAgICB9XG59XG4vLyBBZGQgbWV0aG9kcyB0byBgU2V0Q2FjaGVgLlxuU2V0Q2FjaGUucHJvdG90eXBlLmFkZCA9IFNldENhY2hlLnByb3RvdHlwZS5wdXNoID0gc2V0Q2FjaGVBZGQ7XG5TZXRDYWNoZS5wcm90b3R5cGUuaGFzID0gc2V0Q2FjaGVIYXM7XG5tb2R1bGUuZXhwb3J0cyA9IFNldENhY2hlO1xuIl0sIm1hcHBpbmdzIjoiQUFBQTtBQUNBO0FBQUE7QUFBQTtBQUFBO0FBQ0E7Ozs7Ozs7Ozs7QUFRQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUNBIiwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./node_modules/lodash/_SetCache.js\n')},"./node_modules/lodash/_Stack.js":
|
||
/*!***************************************!*\
|
||
!*** ./node_modules/lodash/_Stack.js ***!
|
||
\***************************************/
|
||
/*! no static exports found */function(module,exports,__webpack_require__){"use strict";eval('\n\nvar ListCache = __webpack_require__(/*! ./_ListCache */ "./node_modules/lodash/_ListCache.js"),\n stackClear = __webpack_require__(/*! ./_stackClear */ "./node_modules/lodash/_stackClear.js"),\n stackDelete = __webpack_require__(/*! ./_stackDelete */ "./node_modules/lodash/_stackDelete.js"),\n stackGet = __webpack_require__(/*! ./_stackGet */ "./node_modules/lodash/_stackGet.js"),\n stackHas = __webpack_require__(/*! ./_stackHas */ "./node_modules/lodash/_stackHas.js"),\n stackSet = __webpack_require__(/*! ./_stackSet */ "./node_modules/lodash/_stackSet.js");\n/**\n * Creates a stack cache object to store key-value pairs.\n *\n * @private\n * @constructor\n * @param {Array} [entries] The key-value pairs to cache.\n */\n\n\nfunction Stack(entries) {\n var data = this.__data__ = new ListCache(entries);\n this.size = data.size;\n} // Add methods to `Stack`.\n\n\nStack.prototype.clear = stackClear;\nStack.prototype[\'delete\'] = stackDelete;\nStack.prototype.get = stackGet;\nStack.prototype.has = stackHas;\nStack.prototype.set = stackSet;\nmodule.exports = Stack;//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvbG9kYXNoL19TdGFjay5qcy5qcyIsInNvdXJjZXMiOlsid2VicGFjazovL1NOTGlicmFyeS8uL25vZGVfbW9kdWxlcy9sb2Rhc2gvX1N0YWNrLmpzPzdlNjQiXSwic291cmNlc0NvbnRlbnQiOlsiXCJ1c2Ugc3RyaWN0XCI7XG52YXIgTGlzdENhY2hlID0gcmVxdWlyZSgnLi9fTGlzdENhY2hlJyksIHN0YWNrQ2xlYXIgPSByZXF1aXJlKCcuL19zdGFja0NsZWFyJyksIHN0YWNrRGVsZXRlID0gcmVxdWlyZSgnLi9fc3RhY2tEZWxldGUnKSwgc3RhY2tHZXQgPSByZXF1aXJlKCcuL19zdGFja0dldCcpLCBzdGFja0hhcyA9IHJlcXVpcmUoJy4vX3N0YWNrSGFzJyksIHN0YWNrU2V0ID0gcmVxdWlyZSgnLi9fc3RhY2tTZXQnKTtcbi8qKlxuICogQ3JlYXRlcyBhIHN0YWNrIGNhY2hlIG9iamVjdCB0byBzdG9yZSBrZXktdmFsdWUgcGFpcnMuXG4gKlxuICogQHByaXZhdGVcbiAqIEBjb25zdHJ1Y3RvclxuICogQHBhcmFtIHtBcnJheX0gW2VudHJpZXNdIFRoZSBrZXktdmFsdWUgcGFpcnMgdG8gY2FjaGUuXG4gKi9cbmZ1bmN0aW9uIFN0YWNrKGVudHJpZXMpIHtcbiAgICB2YXIgZGF0YSA9IHRoaXMuX19kYXRhX18gPSBuZXcgTGlzdENhY2hlKGVudHJpZXMpO1xuICAgIHRoaXMuc2l6ZSA9IGRhdGEuc2l6ZTtcbn1cbi8vIEFkZCBtZXRob2RzIHRvIGBTdGFja2AuXG5TdGFjay5wcm90b3R5cGUuY2xlYXIgPSBzdGFja0NsZWFyO1xuU3RhY2sucHJvdG90eXBlWydkZWxldGUnXSA9IHN0YWNrRGVsZXRlO1xuU3RhY2sucHJvdG90eXBlLmdldCA9IHN0YWNrR2V0O1xuU3RhY2sucHJvdG90eXBlLmhhcyA9IHN0YWNrSGFzO1xuU3RhY2sucHJvdG90eXBlLnNldCA9IHN0YWNrU2V0O1xubW9kdWxlLmV4cG9ydHMgPSBTdGFjaztcbiJdLCJtYXBwaW5ncyI6IkFBQUE7QUFDQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUNBOzs7Ozs7Ozs7QUFPQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EiLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./node_modules/lodash/_Stack.js\n')},"./node_modules/lodash/_Symbol.js":
|
||
/*!****************************************!*\
|
||
!*** ./node_modules/lodash/_Symbol.js ***!
|
||
\****************************************/
|
||
/*! no static exports found */function(module,exports,__webpack_require__){"use strict";eval('\n\nvar root = __webpack_require__(/*! ./_root */ "./node_modules/lodash/_root.js");\n/** Built-in value references. */\n\n\nvar _Symbol = root.Symbol;\nmodule.exports = _Symbol;//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvbG9kYXNoL19TeW1ib2wuanMuanMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly9TTkxpYnJhcnkvLi9ub2RlX21vZHVsZXMvbG9kYXNoL19TeW1ib2wuanM/OWU2OSJdLCJzb3VyY2VzQ29udGVudCI6WyJcInVzZSBzdHJpY3RcIjtcbnZhciByb290ID0gcmVxdWlyZSgnLi9fcm9vdCcpO1xuLyoqIEJ1aWx0LWluIHZhbHVlIHJlZmVyZW5jZXMuICovXG52YXIgU3ltYm9sID0gcm9vdC5TeW1ib2w7XG5tb2R1bGUuZXhwb3J0cyA9IFN5bWJvbDtcbiJdLCJtYXBwaW5ncyI6IkFBQUE7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBREE7QUFDQSIsInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./node_modules/lodash/_Symbol.js\n')},"./node_modules/lodash/_Uint8Array.js":
|
||
/*!********************************************!*\
|
||
!*** ./node_modules/lodash/_Uint8Array.js ***!
|
||
\********************************************/
|
||
/*! no static exports found */function(module,exports,__webpack_require__){"use strict";eval('\n\nvar root = __webpack_require__(/*! ./_root */ "./node_modules/lodash/_root.js");\n/** Built-in value references. */\n\n\nvar Uint8Array = root.Uint8Array;\nmodule.exports = Uint8Array;//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvbG9kYXNoL19VaW50OEFycmF5LmpzLmpzIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vU05MaWJyYXJ5Ly4vbm9kZV9tb2R1bGVzL2xvZGFzaC9fVWludDhBcnJheS5qcz8yNDc0Il0sInNvdXJjZXNDb250ZW50IjpbIlwidXNlIHN0cmljdFwiO1xudmFyIHJvb3QgPSByZXF1aXJlKCcuL19yb290Jyk7XG4vKiogQnVpbHQtaW4gdmFsdWUgcmVmZXJlbmNlcy4gKi9cbnZhciBVaW50OEFycmF5ID0gcm9vdC5VaW50OEFycmF5O1xubW9kdWxlLmV4cG9ydHMgPSBVaW50OEFycmF5O1xuIl0sIm1hcHBpbmdzIjoiQUFBQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFEQTtBQUNBIiwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./node_modules/lodash/_Uint8Array.js\n')},"./node_modules/lodash/_WeakMap.js":
|
||
/*!*****************************************!*\
|
||
!*** ./node_modules/lodash/_WeakMap.js ***!
|
||
\*****************************************/
|
||
/*! no static exports found */function(module,exports,__webpack_require__){"use strict";eval('\n\nvar getNative = __webpack_require__(/*! ./_getNative */ "./node_modules/lodash/_getNative.js"),\n root = __webpack_require__(/*! ./_root */ "./node_modules/lodash/_root.js");\n/* Built-in method references that are verified to be native. */\n\n\nvar WeakMap = getNative(root, \'WeakMap\');\nmodule.exports = WeakMap;//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvbG9kYXNoL19XZWFrTWFwLmpzLmpzIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vU05MaWJyYXJ5Ly4vbm9kZV9tb2R1bGVzL2xvZGFzaC9fV2Vha01hcC5qcz8zOWZmIl0sInNvdXJjZXNDb250ZW50IjpbIlwidXNlIHN0cmljdFwiO1xudmFyIGdldE5hdGl2ZSA9IHJlcXVpcmUoJy4vX2dldE5hdGl2ZScpLCByb290ID0gcmVxdWlyZSgnLi9fcm9vdCcpO1xuLyogQnVpbHQtaW4gbWV0aG9kIHJlZmVyZW5jZXMgdGhhdCBhcmUgdmVyaWZpZWQgdG8gYmUgbmF0aXZlLiAqL1xudmFyIFdlYWtNYXAgPSBnZXROYXRpdmUocm9vdCwgJ1dlYWtNYXAnKTtcbm1vZHVsZS5leHBvcnRzID0gV2Vha01hcDtcbiJdLCJtYXBwaW5ncyI6IkFBQUE7QUFDQTtBQUFBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFEQTtBQUNBIiwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./node_modules/lodash/_WeakMap.js\n')},"./node_modules/lodash/_apply.js":
|
||
/*!***************************************!*\
|
||
!*** ./node_modules/lodash/_apply.js ***!
|
||
\***************************************/
|
||
/*! no static exports found */function(module,exports,__webpack_require__){"use strict";eval("\n/**\n * A faster alternative to `Function#apply`, this function invokes `func`\n * with the `this` binding of `thisArg` and the arguments of `args`.\n *\n * @private\n * @param {Function} func The function to invoke.\n * @param {*} thisArg The `this` binding of `func`.\n * @param {Array} args The arguments to invoke `func` with.\n * @returns {*} Returns the result of `func`.\n */\n\nfunction apply(func, thisArg, args) {\n switch (args.length) {\n case 0:\n return func.call(thisArg);\n\n case 1:\n return func.call(thisArg, args[0]);\n\n case 2:\n return func.call(thisArg, args[0], args[1]);\n\n case 3:\n return func.call(thisArg, args[0], args[1], args[2]);\n }\n\n return func.apply(thisArg, args);\n}\n\nmodule.exports = apply;//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvbG9kYXNoL19hcHBseS5qcy5qcyIsInNvdXJjZXMiOlsid2VicGFjazovL1NOTGlicmFyeS8uL25vZGVfbW9kdWxlcy9sb2Rhc2gvX2FwcGx5LmpzPzg1ZTMiXSwic291cmNlc0NvbnRlbnQiOlsiXCJ1c2Ugc3RyaWN0XCI7XG4vKipcbiAqIEEgZmFzdGVyIGFsdGVybmF0aXZlIHRvIGBGdW5jdGlvbiNhcHBseWAsIHRoaXMgZnVuY3Rpb24gaW52b2tlcyBgZnVuY2BcbiAqIHdpdGggdGhlIGB0aGlzYCBiaW5kaW5nIG9mIGB0aGlzQXJnYCBhbmQgdGhlIGFyZ3VtZW50cyBvZiBgYXJnc2AuXG4gKlxuICogQHByaXZhdGVcbiAqIEBwYXJhbSB7RnVuY3Rpb259IGZ1bmMgVGhlIGZ1bmN0aW9uIHRvIGludm9rZS5cbiAqIEBwYXJhbSB7Kn0gdGhpc0FyZyBUaGUgYHRoaXNgIGJpbmRpbmcgb2YgYGZ1bmNgLlxuICogQHBhcmFtIHtBcnJheX0gYXJncyBUaGUgYXJndW1lbnRzIHRvIGludm9rZSBgZnVuY2Agd2l0aC5cbiAqIEByZXR1cm5zIHsqfSBSZXR1cm5zIHRoZSByZXN1bHQgb2YgYGZ1bmNgLlxuICovXG5mdW5jdGlvbiBhcHBseShmdW5jLCB0aGlzQXJnLCBhcmdzKSB7XG4gICAgc3dpdGNoIChhcmdzLmxlbmd0aCkge1xuICAgICAgICBjYXNlIDA6IHJldHVybiBmdW5jLmNhbGwodGhpc0FyZyk7XG4gICAgICAgIGNhc2UgMTogcmV0dXJuIGZ1bmMuY2FsbCh0aGlzQXJnLCBhcmdzWzBdKTtcbiAgICAgICAgY2FzZSAyOiByZXR1cm4gZnVuYy5jYWxsKHRoaXNBcmcsIGFyZ3NbMF0sIGFyZ3NbMV0pO1xuICAgICAgICBjYXNlIDM6IHJldHVybiBmdW5jLmNhbGwodGhpc0FyZywgYXJnc1swXSwgYXJnc1sxXSwgYXJnc1syXSk7XG4gICAgfVxuICAgIHJldHVybiBmdW5jLmFwcGx5KHRoaXNBcmcsIGFyZ3MpO1xufVxubW9kdWxlLmV4cG9ydHMgPSBhcHBseTtcbiJdLCJtYXBwaW5ncyI6IkFBQUE7QUFDQTs7Ozs7Ozs7Ozs7QUFVQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQUE7QUFBQTtBQUNBO0FBQUE7QUFBQTtBQUNBO0FBQUE7QUFBQTtBQUpBO0FBQ0E7QUFLQTtBQUNBO0FBQ0E7QUFBQSIsInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./node_modules/lodash/_apply.js\n")},"./node_modules/lodash/_arrayFilter.js":
|
||
/*!*********************************************!*\
|
||
!*** ./node_modules/lodash/_arrayFilter.js ***!
|
||
\*********************************************/
|
||
/*! no static exports found */function(module,exports,__webpack_require__){"use strict";eval("\n/**\n * A specialized version of `_.filter` for arrays without support for\n * iteratee shorthands.\n *\n * @private\n * @param {Array} [array] The array to iterate over.\n * @param {Function} predicate The function invoked per iteration.\n * @returns {Array} Returns the new filtered array.\n */\n\nfunction arrayFilter(array, predicate) {\n var index = -1,\n length = array == null ? 0 : array.length,\n resIndex = 0,\n result = [];\n\n while (++index < length) {\n var value = array[index];\n\n if (predicate(value, index, array)) {\n result[resIndex++] = value;\n }\n }\n\n return result;\n}\n\nmodule.exports = arrayFilter;//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvbG9kYXNoL19hcnJheUZpbHRlci5qcy5qcyIsInNvdXJjZXMiOlsid2VicGFjazovL1NOTGlicmFyeS8uL25vZGVfbW9kdWxlcy9sb2Rhc2gvX2FycmF5RmlsdGVyLmpzPzJkN2MiXSwic291cmNlc0NvbnRlbnQiOlsiXCJ1c2Ugc3RyaWN0XCI7XG4vKipcbiAqIEEgc3BlY2lhbGl6ZWQgdmVyc2lvbiBvZiBgXy5maWx0ZXJgIGZvciBhcnJheXMgd2l0aG91dCBzdXBwb3J0IGZvclxuICogaXRlcmF0ZWUgc2hvcnRoYW5kcy5cbiAqXG4gKiBAcHJpdmF0ZVxuICogQHBhcmFtIHtBcnJheX0gW2FycmF5XSBUaGUgYXJyYXkgdG8gaXRlcmF0ZSBvdmVyLlxuICogQHBhcmFtIHtGdW5jdGlvbn0gcHJlZGljYXRlIFRoZSBmdW5jdGlvbiBpbnZva2VkIHBlciBpdGVyYXRpb24uXG4gKiBAcmV0dXJucyB7QXJyYXl9IFJldHVybnMgdGhlIG5ldyBmaWx0ZXJlZCBhcnJheS5cbiAqL1xuZnVuY3Rpb24gYXJyYXlGaWx0ZXIoYXJyYXksIHByZWRpY2F0ZSkge1xuICAgIHZhciBpbmRleCA9IC0xLCBsZW5ndGggPSBhcnJheSA9PSBudWxsID8gMCA6IGFycmF5Lmxlbmd0aCwgcmVzSW5kZXggPSAwLCByZXN1bHQgPSBbXTtcbiAgICB3aGlsZSAoKytpbmRleCA8IGxlbmd0aCkge1xuICAgICAgICB2YXIgdmFsdWUgPSBhcnJheVtpbmRleF07XG4gICAgICAgIGlmIChwcmVkaWNhdGUodmFsdWUsIGluZGV4LCBhcnJheSkpIHtcbiAgICAgICAgICAgIHJlc3VsdFtyZXNJbmRleCsrXSA9IHZhbHVlO1xuICAgICAgICB9XG4gICAgfVxuICAgIHJldHVybiByZXN1bHQ7XG59XG5tb2R1bGUuZXhwb3J0cyA9IGFycmF5RmlsdGVyO1xuIl0sIm1hcHBpbmdzIjoiQUFBQTtBQUNBOzs7Ozs7Ozs7O0FBU0E7QUFDQTtBQUFBO0FBQUE7QUFBQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUFBIiwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./node_modules/lodash/_arrayFilter.js\n")},"./node_modules/lodash/_arrayIncludes.js":
|
||
/*!***********************************************!*\
|
||
!*** ./node_modules/lodash/_arrayIncludes.js ***!
|
||
\***********************************************/
|
||
/*! no static exports found */function(module,exports,__webpack_require__){"use strict";eval('\n\nvar baseIndexOf = __webpack_require__(/*! ./_baseIndexOf */ "./node_modules/lodash/_baseIndexOf.js");\n/**\n * A specialized version of `_.includes` for arrays without support for\n * specifying an index to search from.\n *\n * @private\n * @param {Array} [array] The array to inspect.\n * @param {*} target The value to search for.\n * @returns {boolean} Returns `true` if `target` is found, else `false`.\n */\n\n\nfunction arrayIncludes(array, value) {\n var length = array == null ? 0 : array.length;\n return !!length && baseIndexOf(array, value, 0) > -1;\n}\n\nmodule.exports = arrayIncludes;//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvbG9kYXNoL19hcnJheUluY2x1ZGVzLmpzLmpzIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vU05MaWJyYXJ5Ly4vbm9kZV9tb2R1bGVzL2xvZGFzaC9fYXJyYXlJbmNsdWRlcy5qcz84ZGIzIl0sInNvdXJjZXNDb250ZW50IjpbIlwidXNlIHN0cmljdFwiO1xudmFyIGJhc2VJbmRleE9mID0gcmVxdWlyZSgnLi9fYmFzZUluZGV4T2YnKTtcbi8qKlxuICogQSBzcGVjaWFsaXplZCB2ZXJzaW9uIG9mIGBfLmluY2x1ZGVzYCBmb3IgYXJyYXlzIHdpdGhvdXQgc3VwcG9ydCBmb3JcbiAqIHNwZWNpZnlpbmcgYW4gaW5kZXggdG8gc2VhcmNoIGZyb20uXG4gKlxuICogQHByaXZhdGVcbiAqIEBwYXJhbSB7QXJyYXl9IFthcnJheV0gVGhlIGFycmF5IHRvIGluc3BlY3QuXG4gKiBAcGFyYW0geyp9IHRhcmdldCBUaGUgdmFsdWUgdG8gc2VhcmNoIGZvci5cbiAqIEByZXR1cm5zIHtib29sZWFufSBSZXR1cm5zIGB0cnVlYCBpZiBgdGFyZ2V0YCBpcyBmb3VuZCwgZWxzZSBgZmFsc2VgLlxuICovXG5mdW5jdGlvbiBhcnJheUluY2x1ZGVzKGFycmF5LCB2YWx1ZSkge1xuICAgIHZhciBsZW5ndGggPSBhcnJheSA9PSBudWxsID8gMCA6IGFycmF5Lmxlbmd0aDtcbiAgICByZXR1cm4gISFsZW5ndGggJiYgYmFzZUluZGV4T2YoYXJyYXksIHZhbHVlLCAwKSA+IC0xO1xufVxubW9kdWxlLmV4cG9ydHMgPSBhcnJheUluY2x1ZGVzO1xuIl0sIm1hcHBpbmdzIjoiQUFBQTtBQUNBO0FBQUE7QUFDQTs7Ozs7Ozs7Ozs7QUFTQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUEiLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./node_modules/lodash/_arrayIncludes.js\n')},"./node_modules/lodash/_arrayIncludesWith.js":
|
||
/*!***************************************************!*\
|
||
!*** ./node_modules/lodash/_arrayIncludesWith.js ***!
|
||
\***************************************************/
|
||
/*! no static exports found */function(module,exports,__webpack_require__){"use strict";eval("\n/**\n * This function is like `arrayIncludes` except that it accepts a comparator.\n *\n * @private\n * @param {Array} [array] The array to inspect.\n * @param {*} target The value to search for.\n * @param {Function} comparator The comparator invoked per element.\n * @returns {boolean} Returns `true` if `target` is found, else `false`.\n */\n\nfunction arrayIncludesWith(array, value, comparator) {\n var index = -1,\n length = array == null ? 0 : array.length;\n\n while (++index < length) {\n if (comparator(value, array[index])) {\n return true;\n }\n }\n\n return false;\n}\n\nmodule.exports = arrayIncludesWith;//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvbG9kYXNoL19hcnJheUluY2x1ZGVzV2l0aC5qcy5qcyIsInNvdXJjZXMiOlsid2VicGFjazovL1NOTGlicmFyeS8uL25vZGVfbW9kdWxlcy9sb2Rhc2gvX2FycmF5SW5jbHVkZXNXaXRoLmpzPzVlZGYiXSwic291cmNlc0NvbnRlbnQiOlsiXCJ1c2Ugc3RyaWN0XCI7XG4vKipcbiAqIFRoaXMgZnVuY3Rpb24gaXMgbGlrZSBgYXJyYXlJbmNsdWRlc2AgZXhjZXB0IHRoYXQgaXQgYWNjZXB0cyBhIGNvbXBhcmF0b3IuXG4gKlxuICogQHByaXZhdGVcbiAqIEBwYXJhbSB7QXJyYXl9IFthcnJheV0gVGhlIGFycmF5IHRvIGluc3BlY3QuXG4gKiBAcGFyYW0geyp9IHRhcmdldCBUaGUgdmFsdWUgdG8gc2VhcmNoIGZvci5cbiAqIEBwYXJhbSB7RnVuY3Rpb259IGNvbXBhcmF0b3IgVGhlIGNvbXBhcmF0b3IgaW52b2tlZCBwZXIgZWxlbWVudC5cbiAqIEByZXR1cm5zIHtib29sZWFufSBSZXR1cm5zIGB0cnVlYCBpZiBgdGFyZ2V0YCBpcyBmb3VuZCwgZWxzZSBgZmFsc2VgLlxuICovXG5mdW5jdGlvbiBhcnJheUluY2x1ZGVzV2l0aChhcnJheSwgdmFsdWUsIGNvbXBhcmF0b3IpIHtcbiAgICB2YXIgaW5kZXggPSAtMSwgbGVuZ3RoID0gYXJyYXkgPT0gbnVsbCA/IDAgOiBhcnJheS5sZW5ndGg7XG4gICAgd2hpbGUgKCsraW5kZXggPCBsZW5ndGgpIHtcbiAgICAgICAgaWYgKGNvbXBhcmF0b3IodmFsdWUsIGFycmF5W2luZGV4XSkpIHtcbiAgICAgICAgICAgIHJldHVybiB0cnVlO1xuICAgICAgICB9XG4gICAgfVxuICAgIHJldHVybiBmYWxzZTtcbn1cbm1vZHVsZS5leHBvcnRzID0gYXJyYXlJbmNsdWRlc1dpdGg7XG4iXSwibWFwcGluZ3MiOiJBQUFBO0FBQ0E7Ozs7Ozs7Ozs7QUFTQTtBQUNBO0FBQUE7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUFBIiwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./node_modules/lodash/_arrayIncludesWith.js\n")},"./node_modules/lodash/_arrayLikeKeys.js":
|
||
/*!***********************************************!*\
|
||
!*** ./node_modules/lodash/_arrayLikeKeys.js ***!
|
||
\***********************************************/
|
||
/*! no static exports found */function(module,exports,__webpack_require__){"use strict";eval("\n\nvar baseTimes = __webpack_require__(/*! ./_baseTimes */ \"./node_modules/lodash/_baseTimes.js\"),\n isArguments = __webpack_require__(/*! ./isArguments */ \"./node_modules/lodash/isArguments.js\"),\n isArray = __webpack_require__(/*! ./isArray */ \"./node_modules/lodash/isArray.js\"),\n isBuffer = __webpack_require__(/*! ./isBuffer */ \"./node_modules/lodash/isBuffer.js\"),\n isIndex = __webpack_require__(/*! ./_isIndex */ \"./node_modules/lodash/_isIndex.js\"),\n isTypedArray = __webpack_require__(/*! ./isTypedArray */ \"./node_modules/lodash/isTypedArray.js\");\n/** Used for built-in method references. */\n\n\nvar objectProto = Object.prototype;\n/** Used to check objects for own properties. */\n\nvar hasOwnProperty = objectProto.hasOwnProperty;\n/**\n * Creates an array of the enumerable property names of the array-like `value`.\n *\n * @private\n * @param {*} value The value to query.\n * @param {boolean} inherited Specify returning inherited property names.\n * @returns {Array} Returns the array of property names.\n */\n\nfunction arrayLikeKeys(value, inherited) {\n var isArr = isArray(value),\n isArg = !isArr && isArguments(value),\n isBuff = !isArr && !isArg && isBuffer(value),\n isType = !isArr && !isArg && !isBuff && isTypedArray(value),\n skipIndexes = isArr || isArg || isBuff || isType,\n result = skipIndexes ? baseTimes(value.length, String) : [],\n length = result.length;\n\n for (var key in value) {\n if ((inherited || hasOwnProperty.call(value, key)) && !(skipIndexes && ( // Safari 9 has enumerable `arguments.length` in strict mode.\n key == 'length' || // Node.js 0.10 has enumerable non-index properties on buffers.\n isBuff && (key == 'offset' || key == 'parent') || // PhantomJS 2 has enumerable non-index properties on typed arrays.\n isType && (key == 'buffer' || key == 'byteLength' || key == 'byteOffset') || // Skip index properties.\n isIndex(key, length)))) {\n result.push(key);\n }\n }\n\n return result;\n}\n\nmodule.exports = arrayLikeKeys;//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvbG9kYXNoL19hcnJheUxpa2VLZXlzLmpzLmpzIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vU05MaWJyYXJ5Ly4vbm9kZV9tb2R1bGVzL2xvZGFzaC9fYXJyYXlMaWtlS2V5cy5qcz82ZmNkIl0sInNvdXJjZXNDb250ZW50IjpbIlwidXNlIHN0cmljdFwiO1xudmFyIGJhc2VUaW1lcyA9IHJlcXVpcmUoJy4vX2Jhc2VUaW1lcycpLCBpc0FyZ3VtZW50cyA9IHJlcXVpcmUoJy4vaXNBcmd1bWVudHMnKSwgaXNBcnJheSA9IHJlcXVpcmUoJy4vaXNBcnJheScpLCBpc0J1ZmZlciA9IHJlcXVpcmUoJy4vaXNCdWZmZXInKSwgaXNJbmRleCA9IHJlcXVpcmUoJy4vX2lzSW5kZXgnKSwgaXNUeXBlZEFycmF5ID0gcmVxdWlyZSgnLi9pc1R5cGVkQXJyYXknKTtcbi8qKiBVc2VkIGZvciBidWlsdC1pbiBtZXRob2QgcmVmZXJlbmNlcy4gKi9cbnZhciBvYmplY3RQcm90byA9IE9iamVjdC5wcm90b3R5cGU7XG4vKiogVXNlZCB0byBjaGVjayBvYmplY3RzIGZvciBvd24gcHJvcGVydGllcy4gKi9cbnZhciBoYXNPd25Qcm9wZXJ0eSA9IG9iamVjdFByb3RvLmhhc093blByb3BlcnR5O1xuLyoqXG4gKiBDcmVhdGVzIGFuIGFycmF5IG9mIHRoZSBlbnVtZXJhYmxlIHByb3BlcnR5IG5hbWVzIG9mIHRoZSBhcnJheS1saWtlIGB2YWx1ZWAuXG4gKlxuICogQHByaXZhdGVcbiAqIEBwYXJhbSB7Kn0gdmFsdWUgVGhlIHZhbHVlIHRvIHF1ZXJ5LlxuICogQHBhcmFtIHtib29sZWFufSBpbmhlcml0ZWQgU3BlY2lmeSByZXR1cm5pbmcgaW5oZXJpdGVkIHByb3BlcnR5IG5hbWVzLlxuICogQHJldHVybnMge0FycmF5fSBSZXR1cm5zIHRoZSBhcnJheSBvZiBwcm9wZXJ0eSBuYW1lcy5cbiAqL1xuZnVuY3Rpb24gYXJyYXlMaWtlS2V5cyh2YWx1ZSwgaW5oZXJpdGVkKSB7XG4gICAgdmFyIGlzQXJyID0gaXNBcnJheSh2YWx1ZSksIGlzQXJnID0gIWlzQXJyICYmIGlzQXJndW1lbnRzKHZhbHVlKSwgaXNCdWZmID0gIWlzQXJyICYmICFpc0FyZyAmJiBpc0J1ZmZlcih2YWx1ZSksIGlzVHlwZSA9ICFpc0FyciAmJiAhaXNBcmcgJiYgIWlzQnVmZiAmJiBpc1R5cGVkQXJyYXkodmFsdWUpLCBza2lwSW5kZXhlcyA9IGlzQXJyIHx8IGlzQXJnIHx8IGlzQnVmZiB8fCBpc1R5cGUsIHJlc3VsdCA9IHNraXBJbmRleGVzID8gYmFzZVRpbWVzKHZhbHVlLmxlbmd0aCwgU3RyaW5nKSA6IFtdLCBsZW5ndGggPSByZXN1bHQubGVuZ3RoO1xuICAgIGZvciAodmFyIGtleSBpbiB2YWx1ZSkge1xuICAgICAgICBpZiAoKGluaGVyaXRlZCB8fCBoYXNPd25Qcm9wZXJ0eS5jYWxsKHZhbHVlLCBrZXkpKSAmJlxuICAgICAgICAgICAgIShza2lwSW5kZXhlcyAmJiAoXG4gICAgICAgICAgICAvLyBTYWZhcmkgOSBoYXMgZW51bWVyYWJsZSBgYXJndW1lbnRzLmxlbmd0aGAgaW4gc3RyaWN0IG1vZGUuXG4gICAgICAgICAgICBrZXkgPT0gJ2xlbmd0aCcgfHxcbiAgICAgICAgICAgICAgICAvLyBOb2RlLmpzIDAuMTAgaGFzIGVudW1lcmFibGUgbm9uLWluZGV4IHByb3BlcnRpZXMgb24gYnVmZmVycy5cbiAgICAgICAgICAgICAgICAoaXNCdWZmICYmIChrZXkgPT0gJ29mZnNldCcgfHwga2V5ID09ICdwYXJlbnQnKSkgfHxcbiAgICAgICAgICAgICAgICAvLyBQaGFudG9tSlMgMiBoYXMgZW51bWVyYWJsZSBub24taW5kZXggcHJvcGVydGllcyBvbiB0eXBlZCBhcnJheXMuXG4gICAgICAgICAgICAgICAgKGlzVHlwZSAmJiAoa2V5ID09ICdidWZmZXInIHx8IGtleSA9PSAnYnl0ZUxlbmd0aCcgfHwga2V5ID09ICdieXRlT2Zmc2V0JykpIHx8XG4gICAgICAgICAgICAgICAgLy8gU2tpcCBpbmRleCBwcm9wZXJ0aWVzLlxuICAgICAgICAgICAgICAgIGlzSW5kZXgoa2V5LCBsZW5ndGgpKSkpIHtcbiAgICAgICAgICAgIHJlc3VsdC5wdXNoKGtleSk7XG4gICAgICAgIH1cbiAgICB9XG4gICAgcmV0dXJuIHJlc3VsdDtcbn1cbm1vZHVsZS5leHBvcnRzID0gYXJyYXlMaWtlS2V5cztcbiJdLCJtYXBwaW5ncyI6IkFBQUE7QUFDQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQURBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7Ozs7Ozs7OztBQVFBO0FBQ0E7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFDQTtBQUFBO0FBQ0E7QUFHQTtBQUVBO0FBRUE7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQUEiLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./node_modules/lodash/_arrayLikeKeys.js\n")},"./node_modules/lodash/_arrayMap.js":
|
||
/*!******************************************!*\
|
||
!*** ./node_modules/lodash/_arrayMap.js ***!
|
||
\******************************************/
|
||
/*! no static exports found */function(module,exports,__webpack_require__){"use strict";eval("\n/**\n * A specialized version of `_.map` for arrays without support for iteratee\n * shorthands.\n *\n * @private\n * @param {Array} [array] The array to iterate over.\n * @param {Function} iteratee The function invoked per iteration.\n * @returns {Array} Returns the new mapped array.\n */\n\nfunction arrayMap(array, iteratee) {\n var index = -1,\n length = array == null ? 0 : array.length,\n result = Array(length);\n\n while (++index < length) {\n result[index] = iteratee(array[index], index, array);\n }\n\n return result;\n}\n\nmodule.exports = arrayMap;//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvbG9kYXNoL19hcnJheU1hcC5qcy5qcyIsInNvdXJjZXMiOlsid2VicGFjazovL1NOTGlicmFyeS8uL25vZGVfbW9kdWxlcy9sb2Rhc2gvX2FycmF5TWFwLmpzPzc5NDgiXSwic291cmNlc0NvbnRlbnQiOlsiXCJ1c2Ugc3RyaWN0XCI7XG4vKipcbiAqIEEgc3BlY2lhbGl6ZWQgdmVyc2lvbiBvZiBgXy5tYXBgIGZvciBhcnJheXMgd2l0aG91dCBzdXBwb3J0IGZvciBpdGVyYXRlZVxuICogc2hvcnRoYW5kcy5cbiAqXG4gKiBAcHJpdmF0ZVxuICogQHBhcmFtIHtBcnJheX0gW2FycmF5XSBUaGUgYXJyYXkgdG8gaXRlcmF0ZSBvdmVyLlxuICogQHBhcmFtIHtGdW5jdGlvbn0gaXRlcmF0ZWUgVGhlIGZ1bmN0aW9uIGludm9rZWQgcGVyIGl0ZXJhdGlvbi5cbiAqIEByZXR1cm5zIHtBcnJheX0gUmV0dXJucyB0aGUgbmV3IG1hcHBlZCBhcnJheS5cbiAqL1xuZnVuY3Rpb24gYXJyYXlNYXAoYXJyYXksIGl0ZXJhdGVlKSB7XG4gICAgdmFyIGluZGV4ID0gLTEsIGxlbmd0aCA9IGFycmF5ID09IG51bGwgPyAwIDogYXJyYXkubGVuZ3RoLCByZXN1bHQgPSBBcnJheShsZW5ndGgpO1xuICAgIHdoaWxlICgrK2luZGV4IDwgbGVuZ3RoKSB7XG4gICAgICAgIHJlc3VsdFtpbmRleF0gPSBpdGVyYXRlZShhcnJheVtpbmRleF0sIGluZGV4LCBhcnJheSk7XG4gICAgfVxuICAgIHJldHVybiByZXN1bHQ7XG59XG5tb2R1bGUuZXhwb3J0cyA9IGFycmF5TWFwO1xuIl0sIm1hcHBpbmdzIjoiQUFBQTtBQUNBOzs7Ozs7Ozs7O0FBU0E7QUFDQTtBQUFBO0FBQUE7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQUEiLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./node_modules/lodash/_arrayMap.js\n")},"./node_modules/lodash/_arrayPush.js":
|
||
/*!*******************************************!*\
|
||
!*** ./node_modules/lodash/_arrayPush.js ***!
|
||
\*******************************************/
|
||
/*! no static exports found */function(module,exports,__webpack_require__){"use strict";eval("\n/**\n * Appends the elements of `values` to `array`.\n *\n * @private\n * @param {Array} array The array to modify.\n * @param {Array} values The values to append.\n * @returns {Array} Returns `array`.\n */\n\nfunction arrayPush(array, values) {\n var index = -1,\n length = values.length,\n offset = array.length;\n\n while (++index < length) {\n array[offset + index] = values[index];\n }\n\n return array;\n}\n\nmodule.exports = arrayPush;//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvbG9kYXNoL19hcnJheVB1c2guanMuanMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly9TTkxpYnJhcnkvLi9ub2RlX21vZHVsZXMvbG9kYXNoL19hcnJheVB1c2guanM/MDg3ZCJdLCJzb3VyY2VzQ29udGVudCI6WyJcInVzZSBzdHJpY3RcIjtcbi8qKlxuICogQXBwZW5kcyB0aGUgZWxlbWVudHMgb2YgYHZhbHVlc2AgdG8gYGFycmF5YC5cbiAqXG4gKiBAcHJpdmF0ZVxuICogQHBhcmFtIHtBcnJheX0gYXJyYXkgVGhlIGFycmF5IHRvIG1vZGlmeS5cbiAqIEBwYXJhbSB7QXJyYXl9IHZhbHVlcyBUaGUgdmFsdWVzIHRvIGFwcGVuZC5cbiAqIEByZXR1cm5zIHtBcnJheX0gUmV0dXJucyBgYXJyYXlgLlxuICovXG5mdW5jdGlvbiBhcnJheVB1c2goYXJyYXksIHZhbHVlcykge1xuICAgIHZhciBpbmRleCA9IC0xLCBsZW5ndGggPSB2YWx1ZXMubGVuZ3RoLCBvZmZzZXQgPSBhcnJheS5sZW5ndGg7XG4gICAgd2hpbGUgKCsraW5kZXggPCBsZW5ndGgpIHtcbiAgICAgICAgYXJyYXlbb2Zmc2V0ICsgaW5kZXhdID0gdmFsdWVzW2luZGV4XTtcbiAgICB9XG4gICAgcmV0dXJuIGFycmF5O1xufVxubW9kdWxlLmV4cG9ydHMgPSBhcnJheVB1c2g7XG4iXSwibWFwcGluZ3MiOiJBQUFBO0FBQ0E7Ozs7Ozs7OztBQVFBO0FBQ0E7QUFBQTtBQUFBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUFBIiwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./node_modules/lodash/_arrayPush.js\n")},"./node_modules/lodash/_arraySome.js":
|
||
/*!*******************************************!*\
|
||
!*** ./node_modules/lodash/_arraySome.js ***!
|
||
\*******************************************/
|
||
/*! no static exports found */function(module,exports,__webpack_require__){"use strict";eval("\n/**\n * A specialized version of `_.some` for arrays without support for iteratee\n * shorthands.\n *\n * @private\n * @param {Array} [array] The array to iterate over.\n * @param {Function} predicate The function invoked per iteration.\n * @returns {boolean} Returns `true` if any element passes the predicate check,\n * else `false`.\n */\n\nfunction arraySome(array, predicate) {\n var index = -1,\n length = array == null ? 0 : array.length;\n\n while (++index < length) {\n if (predicate(array[index], index, array)) {\n return true;\n }\n }\n\n return false;\n}\n\nmodule.exports = arraySome;//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvbG9kYXNoL19hcnJheVNvbWUuanMuanMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly9TTkxpYnJhcnkvLi9ub2RlX21vZHVsZXMvbG9kYXNoL19hcnJheVNvbWUuanM/NDI4NCJdLCJzb3VyY2VzQ29udGVudCI6WyJcInVzZSBzdHJpY3RcIjtcbi8qKlxuICogQSBzcGVjaWFsaXplZCB2ZXJzaW9uIG9mIGBfLnNvbWVgIGZvciBhcnJheXMgd2l0aG91dCBzdXBwb3J0IGZvciBpdGVyYXRlZVxuICogc2hvcnRoYW5kcy5cbiAqXG4gKiBAcHJpdmF0ZVxuICogQHBhcmFtIHtBcnJheX0gW2FycmF5XSBUaGUgYXJyYXkgdG8gaXRlcmF0ZSBvdmVyLlxuICogQHBhcmFtIHtGdW5jdGlvbn0gcHJlZGljYXRlIFRoZSBmdW5jdGlvbiBpbnZva2VkIHBlciBpdGVyYXRpb24uXG4gKiBAcmV0dXJucyB7Ym9vbGVhbn0gUmV0dXJucyBgdHJ1ZWAgaWYgYW55IGVsZW1lbnQgcGFzc2VzIHRoZSBwcmVkaWNhdGUgY2hlY2ssXG4gKiAgZWxzZSBgZmFsc2VgLlxuICovXG5mdW5jdGlvbiBhcnJheVNvbWUoYXJyYXksIHByZWRpY2F0ZSkge1xuICAgIHZhciBpbmRleCA9IC0xLCBsZW5ndGggPSBhcnJheSA9PSBudWxsID8gMCA6IGFycmF5Lmxlbmd0aDtcbiAgICB3aGlsZSAoKytpbmRleCA8IGxlbmd0aCkge1xuICAgICAgICBpZiAocHJlZGljYXRlKGFycmF5W2luZGV4XSwgaW5kZXgsIGFycmF5KSkge1xuICAgICAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgICAgIH1cbiAgICB9XG4gICAgcmV0dXJuIGZhbHNlO1xufVxubW9kdWxlLmV4cG9ydHMgPSBhcnJheVNvbWU7XG4iXSwibWFwcGluZ3MiOiJBQUFBO0FBQ0E7Ozs7Ozs7Ozs7O0FBVUE7QUFDQTtBQUFBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFBQSIsInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./node_modules/lodash/_arraySome.js\n")},"./node_modules/lodash/_assignMergeValue.js":
|
||
/*!**************************************************!*\
|
||
!*** ./node_modules/lodash/_assignMergeValue.js ***!
|
||
\**************************************************/
|
||
/*! no static exports found */function(module,exports,__webpack_require__){"use strict";eval('\n\nvar baseAssignValue = __webpack_require__(/*! ./_baseAssignValue */ "./node_modules/lodash/_baseAssignValue.js"),\n eq = __webpack_require__(/*! ./eq */ "./node_modules/lodash/eq.js");\n/**\n * This function is like `assignValue` except that it doesn\'t assign\n * `undefined` values.\n *\n * @private\n * @param {Object} object The object to modify.\n * @param {string} key The key of the property to assign.\n * @param {*} value The value to assign.\n */\n\n\nfunction assignMergeValue(object, key, value) {\n if (value !== undefined && !eq(object[key], value) || value === undefined && !(key in object)) {\n baseAssignValue(object, key, value);\n }\n}\n\nmodule.exports = assignMergeValue;//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvbG9kYXNoL19hc3NpZ25NZXJnZVZhbHVlLmpzLmpzIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vU05MaWJyYXJ5Ly4vbm9kZV9tb2R1bGVzL2xvZGFzaC9fYXNzaWduTWVyZ2VWYWx1ZS5qcz9iNzYwIl0sInNvdXJjZXNDb250ZW50IjpbIlwidXNlIHN0cmljdFwiO1xudmFyIGJhc2VBc3NpZ25WYWx1ZSA9IHJlcXVpcmUoJy4vX2Jhc2VBc3NpZ25WYWx1ZScpLCBlcSA9IHJlcXVpcmUoJy4vZXEnKTtcbi8qKlxuICogVGhpcyBmdW5jdGlvbiBpcyBsaWtlIGBhc3NpZ25WYWx1ZWAgZXhjZXB0IHRoYXQgaXQgZG9lc24ndCBhc3NpZ25cbiAqIGB1bmRlZmluZWRgIHZhbHVlcy5cbiAqXG4gKiBAcHJpdmF0ZVxuICogQHBhcmFtIHtPYmplY3R9IG9iamVjdCBUaGUgb2JqZWN0IHRvIG1vZGlmeS5cbiAqIEBwYXJhbSB7c3RyaW5nfSBrZXkgVGhlIGtleSBvZiB0aGUgcHJvcGVydHkgdG8gYXNzaWduLlxuICogQHBhcmFtIHsqfSB2YWx1ZSBUaGUgdmFsdWUgdG8gYXNzaWduLlxuICovXG5mdW5jdGlvbiBhc3NpZ25NZXJnZVZhbHVlKG9iamVjdCwga2V5LCB2YWx1ZSkge1xuICAgIGlmICgodmFsdWUgIT09IHVuZGVmaW5lZCAmJiAhZXEob2JqZWN0W2tleV0sIHZhbHVlKSkgfHxcbiAgICAgICAgKHZhbHVlID09PSB1bmRlZmluZWQgJiYgIShrZXkgaW4gb2JqZWN0KSkpIHtcbiAgICAgICAgYmFzZUFzc2lnblZhbHVlKG9iamVjdCwga2V5LCB2YWx1ZSk7XG4gICAgfVxufVxubW9kdWxlLmV4cG9ydHMgPSBhc3NpZ25NZXJnZVZhbHVlO1xuIl0sIm1hcHBpbmdzIjoiQUFBQTtBQUNBO0FBQUE7QUFBQTtBQUNBOzs7Ozs7Ozs7OztBQVNBO0FBQ0E7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUFBIiwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./node_modules/lodash/_assignMergeValue.js\n')},"./node_modules/lodash/_assignValue.js":
|
||
/*!*********************************************!*\
|
||
!*** ./node_modules/lodash/_assignValue.js ***!
|
||
\*********************************************/
|
||
/*! no static exports found */function(module,exports,__webpack_require__){"use strict";eval('\n\nvar baseAssignValue = __webpack_require__(/*! ./_baseAssignValue */ "./node_modules/lodash/_baseAssignValue.js"),\n eq = __webpack_require__(/*! ./eq */ "./node_modules/lodash/eq.js");\n/** Used for built-in method references. */\n\n\nvar objectProto = Object.prototype;\n/** Used to check objects for own properties. */\n\nvar hasOwnProperty = objectProto.hasOwnProperty;\n/**\n * Assigns `value` to `key` of `object` if the existing value is not equivalent\n * using [`SameValueZero`](http://ecma-international.org/ecma-262/7.0/#sec-samevaluezero)\n * for equality comparisons.\n *\n * @private\n * @param {Object} object The object to modify.\n * @param {string} key The key of the property to assign.\n * @param {*} value The value to assign.\n */\n\nfunction assignValue(object, key, value) {\n var objValue = object[key];\n\n if (!(hasOwnProperty.call(object, key) && eq(objValue, value)) || value === undefined && !(key in object)) {\n baseAssignValue(object, key, value);\n }\n}\n\nmodule.exports = assignValue;//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvbG9kYXNoL19hc3NpZ25WYWx1ZS5qcy5qcyIsInNvdXJjZXMiOlsid2VicGFjazovL1NOTGlicmFyeS8uL25vZGVfbW9kdWxlcy9sb2Rhc2gvX2Fzc2lnblZhbHVlLmpzPzMyYjMiXSwic291cmNlc0NvbnRlbnQiOlsiXCJ1c2Ugc3RyaWN0XCI7XG52YXIgYmFzZUFzc2lnblZhbHVlID0gcmVxdWlyZSgnLi9fYmFzZUFzc2lnblZhbHVlJyksIGVxID0gcmVxdWlyZSgnLi9lcScpO1xuLyoqIFVzZWQgZm9yIGJ1aWx0LWluIG1ldGhvZCByZWZlcmVuY2VzLiAqL1xudmFyIG9iamVjdFByb3RvID0gT2JqZWN0LnByb3RvdHlwZTtcbi8qKiBVc2VkIHRvIGNoZWNrIG9iamVjdHMgZm9yIG93biBwcm9wZXJ0aWVzLiAqL1xudmFyIGhhc093blByb3BlcnR5ID0gb2JqZWN0UHJvdG8uaGFzT3duUHJvcGVydHk7XG4vKipcbiAqIEFzc2lnbnMgYHZhbHVlYCB0byBga2V5YCBvZiBgb2JqZWN0YCBpZiB0aGUgZXhpc3RpbmcgdmFsdWUgaXMgbm90IGVxdWl2YWxlbnRcbiAqIHVzaW5nIFtgU2FtZVZhbHVlWmVyb2BdKGh0dHA6Ly9lY21hLWludGVybmF0aW9uYWwub3JnL2VjbWEtMjYyLzcuMC8jc2VjLXNhbWV2YWx1ZXplcm8pXG4gKiBmb3IgZXF1YWxpdHkgY29tcGFyaXNvbnMuXG4gKlxuICogQHByaXZhdGVcbiAqIEBwYXJhbSB7T2JqZWN0fSBvYmplY3QgVGhlIG9iamVjdCB0byBtb2RpZnkuXG4gKiBAcGFyYW0ge3N0cmluZ30ga2V5IFRoZSBrZXkgb2YgdGhlIHByb3BlcnR5IHRvIGFzc2lnbi5cbiAqIEBwYXJhbSB7Kn0gdmFsdWUgVGhlIHZhbHVlIHRvIGFzc2lnbi5cbiAqL1xuZnVuY3Rpb24gYXNzaWduVmFsdWUob2JqZWN0LCBrZXksIHZhbHVlKSB7XG4gICAgdmFyIG9ialZhbHVlID0gb2JqZWN0W2tleV07XG4gICAgaWYgKCEoaGFzT3duUHJvcGVydHkuY2FsbChvYmplY3QsIGtleSkgJiYgZXEob2JqVmFsdWUsIHZhbHVlKSkgfHxcbiAgICAgICAgKHZhbHVlID09PSB1bmRlZmluZWQgJiYgIShrZXkgaW4gb2JqZWN0KSkpIHtcbiAgICAgICAgYmFzZUFzc2lnblZhbHVlKG9iamVjdCwga2V5LCB2YWx1ZSk7XG4gICAgfVxufVxubW9kdWxlLmV4cG9ydHMgPSBhc3NpZ25WYWx1ZTtcbiJdLCJtYXBwaW5ncyI6IkFBQUE7QUFDQTtBQUFBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFEQTtBQUNBO0FBQ0E7QUFBQTtBQUNBOzs7Ozs7Ozs7OztBQVVBO0FBQ0E7QUFDQTtBQUFBO0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFBQSIsInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./node_modules/lodash/_assignValue.js\n')},"./node_modules/lodash/_assocIndexOf.js":
|
||
/*!**********************************************!*\
|
||
!*** ./node_modules/lodash/_assocIndexOf.js ***!
|
||
\**********************************************/
|
||
/*! no static exports found */function(module,exports,__webpack_require__){"use strict";eval('\n\nvar eq = __webpack_require__(/*! ./eq */ "./node_modules/lodash/eq.js");\n/**\n * Gets the index at which the `key` is found in `array` of key-value pairs.\n *\n * @private\n * @param {Array} array The array to inspect.\n * @param {*} key The key to search for.\n * @returns {number} Returns the index of the matched value, else `-1`.\n */\n\n\nfunction assocIndexOf(array, key) {\n var length = array.length;\n\n while (length--) {\n if (eq(array[length][0], key)) {\n return length;\n }\n }\n\n return -1;\n}\n\nmodule.exports = assocIndexOf;//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvbG9kYXNoL19hc3NvY0luZGV4T2YuanMuanMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly9TTkxpYnJhcnkvLi9ub2RlX21vZHVsZXMvbG9kYXNoL19hc3NvY0luZGV4T2YuanM/Y2I1YSJdLCJzb3VyY2VzQ29udGVudCI6WyJcInVzZSBzdHJpY3RcIjtcbnZhciBlcSA9IHJlcXVpcmUoJy4vZXEnKTtcbi8qKlxuICogR2V0cyB0aGUgaW5kZXggYXQgd2hpY2ggdGhlIGBrZXlgIGlzIGZvdW5kIGluIGBhcnJheWAgb2Yga2V5LXZhbHVlIHBhaXJzLlxuICpcbiAqIEBwcml2YXRlXG4gKiBAcGFyYW0ge0FycmF5fSBhcnJheSBUaGUgYXJyYXkgdG8gaW5zcGVjdC5cbiAqIEBwYXJhbSB7Kn0ga2V5IFRoZSBrZXkgdG8gc2VhcmNoIGZvci5cbiAqIEByZXR1cm5zIHtudW1iZXJ9IFJldHVybnMgdGhlIGluZGV4IG9mIHRoZSBtYXRjaGVkIHZhbHVlLCBlbHNlIGAtMWAuXG4gKi9cbmZ1bmN0aW9uIGFzc29jSW5kZXhPZihhcnJheSwga2V5KSB7XG4gICAgdmFyIGxlbmd0aCA9IGFycmF5Lmxlbmd0aDtcbiAgICB3aGlsZSAobGVuZ3RoLS0pIHtcbiAgICAgICAgaWYgKGVxKGFycmF5W2xlbmd0aF1bMF0sIGtleSkpIHtcbiAgICAgICAgICAgIHJldHVybiBsZW5ndGg7XG4gICAgICAgIH1cbiAgICB9XG4gICAgcmV0dXJuIC0xO1xufVxubW9kdWxlLmV4cG9ydHMgPSBhc3NvY0luZGV4T2Y7XG4iXSwibWFwcGluZ3MiOiJBQUFBO0FBQ0E7QUFBQTtBQUNBOzs7Ozs7Ozs7O0FBUUE7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQUEiLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./node_modules/lodash/_assocIndexOf.js\n')},"./node_modules/lodash/_baseAssignValue.js":
|
||
/*!*************************************************!*\
|
||
!*** ./node_modules/lodash/_baseAssignValue.js ***!
|
||
\*************************************************/
|
||
/*! no static exports found */function(module,exports,__webpack_require__){"use strict";eval("\n\nvar defineProperty = __webpack_require__(/*! ./_defineProperty */ \"./node_modules/lodash/_defineProperty.js\");\n/**\n * The base implementation of `assignValue` and `assignMergeValue` without\n * value checks.\n *\n * @private\n * @param {Object} object The object to modify.\n * @param {string} key The key of the property to assign.\n * @param {*} value The value to assign.\n */\n\n\nfunction baseAssignValue(object, key, value) {\n if (key == '__proto__' && defineProperty) {\n defineProperty(object, key, {\n 'configurable': true,\n 'enumerable': true,\n 'value': value,\n 'writable': true\n });\n } else {\n object[key] = value;\n }\n}\n\nmodule.exports = baseAssignValue;//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvbG9kYXNoL19iYXNlQXNzaWduVmFsdWUuanMuanMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly9TTkxpYnJhcnkvLi9ub2RlX21vZHVsZXMvbG9kYXNoL19iYXNlQXNzaWduVmFsdWUuanM/ODcyYSJdLCJzb3VyY2VzQ29udGVudCI6WyJcInVzZSBzdHJpY3RcIjtcbnZhciBkZWZpbmVQcm9wZXJ0eSA9IHJlcXVpcmUoJy4vX2RlZmluZVByb3BlcnR5Jyk7XG4vKipcbiAqIFRoZSBiYXNlIGltcGxlbWVudGF0aW9uIG9mIGBhc3NpZ25WYWx1ZWAgYW5kIGBhc3NpZ25NZXJnZVZhbHVlYCB3aXRob3V0XG4gKiB2YWx1ZSBjaGVja3MuXG4gKlxuICogQHByaXZhdGVcbiAqIEBwYXJhbSB7T2JqZWN0fSBvYmplY3QgVGhlIG9iamVjdCB0byBtb2RpZnkuXG4gKiBAcGFyYW0ge3N0cmluZ30ga2V5IFRoZSBrZXkgb2YgdGhlIHByb3BlcnR5IHRvIGFzc2lnbi5cbiAqIEBwYXJhbSB7Kn0gdmFsdWUgVGhlIHZhbHVlIHRvIGFzc2lnbi5cbiAqL1xuZnVuY3Rpb24gYmFzZUFzc2lnblZhbHVlKG9iamVjdCwga2V5LCB2YWx1ZSkge1xuICAgIGlmIChrZXkgPT0gJ19fcHJvdG9fXycgJiYgZGVmaW5lUHJvcGVydHkpIHtcbiAgICAgICAgZGVmaW5lUHJvcGVydHkob2JqZWN0LCBrZXksIHtcbiAgICAgICAgICAgICdjb25maWd1cmFibGUnOiB0cnVlLFxuICAgICAgICAgICAgJ2VudW1lcmFibGUnOiB0cnVlLFxuICAgICAgICAgICAgJ3ZhbHVlJzogdmFsdWUsXG4gICAgICAgICAgICAnd3JpdGFibGUnOiB0cnVlXG4gICAgICAgIH0pO1xuICAgIH1cbiAgICBlbHNlIHtcbiAgICAgICAgb2JqZWN0W2tleV0gPSB2YWx1ZTtcbiAgICB9XG59XG5tb2R1bGUuZXhwb3J0cyA9IGJhc2VBc3NpZ25WYWx1ZTtcbiJdLCJtYXBwaW5ncyI6IkFBQUE7QUFDQTtBQUFBO0FBQ0E7Ozs7Ozs7Ozs7O0FBU0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFKQTtBQU1BO0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFBQSIsInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./node_modules/lodash/_baseAssignValue.js\n")},"./node_modules/lodash/_baseCreate.js":
|
||
/*!********************************************!*\
|
||
!*** ./node_modules/lodash/_baseCreate.js ***!
|
||
\********************************************/
|
||
/*! no static exports found */function(module,exports,__webpack_require__){"use strict";eval('\n\nvar isObject = __webpack_require__(/*! ./isObject */ "./node_modules/lodash/isObject.js");\n/** Built-in value references. */\n\n\nvar objectCreate = Object.create;\n/**\n * The base implementation of `_.create` without support for assigning\n * properties to the created object.\n *\n * @private\n * @param {Object} proto The object to inherit from.\n * @returns {Object} Returns the new object.\n */\n\nvar baseCreate = function () {\n function object() {}\n\n return function (proto) {\n if (!isObject(proto)) {\n return {};\n }\n\n if (objectCreate) {\n return objectCreate(proto);\n }\n\n object.prototype = proto;\n var result = new object();\n object.prototype = undefined;\n return result;\n };\n}();\n\nmodule.exports = baseCreate;//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvbG9kYXNoL19iYXNlQ3JlYXRlLmpzLmpzIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vU05MaWJyYXJ5Ly4vbm9kZV9tb2R1bGVzL2xvZGFzaC9fYmFzZUNyZWF0ZS5qcz83NTMwIl0sInNvdXJjZXNDb250ZW50IjpbIlwidXNlIHN0cmljdFwiO1xudmFyIGlzT2JqZWN0ID0gcmVxdWlyZSgnLi9pc09iamVjdCcpO1xuLyoqIEJ1aWx0LWluIHZhbHVlIHJlZmVyZW5jZXMuICovXG52YXIgb2JqZWN0Q3JlYXRlID0gT2JqZWN0LmNyZWF0ZTtcbi8qKlxuICogVGhlIGJhc2UgaW1wbGVtZW50YXRpb24gb2YgYF8uY3JlYXRlYCB3aXRob3V0IHN1cHBvcnQgZm9yIGFzc2lnbmluZ1xuICogcHJvcGVydGllcyB0byB0aGUgY3JlYXRlZCBvYmplY3QuXG4gKlxuICogQHByaXZhdGVcbiAqIEBwYXJhbSB7T2JqZWN0fSBwcm90byBUaGUgb2JqZWN0IHRvIGluaGVyaXQgZnJvbS5cbiAqIEByZXR1cm5zIHtPYmplY3R9IFJldHVybnMgdGhlIG5ldyBvYmplY3QuXG4gKi9cbnZhciBiYXNlQ3JlYXRlID0gKGZ1bmN0aW9uICgpIHtcbiAgICBmdW5jdGlvbiBvYmplY3QoKSB7IH1cbiAgICByZXR1cm4gZnVuY3Rpb24gKHByb3RvKSB7XG4gICAgICAgIGlmICghaXNPYmplY3QocHJvdG8pKSB7XG4gICAgICAgICAgICByZXR1cm4ge307XG4gICAgICAgIH1cbiAgICAgICAgaWYgKG9iamVjdENyZWF0ZSkge1xuICAgICAgICAgICAgcmV0dXJuIG9iamVjdENyZWF0ZShwcm90byk7XG4gICAgICAgIH1cbiAgICAgICAgb2JqZWN0LnByb3RvdHlwZSA9IHByb3RvO1xuICAgICAgICB2YXIgcmVzdWx0ID0gbmV3IG9iamVjdDtcbiAgICAgICAgb2JqZWN0LnByb3RvdHlwZSA9IHVuZGVmaW5lZDtcbiAgICAgICAgcmV0dXJuIHJlc3VsdDtcbiAgICB9O1xufSgpKTtcbm1vZHVsZS5leHBvcnRzID0gYmFzZUNyZWF0ZTtcbiJdLCJtYXBwaW5ncyI6IkFBQUE7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBREE7QUFDQTs7Ozs7Ozs7O0FBUUE7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQSIsInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./node_modules/lodash/_baseCreate.js\n')},"./node_modules/lodash/_baseFindIndex.js":
|
||
/*!***********************************************!*\
|
||
!*** ./node_modules/lodash/_baseFindIndex.js ***!
|
||
\***********************************************/
|
||
/*! no static exports found */function(module,exports,__webpack_require__){"use strict";eval("\n/**\n * The base implementation of `_.findIndex` and `_.findLastIndex` without\n * support for iteratee shorthands.\n *\n * @private\n * @param {Array} array The array to inspect.\n * @param {Function} predicate The function invoked per iteration.\n * @param {number} fromIndex The index to search from.\n * @param {boolean} [fromRight] Specify iterating from right to left.\n * @returns {number} Returns the index of the matched value, else `-1`.\n */\n\nfunction baseFindIndex(array, predicate, fromIndex, fromRight) {\n var length = array.length,\n index = fromIndex + (fromRight ? 1 : -1);\n\n while (fromRight ? index-- : ++index < length) {\n if (predicate(array[index], index, array)) {\n return index;\n }\n }\n\n return -1;\n}\n\nmodule.exports = baseFindIndex;//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvbG9kYXNoL19iYXNlRmluZEluZGV4LmpzLmpzIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vU05MaWJyYXJ5Ly4vbm9kZV9tb2R1bGVzL2xvZGFzaC9fYmFzZUZpbmRJbmRleC5qcz8yYjAzIl0sInNvdXJjZXNDb250ZW50IjpbIlwidXNlIHN0cmljdFwiO1xuLyoqXG4gKiBUaGUgYmFzZSBpbXBsZW1lbnRhdGlvbiBvZiBgXy5maW5kSW5kZXhgIGFuZCBgXy5maW5kTGFzdEluZGV4YCB3aXRob3V0XG4gKiBzdXBwb3J0IGZvciBpdGVyYXRlZSBzaG9ydGhhbmRzLlxuICpcbiAqIEBwcml2YXRlXG4gKiBAcGFyYW0ge0FycmF5fSBhcnJheSBUaGUgYXJyYXkgdG8gaW5zcGVjdC5cbiAqIEBwYXJhbSB7RnVuY3Rpb259IHByZWRpY2F0ZSBUaGUgZnVuY3Rpb24gaW52b2tlZCBwZXIgaXRlcmF0aW9uLlxuICogQHBhcmFtIHtudW1iZXJ9IGZyb21JbmRleCBUaGUgaW5kZXggdG8gc2VhcmNoIGZyb20uXG4gKiBAcGFyYW0ge2Jvb2xlYW59IFtmcm9tUmlnaHRdIFNwZWNpZnkgaXRlcmF0aW5nIGZyb20gcmlnaHQgdG8gbGVmdC5cbiAqIEByZXR1cm5zIHtudW1iZXJ9IFJldHVybnMgdGhlIGluZGV4IG9mIHRoZSBtYXRjaGVkIHZhbHVlLCBlbHNlIGAtMWAuXG4gKi9cbmZ1bmN0aW9uIGJhc2VGaW5kSW5kZXgoYXJyYXksIHByZWRpY2F0ZSwgZnJvbUluZGV4LCBmcm9tUmlnaHQpIHtcbiAgICB2YXIgbGVuZ3RoID0gYXJyYXkubGVuZ3RoLCBpbmRleCA9IGZyb21JbmRleCArIChmcm9tUmlnaHQgPyAxIDogLTEpO1xuICAgIHdoaWxlICgoZnJvbVJpZ2h0ID8gaW5kZXgtLSA6ICsraW5kZXggPCBsZW5ndGgpKSB7XG4gICAgICAgIGlmIChwcmVkaWNhdGUoYXJyYXlbaW5kZXhdLCBpbmRleCwgYXJyYXkpKSB7XG4gICAgICAgICAgICByZXR1cm4gaW5kZXg7XG4gICAgICAgIH1cbiAgICB9XG4gICAgcmV0dXJuIC0xO1xufVxubW9kdWxlLmV4cG9ydHMgPSBiYXNlRmluZEluZGV4O1xuIl0sIm1hcHBpbmdzIjoiQUFBQTtBQUNBOzs7Ozs7Ozs7Ozs7QUFXQTtBQUNBO0FBQUE7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUFBIiwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./node_modules/lodash/_baseFindIndex.js\n")},"./node_modules/lodash/_baseFor.js":
|
||
/*!*****************************************!*\
|
||
!*** ./node_modules/lodash/_baseFor.js ***!
|
||
\*****************************************/
|
||
/*! no static exports found */function(module,exports,__webpack_require__){"use strict";eval('\n\nvar createBaseFor = __webpack_require__(/*! ./_createBaseFor */ "./node_modules/lodash/_createBaseFor.js");\n/**\n * The base implementation of `baseForOwn` which iterates over `object`\n * properties returned by `keysFunc` and invokes `iteratee` for each property.\n * Iteratee functions may exit iteration early by explicitly returning `false`.\n *\n * @private\n * @param {Object} object The object to iterate over.\n * @param {Function} iteratee The function invoked per iteration.\n * @param {Function} keysFunc The function to get the keys of `object`.\n * @returns {Object} Returns `object`.\n */\n\n\nvar baseFor = createBaseFor();\nmodule.exports = baseFor;//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvbG9kYXNoL19iYXNlRm9yLmpzLmpzIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vU05MaWJyYXJ5Ly4vbm9kZV9tb2R1bGVzL2xvZGFzaC9fYmFzZUZvci5qcz83MmFmIl0sInNvdXJjZXNDb250ZW50IjpbIlwidXNlIHN0cmljdFwiO1xudmFyIGNyZWF0ZUJhc2VGb3IgPSByZXF1aXJlKCcuL19jcmVhdGVCYXNlRm9yJyk7XG4vKipcbiAqIFRoZSBiYXNlIGltcGxlbWVudGF0aW9uIG9mIGBiYXNlRm9yT3duYCB3aGljaCBpdGVyYXRlcyBvdmVyIGBvYmplY3RgXG4gKiBwcm9wZXJ0aWVzIHJldHVybmVkIGJ5IGBrZXlzRnVuY2AgYW5kIGludm9rZXMgYGl0ZXJhdGVlYCBmb3IgZWFjaCBwcm9wZXJ0eS5cbiAqIEl0ZXJhdGVlIGZ1bmN0aW9ucyBtYXkgZXhpdCBpdGVyYXRpb24gZWFybHkgYnkgZXhwbGljaXRseSByZXR1cm5pbmcgYGZhbHNlYC5cbiAqXG4gKiBAcHJpdmF0ZVxuICogQHBhcmFtIHtPYmplY3R9IG9iamVjdCBUaGUgb2JqZWN0IHRvIGl0ZXJhdGUgb3Zlci5cbiAqIEBwYXJhbSB7RnVuY3Rpb259IGl0ZXJhdGVlIFRoZSBmdW5jdGlvbiBpbnZva2VkIHBlciBpdGVyYXRpb24uXG4gKiBAcGFyYW0ge0Z1bmN0aW9ufSBrZXlzRnVuYyBUaGUgZnVuY3Rpb24gdG8gZ2V0IHRoZSBrZXlzIG9mIGBvYmplY3RgLlxuICogQHJldHVybnMge09iamVjdH0gUmV0dXJucyBgb2JqZWN0YC5cbiAqL1xudmFyIGJhc2VGb3IgPSBjcmVhdGVCYXNlRm9yKCk7XG5tb2R1bGUuZXhwb3J0cyA9IGJhc2VGb3I7XG4iXSwibWFwcGluZ3MiOiJBQUFBO0FBQ0E7QUFBQTtBQUNBOzs7Ozs7Ozs7Ozs7O0FBV0E7QUFDQSIsInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./node_modules/lodash/_baseFor.js\n')},"./node_modules/lodash/_baseGet.js":
|
||
/*!*****************************************!*\
|
||
!*** ./node_modules/lodash/_baseGet.js ***!
|
||
\*****************************************/
|
||
/*! no static exports found */function(module,exports,__webpack_require__){"use strict";eval('\n\nvar castPath = __webpack_require__(/*! ./_castPath */ "./node_modules/lodash/_castPath.js"),\n toKey = __webpack_require__(/*! ./_toKey */ "./node_modules/lodash/_toKey.js");\n/**\n * The base implementation of `_.get` without support for default values.\n *\n * @private\n * @param {Object} object The object to query.\n * @param {Array|string} path The path of the property to get.\n * @returns {*} Returns the resolved value.\n */\n\n\nfunction baseGet(object, path) {\n path = castPath(path, object);\n var index = 0,\n length = path.length;\n\n while (object != null && index < length) {\n object = object[toKey(path[index++])];\n }\n\n return index && index == length ? object : undefined;\n}\n\nmodule.exports = baseGet;//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvbG9kYXNoL19iYXNlR2V0LmpzLmpzIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vU05MaWJyYXJ5Ly4vbm9kZV9tb2R1bGVzL2xvZGFzaC9fYmFzZUdldC5qcz82NTZiIl0sInNvdXJjZXNDb250ZW50IjpbIlwidXNlIHN0cmljdFwiO1xudmFyIGNhc3RQYXRoID0gcmVxdWlyZSgnLi9fY2FzdFBhdGgnKSwgdG9LZXkgPSByZXF1aXJlKCcuL190b0tleScpO1xuLyoqXG4gKiBUaGUgYmFzZSBpbXBsZW1lbnRhdGlvbiBvZiBgXy5nZXRgIHdpdGhvdXQgc3VwcG9ydCBmb3IgZGVmYXVsdCB2YWx1ZXMuXG4gKlxuICogQHByaXZhdGVcbiAqIEBwYXJhbSB7T2JqZWN0fSBvYmplY3QgVGhlIG9iamVjdCB0byBxdWVyeS5cbiAqIEBwYXJhbSB7QXJyYXl8c3RyaW5nfSBwYXRoIFRoZSBwYXRoIG9mIHRoZSBwcm9wZXJ0eSB0byBnZXQuXG4gKiBAcmV0dXJucyB7Kn0gUmV0dXJucyB0aGUgcmVzb2x2ZWQgdmFsdWUuXG4gKi9cbmZ1bmN0aW9uIGJhc2VHZXQob2JqZWN0LCBwYXRoKSB7XG4gICAgcGF0aCA9IGNhc3RQYXRoKHBhdGgsIG9iamVjdCk7XG4gICAgdmFyIGluZGV4ID0gMCwgbGVuZ3RoID0gcGF0aC5sZW5ndGg7XG4gICAgd2hpbGUgKG9iamVjdCAhPSBudWxsICYmIGluZGV4IDwgbGVuZ3RoKSB7XG4gICAgICAgIG9iamVjdCA9IG9iamVjdFt0b0tleShwYXRoW2luZGV4KytdKV07XG4gICAgfVxuICAgIHJldHVybiAoaW5kZXggJiYgaW5kZXggPT0gbGVuZ3RoKSA/IG9iamVjdCA6IHVuZGVmaW5lZDtcbn1cbm1vZHVsZS5leHBvcnRzID0gYmFzZUdldDtcbiJdLCJtYXBwaW5ncyI6IkFBQUE7QUFDQTtBQUFBO0FBQUE7QUFDQTs7Ozs7Ozs7OztBQVFBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUFBIiwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./node_modules/lodash/_baseGet.js\n')},"./node_modules/lodash/_baseGetAllKeys.js":
|
||
/*!************************************************!*\
|
||
!*** ./node_modules/lodash/_baseGetAllKeys.js ***!
|
||
\************************************************/
|
||
/*! no static exports found */function(module,exports,__webpack_require__){"use strict";eval('\n\nvar arrayPush = __webpack_require__(/*! ./_arrayPush */ "./node_modules/lodash/_arrayPush.js"),\n isArray = __webpack_require__(/*! ./isArray */ "./node_modules/lodash/isArray.js");\n/**\n * The base implementation of `getAllKeys` and `getAllKeysIn` which uses\n * `keysFunc` and `symbolsFunc` to get the enumerable property names and\n * symbols of `object`.\n *\n * @private\n * @param {Object} object The object to query.\n * @param {Function} keysFunc The function to get the keys of `object`.\n * @param {Function} symbolsFunc The function to get the symbols of `object`.\n * @returns {Array} Returns the array of property names and symbols.\n */\n\n\nfunction baseGetAllKeys(object, keysFunc, symbolsFunc) {\n var result = keysFunc(object);\n return isArray(object) ? result : arrayPush(result, symbolsFunc(object));\n}\n\nmodule.exports = baseGetAllKeys;//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvbG9kYXNoL19iYXNlR2V0QWxsS2V5cy5qcy5qcyIsInNvdXJjZXMiOlsid2VicGFjazovL1NOTGlicmFyeS8uL25vZGVfbW9kdWxlcy9sb2Rhc2gvX2Jhc2VHZXRBbGxLZXlzLmpzPzdkMWYiXSwic291cmNlc0NvbnRlbnQiOlsiXCJ1c2Ugc3RyaWN0XCI7XG52YXIgYXJyYXlQdXNoID0gcmVxdWlyZSgnLi9fYXJyYXlQdXNoJyksIGlzQXJyYXkgPSByZXF1aXJlKCcuL2lzQXJyYXknKTtcbi8qKlxuICogVGhlIGJhc2UgaW1wbGVtZW50YXRpb24gb2YgYGdldEFsbEtleXNgIGFuZCBgZ2V0QWxsS2V5c0luYCB3aGljaCB1c2VzXG4gKiBga2V5c0Z1bmNgIGFuZCBgc3ltYm9sc0Z1bmNgIHRvIGdldCB0aGUgZW51bWVyYWJsZSBwcm9wZXJ0eSBuYW1lcyBhbmRcbiAqIHN5bWJvbHMgb2YgYG9iamVjdGAuXG4gKlxuICogQHByaXZhdGVcbiAqIEBwYXJhbSB7T2JqZWN0fSBvYmplY3QgVGhlIG9iamVjdCB0byBxdWVyeS5cbiAqIEBwYXJhbSB7RnVuY3Rpb259IGtleXNGdW5jIFRoZSBmdW5jdGlvbiB0byBnZXQgdGhlIGtleXMgb2YgYG9iamVjdGAuXG4gKiBAcGFyYW0ge0Z1bmN0aW9ufSBzeW1ib2xzRnVuYyBUaGUgZnVuY3Rpb24gdG8gZ2V0IHRoZSBzeW1ib2xzIG9mIGBvYmplY3RgLlxuICogQHJldHVybnMge0FycmF5fSBSZXR1cm5zIHRoZSBhcnJheSBvZiBwcm9wZXJ0eSBuYW1lcyBhbmQgc3ltYm9scy5cbiAqL1xuZnVuY3Rpb24gYmFzZUdldEFsbEtleXMob2JqZWN0LCBrZXlzRnVuYywgc3ltYm9sc0Z1bmMpIHtcbiAgICB2YXIgcmVzdWx0ID0ga2V5c0Z1bmMob2JqZWN0KTtcbiAgICByZXR1cm4gaXNBcnJheShvYmplY3QpID8gcmVzdWx0IDogYXJyYXlQdXNoKHJlc3VsdCwgc3ltYm9sc0Z1bmMob2JqZWN0KSk7XG59XG5tb2R1bGUuZXhwb3J0cyA9IGJhc2VHZXRBbGxLZXlzO1xuIl0sIm1hcHBpbmdzIjoiQUFBQTtBQUNBO0FBQUE7QUFBQTtBQUNBOzs7Ozs7Ozs7Ozs7O0FBV0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBIiwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./node_modules/lodash/_baseGetAllKeys.js\n')},"./node_modules/lodash/_baseGetTag.js":
|
||
/*!********************************************!*\
|
||
!*** ./node_modules/lodash/_baseGetTag.js ***!
|
||
\********************************************/
|
||
/*! no static exports found */function(module,exports,__webpack_require__){"use strict";eval('\n\nvar _Symbol = __webpack_require__(/*! ./_Symbol */ "./node_modules/lodash/_Symbol.js"),\n getRawTag = __webpack_require__(/*! ./_getRawTag */ "./node_modules/lodash/_getRawTag.js"),\n objectToString = __webpack_require__(/*! ./_objectToString */ "./node_modules/lodash/_objectToString.js");\n/** `Object#toString` result references. */\n\n\nvar nullTag = \'[object Null]\',\n undefinedTag = \'[object Undefined]\';\n/** Built-in value references. */\n\nvar symToStringTag = _Symbol ? _Symbol.toStringTag : undefined;\n/**\n * The base implementation of `getTag` without fallbacks for buggy environments.\n *\n * @private\n * @param {*} value The value to query.\n * @returns {string} Returns the `toStringTag`.\n */\n\nfunction baseGetTag(value) {\n if (value == null) {\n return value === undefined ? undefinedTag : nullTag;\n }\n\n return symToStringTag && symToStringTag in Object(value) ? getRawTag(value) : objectToString(value);\n}\n\nmodule.exports = baseGetTag;//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvbG9kYXNoL19iYXNlR2V0VGFnLmpzLmpzIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vU05MaWJyYXJ5Ly4vbm9kZV9tb2R1bGVzL2xvZGFzaC9fYmFzZUdldFRhZy5qcz8zNzI5Il0sInNvdXJjZXNDb250ZW50IjpbIlwidXNlIHN0cmljdFwiO1xudmFyIFN5bWJvbCA9IHJlcXVpcmUoJy4vX1N5bWJvbCcpLCBnZXRSYXdUYWcgPSByZXF1aXJlKCcuL19nZXRSYXdUYWcnKSwgb2JqZWN0VG9TdHJpbmcgPSByZXF1aXJlKCcuL19vYmplY3RUb1N0cmluZycpO1xuLyoqIGBPYmplY3QjdG9TdHJpbmdgIHJlc3VsdCByZWZlcmVuY2VzLiAqL1xudmFyIG51bGxUYWcgPSAnW29iamVjdCBOdWxsXScsIHVuZGVmaW5lZFRhZyA9ICdbb2JqZWN0IFVuZGVmaW5lZF0nO1xuLyoqIEJ1aWx0LWluIHZhbHVlIHJlZmVyZW5jZXMuICovXG52YXIgc3ltVG9TdHJpbmdUYWcgPSBTeW1ib2wgPyBTeW1ib2wudG9TdHJpbmdUYWcgOiB1bmRlZmluZWQ7XG4vKipcbiAqIFRoZSBiYXNlIGltcGxlbWVudGF0aW9uIG9mIGBnZXRUYWdgIHdpdGhvdXQgZmFsbGJhY2tzIGZvciBidWdneSBlbnZpcm9ubWVudHMuXG4gKlxuICogQHByaXZhdGVcbiAqIEBwYXJhbSB7Kn0gdmFsdWUgVGhlIHZhbHVlIHRvIHF1ZXJ5LlxuICogQHJldHVybnMge3N0cmluZ30gUmV0dXJucyB0aGUgYHRvU3RyaW5nVGFnYC5cbiAqL1xuZnVuY3Rpb24gYmFzZUdldFRhZyh2YWx1ZSkge1xuICAgIGlmICh2YWx1ZSA9PSBudWxsKSB7XG4gICAgICAgIHJldHVybiB2YWx1ZSA9PT0gdW5kZWZpbmVkID8gdW5kZWZpbmVkVGFnIDogbnVsbFRhZztcbiAgICB9XG4gICAgcmV0dXJuIChzeW1Ub1N0cmluZ1RhZyAmJiBzeW1Ub1N0cmluZ1RhZyBpbiBPYmplY3QodmFsdWUpKVxuICAgICAgICA/IGdldFJhd1RhZyh2YWx1ZSlcbiAgICAgICAgOiBvYmplY3RUb1N0cmluZyh2YWx1ZSk7XG59XG5tb2R1bGUuZXhwb3J0cyA9IGJhc2VHZXRUYWc7XG4iXSwibWFwcGluZ3MiOiJBQUFBO0FBQ0E7QUFBQTtBQUFBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFEQTtBQUFBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7Ozs7Ozs7O0FBT0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBR0E7QUFDQTtBQUFBIiwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./node_modules/lodash/_baseGetTag.js\n')},"./node_modules/lodash/_baseHasIn.js":
|
||
/*!*******************************************!*\
|
||
!*** ./node_modules/lodash/_baseHasIn.js ***!
|
||
\*******************************************/
|
||
/*! no static exports found */function(module,exports,__webpack_require__){"use strict";eval("\n/**\n * The base implementation of `_.hasIn` without support for deep paths.\n *\n * @private\n * @param {Object} [object] The object to query.\n * @param {Array|string} key The key to check.\n * @returns {boolean} Returns `true` if `key` exists, else `false`.\n */\n\nfunction baseHasIn(object, key) {\n return object != null && key in Object(object);\n}\n\nmodule.exports = baseHasIn;//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvbG9kYXNoL19iYXNlSGFzSW4uanMuanMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly9TTkxpYnJhcnkvLi9ub2RlX21vZHVsZXMvbG9kYXNoL19iYXNlSGFzSW4uanM/MjZlOCJdLCJzb3VyY2VzQ29udGVudCI6WyJcInVzZSBzdHJpY3RcIjtcbi8qKlxuICogVGhlIGJhc2UgaW1wbGVtZW50YXRpb24gb2YgYF8uaGFzSW5gIHdpdGhvdXQgc3VwcG9ydCBmb3IgZGVlcCBwYXRocy5cbiAqXG4gKiBAcHJpdmF0ZVxuICogQHBhcmFtIHtPYmplY3R9IFtvYmplY3RdIFRoZSBvYmplY3QgdG8gcXVlcnkuXG4gKiBAcGFyYW0ge0FycmF5fHN0cmluZ30ga2V5IFRoZSBrZXkgdG8gY2hlY2suXG4gKiBAcmV0dXJucyB7Ym9vbGVhbn0gUmV0dXJucyBgdHJ1ZWAgaWYgYGtleWAgZXhpc3RzLCBlbHNlIGBmYWxzZWAuXG4gKi9cbmZ1bmN0aW9uIGJhc2VIYXNJbihvYmplY3QsIGtleSkge1xuICAgIHJldHVybiBvYmplY3QgIT0gbnVsbCAmJiBrZXkgaW4gT2JqZWN0KG9iamVjdCk7XG59XG5tb2R1bGUuZXhwb3J0cyA9IGJhc2VIYXNJbjtcbiJdLCJtYXBwaW5ncyI6IkFBQUE7QUFDQTs7Ozs7Ozs7O0FBUUE7QUFDQTtBQUNBO0FBQ0E7QUFBQSIsInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./node_modules/lodash/_baseHasIn.js\n")},"./node_modules/lodash/_baseIndexOf.js":
|
||
/*!*********************************************!*\
|
||
!*** ./node_modules/lodash/_baseIndexOf.js ***!
|
||
\*********************************************/
|
||
/*! no static exports found */function(module,exports,__webpack_require__){"use strict";eval('\n\nvar baseFindIndex = __webpack_require__(/*! ./_baseFindIndex */ "./node_modules/lodash/_baseFindIndex.js"),\n baseIsNaN = __webpack_require__(/*! ./_baseIsNaN */ "./node_modules/lodash/_baseIsNaN.js"),\n strictIndexOf = __webpack_require__(/*! ./_strictIndexOf */ "./node_modules/lodash/_strictIndexOf.js");\n/**\n * The base implementation of `_.indexOf` without `fromIndex` bounds checks.\n *\n * @private\n * @param {Array} array The array to inspect.\n * @param {*} value The value to search for.\n * @param {number} fromIndex The index to search from.\n * @returns {number} Returns the index of the matched value, else `-1`.\n */\n\n\nfunction baseIndexOf(array, value, fromIndex) {\n return value === value ? strictIndexOf(array, value, fromIndex) : baseFindIndex(array, baseIsNaN, fromIndex);\n}\n\nmodule.exports = baseIndexOf;//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvbG9kYXNoL19iYXNlSW5kZXhPZi5qcy5qcyIsInNvdXJjZXMiOlsid2VicGFjazovL1NOTGlicmFyeS8uL25vZGVfbW9kdWxlcy9sb2Rhc2gvX2Jhc2VJbmRleE9mLmpzPzQ3ZjUiXSwic291cmNlc0NvbnRlbnQiOlsiXCJ1c2Ugc3RyaWN0XCI7XG52YXIgYmFzZUZpbmRJbmRleCA9IHJlcXVpcmUoJy4vX2Jhc2VGaW5kSW5kZXgnKSwgYmFzZUlzTmFOID0gcmVxdWlyZSgnLi9fYmFzZUlzTmFOJyksIHN0cmljdEluZGV4T2YgPSByZXF1aXJlKCcuL19zdHJpY3RJbmRleE9mJyk7XG4vKipcbiAqIFRoZSBiYXNlIGltcGxlbWVudGF0aW9uIG9mIGBfLmluZGV4T2ZgIHdpdGhvdXQgYGZyb21JbmRleGAgYm91bmRzIGNoZWNrcy5cbiAqXG4gKiBAcHJpdmF0ZVxuICogQHBhcmFtIHtBcnJheX0gYXJyYXkgVGhlIGFycmF5IHRvIGluc3BlY3QuXG4gKiBAcGFyYW0geyp9IHZhbHVlIFRoZSB2YWx1ZSB0byBzZWFyY2ggZm9yLlxuICogQHBhcmFtIHtudW1iZXJ9IGZyb21JbmRleCBUaGUgaW5kZXggdG8gc2VhcmNoIGZyb20uXG4gKiBAcmV0dXJucyB7bnVtYmVyfSBSZXR1cm5zIHRoZSBpbmRleCBvZiB0aGUgbWF0Y2hlZCB2YWx1ZSwgZWxzZSBgLTFgLlxuICovXG5mdW5jdGlvbiBiYXNlSW5kZXhPZihhcnJheSwgdmFsdWUsIGZyb21JbmRleCkge1xuICAgIHJldHVybiB2YWx1ZSA9PT0gdmFsdWVcbiAgICAgICAgPyBzdHJpY3RJbmRleE9mKGFycmF5LCB2YWx1ZSwgZnJvbUluZGV4KVxuICAgICAgICA6IGJhc2VGaW5kSW5kZXgoYXJyYXksIGJhc2VJc05hTiwgZnJvbUluZGV4KTtcbn1cbm1vZHVsZS5leHBvcnRzID0gYmFzZUluZGV4T2Y7XG4iXSwibWFwcGluZ3MiOiJBQUFBO0FBQ0E7QUFBQTtBQUFBO0FBQUE7QUFDQTs7Ozs7Ozs7Ozs7QUFTQTtBQUNBO0FBR0E7QUFDQTtBQUFBIiwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./node_modules/lodash/_baseIndexOf.js\n')},"./node_modules/lodash/_baseIsArguments.js":
|
||
/*!*************************************************!*\
|
||
!*** ./node_modules/lodash/_baseIsArguments.js ***!
|
||
\*************************************************/
|
||
/*! no static exports found */function(module,exports,__webpack_require__){"use strict";eval('\n\nvar baseGetTag = __webpack_require__(/*! ./_baseGetTag */ "./node_modules/lodash/_baseGetTag.js"),\n isObjectLike = __webpack_require__(/*! ./isObjectLike */ "./node_modules/lodash/isObjectLike.js");\n/** `Object#toString` result references. */\n\n\nvar argsTag = \'[object Arguments]\';\n/**\n * The base implementation of `_.isArguments`.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an `arguments` object,\n */\n\nfunction baseIsArguments(value) {\n return isObjectLike(value) && baseGetTag(value) == argsTag;\n}\n\nmodule.exports = baseIsArguments;//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvbG9kYXNoL19iYXNlSXNBcmd1bWVudHMuanMuanMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly9TTkxpYnJhcnkvLi9ub2RlX21vZHVsZXMvbG9kYXNoL19iYXNlSXNBcmd1bWVudHMuanM/MjUzYyJdLCJzb3VyY2VzQ29udGVudCI6WyJcInVzZSBzdHJpY3RcIjtcbnZhciBiYXNlR2V0VGFnID0gcmVxdWlyZSgnLi9fYmFzZUdldFRhZycpLCBpc09iamVjdExpa2UgPSByZXF1aXJlKCcuL2lzT2JqZWN0TGlrZScpO1xuLyoqIGBPYmplY3QjdG9TdHJpbmdgIHJlc3VsdCByZWZlcmVuY2VzLiAqL1xudmFyIGFyZ3NUYWcgPSAnW29iamVjdCBBcmd1bWVudHNdJztcbi8qKlxuICogVGhlIGJhc2UgaW1wbGVtZW50YXRpb24gb2YgYF8uaXNBcmd1bWVudHNgLlxuICpcbiAqIEBwcml2YXRlXG4gKiBAcGFyYW0geyp9IHZhbHVlIFRoZSB2YWx1ZSB0byBjaGVjay5cbiAqIEByZXR1cm5zIHtib29sZWFufSBSZXR1cm5zIGB0cnVlYCBpZiBgdmFsdWVgIGlzIGFuIGBhcmd1bWVudHNgIG9iamVjdCxcbiAqL1xuZnVuY3Rpb24gYmFzZUlzQXJndW1lbnRzKHZhbHVlKSB7XG4gICAgcmV0dXJuIGlzT2JqZWN0TGlrZSh2YWx1ZSkgJiYgYmFzZUdldFRhZyh2YWx1ZSkgPT0gYXJnc1RhZztcbn1cbm1vZHVsZS5leHBvcnRzID0gYmFzZUlzQXJndW1lbnRzO1xuIl0sIm1hcHBpbmdzIjoiQUFBQTtBQUNBO0FBQUE7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQURBO0FBQ0E7Ozs7Ozs7O0FBT0E7QUFDQTtBQUNBO0FBQ0E7QUFBQSIsInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./node_modules/lodash/_baseIsArguments.js\n')},"./node_modules/lodash/_baseIsEqual.js":
|
||
/*!*********************************************!*\
|
||
!*** ./node_modules/lodash/_baseIsEqual.js ***!
|
||
\*********************************************/
|
||
/*! no static exports found */function(module,exports,__webpack_require__){"use strict";eval('\n\nvar baseIsEqualDeep = __webpack_require__(/*! ./_baseIsEqualDeep */ "./node_modules/lodash/_baseIsEqualDeep.js"),\n isObjectLike = __webpack_require__(/*! ./isObjectLike */ "./node_modules/lodash/isObjectLike.js");\n/**\n * The base implementation of `_.isEqual` which supports partial comparisons\n * and tracks traversed objects.\n *\n * @private\n * @param {*} value The value to compare.\n * @param {*} other The other value to compare.\n * @param {boolean} bitmask The bitmask flags.\n * 1 - Unordered comparison\n * 2 - Partial comparison\n * @param {Function} [customizer] The function to customize comparisons.\n * @param {Object} [stack] Tracks traversed `value` and `other` objects.\n * @returns {boolean} Returns `true` if the values are equivalent, else `false`.\n */\n\n\nfunction baseIsEqual(value, other, bitmask, customizer, stack) {\n if (value === other) {\n return true;\n }\n\n if (value == null || other == null || !isObjectLike(value) && !isObjectLike(other)) {\n return value !== value && other !== other;\n }\n\n return baseIsEqualDeep(value, other, bitmask, customizer, baseIsEqual, stack);\n}\n\nmodule.exports = baseIsEqual;//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvbG9kYXNoL19iYXNlSXNFcXVhbC5qcy5qcyIsInNvdXJjZXMiOlsid2VicGFjazovL1NOTGlicmFyeS8uL25vZGVfbW9kdWxlcy9sb2Rhc2gvX2Jhc2VJc0VxdWFsLmpzP2MwNWYiXSwic291cmNlc0NvbnRlbnQiOlsiXCJ1c2Ugc3RyaWN0XCI7XG52YXIgYmFzZUlzRXF1YWxEZWVwID0gcmVxdWlyZSgnLi9fYmFzZUlzRXF1YWxEZWVwJyksIGlzT2JqZWN0TGlrZSA9IHJlcXVpcmUoJy4vaXNPYmplY3RMaWtlJyk7XG4vKipcbiAqIFRoZSBiYXNlIGltcGxlbWVudGF0aW9uIG9mIGBfLmlzRXF1YWxgIHdoaWNoIHN1cHBvcnRzIHBhcnRpYWwgY29tcGFyaXNvbnNcbiAqIGFuZCB0cmFja3MgdHJhdmVyc2VkIG9iamVjdHMuXG4gKlxuICogQHByaXZhdGVcbiAqIEBwYXJhbSB7Kn0gdmFsdWUgVGhlIHZhbHVlIHRvIGNvbXBhcmUuXG4gKiBAcGFyYW0geyp9IG90aGVyIFRoZSBvdGhlciB2YWx1ZSB0byBjb21wYXJlLlxuICogQHBhcmFtIHtib29sZWFufSBiaXRtYXNrIFRoZSBiaXRtYXNrIGZsYWdzLlxuICogIDEgLSBVbm9yZGVyZWQgY29tcGFyaXNvblxuICogIDIgLSBQYXJ0aWFsIGNvbXBhcmlzb25cbiAqIEBwYXJhbSB7RnVuY3Rpb259IFtjdXN0b21pemVyXSBUaGUgZnVuY3Rpb24gdG8gY3VzdG9taXplIGNvbXBhcmlzb25zLlxuICogQHBhcmFtIHtPYmplY3R9IFtzdGFja10gVHJhY2tzIHRyYXZlcnNlZCBgdmFsdWVgIGFuZCBgb3RoZXJgIG9iamVjdHMuXG4gKiBAcmV0dXJucyB7Ym9vbGVhbn0gUmV0dXJucyBgdHJ1ZWAgaWYgdGhlIHZhbHVlcyBhcmUgZXF1aXZhbGVudCwgZWxzZSBgZmFsc2VgLlxuICovXG5mdW5jdGlvbiBiYXNlSXNFcXVhbCh2YWx1ZSwgb3RoZXIsIGJpdG1hc2ssIGN1c3RvbWl6ZXIsIHN0YWNrKSB7XG4gICAgaWYgKHZhbHVlID09PSBvdGhlcikge1xuICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICB9XG4gICAgaWYgKHZhbHVlID09IG51bGwgfHwgb3RoZXIgPT0gbnVsbCB8fCAoIWlzT2JqZWN0TGlrZSh2YWx1ZSkgJiYgIWlzT2JqZWN0TGlrZShvdGhlcikpKSB7XG4gICAgICAgIHJldHVybiB2YWx1ZSAhPT0gdmFsdWUgJiYgb3RoZXIgIT09IG90aGVyO1xuICAgIH1cbiAgICByZXR1cm4gYmFzZUlzRXF1YWxEZWVwKHZhbHVlLCBvdGhlciwgYml0bWFzaywgY3VzdG9taXplciwgYmFzZUlzRXF1YWwsIHN0YWNrKTtcbn1cbm1vZHVsZS5leHBvcnRzID0gYmFzZUlzRXF1YWw7XG4iXSwibWFwcGluZ3MiOiJBQUFBO0FBQ0E7QUFBQTtBQUFBO0FBQ0E7Ozs7Ozs7Ozs7Ozs7Ozs7QUFjQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFBQSIsInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./node_modules/lodash/_baseIsEqual.js\n')},"./node_modules/lodash/_baseIsEqualDeep.js":
|
||
/*!*************************************************!*\
|
||
!*** ./node_modules/lodash/_baseIsEqualDeep.js ***!
|
||
\*************************************************/
|
||
/*! no static exports found */function(module,exports,__webpack_require__){"use strict";eval('\n\nvar Stack = __webpack_require__(/*! ./_Stack */ "./node_modules/lodash/_Stack.js"),\n equalArrays = __webpack_require__(/*! ./_equalArrays */ "./node_modules/lodash/_equalArrays.js"),\n equalByTag = __webpack_require__(/*! ./_equalByTag */ "./node_modules/lodash/_equalByTag.js"),\n equalObjects = __webpack_require__(/*! ./_equalObjects */ "./node_modules/lodash/_equalObjects.js"),\n getTag = __webpack_require__(/*! ./_getTag */ "./node_modules/lodash/_getTag.js"),\n isArray = __webpack_require__(/*! ./isArray */ "./node_modules/lodash/isArray.js"),\n isBuffer = __webpack_require__(/*! ./isBuffer */ "./node_modules/lodash/isBuffer.js"),\n isTypedArray = __webpack_require__(/*! ./isTypedArray */ "./node_modules/lodash/isTypedArray.js");\n/** Used to compose bitmasks for value comparisons. */\n\n\nvar COMPARE_PARTIAL_FLAG = 1;\n/** `Object#toString` result references. */\n\nvar argsTag = \'[object Arguments]\',\n arrayTag = \'[object Array]\',\n objectTag = \'[object Object]\';\n/** Used for built-in method references. */\n\nvar objectProto = Object.prototype;\n/** Used to check objects for own properties. */\n\nvar hasOwnProperty = objectProto.hasOwnProperty;\n/**\n * A specialized version of `baseIsEqual` for arrays and objects which performs\n * deep comparisons and tracks traversed objects enabling objects with circular\n * references to be compared.\n *\n * @private\n * @param {Object} object The object to compare.\n * @param {Object} other The other object to compare.\n * @param {number} bitmask The bitmask flags. See `baseIsEqual` for more details.\n * @param {Function} customizer The function to customize comparisons.\n * @param {Function} equalFunc The function to determine equivalents of values.\n * @param {Object} [stack] Tracks traversed `object` and `other` objects.\n * @returns {boolean} Returns `true` if the objects are equivalent, else `false`.\n */\n\nfunction baseIsEqualDeep(object, other, bitmask, customizer, equalFunc, stack) {\n var objIsArr = isArray(object),\n othIsArr = isArray(other),\n objTag = objIsArr ? arrayTag : getTag(object),\n othTag = othIsArr ? arrayTag : getTag(other);\n objTag = objTag == argsTag ? objectTag : objTag;\n othTag = othTag == argsTag ? objectTag : othTag;\n var objIsObj = objTag == objectTag,\n othIsObj = othTag == objectTag,\n isSameTag = objTag == othTag;\n\n if (isSameTag && isBuffer(object)) {\n if (!isBuffer(other)) {\n return false;\n }\n\n objIsArr = true;\n objIsObj = false;\n }\n\n if (isSameTag && !objIsObj) {\n stack || (stack = new Stack());\n return objIsArr || isTypedArray(object) ? equalArrays(object, other, bitmask, customizer, equalFunc, stack) : equalByTag(object, other, objTag, bitmask, customizer, equalFunc, stack);\n }\n\n if (!(bitmask & COMPARE_PARTIAL_FLAG)) {\n var objIsWrapped = objIsObj && hasOwnProperty.call(object, \'__wrapped__\'),\n othIsWrapped = othIsObj && hasOwnProperty.call(other, \'__wrapped__\');\n\n if (objIsWrapped || othIsWrapped) {\n var objUnwrapped = objIsWrapped ? object.value() : object,\n othUnwrapped = othIsWrapped ? other.value() : other;\n stack || (stack = new Stack());\n return equalFunc(objUnwrapped, othUnwrapped, bitmask, customizer, stack);\n }\n }\n\n if (!isSameTag) {\n return false;\n }\n\n stack || (stack = new Stack());\n return equalObjects(object, other, bitmask, customizer, equalFunc, stack);\n}\n\nmodule.exports = baseIsEqualDeep;//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvbG9kYXNoL19iYXNlSXNFcXVhbERlZXAuanMuanMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly9TTkxpYnJhcnkvLi9ub2RlX21vZHVsZXMvbG9kYXNoL19iYXNlSXNFcXVhbERlZXAuanM/N2I5NyJdLCJzb3VyY2VzQ29udGVudCI6WyJcInVzZSBzdHJpY3RcIjtcbnZhciBTdGFjayA9IHJlcXVpcmUoJy4vX1N0YWNrJyksIGVxdWFsQXJyYXlzID0gcmVxdWlyZSgnLi9fZXF1YWxBcnJheXMnKSwgZXF1YWxCeVRhZyA9IHJlcXVpcmUoJy4vX2VxdWFsQnlUYWcnKSwgZXF1YWxPYmplY3RzID0gcmVxdWlyZSgnLi9fZXF1YWxPYmplY3RzJyksIGdldFRhZyA9IHJlcXVpcmUoJy4vX2dldFRhZycpLCBpc0FycmF5ID0gcmVxdWlyZSgnLi9pc0FycmF5JyksIGlzQnVmZmVyID0gcmVxdWlyZSgnLi9pc0J1ZmZlcicpLCBpc1R5cGVkQXJyYXkgPSByZXF1aXJlKCcuL2lzVHlwZWRBcnJheScpO1xuLyoqIFVzZWQgdG8gY29tcG9zZSBiaXRtYXNrcyBmb3IgdmFsdWUgY29tcGFyaXNvbnMuICovXG52YXIgQ09NUEFSRV9QQVJUSUFMX0ZMQUcgPSAxO1xuLyoqIGBPYmplY3QjdG9TdHJpbmdgIHJlc3VsdCByZWZlcmVuY2VzLiAqL1xudmFyIGFyZ3NUYWcgPSAnW29iamVjdCBBcmd1bWVudHNdJywgYXJyYXlUYWcgPSAnW29iamVjdCBBcnJheV0nLCBvYmplY3RUYWcgPSAnW29iamVjdCBPYmplY3RdJztcbi8qKiBVc2VkIGZvciBidWlsdC1pbiBtZXRob2QgcmVmZXJlbmNlcy4gKi9cbnZhciBvYmplY3RQcm90byA9IE9iamVjdC5wcm90b3R5cGU7XG4vKiogVXNlZCB0byBjaGVjayBvYmplY3RzIGZvciBvd24gcHJvcGVydGllcy4gKi9cbnZhciBoYXNPd25Qcm9wZXJ0eSA9IG9iamVjdFByb3RvLmhhc093blByb3BlcnR5O1xuLyoqXG4gKiBBIHNwZWNpYWxpemVkIHZlcnNpb24gb2YgYGJhc2VJc0VxdWFsYCBmb3IgYXJyYXlzIGFuZCBvYmplY3RzIHdoaWNoIHBlcmZvcm1zXG4gKiBkZWVwIGNvbXBhcmlzb25zIGFuZCB0cmFja3MgdHJhdmVyc2VkIG9iamVjdHMgZW5hYmxpbmcgb2JqZWN0cyB3aXRoIGNpcmN1bGFyXG4gKiByZWZlcmVuY2VzIHRvIGJlIGNvbXBhcmVkLlxuICpcbiAqIEBwcml2YXRlXG4gKiBAcGFyYW0ge09iamVjdH0gb2JqZWN0IFRoZSBvYmplY3QgdG8gY29tcGFyZS5cbiAqIEBwYXJhbSB7T2JqZWN0fSBvdGhlciBUaGUgb3RoZXIgb2JqZWN0IHRvIGNvbXBhcmUuXG4gKiBAcGFyYW0ge251bWJlcn0gYml0bWFzayBUaGUgYml0bWFzayBmbGFncy4gU2VlIGBiYXNlSXNFcXVhbGAgZm9yIG1vcmUgZGV0YWlscy5cbiAqIEBwYXJhbSB7RnVuY3Rpb259IGN1c3RvbWl6ZXIgVGhlIGZ1bmN0aW9uIHRvIGN1c3RvbWl6ZSBjb21wYXJpc29ucy5cbiAqIEBwYXJhbSB7RnVuY3Rpb259IGVxdWFsRnVuYyBUaGUgZnVuY3Rpb24gdG8gZGV0ZXJtaW5lIGVxdWl2YWxlbnRzIG9mIHZhbHVlcy5cbiAqIEBwYXJhbSB7T2JqZWN0fSBbc3RhY2tdIFRyYWNrcyB0cmF2ZXJzZWQgYG9iamVjdGAgYW5kIGBvdGhlcmAgb2JqZWN0cy5cbiAqIEByZXR1cm5zIHtib29sZWFufSBSZXR1cm5zIGB0cnVlYCBpZiB0aGUgb2JqZWN0cyBhcmUgZXF1aXZhbGVudCwgZWxzZSBgZmFsc2VgLlxuICovXG5mdW5jdGlvbiBiYXNlSXNFcXVhbERlZXAob2JqZWN0LCBvdGhlciwgYml0bWFzaywgY3VzdG9taXplciwgZXF1YWxGdW5jLCBzdGFjaykge1xuICAgIHZhciBvYmpJc0FyciA9IGlzQXJyYXkob2JqZWN0KSwgb3RoSXNBcnIgPSBpc0FycmF5KG90aGVyKSwgb2JqVGFnID0gb2JqSXNBcnIgPyBhcnJheVRhZyA6IGdldFRhZyhvYmplY3QpLCBvdGhUYWcgPSBvdGhJc0FyciA/IGFycmF5VGFnIDogZ2V0VGFnKG90aGVyKTtcbiAgICBvYmpUYWcgPSBvYmpUYWcgPT0gYXJnc1RhZyA/IG9iamVjdFRhZyA6IG9ialRhZztcbiAgICBvdGhUYWcgPSBvdGhUYWcgPT0gYXJnc1RhZyA/IG9iamVjdFRhZyA6IG90aFRhZztcbiAgICB2YXIgb2JqSXNPYmogPSBvYmpUYWcgPT0gb2JqZWN0VGFnLCBvdGhJc09iaiA9IG90aFRhZyA9PSBvYmplY3RUYWcsIGlzU2FtZVRhZyA9IG9ialRhZyA9PSBvdGhUYWc7XG4gICAgaWYgKGlzU2FtZVRhZyAmJiBpc0J1ZmZlcihvYmplY3QpKSB7XG4gICAgICAgIGlmICghaXNCdWZmZXIob3RoZXIpKSB7XG4gICAgICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICAgIH1cbiAgICAgICAgb2JqSXNBcnIgPSB0cnVlO1xuICAgICAgICBvYmpJc09iaiA9IGZhbHNlO1xuICAgIH1cbiAgICBpZiAoaXNTYW1lVGFnICYmICFvYmpJc09iaikge1xuICAgICAgICBzdGFjayB8fCAoc3RhY2sgPSBuZXcgU3RhY2spO1xuICAgICAgICByZXR1cm4gKG9iaklzQXJyIHx8IGlzVHlwZWRBcnJheShvYmplY3QpKVxuICAgICAgICAgICAgPyBlcXVhbEFycmF5cyhvYmplY3QsIG90aGVyLCBiaXRtYXNrLCBjdXN0b21pemVyLCBlcXVhbEZ1bmMsIHN0YWNrKVxuICAgICAgICAgICAgOiBlcXVhbEJ5VGFnKG9iamVjdCwgb3RoZXIsIG9ialRhZywgYml0bWFzaywgY3VzdG9taXplciwgZXF1YWxGdW5jLCBzdGFjayk7XG4gICAgfVxuICAgIGlmICghKGJpdG1hc2sgJiBDT01QQVJFX1BBUlRJQUxfRkxBRykpIHtcbiAgICAgICAgdmFyIG9iaklzV3JhcHBlZCA9IG9iaklzT2JqICYmIGhhc093blByb3BlcnR5LmNhbGwob2JqZWN0LCAnX193cmFwcGVkX18nKSwgb3RoSXNXcmFwcGVkID0gb3RoSXNPYmogJiYgaGFzT3duUHJvcGVydHkuY2FsbChvdGhlciwgJ19fd3JhcHBlZF9fJyk7XG4gICAgICAgIGlmIChvYmpJc1dyYXBwZWQgfHwgb3RoSXNXcmFwcGVkKSB7XG4gICAgICAgICAgICB2YXIgb2JqVW53cmFwcGVkID0gb2JqSXNXcmFwcGVkID8gb2JqZWN0LnZhbHVlKCkgOiBvYmplY3QsIG90aFVud3JhcHBlZCA9IG90aElzV3JhcHBlZCA/IG90aGVyLnZhbHVlKCkgOiBvdGhlcjtcbiAgICAgICAgICAgIHN0YWNrIHx8IChzdGFjayA9IG5ldyBTdGFjayk7XG4gICAgICAgICAgICByZXR1cm4gZXF1YWxGdW5jKG9ialVud3JhcHBlZCwgb3RoVW53cmFwcGVkLCBiaXRtYXNrLCBjdXN0b21pemVyLCBzdGFjayk7XG4gICAgICAgIH1cbiAgICB9XG4gICAgaWYgKCFpc1NhbWVUYWcpIHtcbiAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH1cbiAgICBzdGFjayB8fCAoc3RhY2sgPSBuZXcgU3RhY2spO1xuICAgIHJldHVybiBlcXVhbE9iamVjdHMob2JqZWN0LCBvdGhlciwgYml0bWFzaywgY3VzdG9taXplciwgZXF1YWxGdW5jLCBzdGFjayk7XG59XG5tb2R1bGUuZXhwb3J0cyA9IGJhc2VJc0VxdWFsRGVlcDtcbiJdLCJtYXBwaW5ncyI6IkFBQUE7QUFDQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFEQTtBQUNBO0FBQ0E7QUFBQTtBQUFBO0FBQUE7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQUE7QUFDQTs7Ozs7Ozs7Ozs7Ozs7O0FBY0E7QUFDQTtBQUFBO0FBQUE7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQUE7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUdBO0FBQ0E7QUFBQTtBQUNBO0FBQUE7QUFDQTtBQUFBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQUEiLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./node_modules/lodash/_baseIsEqualDeep.js\n')},"./node_modules/lodash/_baseIsMatch.js":
|
||
/*!*********************************************!*\
|
||
!*** ./node_modules/lodash/_baseIsMatch.js ***!
|
||
\*********************************************/
|
||
/*! no static exports found */function(module,exports,__webpack_require__){"use strict";eval('\n\nvar Stack = __webpack_require__(/*! ./_Stack */ "./node_modules/lodash/_Stack.js"),\n baseIsEqual = __webpack_require__(/*! ./_baseIsEqual */ "./node_modules/lodash/_baseIsEqual.js");\n/** Used to compose bitmasks for value comparisons. */\n\n\nvar COMPARE_PARTIAL_FLAG = 1,\n COMPARE_UNORDERED_FLAG = 2;\n/**\n * The base implementation of `_.isMatch` without support for iteratee shorthands.\n *\n * @private\n * @param {Object} object The object to inspect.\n * @param {Object} source The object of property values to match.\n * @param {Array} matchData The property names, values, and compare flags to match.\n * @param {Function} [customizer] The function to customize comparisons.\n * @returns {boolean} Returns `true` if `object` is a match, else `false`.\n */\n\nfunction baseIsMatch(object, source, matchData, customizer) {\n var index = matchData.length,\n length = index,\n noCustomizer = !customizer;\n\n if (object == null) {\n return !length;\n }\n\n object = Object(object);\n\n while (index--) {\n var data = matchData[index];\n\n if (noCustomizer && data[2] ? data[1] !== object[data[0]] : !(data[0] in object)) {\n return false;\n }\n }\n\n while (++index < length) {\n data = matchData[index];\n var key = data[0],\n objValue = object[key],\n srcValue = data[1];\n\n if (noCustomizer && data[2]) {\n if (objValue === undefined && !(key in object)) {\n return false;\n }\n } else {\n var stack = new Stack();\n\n if (customizer) {\n var result = customizer(objValue, srcValue, key, object, source, stack);\n }\n\n if (!(result === undefined ? baseIsEqual(srcValue, objValue, COMPARE_PARTIAL_FLAG | COMPARE_UNORDERED_FLAG, customizer, stack) : result)) {\n return false;\n }\n }\n }\n\n return true;\n}\n\nmodule.exports = baseIsMatch;//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvbG9kYXNoL19iYXNlSXNNYXRjaC5qcy5qcyIsInNvdXJjZXMiOlsid2VicGFjazovL1NOTGlicmFyeS8uL25vZGVfbW9kdWxlcy9sb2Rhc2gvX2Jhc2VJc01hdGNoLmpzPzk2NmYiXSwic291cmNlc0NvbnRlbnQiOlsiXCJ1c2Ugc3RyaWN0XCI7XG52YXIgU3RhY2sgPSByZXF1aXJlKCcuL19TdGFjaycpLCBiYXNlSXNFcXVhbCA9IHJlcXVpcmUoJy4vX2Jhc2VJc0VxdWFsJyk7XG4vKiogVXNlZCB0byBjb21wb3NlIGJpdG1hc2tzIGZvciB2YWx1ZSBjb21wYXJpc29ucy4gKi9cbnZhciBDT01QQVJFX1BBUlRJQUxfRkxBRyA9IDEsIENPTVBBUkVfVU5PUkRFUkVEX0ZMQUcgPSAyO1xuLyoqXG4gKiBUaGUgYmFzZSBpbXBsZW1lbnRhdGlvbiBvZiBgXy5pc01hdGNoYCB3aXRob3V0IHN1cHBvcnQgZm9yIGl0ZXJhdGVlIHNob3J0aGFuZHMuXG4gKlxuICogQHByaXZhdGVcbiAqIEBwYXJhbSB7T2JqZWN0fSBvYmplY3QgVGhlIG9iamVjdCB0byBpbnNwZWN0LlxuICogQHBhcmFtIHtPYmplY3R9IHNvdXJjZSBUaGUgb2JqZWN0IG9mIHByb3BlcnR5IHZhbHVlcyB0byBtYXRjaC5cbiAqIEBwYXJhbSB7QXJyYXl9IG1hdGNoRGF0YSBUaGUgcHJvcGVydHkgbmFtZXMsIHZhbHVlcywgYW5kIGNvbXBhcmUgZmxhZ3MgdG8gbWF0Y2guXG4gKiBAcGFyYW0ge0Z1bmN0aW9ufSBbY3VzdG9taXplcl0gVGhlIGZ1bmN0aW9uIHRvIGN1c3RvbWl6ZSBjb21wYXJpc29ucy5cbiAqIEByZXR1cm5zIHtib29sZWFufSBSZXR1cm5zIGB0cnVlYCBpZiBgb2JqZWN0YCBpcyBhIG1hdGNoLCBlbHNlIGBmYWxzZWAuXG4gKi9cbmZ1bmN0aW9uIGJhc2VJc01hdGNoKG9iamVjdCwgc291cmNlLCBtYXRjaERhdGEsIGN1c3RvbWl6ZXIpIHtcbiAgICB2YXIgaW5kZXggPSBtYXRjaERhdGEubGVuZ3RoLCBsZW5ndGggPSBpbmRleCwgbm9DdXN0b21pemVyID0gIWN1c3RvbWl6ZXI7XG4gICAgaWYgKG9iamVjdCA9PSBudWxsKSB7XG4gICAgICAgIHJldHVybiAhbGVuZ3RoO1xuICAgIH1cbiAgICBvYmplY3QgPSBPYmplY3Qob2JqZWN0KTtcbiAgICB3aGlsZSAoaW5kZXgtLSkge1xuICAgICAgICB2YXIgZGF0YSA9IG1hdGNoRGF0YVtpbmRleF07XG4gICAgICAgIGlmICgobm9DdXN0b21pemVyICYmIGRhdGFbMl0pXG4gICAgICAgICAgICA/IGRhdGFbMV0gIT09IG9iamVjdFtkYXRhWzBdXVxuICAgICAgICAgICAgOiAhKGRhdGFbMF0gaW4gb2JqZWN0KSkge1xuICAgICAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgICB9XG4gICAgfVxuICAgIHdoaWxlICgrK2luZGV4IDwgbGVuZ3RoKSB7XG4gICAgICAgIGRhdGEgPSBtYXRjaERhdGFbaW5kZXhdO1xuICAgICAgICB2YXIga2V5ID0gZGF0YVswXSwgb2JqVmFsdWUgPSBvYmplY3Rba2V5XSwgc3JjVmFsdWUgPSBkYXRhWzFdO1xuICAgICAgICBpZiAobm9DdXN0b21pemVyICYmIGRhdGFbMl0pIHtcbiAgICAgICAgICAgIGlmIChvYmpWYWx1ZSA9PT0gdW5kZWZpbmVkICYmICEoa2V5IGluIG9iamVjdCkpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICB2YXIgc3RhY2sgPSBuZXcgU3RhY2s7XG4gICAgICAgICAgICBpZiAoY3VzdG9taXplcikge1xuICAgICAgICAgICAgICAgIHZhciByZXN1bHQgPSBjdXN0b21pemVyKG9ialZhbHVlLCBzcmNWYWx1ZSwga2V5LCBvYmplY3QsIHNvdXJjZSwgc3RhY2spO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgaWYgKCEocmVzdWx0ID09PSB1bmRlZmluZWRcbiAgICAgICAgICAgICAgICA/IGJhc2VJc0VxdWFsKHNyY1ZhbHVlLCBvYmpWYWx1ZSwgQ09NUEFSRV9QQVJUSUFMX0ZMQUcgfCBDT01QQVJFX1VOT1JERVJFRF9GTEFHLCBjdXN0b21pemVyLCBzdGFjaylcbiAgICAgICAgICAgICAgICA6IHJlc3VsdCkpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICB9XG4gICAgcmV0dXJuIHRydWU7XG59XG5tb2R1bGUuZXhwb3J0cyA9IGJhc2VJc01hdGNoO1xuIl0sIm1hcHBpbmdzIjoiQUFBQTtBQUNBO0FBQUE7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQURBO0FBQUE7QUFDQTs7Ozs7Ozs7Ozs7QUFVQTtBQUNBO0FBQUE7QUFBQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQUE7QUFHQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUFBO0FBQUE7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFFQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUdBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFBQSIsInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./node_modules/lodash/_baseIsMatch.js\n')},"./node_modules/lodash/_baseIsNaN.js":
|
||
/*!*******************************************!*\
|
||
!*** ./node_modules/lodash/_baseIsNaN.js ***!
|
||
\*******************************************/
|
||
/*! no static exports found */function(module,exports,__webpack_require__){"use strict";eval("\n/**\n * The base implementation of `_.isNaN` without support for number objects.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is `NaN`, else `false`.\n */\n\nfunction baseIsNaN(value) {\n return value !== value;\n}\n\nmodule.exports = baseIsNaN;//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvbG9kYXNoL19iYXNlSXNOYU4uanMuanMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly9TTkxpYnJhcnkvLi9ub2RlX21vZHVsZXMvbG9kYXNoL19iYXNlSXNOYU4uanM/ZDlhOCJdLCJzb3VyY2VzQ29udGVudCI6WyJcInVzZSBzdHJpY3RcIjtcbi8qKlxuICogVGhlIGJhc2UgaW1wbGVtZW50YXRpb24gb2YgYF8uaXNOYU5gIHdpdGhvdXQgc3VwcG9ydCBmb3IgbnVtYmVyIG9iamVjdHMuXG4gKlxuICogQHByaXZhdGVcbiAqIEBwYXJhbSB7Kn0gdmFsdWUgVGhlIHZhbHVlIHRvIGNoZWNrLlxuICogQHJldHVybnMge2Jvb2xlYW59IFJldHVybnMgYHRydWVgIGlmIGB2YWx1ZWAgaXMgYE5hTmAsIGVsc2UgYGZhbHNlYC5cbiAqL1xuZnVuY3Rpb24gYmFzZUlzTmFOKHZhbHVlKSB7XG4gICAgcmV0dXJuIHZhbHVlICE9PSB2YWx1ZTtcbn1cbm1vZHVsZS5leHBvcnRzID0gYmFzZUlzTmFOO1xuIl0sIm1hcHBpbmdzIjoiQUFBQTtBQUNBOzs7Ozs7OztBQU9BO0FBQ0E7QUFDQTtBQUNBO0FBQUEiLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./node_modules/lodash/_baseIsNaN.js\n")},"./node_modules/lodash/_baseIsNative.js":
|
||
/*!**********************************************!*\
|
||
!*** ./node_modules/lodash/_baseIsNative.js ***!
|
||
\**********************************************/
|
||
/*! no static exports found */function(module,exports,__webpack_require__){"use strict";eval("\n\nvar isFunction = __webpack_require__(/*! ./isFunction */ \"./node_modules/lodash/isFunction.js\"),\n isMasked = __webpack_require__(/*! ./_isMasked */ \"./node_modules/lodash/_isMasked.js\"),\n isObject = __webpack_require__(/*! ./isObject */ \"./node_modules/lodash/isObject.js\"),\n toSource = __webpack_require__(/*! ./_toSource */ \"./node_modules/lodash/_toSource.js\");\n/**\n * Used to match `RegExp`\n * [syntax characters](http://ecma-international.org/ecma-262/7.0/#sec-patterns).\n */\n\n\nvar reRegExpChar = /[\\\\^$.*+?()[\\]{}|]/g;\n/** Used to detect host constructors (Safari). */\n\nvar reIsHostCtor = /^\\[object .+?Constructor\\]$/;\n/** Used for built-in method references. */\n\nvar funcProto = Function.prototype,\n objectProto = Object.prototype;\n/** Used to resolve the decompiled source of functions. */\n\nvar funcToString = funcProto.toString;\n/** Used to check objects for own properties. */\n\nvar hasOwnProperty = objectProto.hasOwnProperty;\n/** Used to detect if a method is native. */\n\nvar reIsNative = RegExp('^' + funcToString.call(hasOwnProperty).replace(reRegExpChar, '\\\\$&').replace(/hasOwnProperty|(function).*?(?=\\\\\\()| for .+?(?=\\\\\\])/g, '$1.*?') + '$');\n/**\n * The base implementation of `_.isNative` without bad shim checks.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a native function,\n * else `false`.\n */\n\nfunction baseIsNative(value) {\n if (!isObject(value) || isMasked(value)) {\n return false;\n }\n\n var pattern = isFunction(value) ? reIsNative : reIsHostCtor;\n return pattern.test(toSource(value));\n}\n\nmodule.exports = baseIsNative;//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvbG9kYXNoL19iYXNlSXNOYXRpdmUuanMuanMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly9TTkxpYnJhcnkvLi9ub2RlX21vZHVsZXMvbG9kYXNoL19iYXNlSXNOYXRpdmUuanM/MzRhYyJdLCJzb3VyY2VzQ29udGVudCI6WyJcInVzZSBzdHJpY3RcIjtcbnZhciBpc0Z1bmN0aW9uID0gcmVxdWlyZSgnLi9pc0Z1bmN0aW9uJyksIGlzTWFza2VkID0gcmVxdWlyZSgnLi9faXNNYXNrZWQnKSwgaXNPYmplY3QgPSByZXF1aXJlKCcuL2lzT2JqZWN0JyksIHRvU291cmNlID0gcmVxdWlyZSgnLi9fdG9Tb3VyY2UnKTtcbi8qKlxuICogVXNlZCB0byBtYXRjaCBgUmVnRXhwYFxuICogW3N5bnRheCBjaGFyYWN0ZXJzXShodHRwOi8vZWNtYS1pbnRlcm5hdGlvbmFsLm9yZy9lY21hLTI2Mi83LjAvI3NlYy1wYXR0ZXJucykuXG4gKi9cbnZhciByZVJlZ0V4cENoYXIgPSAvW1xcXFxeJC4qKz8oKVtcXF17fXxdL2c7XG4vKiogVXNlZCB0byBkZXRlY3QgaG9zdCBjb25zdHJ1Y3RvcnMgKFNhZmFyaSkuICovXG52YXIgcmVJc0hvc3RDdG9yID0gL15cXFtvYmplY3QgLis/Q29uc3RydWN0b3JcXF0kLztcbi8qKiBVc2VkIGZvciBidWlsdC1pbiBtZXRob2QgcmVmZXJlbmNlcy4gKi9cbnZhciBmdW5jUHJvdG8gPSBGdW5jdGlvbi5wcm90b3R5cGUsIG9iamVjdFByb3RvID0gT2JqZWN0LnByb3RvdHlwZTtcbi8qKiBVc2VkIHRvIHJlc29sdmUgdGhlIGRlY29tcGlsZWQgc291cmNlIG9mIGZ1bmN0aW9ucy4gKi9cbnZhciBmdW5jVG9TdHJpbmcgPSBmdW5jUHJvdG8udG9TdHJpbmc7XG4vKiogVXNlZCB0byBjaGVjayBvYmplY3RzIGZvciBvd24gcHJvcGVydGllcy4gKi9cbnZhciBoYXNPd25Qcm9wZXJ0eSA9IG9iamVjdFByb3RvLmhhc093blByb3BlcnR5O1xuLyoqIFVzZWQgdG8gZGV0ZWN0IGlmIGEgbWV0aG9kIGlzIG5hdGl2ZS4gKi9cbnZhciByZUlzTmF0aXZlID0gUmVnRXhwKCdeJyArXG4gICAgZnVuY1RvU3RyaW5nLmNhbGwoaGFzT3duUHJvcGVydHkpLnJlcGxhY2UocmVSZWdFeHBDaGFyLCAnXFxcXCQmJylcbiAgICAgICAgLnJlcGxhY2UoL2hhc093blByb3BlcnR5fChmdW5jdGlvbikuKj8oPz1cXFxcXFwoKXwgZm9yIC4rPyg/PVxcXFxcXF0pL2csICckMS4qPycpICsgJyQnKTtcbi8qKlxuICogVGhlIGJhc2UgaW1wbGVtZW50YXRpb24gb2YgYF8uaXNOYXRpdmVgIHdpdGhvdXQgYmFkIHNoaW0gY2hlY2tzLlxuICpcbiAqIEBwcml2YXRlXG4gKiBAcGFyYW0geyp9IHZhbHVlIFRoZSB2YWx1ZSB0byBjaGVjay5cbiAqIEByZXR1cm5zIHtib29sZWFufSBSZXR1cm5zIGB0cnVlYCBpZiBgdmFsdWVgIGlzIGEgbmF0aXZlIGZ1bmN0aW9uLFxuICogIGVsc2UgYGZhbHNlYC5cbiAqL1xuZnVuY3Rpb24gYmFzZUlzTmF0aXZlKHZhbHVlKSB7XG4gICAgaWYgKCFpc09iamVjdCh2YWx1ZSkgfHwgaXNNYXNrZWQodmFsdWUpKSB7XG4gICAgICAgIHJldHVybiBmYWxzZTtcbiAgICB9XG4gICAgdmFyIHBhdHRlcm4gPSBpc0Z1bmN0aW9uKHZhbHVlKSA/IHJlSXNOYXRpdmUgOiByZUlzSG9zdEN0b3I7XG4gICAgcmV0dXJuIHBhdHRlcm4udGVzdCh0b1NvdXJjZSh2YWx1ZSkpO1xufVxubW9kdWxlLmV4cG9ydHMgPSBiYXNlSXNOYXRpdmU7XG4iXSwibWFwcGluZ3MiOiJBQUFBO0FBQ0E7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUNBOzs7Ozs7QUFJQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFBQTtBQUFBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUFBO0FBR0E7Ozs7Ozs7OztBQVFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUFBIiwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./node_modules/lodash/_baseIsNative.js\n")},"./node_modules/lodash/_baseIsTypedArray.js":
|
||
/*!**************************************************!*\
|
||
!*** ./node_modules/lodash/_baseIsTypedArray.js ***!
|
||
\**************************************************/
|
||
/*! no static exports found */function(module,exports,__webpack_require__){"use strict";eval("\n\nvar baseGetTag = __webpack_require__(/*! ./_baseGetTag */ \"./node_modules/lodash/_baseGetTag.js\"),\n isLength = __webpack_require__(/*! ./isLength */ \"./node_modules/lodash/isLength.js\"),\n isObjectLike = __webpack_require__(/*! ./isObjectLike */ \"./node_modules/lodash/isObjectLike.js\");\n/** `Object#toString` result references. */\n\n\nvar argsTag = '[object Arguments]',\n arrayTag = '[object Array]',\n boolTag = '[object Boolean]',\n dateTag = '[object Date]',\n errorTag = '[object Error]',\n funcTag = '[object Function]',\n mapTag = '[object Map]',\n numberTag = '[object Number]',\n objectTag = '[object Object]',\n regexpTag = '[object RegExp]',\n setTag = '[object Set]',\n stringTag = '[object String]',\n weakMapTag = '[object WeakMap]';\nvar arrayBufferTag = '[object ArrayBuffer]',\n dataViewTag = '[object DataView]',\n float32Tag = '[object Float32Array]',\n float64Tag = '[object Float64Array]',\n int8Tag = '[object Int8Array]',\n int16Tag = '[object Int16Array]',\n int32Tag = '[object Int32Array]',\n uint8Tag = '[object Uint8Array]',\n uint8ClampedTag = '[object Uint8ClampedArray]',\n uint16Tag = '[object Uint16Array]',\n uint32Tag = '[object Uint32Array]';\n/** Used to identify `toStringTag` values of typed arrays. */\n\nvar typedArrayTags = {};\ntypedArrayTags[float32Tag] = typedArrayTags[float64Tag] = typedArrayTags[int8Tag] = typedArrayTags[int16Tag] = typedArrayTags[int32Tag] = typedArrayTags[uint8Tag] = typedArrayTags[uint8ClampedTag] = typedArrayTags[uint16Tag] = typedArrayTags[uint32Tag] = true;\ntypedArrayTags[argsTag] = typedArrayTags[arrayTag] = typedArrayTags[arrayBufferTag] = typedArrayTags[boolTag] = typedArrayTags[dataViewTag] = typedArrayTags[dateTag] = typedArrayTags[errorTag] = typedArrayTags[funcTag] = typedArrayTags[mapTag] = typedArrayTags[numberTag] = typedArrayTags[objectTag] = typedArrayTags[regexpTag] = typedArrayTags[setTag] = typedArrayTags[stringTag] = typedArrayTags[weakMapTag] = false;\n/**\n * The base implementation of `_.isTypedArray` without Node.js optimizations.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a typed array, else `false`.\n */\n\nfunction baseIsTypedArray(value) {\n return isObjectLike(value) && isLength(value.length) && !!typedArrayTags[baseGetTag(value)];\n}\n\nmodule.exports = baseIsTypedArray;//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvbG9kYXNoL19iYXNlSXNUeXBlZEFycmF5LmpzLmpzIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vU05MaWJyYXJ5Ly4vbm9kZV9tb2R1bGVzL2xvZGFzaC9fYmFzZUlzVHlwZWRBcnJheS5qcz83NDNmIl0sInNvdXJjZXNDb250ZW50IjpbIlwidXNlIHN0cmljdFwiO1xudmFyIGJhc2VHZXRUYWcgPSByZXF1aXJlKCcuL19iYXNlR2V0VGFnJyksIGlzTGVuZ3RoID0gcmVxdWlyZSgnLi9pc0xlbmd0aCcpLCBpc09iamVjdExpa2UgPSByZXF1aXJlKCcuL2lzT2JqZWN0TGlrZScpO1xuLyoqIGBPYmplY3QjdG9TdHJpbmdgIHJlc3VsdCByZWZlcmVuY2VzLiAqL1xudmFyIGFyZ3NUYWcgPSAnW29iamVjdCBBcmd1bWVudHNdJywgYXJyYXlUYWcgPSAnW29iamVjdCBBcnJheV0nLCBib29sVGFnID0gJ1tvYmplY3QgQm9vbGVhbl0nLCBkYXRlVGFnID0gJ1tvYmplY3QgRGF0ZV0nLCBlcnJvclRhZyA9ICdbb2JqZWN0IEVycm9yXScsIGZ1bmNUYWcgPSAnW29iamVjdCBGdW5jdGlvbl0nLCBtYXBUYWcgPSAnW29iamVjdCBNYXBdJywgbnVtYmVyVGFnID0gJ1tvYmplY3QgTnVtYmVyXScsIG9iamVjdFRhZyA9ICdbb2JqZWN0IE9iamVjdF0nLCByZWdleHBUYWcgPSAnW29iamVjdCBSZWdFeHBdJywgc2V0VGFnID0gJ1tvYmplY3QgU2V0XScsIHN0cmluZ1RhZyA9ICdbb2JqZWN0IFN0cmluZ10nLCB3ZWFrTWFwVGFnID0gJ1tvYmplY3QgV2Vha01hcF0nO1xudmFyIGFycmF5QnVmZmVyVGFnID0gJ1tvYmplY3QgQXJyYXlCdWZmZXJdJywgZGF0YVZpZXdUYWcgPSAnW29iamVjdCBEYXRhVmlld10nLCBmbG9hdDMyVGFnID0gJ1tvYmplY3QgRmxvYXQzMkFycmF5XScsIGZsb2F0NjRUYWcgPSAnW29iamVjdCBGbG9hdDY0QXJyYXldJywgaW50OFRhZyA9ICdbb2JqZWN0IEludDhBcnJheV0nLCBpbnQxNlRhZyA9ICdbb2JqZWN0IEludDE2QXJyYXldJywgaW50MzJUYWcgPSAnW29iamVjdCBJbnQzMkFycmF5XScsIHVpbnQ4VGFnID0gJ1tvYmplY3QgVWludDhBcnJheV0nLCB1aW50OENsYW1wZWRUYWcgPSAnW29iamVjdCBVaW50OENsYW1wZWRBcnJheV0nLCB1aW50MTZUYWcgPSAnW29iamVjdCBVaW50MTZBcnJheV0nLCB1aW50MzJUYWcgPSAnW29iamVjdCBVaW50MzJBcnJheV0nO1xuLyoqIFVzZWQgdG8gaWRlbnRpZnkgYHRvU3RyaW5nVGFnYCB2YWx1ZXMgb2YgdHlwZWQgYXJyYXlzLiAqL1xudmFyIHR5cGVkQXJyYXlUYWdzID0ge307XG50eXBlZEFycmF5VGFnc1tmbG9hdDMyVGFnXSA9IHR5cGVkQXJyYXlUYWdzW2Zsb2F0NjRUYWddID1cbiAgICB0eXBlZEFycmF5VGFnc1tpbnQ4VGFnXSA9IHR5cGVkQXJyYXlUYWdzW2ludDE2VGFnXSA9XG4gICAgICAgIHR5cGVkQXJyYXlUYWdzW2ludDMyVGFnXSA9IHR5cGVkQXJyYXlUYWdzW3VpbnQ4VGFnXSA9XG4gICAgICAgICAgICB0eXBlZEFycmF5VGFnc1t1aW50OENsYW1wZWRUYWddID0gdHlwZWRBcnJheVRhZ3NbdWludDE2VGFnXSA9XG4gICAgICAgICAgICAgICAgdHlwZWRBcnJheVRhZ3NbdWludDMyVGFnXSA9IHRydWU7XG50eXBlZEFycmF5VGFnc1thcmdzVGFnXSA9IHR5cGVkQXJyYXlUYWdzW2FycmF5VGFnXSA9XG4gICAgdHlwZWRBcnJheVRhZ3NbYXJyYXlCdWZmZXJUYWddID0gdHlwZWRBcnJheVRhZ3NbYm9vbFRhZ10gPVxuICAgICAgICB0eXBlZEFycmF5VGFnc1tkYXRhVmlld1RhZ10gPSB0eXBlZEFycmF5VGFnc1tkYXRlVGFnXSA9XG4gICAgICAgICAgICB0eXBlZEFycmF5VGFnc1tlcnJvclRhZ10gPSB0eXBlZEFycmF5VGFnc1tmdW5jVGFnXSA9XG4gICAgICAgICAgICAgICAgdHlwZWRBcnJheVRhZ3NbbWFwVGFnXSA9IHR5cGVkQXJyYXlUYWdzW251bWJlclRhZ10gPVxuICAgICAgICAgICAgICAgICAgICB0eXBlZEFycmF5VGFnc1tvYmplY3RUYWddID0gdHlwZWRBcnJheVRhZ3NbcmVnZXhwVGFnXSA9XG4gICAgICAgICAgICAgICAgICAgICAgICB0eXBlZEFycmF5VGFnc1tzZXRUYWddID0gdHlwZWRBcnJheVRhZ3Nbc3RyaW5nVGFnXSA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdHlwZWRBcnJheVRhZ3Nbd2Vha01hcFRhZ10gPSBmYWxzZTtcbi8qKlxuICogVGhlIGJhc2UgaW1wbGVtZW50YXRpb24gb2YgYF8uaXNUeXBlZEFycmF5YCB3aXRob3V0IE5vZGUuanMgb3B0aW1pemF0aW9ucy5cbiAqXG4gKiBAcHJpdmF0ZVxuICogQHBhcmFtIHsqfSB2YWx1ZSBUaGUgdmFsdWUgdG8gY2hlY2suXG4gKiBAcmV0dXJucyB7Ym9vbGVhbn0gUmV0dXJucyBgdHJ1ZWAgaWYgYHZhbHVlYCBpcyBhIHR5cGVkIGFycmF5LCBlbHNlIGBmYWxzZWAuXG4gKi9cbmZ1bmN0aW9uIGJhc2VJc1R5cGVkQXJyYXkodmFsdWUpIHtcbiAgICByZXR1cm4gaXNPYmplY3RMaWtlKHZhbHVlKSAmJlxuICAgICAgICBpc0xlbmd0aCh2YWx1ZS5sZW5ndGgpICYmICEhdHlwZWRBcnJheVRhZ3NbYmFzZUdldFRhZyh2YWx1ZSldO1xufVxubW9kdWxlLmV4cG9ydHMgPSBiYXNlSXNUeXBlZEFycmF5O1xuIl0sIm1hcHBpbmdzIjoiQUFBQTtBQUNBO0FBQUE7QUFBQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBREE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFDQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFLQTtBQVFBOzs7Ozs7OztBQU9BO0FBQ0E7QUFFQTtBQUNBO0FBQUEiLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./node_modules/lodash/_baseIsTypedArray.js\n")},"./node_modules/lodash/_baseIteratee.js":
|
||
/*!**********************************************!*\
|
||
!*** ./node_modules/lodash/_baseIteratee.js ***!
|
||
\**********************************************/
|
||
/*! no static exports found */function(module,exports,__webpack_require__){"use strict";eval('\n\nfunction _typeof(obj) { "@babel/helpers - typeof"; if (typeof Symbol === "function" && typeof Symbol.iterator === "symbol") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }; } return _typeof(obj); }\n\nvar baseMatches = __webpack_require__(/*! ./_baseMatches */ "./node_modules/lodash/_baseMatches.js"),\n baseMatchesProperty = __webpack_require__(/*! ./_baseMatchesProperty */ "./node_modules/lodash/_baseMatchesProperty.js"),\n identity = __webpack_require__(/*! ./identity */ "./node_modules/lodash/identity.js"),\n isArray = __webpack_require__(/*! ./isArray */ "./node_modules/lodash/isArray.js"),\n property = __webpack_require__(/*! ./property */ "./node_modules/lodash/property.js");\n/**\n * The base implementation of `_.iteratee`.\n *\n * @private\n * @param {*} [value=_.identity] The value to convert to an iteratee.\n * @returns {Function} Returns the iteratee.\n */\n\n\nfunction baseIteratee(value) {\n // Don\'t store the `typeof` result in a variable to avoid a JIT bug in Safari 9.\n // See https://bugs.webkit.org/show_bug.cgi?id=156034 for more details.\n if (typeof value == \'function\') {\n return value;\n }\n\n if (value == null) {\n return identity;\n }\n\n if (_typeof(value) == \'object\') {\n return isArray(value) ? baseMatchesProperty(value[0], value[1]) : baseMatches(value);\n }\n\n return property(value);\n}\n\nmodule.exports = baseIteratee;//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvbG9kYXNoL19iYXNlSXRlcmF0ZWUuanMuanMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly9TTkxpYnJhcnkvLi9ub2RlX21vZHVsZXMvbG9kYXNoL19iYXNlSXRlcmF0ZWUuanM/YmFkZiJdLCJzb3VyY2VzQ29udGVudCI6WyJcInVzZSBzdHJpY3RcIjtcbnZhciBiYXNlTWF0Y2hlcyA9IHJlcXVpcmUoJy4vX2Jhc2VNYXRjaGVzJyksIGJhc2VNYXRjaGVzUHJvcGVydHkgPSByZXF1aXJlKCcuL19iYXNlTWF0Y2hlc1Byb3BlcnR5JyksIGlkZW50aXR5ID0gcmVxdWlyZSgnLi9pZGVudGl0eScpLCBpc0FycmF5ID0gcmVxdWlyZSgnLi9pc0FycmF5JyksIHByb3BlcnR5ID0gcmVxdWlyZSgnLi9wcm9wZXJ0eScpO1xuLyoqXG4gKiBUaGUgYmFzZSBpbXBsZW1lbnRhdGlvbiBvZiBgXy5pdGVyYXRlZWAuXG4gKlxuICogQHByaXZhdGVcbiAqIEBwYXJhbSB7Kn0gW3ZhbHVlPV8uaWRlbnRpdHldIFRoZSB2YWx1ZSB0byBjb252ZXJ0IHRvIGFuIGl0ZXJhdGVlLlxuICogQHJldHVybnMge0Z1bmN0aW9ufSBSZXR1cm5zIHRoZSBpdGVyYXRlZS5cbiAqL1xuZnVuY3Rpb24gYmFzZUl0ZXJhdGVlKHZhbHVlKSB7XG4gICAgLy8gRG9uJ3Qgc3RvcmUgdGhlIGB0eXBlb2ZgIHJlc3VsdCBpbiBhIHZhcmlhYmxlIHRvIGF2b2lkIGEgSklUIGJ1ZyBpbiBTYWZhcmkgOS5cbiAgICAvLyBTZWUgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE1NjAzNCBmb3IgbW9yZSBkZXRhaWxzLlxuICAgIGlmICh0eXBlb2YgdmFsdWUgPT0gJ2Z1bmN0aW9uJykge1xuICAgICAgICByZXR1cm4gdmFsdWU7XG4gICAgfVxuICAgIGlmICh2YWx1ZSA9PSBudWxsKSB7XG4gICAgICAgIHJldHVybiBpZGVudGl0eTtcbiAgICB9XG4gICAgaWYgKHR5cGVvZiB2YWx1ZSA9PSAnb2JqZWN0Jykge1xuICAgICAgICByZXR1cm4gaXNBcnJheSh2YWx1ZSlcbiAgICAgICAgICAgID8gYmFzZU1hdGNoZXNQcm9wZXJ0eSh2YWx1ZVswXSwgdmFsdWVbMV0pXG4gICAgICAgICAgICA6IGJhc2VNYXRjaGVzKHZhbHVlKTtcbiAgICB9XG4gICAgcmV0dXJuIHByb3BlcnR5KHZhbHVlKTtcbn1cbm1vZHVsZS5leHBvcnRzID0gYmFzZUl0ZXJhdGVlO1xuIl0sIm1hcHBpbmdzIjoiQUFBQTtBQUNBOzs7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQ0E7Ozs7Ozs7OztBQU9BO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBR0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUFBIiwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./node_modules/lodash/_baseIteratee.js\n')},"./node_modules/lodash/_baseKeys.js":
|
||
/*!******************************************!*\
|
||
!*** ./node_modules/lodash/_baseKeys.js ***!
|
||
\******************************************/
|
||
/*! no static exports found */function(module,exports,__webpack_require__){"use strict";eval('\n\nvar isPrototype = __webpack_require__(/*! ./_isPrototype */ "./node_modules/lodash/_isPrototype.js"),\n nativeKeys = __webpack_require__(/*! ./_nativeKeys */ "./node_modules/lodash/_nativeKeys.js");\n/** Used for built-in method references. */\n\n\nvar objectProto = Object.prototype;\n/** Used to check objects for own properties. */\n\nvar hasOwnProperty = objectProto.hasOwnProperty;\n/**\n * The base implementation of `_.keys` which doesn\'t treat sparse arrays as dense.\n *\n * @private\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of property names.\n */\n\nfunction baseKeys(object) {\n if (!isPrototype(object)) {\n return nativeKeys(object);\n }\n\n var result = [];\n\n for (var key in Object(object)) {\n if (hasOwnProperty.call(object, key) && key != \'constructor\') {\n result.push(key);\n }\n }\n\n return result;\n}\n\nmodule.exports = baseKeys;//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvbG9kYXNoL19iYXNlS2V5cy5qcy5qcyIsInNvdXJjZXMiOlsid2VicGFjazovL1NOTGlicmFyeS8uL25vZGVfbW9kdWxlcy9sb2Rhc2gvX2Jhc2VLZXlzLmpzPzAzZGQiXSwic291cmNlc0NvbnRlbnQiOlsiXCJ1c2Ugc3RyaWN0XCI7XG52YXIgaXNQcm90b3R5cGUgPSByZXF1aXJlKCcuL19pc1Byb3RvdHlwZScpLCBuYXRpdmVLZXlzID0gcmVxdWlyZSgnLi9fbmF0aXZlS2V5cycpO1xuLyoqIFVzZWQgZm9yIGJ1aWx0LWluIG1ldGhvZCByZWZlcmVuY2VzLiAqL1xudmFyIG9iamVjdFByb3RvID0gT2JqZWN0LnByb3RvdHlwZTtcbi8qKiBVc2VkIHRvIGNoZWNrIG9iamVjdHMgZm9yIG93biBwcm9wZXJ0aWVzLiAqL1xudmFyIGhhc093blByb3BlcnR5ID0gb2JqZWN0UHJvdG8uaGFzT3duUHJvcGVydHk7XG4vKipcbiAqIFRoZSBiYXNlIGltcGxlbWVudGF0aW9uIG9mIGBfLmtleXNgIHdoaWNoIGRvZXNuJ3QgdHJlYXQgc3BhcnNlIGFycmF5cyBhcyBkZW5zZS5cbiAqXG4gKiBAcHJpdmF0ZVxuICogQHBhcmFtIHtPYmplY3R9IG9iamVjdCBUaGUgb2JqZWN0IHRvIHF1ZXJ5LlxuICogQHJldHVybnMge0FycmF5fSBSZXR1cm5zIHRoZSBhcnJheSBvZiBwcm9wZXJ0eSBuYW1lcy5cbiAqL1xuZnVuY3Rpb24gYmFzZUtleXMob2JqZWN0KSB7XG4gICAgaWYgKCFpc1Byb3RvdHlwZShvYmplY3QpKSB7XG4gICAgICAgIHJldHVybiBuYXRpdmVLZXlzKG9iamVjdCk7XG4gICAgfVxuICAgIHZhciByZXN1bHQgPSBbXTtcbiAgICBmb3IgKHZhciBrZXkgaW4gT2JqZWN0KG9iamVjdCkpIHtcbiAgICAgICAgaWYgKGhhc093blByb3BlcnR5LmNhbGwob2JqZWN0LCBrZXkpICYmIGtleSAhPSAnY29uc3RydWN0b3InKSB7XG4gICAgICAgICAgICByZXN1bHQucHVzaChrZXkpO1xuICAgICAgICB9XG4gICAgfVxuICAgIHJldHVybiByZXN1bHQ7XG59XG5tb2R1bGUuZXhwb3J0cyA9IGJhc2VLZXlzO1xuIl0sIm1hcHBpbmdzIjoiQUFBQTtBQUNBO0FBQUE7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQURBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7Ozs7Ozs7O0FBT0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFBQSIsInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./node_modules/lodash/_baseKeys.js\n')},"./node_modules/lodash/_baseKeysIn.js":
|
||
/*!********************************************!*\
|
||
!*** ./node_modules/lodash/_baseKeysIn.js ***!
|
||
\********************************************/
|
||
/*! no static exports found */function(module,exports,__webpack_require__){"use strict";eval('\n\nvar isObject = __webpack_require__(/*! ./isObject */ "./node_modules/lodash/isObject.js"),\n isPrototype = __webpack_require__(/*! ./_isPrototype */ "./node_modules/lodash/_isPrototype.js"),\n nativeKeysIn = __webpack_require__(/*! ./_nativeKeysIn */ "./node_modules/lodash/_nativeKeysIn.js");\n/** Used for built-in method references. */\n\n\nvar objectProto = Object.prototype;\n/** Used to check objects for own properties. */\n\nvar hasOwnProperty = objectProto.hasOwnProperty;\n/**\n * The base implementation of `_.keysIn` which doesn\'t treat sparse arrays as dense.\n *\n * @private\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of property names.\n */\n\nfunction baseKeysIn(object) {\n if (!isObject(object)) {\n return nativeKeysIn(object);\n }\n\n var isProto = isPrototype(object),\n result = [];\n\n for (var key in object) {\n if (!(key == \'constructor\' && (isProto || !hasOwnProperty.call(object, key)))) {\n result.push(key);\n }\n }\n\n return result;\n}\n\nmodule.exports = baseKeysIn;//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvbG9kYXNoL19iYXNlS2V5c0luLmpzLmpzIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vU05MaWJyYXJ5Ly4vbm9kZV9tb2R1bGVzL2xvZGFzaC9fYmFzZUtleXNJbi5qcz80MWMzIl0sInNvdXJjZXNDb250ZW50IjpbIlwidXNlIHN0cmljdFwiO1xudmFyIGlzT2JqZWN0ID0gcmVxdWlyZSgnLi9pc09iamVjdCcpLCBpc1Byb3RvdHlwZSA9IHJlcXVpcmUoJy4vX2lzUHJvdG90eXBlJyksIG5hdGl2ZUtleXNJbiA9IHJlcXVpcmUoJy4vX25hdGl2ZUtleXNJbicpO1xuLyoqIFVzZWQgZm9yIGJ1aWx0LWluIG1ldGhvZCByZWZlcmVuY2VzLiAqL1xudmFyIG9iamVjdFByb3RvID0gT2JqZWN0LnByb3RvdHlwZTtcbi8qKiBVc2VkIHRvIGNoZWNrIG9iamVjdHMgZm9yIG93biBwcm9wZXJ0aWVzLiAqL1xudmFyIGhhc093blByb3BlcnR5ID0gb2JqZWN0UHJvdG8uaGFzT3duUHJvcGVydHk7XG4vKipcbiAqIFRoZSBiYXNlIGltcGxlbWVudGF0aW9uIG9mIGBfLmtleXNJbmAgd2hpY2ggZG9lc24ndCB0cmVhdCBzcGFyc2UgYXJyYXlzIGFzIGRlbnNlLlxuICpcbiAqIEBwcml2YXRlXG4gKiBAcGFyYW0ge09iamVjdH0gb2JqZWN0IFRoZSBvYmplY3QgdG8gcXVlcnkuXG4gKiBAcmV0dXJucyB7QXJyYXl9IFJldHVybnMgdGhlIGFycmF5IG9mIHByb3BlcnR5IG5hbWVzLlxuICovXG5mdW5jdGlvbiBiYXNlS2V5c0luKG9iamVjdCkge1xuICAgIGlmICghaXNPYmplY3Qob2JqZWN0KSkge1xuICAgICAgICByZXR1cm4gbmF0aXZlS2V5c0luKG9iamVjdCk7XG4gICAgfVxuICAgIHZhciBpc1Byb3RvID0gaXNQcm90b3R5cGUob2JqZWN0KSwgcmVzdWx0ID0gW107XG4gICAgZm9yICh2YXIga2V5IGluIG9iamVjdCkge1xuICAgICAgICBpZiAoIShrZXkgPT0gJ2NvbnN0cnVjdG9yJyAmJiAoaXNQcm90byB8fCAhaGFzT3duUHJvcGVydHkuY2FsbChvYmplY3QsIGtleSkpKSkge1xuICAgICAgICAgICAgcmVzdWx0LnB1c2goa2V5KTtcbiAgICAgICAgfVxuICAgIH1cbiAgICByZXR1cm4gcmVzdWx0O1xufVxubW9kdWxlLmV4cG9ydHMgPSBiYXNlS2V5c0luO1xuIl0sIm1hcHBpbmdzIjoiQUFBQTtBQUNBO0FBQUE7QUFBQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBREE7QUFDQTtBQUNBO0FBQUE7QUFDQTs7Ozs7Ozs7QUFPQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFBQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQUEiLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./node_modules/lodash/_baseKeysIn.js\n')},"./node_modules/lodash/_baseMatches.js":
|
||
/*!*********************************************!*\
|
||
!*** ./node_modules/lodash/_baseMatches.js ***!
|
||
\*********************************************/
|
||
/*! no static exports found */function(module,exports,__webpack_require__){"use strict";eval('\n\nvar baseIsMatch = __webpack_require__(/*! ./_baseIsMatch */ "./node_modules/lodash/_baseIsMatch.js"),\n getMatchData = __webpack_require__(/*! ./_getMatchData */ "./node_modules/lodash/_getMatchData.js"),\n matchesStrictComparable = __webpack_require__(/*! ./_matchesStrictComparable */ "./node_modules/lodash/_matchesStrictComparable.js");\n/**\n * The base implementation of `_.matches` which doesn\'t clone `source`.\n *\n * @private\n * @param {Object} source The object of property values to match.\n * @returns {Function} Returns the new spec function.\n */\n\n\nfunction baseMatches(source) {\n var matchData = getMatchData(source);\n\n if (matchData.length == 1 && matchData[0][2]) {\n return matchesStrictComparable(matchData[0][0], matchData[0][1]);\n }\n\n return function (object) {\n return object === source || baseIsMatch(object, source, matchData);\n };\n}\n\nmodule.exports = baseMatches;//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvbG9kYXNoL19iYXNlTWF0Y2hlcy5qcy5qcyIsInNvdXJjZXMiOlsid2VicGFjazovL1NOTGlicmFyeS8uL25vZGVfbW9kdWxlcy9sb2Rhc2gvX2Jhc2VNYXRjaGVzLmpzPzY0MmEiXSwic291cmNlc0NvbnRlbnQiOlsiXCJ1c2Ugc3RyaWN0XCI7XG52YXIgYmFzZUlzTWF0Y2ggPSByZXF1aXJlKCcuL19iYXNlSXNNYXRjaCcpLCBnZXRNYXRjaERhdGEgPSByZXF1aXJlKCcuL19nZXRNYXRjaERhdGEnKSwgbWF0Y2hlc1N0cmljdENvbXBhcmFibGUgPSByZXF1aXJlKCcuL19tYXRjaGVzU3RyaWN0Q29tcGFyYWJsZScpO1xuLyoqXG4gKiBUaGUgYmFzZSBpbXBsZW1lbnRhdGlvbiBvZiBgXy5tYXRjaGVzYCB3aGljaCBkb2Vzbid0IGNsb25lIGBzb3VyY2VgLlxuICpcbiAqIEBwcml2YXRlXG4gKiBAcGFyYW0ge09iamVjdH0gc291cmNlIFRoZSBvYmplY3Qgb2YgcHJvcGVydHkgdmFsdWVzIHRvIG1hdGNoLlxuICogQHJldHVybnMge0Z1bmN0aW9ufSBSZXR1cm5zIHRoZSBuZXcgc3BlYyBmdW5jdGlvbi5cbiAqL1xuZnVuY3Rpb24gYmFzZU1hdGNoZXMoc291cmNlKSB7XG4gICAgdmFyIG1hdGNoRGF0YSA9IGdldE1hdGNoRGF0YShzb3VyY2UpO1xuICAgIGlmIChtYXRjaERhdGEubGVuZ3RoID09IDEgJiYgbWF0Y2hEYXRhWzBdWzJdKSB7XG4gICAgICAgIHJldHVybiBtYXRjaGVzU3RyaWN0Q29tcGFyYWJsZShtYXRjaERhdGFbMF1bMF0sIG1hdGNoRGF0YVswXVsxXSk7XG4gICAgfVxuICAgIHJldHVybiBmdW5jdGlvbiAob2JqZWN0KSB7XG4gICAgICAgIHJldHVybiBvYmplY3QgPT09IHNvdXJjZSB8fCBiYXNlSXNNYXRjaChvYmplY3QsIHNvdXJjZSwgbWF0Y2hEYXRhKTtcbiAgICB9O1xufVxubW9kdWxlLmV4cG9ydHMgPSBiYXNlTWF0Y2hlcztcbiJdLCJtYXBwaW5ncyI6IkFBQUE7QUFDQTtBQUFBO0FBQUE7QUFBQTtBQUNBOzs7Ozs7Ozs7QUFPQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQSIsInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./node_modules/lodash/_baseMatches.js\n')},"./node_modules/lodash/_baseMatchesProperty.js":
|
||
/*!*****************************************************!*\
|
||
!*** ./node_modules/lodash/_baseMatchesProperty.js ***!
|
||
\*****************************************************/
|
||
/*! no static exports found */function(module,exports,__webpack_require__){"use strict";eval('\n\nvar baseIsEqual = __webpack_require__(/*! ./_baseIsEqual */ "./node_modules/lodash/_baseIsEqual.js"),\n get = __webpack_require__(/*! ./get */ "./node_modules/lodash/get.js"),\n hasIn = __webpack_require__(/*! ./hasIn */ "./node_modules/lodash/hasIn.js"),\n isKey = __webpack_require__(/*! ./_isKey */ "./node_modules/lodash/_isKey.js"),\n isStrictComparable = __webpack_require__(/*! ./_isStrictComparable */ "./node_modules/lodash/_isStrictComparable.js"),\n matchesStrictComparable = __webpack_require__(/*! ./_matchesStrictComparable */ "./node_modules/lodash/_matchesStrictComparable.js"),\n toKey = __webpack_require__(/*! ./_toKey */ "./node_modules/lodash/_toKey.js");\n/** Used to compose bitmasks for value comparisons. */\n\n\nvar COMPARE_PARTIAL_FLAG = 1,\n COMPARE_UNORDERED_FLAG = 2;\n/**\n * The base implementation of `_.matchesProperty` which doesn\'t clone `srcValue`.\n *\n * @private\n * @param {string} path The path of the property to get.\n * @param {*} srcValue The value to match.\n * @returns {Function} Returns the new spec function.\n */\n\nfunction baseMatchesProperty(path, srcValue) {\n if (isKey(path) && isStrictComparable(srcValue)) {\n return matchesStrictComparable(toKey(path), srcValue);\n }\n\n return function (object) {\n var objValue = get(object, path);\n return objValue === undefined && objValue === srcValue ? hasIn(object, path) : baseIsEqual(srcValue, objValue, COMPARE_PARTIAL_FLAG | COMPARE_UNORDERED_FLAG);\n };\n}\n\nmodule.exports = baseMatchesProperty;//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvbG9kYXNoL19iYXNlTWF0Y2hlc1Byb3BlcnR5LmpzLmpzIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vU05MaWJyYXJ5Ly4vbm9kZV9tb2R1bGVzL2xvZGFzaC9fYmFzZU1hdGNoZXNQcm9wZXJ0eS5qcz8xODM4Il0sInNvdXJjZXNDb250ZW50IjpbIlwidXNlIHN0cmljdFwiO1xudmFyIGJhc2VJc0VxdWFsID0gcmVxdWlyZSgnLi9fYmFzZUlzRXF1YWwnKSwgZ2V0ID0gcmVxdWlyZSgnLi9nZXQnKSwgaGFzSW4gPSByZXF1aXJlKCcuL2hhc0luJyksIGlzS2V5ID0gcmVxdWlyZSgnLi9faXNLZXknKSwgaXNTdHJpY3RDb21wYXJhYmxlID0gcmVxdWlyZSgnLi9faXNTdHJpY3RDb21wYXJhYmxlJyksIG1hdGNoZXNTdHJpY3RDb21wYXJhYmxlID0gcmVxdWlyZSgnLi9fbWF0Y2hlc1N0cmljdENvbXBhcmFibGUnKSwgdG9LZXkgPSByZXF1aXJlKCcuL190b0tleScpO1xuLyoqIFVzZWQgdG8gY29tcG9zZSBiaXRtYXNrcyBmb3IgdmFsdWUgY29tcGFyaXNvbnMuICovXG52YXIgQ09NUEFSRV9QQVJUSUFMX0ZMQUcgPSAxLCBDT01QQVJFX1VOT1JERVJFRF9GTEFHID0gMjtcbi8qKlxuICogVGhlIGJhc2UgaW1wbGVtZW50YXRpb24gb2YgYF8ubWF0Y2hlc1Byb3BlcnR5YCB3aGljaCBkb2Vzbid0IGNsb25lIGBzcmNWYWx1ZWAuXG4gKlxuICogQHByaXZhdGVcbiAqIEBwYXJhbSB7c3RyaW5nfSBwYXRoIFRoZSBwYXRoIG9mIHRoZSBwcm9wZXJ0eSB0byBnZXQuXG4gKiBAcGFyYW0geyp9IHNyY1ZhbHVlIFRoZSB2YWx1ZSB0byBtYXRjaC5cbiAqIEByZXR1cm5zIHtGdW5jdGlvbn0gUmV0dXJucyB0aGUgbmV3IHNwZWMgZnVuY3Rpb24uXG4gKi9cbmZ1bmN0aW9uIGJhc2VNYXRjaGVzUHJvcGVydHkocGF0aCwgc3JjVmFsdWUpIHtcbiAgICBpZiAoaXNLZXkocGF0aCkgJiYgaXNTdHJpY3RDb21wYXJhYmxlKHNyY1ZhbHVlKSkge1xuICAgICAgICByZXR1cm4gbWF0Y2hlc1N0cmljdENvbXBhcmFibGUodG9LZXkocGF0aCksIHNyY1ZhbHVlKTtcbiAgICB9XG4gICAgcmV0dXJuIGZ1bmN0aW9uIChvYmplY3QpIHtcbiAgICAgICAgdmFyIG9ialZhbHVlID0gZ2V0KG9iamVjdCwgcGF0aCk7XG4gICAgICAgIHJldHVybiAob2JqVmFsdWUgPT09IHVuZGVmaW5lZCAmJiBvYmpWYWx1ZSA9PT0gc3JjVmFsdWUpXG4gICAgICAgICAgICA/IGhhc0luKG9iamVjdCwgcGF0aClcbiAgICAgICAgICAgIDogYmFzZUlzRXF1YWwoc3JjVmFsdWUsIG9ialZhbHVlLCBDT01QQVJFX1BBUlRJQUxfRkxBRyB8IENPTVBBUkVfVU5PUkRFUkVEX0ZMQUcpO1xuICAgIH07XG59XG5tb2R1bGUuZXhwb3J0cyA9IGJhc2VNYXRjaGVzUHJvcGVydHk7XG4iXSwibWFwcGluZ3MiOiJBQUFBO0FBQ0E7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQURBO0FBQUE7QUFDQTs7Ozs7Ozs7O0FBUUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUdBO0FBQ0E7QUFDQTtBQUFBIiwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./node_modules/lodash/_baseMatchesProperty.js\n')},"./node_modules/lodash/_baseMerge.js":
|
||
/*!*******************************************!*\
|
||
!*** ./node_modules/lodash/_baseMerge.js ***!
|
||
\*******************************************/
|
||
/*! no static exports found */function(module,exports,__webpack_require__){"use strict";eval('\n\nvar Stack = __webpack_require__(/*! ./_Stack */ "./node_modules/lodash/_Stack.js"),\n assignMergeValue = __webpack_require__(/*! ./_assignMergeValue */ "./node_modules/lodash/_assignMergeValue.js"),\n baseFor = __webpack_require__(/*! ./_baseFor */ "./node_modules/lodash/_baseFor.js"),\n baseMergeDeep = __webpack_require__(/*! ./_baseMergeDeep */ "./node_modules/lodash/_baseMergeDeep.js"),\n isObject = __webpack_require__(/*! ./isObject */ "./node_modules/lodash/isObject.js"),\n keysIn = __webpack_require__(/*! ./keysIn */ "./node_modules/lodash/keysIn.js"),\n safeGet = __webpack_require__(/*! ./_safeGet */ "./node_modules/lodash/_safeGet.js");\n/**\n * The base implementation of `_.merge` without support for multiple sources.\n *\n * @private\n * @param {Object} object The destination object.\n * @param {Object} source The source object.\n * @param {number} srcIndex The index of `source`.\n * @param {Function} [customizer] The function to customize merged values.\n * @param {Object} [stack] Tracks traversed source values and their merged\n * counterparts.\n */\n\n\nfunction baseMerge(object, source, srcIndex, customizer, stack) {\n if (object === source) {\n return;\n }\n\n baseFor(source, function (srcValue, key) {\n stack || (stack = new Stack());\n\n if (isObject(srcValue)) {\n baseMergeDeep(object, source, key, srcIndex, baseMerge, customizer, stack);\n } else {\n var newValue = customizer ? customizer(safeGet(object, key), srcValue, key + \'\', object, source, stack) : undefined;\n\n if (newValue === undefined) {\n newValue = srcValue;\n }\n\n assignMergeValue(object, key, newValue);\n }\n }, keysIn);\n}\n\nmodule.exports = baseMerge;//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvbG9kYXNoL19iYXNlTWVyZ2UuanMuanMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly9TTkxpYnJhcnkvLi9ub2RlX21vZHVsZXMvbG9kYXNoL19iYXNlTWVyZ2UuanM/ZjkwOSJdLCJzb3VyY2VzQ29udGVudCI6WyJcInVzZSBzdHJpY3RcIjtcbnZhciBTdGFjayA9IHJlcXVpcmUoJy4vX1N0YWNrJyksIGFzc2lnbk1lcmdlVmFsdWUgPSByZXF1aXJlKCcuL19hc3NpZ25NZXJnZVZhbHVlJyksIGJhc2VGb3IgPSByZXF1aXJlKCcuL19iYXNlRm9yJyksIGJhc2VNZXJnZURlZXAgPSByZXF1aXJlKCcuL19iYXNlTWVyZ2VEZWVwJyksIGlzT2JqZWN0ID0gcmVxdWlyZSgnLi9pc09iamVjdCcpLCBrZXlzSW4gPSByZXF1aXJlKCcuL2tleXNJbicpLCBzYWZlR2V0ID0gcmVxdWlyZSgnLi9fc2FmZUdldCcpO1xuLyoqXG4gKiBUaGUgYmFzZSBpbXBsZW1lbnRhdGlvbiBvZiBgXy5tZXJnZWAgd2l0aG91dCBzdXBwb3J0IGZvciBtdWx0aXBsZSBzb3VyY2VzLlxuICpcbiAqIEBwcml2YXRlXG4gKiBAcGFyYW0ge09iamVjdH0gb2JqZWN0IFRoZSBkZXN0aW5hdGlvbiBvYmplY3QuXG4gKiBAcGFyYW0ge09iamVjdH0gc291cmNlIFRoZSBzb3VyY2Ugb2JqZWN0LlxuICogQHBhcmFtIHtudW1iZXJ9IHNyY0luZGV4IFRoZSBpbmRleCBvZiBgc291cmNlYC5cbiAqIEBwYXJhbSB7RnVuY3Rpb259IFtjdXN0b21pemVyXSBUaGUgZnVuY3Rpb24gdG8gY3VzdG9taXplIG1lcmdlZCB2YWx1ZXMuXG4gKiBAcGFyYW0ge09iamVjdH0gW3N0YWNrXSBUcmFja3MgdHJhdmVyc2VkIHNvdXJjZSB2YWx1ZXMgYW5kIHRoZWlyIG1lcmdlZFxuICogIGNvdW50ZXJwYXJ0cy5cbiAqL1xuZnVuY3Rpb24gYmFzZU1lcmdlKG9iamVjdCwgc291cmNlLCBzcmNJbmRleCwgY3VzdG9taXplciwgc3RhY2spIHtcbiAgICBpZiAob2JqZWN0ID09PSBzb3VyY2UpIHtcbiAgICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICBiYXNlRm9yKHNvdXJjZSwgZnVuY3Rpb24gKHNyY1ZhbHVlLCBrZXkpIHtcbiAgICAgICAgc3RhY2sgfHwgKHN0YWNrID0gbmV3IFN0YWNrKTtcbiAgICAgICAgaWYgKGlzT2JqZWN0KHNyY1ZhbHVlKSkge1xuICAgICAgICAgICAgYmFzZU1lcmdlRGVlcChvYmplY3QsIHNvdXJjZSwga2V5LCBzcmNJbmRleCwgYmFzZU1lcmdlLCBjdXN0b21pemVyLCBzdGFjayk7XG4gICAgICAgIH1cbiAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICB2YXIgbmV3VmFsdWUgPSBjdXN0b21pemVyXG4gICAgICAgICAgICAgICAgPyBjdXN0b21pemVyKHNhZmVHZXQob2JqZWN0LCBrZXkpLCBzcmNWYWx1ZSwgKGtleSArICcnKSwgb2JqZWN0LCBzb3VyY2UsIHN0YWNrKVxuICAgICAgICAgICAgICAgIDogdW5kZWZpbmVkO1xuICAgICAgICAgICAgaWYgKG5ld1ZhbHVlID09PSB1bmRlZmluZWQpIHtcbiAgICAgICAgICAgICAgICBuZXdWYWx1ZSA9IHNyY1ZhbHVlO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgYXNzaWduTWVyZ2VWYWx1ZShvYmplY3QsIGtleSwgbmV3VmFsdWUpO1xuICAgICAgICB9XG4gICAgfSwga2V5c0luKTtcbn1cbm1vZHVsZS5leHBvcnRzID0gYmFzZU1lcmdlO1xuIl0sIm1hcHBpbmdzIjoiQUFBQTtBQUNBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFDQTs7Ozs7Ozs7Ozs7OztBQVdBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFFQTtBQUNBO0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUEiLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./node_modules/lodash/_baseMerge.js\n')},"./node_modules/lodash/_baseMergeDeep.js":
|
||
/*!***********************************************!*\
|
||
!*** ./node_modules/lodash/_baseMergeDeep.js ***!
|
||
\***********************************************/
|
||
/*! no static exports found */function(module,exports,__webpack_require__){"use strict";eval('\n\nvar assignMergeValue = __webpack_require__(/*! ./_assignMergeValue */ "./node_modules/lodash/_assignMergeValue.js"),\n cloneBuffer = __webpack_require__(/*! ./_cloneBuffer */ "./node_modules/lodash/_cloneBuffer.js"),\n cloneTypedArray = __webpack_require__(/*! ./_cloneTypedArray */ "./node_modules/lodash/_cloneTypedArray.js"),\n copyArray = __webpack_require__(/*! ./_copyArray */ "./node_modules/lodash/_copyArray.js"),\n initCloneObject = __webpack_require__(/*! ./_initCloneObject */ "./node_modules/lodash/_initCloneObject.js"),\n isArguments = __webpack_require__(/*! ./isArguments */ "./node_modules/lodash/isArguments.js"),\n isArray = __webpack_require__(/*! ./isArray */ "./node_modules/lodash/isArray.js"),\n isArrayLikeObject = __webpack_require__(/*! ./isArrayLikeObject */ "./node_modules/lodash/isArrayLikeObject.js"),\n isBuffer = __webpack_require__(/*! ./isBuffer */ "./node_modules/lodash/isBuffer.js"),\n isFunction = __webpack_require__(/*! ./isFunction */ "./node_modules/lodash/isFunction.js"),\n isObject = __webpack_require__(/*! ./isObject */ "./node_modules/lodash/isObject.js"),\n isPlainObject = __webpack_require__(/*! ./isPlainObject */ "./node_modules/lodash/isPlainObject.js"),\n isTypedArray = __webpack_require__(/*! ./isTypedArray */ "./node_modules/lodash/isTypedArray.js"),\n safeGet = __webpack_require__(/*! ./_safeGet */ "./node_modules/lodash/_safeGet.js"),\n toPlainObject = __webpack_require__(/*! ./toPlainObject */ "./node_modules/lodash/toPlainObject.js");\n/**\n * A specialized version of `baseMerge` for arrays and objects which performs\n * deep merges and tracks traversed objects enabling objects with circular\n * references to be merged.\n *\n * @private\n * @param {Object} object The destination object.\n * @param {Object} source The source object.\n * @param {string} key The key of the value to merge.\n * @param {number} srcIndex The index of `source`.\n * @param {Function} mergeFunc The function to merge values.\n * @param {Function} [customizer] The function to customize assigned values.\n * @param {Object} [stack] Tracks traversed source values and their merged\n * counterparts.\n */\n\n\nfunction baseMergeDeep(object, source, key, srcIndex, mergeFunc, customizer, stack) {\n var objValue = safeGet(object, key),\n srcValue = safeGet(source, key),\n stacked = stack.get(srcValue);\n\n if (stacked) {\n assignMergeValue(object, key, stacked);\n return;\n }\n\n var newValue = customizer ? customizer(objValue, srcValue, key + \'\', object, source, stack) : undefined;\n var isCommon = newValue === undefined;\n\n if (isCommon) {\n var isArr = isArray(srcValue),\n isBuff = !isArr && isBuffer(srcValue),\n isTyped = !isArr && !isBuff && isTypedArray(srcValue);\n newValue = srcValue;\n\n if (isArr || isBuff || isTyped) {\n if (isArray(objValue)) {\n newValue = objValue;\n } else if (isArrayLikeObject(objValue)) {\n newValue = copyArray(objValue);\n } else if (isBuff) {\n isCommon = false;\n newValue = cloneBuffer(srcValue, true);\n } else if (isTyped) {\n isCommon = false;\n newValue = cloneTypedArray(srcValue, true);\n } else {\n newValue = [];\n }\n } else if (isPlainObject(srcValue) || isArguments(srcValue)) {\n newValue = objValue;\n\n if (isArguments(objValue)) {\n newValue = toPlainObject(objValue);\n } else if (!isObject(objValue) || isFunction(objValue)) {\n newValue = initCloneObject(srcValue);\n }\n } else {\n isCommon = false;\n }\n }\n\n if (isCommon) {\n // Recursively merge objects and arrays (susceptible to call stack limits).\n stack.set(srcValue, newValue);\n mergeFunc(newValue, srcValue, srcIndex, customizer, stack);\n stack[\'delete\'](srcValue);\n }\n\n assignMergeValue(object, key, newValue);\n}\n\nmodule.exports = baseMergeDeep;//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvbG9kYXNoL19iYXNlTWVyZ2VEZWVwLmpzLmpzIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vU05MaWJyYXJ5Ly4vbm9kZV9tb2R1bGVzL2xvZGFzaC9fYmFzZU1lcmdlRGVlcC5qcz80ZjUwIl0sInNvdXJjZXNDb250ZW50IjpbIlwidXNlIHN0cmljdFwiO1xudmFyIGFzc2lnbk1lcmdlVmFsdWUgPSByZXF1aXJlKCcuL19hc3NpZ25NZXJnZVZhbHVlJyksIGNsb25lQnVmZmVyID0gcmVxdWlyZSgnLi9fY2xvbmVCdWZmZXInKSwgY2xvbmVUeXBlZEFycmF5ID0gcmVxdWlyZSgnLi9fY2xvbmVUeXBlZEFycmF5JyksIGNvcHlBcnJheSA9IHJlcXVpcmUoJy4vX2NvcHlBcnJheScpLCBpbml0Q2xvbmVPYmplY3QgPSByZXF1aXJlKCcuL19pbml0Q2xvbmVPYmplY3QnKSwgaXNBcmd1bWVudHMgPSByZXF1aXJlKCcuL2lzQXJndW1lbnRzJyksIGlzQXJyYXkgPSByZXF1aXJlKCcuL2lzQXJyYXknKSwgaXNBcnJheUxpa2VPYmplY3QgPSByZXF1aXJlKCcuL2lzQXJyYXlMaWtlT2JqZWN0JyksIGlzQnVmZmVyID0gcmVxdWlyZSgnLi9pc0J1ZmZlcicpLCBpc0Z1bmN0aW9uID0gcmVxdWlyZSgnLi9pc0Z1bmN0aW9uJyksIGlzT2JqZWN0ID0gcmVxdWlyZSgnLi9pc09iamVjdCcpLCBpc1BsYWluT2JqZWN0ID0gcmVxdWlyZSgnLi9pc1BsYWluT2JqZWN0JyksIGlzVHlwZWRBcnJheSA9IHJlcXVpcmUoJy4vaXNUeXBlZEFycmF5JyksIHNhZmVHZXQgPSByZXF1aXJlKCcuL19zYWZlR2V0JyksIHRvUGxhaW5PYmplY3QgPSByZXF1aXJlKCcuL3RvUGxhaW5PYmplY3QnKTtcbi8qKlxuICogQSBzcGVjaWFsaXplZCB2ZXJzaW9uIG9mIGBiYXNlTWVyZ2VgIGZvciBhcnJheXMgYW5kIG9iamVjdHMgd2hpY2ggcGVyZm9ybXNcbiAqIGRlZXAgbWVyZ2VzIGFuZCB0cmFja3MgdHJhdmVyc2VkIG9iamVjdHMgZW5hYmxpbmcgb2JqZWN0cyB3aXRoIGNpcmN1bGFyXG4gKiByZWZlcmVuY2VzIHRvIGJlIG1lcmdlZC5cbiAqXG4gKiBAcHJpdmF0ZVxuICogQHBhcmFtIHtPYmplY3R9IG9iamVjdCBUaGUgZGVzdGluYXRpb24gb2JqZWN0LlxuICogQHBhcmFtIHtPYmplY3R9IHNvdXJjZSBUaGUgc291cmNlIG9iamVjdC5cbiAqIEBwYXJhbSB7c3RyaW5nfSBrZXkgVGhlIGtleSBvZiB0aGUgdmFsdWUgdG8gbWVyZ2UuXG4gKiBAcGFyYW0ge251bWJlcn0gc3JjSW5kZXggVGhlIGluZGV4IG9mIGBzb3VyY2VgLlxuICogQHBhcmFtIHtGdW5jdGlvbn0gbWVyZ2VGdW5jIFRoZSBmdW5jdGlvbiB0byBtZXJnZSB2YWx1ZXMuXG4gKiBAcGFyYW0ge0Z1bmN0aW9ufSBbY3VzdG9taXplcl0gVGhlIGZ1bmN0aW9uIHRvIGN1c3RvbWl6ZSBhc3NpZ25lZCB2YWx1ZXMuXG4gKiBAcGFyYW0ge09iamVjdH0gW3N0YWNrXSBUcmFja3MgdHJhdmVyc2VkIHNvdXJjZSB2YWx1ZXMgYW5kIHRoZWlyIG1lcmdlZFxuICogIGNvdW50ZXJwYXJ0cy5cbiAqL1xuZnVuY3Rpb24gYmFzZU1lcmdlRGVlcChvYmplY3QsIHNvdXJjZSwga2V5LCBzcmNJbmRleCwgbWVyZ2VGdW5jLCBjdXN0b21pemVyLCBzdGFjaykge1xuICAgIHZhciBvYmpWYWx1ZSA9IHNhZmVHZXQob2JqZWN0LCBrZXkpLCBzcmNWYWx1ZSA9IHNhZmVHZXQoc291cmNlLCBrZXkpLCBzdGFja2VkID0gc3RhY2suZ2V0KHNyY1ZhbHVlKTtcbiAgICBpZiAoc3RhY2tlZCkge1xuICAgICAgICBhc3NpZ25NZXJnZVZhbHVlKG9iamVjdCwga2V5LCBzdGFja2VkKTtcbiAgICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICB2YXIgbmV3VmFsdWUgPSBjdXN0b21pemVyXG4gICAgICAgID8gY3VzdG9taXplcihvYmpWYWx1ZSwgc3JjVmFsdWUsIChrZXkgKyAnJyksIG9iamVjdCwgc291cmNlLCBzdGFjaylcbiAgICAgICAgOiB1bmRlZmluZWQ7XG4gICAgdmFyIGlzQ29tbW9uID0gbmV3VmFsdWUgPT09IHVuZGVmaW5lZDtcbiAgICBpZiAoaXNDb21tb24pIHtcbiAgICAgICAgdmFyIGlzQXJyID0gaXNBcnJheShzcmNWYWx1ZSksIGlzQnVmZiA9ICFpc0FyciAmJiBpc0J1ZmZlcihzcmNWYWx1ZSksIGlzVHlwZWQgPSAhaXNBcnIgJiYgIWlzQnVmZiAmJiBpc1R5cGVkQXJyYXkoc3JjVmFsdWUpO1xuICAgICAgICBuZXdWYWx1ZSA9IHNyY1ZhbHVlO1xuICAgICAgICBpZiAoaXNBcnIgfHwgaXNCdWZmIHx8IGlzVHlwZWQpIHtcbiAgICAgICAgICAgIGlmIChpc0FycmF5KG9ialZhbHVlKSkge1xuICAgICAgICAgICAgICAgIG5ld1ZhbHVlID0gb2JqVmFsdWU7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBlbHNlIGlmIChpc0FycmF5TGlrZU9iamVjdChvYmpWYWx1ZSkpIHtcbiAgICAgICAgICAgICAgICBuZXdWYWx1ZSA9IGNvcHlBcnJheShvYmpWYWx1ZSk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBlbHNlIGlmIChpc0J1ZmYpIHtcbiAgICAgICAgICAgICAgICBpc0NvbW1vbiA9IGZhbHNlO1xuICAgICAgICAgICAgICAgIG5ld1ZhbHVlID0gY2xvbmVCdWZmZXIoc3JjVmFsdWUsIHRydWUpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgZWxzZSBpZiAoaXNUeXBlZCkge1xuICAgICAgICAgICAgICAgIGlzQ29tbW9uID0gZmFsc2U7XG4gICAgICAgICAgICAgICAgbmV3VmFsdWUgPSBjbG9uZVR5cGVkQXJyYXkoc3JjVmFsdWUsIHRydWUpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICAgICAgbmV3VmFsdWUgPSBbXTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICBlbHNlIGlmIChpc1BsYWluT2JqZWN0KHNyY1ZhbHVlKSB8fCBpc0FyZ3VtZW50cyhzcmNWYWx1ZSkpIHtcbiAgICAgICAgICAgIG5ld1ZhbHVlID0gb2JqVmFsdWU7XG4gICAgICAgICAgICBpZiAoaXNBcmd1bWVudHMob2JqVmFsdWUpKSB7XG4gICAgICAgICAgICAgICAgbmV3VmFsdWUgPSB0b1BsYWluT2JqZWN0KG9ialZhbHVlKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGVsc2UgaWYgKCFpc09iamVjdChvYmpWYWx1ZSkgfHwgaXNGdW5jdGlvbihvYmpWYWx1ZSkpIHtcbiAgICAgICAgICAgICAgICBuZXdWYWx1ZSA9IGluaXRDbG9uZU9iamVjdChzcmNWYWx1ZSk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICBpc0NvbW1vbiA9IGZhbHNlO1xuICAgICAgICB9XG4gICAgfVxuICAgIGlmIChpc0NvbW1vbikge1xuICAgICAgICAvLyBSZWN1cnNpdmVseSBtZXJnZSBvYmplY3RzIGFuZCBhcnJheXMgKHN1c2NlcHRpYmxlIHRvIGNhbGwgc3RhY2sgbGltaXRzKS5cbiAgICAgICAgc3RhY2suc2V0KHNyY1ZhbHVlLCBuZXdWYWx1ZSk7XG4gICAgICAgIG1lcmdlRnVuYyhuZXdWYWx1ZSwgc3JjVmFsdWUsIHNyY0luZGV4LCBjdXN0b21pemVyLCBzdGFjayk7XG4gICAgICAgIHN0YWNrWydkZWxldGUnXShzcmNWYWx1ZSk7XG4gICAgfVxuICAgIGFzc2lnbk1lcmdlVmFsdWUob2JqZWN0LCBrZXksIG5ld1ZhbHVlKTtcbn1cbm1vZHVsZS5leHBvcnRzID0gYmFzZU1lcmdlRGVlcDtcbiJdLCJtYXBwaW5ncyI6IkFBQUE7QUFDQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUNBOzs7Ozs7Ozs7Ozs7Ozs7OztBQWVBO0FBQ0E7QUFBQTtBQUFBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFHQTtBQUNBO0FBQUE7QUFDQTtBQUFBO0FBQUE7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFFQTtBQUNBO0FBRUE7QUFDQTtBQUNBO0FBRUE7QUFDQTtBQUNBO0FBRUE7QUFDQTtBQUNBO0FBRUE7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUVBO0FBQ0E7QUFDQTtBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFBQSIsInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./node_modules/lodash/_baseMergeDeep.js\n')},"./node_modules/lodash/_baseProperty.js":
|
||
/*!**********************************************!*\
|
||
!*** ./node_modules/lodash/_baseProperty.js ***!
|
||
\**********************************************/
|
||
/*! no static exports found */function(module,exports,__webpack_require__){"use strict";eval("\n/**\n * The base implementation of `_.property` without support for deep paths.\n *\n * @private\n * @param {string} key The key of the property to get.\n * @returns {Function} Returns the new accessor function.\n */\n\nfunction baseProperty(key) {\n return function (object) {\n return object == null ? undefined : object[key];\n };\n}\n\nmodule.exports = baseProperty;//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvbG9kYXNoL19iYXNlUHJvcGVydHkuanMuanMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly9TTkxpYnJhcnkvLi9ub2RlX21vZHVsZXMvbG9kYXNoL19iYXNlUHJvcGVydHkuanM/ZWY1ZCJdLCJzb3VyY2VzQ29udGVudCI6WyJcInVzZSBzdHJpY3RcIjtcbi8qKlxuICogVGhlIGJhc2UgaW1wbGVtZW50YXRpb24gb2YgYF8ucHJvcGVydHlgIHdpdGhvdXQgc3VwcG9ydCBmb3IgZGVlcCBwYXRocy5cbiAqXG4gKiBAcHJpdmF0ZVxuICogQHBhcmFtIHtzdHJpbmd9IGtleSBUaGUga2V5IG9mIHRoZSBwcm9wZXJ0eSB0byBnZXQuXG4gKiBAcmV0dXJucyB7RnVuY3Rpb259IFJldHVybnMgdGhlIG5ldyBhY2Nlc3NvciBmdW5jdGlvbi5cbiAqL1xuZnVuY3Rpb24gYmFzZVByb3BlcnR5KGtleSkge1xuICAgIHJldHVybiBmdW5jdGlvbiAob2JqZWN0KSB7XG4gICAgICAgIHJldHVybiBvYmplY3QgPT0gbnVsbCA/IHVuZGVmaW5lZCA6IG9iamVjdFtrZXldO1xuICAgIH07XG59XG5tb2R1bGUuZXhwb3J0cyA9IGJhc2VQcm9wZXJ0eTtcbiJdLCJtYXBwaW5ncyI6IkFBQUE7QUFDQTs7Ozs7Ozs7QUFPQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQSIsInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./node_modules/lodash/_baseProperty.js\n")},"./node_modules/lodash/_basePropertyDeep.js":
|
||
/*!**************************************************!*\
|
||
!*** ./node_modules/lodash/_basePropertyDeep.js ***!
|
||
\**************************************************/
|
||
/*! no static exports found */function(module,exports,__webpack_require__){"use strict";eval('\n\nvar baseGet = __webpack_require__(/*! ./_baseGet */ "./node_modules/lodash/_baseGet.js");\n/**\n * A specialized version of `baseProperty` which supports deep paths.\n *\n * @private\n * @param {Array|string} path The path of the property to get.\n * @returns {Function} Returns the new accessor function.\n */\n\n\nfunction basePropertyDeep(path) {\n return function (object) {\n return baseGet(object, path);\n };\n}\n\nmodule.exports = basePropertyDeep;//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvbG9kYXNoL19iYXNlUHJvcGVydHlEZWVwLmpzLmpzIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vU05MaWJyYXJ5Ly4vbm9kZV9tb2R1bGVzL2xvZGFzaC9fYmFzZVByb3BlcnR5RGVlcC5qcz9lM2Y4Il0sInNvdXJjZXNDb250ZW50IjpbIlwidXNlIHN0cmljdFwiO1xudmFyIGJhc2VHZXQgPSByZXF1aXJlKCcuL19iYXNlR2V0Jyk7XG4vKipcbiAqIEEgc3BlY2lhbGl6ZWQgdmVyc2lvbiBvZiBgYmFzZVByb3BlcnR5YCB3aGljaCBzdXBwb3J0cyBkZWVwIHBhdGhzLlxuICpcbiAqIEBwcml2YXRlXG4gKiBAcGFyYW0ge0FycmF5fHN0cmluZ30gcGF0aCBUaGUgcGF0aCBvZiB0aGUgcHJvcGVydHkgdG8gZ2V0LlxuICogQHJldHVybnMge0Z1bmN0aW9ufSBSZXR1cm5zIHRoZSBuZXcgYWNjZXNzb3IgZnVuY3Rpb24uXG4gKi9cbmZ1bmN0aW9uIGJhc2VQcm9wZXJ0eURlZXAocGF0aCkge1xuICAgIHJldHVybiBmdW5jdGlvbiAob2JqZWN0KSB7XG4gICAgICAgIHJldHVybiBiYXNlR2V0KG9iamVjdCwgcGF0aCk7XG4gICAgfTtcbn1cbm1vZHVsZS5leHBvcnRzID0gYmFzZVByb3BlcnR5RGVlcDtcbiJdLCJtYXBwaW5ncyI6IkFBQUE7QUFDQTtBQUFBO0FBQ0E7Ozs7Ozs7OztBQU9BO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBIiwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./node_modules/lodash/_basePropertyDeep.js\n')},"./node_modules/lodash/_basePullAt.js":
|
||
/*!********************************************!*\
|
||
!*** ./node_modules/lodash/_basePullAt.js ***!
|
||
\********************************************/
|
||
/*! no static exports found */function(module,exports,__webpack_require__){"use strict";eval('\n\nvar baseUnset = __webpack_require__(/*! ./_baseUnset */ "./node_modules/lodash/_baseUnset.js"),\n isIndex = __webpack_require__(/*! ./_isIndex */ "./node_modules/lodash/_isIndex.js");\n/** Used for built-in method references. */\n\n\nvar arrayProto = Array.prototype;\n/** Built-in value references. */\n\nvar splice = arrayProto.splice;\n/**\n * The base implementation of `_.pullAt` without support for individual\n * indexes or capturing the removed elements.\n *\n * @private\n * @param {Array} array The array to modify.\n * @param {number[]} indexes The indexes of elements to remove.\n * @returns {Array} Returns `array`.\n */\n\nfunction basePullAt(array, indexes) {\n var length = array ? indexes.length : 0,\n lastIndex = length - 1;\n\n while (length--) {\n var index = indexes[length];\n\n if (length == lastIndex || index !== previous) {\n var previous = index;\n\n if (isIndex(index)) {\n splice.call(array, index, 1);\n } else {\n baseUnset(array, index);\n }\n }\n }\n\n return array;\n}\n\nmodule.exports = basePullAt;//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvbG9kYXNoL19iYXNlUHVsbEF0LmpzLmpzIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vU05MaWJyYXJ5Ly4vbm9kZV9tb2R1bGVzL2xvZGFzaC9fYmFzZVB1bGxBdC5qcz83ZjljIl0sInNvdXJjZXNDb250ZW50IjpbIlwidXNlIHN0cmljdFwiO1xudmFyIGJhc2VVbnNldCA9IHJlcXVpcmUoJy4vX2Jhc2VVbnNldCcpLCBpc0luZGV4ID0gcmVxdWlyZSgnLi9faXNJbmRleCcpO1xuLyoqIFVzZWQgZm9yIGJ1aWx0LWluIG1ldGhvZCByZWZlcmVuY2VzLiAqL1xudmFyIGFycmF5UHJvdG8gPSBBcnJheS5wcm90b3R5cGU7XG4vKiogQnVpbHQtaW4gdmFsdWUgcmVmZXJlbmNlcy4gKi9cbnZhciBzcGxpY2UgPSBhcnJheVByb3RvLnNwbGljZTtcbi8qKlxuICogVGhlIGJhc2UgaW1wbGVtZW50YXRpb24gb2YgYF8ucHVsbEF0YCB3aXRob3V0IHN1cHBvcnQgZm9yIGluZGl2aWR1YWxcbiAqIGluZGV4ZXMgb3IgY2FwdHVyaW5nIHRoZSByZW1vdmVkIGVsZW1lbnRzLlxuICpcbiAqIEBwcml2YXRlXG4gKiBAcGFyYW0ge0FycmF5fSBhcnJheSBUaGUgYXJyYXkgdG8gbW9kaWZ5LlxuICogQHBhcmFtIHtudW1iZXJbXX0gaW5kZXhlcyBUaGUgaW5kZXhlcyBvZiBlbGVtZW50cyB0byByZW1vdmUuXG4gKiBAcmV0dXJucyB7QXJyYXl9IFJldHVybnMgYGFycmF5YC5cbiAqL1xuZnVuY3Rpb24gYmFzZVB1bGxBdChhcnJheSwgaW5kZXhlcykge1xuICAgIHZhciBsZW5ndGggPSBhcnJheSA/IGluZGV4ZXMubGVuZ3RoIDogMCwgbGFzdEluZGV4ID0gbGVuZ3RoIC0gMTtcbiAgICB3aGlsZSAobGVuZ3RoLS0pIHtcbiAgICAgICAgdmFyIGluZGV4ID0gaW5kZXhlc1tsZW5ndGhdO1xuICAgICAgICBpZiAobGVuZ3RoID09IGxhc3RJbmRleCB8fCBpbmRleCAhPT0gcHJldmlvdXMpIHtcbiAgICAgICAgICAgIHZhciBwcmV2aW91cyA9IGluZGV4O1xuICAgICAgICAgICAgaWYgKGlzSW5kZXgoaW5kZXgpKSB7XG4gICAgICAgICAgICAgICAgc3BsaWNlLmNhbGwoYXJyYXksIGluZGV4LCAxKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgICAgIGJhc2VVbnNldChhcnJheSwgaW5kZXgpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfVxuICAgIHJldHVybiBhcnJheTtcbn1cbm1vZHVsZS5leHBvcnRzID0gYmFzZVB1bGxBdDtcbiJdLCJtYXBwaW5ncyI6IkFBQUE7QUFDQTtBQUFBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFEQTtBQUNBO0FBQ0E7QUFBQTtBQUNBOzs7Ozs7Ozs7O0FBU0E7QUFDQTtBQUFBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQUEiLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./node_modules/lodash/_basePullAt.js\n')},"./node_modules/lodash/_baseRest.js":
|
||
/*!******************************************!*\
|
||
!*** ./node_modules/lodash/_baseRest.js ***!
|
||
\******************************************/
|
||
/*! no static exports found */function(module,exports,__webpack_require__){"use strict";eval('\n\nvar identity = __webpack_require__(/*! ./identity */ "./node_modules/lodash/identity.js"),\n overRest = __webpack_require__(/*! ./_overRest */ "./node_modules/lodash/_overRest.js"),\n setToString = __webpack_require__(/*! ./_setToString */ "./node_modules/lodash/_setToString.js");\n/**\n * The base implementation of `_.rest` which doesn\'t validate or coerce arguments.\n *\n * @private\n * @param {Function} func The function to apply a rest parameter to.\n * @param {number} [start=func.length-1] The start position of the rest parameter.\n * @returns {Function} Returns the new function.\n */\n\n\nfunction baseRest(func, start) {\n return setToString(overRest(func, start, identity), func + \'\');\n}\n\nmodule.exports = baseRest;//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvbG9kYXNoL19iYXNlUmVzdC5qcy5qcyIsInNvdXJjZXMiOlsid2VicGFjazovL1NOTGlicmFyeS8uL25vZGVfbW9kdWxlcy9sb2Rhc2gvX2Jhc2VSZXN0LmpzPzEwMGUiXSwic291cmNlc0NvbnRlbnQiOlsiXCJ1c2Ugc3RyaWN0XCI7XG52YXIgaWRlbnRpdHkgPSByZXF1aXJlKCcuL2lkZW50aXR5JyksIG92ZXJSZXN0ID0gcmVxdWlyZSgnLi9fb3ZlclJlc3QnKSwgc2V0VG9TdHJpbmcgPSByZXF1aXJlKCcuL19zZXRUb1N0cmluZycpO1xuLyoqXG4gKiBUaGUgYmFzZSBpbXBsZW1lbnRhdGlvbiBvZiBgXy5yZXN0YCB3aGljaCBkb2Vzbid0IHZhbGlkYXRlIG9yIGNvZXJjZSBhcmd1bWVudHMuXG4gKlxuICogQHByaXZhdGVcbiAqIEBwYXJhbSB7RnVuY3Rpb259IGZ1bmMgVGhlIGZ1bmN0aW9uIHRvIGFwcGx5IGEgcmVzdCBwYXJhbWV0ZXIgdG8uXG4gKiBAcGFyYW0ge251bWJlcn0gW3N0YXJ0PWZ1bmMubGVuZ3RoLTFdIFRoZSBzdGFydCBwb3NpdGlvbiBvZiB0aGUgcmVzdCBwYXJhbWV0ZXIuXG4gKiBAcmV0dXJucyB7RnVuY3Rpb259IFJldHVybnMgdGhlIG5ldyBmdW5jdGlvbi5cbiAqL1xuZnVuY3Rpb24gYmFzZVJlc3QoZnVuYywgc3RhcnQpIHtcbiAgICByZXR1cm4gc2V0VG9TdHJpbmcob3ZlclJlc3QoZnVuYywgc3RhcnQsIGlkZW50aXR5KSwgZnVuYyArICcnKTtcbn1cbm1vZHVsZS5leHBvcnRzID0gYmFzZVJlc3Q7XG4iXSwibWFwcGluZ3MiOiJBQUFBO0FBQ0E7QUFBQTtBQUFBO0FBQUE7QUFDQTs7Ozs7Ozs7OztBQVFBO0FBQ0E7QUFDQTtBQUNBO0FBQUEiLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./node_modules/lodash/_baseRest.js\n')},"./node_modules/lodash/_baseSetToString.js":
|
||
/*!*************************************************!*\
|
||
!*** ./node_modules/lodash/_baseSetToString.js ***!
|
||
\*************************************************/
|
||
/*! no static exports found */function(module,exports,__webpack_require__){"use strict";eval("\n\nvar constant = __webpack_require__(/*! ./constant */ \"./node_modules/lodash/constant.js\"),\n defineProperty = __webpack_require__(/*! ./_defineProperty */ \"./node_modules/lodash/_defineProperty.js\"),\n identity = __webpack_require__(/*! ./identity */ \"./node_modules/lodash/identity.js\");\n/**\n * The base implementation of `setToString` without support for hot loop shorting.\n *\n * @private\n * @param {Function} func The function to modify.\n * @param {Function} string The `toString` result.\n * @returns {Function} Returns `func`.\n */\n\n\nvar baseSetToString = !defineProperty ? identity : function (func, string) {\n return defineProperty(func, 'toString', {\n 'configurable': true,\n 'enumerable': false,\n 'value': constant(string),\n 'writable': true\n });\n};\nmodule.exports = baseSetToString;//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvbG9kYXNoL19iYXNlU2V0VG9TdHJpbmcuanMuanMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly9TTkxpYnJhcnkvLi9ub2RlX21vZHVsZXMvbG9kYXNoL19iYXNlU2V0VG9TdHJpbmcuanM/YTQ1NCJdLCJzb3VyY2VzQ29udGVudCI6WyJcInVzZSBzdHJpY3RcIjtcbnZhciBjb25zdGFudCA9IHJlcXVpcmUoJy4vY29uc3RhbnQnKSwgZGVmaW5lUHJvcGVydHkgPSByZXF1aXJlKCcuL19kZWZpbmVQcm9wZXJ0eScpLCBpZGVudGl0eSA9IHJlcXVpcmUoJy4vaWRlbnRpdHknKTtcbi8qKlxuICogVGhlIGJhc2UgaW1wbGVtZW50YXRpb24gb2YgYHNldFRvU3RyaW5nYCB3aXRob3V0IHN1cHBvcnQgZm9yIGhvdCBsb29wIHNob3J0aW5nLlxuICpcbiAqIEBwcml2YXRlXG4gKiBAcGFyYW0ge0Z1bmN0aW9ufSBmdW5jIFRoZSBmdW5jdGlvbiB0byBtb2RpZnkuXG4gKiBAcGFyYW0ge0Z1bmN0aW9ufSBzdHJpbmcgVGhlIGB0b1N0cmluZ2AgcmVzdWx0LlxuICogQHJldHVybnMge0Z1bmN0aW9ufSBSZXR1cm5zIGBmdW5jYC5cbiAqL1xudmFyIGJhc2VTZXRUb1N0cmluZyA9ICFkZWZpbmVQcm9wZXJ0eSA/IGlkZW50aXR5IDogZnVuY3Rpb24gKGZ1bmMsIHN0cmluZykge1xuICAgIHJldHVybiBkZWZpbmVQcm9wZXJ0eShmdW5jLCAndG9TdHJpbmcnLCB7XG4gICAgICAgICdjb25maWd1cmFibGUnOiB0cnVlLFxuICAgICAgICAnZW51bWVyYWJsZSc6IGZhbHNlLFxuICAgICAgICAndmFsdWUnOiBjb25zdGFudChzdHJpbmcpLFxuICAgICAgICAnd3JpdGFibGUnOiB0cnVlXG4gICAgfSk7XG59O1xubW9kdWxlLmV4cG9ydHMgPSBiYXNlU2V0VG9TdHJpbmc7XG4iXSwibWFwcGluZ3MiOiJBQUFBO0FBQ0E7QUFBQTtBQUFBO0FBQUE7QUFDQTs7Ozs7Ozs7OztBQVFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUpBO0FBTUE7QUFDQSIsInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./node_modules/lodash/_baseSetToString.js\n")},"./node_modules/lodash/_baseSlice.js":
|
||
/*!*******************************************!*\
|
||
!*** ./node_modules/lodash/_baseSlice.js ***!
|
||
\*******************************************/
|
||
/*! no static exports found */function(module,exports,__webpack_require__){"use strict";eval("\n/**\n * The base implementation of `_.slice` without an iteratee call guard.\n *\n * @private\n * @param {Array} array The array to slice.\n * @param {number} [start=0] The start position.\n * @param {number} [end=array.length] The end position.\n * @returns {Array} Returns the slice of `array`.\n */\n\nfunction baseSlice(array, start, end) {\n var index = -1,\n length = array.length;\n\n if (start < 0) {\n start = -start > length ? 0 : length + start;\n }\n\n end = end > length ? length : end;\n\n if (end < 0) {\n end += length;\n }\n\n length = start > end ? 0 : end - start >>> 0;\n start >>>= 0;\n var result = Array(length);\n\n while (++index < length) {\n result[index] = array[index + start];\n }\n\n return result;\n}\n\nmodule.exports = baseSlice;//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvbG9kYXNoL19iYXNlU2xpY2UuanMuanMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly9TTkxpYnJhcnkvLi9ub2RlX21vZHVsZXMvbG9kYXNoL19iYXNlU2xpY2UuanM/MmIxMCJdLCJzb3VyY2VzQ29udGVudCI6WyJcInVzZSBzdHJpY3RcIjtcbi8qKlxuICogVGhlIGJhc2UgaW1wbGVtZW50YXRpb24gb2YgYF8uc2xpY2VgIHdpdGhvdXQgYW4gaXRlcmF0ZWUgY2FsbCBndWFyZC5cbiAqXG4gKiBAcHJpdmF0ZVxuICogQHBhcmFtIHtBcnJheX0gYXJyYXkgVGhlIGFycmF5IHRvIHNsaWNlLlxuICogQHBhcmFtIHtudW1iZXJ9IFtzdGFydD0wXSBUaGUgc3RhcnQgcG9zaXRpb24uXG4gKiBAcGFyYW0ge251bWJlcn0gW2VuZD1hcnJheS5sZW5ndGhdIFRoZSBlbmQgcG9zaXRpb24uXG4gKiBAcmV0dXJucyB7QXJyYXl9IFJldHVybnMgdGhlIHNsaWNlIG9mIGBhcnJheWAuXG4gKi9cbmZ1bmN0aW9uIGJhc2VTbGljZShhcnJheSwgc3RhcnQsIGVuZCkge1xuICAgIHZhciBpbmRleCA9IC0xLCBsZW5ndGggPSBhcnJheS5sZW5ndGg7XG4gICAgaWYgKHN0YXJ0IDwgMCkge1xuICAgICAgICBzdGFydCA9IC1zdGFydCA+IGxlbmd0aCA/IDAgOiAobGVuZ3RoICsgc3RhcnQpO1xuICAgIH1cbiAgICBlbmQgPSBlbmQgPiBsZW5ndGggPyBsZW5ndGggOiBlbmQ7XG4gICAgaWYgKGVuZCA8IDApIHtcbiAgICAgICAgZW5kICs9IGxlbmd0aDtcbiAgICB9XG4gICAgbGVuZ3RoID0gc3RhcnQgPiBlbmQgPyAwIDogKChlbmQgLSBzdGFydCkgPj4+IDApO1xuICAgIHN0YXJ0ID4+Pj0gMDtcbiAgICB2YXIgcmVzdWx0ID0gQXJyYXkobGVuZ3RoKTtcbiAgICB3aGlsZSAoKytpbmRleCA8IGxlbmd0aCkge1xuICAgICAgICByZXN1bHRbaW5kZXhdID0gYXJyYXlbaW5kZXggKyBzdGFydF07XG4gICAgfVxuICAgIHJldHVybiByZXN1bHQ7XG59XG5tb2R1bGUuZXhwb3J0cyA9IGJhc2VTbGljZTtcbiJdLCJtYXBwaW5ncyI6IkFBQUE7QUFDQTs7Ozs7Ozs7OztBQVNBO0FBQ0E7QUFBQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQUEiLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./node_modules/lodash/_baseSlice.js\n")},"./node_modules/lodash/_baseTimes.js":
|
||
/*!*******************************************!*\
|
||
!*** ./node_modules/lodash/_baseTimes.js ***!
|
||
\*******************************************/
|
||
/*! no static exports found */function(module,exports,__webpack_require__){"use strict";eval("\n/**\n * The base implementation of `_.times` without support for iteratee shorthands\n * or max array length checks.\n *\n * @private\n * @param {number} n The number of times to invoke `iteratee`.\n * @param {Function} iteratee The function invoked per iteration.\n * @returns {Array} Returns the array of results.\n */\n\nfunction baseTimes(n, iteratee) {\n var index = -1,\n result = Array(n);\n\n while (++index < n) {\n result[index] = iteratee(index);\n }\n\n return result;\n}\n\nmodule.exports = baseTimes;//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvbG9kYXNoL19iYXNlVGltZXMuanMuanMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly9TTkxpYnJhcnkvLi9ub2RlX21vZHVsZXMvbG9kYXNoL19iYXNlVGltZXMuanM/NTBkOCJdLCJzb3VyY2VzQ29udGVudCI6WyJcInVzZSBzdHJpY3RcIjtcbi8qKlxuICogVGhlIGJhc2UgaW1wbGVtZW50YXRpb24gb2YgYF8udGltZXNgIHdpdGhvdXQgc3VwcG9ydCBmb3IgaXRlcmF0ZWUgc2hvcnRoYW5kc1xuICogb3IgbWF4IGFycmF5IGxlbmd0aCBjaGVja3MuXG4gKlxuICogQHByaXZhdGVcbiAqIEBwYXJhbSB7bnVtYmVyfSBuIFRoZSBudW1iZXIgb2YgdGltZXMgdG8gaW52b2tlIGBpdGVyYXRlZWAuXG4gKiBAcGFyYW0ge0Z1bmN0aW9ufSBpdGVyYXRlZSBUaGUgZnVuY3Rpb24gaW52b2tlZCBwZXIgaXRlcmF0aW9uLlxuICogQHJldHVybnMge0FycmF5fSBSZXR1cm5zIHRoZSBhcnJheSBvZiByZXN1bHRzLlxuICovXG5mdW5jdGlvbiBiYXNlVGltZXMobiwgaXRlcmF0ZWUpIHtcbiAgICB2YXIgaW5kZXggPSAtMSwgcmVzdWx0ID0gQXJyYXkobik7XG4gICAgd2hpbGUgKCsraW5kZXggPCBuKSB7XG4gICAgICAgIHJlc3VsdFtpbmRleF0gPSBpdGVyYXRlZShpbmRleCk7XG4gICAgfVxuICAgIHJldHVybiByZXN1bHQ7XG59XG5tb2R1bGUuZXhwb3J0cyA9IGJhc2VUaW1lcztcbiJdLCJtYXBwaW5ncyI6IkFBQUE7QUFDQTs7Ozs7Ozs7OztBQVNBO0FBQ0E7QUFBQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFBQSIsInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./node_modules/lodash/_baseTimes.js\n")},"./node_modules/lodash/_baseToString.js":
|
||
/*!**********************************************!*\
|
||
!*** ./node_modules/lodash/_baseToString.js ***!
|
||
\**********************************************/
|
||
/*! no static exports found */function(module,exports,__webpack_require__){"use strict";eval("\n\nvar _Symbol = __webpack_require__(/*! ./_Symbol */ \"./node_modules/lodash/_Symbol.js\"),\n arrayMap = __webpack_require__(/*! ./_arrayMap */ \"./node_modules/lodash/_arrayMap.js\"),\n isArray = __webpack_require__(/*! ./isArray */ \"./node_modules/lodash/isArray.js\"),\n isSymbol = __webpack_require__(/*! ./isSymbol */ \"./node_modules/lodash/isSymbol.js\");\n/** Used as references for various `Number` constants. */\n\n\nvar INFINITY = 1 / 0;\n/** Used to convert symbols to primitives and strings. */\n\nvar symbolProto = _Symbol ? _Symbol.prototype : undefined,\n symbolToString = symbolProto ? symbolProto.toString : undefined;\n/**\n * The base implementation of `_.toString` which doesn't convert nullish\n * values to empty strings.\n *\n * @private\n * @param {*} value The value to process.\n * @returns {string} Returns the string.\n */\n\nfunction baseToString(value) {\n // Exit early for strings to avoid a performance hit in some environments.\n if (typeof value == 'string') {\n return value;\n }\n\n if (isArray(value)) {\n // Recursively convert values (susceptible to call stack limits).\n return arrayMap(value, baseToString) + '';\n }\n\n if (isSymbol(value)) {\n return symbolToString ? symbolToString.call(value) : '';\n }\n\n var result = value + '';\n return result == '0' && 1 / value == -INFINITY ? '-0' : result;\n}\n\nmodule.exports = baseToString;//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvbG9kYXNoL19iYXNlVG9TdHJpbmcuanMuanMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly9TTkxpYnJhcnkvLi9ub2RlX21vZHVsZXMvbG9kYXNoL19iYXNlVG9TdHJpbmcuanM/Y2U4NiJdLCJzb3VyY2VzQ29udGVudCI6WyJcInVzZSBzdHJpY3RcIjtcbnZhciBTeW1ib2wgPSByZXF1aXJlKCcuL19TeW1ib2wnKSwgYXJyYXlNYXAgPSByZXF1aXJlKCcuL19hcnJheU1hcCcpLCBpc0FycmF5ID0gcmVxdWlyZSgnLi9pc0FycmF5JyksIGlzU3ltYm9sID0gcmVxdWlyZSgnLi9pc1N5bWJvbCcpO1xuLyoqIFVzZWQgYXMgcmVmZXJlbmNlcyBmb3IgdmFyaW91cyBgTnVtYmVyYCBjb25zdGFudHMuICovXG52YXIgSU5GSU5JVFkgPSAxIC8gMDtcbi8qKiBVc2VkIHRvIGNvbnZlcnQgc3ltYm9scyB0byBwcmltaXRpdmVzIGFuZCBzdHJpbmdzLiAqL1xudmFyIHN5bWJvbFByb3RvID0gU3ltYm9sID8gU3ltYm9sLnByb3RvdHlwZSA6IHVuZGVmaW5lZCwgc3ltYm9sVG9TdHJpbmcgPSBzeW1ib2xQcm90byA/IHN5bWJvbFByb3RvLnRvU3RyaW5nIDogdW5kZWZpbmVkO1xuLyoqXG4gKiBUaGUgYmFzZSBpbXBsZW1lbnRhdGlvbiBvZiBgXy50b1N0cmluZ2Agd2hpY2ggZG9lc24ndCBjb252ZXJ0IG51bGxpc2hcbiAqIHZhbHVlcyB0byBlbXB0eSBzdHJpbmdzLlxuICpcbiAqIEBwcml2YXRlXG4gKiBAcGFyYW0geyp9IHZhbHVlIFRoZSB2YWx1ZSB0byBwcm9jZXNzLlxuICogQHJldHVybnMge3N0cmluZ30gUmV0dXJucyB0aGUgc3RyaW5nLlxuICovXG5mdW5jdGlvbiBiYXNlVG9TdHJpbmcodmFsdWUpIHtcbiAgICAvLyBFeGl0IGVhcmx5IGZvciBzdHJpbmdzIHRvIGF2b2lkIGEgcGVyZm9ybWFuY2UgaGl0IGluIHNvbWUgZW52aXJvbm1lbnRzLlxuICAgIGlmICh0eXBlb2YgdmFsdWUgPT0gJ3N0cmluZycpIHtcbiAgICAgICAgcmV0dXJuIHZhbHVlO1xuICAgIH1cbiAgICBpZiAoaXNBcnJheSh2YWx1ZSkpIHtcbiAgICAgICAgLy8gUmVjdXJzaXZlbHkgY29udmVydCB2YWx1ZXMgKHN1c2NlcHRpYmxlIHRvIGNhbGwgc3RhY2sgbGltaXRzKS5cbiAgICAgICAgcmV0dXJuIGFycmF5TWFwKHZhbHVlLCBiYXNlVG9TdHJpbmcpICsgJyc7XG4gICAgfVxuICAgIGlmIChpc1N5bWJvbCh2YWx1ZSkpIHtcbiAgICAgICAgcmV0dXJuIHN5bWJvbFRvU3RyaW5nID8gc3ltYm9sVG9TdHJpbmcuY2FsbCh2YWx1ZSkgOiAnJztcbiAgICB9XG4gICAgdmFyIHJlc3VsdCA9ICh2YWx1ZSArICcnKTtcbiAgICByZXR1cm4gKHJlc3VsdCA9PSAnMCcgJiYgKDEgLyB2YWx1ZSkgPT0gLUlORklOSVRZKSA/ICctMCcgOiByZXN1bHQ7XG59XG5tb2R1bGUuZXhwb3J0cyA9IGJhc2VUb1N0cmluZztcbiJdLCJtYXBwaW5ncyI6IkFBQUE7QUFDQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBREE7QUFDQTtBQUNBO0FBQUE7QUFBQTtBQUNBOzs7Ozs7Ozs7QUFRQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUFBIiwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./node_modules/lodash/_baseToString.js\n")},"./node_modules/lodash/_baseUnary.js":
|
||
/*!*******************************************!*\
|
||
!*** ./node_modules/lodash/_baseUnary.js ***!
|
||
\*******************************************/
|
||
/*! no static exports found */function(module,exports,__webpack_require__){"use strict";eval("\n/**\n * The base implementation of `_.unary` without support for storing metadata.\n *\n * @private\n * @param {Function} func The function to cap arguments for.\n * @returns {Function} Returns the new capped function.\n */\n\nfunction baseUnary(func) {\n return function (value) {\n return func(value);\n };\n}\n\nmodule.exports = baseUnary;//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvbG9kYXNoL19iYXNlVW5hcnkuanMuanMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly9TTkxpYnJhcnkvLi9ub2RlX21vZHVsZXMvbG9kYXNoL19iYXNlVW5hcnkuanM/YjA0NyJdLCJzb3VyY2VzQ29udGVudCI6WyJcInVzZSBzdHJpY3RcIjtcbi8qKlxuICogVGhlIGJhc2UgaW1wbGVtZW50YXRpb24gb2YgYF8udW5hcnlgIHdpdGhvdXQgc3VwcG9ydCBmb3Igc3RvcmluZyBtZXRhZGF0YS5cbiAqXG4gKiBAcHJpdmF0ZVxuICogQHBhcmFtIHtGdW5jdGlvbn0gZnVuYyBUaGUgZnVuY3Rpb24gdG8gY2FwIGFyZ3VtZW50cyBmb3IuXG4gKiBAcmV0dXJucyB7RnVuY3Rpb259IFJldHVybnMgdGhlIG5ldyBjYXBwZWQgZnVuY3Rpb24uXG4gKi9cbmZ1bmN0aW9uIGJhc2VVbmFyeShmdW5jKSB7XG4gICAgcmV0dXJuIGZ1bmN0aW9uICh2YWx1ZSkge1xuICAgICAgICByZXR1cm4gZnVuYyh2YWx1ZSk7XG4gICAgfTtcbn1cbm1vZHVsZS5leHBvcnRzID0gYmFzZVVuYXJ5O1xuIl0sIm1hcHBpbmdzIjoiQUFBQTtBQUNBOzs7Ozs7OztBQU9BO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBIiwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./node_modules/lodash/_baseUnary.js\n")},"./node_modules/lodash/_baseUniq.js":
|
||
/*!******************************************!*\
|
||
!*** ./node_modules/lodash/_baseUniq.js ***!
|
||
\******************************************/
|
||
/*! no static exports found */function(module,exports,__webpack_require__){"use strict";eval('\n\nvar SetCache = __webpack_require__(/*! ./_SetCache */ "./node_modules/lodash/_SetCache.js"),\n arrayIncludes = __webpack_require__(/*! ./_arrayIncludes */ "./node_modules/lodash/_arrayIncludes.js"),\n arrayIncludesWith = __webpack_require__(/*! ./_arrayIncludesWith */ "./node_modules/lodash/_arrayIncludesWith.js"),\n cacheHas = __webpack_require__(/*! ./_cacheHas */ "./node_modules/lodash/_cacheHas.js"),\n createSet = __webpack_require__(/*! ./_createSet */ "./node_modules/lodash/_createSet.js"),\n setToArray = __webpack_require__(/*! ./_setToArray */ "./node_modules/lodash/_setToArray.js");\n/** Used as the size to enable large array optimizations. */\n\n\nvar LARGE_ARRAY_SIZE = 200;\n/**\n * The base implementation of `_.uniqBy` without support for iteratee shorthands.\n *\n * @private\n * @param {Array} array The array to inspect.\n * @param {Function} [iteratee] The iteratee invoked per element.\n * @param {Function} [comparator] The comparator invoked per element.\n * @returns {Array} Returns the new duplicate free array.\n */\n\nfunction baseUniq(array, iteratee, comparator) {\n var index = -1,\n includes = arrayIncludes,\n length = array.length,\n isCommon = true,\n result = [],\n seen = result;\n\n if (comparator) {\n isCommon = false;\n includes = arrayIncludesWith;\n } else if (length >= LARGE_ARRAY_SIZE) {\n var set = iteratee ? null : createSet(array);\n\n if (set) {\n return setToArray(set);\n }\n\n isCommon = false;\n includes = cacheHas;\n seen = new SetCache();\n } else {\n seen = iteratee ? [] : result;\n }\n\n outer: while (++index < length) {\n var value = array[index],\n computed = iteratee ? iteratee(value) : value;\n value = comparator || value !== 0 ? value : 0;\n\n if (isCommon && computed === computed) {\n var seenIndex = seen.length;\n\n while (seenIndex--) {\n if (seen[seenIndex] === computed) {\n continue outer;\n }\n }\n\n if (iteratee) {\n seen.push(computed);\n }\n\n result.push(value);\n } else if (!includes(seen, computed, comparator)) {\n if (seen !== result) {\n seen.push(computed);\n }\n\n result.push(value);\n }\n }\n\n return result;\n}\n\nmodule.exports = baseUniq;//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvbG9kYXNoL19iYXNlVW5pcS5qcy5qcyIsInNvdXJjZXMiOlsid2VicGFjazovL1NOTGlicmFyeS8uL25vZGVfbW9kdWxlcy9sb2Rhc2gvX2Jhc2VVbmlxLmpzPzJjNjYiXSwic291cmNlc0NvbnRlbnQiOlsiXCJ1c2Ugc3RyaWN0XCI7XG52YXIgU2V0Q2FjaGUgPSByZXF1aXJlKCcuL19TZXRDYWNoZScpLCBhcnJheUluY2x1ZGVzID0gcmVxdWlyZSgnLi9fYXJyYXlJbmNsdWRlcycpLCBhcnJheUluY2x1ZGVzV2l0aCA9IHJlcXVpcmUoJy4vX2FycmF5SW5jbHVkZXNXaXRoJyksIGNhY2hlSGFzID0gcmVxdWlyZSgnLi9fY2FjaGVIYXMnKSwgY3JlYXRlU2V0ID0gcmVxdWlyZSgnLi9fY3JlYXRlU2V0JyksIHNldFRvQXJyYXkgPSByZXF1aXJlKCcuL19zZXRUb0FycmF5Jyk7XG4vKiogVXNlZCBhcyB0aGUgc2l6ZSB0byBlbmFibGUgbGFyZ2UgYXJyYXkgb3B0aW1pemF0aW9ucy4gKi9cbnZhciBMQVJHRV9BUlJBWV9TSVpFID0gMjAwO1xuLyoqXG4gKiBUaGUgYmFzZSBpbXBsZW1lbnRhdGlvbiBvZiBgXy51bmlxQnlgIHdpdGhvdXQgc3VwcG9ydCBmb3IgaXRlcmF0ZWUgc2hvcnRoYW5kcy5cbiAqXG4gKiBAcHJpdmF0ZVxuICogQHBhcmFtIHtBcnJheX0gYXJyYXkgVGhlIGFycmF5IHRvIGluc3BlY3QuXG4gKiBAcGFyYW0ge0Z1bmN0aW9ufSBbaXRlcmF0ZWVdIFRoZSBpdGVyYXRlZSBpbnZva2VkIHBlciBlbGVtZW50LlxuICogQHBhcmFtIHtGdW5jdGlvbn0gW2NvbXBhcmF0b3JdIFRoZSBjb21wYXJhdG9yIGludm9rZWQgcGVyIGVsZW1lbnQuXG4gKiBAcmV0dXJucyB7QXJyYXl9IFJldHVybnMgdGhlIG5ldyBkdXBsaWNhdGUgZnJlZSBhcnJheS5cbiAqL1xuZnVuY3Rpb24gYmFzZVVuaXEoYXJyYXksIGl0ZXJhdGVlLCBjb21wYXJhdG9yKSB7XG4gICAgdmFyIGluZGV4ID0gLTEsIGluY2x1ZGVzID0gYXJyYXlJbmNsdWRlcywgbGVuZ3RoID0gYXJyYXkubGVuZ3RoLCBpc0NvbW1vbiA9IHRydWUsIHJlc3VsdCA9IFtdLCBzZWVuID0gcmVzdWx0O1xuICAgIGlmIChjb21wYXJhdG9yKSB7XG4gICAgICAgIGlzQ29tbW9uID0gZmFsc2U7XG4gICAgICAgIGluY2x1ZGVzID0gYXJyYXlJbmNsdWRlc1dpdGg7XG4gICAgfVxuICAgIGVsc2UgaWYgKGxlbmd0aCA+PSBMQVJHRV9BUlJBWV9TSVpFKSB7XG4gICAgICAgIHZhciBzZXQgPSBpdGVyYXRlZSA/IG51bGwgOiBjcmVhdGVTZXQoYXJyYXkpO1xuICAgICAgICBpZiAoc2V0KSB7XG4gICAgICAgICAgICByZXR1cm4gc2V0VG9BcnJheShzZXQpO1xuICAgICAgICB9XG4gICAgICAgIGlzQ29tbW9uID0gZmFsc2U7XG4gICAgICAgIGluY2x1ZGVzID0gY2FjaGVIYXM7XG4gICAgICAgIHNlZW4gPSBuZXcgU2V0Q2FjaGU7XG4gICAgfVxuICAgIGVsc2Uge1xuICAgICAgICBzZWVuID0gaXRlcmF0ZWUgPyBbXSA6IHJlc3VsdDtcbiAgICB9XG4gICAgb3V0ZXI6IHdoaWxlICgrK2luZGV4IDwgbGVuZ3RoKSB7XG4gICAgICAgIHZhciB2YWx1ZSA9IGFycmF5W2luZGV4XSwgY29tcHV0ZWQgPSBpdGVyYXRlZSA/IGl0ZXJhdGVlKHZhbHVlKSA6IHZhbHVlO1xuICAgICAgICB2YWx1ZSA9IChjb21wYXJhdG9yIHx8IHZhbHVlICE9PSAwKSA/IHZhbHVlIDogMDtcbiAgICAgICAgaWYgKGlzQ29tbW9uICYmIGNvbXB1dGVkID09PSBjb21wdXRlZCkge1xuICAgICAgICAgICAgdmFyIHNlZW5JbmRleCA9IHNlZW4ubGVuZ3RoO1xuICAgICAgICAgICAgd2hpbGUgKHNlZW5JbmRleC0tKSB7XG4gICAgICAgICAgICAgICAgaWYgKHNlZW5bc2VlbkluZGV4XSA9PT0gY29tcHV0ZWQpIHtcbiAgICAgICAgICAgICAgICAgICAgY29udGludWUgb3V0ZXI7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICAgICAgaWYgKGl0ZXJhdGVlKSB7XG4gICAgICAgICAgICAgICAgc2Vlbi5wdXNoKGNvbXB1dGVkKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHJlc3VsdC5wdXNoKHZhbHVlKTtcbiAgICAgICAgfVxuICAgICAgICBlbHNlIGlmICghaW5jbHVkZXMoc2VlbiwgY29tcHV0ZWQsIGNvbXBhcmF0b3IpKSB7XG4gICAgICAgICAgICBpZiAoc2VlbiAhPT0gcmVzdWx0KSB7XG4gICAgICAgICAgICAgICAgc2Vlbi5wdXNoKGNvbXB1dGVkKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHJlc3VsdC5wdXNoKHZhbHVlKTtcbiAgICAgICAgfVxuICAgIH1cbiAgICByZXR1cm4gcmVzdWx0O1xufVxubW9kdWxlLmV4cG9ydHMgPSBiYXNlVW5pcTtcbiJdLCJtYXBwaW5ncyI6IkFBQUE7QUFDQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQURBO0FBQ0E7Ozs7Ozs7Ozs7QUFTQTtBQUNBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFFQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUVBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQUEiLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./node_modules/lodash/_baseUniq.js\n')},"./node_modules/lodash/_baseUnset.js":
|
||
/*!*******************************************!*\
|
||
!*** ./node_modules/lodash/_baseUnset.js ***!
|
||
\*******************************************/
|
||
/*! no static exports found */function(module,exports,__webpack_require__){"use strict";eval('\n\nvar castPath = __webpack_require__(/*! ./_castPath */ "./node_modules/lodash/_castPath.js"),\n last = __webpack_require__(/*! ./last */ "./node_modules/lodash/last.js"),\n parent = __webpack_require__(/*! ./_parent */ "./node_modules/lodash/_parent.js"),\n toKey = __webpack_require__(/*! ./_toKey */ "./node_modules/lodash/_toKey.js");\n/**\n * The base implementation of `_.unset`.\n *\n * @private\n * @param {Object} object The object to modify.\n * @param {Array|string} path The property path to unset.\n * @returns {boolean} Returns `true` if the property is deleted, else `false`.\n */\n\n\nfunction baseUnset(object, path) {\n path = castPath(path, object);\n object = parent(object, path);\n return object == null || delete object[toKey(last(path))];\n}\n\nmodule.exports = baseUnset;//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvbG9kYXNoL19iYXNlVW5zZXQuanMuanMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly9TTkxpYnJhcnkvLi9ub2RlX21vZHVsZXMvbG9kYXNoL19iYXNlVW5zZXQuanM/NGJiNSJdLCJzb3VyY2VzQ29udGVudCI6WyJcInVzZSBzdHJpY3RcIjtcbnZhciBjYXN0UGF0aCA9IHJlcXVpcmUoJy4vX2Nhc3RQYXRoJyksIGxhc3QgPSByZXF1aXJlKCcuL2xhc3QnKSwgcGFyZW50ID0gcmVxdWlyZSgnLi9fcGFyZW50JyksIHRvS2V5ID0gcmVxdWlyZSgnLi9fdG9LZXknKTtcbi8qKlxuICogVGhlIGJhc2UgaW1wbGVtZW50YXRpb24gb2YgYF8udW5zZXRgLlxuICpcbiAqIEBwcml2YXRlXG4gKiBAcGFyYW0ge09iamVjdH0gb2JqZWN0IFRoZSBvYmplY3QgdG8gbW9kaWZ5LlxuICogQHBhcmFtIHtBcnJheXxzdHJpbmd9IHBhdGggVGhlIHByb3BlcnR5IHBhdGggdG8gdW5zZXQuXG4gKiBAcmV0dXJucyB7Ym9vbGVhbn0gUmV0dXJucyBgdHJ1ZWAgaWYgdGhlIHByb3BlcnR5IGlzIGRlbGV0ZWQsIGVsc2UgYGZhbHNlYC5cbiAqL1xuZnVuY3Rpb24gYmFzZVVuc2V0KG9iamVjdCwgcGF0aCkge1xuICAgIHBhdGggPSBjYXN0UGF0aChwYXRoLCBvYmplY3QpO1xuICAgIG9iamVjdCA9IHBhcmVudChvYmplY3QsIHBhdGgpO1xuICAgIHJldHVybiBvYmplY3QgPT0gbnVsbCB8fCBkZWxldGUgb2JqZWN0W3RvS2V5KGxhc3QocGF0aCkpXTtcbn1cbm1vZHVsZS5leHBvcnRzID0gYmFzZVVuc2V0O1xuIl0sIm1hcHBpbmdzIjoiQUFBQTtBQUNBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFDQTs7Ozs7Ozs7OztBQVFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBIiwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./node_modules/lodash/_baseUnset.js\n')},"./node_modules/lodash/_cacheHas.js":
|
||
/*!******************************************!*\
|
||
!*** ./node_modules/lodash/_cacheHas.js ***!
|
||
\******************************************/
|
||
/*! no static exports found */function(module,exports,__webpack_require__){"use strict";eval("\n/**\n * Checks if a `cache` value for `key` exists.\n *\n * @private\n * @param {Object} cache The cache to query.\n * @param {string} key The key of the entry to check.\n * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.\n */\n\nfunction cacheHas(cache, key) {\n return cache.has(key);\n}\n\nmodule.exports = cacheHas;//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvbG9kYXNoL19jYWNoZUhhcy5qcy5qcyIsInNvdXJjZXMiOlsid2VicGFjazovL1NOTGlicmFyeS8uL25vZGVfbW9kdWxlcy9sb2Rhc2gvX2NhY2hlSGFzLmpzP2M1ODQiXSwic291cmNlc0NvbnRlbnQiOlsiXCJ1c2Ugc3RyaWN0XCI7XG4vKipcbiAqIENoZWNrcyBpZiBhIGBjYWNoZWAgdmFsdWUgZm9yIGBrZXlgIGV4aXN0cy5cbiAqXG4gKiBAcHJpdmF0ZVxuICogQHBhcmFtIHtPYmplY3R9IGNhY2hlIFRoZSBjYWNoZSB0byBxdWVyeS5cbiAqIEBwYXJhbSB7c3RyaW5nfSBrZXkgVGhlIGtleSBvZiB0aGUgZW50cnkgdG8gY2hlY2suXG4gKiBAcmV0dXJucyB7Ym9vbGVhbn0gUmV0dXJucyBgdHJ1ZWAgaWYgYW4gZW50cnkgZm9yIGBrZXlgIGV4aXN0cywgZWxzZSBgZmFsc2VgLlxuICovXG5mdW5jdGlvbiBjYWNoZUhhcyhjYWNoZSwga2V5KSB7XG4gICAgcmV0dXJuIGNhY2hlLmhhcyhrZXkpO1xufVxubW9kdWxlLmV4cG9ydHMgPSBjYWNoZUhhcztcbiJdLCJtYXBwaW5ncyI6IkFBQUE7QUFDQTs7Ozs7Ozs7O0FBUUE7QUFDQTtBQUNBO0FBQ0E7QUFBQSIsInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./node_modules/lodash/_cacheHas.js\n")},"./node_modules/lodash/_castPath.js":
|
||
/*!******************************************!*\
|
||
!*** ./node_modules/lodash/_castPath.js ***!
|
||
\******************************************/
|
||
/*! no static exports found */function(module,exports,__webpack_require__){"use strict";eval('\n\nvar isArray = __webpack_require__(/*! ./isArray */ "./node_modules/lodash/isArray.js"),\n isKey = __webpack_require__(/*! ./_isKey */ "./node_modules/lodash/_isKey.js"),\n stringToPath = __webpack_require__(/*! ./_stringToPath */ "./node_modules/lodash/_stringToPath.js"),\n toString = __webpack_require__(/*! ./toString */ "./node_modules/lodash/toString.js");\n/**\n * Casts `value` to a path array if it\'s not one.\n *\n * @private\n * @param {*} value The value to inspect.\n * @param {Object} [object] The object to query keys on.\n * @returns {Array} Returns the cast property path array.\n */\n\n\nfunction castPath(value, object) {\n if (isArray(value)) {\n return value;\n }\n\n return isKey(value, object) ? [value] : stringToPath(toString(value));\n}\n\nmodule.exports = castPath;//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvbG9kYXNoL19jYXN0UGF0aC5qcy5qcyIsInNvdXJjZXMiOlsid2VicGFjazovL1NOTGlicmFyeS8uL25vZGVfbW9kdWxlcy9sb2Rhc2gvX2Nhc3RQYXRoLmpzP2UyZTQiXSwic291cmNlc0NvbnRlbnQiOlsiXCJ1c2Ugc3RyaWN0XCI7XG52YXIgaXNBcnJheSA9IHJlcXVpcmUoJy4vaXNBcnJheScpLCBpc0tleSA9IHJlcXVpcmUoJy4vX2lzS2V5JyksIHN0cmluZ1RvUGF0aCA9IHJlcXVpcmUoJy4vX3N0cmluZ1RvUGF0aCcpLCB0b1N0cmluZyA9IHJlcXVpcmUoJy4vdG9TdHJpbmcnKTtcbi8qKlxuICogQ2FzdHMgYHZhbHVlYCB0byBhIHBhdGggYXJyYXkgaWYgaXQncyBub3Qgb25lLlxuICpcbiAqIEBwcml2YXRlXG4gKiBAcGFyYW0geyp9IHZhbHVlIFRoZSB2YWx1ZSB0byBpbnNwZWN0LlxuICogQHBhcmFtIHtPYmplY3R9IFtvYmplY3RdIFRoZSBvYmplY3QgdG8gcXVlcnkga2V5cyBvbi5cbiAqIEByZXR1cm5zIHtBcnJheX0gUmV0dXJucyB0aGUgY2FzdCBwcm9wZXJ0eSBwYXRoIGFycmF5LlxuICovXG5mdW5jdGlvbiBjYXN0UGF0aCh2YWx1ZSwgb2JqZWN0KSB7XG4gICAgaWYgKGlzQXJyYXkodmFsdWUpKSB7XG4gICAgICAgIHJldHVybiB2YWx1ZTtcbiAgICB9XG4gICAgcmV0dXJuIGlzS2V5KHZhbHVlLCBvYmplY3QpID8gW3ZhbHVlXSA6IHN0cmluZ1RvUGF0aCh0b1N0cmluZyh2YWx1ZSkpO1xufVxubW9kdWxlLmV4cG9ydHMgPSBjYXN0UGF0aDtcbiJdLCJtYXBwaW5ncyI6IkFBQUE7QUFDQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQ0E7Ozs7Ozs7Ozs7QUFRQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQUEiLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./node_modules/lodash/_castPath.js\n')},"./node_modules/lodash/_cloneArrayBuffer.js":
|
||
/*!**************************************************!*\
|
||
!*** ./node_modules/lodash/_cloneArrayBuffer.js ***!
|
||
\**************************************************/
|
||
/*! no static exports found */function(module,exports,__webpack_require__){"use strict";eval('\n\nvar Uint8Array = __webpack_require__(/*! ./_Uint8Array */ "./node_modules/lodash/_Uint8Array.js");\n/**\n * Creates a clone of `arrayBuffer`.\n *\n * @private\n * @param {ArrayBuffer} arrayBuffer The array buffer to clone.\n * @returns {ArrayBuffer} Returns the cloned array buffer.\n */\n\n\nfunction cloneArrayBuffer(arrayBuffer) {\n var result = new arrayBuffer.constructor(arrayBuffer.byteLength);\n new Uint8Array(result).set(new Uint8Array(arrayBuffer));\n return result;\n}\n\nmodule.exports = cloneArrayBuffer;//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvbG9kYXNoL19jbG9uZUFycmF5QnVmZmVyLmpzLmpzIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vU05MaWJyYXJ5Ly4vbm9kZV9tb2R1bGVzL2xvZGFzaC9fY2xvbmVBcnJheUJ1ZmZlci5qcz9mOGFmIl0sInNvdXJjZXNDb250ZW50IjpbIlwidXNlIHN0cmljdFwiO1xudmFyIFVpbnQ4QXJyYXkgPSByZXF1aXJlKCcuL19VaW50OEFycmF5Jyk7XG4vKipcbiAqIENyZWF0ZXMgYSBjbG9uZSBvZiBgYXJyYXlCdWZmZXJgLlxuICpcbiAqIEBwcml2YXRlXG4gKiBAcGFyYW0ge0FycmF5QnVmZmVyfSBhcnJheUJ1ZmZlciBUaGUgYXJyYXkgYnVmZmVyIHRvIGNsb25lLlxuICogQHJldHVybnMge0FycmF5QnVmZmVyfSBSZXR1cm5zIHRoZSBjbG9uZWQgYXJyYXkgYnVmZmVyLlxuICovXG5mdW5jdGlvbiBjbG9uZUFycmF5QnVmZmVyKGFycmF5QnVmZmVyKSB7XG4gICAgdmFyIHJlc3VsdCA9IG5ldyBhcnJheUJ1ZmZlci5jb25zdHJ1Y3RvcihhcnJheUJ1ZmZlci5ieXRlTGVuZ3RoKTtcbiAgICBuZXcgVWludDhBcnJheShyZXN1bHQpLnNldChuZXcgVWludDhBcnJheShhcnJheUJ1ZmZlcikpO1xuICAgIHJldHVybiByZXN1bHQ7XG59XG5tb2R1bGUuZXhwb3J0cyA9IGNsb25lQXJyYXlCdWZmZXI7XG4iXSwibWFwcGluZ3MiOiJBQUFBO0FBQ0E7QUFBQTtBQUNBOzs7Ozs7Ozs7QUFPQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQSIsInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./node_modules/lodash/_cloneArrayBuffer.js\n')},"./node_modules/lodash/_cloneBuffer.js":
|
||
/*!*********************************************!*\
|
||
!*** ./node_modules/lodash/_cloneBuffer.js ***!
|
||
\*********************************************/
|
||
/*! no static exports found */function(module,exports,__webpack_require__){"use strict";eval('/* WEBPACK VAR INJECTION */(function(module) {\n\nfunction _typeof(obj) { "@babel/helpers - typeof"; if (typeof Symbol === "function" && typeof Symbol.iterator === "symbol") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }; } return _typeof(obj); }\n\nvar root = __webpack_require__(/*! ./_root */ "./node_modules/lodash/_root.js");\n/** Detect free variable `exports`. */\n\n\nvar freeExports = ( false ? undefined : _typeof(exports)) == \'object\' && exports && !exports.nodeType && exports;\n/** Detect free variable `module`. */\n\nvar freeModule = freeExports && ( false ? undefined : _typeof(module)) == \'object\' && module && !module.nodeType && module;\n/** Detect the popular CommonJS extension `module.exports`. */\n\nvar moduleExports = freeModule && freeModule.exports === freeExports;\n/** Built-in value references. */\n\nvar Buffer = moduleExports ? root.Buffer : undefined,\n allocUnsafe = Buffer ? Buffer.allocUnsafe : undefined;\n/**\n * Creates a clone of `buffer`.\n *\n * @private\n * @param {Buffer} buffer The buffer to clone.\n * @param {boolean} [isDeep] Specify a deep clone.\n * @returns {Buffer} Returns the cloned buffer.\n */\n\nfunction cloneBuffer(buffer, isDeep) {\n if (isDeep) {\n return buffer.slice();\n }\n\n var length = buffer.length,\n result = allocUnsafe ? allocUnsafe(length) : new buffer.constructor(length);\n buffer.copy(result);\n return result;\n}\n\nmodule.exports = cloneBuffer;\n/* WEBPACK VAR INJECTION */}.call(this, __webpack_require__(/*! ./../webpack/buildin/module.js */ "./node_modules/webpack/buildin/module.js")(module)))//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvbG9kYXNoL19jbG9uZUJ1ZmZlci5qcy5qcyIsInNvdXJjZXMiOlsid2VicGFjazovL1NOTGlicmFyeS8uL25vZGVfbW9kdWxlcy9sb2Rhc2gvX2Nsb25lQnVmZmVyLmpzP2U1MzgiXSwic291cmNlc0NvbnRlbnQiOlsiXCJ1c2Ugc3RyaWN0XCI7XG52YXIgcm9vdCA9IHJlcXVpcmUoJy4vX3Jvb3QnKTtcbi8qKiBEZXRlY3QgZnJlZSB2YXJpYWJsZSBgZXhwb3J0c2AuICovXG52YXIgZnJlZUV4cG9ydHMgPSB0eXBlb2YgZXhwb3J0cyA9PSAnb2JqZWN0JyAmJiBleHBvcnRzICYmICFleHBvcnRzLm5vZGVUeXBlICYmIGV4cG9ydHM7XG4vKiogRGV0ZWN0IGZyZWUgdmFyaWFibGUgYG1vZHVsZWAuICovXG52YXIgZnJlZU1vZHVsZSA9IGZyZWVFeHBvcnRzICYmIHR5cGVvZiBtb2R1bGUgPT0gJ29iamVjdCcgJiYgbW9kdWxlICYmICFtb2R1bGUubm9kZVR5cGUgJiYgbW9kdWxlO1xuLyoqIERldGVjdCB0aGUgcG9wdWxhciBDb21tb25KUyBleHRlbnNpb24gYG1vZHVsZS5leHBvcnRzYC4gKi9cbnZhciBtb2R1bGVFeHBvcnRzID0gZnJlZU1vZHVsZSAmJiBmcmVlTW9kdWxlLmV4cG9ydHMgPT09IGZyZWVFeHBvcnRzO1xuLyoqIEJ1aWx0LWluIHZhbHVlIHJlZmVyZW5jZXMuICovXG52YXIgQnVmZmVyID0gbW9kdWxlRXhwb3J0cyA/IHJvb3QuQnVmZmVyIDogdW5kZWZpbmVkLCBhbGxvY1Vuc2FmZSA9IEJ1ZmZlciA/IEJ1ZmZlci5hbGxvY1Vuc2FmZSA6IHVuZGVmaW5lZDtcbi8qKlxuICogQ3JlYXRlcyBhIGNsb25lIG9mICBgYnVmZmVyYC5cbiAqXG4gKiBAcHJpdmF0ZVxuICogQHBhcmFtIHtCdWZmZXJ9IGJ1ZmZlciBUaGUgYnVmZmVyIHRvIGNsb25lLlxuICogQHBhcmFtIHtib29sZWFufSBbaXNEZWVwXSBTcGVjaWZ5IGEgZGVlcCBjbG9uZS5cbiAqIEByZXR1cm5zIHtCdWZmZXJ9IFJldHVybnMgdGhlIGNsb25lZCBidWZmZXIuXG4gKi9cbmZ1bmN0aW9uIGNsb25lQnVmZmVyKGJ1ZmZlciwgaXNEZWVwKSB7XG4gICAgaWYgKGlzRGVlcCkge1xuICAgICAgICByZXR1cm4gYnVmZmVyLnNsaWNlKCk7XG4gICAgfVxuICAgIHZhciBsZW5ndGggPSBidWZmZXIubGVuZ3RoLCByZXN1bHQgPSBhbGxvY1Vuc2FmZSA/IGFsbG9jVW5zYWZlKGxlbmd0aCkgOiBuZXcgYnVmZmVyLmNvbnN0cnVjdG9yKGxlbmd0aCk7XG4gICAgYnVmZmVyLmNvcHkocmVzdWx0KTtcbiAgICByZXR1cm4gcmVzdWx0O1xufVxubW9kdWxlLmV4cG9ydHMgPSBjbG9uZUJ1ZmZlcjtcbiJdLCJtYXBwaW5ncyI6IkFBQUE7QUFDQTs7O0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFEQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFBQTtBQUFBO0FBQ0E7Ozs7Ozs7OztBQVFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBIiwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./node_modules/lodash/_cloneBuffer.js\n')},"./node_modules/lodash/_cloneTypedArray.js":
|
||
/*!*************************************************!*\
|
||
!*** ./node_modules/lodash/_cloneTypedArray.js ***!
|
||
\*************************************************/
|
||
/*! no static exports found */function(module,exports,__webpack_require__){"use strict";eval('\n\nvar cloneArrayBuffer = __webpack_require__(/*! ./_cloneArrayBuffer */ "./node_modules/lodash/_cloneArrayBuffer.js");\n/**\n * Creates a clone of `typedArray`.\n *\n * @private\n * @param {Object} typedArray The typed array to clone.\n * @param {boolean} [isDeep] Specify a deep clone.\n * @returns {Object} Returns the cloned typed array.\n */\n\n\nfunction cloneTypedArray(typedArray, isDeep) {\n var buffer = isDeep ? cloneArrayBuffer(typedArray.buffer) : typedArray.buffer;\n return new typedArray.constructor(buffer, typedArray.byteOffset, typedArray.length);\n}\n\nmodule.exports = cloneTypedArray;//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvbG9kYXNoL19jbG9uZVR5cGVkQXJyYXkuanMuanMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly9TTkxpYnJhcnkvLi9ub2RlX21vZHVsZXMvbG9kYXNoL19jbG9uZVR5cGVkQXJyYXkuanM/YzhmZSJdLCJzb3VyY2VzQ29udGVudCI6WyJcInVzZSBzdHJpY3RcIjtcbnZhciBjbG9uZUFycmF5QnVmZmVyID0gcmVxdWlyZSgnLi9fY2xvbmVBcnJheUJ1ZmZlcicpO1xuLyoqXG4gKiBDcmVhdGVzIGEgY2xvbmUgb2YgYHR5cGVkQXJyYXlgLlxuICpcbiAqIEBwcml2YXRlXG4gKiBAcGFyYW0ge09iamVjdH0gdHlwZWRBcnJheSBUaGUgdHlwZWQgYXJyYXkgdG8gY2xvbmUuXG4gKiBAcGFyYW0ge2Jvb2xlYW59IFtpc0RlZXBdIFNwZWNpZnkgYSBkZWVwIGNsb25lLlxuICogQHJldHVybnMge09iamVjdH0gUmV0dXJucyB0aGUgY2xvbmVkIHR5cGVkIGFycmF5LlxuICovXG5mdW5jdGlvbiBjbG9uZVR5cGVkQXJyYXkodHlwZWRBcnJheSwgaXNEZWVwKSB7XG4gICAgdmFyIGJ1ZmZlciA9IGlzRGVlcCA/IGNsb25lQXJyYXlCdWZmZXIodHlwZWRBcnJheS5idWZmZXIpIDogdHlwZWRBcnJheS5idWZmZXI7XG4gICAgcmV0dXJuIG5ldyB0eXBlZEFycmF5LmNvbnN0cnVjdG9yKGJ1ZmZlciwgdHlwZWRBcnJheS5ieXRlT2Zmc2V0LCB0eXBlZEFycmF5Lmxlbmd0aCk7XG59XG5tb2R1bGUuZXhwb3J0cyA9IGNsb25lVHlwZWRBcnJheTtcbiJdLCJtYXBwaW5ncyI6IkFBQUE7QUFDQTtBQUFBO0FBQ0E7Ozs7Ozs7Ozs7QUFRQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUEiLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./node_modules/lodash/_cloneTypedArray.js\n')},"./node_modules/lodash/_copyArray.js":
|
||
/*!*******************************************!*\
|
||
!*** ./node_modules/lodash/_copyArray.js ***!
|
||
\*******************************************/
|
||
/*! no static exports found */function(module,exports,__webpack_require__){"use strict";eval("\n/**\n * Copies the values of `source` to `array`.\n *\n * @private\n * @param {Array} source The array to copy values from.\n * @param {Array} [array=[]] The array to copy values to.\n * @returns {Array} Returns `array`.\n */\n\nfunction copyArray(source, array) {\n var index = -1,\n length = source.length;\n array || (array = Array(length));\n\n while (++index < length) {\n array[index] = source[index];\n }\n\n return array;\n}\n\nmodule.exports = copyArray;//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvbG9kYXNoL19jb3B5QXJyYXkuanMuanMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly9TTkxpYnJhcnkvLi9ub2RlX21vZHVsZXMvbG9kYXNoL19jb3B5QXJyYXkuanM/NDM1OSJdLCJzb3VyY2VzQ29udGVudCI6WyJcInVzZSBzdHJpY3RcIjtcbi8qKlxuICogQ29waWVzIHRoZSB2YWx1ZXMgb2YgYHNvdXJjZWAgdG8gYGFycmF5YC5cbiAqXG4gKiBAcHJpdmF0ZVxuICogQHBhcmFtIHtBcnJheX0gc291cmNlIFRoZSBhcnJheSB0byBjb3B5IHZhbHVlcyBmcm9tLlxuICogQHBhcmFtIHtBcnJheX0gW2FycmF5PVtdXSBUaGUgYXJyYXkgdG8gY29weSB2YWx1ZXMgdG8uXG4gKiBAcmV0dXJucyB7QXJyYXl9IFJldHVybnMgYGFycmF5YC5cbiAqL1xuZnVuY3Rpb24gY29weUFycmF5KHNvdXJjZSwgYXJyYXkpIHtcbiAgICB2YXIgaW5kZXggPSAtMSwgbGVuZ3RoID0gc291cmNlLmxlbmd0aDtcbiAgICBhcnJheSB8fCAoYXJyYXkgPSBBcnJheShsZW5ndGgpKTtcbiAgICB3aGlsZSAoKytpbmRleCA8IGxlbmd0aCkge1xuICAgICAgICBhcnJheVtpbmRleF0gPSBzb3VyY2VbaW5kZXhdO1xuICAgIH1cbiAgICByZXR1cm4gYXJyYXk7XG59XG5tb2R1bGUuZXhwb3J0cyA9IGNvcHlBcnJheTtcbiJdLCJtYXBwaW5ncyI6IkFBQUE7QUFDQTs7Ozs7Ozs7O0FBUUE7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQUEiLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./node_modules/lodash/_copyArray.js\n")},"./node_modules/lodash/_copyObject.js":
|
||
/*!********************************************!*\
|
||
!*** ./node_modules/lodash/_copyObject.js ***!
|
||
\********************************************/
|
||
/*! no static exports found */function(module,exports,__webpack_require__){"use strict";eval('\n\nvar assignValue = __webpack_require__(/*! ./_assignValue */ "./node_modules/lodash/_assignValue.js"),\n baseAssignValue = __webpack_require__(/*! ./_baseAssignValue */ "./node_modules/lodash/_baseAssignValue.js");\n/**\n * Copies properties of `source` to `object`.\n *\n * @private\n * @param {Object} source The object to copy properties from.\n * @param {Array} props The property identifiers to copy.\n * @param {Object} [object={}] The object to copy properties to.\n * @param {Function} [customizer] The function to customize copied values.\n * @returns {Object} Returns `object`.\n */\n\n\nfunction copyObject(source, props, object, customizer) {\n var isNew = !object;\n object || (object = {});\n var index = -1,\n length = props.length;\n\n while (++index < length) {\n var key = props[index];\n var newValue = customizer ? customizer(object[key], source[key], key, object, source) : undefined;\n\n if (newValue === undefined) {\n newValue = source[key];\n }\n\n if (isNew) {\n baseAssignValue(object, key, newValue);\n } else {\n assignValue(object, key, newValue);\n }\n }\n\n return object;\n}\n\nmodule.exports = copyObject;//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvbG9kYXNoL19jb3B5T2JqZWN0LmpzLmpzIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vU05MaWJyYXJ5Ly4vbm9kZV9tb2R1bGVzL2xvZGFzaC9fY29weU9iamVjdC5qcz84ZWViIl0sInNvdXJjZXNDb250ZW50IjpbIlwidXNlIHN0cmljdFwiO1xudmFyIGFzc2lnblZhbHVlID0gcmVxdWlyZSgnLi9fYXNzaWduVmFsdWUnKSwgYmFzZUFzc2lnblZhbHVlID0gcmVxdWlyZSgnLi9fYmFzZUFzc2lnblZhbHVlJyk7XG4vKipcbiAqIENvcGllcyBwcm9wZXJ0aWVzIG9mIGBzb3VyY2VgIHRvIGBvYmplY3RgLlxuICpcbiAqIEBwcml2YXRlXG4gKiBAcGFyYW0ge09iamVjdH0gc291cmNlIFRoZSBvYmplY3QgdG8gY29weSBwcm9wZXJ0aWVzIGZyb20uXG4gKiBAcGFyYW0ge0FycmF5fSBwcm9wcyBUaGUgcHJvcGVydHkgaWRlbnRpZmllcnMgdG8gY29weS5cbiAqIEBwYXJhbSB7T2JqZWN0fSBbb2JqZWN0PXt9XSBUaGUgb2JqZWN0IHRvIGNvcHkgcHJvcGVydGllcyB0by5cbiAqIEBwYXJhbSB7RnVuY3Rpb259IFtjdXN0b21pemVyXSBUaGUgZnVuY3Rpb24gdG8gY3VzdG9taXplIGNvcGllZCB2YWx1ZXMuXG4gKiBAcmV0dXJucyB7T2JqZWN0fSBSZXR1cm5zIGBvYmplY3RgLlxuICovXG5mdW5jdGlvbiBjb3B5T2JqZWN0KHNvdXJjZSwgcHJvcHMsIG9iamVjdCwgY3VzdG9taXplcikge1xuICAgIHZhciBpc05ldyA9ICFvYmplY3Q7XG4gICAgb2JqZWN0IHx8IChvYmplY3QgPSB7fSk7XG4gICAgdmFyIGluZGV4ID0gLTEsIGxlbmd0aCA9IHByb3BzLmxlbmd0aDtcbiAgICB3aGlsZSAoKytpbmRleCA8IGxlbmd0aCkge1xuICAgICAgICB2YXIga2V5ID0gcHJvcHNbaW5kZXhdO1xuICAgICAgICB2YXIgbmV3VmFsdWUgPSBjdXN0b21pemVyXG4gICAgICAgICAgICA/IGN1c3RvbWl6ZXIob2JqZWN0W2tleV0sIHNvdXJjZVtrZXldLCBrZXksIG9iamVjdCwgc291cmNlKVxuICAgICAgICAgICAgOiB1bmRlZmluZWQ7XG4gICAgICAgIGlmIChuZXdWYWx1ZSA9PT0gdW5kZWZpbmVkKSB7XG4gICAgICAgICAgICBuZXdWYWx1ZSA9IHNvdXJjZVtrZXldO1xuICAgICAgICB9XG4gICAgICAgIGlmIChpc05ldykge1xuICAgICAgICAgICAgYmFzZUFzc2lnblZhbHVlKG9iamVjdCwga2V5LCBuZXdWYWx1ZSk7XG4gICAgICAgIH1cbiAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICBhc3NpZ25WYWx1ZShvYmplY3QsIGtleSwgbmV3VmFsdWUpO1xuICAgICAgICB9XG4gICAgfVxuICAgIHJldHVybiBvYmplY3Q7XG59XG5tb2R1bGUuZXhwb3J0cyA9IGNvcHlPYmplY3Q7XG4iXSwibWFwcGluZ3MiOiJBQUFBO0FBQ0E7QUFBQTtBQUFBO0FBQ0E7Ozs7Ozs7Ozs7OztBQVVBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUFBIiwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./node_modules/lodash/_copyObject.js\n')},"./node_modules/lodash/_coreJsData.js":
|
||
/*!********************************************!*\
|
||
!*** ./node_modules/lodash/_coreJsData.js ***!
|
||
\********************************************/
|
||
/*! no static exports found */function(module,exports,__webpack_require__){"use strict";eval("\n\nvar root = __webpack_require__(/*! ./_root */ \"./node_modules/lodash/_root.js\");\n/** Used to detect overreaching core-js shims. */\n\n\nvar coreJsData = root['__core-js_shared__'];\nmodule.exports = coreJsData;//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvbG9kYXNoL19jb3JlSnNEYXRhLmpzLmpzIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vU05MaWJyYXJ5Ly4vbm9kZV9tb2R1bGVzL2xvZGFzaC9fY29yZUpzRGF0YS5qcz9kYTAzIl0sInNvdXJjZXNDb250ZW50IjpbIlwidXNlIHN0cmljdFwiO1xudmFyIHJvb3QgPSByZXF1aXJlKCcuL19yb290Jyk7XG4vKiogVXNlZCB0byBkZXRlY3Qgb3ZlcnJlYWNoaW5nIGNvcmUtanMgc2hpbXMuICovXG52YXIgY29yZUpzRGF0YSA9IHJvb3RbJ19fY29yZS1qc19zaGFyZWRfXyddO1xubW9kdWxlLmV4cG9ydHMgPSBjb3JlSnNEYXRhO1xuIl0sIm1hcHBpbmdzIjoiQUFBQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFEQTtBQUNBIiwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./node_modules/lodash/_coreJsData.js\n")},"./node_modules/lodash/_createAssigner.js":
|
||
/*!************************************************!*\
|
||
!*** ./node_modules/lodash/_createAssigner.js ***!
|
||
\************************************************/
|
||
/*! no static exports found */function(module,exports,__webpack_require__){"use strict";eval('\n\nvar baseRest = __webpack_require__(/*! ./_baseRest */ "./node_modules/lodash/_baseRest.js"),\n isIterateeCall = __webpack_require__(/*! ./_isIterateeCall */ "./node_modules/lodash/_isIterateeCall.js");\n/**\n * Creates a function like `_.assign`.\n *\n * @private\n * @param {Function} assigner The function to assign values.\n * @returns {Function} Returns the new assigner function.\n */\n\n\nfunction createAssigner(assigner) {\n return baseRest(function (object, sources) {\n var index = -1,\n length = sources.length,\n customizer = length > 1 ? sources[length - 1] : undefined,\n guard = length > 2 ? sources[2] : undefined;\n customizer = assigner.length > 3 && typeof customizer == \'function\' ? (length--, customizer) : undefined;\n\n if (guard && isIterateeCall(sources[0], sources[1], guard)) {\n customizer = length < 3 ? undefined : customizer;\n length = 1;\n }\n\n object = Object(object);\n\n while (++index < length) {\n var source = sources[index];\n\n if (source) {\n assigner(object, source, index, customizer);\n }\n }\n\n return object;\n });\n}\n\nmodule.exports = createAssigner;//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvbG9kYXNoL19jcmVhdGVBc3NpZ25lci5qcy5qcyIsInNvdXJjZXMiOlsid2VicGFjazovL1NOTGlicmFyeS8uL25vZGVfbW9kdWxlcy9sb2Rhc2gvX2NyZWF0ZUFzc2lnbmVyLmpzPzJlYzEiXSwic291cmNlc0NvbnRlbnQiOlsiXCJ1c2Ugc3RyaWN0XCI7XG52YXIgYmFzZVJlc3QgPSByZXF1aXJlKCcuL19iYXNlUmVzdCcpLCBpc0l0ZXJhdGVlQ2FsbCA9IHJlcXVpcmUoJy4vX2lzSXRlcmF0ZWVDYWxsJyk7XG4vKipcbiAqIENyZWF0ZXMgYSBmdW5jdGlvbiBsaWtlIGBfLmFzc2lnbmAuXG4gKlxuICogQHByaXZhdGVcbiAqIEBwYXJhbSB7RnVuY3Rpb259IGFzc2lnbmVyIFRoZSBmdW5jdGlvbiB0byBhc3NpZ24gdmFsdWVzLlxuICogQHJldHVybnMge0Z1bmN0aW9ufSBSZXR1cm5zIHRoZSBuZXcgYXNzaWduZXIgZnVuY3Rpb24uXG4gKi9cbmZ1bmN0aW9uIGNyZWF0ZUFzc2lnbmVyKGFzc2lnbmVyKSB7XG4gICAgcmV0dXJuIGJhc2VSZXN0KGZ1bmN0aW9uIChvYmplY3QsIHNvdXJjZXMpIHtcbiAgICAgICAgdmFyIGluZGV4ID0gLTEsIGxlbmd0aCA9IHNvdXJjZXMubGVuZ3RoLCBjdXN0b21pemVyID0gbGVuZ3RoID4gMSA/IHNvdXJjZXNbbGVuZ3RoIC0gMV0gOiB1bmRlZmluZWQsIGd1YXJkID0gbGVuZ3RoID4gMiA/IHNvdXJjZXNbMl0gOiB1bmRlZmluZWQ7XG4gICAgICAgIGN1c3RvbWl6ZXIgPSAoYXNzaWduZXIubGVuZ3RoID4gMyAmJiB0eXBlb2YgY3VzdG9taXplciA9PSAnZnVuY3Rpb24nKVxuICAgICAgICAgICAgPyAobGVuZ3RoLS0sIGN1c3RvbWl6ZXIpXG4gICAgICAgICAgICA6IHVuZGVmaW5lZDtcbiAgICAgICAgaWYgKGd1YXJkICYmIGlzSXRlcmF0ZWVDYWxsKHNvdXJjZXNbMF0sIHNvdXJjZXNbMV0sIGd1YXJkKSkge1xuICAgICAgICAgICAgY3VzdG9taXplciA9IGxlbmd0aCA8IDMgPyB1bmRlZmluZWQgOiBjdXN0b21pemVyO1xuICAgICAgICAgICAgbGVuZ3RoID0gMTtcbiAgICAgICAgfVxuICAgICAgICBvYmplY3QgPSBPYmplY3Qob2JqZWN0KTtcbiAgICAgICAgd2hpbGUgKCsraW5kZXggPCBsZW5ndGgpIHtcbiAgICAgICAgICAgIHZhciBzb3VyY2UgPSBzb3VyY2VzW2luZGV4XTtcbiAgICAgICAgICAgIGlmIChzb3VyY2UpIHtcbiAgICAgICAgICAgICAgICBhc3NpZ25lcihvYmplY3QsIHNvdXJjZSwgaW5kZXgsIGN1c3RvbWl6ZXIpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIHJldHVybiBvYmplY3Q7XG4gICAgfSk7XG59XG5tb2R1bGUuZXhwb3J0cyA9IGNyZWF0ZUFzc2lnbmVyO1xuIl0sIm1hcHBpbmdzIjoiQUFBQTtBQUNBO0FBQUE7QUFBQTtBQUNBOzs7Ozs7Ozs7QUFPQTtBQUNBO0FBQ0E7QUFBQTtBQUFBO0FBQUE7QUFDQTtBQUNBO0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFBQSIsInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./node_modules/lodash/_createAssigner.js\n')},"./node_modules/lodash/_createBaseFor.js":
|
||
/*!***********************************************!*\
|
||
!*** ./node_modules/lodash/_createBaseFor.js ***!
|
||
\***********************************************/
|
||
/*! no static exports found */function(module,exports,__webpack_require__){"use strict";eval("\n/**\n * Creates a base function for methods like `_.forIn` and `_.forOwn`.\n *\n * @private\n * @param {boolean} [fromRight] Specify iterating from right to left.\n * @returns {Function} Returns the new base function.\n */\n\nfunction createBaseFor(fromRight) {\n return function (object, iteratee, keysFunc) {\n var index = -1,\n iterable = Object(object),\n props = keysFunc(object),\n length = props.length;\n\n while (length--) {\n var key = props[fromRight ? length : ++index];\n\n if (iteratee(iterable[key], key, iterable) === false) {\n break;\n }\n }\n\n return object;\n };\n}\n\nmodule.exports = createBaseFor;//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvbG9kYXNoL19jcmVhdGVCYXNlRm9yLmpzLmpzIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vU05MaWJyYXJ5Ly4vbm9kZV9tb2R1bGVzL2xvZGFzaC9fY3JlYXRlQmFzZUZvci5qcz85OWNkIl0sInNvdXJjZXNDb250ZW50IjpbIlwidXNlIHN0cmljdFwiO1xuLyoqXG4gKiBDcmVhdGVzIGEgYmFzZSBmdW5jdGlvbiBmb3IgbWV0aG9kcyBsaWtlIGBfLmZvckluYCBhbmQgYF8uZm9yT3duYC5cbiAqXG4gKiBAcHJpdmF0ZVxuICogQHBhcmFtIHtib29sZWFufSBbZnJvbVJpZ2h0XSBTcGVjaWZ5IGl0ZXJhdGluZyBmcm9tIHJpZ2h0IHRvIGxlZnQuXG4gKiBAcmV0dXJucyB7RnVuY3Rpb259IFJldHVybnMgdGhlIG5ldyBiYXNlIGZ1bmN0aW9uLlxuICovXG5mdW5jdGlvbiBjcmVhdGVCYXNlRm9yKGZyb21SaWdodCkge1xuICAgIHJldHVybiBmdW5jdGlvbiAob2JqZWN0LCBpdGVyYXRlZSwga2V5c0Z1bmMpIHtcbiAgICAgICAgdmFyIGluZGV4ID0gLTEsIGl0ZXJhYmxlID0gT2JqZWN0KG9iamVjdCksIHByb3BzID0ga2V5c0Z1bmMob2JqZWN0KSwgbGVuZ3RoID0gcHJvcHMubGVuZ3RoO1xuICAgICAgICB3aGlsZSAobGVuZ3RoLS0pIHtcbiAgICAgICAgICAgIHZhciBrZXkgPSBwcm9wc1tmcm9tUmlnaHQgPyBsZW5ndGggOiArK2luZGV4XTtcbiAgICAgICAgICAgIGlmIChpdGVyYXRlZShpdGVyYWJsZVtrZXldLCBrZXksIGl0ZXJhYmxlKSA9PT0gZmFsc2UpIHtcbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gb2JqZWN0O1xuICAgIH07XG59XG5tb2R1bGUuZXhwb3J0cyA9IGNyZWF0ZUJhc2VGb3I7XG4iXSwibWFwcGluZ3MiOiJBQUFBO0FBQ0E7Ozs7Ozs7O0FBT0E7QUFDQTtBQUNBO0FBQUE7QUFBQTtBQUFBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFBQSIsInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./node_modules/lodash/_createBaseFor.js\n")},"./node_modules/lodash/_createFind.js":
|
||
/*!********************************************!*\
|
||
!*** ./node_modules/lodash/_createFind.js ***!
|
||
\********************************************/
|
||
/*! no static exports found */function(module,exports,__webpack_require__){"use strict";eval('\n\nvar baseIteratee = __webpack_require__(/*! ./_baseIteratee */ "./node_modules/lodash/_baseIteratee.js"),\n isArrayLike = __webpack_require__(/*! ./isArrayLike */ "./node_modules/lodash/isArrayLike.js"),\n keys = __webpack_require__(/*! ./keys */ "./node_modules/lodash/keys.js");\n/**\n * Creates a `_.find` or `_.findLast` function.\n *\n * @private\n * @param {Function} findIndexFunc The function to find the collection index.\n * @returns {Function} Returns the new find function.\n */\n\n\nfunction createFind(findIndexFunc) {\n return function (collection, predicate, fromIndex) {\n var iterable = Object(collection);\n\n if (!isArrayLike(collection)) {\n var iteratee = baseIteratee(predicate, 3);\n collection = keys(collection);\n\n predicate = function predicate(key) {\n return iteratee(iterable[key], key, iterable);\n };\n }\n\n var index = findIndexFunc(collection, predicate, fromIndex);\n return index > -1 ? iterable[iteratee ? collection[index] : index] : undefined;\n };\n}\n\nmodule.exports = createFind;//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvbG9kYXNoL19jcmVhdGVGaW5kLmpzLmpzIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vU05MaWJyYXJ5Ly4vbm9kZV9tb2R1bGVzL2xvZGFzaC9fY3JlYXRlRmluZC5qcz81Y2EwIl0sInNvdXJjZXNDb250ZW50IjpbIlwidXNlIHN0cmljdFwiO1xudmFyIGJhc2VJdGVyYXRlZSA9IHJlcXVpcmUoJy4vX2Jhc2VJdGVyYXRlZScpLCBpc0FycmF5TGlrZSA9IHJlcXVpcmUoJy4vaXNBcnJheUxpa2UnKSwga2V5cyA9IHJlcXVpcmUoJy4va2V5cycpO1xuLyoqXG4gKiBDcmVhdGVzIGEgYF8uZmluZGAgb3IgYF8uZmluZExhc3RgIGZ1bmN0aW9uLlxuICpcbiAqIEBwcml2YXRlXG4gKiBAcGFyYW0ge0Z1bmN0aW9ufSBmaW5kSW5kZXhGdW5jIFRoZSBmdW5jdGlvbiB0byBmaW5kIHRoZSBjb2xsZWN0aW9uIGluZGV4LlxuICogQHJldHVybnMge0Z1bmN0aW9ufSBSZXR1cm5zIHRoZSBuZXcgZmluZCBmdW5jdGlvbi5cbiAqL1xuZnVuY3Rpb24gY3JlYXRlRmluZChmaW5kSW5kZXhGdW5jKSB7XG4gICAgcmV0dXJuIGZ1bmN0aW9uIChjb2xsZWN0aW9uLCBwcmVkaWNhdGUsIGZyb21JbmRleCkge1xuICAgICAgICB2YXIgaXRlcmFibGUgPSBPYmplY3QoY29sbGVjdGlvbik7XG4gICAgICAgIGlmICghaXNBcnJheUxpa2UoY29sbGVjdGlvbikpIHtcbiAgICAgICAgICAgIHZhciBpdGVyYXRlZSA9IGJhc2VJdGVyYXRlZShwcmVkaWNhdGUsIDMpO1xuICAgICAgICAgICAgY29sbGVjdGlvbiA9IGtleXMoY29sbGVjdGlvbik7XG4gICAgICAgICAgICBwcmVkaWNhdGUgPSBmdW5jdGlvbiAoa2V5KSB7IHJldHVybiBpdGVyYXRlZShpdGVyYWJsZVtrZXldLCBrZXksIGl0ZXJhYmxlKTsgfTtcbiAgICAgICAgfVxuICAgICAgICB2YXIgaW5kZXggPSBmaW5kSW5kZXhGdW5jKGNvbGxlY3Rpb24sIHByZWRpY2F0ZSwgZnJvbUluZGV4KTtcbiAgICAgICAgcmV0dXJuIGluZGV4ID4gLTEgPyBpdGVyYWJsZVtpdGVyYXRlZSA/IGNvbGxlY3Rpb25baW5kZXhdIDogaW5kZXhdIDogdW5kZWZpbmVkO1xuICAgIH07XG59XG5tb2R1bGUuZXhwb3J0cyA9IGNyZWF0ZUZpbmQ7XG4iXSwibWFwcGluZ3MiOiJBQUFBO0FBQ0E7QUFBQTtBQUFBO0FBQUE7QUFDQTs7Ozs7Ozs7O0FBT0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQUE7QUFBQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUEiLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./node_modules/lodash/_createFind.js\n')},"./node_modules/lodash/_createSet.js":
|
||
/*!*******************************************!*\
|
||
!*** ./node_modules/lodash/_createSet.js ***!
|
||
\*******************************************/
|
||
/*! no static exports found */function(module,exports,__webpack_require__){"use strict";eval('\n\nvar Set = __webpack_require__(/*! ./_Set */ "./node_modules/lodash/_Set.js"),\n noop = __webpack_require__(/*! ./noop */ "./node_modules/lodash/noop.js"),\n setToArray = __webpack_require__(/*! ./_setToArray */ "./node_modules/lodash/_setToArray.js");\n/** Used as references for various `Number` constants. */\n\n\nvar INFINITY = 1 / 0;\n/**\n * Creates a set object of `values`.\n *\n * @private\n * @param {Array} values The values to add to the set.\n * @returns {Object} Returns the new set.\n */\n\nvar createSet = !(Set && 1 / setToArray(new Set([, -0]))[1] == INFINITY) ? noop : function (values) {\n return new Set(values);\n};\nmodule.exports = createSet;//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvbG9kYXNoL19jcmVhdGVTZXQuanMuanMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly9TTkxpYnJhcnkvLi9ub2RlX21vZHVsZXMvbG9kYXNoL19jcmVhdGVTZXQuanM/NzUwYSJdLCJzb3VyY2VzQ29udGVudCI6WyJcInVzZSBzdHJpY3RcIjtcbnZhciBTZXQgPSByZXF1aXJlKCcuL19TZXQnKSwgbm9vcCA9IHJlcXVpcmUoJy4vbm9vcCcpLCBzZXRUb0FycmF5ID0gcmVxdWlyZSgnLi9fc2V0VG9BcnJheScpO1xuLyoqIFVzZWQgYXMgcmVmZXJlbmNlcyBmb3IgdmFyaW91cyBgTnVtYmVyYCBjb25zdGFudHMuICovXG52YXIgSU5GSU5JVFkgPSAxIC8gMDtcbi8qKlxuICogQ3JlYXRlcyBhIHNldCBvYmplY3Qgb2YgYHZhbHVlc2AuXG4gKlxuICogQHByaXZhdGVcbiAqIEBwYXJhbSB7QXJyYXl9IHZhbHVlcyBUaGUgdmFsdWVzIHRvIGFkZCB0byB0aGUgc2V0LlxuICogQHJldHVybnMge09iamVjdH0gUmV0dXJucyB0aGUgbmV3IHNldC5cbiAqL1xudmFyIGNyZWF0ZVNldCA9ICEoU2V0ICYmICgxIC8gc2V0VG9BcnJheShuZXcgU2V0KFssIC0wXSkpWzFdKSA9PSBJTkZJTklUWSkgPyBub29wIDogZnVuY3Rpb24gKHZhbHVlcykge1xuICAgIHJldHVybiBuZXcgU2V0KHZhbHVlcyk7XG59O1xubW9kdWxlLmV4cG9ydHMgPSBjcmVhdGVTZXQ7XG4iXSwibWFwcGluZ3MiOiJBQUFBO0FBQ0E7QUFBQTtBQUFBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFEQTtBQUNBOzs7Ozs7OztBQU9BO0FBQ0E7QUFDQTtBQUNBIiwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./node_modules/lodash/_createSet.js\n')},"./node_modules/lodash/_defineProperty.js":
|
||
/*!************************************************!*\
|
||
!*** ./node_modules/lodash/_defineProperty.js ***!
|
||
\************************************************/
|
||
/*! no static exports found */function(module,exports,__webpack_require__){"use strict";eval("\n\nvar getNative = __webpack_require__(/*! ./_getNative */ \"./node_modules/lodash/_getNative.js\");\n\nvar defineProperty = function () {\n try {\n var func = getNative(Object, 'defineProperty');\n func({}, '', {});\n return func;\n } catch (e) {}\n}();\n\nmodule.exports = defineProperty;//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvbG9kYXNoL19kZWZpbmVQcm9wZXJ0eS5qcy5qcyIsInNvdXJjZXMiOlsid2VicGFjazovL1NOTGlicmFyeS8uL25vZGVfbW9kdWxlcy9sb2Rhc2gvX2RlZmluZVByb3BlcnR5LmpzPzNiNGEiXSwic291cmNlc0NvbnRlbnQiOlsiXCJ1c2Ugc3RyaWN0XCI7XG52YXIgZ2V0TmF0aXZlID0gcmVxdWlyZSgnLi9fZ2V0TmF0aXZlJyk7XG52YXIgZGVmaW5lUHJvcGVydHkgPSAoZnVuY3Rpb24gKCkge1xuICAgIHRyeSB7XG4gICAgICAgIHZhciBmdW5jID0gZ2V0TmF0aXZlKE9iamVjdCwgJ2RlZmluZVByb3BlcnR5Jyk7XG4gICAgICAgIGZ1bmMoe30sICcnLCB7fSk7XG4gICAgICAgIHJldHVybiBmdW5jO1xuICAgIH1cbiAgICBjYXRjaCAoZSkgeyB9XG59KCkpO1xubW9kdWxlLmV4cG9ydHMgPSBkZWZpbmVQcm9wZXJ0eTtcbiJdLCJtYXBwaW5ncyI6IkFBQUE7QUFDQTtBQUFBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFFQTtBQUNBO0FBQUEiLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./node_modules/lodash/_defineProperty.js\n")},"./node_modules/lodash/_equalArrays.js":
|
||
/*!*********************************************!*\
|
||
!*** ./node_modules/lodash/_equalArrays.js ***!
|
||
\*********************************************/
|
||
/*! no static exports found */function(module,exports,__webpack_require__){"use strict";eval('\n\nvar SetCache = __webpack_require__(/*! ./_SetCache */ "./node_modules/lodash/_SetCache.js"),\n arraySome = __webpack_require__(/*! ./_arraySome */ "./node_modules/lodash/_arraySome.js"),\n cacheHas = __webpack_require__(/*! ./_cacheHas */ "./node_modules/lodash/_cacheHas.js");\n/** Used to compose bitmasks for value comparisons. */\n\n\nvar COMPARE_PARTIAL_FLAG = 1,\n COMPARE_UNORDERED_FLAG = 2;\n/**\n * A specialized version of `baseIsEqualDeep` for arrays with support for\n * partial deep comparisons.\n *\n * @private\n * @param {Array} array The array to compare.\n * @param {Array} other The other array to compare.\n * @param {number} bitmask The bitmask flags. See `baseIsEqual` for more details.\n * @param {Function} customizer The function to customize comparisons.\n * @param {Function} equalFunc The function to determine equivalents of values.\n * @param {Object} stack Tracks traversed `array` and `other` objects.\n * @returns {boolean} Returns `true` if the arrays are equivalent, else `false`.\n */\n\nfunction equalArrays(array, other, bitmask, customizer, equalFunc, stack) {\n var isPartial = bitmask & COMPARE_PARTIAL_FLAG,\n arrLength = array.length,\n othLength = other.length;\n\n if (arrLength != othLength && !(isPartial && othLength > arrLength)) {\n return false;\n } // Assume cyclic values are equal.\n\n\n var stacked = stack.get(array);\n\n if (stacked && stack.get(other)) {\n return stacked == other;\n }\n\n var index = -1,\n result = true,\n seen = bitmask & COMPARE_UNORDERED_FLAG ? new SetCache() : undefined;\n stack.set(array, other);\n stack.set(other, array); // Ignore non-index properties.\n\n while (++index < arrLength) {\n var arrValue = array[index],\n othValue = other[index];\n\n if (customizer) {\n var compared = isPartial ? customizer(othValue, arrValue, index, other, array, stack) : customizer(arrValue, othValue, index, array, other, stack);\n }\n\n if (compared !== undefined) {\n if (compared) {\n continue;\n }\n\n result = false;\n break;\n } // Recursively compare arrays (susceptible to call stack limits).\n\n\n if (seen) {\n if (!arraySome(other, function (othValue, othIndex) {\n if (!cacheHas(seen, othIndex) && (arrValue === othValue || equalFunc(arrValue, othValue, bitmask, customizer, stack))) {\n return seen.push(othIndex);\n }\n })) {\n result = false;\n break;\n }\n } else if (!(arrValue === othValue || equalFunc(arrValue, othValue, bitmask, customizer, stack))) {\n result = false;\n break;\n }\n }\n\n stack[\'delete\'](array);\n stack[\'delete\'](other);\n return result;\n}\n\nmodule.exports = equalArrays;//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvbG9kYXNoL19lcXVhbEFycmF5cy5qcy5qcyIsInNvdXJjZXMiOlsid2VicGFjazovL1NOTGlicmFyeS8uL25vZGVfbW9kdWxlcy9sb2Rhc2gvX2VxdWFsQXJyYXlzLmpzP2EyYmUiXSwic291cmNlc0NvbnRlbnQiOlsiXCJ1c2Ugc3RyaWN0XCI7XG52YXIgU2V0Q2FjaGUgPSByZXF1aXJlKCcuL19TZXRDYWNoZScpLCBhcnJheVNvbWUgPSByZXF1aXJlKCcuL19hcnJheVNvbWUnKSwgY2FjaGVIYXMgPSByZXF1aXJlKCcuL19jYWNoZUhhcycpO1xuLyoqIFVzZWQgdG8gY29tcG9zZSBiaXRtYXNrcyBmb3IgdmFsdWUgY29tcGFyaXNvbnMuICovXG52YXIgQ09NUEFSRV9QQVJUSUFMX0ZMQUcgPSAxLCBDT01QQVJFX1VOT1JERVJFRF9GTEFHID0gMjtcbi8qKlxuICogQSBzcGVjaWFsaXplZCB2ZXJzaW9uIG9mIGBiYXNlSXNFcXVhbERlZXBgIGZvciBhcnJheXMgd2l0aCBzdXBwb3J0IGZvclxuICogcGFydGlhbCBkZWVwIGNvbXBhcmlzb25zLlxuICpcbiAqIEBwcml2YXRlXG4gKiBAcGFyYW0ge0FycmF5fSBhcnJheSBUaGUgYXJyYXkgdG8gY29tcGFyZS5cbiAqIEBwYXJhbSB7QXJyYXl9IG90aGVyIFRoZSBvdGhlciBhcnJheSB0byBjb21wYXJlLlxuICogQHBhcmFtIHtudW1iZXJ9IGJpdG1hc2sgVGhlIGJpdG1hc2sgZmxhZ3MuIFNlZSBgYmFzZUlzRXF1YWxgIGZvciBtb3JlIGRldGFpbHMuXG4gKiBAcGFyYW0ge0Z1bmN0aW9ufSBjdXN0b21pemVyIFRoZSBmdW5jdGlvbiB0byBjdXN0b21pemUgY29tcGFyaXNvbnMuXG4gKiBAcGFyYW0ge0Z1bmN0aW9ufSBlcXVhbEZ1bmMgVGhlIGZ1bmN0aW9uIHRvIGRldGVybWluZSBlcXVpdmFsZW50cyBvZiB2YWx1ZXMuXG4gKiBAcGFyYW0ge09iamVjdH0gc3RhY2sgVHJhY2tzIHRyYXZlcnNlZCBgYXJyYXlgIGFuZCBgb3RoZXJgIG9iamVjdHMuXG4gKiBAcmV0dXJucyB7Ym9vbGVhbn0gUmV0dXJucyBgdHJ1ZWAgaWYgdGhlIGFycmF5cyBhcmUgZXF1aXZhbGVudCwgZWxzZSBgZmFsc2VgLlxuICovXG5mdW5jdGlvbiBlcXVhbEFycmF5cyhhcnJheSwgb3RoZXIsIGJpdG1hc2ssIGN1c3RvbWl6ZXIsIGVxdWFsRnVuYywgc3RhY2spIHtcbiAgICB2YXIgaXNQYXJ0aWFsID0gYml0bWFzayAmIENPTVBBUkVfUEFSVElBTF9GTEFHLCBhcnJMZW5ndGggPSBhcnJheS5sZW5ndGgsIG90aExlbmd0aCA9IG90aGVyLmxlbmd0aDtcbiAgICBpZiAoYXJyTGVuZ3RoICE9IG90aExlbmd0aCAmJiAhKGlzUGFydGlhbCAmJiBvdGhMZW5ndGggPiBhcnJMZW5ndGgpKSB7XG4gICAgICAgIHJldHVybiBmYWxzZTtcbiAgICB9XG4gICAgLy8gQXNzdW1lIGN5Y2xpYyB2YWx1ZXMgYXJlIGVxdWFsLlxuICAgIHZhciBzdGFja2VkID0gc3RhY2suZ2V0KGFycmF5KTtcbiAgICBpZiAoc3RhY2tlZCAmJiBzdGFjay5nZXQob3RoZXIpKSB7XG4gICAgICAgIHJldHVybiBzdGFja2VkID09IG90aGVyO1xuICAgIH1cbiAgICB2YXIgaW5kZXggPSAtMSwgcmVzdWx0ID0gdHJ1ZSwgc2VlbiA9IChiaXRtYXNrICYgQ09NUEFSRV9VTk9SREVSRURfRkxBRykgPyBuZXcgU2V0Q2FjaGUgOiB1bmRlZmluZWQ7XG4gICAgc3RhY2suc2V0KGFycmF5LCBvdGhlcik7XG4gICAgc3RhY2suc2V0KG90aGVyLCBhcnJheSk7XG4gICAgLy8gSWdub3JlIG5vbi1pbmRleCBwcm9wZXJ0aWVzLlxuICAgIHdoaWxlICgrK2luZGV4IDwgYXJyTGVuZ3RoKSB7XG4gICAgICAgIHZhciBhcnJWYWx1ZSA9IGFycmF5W2luZGV4XSwgb3RoVmFsdWUgPSBvdGhlcltpbmRleF07XG4gICAgICAgIGlmIChjdXN0b21pemVyKSB7XG4gICAgICAgICAgICB2YXIgY29tcGFyZWQgPSBpc1BhcnRpYWxcbiAgICAgICAgICAgICAgICA/IGN1c3RvbWl6ZXIob3RoVmFsdWUsIGFyclZhbHVlLCBpbmRleCwgb3RoZXIsIGFycmF5LCBzdGFjaylcbiAgICAgICAgICAgICAgICA6IGN1c3RvbWl6ZXIoYXJyVmFsdWUsIG90aFZhbHVlLCBpbmRleCwgYXJyYXksIG90aGVyLCBzdGFjayk7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKGNvbXBhcmVkICE9PSB1bmRlZmluZWQpIHtcbiAgICAgICAgICAgIGlmIChjb21wYXJlZCkge1xuICAgICAgICAgICAgICAgIGNvbnRpbnVlO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgcmVzdWx0ID0gZmFsc2U7XG4gICAgICAgICAgICBicmVhaztcbiAgICAgICAgfVxuICAgICAgICAvLyBSZWN1cnNpdmVseSBjb21wYXJlIGFycmF5cyAoc3VzY2VwdGlibGUgdG8gY2FsbCBzdGFjayBsaW1pdHMpLlxuICAgICAgICBpZiAoc2Vlbikge1xuICAgICAgICAgICAgaWYgKCFhcnJheVNvbWUob3RoZXIsIGZ1bmN0aW9uIChvdGhWYWx1ZSwgb3RoSW5kZXgpIHtcbiAgICAgICAgICAgICAgICBpZiAoIWNhY2hlSGFzKHNlZW4sIG90aEluZGV4KSAmJlxuICAgICAgICAgICAgICAgICAgICAoYXJyVmFsdWUgPT09IG90aFZhbHVlIHx8IGVxdWFsRnVuYyhhcnJWYWx1ZSwgb3RoVmFsdWUsIGJpdG1hc2ssIGN1c3RvbWl6ZXIsIHN0YWNrKSkpIHtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHNlZW4ucHVzaChvdGhJbmRleCk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSkpIHtcbiAgICAgICAgICAgICAgICByZXN1bHQgPSBmYWxzZTtcbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICBlbHNlIGlmICghKGFyclZhbHVlID09PSBvdGhWYWx1ZSB8fFxuICAgICAgICAgICAgZXF1YWxGdW5jKGFyclZhbHVlLCBvdGhWYWx1ZSwgYml0bWFzaywgY3VzdG9taXplciwgc3RhY2spKSkge1xuICAgICAgICAgICAgcmVzdWx0ID0gZmFsc2U7XG4gICAgICAgICAgICBicmVhaztcbiAgICAgICAgfVxuICAgIH1cbiAgICBzdGFja1snZGVsZXRlJ10oYXJyYXkpO1xuICAgIHN0YWNrWydkZWxldGUnXShvdGhlcik7XG4gICAgcmV0dXJuIHJlc3VsdDtcbn1cbm1vZHVsZS5leHBvcnRzID0gZXF1YWxBcnJheXM7XG4iXSwibWFwcGluZ3MiOiJBQUFBO0FBQ0E7QUFBQTtBQUFBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFEQTtBQUFBO0FBQ0E7Ozs7Ozs7Ozs7Ozs7O0FBYUE7QUFDQTtBQUFBO0FBQUE7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUFBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUFBO0FBQ0E7QUFHQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUdBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUEiLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./node_modules/lodash/_equalArrays.js\n')},"./node_modules/lodash/_equalByTag.js":
|
||
/*!********************************************!*\
|
||
!*** ./node_modules/lodash/_equalByTag.js ***!
|
||
\********************************************/
|
||
/*! no static exports found */function(module,exports,__webpack_require__){"use strict";eval("\n\nvar _Symbol = __webpack_require__(/*! ./_Symbol */ \"./node_modules/lodash/_Symbol.js\"),\n Uint8Array = __webpack_require__(/*! ./_Uint8Array */ \"./node_modules/lodash/_Uint8Array.js\"),\n eq = __webpack_require__(/*! ./eq */ \"./node_modules/lodash/eq.js\"),\n equalArrays = __webpack_require__(/*! ./_equalArrays */ \"./node_modules/lodash/_equalArrays.js\"),\n mapToArray = __webpack_require__(/*! ./_mapToArray */ \"./node_modules/lodash/_mapToArray.js\"),\n setToArray = __webpack_require__(/*! ./_setToArray */ \"./node_modules/lodash/_setToArray.js\");\n/** Used to compose bitmasks for value comparisons. */\n\n\nvar COMPARE_PARTIAL_FLAG = 1,\n COMPARE_UNORDERED_FLAG = 2;\n/** `Object#toString` result references. */\n\nvar boolTag = '[object Boolean]',\n dateTag = '[object Date]',\n errorTag = '[object Error]',\n mapTag = '[object Map]',\n numberTag = '[object Number]',\n regexpTag = '[object RegExp]',\n setTag = '[object Set]',\n stringTag = '[object String]',\n symbolTag = '[object Symbol]';\nvar arrayBufferTag = '[object ArrayBuffer]',\n dataViewTag = '[object DataView]';\n/** Used to convert symbols to primitives and strings. */\n\nvar symbolProto = _Symbol ? _Symbol.prototype : undefined,\n symbolValueOf = symbolProto ? symbolProto.valueOf : undefined;\n/**\n * A specialized version of `baseIsEqualDeep` for comparing objects of\n * the same `toStringTag`.\n *\n * **Note:** This function only supports comparing values with tags of\n * `Boolean`, `Date`, `Error`, `Number`, `RegExp`, or `String`.\n *\n * @private\n * @param {Object} object The object to compare.\n * @param {Object} other The other object to compare.\n * @param {string} tag The `toStringTag` of the objects to compare.\n * @param {number} bitmask The bitmask flags. See `baseIsEqual` for more details.\n * @param {Function} customizer The function to customize comparisons.\n * @param {Function} equalFunc The function to determine equivalents of values.\n * @param {Object} stack Tracks traversed `object` and `other` objects.\n * @returns {boolean} Returns `true` if the objects are equivalent, else `false`.\n */\n\nfunction equalByTag(object, other, tag, bitmask, customizer, equalFunc, stack) {\n switch (tag) {\n case dataViewTag:\n if (object.byteLength != other.byteLength || object.byteOffset != other.byteOffset) {\n return false;\n }\n\n object = object.buffer;\n other = other.buffer;\n\n case arrayBufferTag:\n if (object.byteLength != other.byteLength || !equalFunc(new Uint8Array(object), new Uint8Array(other))) {\n return false;\n }\n\n return true;\n\n case boolTag:\n case dateTag:\n case numberTag:\n // Coerce booleans to `1` or `0` and dates to milliseconds.\n // Invalid dates are coerced to `NaN`.\n return eq(+object, +other);\n\n case errorTag:\n return object.name == other.name && object.message == other.message;\n\n case regexpTag:\n case stringTag:\n // Coerce regexes to strings and treat strings, primitives and objects,\n // as equal. See http://www.ecma-international.org/ecma-262/7.0/#sec-regexp.prototype.tostring\n // for more details.\n return object == other + '';\n\n case mapTag:\n var convert = mapToArray;\n\n case setTag:\n var isPartial = bitmask & COMPARE_PARTIAL_FLAG;\n convert || (convert = setToArray);\n\n if (object.size != other.size && !isPartial) {\n return false;\n } // Assume cyclic values are equal.\n\n\n var stacked = stack.get(object);\n\n if (stacked) {\n return stacked == other;\n }\n\n bitmask |= COMPARE_UNORDERED_FLAG; // Recursively compare objects (susceptible to call stack limits).\n\n stack.set(object, other);\n var result = equalArrays(convert(object), convert(other), bitmask, customizer, equalFunc, stack);\n stack['delete'](object);\n return result;\n\n case symbolTag:\n if (symbolValueOf) {\n return symbolValueOf.call(object) == symbolValueOf.call(other);\n }\n\n }\n\n return false;\n}\n\nmodule.exports = equalByTag;//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvbG9kYXNoL19lcXVhbEJ5VGFnLmpzLmpzIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vU05MaWJyYXJ5Ly4vbm9kZV9tb2R1bGVzL2xvZGFzaC9fZXF1YWxCeVRhZy5qcz8xYzNjIl0sInNvdXJjZXNDb250ZW50IjpbIlwidXNlIHN0cmljdFwiO1xudmFyIFN5bWJvbCA9IHJlcXVpcmUoJy4vX1N5bWJvbCcpLCBVaW50OEFycmF5ID0gcmVxdWlyZSgnLi9fVWludDhBcnJheScpLCBlcSA9IHJlcXVpcmUoJy4vZXEnKSwgZXF1YWxBcnJheXMgPSByZXF1aXJlKCcuL19lcXVhbEFycmF5cycpLCBtYXBUb0FycmF5ID0gcmVxdWlyZSgnLi9fbWFwVG9BcnJheScpLCBzZXRUb0FycmF5ID0gcmVxdWlyZSgnLi9fc2V0VG9BcnJheScpO1xuLyoqIFVzZWQgdG8gY29tcG9zZSBiaXRtYXNrcyBmb3IgdmFsdWUgY29tcGFyaXNvbnMuICovXG52YXIgQ09NUEFSRV9QQVJUSUFMX0ZMQUcgPSAxLCBDT01QQVJFX1VOT1JERVJFRF9GTEFHID0gMjtcbi8qKiBgT2JqZWN0I3RvU3RyaW5nYCByZXN1bHQgcmVmZXJlbmNlcy4gKi9cbnZhciBib29sVGFnID0gJ1tvYmplY3QgQm9vbGVhbl0nLCBkYXRlVGFnID0gJ1tvYmplY3QgRGF0ZV0nLCBlcnJvclRhZyA9ICdbb2JqZWN0IEVycm9yXScsIG1hcFRhZyA9ICdbb2JqZWN0IE1hcF0nLCBudW1iZXJUYWcgPSAnW29iamVjdCBOdW1iZXJdJywgcmVnZXhwVGFnID0gJ1tvYmplY3QgUmVnRXhwXScsIHNldFRhZyA9ICdbb2JqZWN0IFNldF0nLCBzdHJpbmdUYWcgPSAnW29iamVjdCBTdHJpbmddJywgc3ltYm9sVGFnID0gJ1tvYmplY3QgU3ltYm9sXSc7XG52YXIgYXJyYXlCdWZmZXJUYWcgPSAnW29iamVjdCBBcnJheUJ1ZmZlcl0nLCBkYXRhVmlld1RhZyA9ICdbb2JqZWN0IERhdGFWaWV3XSc7XG4vKiogVXNlZCB0byBjb252ZXJ0IHN5bWJvbHMgdG8gcHJpbWl0aXZlcyBhbmQgc3RyaW5ncy4gKi9cbnZhciBzeW1ib2xQcm90byA9IFN5bWJvbCA/IFN5bWJvbC5wcm90b3R5cGUgOiB1bmRlZmluZWQsIHN5bWJvbFZhbHVlT2YgPSBzeW1ib2xQcm90byA/IHN5bWJvbFByb3RvLnZhbHVlT2YgOiB1bmRlZmluZWQ7XG4vKipcbiAqIEEgc3BlY2lhbGl6ZWQgdmVyc2lvbiBvZiBgYmFzZUlzRXF1YWxEZWVwYCBmb3IgY29tcGFyaW5nIG9iamVjdHMgb2ZcbiAqIHRoZSBzYW1lIGB0b1N0cmluZ1RhZ2AuXG4gKlxuICogKipOb3RlOioqIFRoaXMgZnVuY3Rpb24gb25seSBzdXBwb3J0cyBjb21wYXJpbmcgdmFsdWVzIHdpdGggdGFncyBvZlxuICogYEJvb2xlYW5gLCBgRGF0ZWAsIGBFcnJvcmAsIGBOdW1iZXJgLCBgUmVnRXhwYCwgb3IgYFN0cmluZ2AuXG4gKlxuICogQHByaXZhdGVcbiAqIEBwYXJhbSB7T2JqZWN0fSBvYmplY3QgVGhlIG9iamVjdCB0byBjb21wYXJlLlxuICogQHBhcmFtIHtPYmplY3R9IG90aGVyIFRoZSBvdGhlciBvYmplY3QgdG8gY29tcGFyZS5cbiAqIEBwYXJhbSB7c3RyaW5nfSB0YWcgVGhlIGB0b1N0cmluZ1RhZ2Agb2YgdGhlIG9iamVjdHMgdG8gY29tcGFyZS5cbiAqIEBwYXJhbSB7bnVtYmVyfSBiaXRtYXNrIFRoZSBiaXRtYXNrIGZsYWdzLiBTZWUgYGJhc2VJc0VxdWFsYCBmb3IgbW9yZSBkZXRhaWxzLlxuICogQHBhcmFtIHtGdW5jdGlvbn0gY3VzdG9taXplciBUaGUgZnVuY3Rpb24gdG8gY3VzdG9taXplIGNvbXBhcmlzb25zLlxuICogQHBhcmFtIHtGdW5jdGlvbn0gZXF1YWxGdW5jIFRoZSBmdW5jdGlvbiB0byBkZXRlcm1pbmUgZXF1aXZhbGVudHMgb2YgdmFsdWVzLlxuICogQHBhcmFtIHtPYmplY3R9IHN0YWNrIFRyYWNrcyB0cmF2ZXJzZWQgYG9iamVjdGAgYW5kIGBvdGhlcmAgb2JqZWN0cy5cbiAqIEByZXR1cm5zIHtib29sZWFufSBSZXR1cm5zIGB0cnVlYCBpZiB0aGUgb2JqZWN0cyBhcmUgZXF1aXZhbGVudCwgZWxzZSBgZmFsc2VgLlxuICovXG5mdW5jdGlvbiBlcXVhbEJ5VGFnKG9iamVjdCwgb3RoZXIsIHRhZywgYml0bWFzaywgY3VzdG9taXplciwgZXF1YWxGdW5jLCBzdGFjaykge1xuICAgIHN3aXRjaCAodGFnKSB7XG4gICAgICAgIGNhc2UgZGF0YVZpZXdUYWc6XG4gICAgICAgICAgICBpZiAoKG9iamVjdC5ieXRlTGVuZ3RoICE9IG90aGVyLmJ5dGVMZW5ndGgpIHx8XG4gICAgICAgICAgICAgICAgKG9iamVjdC5ieXRlT2Zmc2V0ICE9IG90aGVyLmJ5dGVPZmZzZXQpKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgb2JqZWN0ID0gb2JqZWN0LmJ1ZmZlcjtcbiAgICAgICAgICAgIG90aGVyID0gb3RoZXIuYnVmZmVyO1xuICAgICAgICBjYXNlIGFycmF5QnVmZmVyVGFnOlxuICAgICAgICAgICAgaWYgKChvYmplY3QuYnl0ZUxlbmd0aCAhPSBvdGhlci5ieXRlTGVuZ3RoKSB8fFxuICAgICAgICAgICAgICAgICFlcXVhbEZ1bmMobmV3IFVpbnQ4QXJyYXkob2JqZWN0KSwgbmV3IFVpbnQ4QXJyYXkob3RoZXIpKSkge1xuICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHJldHVybiB0cnVlO1xuICAgICAgICBjYXNlIGJvb2xUYWc6XG4gICAgICAgIGNhc2UgZGF0ZVRhZzpcbiAgICAgICAgY2FzZSBudW1iZXJUYWc6XG4gICAgICAgICAgICAvLyBDb2VyY2UgYm9vbGVhbnMgdG8gYDFgIG9yIGAwYCBhbmQgZGF0ZXMgdG8gbWlsbGlzZWNvbmRzLlxuICAgICAgICAgICAgLy8gSW52YWxpZCBkYXRlcyBhcmUgY29lcmNlZCB0byBgTmFOYC5cbiAgICAgICAgICAgIHJldHVybiBlcSgrb2JqZWN0LCArb3RoZXIpO1xuICAgICAgICBjYXNlIGVycm9yVGFnOlxuICAgICAgICAgICAgcmV0dXJuIG9iamVjdC5uYW1lID09IG90aGVyLm5hbWUgJiYgb2JqZWN0Lm1lc3NhZ2UgPT0gb3RoZXIubWVzc2FnZTtcbiAgICAgICAgY2FzZSByZWdleHBUYWc6XG4gICAgICAgIGNhc2Ugc3RyaW5nVGFnOlxuICAgICAgICAgICAgLy8gQ29lcmNlIHJlZ2V4ZXMgdG8gc3RyaW5ncyBhbmQgdHJlYXQgc3RyaW5ncywgcHJpbWl0aXZlcyBhbmQgb2JqZWN0cyxcbiAgICAgICAgICAgIC8vIGFzIGVxdWFsLiBTZWUgaHR0cDovL3d3dy5lY21hLWludGVybmF0aW9uYWwub3JnL2VjbWEtMjYyLzcuMC8jc2VjLXJlZ2V4cC5wcm90b3R5cGUudG9zdHJpbmdcbiAgICAgICAgICAgIC8vIGZvciBtb3JlIGRldGFpbHMuXG4gICAgICAgICAgICByZXR1cm4gb2JqZWN0ID09IChvdGhlciArICcnKTtcbiAgICAgICAgY2FzZSBtYXBUYWc6XG4gICAgICAgICAgICB2YXIgY29udmVydCA9IG1hcFRvQXJyYXk7XG4gICAgICAgIGNhc2Ugc2V0VGFnOlxuICAgICAgICAgICAgdmFyIGlzUGFydGlhbCA9IGJpdG1hc2sgJiBDT01QQVJFX1BBUlRJQUxfRkxBRztcbiAgICAgICAgICAgIGNvbnZlcnQgfHwgKGNvbnZlcnQgPSBzZXRUb0FycmF5KTtcbiAgICAgICAgICAgIGlmIChvYmplY3Quc2l6ZSAhPSBvdGhlci5zaXplICYmICFpc1BhcnRpYWwpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICAvLyBBc3N1bWUgY3ljbGljIHZhbHVlcyBhcmUgZXF1YWwuXG4gICAgICAgICAgICB2YXIgc3RhY2tlZCA9IHN0YWNrLmdldChvYmplY3QpO1xuICAgICAgICAgICAgaWYgKHN0YWNrZWQpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gc3RhY2tlZCA9PSBvdGhlcjtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGJpdG1hc2sgfD0gQ09NUEFSRV9VTk9SREVSRURfRkxBRztcbiAgICAgICAgICAgIC8vIFJlY3Vyc2l2ZWx5IGNvbXBhcmUgb2JqZWN0cyAoc3VzY2VwdGlibGUgdG8gY2FsbCBzdGFjayBsaW1pdHMpLlxuICAgICAgICAgICAgc3RhY2suc2V0KG9iamVjdCwgb3RoZXIpO1xuICAgICAgICAgICAgdmFyIHJlc3VsdCA9IGVxdWFsQXJyYXlzKGNvbnZlcnQob2JqZWN0KSwgY29udmVydChvdGhlciksIGJpdG1hc2ssIGN1c3RvbWl6ZXIsIGVxdWFsRnVuYywgc3RhY2spO1xuICAgICAgICAgICAgc3RhY2tbJ2RlbGV0ZSddKG9iamVjdCk7XG4gICAgICAgICAgICByZXR1cm4gcmVzdWx0O1xuICAgICAgICBjYXNlIHN5bWJvbFRhZzpcbiAgICAgICAgICAgIGlmIChzeW1ib2xWYWx1ZU9mKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIHN5bWJvbFZhbHVlT2YuY2FsbChvYmplY3QpID09IHN5bWJvbFZhbHVlT2YuY2FsbChvdGhlcik7XG4gICAgICAgICAgICB9XG4gICAgfVxuICAgIHJldHVybiBmYWxzZTtcbn1cbm1vZHVsZS5leHBvcnRzID0gZXF1YWxCeVRhZztcbiJdLCJtYXBwaW5ncyI6IkFBQUE7QUFDQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQURBO0FBQUE7QUFDQTtBQUNBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFBQTtBQUFBO0FBQ0E7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQWlCQTtBQUNBO0FBQ0E7QUFDQTtBQUVBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFFQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQW5EQTtBQUNBO0FBbURBO0FBQ0E7QUFDQTtBQUFBIiwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./node_modules/lodash/_equalByTag.js\n")},"./node_modules/lodash/_equalObjects.js":
|
||
/*!**********************************************!*\
|
||
!*** ./node_modules/lodash/_equalObjects.js ***!
|
||
\**********************************************/
|
||
/*! no static exports found */function(module,exports,__webpack_require__){"use strict";eval("\n\nvar getAllKeys = __webpack_require__(/*! ./_getAllKeys */ \"./node_modules/lodash/_getAllKeys.js\");\n/** Used to compose bitmasks for value comparisons. */\n\n\nvar COMPARE_PARTIAL_FLAG = 1;\n/** Used for built-in method references. */\n\nvar objectProto = Object.prototype;\n/** Used to check objects for own properties. */\n\nvar hasOwnProperty = objectProto.hasOwnProperty;\n/**\n * A specialized version of `baseIsEqualDeep` for objects with support for\n * partial deep comparisons.\n *\n * @private\n * @param {Object} object The object to compare.\n * @param {Object} other The other object to compare.\n * @param {number} bitmask The bitmask flags. See `baseIsEqual` for more details.\n * @param {Function} customizer The function to customize comparisons.\n * @param {Function} equalFunc The function to determine equivalents of values.\n * @param {Object} stack Tracks traversed `object` and `other` objects.\n * @returns {boolean} Returns `true` if the objects are equivalent, else `false`.\n */\n\nfunction equalObjects(object, other, bitmask, customizer, equalFunc, stack) {\n var isPartial = bitmask & COMPARE_PARTIAL_FLAG,\n objProps = getAllKeys(object),\n objLength = objProps.length,\n othProps = getAllKeys(other),\n othLength = othProps.length;\n\n if (objLength != othLength && !isPartial) {\n return false;\n }\n\n var index = objLength;\n\n while (index--) {\n var key = objProps[index];\n\n if (!(isPartial ? key in other : hasOwnProperty.call(other, key))) {\n return false;\n }\n } // Assume cyclic values are equal.\n\n\n var stacked = stack.get(object);\n\n if (stacked && stack.get(other)) {\n return stacked == other;\n }\n\n var result = true;\n stack.set(object, other);\n stack.set(other, object);\n var skipCtor = isPartial;\n\n while (++index < objLength) {\n key = objProps[index];\n var objValue = object[key],\n othValue = other[key];\n\n if (customizer) {\n var compared = isPartial ? customizer(othValue, objValue, key, other, object, stack) : customizer(objValue, othValue, key, object, other, stack);\n } // Recursively compare objects (susceptible to call stack limits).\n\n\n if (!(compared === undefined ? objValue === othValue || equalFunc(objValue, othValue, bitmask, customizer, stack) : compared)) {\n result = false;\n break;\n }\n\n skipCtor || (skipCtor = key == 'constructor');\n }\n\n if (result && !skipCtor) {\n var objCtor = object.constructor,\n othCtor = other.constructor; // Non `Object` object instances with different constructors are not equal.\n\n if (objCtor != othCtor && 'constructor' in object && 'constructor' in other && !(typeof objCtor == 'function' && objCtor instanceof objCtor && typeof othCtor == 'function' && othCtor instanceof othCtor)) {\n result = false;\n }\n }\n\n stack['delete'](object);\n stack['delete'](other);\n return result;\n}\n\nmodule.exports = equalObjects;//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvbG9kYXNoL19lcXVhbE9iamVjdHMuanMuanMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly9TTkxpYnJhcnkvLi9ub2RlX21vZHVsZXMvbG9kYXNoL19lcXVhbE9iamVjdHMuanM/YjFlNSJdLCJzb3VyY2VzQ29udGVudCI6WyJcInVzZSBzdHJpY3RcIjtcbnZhciBnZXRBbGxLZXlzID0gcmVxdWlyZSgnLi9fZ2V0QWxsS2V5cycpO1xuLyoqIFVzZWQgdG8gY29tcG9zZSBiaXRtYXNrcyBmb3IgdmFsdWUgY29tcGFyaXNvbnMuICovXG52YXIgQ09NUEFSRV9QQVJUSUFMX0ZMQUcgPSAxO1xuLyoqIFVzZWQgZm9yIGJ1aWx0LWluIG1ldGhvZCByZWZlcmVuY2VzLiAqL1xudmFyIG9iamVjdFByb3RvID0gT2JqZWN0LnByb3RvdHlwZTtcbi8qKiBVc2VkIHRvIGNoZWNrIG9iamVjdHMgZm9yIG93biBwcm9wZXJ0aWVzLiAqL1xudmFyIGhhc093blByb3BlcnR5ID0gb2JqZWN0UHJvdG8uaGFzT3duUHJvcGVydHk7XG4vKipcbiAqIEEgc3BlY2lhbGl6ZWQgdmVyc2lvbiBvZiBgYmFzZUlzRXF1YWxEZWVwYCBmb3Igb2JqZWN0cyB3aXRoIHN1cHBvcnQgZm9yXG4gKiBwYXJ0aWFsIGRlZXAgY29tcGFyaXNvbnMuXG4gKlxuICogQHByaXZhdGVcbiAqIEBwYXJhbSB7T2JqZWN0fSBvYmplY3QgVGhlIG9iamVjdCB0byBjb21wYXJlLlxuICogQHBhcmFtIHtPYmplY3R9IG90aGVyIFRoZSBvdGhlciBvYmplY3QgdG8gY29tcGFyZS5cbiAqIEBwYXJhbSB7bnVtYmVyfSBiaXRtYXNrIFRoZSBiaXRtYXNrIGZsYWdzLiBTZWUgYGJhc2VJc0VxdWFsYCBmb3IgbW9yZSBkZXRhaWxzLlxuICogQHBhcmFtIHtGdW5jdGlvbn0gY3VzdG9taXplciBUaGUgZnVuY3Rpb24gdG8gY3VzdG9taXplIGNvbXBhcmlzb25zLlxuICogQHBhcmFtIHtGdW5jdGlvbn0gZXF1YWxGdW5jIFRoZSBmdW5jdGlvbiB0byBkZXRlcm1pbmUgZXF1aXZhbGVudHMgb2YgdmFsdWVzLlxuICogQHBhcmFtIHtPYmplY3R9IHN0YWNrIFRyYWNrcyB0cmF2ZXJzZWQgYG9iamVjdGAgYW5kIGBvdGhlcmAgb2JqZWN0cy5cbiAqIEByZXR1cm5zIHtib29sZWFufSBSZXR1cm5zIGB0cnVlYCBpZiB0aGUgb2JqZWN0cyBhcmUgZXF1aXZhbGVudCwgZWxzZSBgZmFsc2VgLlxuICovXG5mdW5jdGlvbiBlcXVhbE9iamVjdHMob2JqZWN0LCBvdGhlciwgYml0bWFzaywgY3VzdG9taXplciwgZXF1YWxGdW5jLCBzdGFjaykge1xuICAgIHZhciBpc1BhcnRpYWwgPSBiaXRtYXNrICYgQ09NUEFSRV9QQVJUSUFMX0ZMQUcsIG9ialByb3BzID0gZ2V0QWxsS2V5cyhvYmplY3QpLCBvYmpMZW5ndGggPSBvYmpQcm9wcy5sZW5ndGgsIG90aFByb3BzID0gZ2V0QWxsS2V5cyhvdGhlciksIG90aExlbmd0aCA9IG90aFByb3BzLmxlbmd0aDtcbiAgICBpZiAob2JqTGVuZ3RoICE9IG90aExlbmd0aCAmJiAhaXNQYXJ0aWFsKSB7XG4gICAgICAgIHJldHVybiBmYWxzZTtcbiAgICB9XG4gICAgdmFyIGluZGV4ID0gb2JqTGVuZ3RoO1xuICAgIHdoaWxlIChpbmRleC0tKSB7XG4gICAgICAgIHZhciBrZXkgPSBvYmpQcm9wc1tpbmRleF07XG4gICAgICAgIGlmICghKGlzUGFydGlhbCA/IGtleSBpbiBvdGhlciA6IGhhc093blByb3BlcnR5LmNhbGwob3RoZXIsIGtleSkpKSB7XG4gICAgICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICAgIH1cbiAgICB9XG4gICAgLy8gQXNzdW1lIGN5Y2xpYyB2YWx1ZXMgYXJlIGVxdWFsLlxuICAgIHZhciBzdGFja2VkID0gc3RhY2suZ2V0KG9iamVjdCk7XG4gICAgaWYgKHN0YWNrZWQgJiYgc3RhY2suZ2V0KG90aGVyKSkge1xuICAgICAgICByZXR1cm4gc3RhY2tlZCA9PSBvdGhlcjtcbiAgICB9XG4gICAgdmFyIHJlc3VsdCA9IHRydWU7XG4gICAgc3RhY2suc2V0KG9iamVjdCwgb3RoZXIpO1xuICAgIHN0YWNrLnNldChvdGhlciwgb2JqZWN0KTtcbiAgICB2YXIgc2tpcEN0b3IgPSBpc1BhcnRpYWw7XG4gICAgd2hpbGUgKCsraW5kZXggPCBvYmpMZW5ndGgpIHtcbiAgICAgICAga2V5ID0gb2JqUHJvcHNbaW5kZXhdO1xuICAgICAgICB2YXIgb2JqVmFsdWUgPSBvYmplY3Rba2V5XSwgb3RoVmFsdWUgPSBvdGhlcltrZXldO1xuICAgICAgICBpZiAoY3VzdG9taXplcikge1xuICAgICAgICAgICAgdmFyIGNvbXBhcmVkID0gaXNQYXJ0aWFsXG4gICAgICAgICAgICAgICAgPyBjdXN0b21pemVyKG90aFZhbHVlLCBvYmpWYWx1ZSwga2V5LCBvdGhlciwgb2JqZWN0LCBzdGFjaylcbiAgICAgICAgICAgICAgICA6IGN1c3RvbWl6ZXIob2JqVmFsdWUsIG90aFZhbHVlLCBrZXksIG9iamVjdCwgb3RoZXIsIHN0YWNrKTtcbiAgICAgICAgfVxuICAgICAgICAvLyBSZWN1cnNpdmVseSBjb21wYXJlIG9iamVjdHMgKHN1c2NlcHRpYmxlIHRvIGNhbGwgc3RhY2sgbGltaXRzKS5cbiAgICAgICAgaWYgKCEoY29tcGFyZWQgPT09IHVuZGVmaW5lZFxuICAgICAgICAgICAgPyAob2JqVmFsdWUgPT09IG90aFZhbHVlIHx8IGVxdWFsRnVuYyhvYmpWYWx1ZSwgb3RoVmFsdWUsIGJpdG1hc2ssIGN1c3RvbWl6ZXIsIHN0YWNrKSlcbiAgICAgICAgICAgIDogY29tcGFyZWQpKSB7XG4gICAgICAgICAgICByZXN1bHQgPSBmYWxzZTtcbiAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICB9XG4gICAgICAgIHNraXBDdG9yIHx8IChza2lwQ3RvciA9IGtleSA9PSAnY29uc3RydWN0b3InKTtcbiAgICB9XG4gICAgaWYgKHJlc3VsdCAmJiAhc2tpcEN0b3IpIHtcbiAgICAgICAgdmFyIG9iakN0b3IgPSBvYmplY3QuY29uc3RydWN0b3IsIG90aEN0b3IgPSBvdGhlci5jb25zdHJ1Y3RvcjtcbiAgICAgICAgLy8gTm9uIGBPYmplY3RgIG9iamVjdCBpbnN0YW5jZXMgd2l0aCBkaWZmZXJlbnQgY29uc3RydWN0b3JzIGFyZSBub3QgZXF1YWwuXG4gICAgICAgIGlmIChvYmpDdG9yICE9IG90aEN0b3IgJiZcbiAgICAgICAgICAgICgnY29uc3RydWN0b3InIGluIG9iamVjdCAmJiAnY29uc3RydWN0b3InIGluIG90aGVyKSAmJlxuICAgICAgICAgICAgISh0eXBlb2Ygb2JqQ3RvciA9PSAnZnVuY3Rpb24nICYmIG9iakN0b3IgaW5zdGFuY2VvZiBvYmpDdG9yICYmXG4gICAgICAgICAgICAgICAgdHlwZW9mIG90aEN0b3IgPT0gJ2Z1bmN0aW9uJyAmJiBvdGhDdG9yIGluc3RhbmNlb2Ygb3RoQ3RvcikpIHtcbiAgICAgICAgICAgIHJlc3VsdCA9IGZhbHNlO1xuICAgICAgICB9XG4gICAgfVxuICAgIHN0YWNrWydkZWxldGUnXShvYmplY3QpO1xuICAgIHN0YWNrWydkZWxldGUnXShvdGhlcik7XG4gICAgcmV0dXJuIHJlc3VsdDtcbn1cbm1vZHVsZS5leHBvcnRzID0gZXF1YWxPYmplY3RzO1xuIl0sIm1hcHBpbmdzIjoiQUFBQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFEQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFBQTtBQUNBOzs7Ozs7Ozs7Ozs7OztBQWFBO0FBQ0E7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFBQTtBQUNBO0FBR0E7QUFDQTtBQUNBO0FBQUE7QUFHQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFJQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQSIsInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./node_modules/lodash/_equalObjects.js\n")},"./node_modules/lodash/_freeGlobal.js":
|
||
/*!********************************************!*\
|
||
!*** ./node_modules/lodash/_freeGlobal.js ***!
|
||
\********************************************/
|
||
/*! no static exports found */function(module,exports,__webpack_require__){"use strict";eval('/* WEBPACK VAR INJECTION */(function(global) {\n/** Detect free variable `global` from Node.js. */\n\nfunction _typeof(obj) { "@babel/helpers - typeof"; if (typeof Symbol === "function" && typeof Symbol.iterator === "symbol") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }; } return _typeof(obj); }\n\nvar freeGlobal = (typeof global === "undefined" ? "undefined" : _typeof(global)) == \'object\' && global && global.Object === Object && global;\nmodule.exports = freeGlobal;\n/* WEBPACK VAR INJECTION */}.call(this, __webpack_require__(/*! ./../webpack/buildin/global.js */ "./node_modules/webpack/buildin/global.js")))//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvbG9kYXNoL19mcmVlR2xvYmFsLmpzLmpzIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vU05MaWJyYXJ5Ly4vbm9kZV9tb2R1bGVzL2xvZGFzaC9fZnJlZUdsb2JhbC5qcz81ODVhIl0sInNvdXJjZXNDb250ZW50IjpbIlwidXNlIHN0cmljdFwiO1xuLyoqIERldGVjdCBmcmVlIHZhcmlhYmxlIGBnbG9iYWxgIGZyb20gTm9kZS5qcy4gKi9cbnZhciBmcmVlR2xvYmFsID0gdHlwZW9mIGdsb2JhbCA9PSAnb2JqZWN0JyAmJiBnbG9iYWwgJiYgZ2xvYmFsLk9iamVjdCA9PT0gT2JqZWN0ICYmIGdsb2JhbDtcbm1vZHVsZS5leHBvcnRzID0gZnJlZUdsb2JhbDtcbiJdLCJtYXBwaW5ncyI6IkFBQUE7QUFDQTtBQUNBOzs7QUFBQTtBQUNBO0EiLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./node_modules/lodash/_freeGlobal.js\n')},"./node_modules/lodash/_getAllKeys.js":
|
||
/*!********************************************!*\
|
||
!*** ./node_modules/lodash/_getAllKeys.js ***!
|
||
\********************************************/
|
||
/*! no static exports found */function(module,exports,__webpack_require__){"use strict";eval('\n\nvar baseGetAllKeys = __webpack_require__(/*! ./_baseGetAllKeys */ "./node_modules/lodash/_baseGetAllKeys.js"),\n getSymbols = __webpack_require__(/*! ./_getSymbols */ "./node_modules/lodash/_getSymbols.js"),\n keys = __webpack_require__(/*! ./keys */ "./node_modules/lodash/keys.js");\n/**\n * Creates an array of own enumerable property names and symbols of `object`.\n *\n * @private\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of property names and symbols.\n */\n\n\nfunction getAllKeys(object) {\n return baseGetAllKeys(object, keys, getSymbols);\n}\n\nmodule.exports = getAllKeys;//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvbG9kYXNoL19nZXRBbGxLZXlzLmpzLmpzIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vU05MaWJyYXJ5Ly4vbm9kZV9tb2R1bGVzL2xvZGFzaC9fZ2V0QWxsS2V5cy5qcz9hOTk0Il0sInNvdXJjZXNDb250ZW50IjpbIlwidXNlIHN0cmljdFwiO1xudmFyIGJhc2VHZXRBbGxLZXlzID0gcmVxdWlyZSgnLi9fYmFzZUdldEFsbEtleXMnKSwgZ2V0U3ltYm9scyA9IHJlcXVpcmUoJy4vX2dldFN5bWJvbHMnKSwga2V5cyA9IHJlcXVpcmUoJy4va2V5cycpO1xuLyoqXG4gKiBDcmVhdGVzIGFuIGFycmF5IG9mIG93biBlbnVtZXJhYmxlIHByb3BlcnR5IG5hbWVzIGFuZCBzeW1ib2xzIG9mIGBvYmplY3RgLlxuICpcbiAqIEBwcml2YXRlXG4gKiBAcGFyYW0ge09iamVjdH0gb2JqZWN0IFRoZSBvYmplY3QgdG8gcXVlcnkuXG4gKiBAcmV0dXJucyB7QXJyYXl9IFJldHVybnMgdGhlIGFycmF5IG9mIHByb3BlcnR5IG5hbWVzIGFuZCBzeW1ib2xzLlxuICovXG5mdW5jdGlvbiBnZXRBbGxLZXlzKG9iamVjdCkge1xuICAgIHJldHVybiBiYXNlR2V0QWxsS2V5cyhvYmplY3QsIGtleXMsIGdldFN5bWJvbHMpO1xufVxubW9kdWxlLmV4cG9ydHMgPSBnZXRBbGxLZXlzO1xuIl0sIm1hcHBpbmdzIjoiQUFBQTtBQUNBO0FBQUE7QUFBQTtBQUFBO0FBQ0E7Ozs7Ozs7OztBQU9BO0FBQ0E7QUFDQTtBQUNBO0FBQUEiLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./node_modules/lodash/_getAllKeys.js\n')},"./node_modules/lodash/_getMapData.js":
|
||
/*!********************************************!*\
|
||
!*** ./node_modules/lodash/_getMapData.js ***!
|
||
\********************************************/
|
||
/*! no static exports found */function(module,exports,__webpack_require__){"use strict";eval("\n\nvar isKeyable = __webpack_require__(/*! ./_isKeyable */ \"./node_modules/lodash/_isKeyable.js\");\n/**\n * Gets the data for `map`.\n *\n * @private\n * @param {Object} map The map to query.\n * @param {string} key The reference key.\n * @returns {*} Returns the map data.\n */\n\n\nfunction getMapData(map, key) {\n var data = map.__data__;\n return isKeyable(key) ? data[typeof key == 'string' ? 'string' : 'hash'] : data.map;\n}\n\nmodule.exports = getMapData;//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvbG9kYXNoL19nZXRNYXBEYXRhLmpzLmpzIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vU05MaWJyYXJ5Ly4vbm9kZV9tb2R1bGVzL2xvZGFzaC9fZ2V0TWFwRGF0YS5qcz80MjQ1Il0sInNvdXJjZXNDb250ZW50IjpbIlwidXNlIHN0cmljdFwiO1xudmFyIGlzS2V5YWJsZSA9IHJlcXVpcmUoJy4vX2lzS2V5YWJsZScpO1xuLyoqXG4gKiBHZXRzIHRoZSBkYXRhIGZvciBgbWFwYC5cbiAqXG4gKiBAcHJpdmF0ZVxuICogQHBhcmFtIHtPYmplY3R9IG1hcCBUaGUgbWFwIHRvIHF1ZXJ5LlxuICogQHBhcmFtIHtzdHJpbmd9IGtleSBUaGUgcmVmZXJlbmNlIGtleS5cbiAqIEByZXR1cm5zIHsqfSBSZXR1cm5zIHRoZSBtYXAgZGF0YS5cbiAqL1xuZnVuY3Rpb24gZ2V0TWFwRGF0YShtYXAsIGtleSkge1xuICAgIHZhciBkYXRhID0gbWFwLl9fZGF0YV9fO1xuICAgIHJldHVybiBpc0tleWFibGUoa2V5KVxuICAgICAgICA/IGRhdGFbdHlwZW9mIGtleSA9PSAnc3RyaW5nJyA/ICdzdHJpbmcnIDogJ2hhc2gnXVxuICAgICAgICA6IGRhdGEubWFwO1xufVxubW9kdWxlLmV4cG9ydHMgPSBnZXRNYXBEYXRhO1xuIl0sIm1hcHBpbmdzIjoiQUFBQTtBQUNBO0FBQUE7QUFDQTs7Ozs7Ozs7OztBQVFBO0FBQ0E7QUFDQTtBQUdBO0FBQ0E7QUFBQSIsInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./node_modules/lodash/_getMapData.js\n")},"./node_modules/lodash/_getMatchData.js":
|
||
/*!**********************************************!*\
|
||
!*** ./node_modules/lodash/_getMatchData.js ***!
|
||
\**********************************************/
|
||
/*! no static exports found */function(module,exports,__webpack_require__){"use strict";eval('\n\nvar isStrictComparable = __webpack_require__(/*! ./_isStrictComparable */ "./node_modules/lodash/_isStrictComparable.js"),\n keys = __webpack_require__(/*! ./keys */ "./node_modules/lodash/keys.js");\n/**\n * Gets the property names, values, and compare flags of `object`.\n *\n * @private\n * @param {Object} object The object to query.\n * @returns {Array} Returns the match data of `object`.\n */\n\n\nfunction getMatchData(object) {\n var result = keys(object),\n length = result.length;\n\n while (length--) {\n var key = result[length],\n value = object[key];\n result[length] = [key, value, isStrictComparable(value)];\n }\n\n return result;\n}\n\nmodule.exports = getMatchData;//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvbG9kYXNoL19nZXRNYXRjaERhdGEuanMuanMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly9TTkxpYnJhcnkvLi9ub2RlX21vZHVsZXMvbG9kYXNoL19nZXRNYXRjaERhdGEuanM/M2JiNCJdLCJzb3VyY2VzQ29udGVudCI6WyJcInVzZSBzdHJpY3RcIjtcbnZhciBpc1N0cmljdENvbXBhcmFibGUgPSByZXF1aXJlKCcuL19pc1N0cmljdENvbXBhcmFibGUnKSwga2V5cyA9IHJlcXVpcmUoJy4va2V5cycpO1xuLyoqXG4gKiBHZXRzIHRoZSBwcm9wZXJ0eSBuYW1lcywgdmFsdWVzLCBhbmQgY29tcGFyZSBmbGFncyBvZiBgb2JqZWN0YC5cbiAqXG4gKiBAcHJpdmF0ZVxuICogQHBhcmFtIHtPYmplY3R9IG9iamVjdCBUaGUgb2JqZWN0IHRvIHF1ZXJ5LlxuICogQHJldHVybnMge0FycmF5fSBSZXR1cm5zIHRoZSBtYXRjaCBkYXRhIG9mIGBvYmplY3RgLlxuICovXG5mdW5jdGlvbiBnZXRNYXRjaERhdGEob2JqZWN0KSB7XG4gICAgdmFyIHJlc3VsdCA9IGtleXMob2JqZWN0KSwgbGVuZ3RoID0gcmVzdWx0Lmxlbmd0aDtcbiAgICB3aGlsZSAobGVuZ3RoLS0pIHtcbiAgICAgICAgdmFyIGtleSA9IHJlc3VsdFtsZW5ndGhdLCB2YWx1ZSA9IG9iamVjdFtrZXldO1xuICAgICAgICByZXN1bHRbbGVuZ3RoXSA9IFtrZXksIHZhbHVlLCBpc1N0cmljdENvbXBhcmFibGUodmFsdWUpXTtcbiAgICB9XG4gICAgcmV0dXJuIHJlc3VsdDtcbn1cbm1vZHVsZS5leHBvcnRzID0gZ2V0TWF0Y2hEYXRhO1xuIl0sIm1hcHBpbmdzIjoiQUFBQTtBQUNBO0FBQUE7QUFBQTtBQUNBOzs7Ozs7Ozs7QUFPQTtBQUNBO0FBQUE7QUFDQTtBQUFBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUFBIiwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./node_modules/lodash/_getMatchData.js\n')},"./node_modules/lodash/_getNative.js":
|
||
/*!*******************************************!*\
|
||
!*** ./node_modules/lodash/_getNative.js ***!
|
||
\*******************************************/
|
||
/*! no static exports found */function(module,exports,__webpack_require__){"use strict";eval('\n\nvar baseIsNative = __webpack_require__(/*! ./_baseIsNative */ "./node_modules/lodash/_baseIsNative.js"),\n getValue = __webpack_require__(/*! ./_getValue */ "./node_modules/lodash/_getValue.js");\n/**\n * Gets the native function at `key` of `object`.\n *\n * @private\n * @param {Object} object The object to query.\n * @param {string} key The key of the method to get.\n * @returns {*} Returns the function if it\'s native, else `undefined`.\n */\n\n\nfunction getNative(object, key) {\n var value = getValue(object, key);\n return baseIsNative(value) ? value : undefined;\n}\n\nmodule.exports = getNative;//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvbG9kYXNoL19nZXROYXRpdmUuanMuanMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly9TTkxpYnJhcnkvLi9ub2RlX21vZHVsZXMvbG9kYXNoL19nZXROYXRpdmUuanM/MGIwNyJdLCJzb3VyY2VzQ29udGVudCI6WyJcInVzZSBzdHJpY3RcIjtcbnZhciBiYXNlSXNOYXRpdmUgPSByZXF1aXJlKCcuL19iYXNlSXNOYXRpdmUnKSwgZ2V0VmFsdWUgPSByZXF1aXJlKCcuL19nZXRWYWx1ZScpO1xuLyoqXG4gKiBHZXRzIHRoZSBuYXRpdmUgZnVuY3Rpb24gYXQgYGtleWAgb2YgYG9iamVjdGAuXG4gKlxuICogQHByaXZhdGVcbiAqIEBwYXJhbSB7T2JqZWN0fSBvYmplY3QgVGhlIG9iamVjdCB0byBxdWVyeS5cbiAqIEBwYXJhbSB7c3RyaW5nfSBrZXkgVGhlIGtleSBvZiB0aGUgbWV0aG9kIHRvIGdldC5cbiAqIEByZXR1cm5zIHsqfSBSZXR1cm5zIHRoZSBmdW5jdGlvbiBpZiBpdCdzIG5hdGl2ZSwgZWxzZSBgdW5kZWZpbmVkYC5cbiAqL1xuZnVuY3Rpb24gZ2V0TmF0aXZlKG9iamVjdCwga2V5KSB7XG4gICAgdmFyIHZhbHVlID0gZ2V0VmFsdWUob2JqZWN0LCBrZXkpO1xuICAgIHJldHVybiBiYXNlSXNOYXRpdmUodmFsdWUpID8gdmFsdWUgOiB1bmRlZmluZWQ7XG59XG5tb2R1bGUuZXhwb3J0cyA9IGdldE5hdGl2ZTtcbiJdLCJtYXBwaW5ncyI6IkFBQUE7QUFDQTtBQUFBO0FBQUE7QUFDQTs7Ozs7Ozs7OztBQVFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQSIsInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./node_modules/lodash/_getNative.js\n')},"./node_modules/lodash/_getPrototype.js":
|
||
/*!**********************************************!*\
|
||
!*** ./node_modules/lodash/_getPrototype.js ***!
|
||
\**********************************************/
|
||
/*! no static exports found */function(module,exports,__webpack_require__){"use strict";eval('\n\nvar overArg = __webpack_require__(/*! ./_overArg */ "./node_modules/lodash/_overArg.js");\n/** Built-in value references. */\n\n\nvar getPrototype = overArg(Object.getPrototypeOf, Object);\nmodule.exports = getPrototype;//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvbG9kYXNoL19nZXRQcm90b3R5cGUuanMuanMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly9TTkxpYnJhcnkvLi9ub2RlX21vZHVsZXMvbG9kYXNoL19nZXRQcm90b3R5cGUuanM/MmRjYiJdLCJzb3VyY2VzQ29udGVudCI6WyJcInVzZSBzdHJpY3RcIjtcbnZhciBvdmVyQXJnID0gcmVxdWlyZSgnLi9fb3ZlckFyZycpO1xuLyoqIEJ1aWx0LWluIHZhbHVlIHJlZmVyZW5jZXMuICovXG52YXIgZ2V0UHJvdG90eXBlID0gb3ZlckFyZyhPYmplY3QuZ2V0UHJvdG90eXBlT2YsIE9iamVjdCk7XG5tb2R1bGUuZXhwb3J0cyA9IGdldFByb3RvdHlwZTtcbiJdLCJtYXBwaW5ncyI6IkFBQUE7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBREE7QUFDQSIsInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./node_modules/lodash/_getPrototype.js\n')},"./node_modules/lodash/_getRawTag.js":
|
||
/*!*******************************************!*\
|
||
!*** ./node_modules/lodash/_getRawTag.js ***!
|
||
\*******************************************/
|
||
/*! no static exports found */function(module,exports,__webpack_require__){"use strict";eval('\n\nvar _Symbol = __webpack_require__(/*! ./_Symbol */ "./node_modules/lodash/_Symbol.js");\n/** Used for built-in method references. */\n\n\nvar objectProto = Object.prototype;\n/** Used to check objects for own properties. */\n\nvar hasOwnProperty = objectProto.hasOwnProperty;\n/**\n * Used to resolve the\n * [`toStringTag`](http://ecma-international.org/ecma-262/7.0/#sec-object.prototype.tostring)\n * of values.\n */\n\nvar nativeObjectToString = objectProto.toString;\n/** Built-in value references. */\n\nvar symToStringTag = _Symbol ? _Symbol.toStringTag : undefined;\n/**\n * A specialized version of `baseGetTag` which ignores `Symbol.toStringTag` values.\n *\n * @private\n * @param {*} value The value to query.\n * @returns {string} Returns the raw `toStringTag`.\n */\n\nfunction getRawTag(value) {\n var isOwn = hasOwnProperty.call(value, symToStringTag),\n tag = value[symToStringTag];\n\n try {\n value[symToStringTag] = undefined;\n var unmasked = true;\n } catch (e) {}\n\n var result = nativeObjectToString.call(value);\n\n if (unmasked) {\n if (isOwn) {\n value[symToStringTag] = tag;\n } else {\n delete value[symToStringTag];\n }\n }\n\n return result;\n}\n\nmodule.exports = getRawTag;//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvbG9kYXNoL19nZXRSYXdUYWcuanMuanMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly9TTkxpYnJhcnkvLi9ub2RlX21vZHVsZXMvbG9kYXNoL19nZXRSYXdUYWcuanM/MDBmZCJdLCJzb3VyY2VzQ29udGVudCI6WyJcInVzZSBzdHJpY3RcIjtcbnZhciBTeW1ib2wgPSByZXF1aXJlKCcuL19TeW1ib2wnKTtcbi8qKiBVc2VkIGZvciBidWlsdC1pbiBtZXRob2QgcmVmZXJlbmNlcy4gKi9cbnZhciBvYmplY3RQcm90byA9IE9iamVjdC5wcm90b3R5cGU7XG4vKiogVXNlZCB0byBjaGVjayBvYmplY3RzIGZvciBvd24gcHJvcGVydGllcy4gKi9cbnZhciBoYXNPd25Qcm9wZXJ0eSA9IG9iamVjdFByb3RvLmhhc093blByb3BlcnR5O1xuLyoqXG4gKiBVc2VkIHRvIHJlc29sdmUgdGhlXG4gKiBbYHRvU3RyaW5nVGFnYF0oaHR0cDovL2VjbWEtaW50ZXJuYXRpb25hbC5vcmcvZWNtYS0yNjIvNy4wLyNzZWMtb2JqZWN0LnByb3RvdHlwZS50b3N0cmluZylcbiAqIG9mIHZhbHVlcy5cbiAqL1xudmFyIG5hdGl2ZU9iamVjdFRvU3RyaW5nID0gb2JqZWN0UHJvdG8udG9TdHJpbmc7XG4vKiogQnVpbHQtaW4gdmFsdWUgcmVmZXJlbmNlcy4gKi9cbnZhciBzeW1Ub1N0cmluZ1RhZyA9IFN5bWJvbCA/IFN5bWJvbC50b1N0cmluZ1RhZyA6IHVuZGVmaW5lZDtcbi8qKlxuICogQSBzcGVjaWFsaXplZCB2ZXJzaW9uIG9mIGBiYXNlR2V0VGFnYCB3aGljaCBpZ25vcmVzIGBTeW1ib2wudG9TdHJpbmdUYWdgIHZhbHVlcy5cbiAqXG4gKiBAcHJpdmF0ZVxuICogQHBhcmFtIHsqfSB2YWx1ZSBUaGUgdmFsdWUgdG8gcXVlcnkuXG4gKiBAcmV0dXJucyB7c3RyaW5nfSBSZXR1cm5zIHRoZSByYXcgYHRvU3RyaW5nVGFnYC5cbiAqL1xuZnVuY3Rpb24gZ2V0UmF3VGFnKHZhbHVlKSB7XG4gICAgdmFyIGlzT3duID0gaGFzT3duUHJvcGVydHkuY2FsbCh2YWx1ZSwgc3ltVG9TdHJpbmdUYWcpLCB0YWcgPSB2YWx1ZVtzeW1Ub1N0cmluZ1RhZ107XG4gICAgdHJ5IHtcbiAgICAgICAgdmFsdWVbc3ltVG9TdHJpbmdUYWddID0gdW5kZWZpbmVkO1xuICAgICAgICB2YXIgdW5tYXNrZWQgPSB0cnVlO1xuICAgIH1cbiAgICBjYXRjaCAoZSkgeyB9XG4gICAgdmFyIHJlc3VsdCA9IG5hdGl2ZU9iamVjdFRvU3RyaW5nLmNhbGwodmFsdWUpO1xuICAgIGlmICh1bm1hc2tlZCkge1xuICAgICAgICBpZiAoaXNPd24pIHtcbiAgICAgICAgICAgIHZhbHVlW3N5bVRvU3RyaW5nVGFnXSA9IHRhZztcbiAgICAgICAgfVxuICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgIGRlbGV0ZSB2YWx1ZVtzeW1Ub1N0cmluZ1RhZ107XG4gICAgICAgIH1cbiAgICB9XG4gICAgcmV0dXJuIHJlc3VsdDtcbn1cbm1vZHVsZS5leHBvcnRzID0gZ2V0UmF3VGFnO1xuIl0sIm1hcHBpbmdzIjoiQUFBQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFEQTtBQUNBO0FBQ0E7QUFBQTtBQUNBOzs7Ozs7QUFLQTtBQUNBO0FBQ0E7QUFBQTtBQUNBOzs7Ozs7OztBQU9BO0FBQ0E7QUFBQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQUEiLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./node_modules/lodash/_getRawTag.js\n')},"./node_modules/lodash/_getSymbols.js":
|
||
/*!********************************************!*\
|
||
!*** ./node_modules/lodash/_getSymbols.js ***!
|
||
\********************************************/
|
||
/*! no static exports found */function(module,exports,__webpack_require__){"use strict";eval('\n\nvar arrayFilter = __webpack_require__(/*! ./_arrayFilter */ "./node_modules/lodash/_arrayFilter.js"),\n stubArray = __webpack_require__(/*! ./stubArray */ "./node_modules/lodash/stubArray.js");\n/** Used for built-in method references. */\n\n\nvar objectProto = Object.prototype;\n/** Built-in value references. */\n\nvar propertyIsEnumerable = objectProto.propertyIsEnumerable;\n/* Built-in method references for those with the same name as other `lodash` methods. */\n\nvar nativeGetSymbols = Object.getOwnPropertySymbols;\n/**\n * Creates an array of the own enumerable symbols of `object`.\n *\n * @private\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of symbols.\n */\n\nvar getSymbols = !nativeGetSymbols ? stubArray : function (object) {\n if (object == null) {\n return [];\n }\n\n object = Object(object);\n return arrayFilter(nativeGetSymbols(object), function (symbol) {\n return propertyIsEnumerable.call(object, symbol);\n });\n};\nmodule.exports = getSymbols;//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvbG9kYXNoL19nZXRTeW1ib2xzLmpzLmpzIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vU05MaWJyYXJ5Ly4vbm9kZV9tb2R1bGVzL2xvZGFzaC9fZ2V0U3ltYm9scy5qcz8zMmY0Il0sInNvdXJjZXNDb250ZW50IjpbIlwidXNlIHN0cmljdFwiO1xudmFyIGFycmF5RmlsdGVyID0gcmVxdWlyZSgnLi9fYXJyYXlGaWx0ZXInKSwgc3R1YkFycmF5ID0gcmVxdWlyZSgnLi9zdHViQXJyYXknKTtcbi8qKiBVc2VkIGZvciBidWlsdC1pbiBtZXRob2QgcmVmZXJlbmNlcy4gKi9cbnZhciBvYmplY3RQcm90byA9IE9iamVjdC5wcm90b3R5cGU7XG4vKiogQnVpbHQtaW4gdmFsdWUgcmVmZXJlbmNlcy4gKi9cbnZhciBwcm9wZXJ0eUlzRW51bWVyYWJsZSA9IG9iamVjdFByb3RvLnByb3BlcnR5SXNFbnVtZXJhYmxlO1xuLyogQnVpbHQtaW4gbWV0aG9kIHJlZmVyZW5jZXMgZm9yIHRob3NlIHdpdGggdGhlIHNhbWUgbmFtZSBhcyBvdGhlciBgbG9kYXNoYCBtZXRob2RzLiAqL1xudmFyIG5hdGl2ZUdldFN5bWJvbHMgPSBPYmplY3QuZ2V0T3duUHJvcGVydHlTeW1ib2xzO1xuLyoqXG4gKiBDcmVhdGVzIGFuIGFycmF5IG9mIHRoZSBvd24gZW51bWVyYWJsZSBzeW1ib2xzIG9mIGBvYmplY3RgLlxuICpcbiAqIEBwcml2YXRlXG4gKiBAcGFyYW0ge09iamVjdH0gb2JqZWN0IFRoZSBvYmplY3QgdG8gcXVlcnkuXG4gKiBAcmV0dXJucyB7QXJyYXl9IFJldHVybnMgdGhlIGFycmF5IG9mIHN5bWJvbHMuXG4gKi9cbnZhciBnZXRTeW1ib2xzID0gIW5hdGl2ZUdldFN5bWJvbHMgPyBzdHViQXJyYXkgOiBmdW5jdGlvbiAob2JqZWN0KSB7XG4gICAgaWYgKG9iamVjdCA9PSBudWxsKSB7XG4gICAgICAgIHJldHVybiBbXTtcbiAgICB9XG4gICAgb2JqZWN0ID0gT2JqZWN0KG9iamVjdCk7XG4gICAgcmV0dXJuIGFycmF5RmlsdGVyKG5hdGl2ZUdldFN5bWJvbHMob2JqZWN0KSwgZnVuY3Rpb24gKHN5bWJvbCkge1xuICAgICAgICByZXR1cm4gcHJvcGVydHlJc0VudW1lcmFibGUuY2FsbChvYmplY3QsIHN5bWJvbCk7XG4gICAgfSk7XG59O1xubW9kdWxlLmV4cG9ydHMgPSBnZXRTeW1ib2xzO1xuIl0sIm1hcHBpbmdzIjoiQUFBQTtBQUNBO0FBQUE7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQURBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7Ozs7Ozs7O0FBT0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSIsInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./node_modules/lodash/_getSymbols.js\n')},"./node_modules/lodash/_getTag.js":
|
||
/*!****************************************!*\
|
||
!*** ./node_modules/lodash/_getTag.js ***!
|
||
\****************************************/
|
||
/*! no static exports found */function(module,exports,__webpack_require__){"use strict";eval("\n\nvar DataView = __webpack_require__(/*! ./_DataView */ \"./node_modules/lodash/_DataView.js\"),\n Map = __webpack_require__(/*! ./_Map */ \"./node_modules/lodash/_Map.js\"),\n Promise = __webpack_require__(/*! ./_Promise */ \"./node_modules/lodash/_Promise.js\"),\n Set = __webpack_require__(/*! ./_Set */ \"./node_modules/lodash/_Set.js\"),\n WeakMap = __webpack_require__(/*! ./_WeakMap */ \"./node_modules/lodash/_WeakMap.js\"),\n baseGetTag = __webpack_require__(/*! ./_baseGetTag */ \"./node_modules/lodash/_baseGetTag.js\"),\n toSource = __webpack_require__(/*! ./_toSource */ \"./node_modules/lodash/_toSource.js\");\n/** `Object#toString` result references. */\n\n\nvar mapTag = '[object Map]',\n objectTag = '[object Object]',\n promiseTag = '[object Promise]',\n setTag = '[object Set]',\n weakMapTag = '[object WeakMap]';\nvar dataViewTag = '[object DataView]';\n/** Used to detect maps, sets, and weakmaps. */\n\nvar dataViewCtorString = toSource(DataView),\n mapCtorString = toSource(Map),\n promiseCtorString = toSource(Promise),\n setCtorString = toSource(Set),\n weakMapCtorString = toSource(WeakMap);\n/**\n * Gets the `toStringTag` of `value`.\n *\n * @private\n * @param {*} value The value to query.\n * @returns {string} Returns the `toStringTag`.\n */\n\nvar getTag = baseGetTag; // Fallback for data views, maps, sets, and weak maps in IE 11 and promises in Node.js < 6.\n\nif (DataView && getTag(new DataView(new ArrayBuffer(1))) != dataViewTag || Map && getTag(new Map()) != mapTag || Promise && getTag(Promise.resolve()) != promiseTag || Set && getTag(new Set()) != setTag || WeakMap && getTag(new WeakMap()) != weakMapTag) {\n getTag = function getTag(value) {\n var result = baseGetTag(value),\n Ctor = result == objectTag ? value.constructor : undefined,\n ctorString = Ctor ? toSource(Ctor) : '';\n\n if (ctorString) {\n switch (ctorString) {\n case dataViewCtorString:\n return dataViewTag;\n\n case mapCtorString:\n return mapTag;\n\n case promiseCtorString:\n return promiseTag;\n\n case setCtorString:\n return setTag;\n\n case weakMapCtorString:\n return weakMapTag;\n }\n }\n\n return result;\n };\n}\n\nmodule.exports = getTag;//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvbG9kYXNoL19nZXRUYWcuanMuanMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly9TTkxpYnJhcnkvLi9ub2RlX21vZHVsZXMvbG9kYXNoL19nZXRUYWcuanM/NDJhMiJdLCJzb3VyY2VzQ29udGVudCI6WyJcInVzZSBzdHJpY3RcIjtcbnZhciBEYXRhVmlldyA9IHJlcXVpcmUoJy4vX0RhdGFWaWV3JyksIE1hcCA9IHJlcXVpcmUoJy4vX01hcCcpLCBQcm9taXNlID0gcmVxdWlyZSgnLi9fUHJvbWlzZScpLCBTZXQgPSByZXF1aXJlKCcuL19TZXQnKSwgV2Vha01hcCA9IHJlcXVpcmUoJy4vX1dlYWtNYXAnKSwgYmFzZUdldFRhZyA9IHJlcXVpcmUoJy4vX2Jhc2VHZXRUYWcnKSwgdG9Tb3VyY2UgPSByZXF1aXJlKCcuL190b1NvdXJjZScpO1xuLyoqIGBPYmplY3QjdG9TdHJpbmdgIHJlc3VsdCByZWZlcmVuY2VzLiAqL1xudmFyIG1hcFRhZyA9ICdbb2JqZWN0IE1hcF0nLCBvYmplY3RUYWcgPSAnW29iamVjdCBPYmplY3RdJywgcHJvbWlzZVRhZyA9ICdbb2JqZWN0IFByb21pc2VdJywgc2V0VGFnID0gJ1tvYmplY3QgU2V0XScsIHdlYWtNYXBUYWcgPSAnW29iamVjdCBXZWFrTWFwXSc7XG52YXIgZGF0YVZpZXdUYWcgPSAnW29iamVjdCBEYXRhVmlld10nO1xuLyoqIFVzZWQgdG8gZGV0ZWN0IG1hcHMsIHNldHMsIGFuZCB3ZWFrbWFwcy4gKi9cbnZhciBkYXRhVmlld0N0b3JTdHJpbmcgPSB0b1NvdXJjZShEYXRhVmlldyksIG1hcEN0b3JTdHJpbmcgPSB0b1NvdXJjZShNYXApLCBwcm9taXNlQ3RvclN0cmluZyA9IHRvU291cmNlKFByb21pc2UpLCBzZXRDdG9yU3RyaW5nID0gdG9Tb3VyY2UoU2V0KSwgd2Vha01hcEN0b3JTdHJpbmcgPSB0b1NvdXJjZShXZWFrTWFwKTtcbi8qKlxuICogR2V0cyB0aGUgYHRvU3RyaW5nVGFnYCBvZiBgdmFsdWVgLlxuICpcbiAqIEBwcml2YXRlXG4gKiBAcGFyYW0geyp9IHZhbHVlIFRoZSB2YWx1ZSB0byBxdWVyeS5cbiAqIEByZXR1cm5zIHtzdHJpbmd9IFJldHVybnMgdGhlIGB0b1N0cmluZ1RhZ2AuXG4gKi9cbnZhciBnZXRUYWcgPSBiYXNlR2V0VGFnO1xuLy8gRmFsbGJhY2sgZm9yIGRhdGEgdmlld3MsIG1hcHMsIHNldHMsIGFuZCB3ZWFrIG1hcHMgaW4gSUUgMTEgYW5kIHByb21pc2VzIGluIE5vZGUuanMgPCA2LlxuaWYgKChEYXRhVmlldyAmJiBnZXRUYWcobmV3IERhdGFWaWV3KG5ldyBBcnJheUJ1ZmZlcigxKSkpICE9IGRhdGFWaWV3VGFnKSB8fFxuICAgIChNYXAgJiYgZ2V0VGFnKG5ldyBNYXApICE9IG1hcFRhZykgfHxcbiAgICAoUHJvbWlzZSAmJiBnZXRUYWcoUHJvbWlzZS5yZXNvbHZlKCkpICE9IHByb21pc2VUYWcpIHx8XG4gICAgKFNldCAmJiBnZXRUYWcobmV3IFNldCkgIT0gc2V0VGFnKSB8fFxuICAgIChXZWFrTWFwICYmIGdldFRhZyhuZXcgV2Vha01hcCkgIT0gd2Vha01hcFRhZykpIHtcbiAgICBnZXRUYWcgPSBmdW5jdGlvbiAodmFsdWUpIHtcbiAgICAgICAgdmFyIHJlc3VsdCA9IGJhc2VHZXRUYWcodmFsdWUpLCBDdG9yID0gcmVzdWx0ID09IG9iamVjdFRhZyA/IHZhbHVlLmNvbnN0cnVjdG9yIDogdW5kZWZpbmVkLCBjdG9yU3RyaW5nID0gQ3RvciA/IHRvU291cmNlKEN0b3IpIDogJyc7XG4gICAgICAgIGlmIChjdG9yU3RyaW5nKSB7XG4gICAgICAgICAgICBzd2l0Y2ggKGN0b3JTdHJpbmcpIHtcbiAgICAgICAgICAgICAgICBjYXNlIGRhdGFWaWV3Q3RvclN0cmluZzogcmV0dXJuIGRhdGFWaWV3VGFnO1xuICAgICAgICAgICAgICAgIGNhc2UgbWFwQ3RvclN0cmluZzogcmV0dXJuIG1hcFRhZztcbiAgICAgICAgICAgICAgICBjYXNlIHByb21pc2VDdG9yU3RyaW5nOiByZXR1cm4gcHJvbWlzZVRhZztcbiAgICAgICAgICAgICAgICBjYXNlIHNldEN0b3JTdHJpbmc6IHJldHVybiBzZXRUYWc7XG4gICAgICAgICAgICAgICAgY2FzZSB3ZWFrTWFwQ3RvclN0cmluZzogcmV0dXJuIHdlYWtNYXBUYWc7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHJlc3VsdDtcbiAgICB9O1xufVxubW9kdWxlLmV4cG9ydHMgPSBnZXRUYWc7XG4iXSwibWFwcGluZ3MiOiJBQUFBO0FBQ0E7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQURBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQ0E7Ozs7Ozs7O0FBT0E7QUFDQTtBQUNBO0FBS0E7QUFDQTtBQUFBO0FBQUE7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFBQTtBQUFBO0FBQ0E7QUFBQTtBQUFBO0FBQ0E7QUFBQTtBQUFBO0FBQ0E7QUFBQTtBQUFBO0FBTEE7QUFPQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFBQSIsInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./node_modules/lodash/_getTag.js\n")},"./node_modules/lodash/_getValue.js":
|
||
/*!******************************************!*\
|
||
!*** ./node_modules/lodash/_getValue.js ***!
|
||
\******************************************/
|
||
/*! no static exports found */function(module,exports,__webpack_require__){"use strict";eval("\n/**\n * Gets the value at `key` of `object`.\n *\n * @private\n * @param {Object} [object] The object to query.\n * @param {string} key The key of the property to get.\n * @returns {*} Returns the property value.\n */\n\nfunction getValue(object, key) {\n return object == null ? undefined : object[key];\n}\n\nmodule.exports = getValue;//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvbG9kYXNoL19nZXRWYWx1ZS5qcy5qcyIsInNvdXJjZXMiOlsid2VicGFjazovL1NOTGlicmFyeS8uL25vZGVfbW9kdWxlcy9sb2Rhc2gvX2dldFZhbHVlLmpzPzM2OTgiXSwic291cmNlc0NvbnRlbnQiOlsiXCJ1c2Ugc3RyaWN0XCI7XG4vKipcbiAqIEdldHMgdGhlIHZhbHVlIGF0IGBrZXlgIG9mIGBvYmplY3RgLlxuICpcbiAqIEBwcml2YXRlXG4gKiBAcGFyYW0ge09iamVjdH0gW29iamVjdF0gVGhlIG9iamVjdCB0byBxdWVyeS5cbiAqIEBwYXJhbSB7c3RyaW5nfSBrZXkgVGhlIGtleSBvZiB0aGUgcHJvcGVydHkgdG8gZ2V0LlxuICogQHJldHVybnMgeyp9IFJldHVybnMgdGhlIHByb3BlcnR5IHZhbHVlLlxuICovXG5mdW5jdGlvbiBnZXRWYWx1ZShvYmplY3QsIGtleSkge1xuICAgIHJldHVybiBvYmplY3QgPT0gbnVsbCA/IHVuZGVmaW5lZCA6IG9iamVjdFtrZXldO1xufVxubW9kdWxlLmV4cG9ydHMgPSBnZXRWYWx1ZTtcbiJdLCJtYXBwaW5ncyI6IkFBQUE7QUFDQTs7Ozs7Ozs7O0FBUUE7QUFDQTtBQUNBO0FBQ0E7QUFBQSIsInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./node_modules/lodash/_getValue.js\n")},"./node_modules/lodash/_hasPath.js":
|
||
/*!*****************************************!*\
|
||
!*** ./node_modules/lodash/_hasPath.js ***!
|
||
\*****************************************/
|
||
/*! no static exports found */function(module,exports,__webpack_require__){"use strict";eval('\n\nvar castPath = __webpack_require__(/*! ./_castPath */ "./node_modules/lodash/_castPath.js"),\n isArguments = __webpack_require__(/*! ./isArguments */ "./node_modules/lodash/isArguments.js"),\n isArray = __webpack_require__(/*! ./isArray */ "./node_modules/lodash/isArray.js"),\n isIndex = __webpack_require__(/*! ./_isIndex */ "./node_modules/lodash/_isIndex.js"),\n isLength = __webpack_require__(/*! ./isLength */ "./node_modules/lodash/isLength.js"),\n toKey = __webpack_require__(/*! ./_toKey */ "./node_modules/lodash/_toKey.js");\n/**\n * Checks if `path` exists on `object`.\n *\n * @private\n * @param {Object} object The object to query.\n * @param {Array|string} path The path to check.\n * @param {Function} hasFunc The function to check properties.\n * @returns {boolean} Returns `true` if `path` exists, else `false`.\n */\n\n\nfunction hasPath(object, path, hasFunc) {\n path = castPath(path, object);\n var index = -1,\n length = path.length,\n result = false;\n\n while (++index < length) {\n var key = toKey(path[index]);\n\n if (!(result = object != null && hasFunc(object, key))) {\n break;\n }\n\n object = object[key];\n }\n\n if (result || ++index != length) {\n return result;\n }\n\n length = object == null ? 0 : object.length;\n return !!length && isLength(length) && isIndex(key, length) && (isArray(object) || isArguments(object));\n}\n\nmodule.exports = hasPath;//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvbG9kYXNoL19oYXNQYXRoLmpzLmpzIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vU05MaWJyYXJ5Ly4vbm9kZV9tb2R1bGVzL2xvZGFzaC9faGFzUGF0aC5qcz9lMmMwIl0sInNvdXJjZXNDb250ZW50IjpbIlwidXNlIHN0cmljdFwiO1xudmFyIGNhc3RQYXRoID0gcmVxdWlyZSgnLi9fY2FzdFBhdGgnKSwgaXNBcmd1bWVudHMgPSByZXF1aXJlKCcuL2lzQXJndW1lbnRzJyksIGlzQXJyYXkgPSByZXF1aXJlKCcuL2lzQXJyYXknKSwgaXNJbmRleCA9IHJlcXVpcmUoJy4vX2lzSW5kZXgnKSwgaXNMZW5ndGggPSByZXF1aXJlKCcuL2lzTGVuZ3RoJyksIHRvS2V5ID0gcmVxdWlyZSgnLi9fdG9LZXknKTtcbi8qKlxuICogQ2hlY2tzIGlmIGBwYXRoYCBleGlzdHMgb24gYG9iamVjdGAuXG4gKlxuICogQHByaXZhdGVcbiAqIEBwYXJhbSB7T2JqZWN0fSBvYmplY3QgVGhlIG9iamVjdCB0byBxdWVyeS5cbiAqIEBwYXJhbSB7QXJyYXl8c3RyaW5nfSBwYXRoIFRoZSBwYXRoIHRvIGNoZWNrLlxuICogQHBhcmFtIHtGdW5jdGlvbn0gaGFzRnVuYyBUaGUgZnVuY3Rpb24gdG8gY2hlY2sgcHJvcGVydGllcy5cbiAqIEByZXR1cm5zIHtib29sZWFufSBSZXR1cm5zIGB0cnVlYCBpZiBgcGF0aGAgZXhpc3RzLCBlbHNlIGBmYWxzZWAuXG4gKi9cbmZ1bmN0aW9uIGhhc1BhdGgob2JqZWN0LCBwYXRoLCBoYXNGdW5jKSB7XG4gICAgcGF0aCA9IGNhc3RQYXRoKHBhdGgsIG9iamVjdCk7XG4gICAgdmFyIGluZGV4ID0gLTEsIGxlbmd0aCA9IHBhdGgubGVuZ3RoLCByZXN1bHQgPSBmYWxzZTtcbiAgICB3aGlsZSAoKytpbmRleCA8IGxlbmd0aCkge1xuICAgICAgICB2YXIga2V5ID0gdG9LZXkocGF0aFtpbmRleF0pO1xuICAgICAgICBpZiAoIShyZXN1bHQgPSBvYmplY3QgIT0gbnVsbCAmJiBoYXNGdW5jKG9iamVjdCwga2V5KSkpIHtcbiAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICB9XG4gICAgICAgIG9iamVjdCA9IG9iamVjdFtrZXldO1xuICAgIH1cbiAgICBpZiAocmVzdWx0IHx8ICsraW5kZXggIT0gbGVuZ3RoKSB7XG4gICAgICAgIHJldHVybiByZXN1bHQ7XG4gICAgfVxuICAgIGxlbmd0aCA9IG9iamVjdCA9PSBudWxsID8gMCA6IG9iamVjdC5sZW5ndGg7XG4gICAgcmV0dXJuICEhbGVuZ3RoICYmIGlzTGVuZ3RoKGxlbmd0aCkgJiYgaXNJbmRleChrZXksIGxlbmd0aCkgJiZcbiAgICAgICAgKGlzQXJyYXkob2JqZWN0KSB8fCBpc0FyZ3VtZW50cyhvYmplY3QpKTtcbn1cbm1vZHVsZS5leHBvcnRzID0gaGFzUGF0aDtcbiJdLCJtYXBwaW5ncyI6IkFBQUE7QUFDQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUNBOzs7Ozs7Ozs7OztBQVNBO0FBQ0E7QUFDQTtBQUFBO0FBQUE7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBRUE7QUFDQTtBQUFBIiwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./node_modules/lodash/_hasPath.js\n')},"./node_modules/lodash/_hashClear.js":
|
||
/*!*******************************************!*\
|
||
!*** ./node_modules/lodash/_hashClear.js ***!
|
||
\*******************************************/
|
||
/*! no static exports found */function(module,exports,__webpack_require__){"use strict";eval('\n\nvar nativeCreate = __webpack_require__(/*! ./_nativeCreate */ "./node_modules/lodash/_nativeCreate.js");\n/**\n * Removes all key-value entries from the hash.\n *\n * @private\n * @name clear\n * @memberOf Hash\n */\n\n\nfunction hashClear() {\n this.__data__ = nativeCreate ? nativeCreate(null) : {};\n this.size = 0;\n}\n\nmodule.exports = hashClear;//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvbG9kYXNoL19oYXNoQ2xlYXIuanMuanMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly9TTkxpYnJhcnkvLi9ub2RlX21vZHVsZXMvbG9kYXNoL19oYXNoQ2xlYXIuanM/NDlmNCJdLCJzb3VyY2VzQ29udGVudCI6WyJcInVzZSBzdHJpY3RcIjtcbnZhciBuYXRpdmVDcmVhdGUgPSByZXF1aXJlKCcuL19uYXRpdmVDcmVhdGUnKTtcbi8qKlxuICogUmVtb3ZlcyBhbGwga2V5LXZhbHVlIGVudHJpZXMgZnJvbSB0aGUgaGFzaC5cbiAqXG4gKiBAcHJpdmF0ZVxuICogQG5hbWUgY2xlYXJcbiAqIEBtZW1iZXJPZiBIYXNoXG4gKi9cbmZ1bmN0aW9uIGhhc2hDbGVhcigpIHtcbiAgICB0aGlzLl9fZGF0YV9fID0gbmF0aXZlQ3JlYXRlID8gbmF0aXZlQ3JlYXRlKG51bGwpIDoge307XG4gICAgdGhpcy5zaXplID0gMDtcbn1cbm1vZHVsZS5leHBvcnRzID0gaGFzaENsZWFyO1xuIl0sIm1hcHBpbmdzIjoiQUFBQTtBQUNBO0FBQUE7QUFDQTs7Ozs7Ozs7O0FBT0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBIiwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./node_modules/lodash/_hashClear.js\n')},"./node_modules/lodash/_hashDelete.js":
|
||
/*!********************************************!*\
|
||
!*** ./node_modules/lodash/_hashDelete.js ***!
|
||
\********************************************/
|
||
/*! no static exports found */function(module,exports,__webpack_require__){"use strict";eval("\n/**\n * Removes `key` and its value from the hash.\n *\n * @private\n * @name delete\n * @memberOf Hash\n * @param {Object} hash The hash to modify.\n * @param {string} key The key of the value to remove.\n * @returns {boolean} Returns `true` if the entry was removed, else `false`.\n */\n\nfunction hashDelete(key) {\n var result = this.has(key) && delete this.__data__[key];\n this.size -= result ? 1 : 0;\n return result;\n}\n\nmodule.exports = hashDelete;//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvbG9kYXNoL19oYXNoRGVsZXRlLmpzLmpzIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vU05MaWJyYXJ5Ly4vbm9kZV9tb2R1bGVzL2xvZGFzaC9faGFzaERlbGV0ZS5qcz8xZWZjIl0sInNvdXJjZXNDb250ZW50IjpbIlwidXNlIHN0cmljdFwiO1xuLyoqXG4gKiBSZW1vdmVzIGBrZXlgIGFuZCBpdHMgdmFsdWUgZnJvbSB0aGUgaGFzaC5cbiAqXG4gKiBAcHJpdmF0ZVxuICogQG5hbWUgZGVsZXRlXG4gKiBAbWVtYmVyT2YgSGFzaFxuICogQHBhcmFtIHtPYmplY3R9IGhhc2ggVGhlIGhhc2ggdG8gbW9kaWZ5LlxuICogQHBhcmFtIHtzdHJpbmd9IGtleSBUaGUga2V5IG9mIHRoZSB2YWx1ZSB0byByZW1vdmUuXG4gKiBAcmV0dXJucyB7Ym9vbGVhbn0gUmV0dXJucyBgdHJ1ZWAgaWYgdGhlIGVudHJ5IHdhcyByZW1vdmVkLCBlbHNlIGBmYWxzZWAuXG4gKi9cbmZ1bmN0aW9uIGhhc2hEZWxldGUoa2V5KSB7XG4gICAgdmFyIHJlc3VsdCA9IHRoaXMuaGFzKGtleSkgJiYgZGVsZXRlIHRoaXMuX19kYXRhX19ba2V5XTtcbiAgICB0aGlzLnNpemUgLT0gcmVzdWx0ID8gMSA6IDA7XG4gICAgcmV0dXJuIHJlc3VsdDtcbn1cbm1vZHVsZS5leHBvcnRzID0gaGFzaERlbGV0ZTtcbiJdLCJtYXBwaW5ncyI6IkFBQUE7QUFDQTs7Ozs7Ozs7Ozs7QUFVQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQSIsInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./node_modules/lodash/_hashDelete.js\n")},"./node_modules/lodash/_hashGet.js":
|
||
/*!*****************************************!*\
|
||
!*** ./node_modules/lodash/_hashGet.js ***!
|
||
\*****************************************/
|
||
/*! no static exports found */function(module,exports,__webpack_require__){"use strict";eval("\n\nvar nativeCreate = __webpack_require__(/*! ./_nativeCreate */ \"./node_modules/lodash/_nativeCreate.js\");\n/** Used to stand-in for `undefined` hash values. */\n\n\nvar HASH_UNDEFINED = '__lodash_hash_undefined__';\n/** Used for built-in method references. */\n\nvar objectProto = Object.prototype;\n/** Used to check objects for own properties. */\n\nvar hasOwnProperty = objectProto.hasOwnProperty;\n/**\n * Gets the hash value for `key`.\n *\n * @private\n * @name get\n * @memberOf Hash\n * @param {string} key The key of the value to get.\n * @returns {*} Returns the entry value.\n */\n\nfunction hashGet(key) {\n var data = this.__data__;\n\n if (nativeCreate) {\n var result = data[key];\n return result === HASH_UNDEFINED ? undefined : result;\n }\n\n return hasOwnProperty.call(data, key) ? data[key] : undefined;\n}\n\nmodule.exports = hashGet;//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvbG9kYXNoL19oYXNoR2V0LmpzLmpzIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vU05MaWJyYXJ5Ly4vbm9kZV9tb2R1bGVzL2xvZGFzaC9faGFzaEdldC5qcz9iYmMwIl0sInNvdXJjZXNDb250ZW50IjpbIlwidXNlIHN0cmljdFwiO1xudmFyIG5hdGl2ZUNyZWF0ZSA9IHJlcXVpcmUoJy4vX25hdGl2ZUNyZWF0ZScpO1xuLyoqIFVzZWQgdG8gc3RhbmQtaW4gZm9yIGB1bmRlZmluZWRgIGhhc2ggdmFsdWVzLiAqL1xudmFyIEhBU0hfVU5ERUZJTkVEID0gJ19fbG9kYXNoX2hhc2hfdW5kZWZpbmVkX18nO1xuLyoqIFVzZWQgZm9yIGJ1aWx0LWluIG1ldGhvZCByZWZlcmVuY2VzLiAqL1xudmFyIG9iamVjdFByb3RvID0gT2JqZWN0LnByb3RvdHlwZTtcbi8qKiBVc2VkIHRvIGNoZWNrIG9iamVjdHMgZm9yIG93biBwcm9wZXJ0aWVzLiAqL1xudmFyIGhhc093blByb3BlcnR5ID0gb2JqZWN0UHJvdG8uaGFzT3duUHJvcGVydHk7XG4vKipcbiAqIEdldHMgdGhlIGhhc2ggdmFsdWUgZm9yIGBrZXlgLlxuICpcbiAqIEBwcml2YXRlXG4gKiBAbmFtZSBnZXRcbiAqIEBtZW1iZXJPZiBIYXNoXG4gKiBAcGFyYW0ge3N0cmluZ30ga2V5IFRoZSBrZXkgb2YgdGhlIHZhbHVlIHRvIGdldC5cbiAqIEByZXR1cm5zIHsqfSBSZXR1cm5zIHRoZSBlbnRyeSB2YWx1ZS5cbiAqL1xuZnVuY3Rpb24gaGFzaEdldChrZXkpIHtcbiAgICB2YXIgZGF0YSA9IHRoaXMuX19kYXRhX187XG4gICAgaWYgKG5hdGl2ZUNyZWF0ZSkge1xuICAgICAgICB2YXIgcmVzdWx0ID0gZGF0YVtrZXldO1xuICAgICAgICByZXR1cm4gcmVzdWx0ID09PSBIQVNIX1VOREVGSU5FRCA/IHVuZGVmaW5lZCA6IHJlc3VsdDtcbiAgICB9XG4gICAgcmV0dXJuIGhhc093blByb3BlcnR5LmNhbGwoZGF0YSwga2V5KSA/IGRhdGFba2V5XSA6IHVuZGVmaW5lZDtcbn1cbm1vZHVsZS5leHBvcnRzID0gaGFzaEdldDtcbiJdLCJtYXBwaW5ncyI6IkFBQUE7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBREE7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQUE7QUFDQTs7Ozs7Ozs7OztBQVNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFBQSIsInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./node_modules/lodash/_hashGet.js\n")},"./node_modules/lodash/_hashHas.js":
|
||
/*!*****************************************!*\
|
||
!*** ./node_modules/lodash/_hashHas.js ***!
|
||
\*****************************************/
|
||
/*! no static exports found */function(module,exports,__webpack_require__){"use strict";eval('\n\nvar nativeCreate = __webpack_require__(/*! ./_nativeCreate */ "./node_modules/lodash/_nativeCreate.js");\n/** Used for built-in method references. */\n\n\nvar objectProto = Object.prototype;\n/** Used to check objects for own properties. */\n\nvar hasOwnProperty = objectProto.hasOwnProperty;\n/**\n * Checks if a hash value for `key` exists.\n *\n * @private\n * @name has\n * @memberOf Hash\n * @param {string} key The key of the entry to check.\n * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.\n */\n\nfunction hashHas(key) {\n var data = this.__data__;\n return nativeCreate ? data[key] !== undefined : hasOwnProperty.call(data, key);\n}\n\nmodule.exports = hashHas;//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvbG9kYXNoL19oYXNoSGFzLmpzLmpzIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vU05MaWJyYXJ5Ly4vbm9kZV9tb2R1bGVzL2xvZGFzaC9faGFzaEhhcy5qcz83YTQ4Il0sInNvdXJjZXNDb250ZW50IjpbIlwidXNlIHN0cmljdFwiO1xudmFyIG5hdGl2ZUNyZWF0ZSA9IHJlcXVpcmUoJy4vX25hdGl2ZUNyZWF0ZScpO1xuLyoqIFVzZWQgZm9yIGJ1aWx0LWluIG1ldGhvZCByZWZlcmVuY2VzLiAqL1xudmFyIG9iamVjdFByb3RvID0gT2JqZWN0LnByb3RvdHlwZTtcbi8qKiBVc2VkIHRvIGNoZWNrIG9iamVjdHMgZm9yIG93biBwcm9wZXJ0aWVzLiAqL1xudmFyIGhhc093blByb3BlcnR5ID0gb2JqZWN0UHJvdG8uaGFzT3duUHJvcGVydHk7XG4vKipcbiAqIENoZWNrcyBpZiBhIGhhc2ggdmFsdWUgZm9yIGBrZXlgIGV4aXN0cy5cbiAqXG4gKiBAcHJpdmF0ZVxuICogQG5hbWUgaGFzXG4gKiBAbWVtYmVyT2YgSGFzaFxuICogQHBhcmFtIHtzdHJpbmd9IGtleSBUaGUga2V5IG9mIHRoZSBlbnRyeSB0byBjaGVjay5cbiAqIEByZXR1cm5zIHtib29sZWFufSBSZXR1cm5zIGB0cnVlYCBpZiBhbiBlbnRyeSBmb3IgYGtleWAgZXhpc3RzLCBlbHNlIGBmYWxzZWAuXG4gKi9cbmZ1bmN0aW9uIGhhc2hIYXMoa2V5KSB7XG4gICAgdmFyIGRhdGEgPSB0aGlzLl9fZGF0YV9fO1xuICAgIHJldHVybiBuYXRpdmVDcmVhdGUgPyAoZGF0YVtrZXldICE9PSB1bmRlZmluZWQpIDogaGFzT3duUHJvcGVydHkuY2FsbChkYXRhLCBrZXkpO1xufVxubW9kdWxlLmV4cG9ydHMgPSBoYXNoSGFzO1xuIl0sIm1hcHBpbmdzIjoiQUFBQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFEQTtBQUNBO0FBQ0E7QUFBQTtBQUNBOzs7Ozs7Ozs7O0FBU0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBIiwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./node_modules/lodash/_hashHas.js\n')},"./node_modules/lodash/_hashSet.js":
|
||
/*!*****************************************!*\
|
||
!*** ./node_modules/lodash/_hashSet.js ***!
|
||
\*****************************************/
|
||
/*! no static exports found */function(module,exports,__webpack_require__){"use strict";eval("\n\nvar nativeCreate = __webpack_require__(/*! ./_nativeCreate */ \"./node_modules/lodash/_nativeCreate.js\");\n/** Used to stand-in for `undefined` hash values. */\n\n\nvar HASH_UNDEFINED = '__lodash_hash_undefined__';\n/**\n * Sets the hash `key` to `value`.\n *\n * @private\n * @name set\n * @memberOf Hash\n * @param {string} key The key of the value to set.\n * @param {*} value The value to set.\n * @returns {Object} Returns the hash instance.\n */\n\nfunction hashSet(key, value) {\n var data = this.__data__;\n this.size += this.has(key) ? 0 : 1;\n data[key] = nativeCreate && value === undefined ? HASH_UNDEFINED : value;\n return this;\n}\n\nmodule.exports = hashSet;//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvbG9kYXNoL19oYXNoU2V0LmpzLmpzIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vU05MaWJyYXJ5Ly4vbm9kZV9tb2R1bGVzL2xvZGFzaC9faGFzaFNldC5qcz8yNTI0Il0sInNvdXJjZXNDb250ZW50IjpbIlwidXNlIHN0cmljdFwiO1xudmFyIG5hdGl2ZUNyZWF0ZSA9IHJlcXVpcmUoJy4vX25hdGl2ZUNyZWF0ZScpO1xuLyoqIFVzZWQgdG8gc3RhbmQtaW4gZm9yIGB1bmRlZmluZWRgIGhhc2ggdmFsdWVzLiAqL1xudmFyIEhBU0hfVU5ERUZJTkVEID0gJ19fbG9kYXNoX2hhc2hfdW5kZWZpbmVkX18nO1xuLyoqXG4gKiBTZXRzIHRoZSBoYXNoIGBrZXlgIHRvIGB2YWx1ZWAuXG4gKlxuICogQHByaXZhdGVcbiAqIEBuYW1lIHNldFxuICogQG1lbWJlck9mIEhhc2hcbiAqIEBwYXJhbSB7c3RyaW5nfSBrZXkgVGhlIGtleSBvZiB0aGUgdmFsdWUgdG8gc2V0LlxuICogQHBhcmFtIHsqfSB2YWx1ZSBUaGUgdmFsdWUgdG8gc2V0LlxuICogQHJldHVybnMge09iamVjdH0gUmV0dXJucyB0aGUgaGFzaCBpbnN0YW5jZS5cbiAqL1xuZnVuY3Rpb24gaGFzaFNldChrZXksIHZhbHVlKSB7XG4gICAgdmFyIGRhdGEgPSB0aGlzLl9fZGF0YV9fO1xuICAgIHRoaXMuc2l6ZSArPSB0aGlzLmhhcyhrZXkpID8gMCA6IDE7XG4gICAgZGF0YVtrZXldID0gKG5hdGl2ZUNyZWF0ZSAmJiB2YWx1ZSA9PT0gdW5kZWZpbmVkKSA/IEhBU0hfVU5ERUZJTkVEIDogdmFsdWU7XG4gICAgcmV0dXJuIHRoaXM7XG59XG5tb2R1bGUuZXhwb3J0cyA9IGhhc2hTZXQ7XG4iXSwibWFwcGluZ3MiOiJBQUFBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQURBO0FBQ0E7Ozs7Ozs7Ozs7O0FBVUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQSIsInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./node_modules/lodash/_hashSet.js\n")},"./node_modules/lodash/_initCloneObject.js":
|
||
/*!*************************************************!*\
|
||
!*** ./node_modules/lodash/_initCloneObject.js ***!
|
||
\*************************************************/
|
||
/*! no static exports found */function(module,exports,__webpack_require__){"use strict";eval('\n\nvar baseCreate = __webpack_require__(/*! ./_baseCreate */ "./node_modules/lodash/_baseCreate.js"),\n getPrototype = __webpack_require__(/*! ./_getPrototype */ "./node_modules/lodash/_getPrototype.js"),\n isPrototype = __webpack_require__(/*! ./_isPrototype */ "./node_modules/lodash/_isPrototype.js");\n/**\n * Initializes an object clone.\n *\n * @private\n * @param {Object} object The object to clone.\n * @returns {Object} Returns the initialized clone.\n */\n\n\nfunction initCloneObject(object) {\n return typeof object.constructor == \'function\' && !isPrototype(object) ? baseCreate(getPrototype(object)) : {};\n}\n\nmodule.exports = initCloneObject;//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvbG9kYXNoL19pbml0Q2xvbmVPYmplY3QuanMuanMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly9TTkxpYnJhcnkvLi9ub2RlX21vZHVsZXMvbG9kYXNoL19pbml0Q2xvbmVPYmplY3QuanM/ZmEyMSJdLCJzb3VyY2VzQ29udGVudCI6WyJcInVzZSBzdHJpY3RcIjtcbnZhciBiYXNlQ3JlYXRlID0gcmVxdWlyZSgnLi9fYmFzZUNyZWF0ZScpLCBnZXRQcm90b3R5cGUgPSByZXF1aXJlKCcuL19nZXRQcm90b3R5cGUnKSwgaXNQcm90b3R5cGUgPSByZXF1aXJlKCcuL19pc1Byb3RvdHlwZScpO1xuLyoqXG4gKiBJbml0aWFsaXplcyBhbiBvYmplY3QgY2xvbmUuXG4gKlxuICogQHByaXZhdGVcbiAqIEBwYXJhbSB7T2JqZWN0fSBvYmplY3QgVGhlIG9iamVjdCB0byBjbG9uZS5cbiAqIEByZXR1cm5zIHtPYmplY3R9IFJldHVybnMgdGhlIGluaXRpYWxpemVkIGNsb25lLlxuICovXG5mdW5jdGlvbiBpbml0Q2xvbmVPYmplY3Qob2JqZWN0KSB7XG4gICAgcmV0dXJuICh0eXBlb2Ygb2JqZWN0LmNvbnN0cnVjdG9yID09ICdmdW5jdGlvbicgJiYgIWlzUHJvdG90eXBlKG9iamVjdCkpXG4gICAgICAgID8gYmFzZUNyZWF0ZShnZXRQcm90b3R5cGUob2JqZWN0KSlcbiAgICAgICAgOiB7fTtcbn1cbm1vZHVsZS5leHBvcnRzID0gaW5pdENsb25lT2JqZWN0O1xuIl0sIm1hcHBpbmdzIjoiQUFBQTtBQUNBO0FBQUE7QUFBQTtBQUFBO0FBQ0E7Ozs7Ozs7OztBQU9BO0FBQ0E7QUFHQTtBQUNBO0FBQUEiLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./node_modules/lodash/_initCloneObject.js\n')},"./node_modules/lodash/_isIndex.js":
|
||
/*!*****************************************!*\
|
||
!*** ./node_modules/lodash/_isIndex.js ***!
|
||
\*****************************************/
|
||
/*! no static exports found */function(module,exports,__webpack_require__){"use strict";eval('\n/** Used as references for various `Number` constants. */\n\nfunction _typeof(obj) { "@babel/helpers - typeof"; if (typeof Symbol === "function" && typeof Symbol.iterator === "symbol") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }; } return _typeof(obj); }\n\nvar MAX_SAFE_INTEGER = 9007199254740991;\n/** Used to detect unsigned integer values. */\n\nvar reIsUint = /^(?:0|[1-9]\\d*)$/;\n/**\n * Checks if `value` is a valid array-like index.\n *\n * @private\n * @param {*} value The value to check.\n * @param {number} [length=MAX_SAFE_INTEGER] The upper bounds of a valid index.\n * @returns {boolean} Returns `true` if `value` is a valid index, else `false`.\n */\n\nfunction isIndex(value, length) {\n var type = _typeof(value);\n\n length = length == null ? MAX_SAFE_INTEGER : length;\n return !!length && (type == \'number\' || type != \'symbol\' && reIsUint.test(value)) && value > -1 && value % 1 == 0 && value < length;\n}\n\nmodule.exports = isIndex;//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvbG9kYXNoL19pc0luZGV4LmpzLmpzIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vU05MaWJyYXJ5Ly4vbm9kZV9tb2R1bGVzL2xvZGFzaC9faXNJbmRleC5qcz9jMDk4Il0sInNvdXJjZXNDb250ZW50IjpbIlwidXNlIHN0cmljdFwiO1xuLyoqIFVzZWQgYXMgcmVmZXJlbmNlcyBmb3IgdmFyaW91cyBgTnVtYmVyYCBjb25zdGFudHMuICovXG52YXIgTUFYX1NBRkVfSU5URUdFUiA9IDkwMDcxOTkyNTQ3NDA5OTE7XG4vKiogVXNlZCB0byBkZXRlY3QgdW5zaWduZWQgaW50ZWdlciB2YWx1ZXMuICovXG52YXIgcmVJc1VpbnQgPSAvXig/OjB8WzEtOV1cXGQqKSQvO1xuLyoqXG4gKiBDaGVja3MgaWYgYHZhbHVlYCBpcyBhIHZhbGlkIGFycmF5LWxpa2UgaW5kZXguXG4gKlxuICogQHByaXZhdGVcbiAqIEBwYXJhbSB7Kn0gdmFsdWUgVGhlIHZhbHVlIHRvIGNoZWNrLlxuICogQHBhcmFtIHtudW1iZXJ9IFtsZW5ndGg9TUFYX1NBRkVfSU5URUdFUl0gVGhlIHVwcGVyIGJvdW5kcyBvZiBhIHZhbGlkIGluZGV4LlxuICogQHJldHVybnMge2Jvb2xlYW59IFJldHVybnMgYHRydWVgIGlmIGB2YWx1ZWAgaXMgYSB2YWxpZCBpbmRleCwgZWxzZSBgZmFsc2VgLlxuICovXG5mdW5jdGlvbiBpc0luZGV4KHZhbHVlLCBsZW5ndGgpIHtcbiAgICB2YXIgdHlwZSA9IHR5cGVvZiB2YWx1ZTtcbiAgICBsZW5ndGggPSBsZW5ndGggPT0gbnVsbCA/IE1BWF9TQUZFX0lOVEVHRVIgOiBsZW5ndGg7XG4gICAgcmV0dXJuICEhbGVuZ3RoICYmXG4gICAgICAgICh0eXBlID09ICdudW1iZXInIHx8XG4gICAgICAgICAgICAodHlwZSAhPSAnc3ltYm9sJyAmJiByZUlzVWludC50ZXN0KHZhbHVlKSkpICYmXG4gICAgICAgICh2YWx1ZSA+IC0xICYmIHZhbHVlICUgMSA9PSAwICYmIHZhbHVlIDwgbGVuZ3RoKTtcbn1cbm1vZHVsZS5leHBvcnRzID0gaXNJbmRleDtcbiJdLCJtYXBwaW5ncyI6IkFBQUE7QUFDQTtBQUNBOzs7QUFBQTtBQUNBO0FBQ0E7QUFBQTtBQUNBOzs7Ozs7Ozs7QUFRQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBSUE7QUFDQTtBQUFBIiwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./node_modules/lodash/_isIndex.js\n')},"./node_modules/lodash/_isIterateeCall.js":
|
||
/*!************************************************!*\
|
||
!*** ./node_modules/lodash/_isIterateeCall.js ***!
|
||
\************************************************/
|
||
/*! no static exports found */function(module,exports,__webpack_require__){"use strict";eval('\n\nfunction _typeof(obj) { "@babel/helpers - typeof"; if (typeof Symbol === "function" && typeof Symbol.iterator === "symbol") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }; } return _typeof(obj); }\n\nvar eq = __webpack_require__(/*! ./eq */ "./node_modules/lodash/eq.js"),\n isArrayLike = __webpack_require__(/*! ./isArrayLike */ "./node_modules/lodash/isArrayLike.js"),\n isIndex = __webpack_require__(/*! ./_isIndex */ "./node_modules/lodash/_isIndex.js"),\n isObject = __webpack_require__(/*! ./isObject */ "./node_modules/lodash/isObject.js");\n/**\n * Checks if the given arguments are from an iteratee call.\n *\n * @private\n * @param {*} value The potential iteratee value argument.\n * @param {*} index The potential iteratee index or key argument.\n * @param {*} object The potential iteratee object argument.\n * @returns {boolean} Returns `true` if the arguments are from an iteratee call,\n * else `false`.\n */\n\n\nfunction isIterateeCall(value, index, object) {\n if (!isObject(object)) {\n return false;\n }\n\n var type = _typeof(index);\n\n if (type == \'number\' ? isArrayLike(object) && isIndex(index, object.length) : type == \'string\' && index in object) {\n return eq(object[index], value);\n }\n\n return false;\n}\n\nmodule.exports = isIterateeCall;//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvbG9kYXNoL19pc0l0ZXJhdGVlQ2FsbC5qcy5qcyIsInNvdXJjZXMiOlsid2VicGFjazovL1NOTGlicmFyeS8uL25vZGVfbW9kdWxlcy9sb2Rhc2gvX2lzSXRlcmF0ZWVDYWxsLmpzPzlhZmYiXSwic291cmNlc0NvbnRlbnQiOlsiXCJ1c2Ugc3RyaWN0XCI7XG52YXIgZXEgPSByZXF1aXJlKCcuL2VxJyksIGlzQXJyYXlMaWtlID0gcmVxdWlyZSgnLi9pc0FycmF5TGlrZScpLCBpc0luZGV4ID0gcmVxdWlyZSgnLi9faXNJbmRleCcpLCBpc09iamVjdCA9IHJlcXVpcmUoJy4vaXNPYmplY3QnKTtcbi8qKlxuICogQ2hlY2tzIGlmIHRoZSBnaXZlbiBhcmd1bWVudHMgYXJlIGZyb20gYW4gaXRlcmF0ZWUgY2FsbC5cbiAqXG4gKiBAcHJpdmF0ZVxuICogQHBhcmFtIHsqfSB2YWx1ZSBUaGUgcG90ZW50aWFsIGl0ZXJhdGVlIHZhbHVlIGFyZ3VtZW50LlxuICogQHBhcmFtIHsqfSBpbmRleCBUaGUgcG90ZW50aWFsIGl0ZXJhdGVlIGluZGV4IG9yIGtleSBhcmd1bWVudC5cbiAqIEBwYXJhbSB7Kn0gb2JqZWN0IFRoZSBwb3RlbnRpYWwgaXRlcmF0ZWUgb2JqZWN0IGFyZ3VtZW50LlxuICogQHJldHVybnMge2Jvb2xlYW59IFJldHVybnMgYHRydWVgIGlmIHRoZSBhcmd1bWVudHMgYXJlIGZyb20gYW4gaXRlcmF0ZWUgY2FsbCxcbiAqICBlbHNlIGBmYWxzZWAuXG4gKi9cbmZ1bmN0aW9uIGlzSXRlcmF0ZWVDYWxsKHZhbHVlLCBpbmRleCwgb2JqZWN0KSB7XG4gICAgaWYgKCFpc09iamVjdChvYmplY3QpKSB7XG4gICAgICAgIHJldHVybiBmYWxzZTtcbiAgICB9XG4gICAgdmFyIHR5cGUgPSB0eXBlb2YgaW5kZXg7XG4gICAgaWYgKHR5cGUgPT0gJ251bWJlcidcbiAgICAgICAgPyAoaXNBcnJheUxpa2Uob2JqZWN0KSAmJiBpc0luZGV4KGluZGV4LCBvYmplY3QubGVuZ3RoKSlcbiAgICAgICAgOiAodHlwZSA9PSAnc3RyaW5nJyAmJiBpbmRleCBpbiBvYmplY3QpKSB7XG4gICAgICAgIHJldHVybiBlcShvYmplY3RbaW5kZXhdLCB2YWx1ZSk7XG4gICAgfVxuICAgIHJldHVybiBmYWxzZTtcbn1cbm1vZHVsZS5leHBvcnRzID0gaXNJdGVyYXRlZUNhbGw7XG4iXSwibWFwcGluZ3MiOiJBQUFBO0FBQ0E7OztBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQ0E7Ozs7Ozs7Ozs7OztBQVVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQUE7QUFHQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFBQSIsInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./node_modules/lodash/_isIterateeCall.js\n')},"./node_modules/lodash/_isKey.js":
|
||
/*!***************************************!*\
|
||
!*** ./node_modules/lodash/_isKey.js ***!
|
||
\***************************************/
|
||
/*! no static exports found */function(module,exports,__webpack_require__){"use strict";eval('\n\nfunction _typeof(obj) { "@babel/helpers - typeof"; if (typeof Symbol === "function" && typeof Symbol.iterator === "symbol") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }; } return _typeof(obj); }\n\nvar isArray = __webpack_require__(/*! ./isArray */ "./node_modules/lodash/isArray.js"),\n isSymbol = __webpack_require__(/*! ./isSymbol */ "./node_modules/lodash/isSymbol.js");\n/** Used to match property names within property paths. */\n\n\nvar reIsDeepProp = /\\.|\\[(?:[^[\\]]*|(["\'])(?:(?!\\1)[^\\\\]|\\\\.)*?\\1)\\]/,\n reIsPlainProp = /^\\w*$/;\n/**\n * Checks if `value` is a property name and not a property path.\n *\n * @private\n * @param {*} value The value to check.\n * @param {Object} [object] The object to query keys on.\n * @returns {boolean} Returns `true` if `value` is a property name, else `false`.\n */\n\nfunction isKey(value, object) {\n if (isArray(value)) {\n return false;\n }\n\n var type = _typeof(value);\n\n if (type == \'number\' || type == \'symbol\' || type == \'boolean\' || value == null || isSymbol(value)) {\n return true;\n }\n\n return reIsPlainProp.test(value) || !reIsDeepProp.test(value) || object != null && value in Object(object);\n}\n\nmodule.exports = isKey;//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvbG9kYXNoL19pc0tleS5qcy5qcyIsInNvdXJjZXMiOlsid2VicGFjazovL1NOTGlicmFyeS8uL25vZGVfbW9kdWxlcy9sb2Rhc2gvX2lzS2V5LmpzP2Y2MDgiXSwic291cmNlc0NvbnRlbnQiOlsiXCJ1c2Ugc3RyaWN0XCI7XG52YXIgaXNBcnJheSA9IHJlcXVpcmUoJy4vaXNBcnJheScpLCBpc1N5bWJvbCA9IHJlcXVpcmUoJy4vaXNTeW1ib2wnKTtcbi8qKiBVc2VkIHRvIG1hdGNoIHByb3BlcnR5IG5hbWVzIHdpdGhpbiBwcm9wZXJ0eSBwYXRocy4gKi9cbnZhciByZUlzRGVlcFByb3AgPSAvXFwufFxcWyg/OlteW1xcXV0qfChbXCInXSkoPzooPyFcXDEpW15cXFxcXXxcXFxcLikqP1xcMSlcXF0vLCByZUlzUGxhaW5Qcm9wID0gL15cXHcqJC87XG4vKipcbiAqIENoZWNrcyBpZiBgdmFsdWVgIGlzIGEgcHJvcGVydHkgbmFtZSBhbmQgbm90IGEgcHJvcGVydHkgcGF0aC5cbiAqXG4gKiBAcHJpdmF0ZVxuICogQHBhcmFtIHsqfSB2YWx1ZSBUaGUgdmFsdWUgdG8gY2hlY2suXG4gKiBAcGFyYW0ge09iamVjdH0gW29iamVjdF0gVGhlIG9iamVjdCB0byBxdWVyeSBrZXlzIG9uLlxuICogQHJldHVybnMge2Jvb2xlYW59IFJldHVybnMgYHRydWVgIGlmIGB2YWx1ZWAgaXMgYSBwcm9wZXJ0eSBuYW1lLCBlbHNlIGBmYWxzZWAuXG4gKi9cbmZ1bmN0aW9uIGlzS2V5KHZhbHVlLCBvYmplY3QpIHtcbiAgICBpZiAoaXNBcnJheSh2YWx1ZSkpIHtcbiAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH1cbiAgICB2YXIgdHlwZSA9IHR5cGVvZiB2YWx1ZTtcbiAgICBpZiAodHlwZSA9PSAnbnVtYmVyJyB8fCB0eXBlID09ICdzeW1ib2wnIHx8IHR5cGUgPT0gJ2Jvb2xlYW4nIHx8XG4gICAgICAgIHZhbHVlID09IG51bGwgfHwgaXNTeW1ib2wodmFsdWUpKSB7XG4gICAgICAgIHJldHVybiB0cnVlO1xuICAgIH1cbiAgICByZXR1cm4gcmVJc1BsYWluUHJvcC50ZXN0KHZhbHVlKSB8fCAhcmVJc0RlZXBQcm9wLnRlc3QodmFsdWUpIHx8XG4gICAgICAgIChvYmplY3QgIT0gbnVsbCAmJiB2YWx1ZSBpbiBPYmplY3Qob2JqZWN0KSk7XG59XG5tb2R1bGUuZXhwb3J0cyA9IGlzS2V5O1xuIl0sIm1hcHBpbmdzIjoiQUFBQTtBQUNBOzs7QUFBQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBREE7QUFBQTtBQUNBOzs7Ozs7Ozs7QUFRQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUFBO0FBRUE7QUFDQTtBQUNBO0FBQUE7QUFFQTtBQUNBO0FBQUEiLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./node_modules/lodash/_isKey.js\n')},"./node_modules/lodash/_isKeyable.js":
|
||
/*!*******************************************!*\
|
||
!*** ./node_modules/lodash/_isKeyable.js ***!
|
||
\*******************************************/
|
||
/*! no static exports found */function(module,exports,__webpack_require__){"use strict";eval("\n/**\n * Checks if `value` is suitable for use as unique object key.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is suitable, else `false`.\n */\n\nfunction _typeof(obj) { \"@babel/helpers - typeof\"; if (typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; }; } return _typeof(obj); }\n\nfunction isKeyable(value) {\n var type = _typeof(value);\n\n return type == 'string' || type == 'number' || type == 'symbol' || type == 'boolean' ? value !== '__proto__' : value === null;\n}\n\nmodule.exports = isKeyable;//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvbG9kYXNoL19pc0tleWFibGUuanMuanMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly9TTkxpYnJhcnkvLi9ub2RlX21vZHVsZXMvbG9kYXNoL19pc0tleWFibGUuanM/MTI5MCJdLCJzb3VyY2VzQ29udGVudCI6WyJcInVzZSBzdHJpY3RcIjtcbi8qKlxuICogQ2hlY2tzIGlmIGB2YWx1ZWAgaXMgc3VpdGFibGUgZm9yIHVzZSBhcyB1bmlxdWUgb2JqZWN0IGtleS5cbiAqXG4gKiBAcHJpdmF0ZVxuICogQHBhcmFtIHsqfSB2YWx1ZSBUaGUgdmFsdWUgdG8gY2hlY2suXG4gKiBAcmV0dXJucyB7Ym9vbGVhbn0gUmV0dXJucyBgdHJ1ZWAgaWYgYHZhbHVlYCBpcyBzdWl0YWJsZSwgZWxzZSBgZmFsc2VgLlxuICovXG5mdW5jdGlvbiBpc0tleWFibGUodmFsdWUpIHtcbiAgICB2YXIgdHlwZSA9IHR5cGVvZiB2YWx1ZTtcbiAgICByZXR1cm4gKHR5cGUgPT0gJ3N0cmluZycgfHwgdHlwZSA9PSAnbnVtYmVyJyB8fCB0eXBlID09ICdzeW1ib2wnIHx8IHR5cGUgPT0gJ2Jvb2xlYW4nKVxuICAgICAgICA/ICh2YWx1ZSAhPT0gJ19fcHJvdG9fXycpXG4gICAgICAgIDogKHZhbHVlID09PSBudWxsKTtcbn1cbm1vZHVsZS5leHBvcnRzID0gaXNLZXlhYmxlO1xuIl0sIm1hcHBpbmdzIjoiQUFBQTtBQUNBOzs7Ozs7Ozs7O0FBT0E7QUFDQTtBQUNBO0FBQUE7QUFHQTtBQUNBO0FBQUEiLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./node_modules/lodash/_isKeyable.js\n")},"./node_modules/lodash/_isMasked.js":
|
||
/*!******************************************!*\
|
||
!*** ./node_modules/lodash/_isMasked.js ***!
|
||
\******************************************/
|
||
/*! no static exports found */function(module,exports,__webpack_require__){"use strict";eval("\n\nvar coreJsData = __webpack_require__(/*! ./_coreJsData */ \"./node_modules/lodash/_coreJsData.js\");\n/** Used to detect methods masquerading as native. */\n\n\nvar maskSrcKey = function () {\n var uid = /[^.]+$/.exec(coreJsData && coreJsData.keys && coreJsData.keys.IE_PROTO || '');\n return uid ? 'Symbol(src)_1.' + uid : '';\n}();\n/**\n * Checks if `func` has its source masked.\n *\n * @private\n * @param {Function} func The function to check.\n * @returns {boolean} Returns `true` if `func` is masked, else `false`.\n */\n\n\nfunction isMasked(func) {\n return !!maskSrcKey && maskSrcKey in func;\n}\n\nmodule.exports = isMasked;//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvbG9kYXNoL19pc01hc2tlZC5qcy5qcyIsInNvdXJjZXMiOlsid2VicGFjazovL1NOTGlicmFyeS8uL25vZGVfbW9kdWxlcy9sb2Rhc2gvX2lzTWFza2VkLmpzPzEzNjgiXSwic291cmNlc0NvbnRlbnQiOlsiXCJ1c2Ugc3RyaWN0XCI7XG52YXIgY29yZUpzRGF0YSA9IHJlcXVpcmUoJy4vX2NvcmVKc0RhdGEnKTtcbi8qKiBVc2VkIHRvIGRldGVjdCBtZXRob2RzIG1hc3F1ZXJhZGluZyBhcyBuYXRpdmUuICovXG52YXIgbWFza1NyY0tleSA9IChmdW5jdGlvbiAoKSB7XG4gICAgdmFyIHVpZCA9IC9bXi5dKyQvLmV4ZWMoY29yZUpzRGF0YSAmJiBjb3JlSnNEYXRhLmtleXMgJiYgY29yZUpzRGF0YS5rZXlzLklFX1BST1RPIHx8ICcnKTtcbiAgICByZXR1cm4gdWlkID8gKCdTeW1ib2woc3JjKV8xLicgKyB1aWQpIDogJyc7XG59KCkpO1xuLyoqXG4gKiBDaGVja3MgaWYgYGZ1bmNgIGhhcyBpdHMgc291cmNlIG1hc2tlZC5cbiAqXG4gKiBAcHJpdmF0ZVxuICogQHBhcmFtIHtGdW5jdGlvbn0gZnVuYyBUaGUgZnVuY3Rpb24gdG8gY2hlY2suXG4gKiBAcmV0dXJucyB7Ym9vbGVhbn0gUmV0dXJucyBgdHJ1ZWAgaWYgYGZ1bmNgIGlzIG1hc2tlZCwgZWxzZSBgZmFsc2VgLlxuICovXG5mdW5jdGlvbiBpc01hc2tlZChmdW5jKSB7XG4gICAgcmV0dXJuICEhbWFza1NyY0tleSAmJiAobWFza1NyY0tleSBpbiBmdW5jKTtcbn1cbm1vZHVsZS5leHBvcnRzID0gaXNNYXNrZWQ7XG4iXSwibWFwcGluZ3MiOiJBQUFBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQURBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7Ozs7Ozs7OztBQU9BO0FBQ0E7QUFDQTtBQUNBO0FBQUEiLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./node_modules/lodash/_isMasked.js\n")},"./node_modules/lodash/_isPrototype.js":
|
||
/*!*********************************************!*\
|
||
!*** ./node_modules/lodash/_isPrototype.js ***!
|
||
\*********************************************/
|
||
/*! no static exports found */function(module,exports,__webpack_require__){"use strict";eval("\n/** Used for built-in method references. */\n\nvar objectProto = Object.prototype;\n/**\n * Checks if `value` is likely a prototype object.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a prototype, else `false`.\n */\n\nfunction isPrototype(value) {\n var Ctor = value && value.constructor,\n proto = typeof Ctor == 'function' && Ctor.prototype || objectProto;\n return value === proto;\n}\n\nmodule.exports = isPrototype;//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvbG9kYXNoL19pc1Byb3RvdHlwZS5qcy5qcyIsInNvdXJjZXMiOlsid2VicGFjazovL1NOTGlicmFyeS8uL25vZGVfbW9kdWxlcy9sb2Rhc2gvX2lzUHJvdG90eXBlLmpzP2VhYzUiXSwic291cmNlc0NvbnRlbnQiOlsiXCJ1c2Ugc3RyaWN0XCI7XG4vKiogVXNlZCBmb3IgYnVpbHQtaW4gbWV0aG9kIHJlZmVyZW5jZXMuICovXG52YXIgb2JqZWN0UHJvdG8gPSBPYmplY3QucHJvdG90eXBlO1xuLyoqXG4gKiBDaGVja3MgaWYgYHZhbHVlYCBpcyBsaWtlbHkgYSBwcm90b3R5cGUgb2JqZWN0LlxuICpcbiAqIEBwcml2YXRlXG4gKiBAcGFyYW0geyp9IHZhbHVlIFRoZSB2YWx1ZSB0byBjaGVjay5cbiAqIEByZXR1cm5zIHtib29sZWFufSBSZXR1cm5zIGB0cnVlYCBpZiBgdmFsdWVgIGlzIGEgcHJvdG90eXBlLCBlbHNlIGBmYWxzZWAuXG4gKi9cbmZ1bmN0aW9uIGlzUHJvdG90eXBlKHZhbHVlKSB7XG4gICAgdmFyIEN0b3IgPSB2YWx1ZSAmJiB2YWx1ZS5jb25zdHJ1Y3RvciwgcHJvdG8gPSAodHlwZW9mIEN0b3IgPT0gJ2Z1bmN0aW9uJyAmJiBDdG9yLnByb3RvdHlwZSkgfHwgb2JqZWN0UHJvdG87XG4gICAgcmV0dXJuIHZhbHVlID09PSBwcm90bztcbn1cbm1vZHVsZS5leHBvcnRzID0gaXNQcm90b3R5cGU7XG4iXSwibWFwcGluZ3MiOiJBQUFBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7Ozs7Ozs7O0FBT0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQUEiLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./node_modules/lodash/_isPrototype.js\n")},"./node_modules/lodash/_isStrictComparable.js":
|
||
/*!****************************************************!*\
|
||
!*** ./node_modules/lodash/_isStrictComparable.js ***!
|
||
\****************************************************/
|
||
/*! no static exports found */function(module,exports,__webpack_require__){"use strict";eval('\n\nvar isObject = __webpack_require__(/*! ./isObject */ "./node_modules/lodash/isObject.js");\n/**\n * Checks if `value` is suitable for strict equality comparisons, i.e. `===`.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` if suitable for strict\n * equality comparisons, else `false`.\n */\n\n\nfunction isStrictComparable(value) {\n return value === value && !isObject(value);\n}\n\nmodule.exports = isStrictComparable;//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvbG9kYXNoL19pc1N0cmljdENvbXBhcmFibGUuanMuanMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly9TTkxpYnJhcnkvLi9ub2RlX21vZHVsZXMvbG9kYXNoL19pc1N0cmljdENvbXBhcmFibGUuanM/MDhjYyJdLCJzb3VyY2VzQ29udGVudCI6WyJcInVzZSBzdHJpY3RcIjtcbnZhciBpc09iamVjdCA9IHJlcXVpcmUoJy4vaXNPYmplY3QnKTtcbi8qKlxuICogQ2hlY2tzIGlmIGB2YWx1ZWAgaXMgc3VpdGFibGUgZm9yIHN0cmljdCBlcXVhbGl0eSBjb21wYXJpc29ucywgaS5lLiBgPT09YC5cbiAqXG4gKiBAcHJpdmF0ZVxuICogQHBhcmFtIHsqfSB2YWx1ZSBUaGUgdmFsdWUgdG8gY2hlY2suXG4gKiBAcmV0dXJucyB7Ym9vbGVhbn0gUmV0dXJucyBgdHJ1ZWAgaWYgYHZhbHVlYCBpZiBzdWl0YWJsZSBmb3Igc3RyaWN0XG4gKiAgZXF1YWxpdHkgY29tcGFyaXNvbnMsIGVsc2UgYGZhbHNlYC5cbiAqL1xuZnVuY3Rpb24gaXNTdHJpY3RDb21wYXJhYmxlKHZhbHVlKSB7XG4gICAgcmV0dXJuIHZhbHVlID09PSB2YWx1ZSAmJiAhaXNPYmplY3QodmFsdWUpO1xufVxubW9kdWxlLmV4cG9ydHMgPSBpc1N0cmljdENvbXBhcmFibGU7XG4iXSwibWFwcGluZ3MiOiJBQUFBO0FBQ0E7QUFBQTtBQUNBOzs7Ozs7Ozs7O0FBUUE7QUFDQTtBQUNBO0FBQ0E7QUFBQSIsInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./node_modules/lodash/_isStrictComparable.js\n')},"./node_modules/lodash/_listCacheClear.js":
|
||
/*!************************************************!*\
|
||
!*** ./node_modules/lodash/_listCacheClear.js ***!
|
||
\************************************************/
|
||
/*! no static exports found */function(module,exports,__webpack_require__){"use strict";eval("\n/**\n * Removes all key-value entries from the list cache.\n *\n * @private\n * @name clear\n * @memberOf ListCache\n */\n\nfunction listCacheClear() {\n this.__data__ = [];\n this.size = 0;\n}\n\nmodule.exports = listCacheClear;//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvbG9kYXNoL19saXN0Q2FjaGVDbGVhci5qcy5qcyIsInNvdXJjZXMiOlsid2VicGFjazovL1NOTGlicmFyeS8uL25vZGVfbW9kdWxlcy9sb2Rhc2gvX2xpc3RDYWNoZUNsZWFyLmpzPzI4YzkiXSwic291cmNlc0NvbnRlbnQiOlsiXCJ1c2Ugc3RyaWN0XCI7XG4vKipcbiAqIFJlbW92ZXMgYWxsIGtleS12YWx1ZSBlbnRyaWVzIGZyb20gdGhlIGxpc3QgY2FjaGUuXG4gKlxuICogQHByaXZhdGVcbiAqIEBuYW1lIGNsZWFyXG4gKiBAbWVtYmVyT2YgTGlzdENhY2hlXG4gKi9cbmZ1bmN0aW9uIGxpc3RDYWNoZUNsZWFyKCkge1xuICAgIHRoaXMuX19kYXRhX18gPSBbXTtcbiAgICB0aGlzLnNpemUgPSAwO1xufVxubW9kdWxlLmV4cG9ydHMgPSBsaXN0Q2FjaGVDbGVhcjtcbiJdLCJtYXBwaW5ncyI6IkFBQUE7QUFDQTs7Ozs7Ozs7QUFPQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUEiLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./node_modules/lodash/_listCacheClear.js\n")},"./node_modules/lodash/_listCacheDelete.js":
|
||
/*!*************************************************!*\
|
||
!*** ./node_modules/lodash/_listCacheDelete.js ***!
|
||
\*************************************************/
|
||
/*! no static exports found */function(module,exports,__webpack_require__){"use strict";eval('\n\nvar assocIndexOf = __webpack_require__(/*! ./_assocIndexOf */ "./node_modules/lodash/_assocIndexOf.js");\n/** Used for built-in method references. */\n\n\nvar arrayProto = Array.prototype;\n/** Built-in value references. */\n\nvar splice = arrayProto.splice;\n/**\n * Removes `key` and its value from the list cache.\n *\n * @private\n * @name delete\n * @memberOf ListCache\n * @param {string} key The key of the value to remove.\n * @returns {boolean} Returns `true` if the entry was removed, else `false`.\n */\n\nfunction listCacheDelete(key) {\n var data = this.__data__,\n index = assocIndexOf(data, key);\n\n if (index < 0) {\n return false;\n }\n\n var lastIndex = data.length - 1;\n\n if (index == lastIndex) {\n data.pop();\n } else {\n splice.call(data, index, 1);\n }\n\n --this.size;\n return true;\n}\n\nmodule.exports = listCacheDelete;//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvbG9kYXNoL19saXN0Q2FjaGVEZWxldGUuanMuanMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly9TTkxpYnJhcnkvLi9ub2RlX21vZHVsZXMvbG9kYXNoL19saXN0Q2FjaGVEZWxldGUuanM/NjlkNSJdLCJzb3VyY2VzQ29udGVudCI6WyJcInVzZSBzdHJpY3RcIjtcbnZhciBhc3NvY0luZGV4T2YgPSByZXF1aXJlKCcuL19hc3NvY0luZGV4T2YnKTtcbi8qKiBVc2VkIGZvciBidWlsdC1pbiBtZXRob2QgcmVmZXJlbmNlcy4gKi9cbnZhciBhcnJheVByb3RvID0gQXJyYXkucHJvdG90eXBlO1xuLyoqIEJ1aWx0LWluIHZhbHVlIHJlZmVyZW5jZXMuICovXG52YXIgc3BsaWNlID0gYXJyYXlQcm90by5zcGxpY2U7XG4vKipcbiAqIFJlbW92ZXMgYGtleWAgYW5kIGl0cyB2YWx1ZSBmcm9tIHRoZSBsaXN0IGNhY2hlLlxuICpcbiAqIEBwcml2YXRlXG4gKiBAbmFtZSBkZWxldGVcbiAqIEBtZW1iZXJPZiBMaXN0Q2FjaGVcbiAqIEBwYXJhbSB7c3RyaW5nfSBrZXkgVGhlIGtleSBvZiB0aGUgdmFsdWUgdG8gcmVtb3ZlLlxuICogQHJldHVybnMge2Jvb2xlYW59IFJldHVybnMgYHRydWVgIGlmIHRoZSBlbnRyeSB3YXMgcmVtb3ZlZCwgZWxzZSBgZmFsc2VgLlxuICovXG5mdW5jdGlvbiBsaXN0Q2FjaGVEZWxldGUoa2V5KSB7XG4gICAgdmFyIGRhdGEgPSB0aGlzLl9fZGF0YV9fLCBpbmRleCA9IGFzc29jSW5kZXhPZihkYXRhLCBrZXkpO1xuICAgIGlmIChpbmRleCA8IDApIHtcbiAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH1cbiAgICB2YXIgbGFzdEluZGV4ID0gZGF0YS5sZW5ndGggLSAxO1xuICAgIGlmIChpbmRleCA9PSBsYXN0SW5kZXgpIHtcbiAgICAgICAgZGF0YS5wb3AoKTtcbiAgICB9XG4gICAgZWxzZSB7XG4gICAgICAgIHNwbGljZS5jYWxsKGRhdGEsIGluZGV4LCAxKTtcbiAgICB9XG4gICAgLS10aGlzLnNpemU7XG4gICAgcmV0dXJuIHRydWU7XG59XG5tb2R1bGUuZXhwb3J0cyA9IGxpc3RDYWNoZURlbGV0ZTtcbiJdLCJtYXBwaW5ncyI6IkFBQUE7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBREE7QUFDQTtBQUNBO0FBQUE7QUFDQTs7Ozs7Ozs7OztBQVNBO0FBQ0E7QUFBQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBRUE7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFBQSIsInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./node_modules/lodash/_listCacheDelete.js\n')},"./node_modules/lodash/_listCacheGet.js":
|
||
/*!**********************************************!*\
|
||
!*** ./node_modules/lodash/_listCacheGet.js ***!
|
||
\**********************************************/
|
||
/*! no static exports found */function(module,exports,__webpack_require__){"use strict";eval('\n\nvar assocIndexOf = __webpack_require__(/*! ./_assocIndexOf */ "./node_modules/lodash/_assocIndexOf.js");\n/**\n * Gets the list cache value for `key`.\n *\n * @private\n * @name get\n * @memberOf ListCache\n * @param {string} key The key of the value to get.\n * @returns {*} Returns the entry value.\n */\n\n\nfunction listCacheGet(key) {\n var data = this.__data__,\n index = assocIndexOf(data, key);\n return index < 0 ? undefined : data[index][1];\n}\n\nmodule.exports = listCacheGet;//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvbG9kYXNoL19saXN0Q2FjaGVHZXQuanMuanMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly9TTkxpYnJhcnkvLi9ub2RlX21vZHVsZXMvbG9kYXNoL19saXN0Q2FjaGVHZXQuanM/YjRjMCJdLCJzb3VyY2VzQ29udGVudCI6WyJcInVzZSBzdHJpY3RcIjtcbnZhciBhc3NvY0luZGV4T2YgPSByZXF1aXJlKCcuL19hc3NvY0luZGV4T2YnKTtcbi8qKlxuICogR2V0cyB0aGUgbGlzdCBjYWNoZSB2YWx1ZSBmb3IgYGtleWAuXG4gKlxuICogQHByaXZhdGVcbiAqIEBuYW1lIGdldFxuICogQG1lbWJlck9mIExpc3RDYWNoZVxuICogQHBhcmFtIHtzdHJpbmd9IGtleSBUaGUga2V5IG9mIHRoZSB2YWx1ZSB0byBnZXQuXG4gKiBAcmV0dXJucyB7Kn0gUmV0dXJucyB0aGUgZW50cnkgdmFsdWUuXG4gKi9cbmZ1bmN0aW9uIGxpc3RDYWNoZUdldChrZXkpIHtcbiAgICB2YXIgZGF0YSA9IHRoaXMuX19kYXRhX18sIGluZGV4ID0gYXNzb2NJbmRleE9mKGRhdGEsIGtleSk7XG4gICAgcmV0dXJuIGluZGV4IDwgMCA/IHVuZGVmaW5lZCA6IGRhdGFbaW5kZXhdWzFdO1xufVxubW9kdWxlLmV4cG9ydHMgPSBsaXN0Q2FjaGVHZXQ7XG4iXSwibWFwcGluZ3MiOiJBQUFBO0FBQ0E7QUFBQTtBQUNBOzs7Ozs7Ozs7OztBQVNBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUFBIiwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./node_modules/lodash/_listCacheGet.js\n')},"./node_modules/lodash/_listCacheHas.js":
|
||
/*!**********************************************!*\
|
||
!*** ./node_modules/lodash/_listCacheHas.js ***!
|
||
\**********************************************/
|
||
/*! no static exports found */function(module,exports,__webpack_require__){"use strict";eval('\n\nvar assocIndexOf = __webpack_require__(/*! ./_assocIndexOf */ "./node_modules/lodash/_assocIndexOf.js");\n/**\n * Checks if a list cache value for `key` exists.\n *\n * @private\n * @name has\n * @memberOf ListCache\n * @param {string} key The key of the entry to check.\n * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.\n */\n\n\nfunction listCacheHas(key) {\n return assocIndexOf(this.__data__, key) > -1;\n}\n\nmodule.exports = listCacheHas;//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvbG9kYXNoL19saXN0Q2FjaGVIYXMuanMuanMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly9TTkxpYnJhcnkvLi9ub2RlX21vZHVsZXMvbG9kYXNoL19saXN0Q2FjaGVIYXMuanM/ZmJhNSJdLCJzb3VyY2VzQ29udGVudCI6WyJcInVzZSBzdHJpY3RcIjtcbnZhciBhc3NvY0luZGV4T2YgPSByZXF1aXJlKCcuL19hc3NvY0luZGV4T2YnKTtcbi8qKlxuICogQ2hlY2tzIGlmIGEgbGlzdCBjYWNoZSB2YWx1ZSBmb3IgYGtleWAgZXhpc3RzLlxuICpcbiAqIEBwcml2YXRlXG4gKiBAbmFtZSBoYXNcbiAqIEBtZW1iZXJPZiBMaXN0Q2FjaGVcbiAqIEBwYXJhbSB7c3RyaW5nfSBrZXkgVGhlIGtleSBvZiB0aGUgZW50cnkgdG8gY2hlY2suXG4gKiBAcmV0dXJucyB7Ym9vbGVhbn0gUmV0dXJucyBgdHJ1ZWAgaWYgYW4gZW50cnkgZm9yIGBrZXlgIGV4aXN0cywgZWxzZSBgZmFsc2VgLlxuICovXG5mdW5jdGlvbiBsaXN0Q2FjaGVIYXMoa2V5KSB7XG4gICAgcmV0dXJuIGFzc29jSW5kZXhPZih0aGlzLl9fZGF0YV9fLCBrZXkpID4gLTE7XG59XG5tb2R1bGUuZXhwb3J0cyA9IGxpc3RDYWNoZUhhcztcbiJdLCJtYXBwaW5ncyI6IkFBQUE7QUFDQTtBQUFBO0FBQ0E7Ozs7Ozs7Ozs7O0FBU0E7QUFDQTtBQUNBO0FBQ0E7QUFBQSIsInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./node_modules/lodash/_listCacheHas.js\n')},"./node_modules/lodash/_listCacheSet.js":
|
||
/*!**********************************************!*\
|
||
!*** ./node_modules/lodash/_listCacheSet.js ***!
|
||
\**********************************************/
|
||
/*! no static exports found */function(module,exports,__webpack_require__){"use strict";eval('\n\nvar assocIndexOf = __webpack_require__(/*! ./_assocIndexOf */ "./node_modules/lodash/_assocIndexOf.js");\n/**\n * Sets the list cache `key` to `value`.\n *\n * @private\n * @name set\n * @memberOf ListCache\n * @param {string} key The key of the value to set.\n * @param {*} value The value to set.\n * @returns {Object} Returns the list cache instance.\n */\n\n\nfunction listCacheSet(key, value) {\n var data = this.__data__,\n index = assocIndexOf(data, key);\n\n if (index < 0) {\n ++this.size;\n data.push([key, value]);\n } else {\n data[index][1] = value;\n }\n\n return this;\n}\n\nmodule.exports = listCacheSet;//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvbG9kYXNoL19saXN0Q2FjaGVTZXQuanMuanMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly9TTkxpYnJhcnkvLi9ub2RlX21vZHVsZXMvbG9kYXNoL19saXN0Q2FjaGVTZXQuanM/NjdjYSJdLCJzb3VyY2VzQ29udGVudCI6WyJcInVzZSBzdHJpY3RcIjtcbnZhciBhc3NvY0luZGV4T2YgPSByZXF1aXJlKCcuL19hc3NvY0luZGV4T2YnKTtcbi8qKlxuICogU2V0cyB0aGUgbGlzdCBjYWNoZSBga2V5YCB0byBgdmFsdWVgLlxuICpcbiAqIEBwcml2YXRlXG4gKiBAbmFtZSBzZXRcbiAqIEBtZW1iZXJPZiBMaXN0Q2FjaGVcbiAqIEBwYXJhbSB7c3RyaW5nfSBrZXkgVGhlIGtleSBvZiB0aGUgdmFsdWUgdG8gc2V0LlxuICogQHBhcmFtIHsqfSB2YWx1ZSBUaGUgdmFsdWUgdG8gc2V0LlxuICogQHJldHVybnMge09iamVjdH0gUmV0dXJucyB0aGUgbGlzdCBjYWNoZSBpbnN0YW5jZS5cbiAqL1xuZnVuY3Rpb24gbGlzdENhY2hlU2V0KGtleSwgdmFsdWUpIHtcbiAgICB2YXIgZGF0YSA9IHRoaXMuX19kYXRhX18sIGluZGV4ID0gYXNzb2NJbmRleE9mKGRhdGEsIGtleSk7XG4gICAgaWYgKGluZGV4IDwgMCkge1xuICAgICAgICArK3RoaXMuc2l6ZTtcbiAgICAgICAgZGF0YS5wdXNoKFtrZXksIHZhbHVlXSk7XG4gICAgfVxuICAgIGVsc2Uge1xuICAgICAgICBkYXRhW2luZGV4XVsxXSA9IHZhbHVlO1xuICAgIH1cbiAgICByZXR1cm4gdGhpcztcbn1cbm1vZHVsZS5leHBvcnRzID0gbGlzdENhY2hlU2V0O1xuIl0sIm1hcHBpbmdzIjoiQUFBQTtBQUNBO0FBQUE7QUFDQTs7Ozs7Ozs7Ozs7O0FBVUE7QUFDQTtBQUFBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUVBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUFBIiwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./node_modules/lodash/_listCacheSet.js\n')},"./node_modules/lodash/_mapCacheClear.js":
|
||
/*!***********************************************!*\
|
||
!*** ./node_modules/lodash/_mapCacheClear.js ***!
|
||
\***********************************************/
|
||
/*! no static exports found */function(module,exports,__webpack_require__){"use strict";eval("\n\nvar Hash = __webpack_require__(/*! ./_Hash */ \"./node_modules/lodash/_Hash.js\"),\n ListCache = __webpack_require__(/*! ./_ListCache */ \"./node_modules/lodash/_ListCache.js\"),\n Map = __webpack_require__(/*! ./_Map */ \"./node_modules/lodash/_Map.js\");\n/**\n * Removes all key-value entries from the map.\n *\n * @private\n * @name clear\n * @memberOf MapCache\n */\n\n\nfunction mapCacheClear() {\n this.size = 0;\n this.__data__ = {\n 'hash': new Hash(),\n 'map': new (Map || ListCache)(),\n 'string': new Hash()\n };\n}\n\nmodule.exports = mapCacheClear;//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvbG9kYXNoL19tYXBDYWNoZUNsZWFyLmpzLmpzIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vU05MaWJyYXJ5Ly4vbm9kZV9tb2R1bGVzL2xvZGFzaC9fbWFwQ2FjaGVDbGVhci5qcz83YzY0Il0sInNvdXJjZXNDb250ZW50IjpbIlwidXNlIHN0cmljdFwiO1xudmFyIEhhc2ggPSByZXF1aXJlKCcuL19IYXNoJyksIExpc3RDYWNoZSA9IHJlcXVpcmUoJy4vX0xpc3RDYWNoZScpLCBNYXAgPSByZXF1aXJlKCcuL19NYXAnKTtcbi8qKlxuICogUmVtb3ZlcyBhbGwga2V5LXZhbHVlIGVudHJpZXMgZnJvbSB0aGUgbWFwLlxuICpcbiAqIEBwcml2YXRlXG4gKiBAbmFtZSBjbGVhclxuICogQG1lbWJlck9mIE1hcENhY2hlXG4gKi9cbmZ1bmN0aW9uIG1hcENhY2hlQ2xlYXIoKSB7XG4gICAgdGhpcy5zaXplID0gMDtcbiAgICB0aGlzLl9fZGF0YV9fID0ge1xuICAgICAgICAnaGFzaCc6IG5ldyBIYXNoLFxuICAgICAgICAnbWFwJzogbmV3IChNYXAgfHwgTGlzdENhY2hlKSxcbiAgICAgICAgJ3N0cmluZyc6IG5ldyBIYXNoXG4gICAgfTtcbn1cbm1vZHVsZS5leHBvcnRzID0gbWFwQ2FjaGVDbGVhcjtcbiJdLCJtYXBwaW5ncyI6IkFBQUE7QUFDQTtBQUFBO0FBQUE7QUFBQTtBQUNBOzs7Ozs7Ozs7QUFPQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFIQTtBQUtBO0FBQ0E7QUFBQSIsInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./node_modules/lodash/_mapCacheClear.js\n")},"./node_modules/lodash/_mapCacheDelete.js":
|
||
/*!************************************************!*\
|
||
!*** ./node_modules/lodash/_mapCacheDelete.js ***!
|
||
\************************************************/
|
||
/*! no static exports found */function(module,exports,__webpack_require__){"use strict";eval("\n\nvar getMapData = __webpack_require__(/*! ./_getMapData */ \"./node_modules/lodash/_getMapData.js\");\n/**\n * Removes `key` and its value from the map.\n *\n * @private\n * @name delete\n * @memberOf MapCache\n * @param {string} key The key of the value to remove.\n * @returns {boolean} Returns `true` if the entry was removed, else `false`.\n */\n\n\nfunction mapCacheDelete(key) {\n var result = getMapData(this, key)['delete'](key);\n this.size -= result ? 1 : 0;\n return result;\n}\n\nmodule.exports = mapCacheDelete;//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvbG9kYXNoL19tYXBDYWNoZURlbGV0ZS5qcy5qcyIsInNvdXJjZXMiOlsid2VicGFjazovL1NOTGlicmFyeS8uL25vZGVfbW9kdWxlcy9sb2Rhc2gvX21hcENhY2hlRGVsZXRlLmpzPzkzZWQiXSwic291cmNlc0NvbnRlbnQiOlsiXCJ1c2Ugc3RyaWN0XCI7XG52YXIgZ2V0TWFwRGF0YSA9IHJlcXVpcmUoJy4vX2dldE1hcERhdGEnKTtcbi8qKlxuICogUmVtb3ZlcyBga2V5YCBhbmQgaXRzIHZhbHVlIGZyb20gdGhlIG1hcC5cbiAqXG4gKiBAcHJpdmF0ZVxuICogQG5hbWUgZGVsZXRlXG4gKiBAbWVtYmVyT2YgTWFwQ2FjaGVcbiAqIEBwYXJhbSB7c3RyaW5nfSBrZXkgVGhlIGtleSBvZiB0aGUgdmFsdWUgdG8gcmVtb3ZlLlxuICogQHJldHVybnMge2Jvb2xlYW59IFJldHVybnMgYHRydWVgIGlmIHRoZSBlbnRyeSB3YXMgcmVtb3ZlZCwgZWxzZSBgZmFsc2VgLlxuICovXG5mdW5jdGlvbiBtYXBDYWNoZURlbGV0ZShrZXkpIHtcbiAgICB2YXIgcmVzdWx0ID0gZ2V0TWFwRGF0YSh0aGlzLCBrZXkpWydkZWxldGUnXShrZXkpO1xuICAgIHRoaXMuc2l6ZSAtPSByZXN1bHQgPyAxIDogMDtcbiAgICByZXR1cm4gcmVzdWx0O1xufVxubW9kdWxlLmV4cG9ydHMgPSBtYXBDYWNoZURlbGV0ZTtcbiJdLCJtYXBwaW5ncyI6IkFBQUE7QUFDQTtBQUFBO0FBQ0E7Ozs7Ozs7Ozs7O0FBU0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUEiLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./node_modules/lodash/_mapCacheDelete.js\n")},"./node_modules/lodash/_mapCacheGet.js":
|
||
/*!*********************************************!*\
|
||
!*** ./node_modules/lodash/_mapCacheGet.js ***!
|
||
\*********************************************/
|
||
/*! no static exports found */function(module,exports,__webpack_require__){"use strict";eval('\n\nvar getMapData = __webpack_require__(/*! ./_getMapData */ "./node_modules/lodash/_getMapData.js");\n/**\n * Gets the map value for `key`.\n *\n * @private\n * @name get\n * @memberOf MapCache\n * @param {string} key The key of the value to get.\n * @returns {*} Returns the entry value.\n */\n\n\nfunction mapCacheGet(key) {\n return getMapData(this, key).get(key);\n}\n\nmodule.exports = mapCacheGet;//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvbG9kYXNoL19tYXBDYWNoZUdldC5qcy5qcyIsInNvdXJjZXMiOlsid2VicGFjazovL1NOTGlicmFyeS8uL25vZGVfbW9kdWxlcy9sb2Rhc2gvX21hcENhY2hlR2V0LmpzPzI0NzgiXSwic291cmNlc0NvbnRlbnQiOlsiXCJ1c2Ugc3RyaWN0XCI7XG52YXIgZ2V0TWFwRGF0YSA9IHJlcXVpcmUoJy4vX2dldE1hcERhdGEnKTtcbi8qKlxuICogR2V0cyB0aGUgbWFwIHZhbHVlIGZvciBga2V5YC5cbiAqXG4gKiBAcHJpdmF0ZVxuICogQG5hbWUgZ2V0XG4gKiBAbWVtYmVyT2YgTWFwQ2FjaGVcbiAqIEBwYXJhbSB7c3RyaW5nfSBrZXkgVGhlIGtleSBvZiB0aGUgdmFsdWUgdG8gZ2V0LlxuICogQHJldHVybnMgeyp9IFJldHVybnMgdGhlIGVudHJ5IHZhbHVlLlxuICovXG5mdW5jdGlvbiBtYXBDYWNoZUdldChrZXkpIHtcbiAgICByZXR1cm4gZ2V0TWFwRGF0YSh0aGlzLCBrZXkpLmdldChrZXkpO1xufVxubW9kdWxlLmV4cG9ydHMgPSBtYXBDYWNoZUdldDtcbiJdLCJtYXBwaW5ncyI6IkFBQUE7QUFDQTtBQUFBO0FBQ0E7Ozs7Ozs7Ozs7O0FBU0E7QUFDQTtBQUNBO0FBQ0E7QUFBQSIsInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./node_modules/lodash/_mapCacheGet.js\n')},"./node_modules/lodash/_mapCacheHas.js":
|
||
/*!*********************************************!*\
|
||
!*** ./node_modules/lodash/_mapCacheHas.js ***!
|
||
\*********************************************/
|
||
/*! no static exports found */function(module,exports,__webpack_require__){"use strict";eval('\n\nvar getMapData = __webpack_require__(/*! ./_getMapData */ "./node_modules/lodash/_getMapData.js");\n/**\n * Checks if a map value for `key` exists.\n *\n * @private\n * @name has\n * @memberOf MapCache\n * @param {string} key The key of the entry to check.\n * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.\n */\n\n\nfunction mapCacheHas(key) {\n return getMapData(this, key).has(key);\n}\n\nmodule.exports = mapCacheHas;//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvbG9kYXNoL19tYXBDYWNoZUhhcy5qcy5qcyIsInNvdXJjZXMiOlsid2VicGFjazovL1NOTGlicmFyeS8uL25vZGVfbW9kdWxlcy9sb2Rhc2gvX21hcENhY2hlSGFzLmpzP2E1MjQiXSwic291cmNlc0NvbnRlbnQiOlsiXCJ1c2Ugc3RyaWN0XCI7XG52YXIgZ2V0TWFwRGF0YSA9IHJlcXVpcmUoJy4vX2dldE1hcERhdGEnKTtcbi8qKlxuICogQ2hlY2tzIGlmIGEgbWFwIHZhbHVlIGZvciBga2V5YCBleGlzdHMuXG4gKlxuICogQHByaXZhdGVcbiAqIEBuYW1lIGhhc1xuICogQG1lbWJlck9mIE1hcENhY2hlXG4gKiBAcGFyYW0ge3N0cmluZ30ga2V5IFRoZSBrZXkgb2YgdGhlIGVudHJ5IHRvIGNoZWNrLlxuICogQHJldHVybnMge2Jvb2xlYW59IFJldHVybnMgYHRydWVgIGlmIGFuIGVudHJ5IGZvciBga2V5YCBleGlzdHMsIGVsc2UgYGZhbHNlYC5cbiAqL1xuZnVuY3Rpb24gbWFwQ2FjaGVIYXMoa2V5KSB7XG4gICAgcmV0dXJuIGdldE1hcERhdGEodGhpcywga2V5KS5oYXMoa2V5KTtcbn1cbm1vZHVsZS5leHBvcnRzID0gbWFwQ2FjaGVIYXM7XG4iXSwibWFwcGluZ3MiOiJBQUFBO0FBQ0E7QUFBQTtBQUNBOzs7Ozs7Ozs7OztBQVNBO0FBQ0E7QUFDQTtBQUNBO0FBQUEiLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./node_modules/lodash/_mapCacheHas.js\n')},"./node_modules/lodash/_mapCacheSet.js":
|
||
/*!*********************************************!*\
|
||
!*** ./node_modules/lodash/_mapCacheSet.js ***!
|
||
\*********************************************/
|
||
/*! no static exports found */function(module,exports,__webpack_require__){"use strict";eval('\n\nvar getMapData = __webpack_require__(/*! ./_getMapData */ "./node_modules/lodash/_getMapData.js");\n/**\n * Sets the map `key` to `value`.\n *\n * @private\n * @name set\n * @memberOf MapCache\n * @param {string} key The key of the value to set.\n * @param {*} value The value to set.\n * @returns {Object} Returns the map cache instance.\n */\n\n\nfunction mapCacheSet(key, value) {\n var data = getMapData(this, key),\n size = data.size;\n data.set(key, value);\n this.size += data.size == size ? 0 : 1;\n return this;\n}\n\nmodule.exports = mapCacheSet;//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvbG9kYXNoL19tYXBDYWNoZVNldC5qcy5qcyIsInNvdXJjZXMiOlsid2VicGFjazovL1NOTGlicmFyeS8uL25vZGVfbW9kdWxlcy9sb2Rhc2gvX21hcENhY2hlU2V0LmpzPzFmYzgiXSwic291cmNlc0NvbnRlbnQiOlsiXCJ1c2Ugc3RyaWN0XCI7XG52YXIgZ2V0TWFwRGF0YSA9IHJlcXVpcmUoJy4vX2dldE1hcERhdGEnKTtcbi8qKlxuICogU2V0cyB0aGUgbWFwIGBrZXlgIHRvIGB2YWx1ZWAuXG4gKlxuICogQHByaXZhdGVcbiAqIEBuYW1lIHNldFxuICogQG1lbWJlck9mIE1hcENhY2hlXG4gKiBAcGFyYW0ge3N0cmluZ30ga2V5IFRoZSBrZXkgb2YgdGhlIHZhbHVlIHRvIHNldC5cbiAqIEBwYXJhbSB7Kn0gdmFsdWUgVGhlIHZhbHVlIHRvIHNldC5cbiAqIEByZXR1cm5zIHtPYmplY3R9IFJldHVybnMgdGhlIG1hcCBjYWNoZSBpbnN0YW5jZS5cbiAqL1xuZnVuY3Rpb24gbWFwQ2FjaGVTZXQoa2V5LCB2YWx1ZSkge1xuICAgIHZhciBkYXRhID0gZ2V0TWFwRGF0YSh0aGlzLCBrZXkpLCBzaXplID0gZGF0YS5zaXplO1xuICAgIGRhdGEuc2V0KGtleSwgdmFsdWUpO1xuICAgIHRoaXMuc2l6ZSArPSBkYXRhLnNpemUgPT0gc2l6ZSA/IDAgOiAxO1xuICAgIHJldHVybiB0aGlzO1xufVxubW9kdWxlLmV4cG9ydHMgPSBtYXBDYWNoZVNldDtcbiJdLCJtYXBwaW5ncyI6IkFBQUE7QUFDQTtBQUFBO0FBQ0E7Ozs7Ozs7Ozs7OztBQVVBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQSIsInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./node_modules/lodash/_mapCacheSet.js\n')},"./node_modules/lodash/_mapToArray.js":
|
||
/*!********************************************!*\
|
||
!*** ./node_modules/lodash/_mapToArray.js ***!
|
||
\********************************************/
|
||
/*! no static exports found */function(module,exports,__webpack_require__){"use strict";eval("\n/**\n * Converts `map` to its key-value pairs.\n *\n * @private\n * @param {Object} map The map to convert.\n * @returns {Array} Returns the key-value pairs.\n */\n\nfunction mapToArray(map) {\n var index = -1,\n result = Array(map.size);\n map.forEach(function (value, key) {\n result[++index] = [key, value];\n });\n return result;\n}\n\nmodule.exports = mapToArray;//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvbG9kYXNoL19tYXBUb0FycmF5LmpzLmpzIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vU05MaWJyYXJ5Ly4vbm9kZV9tb2R1bGVzL2xvZGFzaC9fbWFwVG9BcnJheS5qcz9lZGZhIl0sInNvdXJjZXNDb250ZW50IjpbIlwidXNlIHN0cmljdFwiO1xuLyoqXG4gKiBDb252ZXJ0cyBgbWFwYCB0byBpdHMga2V5LXZhbHVlIHBhaXJzLlxuICpcbiAqIEBwcml2YXRlXG4gKiBAcGFyYW0ge09iamVjdH0gbWFwIFRoZSBtYXAgdG8gY29udmVydC5cbiAqIEByZXR1cm5zIHtBcnJheX0gUmV0dXJucyB0aGUga2V5LXZhbHVlIHBhaXJzLlxuICovXG5mdW5jdGlvbiBtYXBUb0FycmF5KG1hcCkge1xuICAgIHZhciBpbmRleCA9IC0xLCByZXN1bHQgPSBBcnJheShtYXAuc2l6ZSk7XG4gICAgbWFwLmZvckVhY2goZnVuY3Rpb24gKHZhbHVlLCBrZXkpIHtcbiAgICAgICAgcmVzdWx0WysraW5kZXhdID0gW2tleSwgdmFsdWVdO1xuICAgIH0pO1xuICAgIHJldHVybiByZXN1bHQ7XG59XG5tb2R1bGUuZXhwb3J0cyA9IG1hcFRvQXJyYXk7XG4iXSwibWFwcGluZ3MiOiJBQUFBO0FBQ0E7Ozs7Ozs7O0FBT0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUEiLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./node_modules/lodash/_mapToArray.js\n")},"./node_modules/lodash/_matchesStrictComparable.js":
|
||
/*!*********************************************************!*\
|
||
!*** ./node_modules/lodash/_matchesStrictComparable.js ***!
|
||
\*********************************************************/
|
||
/*! no static exports found */function(module,exports,__webpack_require__){"use strict";eval("\n/**\n * A specialized version of `matchesProperty` for source values suitable\n * for strict equality comparisons, i.e. `===`.\n *\n * @private\n * @param {string} key The key of the property to get.\n * @param {*} srcValue The value to match.\n * @returns {Function} Returns the new spec function.\n */\n\nfunction matchesStrictComparable(key, srcValue) {\n return function (object) {\n if (object == null) {\n return false;\n }\n\n return object[key] === srcValue && (srcValue !== undefined || key in Object(object));\n };\n}\n\nmodule.exports = matchesStrictComparable;//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvbG9kYXNoL19tYXRjaGVzU3RyaWN0Q29tcGFyYWJsZS5qcy5qcyIsInNvdXJjZXMiOlsid2VicGFjazovL1NOTGlicmFyeS8uL25vZGVfbW9kdWxlcy9sb2Rhc2gvX21hdGNoZXNTdHJpY3RDb21wYXJhYmxlLmpzPzIwZWMiXSwic291cmNlc0NvbnRlbnQiOlsiXCJ1c2Ugc3RyaWN0XCI7XG4vKipcbiAqIEEgc3BlY2lhbGl6ZWQgdmVyc2lvbiBvZiBgbWF0Y2hlc1Byb3BlcnR5YCBmb3Igc291cmNlIHZhbHVlcyBzdWl0YWJsZVxuICogZm9yIHN0cmljdCBlcXVhbGl0eSBjb21wYXJpc29ucywgaS5lLiBgPT09YC5cbiAqXG4gKiBAcHJpdmF0ZVxuICogQHBhcmFtIHtzdHJpbmd9IGtleSBUaGUga2V5IG9mIHRoZSBwcm9wZXJ0eSB0byBnZXQuXG4gKiBAcGFyYW0geyp9IHNyY1ZhbHVlIFRoZSB2YWx1ZSB0byBtYXRjaC5cbiAqIEByZXR1cm5zIHtGdW5jdGlvbn0gUmV0dXJucyB0aGUgbmV3IHNwZWMgZnVuY3Rpb24uXG4gKi9cbmZ1bmN0aW9uIG1hdGNoZXNTdHJpY3RDb21wYXJhYmxlKGtleSwgc3JjVmFsdWUpIHtcbiAgICByZXR1cm4gZnVuY3Rpb24gKG9iamVjdCkge1xuICAgICAgICBpZiAob2JqZWN0ID09IG51bGwpIHtcbiAgICAgICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gb2JqZWN0W2tleV0gPT09IHNyY1ZhbHVlICYmXG4gICAgICAgICAgICAoc3JjVmFsdWUgIT09IHVuZGVmaW5lZCB8fCAoa2V5IGluIE9iamVjdChvYmplY3QpKSk7XG4gICAgfTtcbn1cbm1vZHVsZS5leHBvcnRzID0gbWF0Y2hlc1N0cmljdENvbXBhcmFibGU7XG4iXSwibWFwcGluZ3MiOiJBQUFBO0FBQ0E7Ozs7Ozs7Ozs7QUFTQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUVBO0FBQ0E7QUFDQTtBQUFBIiwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./node_modules/lodash/_matchesStrictComparable.js\n")},"./node_modules/lodash/_memoizeCapped.js":
|
||
/*!***********************************************!*\
|
||
!*** ./node_modules/lodash/_memoizeCapped.js ***!
|
||
\***********************************************/
|
||
/*! no static exports found */function(module,exports,__webpack_require__){"use strict";eval('\n\nvar memoize = __webpack_require__(/*! ./memoize */ "./node_modules/lodash/memoize.js");\n/** Used as the maximum memoize cache size. */\n\n\nvar MAX_MEMOIZE_SIZE = 500;\n/**\n * A specialized version of `_.memoize` which clears the memoized function\'s\n * cache when it exceeds `MAX_MEMOIZE_SIZE`.\n *\n * @private\n * @param {Function} func The function to have its output memoized.\n * @returns {Function} Returns the new memoized function.\n */\n\nfunction memoizeCapped(func) {\n var result = memoize(func, function (key) {\n if (cache.size === MAX_MEMOIZE_SIZE) {\n cache.clear();\n }\n\n return key;\n });\n var cache = result.cache;\n return result;\n}\n\nmodule.exports = memoizeCapped;//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvbG9kYXNoL19tZW1vaXplQ2FwcGVkLmpzLmpzIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vU05MaWJyYXJ5Ly4vbm9kZV9tb2R1bGVzL2xvZGFzaC9fbWVtb2l6ZUNhcHBlZC5qcz8yMzRkIl0sInNvdXJjZXNDb250ZW50IjpbIlwidXNlIHN0cmljdFwiO1xudmFyIG1lbW9pemUgPSByZXF1aXJlKCcuL21lbW9pemUnKTtcbi8qKiBVc2VkIGFzIHRoZSBtYXhpbXVtIG1lbW9pemUgY2FjaGUgc2l6ZS4gKi9cbnZhciBNQVhfTUVNT0laRV9TSVpFID0gNTAwO1xuLyoqXG4gKiBBIHNwZWNpYWxpemVkIHZlcnNpb24gb2YgYF8ubWVtb2l6ZWAgd2hpY2ggY2xlYXJzIHRoZSBtZW1vaXplZCBmdW5jdGlvbidzXG4gKiBjYWNoZSB3aGVuIGl0IGV4Y2VlZHMgYE1BWF9NRU1PSVpFX1NJWkVgLlxuICpcbiAqIEBwcml2YXRlXG4gKiBAcGFyYW0ge0Z1bmN0aW9ufSBmdW5jIFRoZSBmdW5jdGlvbiB0byBoYXZlIGl0cyBvdXRwdXQgbWVtb2l6ZWQuXG4gKiBAcmV0dXJucyB7RnVuY3Rpb259IFJldHVybnMgdGhlIG5ldyBtZW1vaXplZCBmdW5jdGlvbi5cbiAqL1xuZnVuY3Rpb24gbWVtb2l6ZUNhcHBlZChmdW5jKSB7XG4gICAgdmFyIHJlc3VsdCA9IG1lbW9pemUoZnVuYywgZnVuY3Rpb24gKGtleSkge1xuICAgICAgICBpZiAoY2FjaGUuc2l6ZSA9PT0gTUFYX01FTU9JWkVfU0laRSkge1xuICAgICAgICAgICAgY2FjaGUuY2xlYXIoKTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4ga2V5O1xuICAgIH0pO1xuICAgIHZhciBjYWNoZSA9IHJlc3VsdC5jYWNoZTtcbiAgICByZXR1cm4gcmVzdWx0O1xufVxubW9kdWxlLmV4cG9ydHMgPSBtZW1vaXplQ2FwcGVkO1xuIl0sIm1hcHBpbmdzIjoiQUFBQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFEQTtBQUNBOzs7Ozs7Ozs7QUFRQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQSIsInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./node_modules/lodash/_memoizeCapped.js\n')},"./node_modules/lodash/_nativeCreate.js":
|
||
/*!**********************************************!*\
|
||
!*** ./node_modules/lodash/_nativeCreate.js ***!
|
||
\**********************************************/
|
||
/*! no static exports found */function(module,exports,__webpack_require__){"use strict";eval("\n\nvar getNative = __webpack_require__(/*! ./_getNative */ \"./node_modules/lodash/_getNative.js\");\n/* Built-in method references that are verified to be native. */\n\n\nvar nativeCreate = getNative(Object, 'create');\nmodule.exports = nativeCreate;//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvbG9kYXNoL19uYXRpdmVDcmVhdGUuanMuanMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly9TTkxpYnJhcnkvLi9ub2RlX21vZHVsZXMvbG9kYXNoL19uYXRpdmVDcmVhdGUuanM/NjA0NCJdLCJzb3VyY2VzQ29udGVudCI6WyJcInVzZSBzdHJpY3RcIjtcbnZhciBnZXROYXRpdmUgPSByZXF1aXJlKCcuL19nZXROYXRpdmUnKTtcbi8qIEJ1aWx0LWluIG1ldGhvZCByZWZlcmVuY2VzIHRoYXQgYXJlIHZlcmlmaWVkIHRvIGJlIG5hdGl2ZS4gKi9cbnZhciBuYXRpdmVDcmVhdGUgPSBnZXROYXRpdmUoT2JqZWN0LCAnY3JlYXRlJyk7XG5tb2R1bGUuZXhwb3J0cyA9IG5hdGl2ZUNyZWF0ZTtcbiJdLCJtYXBwaW5ncyI6IkFBQUE7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBREE7QUFDQSIsInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./node_modules/lodash/_nativeCreate.js\n")},"./node_modules/lodash/_nativeKeys.js":
|
||
/*!********************************************!*\
|
||
!*** ./node_modules/lodash/_nativeKeys.js ***!
|
||
\********************************************/
|
||
/*! no static exports found */function(module,exports,__webpack_require__){"use strict";eval('\n\nvar overArg = __webpack_require__(/*! ./_overArg */ "./node_modules/lodash/_overArg.js");\n/* Built-in method references for those with the same name as other `lodash` methods. */\n\n\nvar nativeKeys = overArg(Object.keys, Object);\nmodule.exports = nativeKeys;//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvbG9kYXNoL19uYXRpdmVLZXlzLmpzLmpzIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vU05MaWJyYXJ5Ly4vbm9kZV9tb2R1bGVzL2xvZGFzaC9fbmF0aXZlS2V5cy5qcz81N2E1Il0sInNvdXJjZXNDb250ZW50IjpbIlwidXNlIHN0cmljdFwiO1xudmFyIG92ZXJBcmcgPSByZXF1aXJlKCcuL19vdmVyQXJnJyk7XG4vKiBCdWlsdC1pbiBtZXRob2QgcmVmZXJlbmNlcyBmb3IgdGhvc2Ugd2l0aCB0aGUgc2FtZSBuYW1lIGFzIG90aGVyIGBsb2Rhc2hgIG1ldGhvZHMuICovXG52YXIgbmF0aXZlS2V5cyA9IG92ZXJBcmcoT2JqZWN0LmtleXMsIE9iamVjdCk7XG5tb2R1bGUuZXhwb3J0cyA9IG5hdGl2ZUtleXM7XG4iXSwibWFwcGluZ3MiOiJBQUFBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQURBO0FBQ0EiLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./node_modules/lodash/_nativeKeys.js\n')},"./node_modules/lodash/_nativeKeysIn.js":
|
||
/*!**********************************************!*\
|
||
!*** ./node_modules/lodash/_nativeKeysIn.js ***!
|
||
\**********************************************/
|
||
/*! no static exports found */function(module,exports,__webpack_require__){"use strict";eval("\n/**\n * This function is like\n * [`Object.keys`](http://ecma-international.org/ecma-262/7.0/#sec-object.keys)\n * except that it includes inherited enumerable properties.\n *\n * @private\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of property names.\n */\n\nfunction nativeKeysIn(object) {\n var result = [];\n\n if (object != null) {\n for (var key in Object(object)) {\n result.push(key);\n }\n }\n\n return result;\n}\n\nmodule.exports = nativeKeysIn;//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvbG9kYXNoL19uYXRpdmVLZXlzSW4uanMuanMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly9TTkxpYnJhcnkvLi9ub2RlX21vZHVsZXMvbG9kYXNoL19uYXRpdmVLZXlzSW4uanM/ZWM4YyJdLCJzb3VyY2VzQ29udGVudCI6WyJcInVzZSBzdHJpY3RcIjtcbi8qKlxuICogVGhpcyBmdW5jdGlvbiBpcyBsaWtlXG4gKiBbYE9iamVjdC5rZXlzYF0oaHR0cDovL2VjbWEtaW50ZXJuYXRpb25hbC5vcmcvZWNtYS0yNjIvNy4wLyNzZWMtb2JqZWN0LmtleXMpXG4gKiBleGNlcHQgdGhhdCBpdCBpbmNsdWRlcyBpbmhlcml0ZWQgZW51bWVyYWJsZSBwcm9wZXJ0aWVzLlxuICpcbiAqIEBwcml2YXRlXG4gKiBAcGFyYW0ge09iamVjdH0gb2JqZWN0IFRoZSBvYmplY3QgdG8gcXVlcnkuXG4gKiBAcmV0dXJucyB7QXJyYXl9IFJldHVybnMgdGhlIGFycmF5IG9mIHByb3BlcnR5IG5hbWVzLlxuICovXG5mdW5jdGlvbiBuYXRpdmVLZXlzSW4ob2JqZWN0KSB7XG4gICAgdmFyIHJlc3VsdCA9IFtdO1xuICAgIGlmIChvYmplY3QgIT0gbnVsbCkge1xuICAgICAgICBmb3IgKHZhciBrZXkgaW4gT2JqZWN0KG9iamVjdCkpIHtcbiAgICAgICAgICAgIHJlc3VsdC5wdXNoKGtleSk7XG4gICAgICAgIH1cbiAgICB9XG4gICAgcmV0dXJuIHJlc3VsdDtcbn1cbm1vZHVsZS5leHBvcnRzID0gbmF0aXZlS2V5c0luO1xuIl0sIm1hcHBpbmdzIjoiQUFBQTtBQUNBOzs7Ozs7Ozs7O0FBU0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQUEiLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./node_modules/lodash/_nativeKeysIn.js\n")},"./node_modules/lodash/_nodeUtil.js":
|
||
/*!******************************************!*\
|
||
!*** ./node_modules/lodash/_nodeUtil.js ***!
|
||
\******************************************/
|
||
/*! no static exports found */function(module,exports,__webpack_require__){"use strict";eval('/* WEBPACK VAR INJECTION */(function(module) {\n\nfunction _typeof(obj) { "@babel/helpers - typeof"; if (typeof Symbol === "function" && typeof Symbol.iterator === "symbol") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }; } return _typeof(obj); }\n\nvar freeGlobal = __webpack_require__(/*! ./_freeGlobal */ "./node_modules/lodash/_freeGlobal.js");\n/** Detect free variable `exports`. */\n\n\nvar freeExports = ( false ? undefined : _typeof(exports)) == \'object\' && exports && !exports.nodeType && exports;\n/** Detect free variable `module`. */\n\nvar freeModule = freeExports && ( false ? undefined : _typeof(module)) == \'object\' && module && !module.nodeType && module;\n/** Detect the popular CommonJS extension `module.exports`. */\n\nvar moduleExports = freeModule && freeModule.exports === freeExports;\n/** Detect free variable `process` from Node.js. */\n\nvar freeProcess = moduleExports && freeGlobal.process;\n/** Used to access faster Node.js helpers. */\n\nvar nodeUtil = function () {\n try {\n // Use `util.types` for Node.js 10+.\n var types = freeModule && freeModule.require && freeModule.require(\'util\').types;\n\n if (types) {\n return types;\n } // Legacy `process.binding(\'util\')` for Node.js < 10.\n\n\n return freeProcess && freeProcess.binding && freeProcess.binding(\'util\');\n } catch (e) {}\n}();\n\nmodule.exports = nodeUtil;\n/* WEBPACK VAR INJECTION */}.call(this, __webpack_require__(/*! ./../webpack/buildin/module.js */ "./node_modules/webpack/buildin/module.js")(module)))//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvbG9kYXNoL19ub2RlVXRpbC5qcy5qcyIsInNvdXJjZXMiOlsid2VicGFjazovL1NOTGlicmFyeS8uL25vZGVfbW9kdWxlcy9sb2Rhc2gvX25vZGVVdGlsLmpzPzk5ZDMiXSwic291cmNlc0NvbnRlbnQiOlsiXCJ1c2Ugc3RyaWN0XCI7XG52YXIgZnJlZUdsb2JhbCA9IHJlcXVpcmUoJy4vX2ZyZWVHbG9iYWwnKTtcbi8qKiBEZXRlY3QgZnJlZSB2YXJpYWJsZSBgZXhwb3J0c2AuICovXG52YXIgZnJlZUV4cG9ydHMgPSB0eXBlb2YgZXhwb3J0cyA9PSAnb2JqZWN0JyAmJiBleHBvcnRzICYmICFleHBvcnRzLm5vZGVUeXBlICYmIGV4cG9ydHM7XG4vKiogRGV0ZWN0IGZyZWUgdmFyaWFibGUgYG1vZHVsZWAuICovXG52YXIgZnJlZU1vZHVsZSA9IGZyZWVFeHBvcnRzICYmIHR5cGVvZiBtb2R1bGUgPT0gJ29iamVjdCcgJiYgbW9kdWxlICYmICFtb2R1bGUubm9kZVR5cGUgJiYgbW9kdWxlO1xuLyoqIERldGVjdCB0aGUgcG9wdWxhciBDb21tb25KUyBleHRlbnNpb24gYG1vZHVsZS5leHBvcnRzYC4gKi9cbnZhciBtb2R1bGVFeHBvcnRzID0gZnJlZU1vZHVsZSAmJiBmcmVlTW9kdWxlLmV4cG9ydHMgPT09IGZyZWVFeHBvcnRzO1xuLyoqIERldGVjdCBmcmVlIHZhcmlhYmxlIGBwcm9jZXNzYCBmcm9tIE5vZGUuanMuICovXG52YXIgZnJlZVByb2Nlc3MgPSBtb2R1bGVFeHBvcnRzICYmIGZyZWVHbG9iYWwucHJvY2Vzcztcbi8qKiBVc2VkIHRvIGFjY2VzcyBmYXN0ZXIgTm9kZS5qcyBoZWxwZXJzLiAqL1xudmFyIG5vZGVVdGlsID0gKGZ1bmN0aW9uICgpIHtcbiAgICB0cnkge1xuICAgICAgICAvLyBVc2UgYHV0aWwudHlwZXNgIGZvciBOb2RlLmpzIDEwKy5cbiAgICAgICAgdmFyIHR5cGVzID0gZnJlZU1vZHVsZSAmJiBmcmVlTW9kdWxlLnJlcXVpcmUgJiYgZnJlZU1vZHVsZS5yZXF1aXJlKCd1dGlsJykudHlwZXM7XG4gICAgICAgIGlmICh0eXBlcykge1xuICAgICAgICAgICAgcmV0dXJuIHR5cGVzO1xuICAgICAgICB9XG4gICAgICAgIC8vIExlZ2FjeSBgcHJvY2Vzcy5iaW5kaW5nKCd1dGlsJylgIGZvciBOb2RlLmpzIDwgMTAuXG4gICAgICAgIHJldHVybiBmcmVlUHJvY2VzcyAmJiBmcmVlUHJvY2Vzcy5iaW5kaW5nICYmIGZyZWVQcm9jZXNzLmJpbmRpbmcoJ3V0aWwnKTtcbiAgICB9XG4gICAgY2F0Y2ggKGUpIHsgfVxufSgpKTtcbm1vZHVsZS5leHBvcnRzID0gbm9kZVV0aWw7XG4iXSwibWFwcGluZ3MiOiJBQUFBO0FBQ0E7OztBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBREE7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBRUE7QUFDQTtBQUFBO0EiLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./node_modules/lodash/_nodeUtil.js\n')},"./node_modules/lodash/_objectToString.js":
|
||
/*!************************************************!*\
|
||
!*** ./node_modules/lodash/_objectToString.js ***!
|
||
\************************************************/
|
||
/*! no static exports found */function(module,exports,__webpack_require__){"use strict";eval("\n/** Used for built-in method references. */\n\nvar objectProto = Object.prototype;\n/**\n * Used to resolve the\n * [`toStringTag`](http://ecma-international.org/ecma-262/7.0/#sec-object.prototype.tostring)\n * of values.\n */\n\nvar nativeObjectToString = objectProto.toString;\n/**\n * Converts `value` to a string using `Object.prototype.toString`.\n *\n * @private\n * @param {*} value The value to convert.\n * @returns {string} Returns the converted string.\n */\n\nfunction objectToString(value) {\n return nativeObjectToString.call(value);\n}\n\nmodule.exports = objectToString;//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvbG9kYXNoL19vYmplY3RUb1N0cmluZy5qcy5qcyIsInNvdXJjZXMiOlsid2VicGFjazovL1NOTGlicmFyeS8uL25vZGVfbW9kdWxlcy9sb2Rhc2gvX29iamVjdFRvU3RyaW5nLmpzPzI5ZjMiXSwic291cmNlc0NvbnRlbnQiOlsiXCJ1c2Ugc3RyaWN0XCI7XG4vKiogVXNlZCBmb3IgYnVpbHQtaW4gbWV0aG9kIHJlZmVyZW5jZXMuICovXG52YXIgb2JqZWN0UHJvdG8gPSBPYmplY3QucHJvdG90eXBlO1xuLyoqXG4gKiBVc2VkIHRvIHJlc29sdmUgdGhlXG4gKiBbYHRvU3RyaW5nVGFnYF0oaHR0cDovL2VjbWEtaW50ZXJuYXRpb25hbC5vcmcvZWNtYS0yNjIvNy4wLyNzZWMtb2JqZWN0LnByb3RvdHlwZS50b3N0cmluZylcbiAqIG9mIHZhbHVlcy5cbiAqL1xudmFyIG5hdGl2ZU9iamVjdFRvU3RyaW5nID0gb2JqZWN0UHJvdG8udG9TdHJpbmc7XG4vKipcbiAqIENvbnZlcnRzIGB2YWx1ZWAgdG8gYSBzdHJpbmcgdXNpbmcgYE9iamVjdC5wcm90b3R5cGUudG9TdHJpbmdgLlxuICpcbiAqIEBwcml2YXRlXG4gKiBAcGFyYW0geyp9IHZhbHVlIFRoZSB2YWx1ZSB0byBjb252ZXJ0LlxuICogQHJldHVybnMge3N0cmluZ30gUmV0dXJucyB0aGUgY29udmVydGVkIHN0cmluZy5cbiAqL1xuZnVuY3Rpb24gb2JqZWN0VG9TdHJpbmcodmFsdWUpIHtcbiAgICByZXR1cm4gbmF0aXZlT2JqZWN0VG9TdHJpbmcuY2FsbCh2YWx1ZSk7XG59XG5tb2R1bGUuZXhwb3J0cyA9IG9iamVjdFRvU3RyaW5nO1xuIl0sIm1hcHBpbmdzIjoiQUFBQTtBQUNBO0FBQ0E7QUFBQTtBQUNBOzs7Ozs7QUFLQTtBQUNBOzs7Ozs7OztBQU9BO0FBQ0E7QUFDQTtBQUNBO0FBQUEiLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./node_modules/lodash/_objectToString.js\n")},"./node_modules/lodash/_overArg.js":
|
||
/*!*****************************************!*\
|
||
!*** ./node_modules/lodash/_overArg.js ***!
|
||
\*****************************************/
|
||
/*! no static exports found */function(module,exports,__webpack_require__){"use strict";eval("\n/**\n * Creates a unary function that invokes `func` with its argument transformed.\n *\n * @private\n * @param {Function} func The function to wrap.\n * @param {Function} transform The argument transform.\n * @returns {Function} Returns the new function.\n */\n\nfunction overArg(func, transform) {\n return function (arg) {\n return func(transform(arg));\n };\n}\n\nmodule.exports = overArg;//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvbG9kYXNoL19vdmVyQXJnLmpzLmpzIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vU05MaWJyYXJ5Ly4vbm9kZV9tb2R1bGVzL2xvZGFzaC9fb3ZlckFyZy5qcz85MWU5Il0sInNvdXJjZXNDb250ZW50IjpbIlwidXNlIHN0cmljdFwiO1xuLyoqXG4gKiBDcmVhdGVzIGEgdW5hcnkgZnVuY3Rpb24gdGhhdCBpbnZva2VzIGBmdW5jYCB3aXRoIGl0cyBhcmd1bWVudCB0cmFuc2Zvcm1lZC5cbiAqXG4gKiBAcHJpdmF0ZVxuICogQHBhcmFtIHtGdW5jdGlvbn0gZnVuYyBUaGUgZnVuY3Rpb24gdG8gd3JhcC5cbiAqIEBwYXJhbSB7RnVuY3Rpb259IHRyYW5zZm9ybSBUaGUgYXJndW1lbnQgdHJhbnNmb3JtLlxuICogQHJldHVybnMge0Z1bmN0aW9ufSBSZXR1cm5zIHRoZSBuZXcgZnVuY3Rpb24uXG4gKi9cbmZ1bmN0aW9uIG92ZXJBcmcoZnVuYywgdHJhbnNmb3JtKSB7XG4gICAgcmV0dXJuIGZ1bmN0aW9uIChhcmcpIHtcbiAgICAgICAgcmV0dXJuIGZ1bmModHJhbnNmb3JtKGFyZykpO1xuICAgIH07XG59XG5tb2R1bGUuZXhwb3J0cyA9IG92ZXJBcmc7XG4iXSwibWFwcGluZ3MiOiJBQUFBO0FBQ0E7Ozs7Ozs7OztBQVFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBIiwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./node_modules/lodash/_overArg.js\n")},"./node_modules/lodash/_overRest.js":
|
||
/*!******************************************!*\
|
||
!*** ./node_modules/lodash/_overRest.js ***!
|
||
\******************************************/
|
||
/*! no static exports found */function(module,exports,__webpack_require__){"use strict";eval('\n\nvar apply = __webpack_require__(/*! ./_apply */ "./node_modules/lodash/_apply.js");\n/* Built-in method references for those with the same name as other `lodash` methods. */\n\n\nvar nativeMax = Math.max;\n/**\n * A specialized version of `baseRest` which transforms the rest array.\n *\n * @private\n * @param {Function} func The function to apply a rest parameter to.\n * @param {number} [start=func.length-1] The start position of the rest parameter.\n * @param {Function} transform The rest array transform.\n * @returns {Function} Returns the new function.\n */\n\nfunction overRest(func, start, transform) {\n start = nativeMax(start === undefined ? func.length - 1 : start, 0);\n return function () {\n var args = arguments,\n index = -1,\n length = nativeMax(args.length - start, 0),\n array = Array(length);\n\n while (++index < length) {\n array[index] = args[start + index];\n }\n\n index = -1;\n var otherArgs = Array(start + 1);\n\n while (++index < start) {\n otherArgs[index] = args[index];\n }\n\n otherArgs[start] = transform(array);\n return apply(func, this, otherArgs);\n };\n}\n\nmodule.exports = overRest;//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvbG9kYXNoL19vdmVyUmVzdC5qcy5qcyIsInNvdXJjZXMiOlsid2VicGFjazovL1NOTGlicmFyeS8uL25vZGVfbW9kdWxlcy9sb2Rhc2gvX292ZXJSZXN0LmpzPzIyODYiXSwic291cmNlc0NvbnRlbnQiOlsiXCJ1c2Ugc3RyaWN0XCI7XG52YXIgYXBwbHkgPSByZXF1aXJlKCcuL19hcHBseScpO1xuLyogQnVpbHQtaW4gbWV0aG9kIHJlZmVyZW5jZXMgZm9yIHRob3NlIHdpdGggdGhlIHNhbWUgbmFtZSBhcyBvdGhlciBgbG9kYXNoYCBtZXRob2RzLiAqL1xudmFyIG5hdGl2ZU1heCA9IE1hdGgubWF4O1xuLyoqXG4gKiBBIHNwZWNpYWxpemVkIHZlcnNpb24gb2YgYGJhc2VSZXN0YCB3aGljaCB0cmFuc2Zvcm1zIHRoZSByZXN0IGFycmF5LlxuICpcbiAqIEBwcml2YXRlXG4gKiBAcGFyYW0ge0Z1bmN0aW9ufSBmdW5jIFRoZSBmdW5jdGlvbiB0byBhcHBseSBhIHJlc3QgcGFyYW1ldGVyIHRvLlxuICogQHBhcmFtIHtudW1iZXJ9IFtzdGFydD1mdW5jLmxlbmd0aC0xXSBUaGUgc3RhcnQgcG9zaXRpb24gb2YgdGhlIHJlc3QgcGFyYW1ldGVyLlxuICogQHBhcmFtIHtGdW5jdGlvbn0gdHJhbnNmb3JtIFRoZSByZXN0IGFycmF5IHRyYW5zZm9ybS5cbiAqIEByZXR1cm5zIHtGdW5jdGlvbn0gUmV0dXJucyB0aGUgbmV3IGZ1bmN0aW9uLlxuICovXG5mdW5jdGlvbiBvdmVyUmVzdChmdW5jLCBzdGFydCwgdHJhbnNmb3JtKSB7XG4gICAgc3RhcnQgPSBuYXRpdmVNYXgoc3RhcnQgPT09IHVuZGVmaW5lZCA/IChmdW5jLmxlbmd0aCAtIDEpIDogc3RhcnQsIDApO1xuICAgIHJldHVybiBmdW5jdGlvbiAoKSB7XG4gICAgICAgIHZhciBhcmdzID0gYXJndW1lbnRzLCBpbmRleCA9IC0xLCBsZW5ndGggPSBuYXRpdmVNYXgoYXJncy5sZW5ndGggLSBzdGFydCwgMCksIGFycmF5ID0gQXJyYXkobGVuZ3RoKTtcbiAgICAgICAgd2hpbGUgKCsraW5kZXggPCBsZW5ndGgpIHtcbiAgICAgICAgICAgIGFycmF5W2luZGV4XSA9IGFyZ3Nbc3RhcnQgKyBpbmRleF07XG4gICAgICAgIH1cbiAgICAgICAgaW5kZXggPSAtMTtcbiAgICAgICAgdmFyIG90aGVyQXJncyA9IEFycmF5KHN0YXJ0ICsgMSk7XG4gICAgICAgIHdoaWxlICgrK2luZGV4IDwgc3RhcnQpIHtcbiAgICAgICAgICAgIG90aGVyQXJnc1tpbmRleF0gPSBhcmdzW2luZGV4XTtcbiAgICAgICAgfVxuICAgICAgICBvdGhlckFyZ3Nbc3RhcnRdID0gdHJhbnNmb3JtKGFycmF5KTtcbiAgICAgICAgcmV0dXJuIGFwcGx5KGZ1bmMsIHRoaXMsIG90aGVyQXJncyk7XG4gICAgfTtcbn1cbm1vZHVsZS5leHBvcnRzID0gb3ZlclJlc3Q7XG4iXSwibWFwcGluZ3MiOiJBQUFBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQURBO0FBQ0E7Ozs7Ozs7Ozs7QUFTQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQUE7QUFBQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQSIsInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./node_modules/lodash/_overRest.js\n')},"./node_modules/lodash/_parent.js":
|
||
/*!****************************************!*\
|
||
!*** ./node_modules/lodash/_parent.js ***!
|
||
\****************************************/
|
||
/*! no static exports found */function(module,exports,__webpack_require__){"use strict";eval('\n\nvar baseGet = __webpack_require__(/*! ./_baseGet */ "./node_modules/lodash/_baseGet.js"),\n baseSlice = __webpack_require__(/*! ./_baseSlice */ "./node_modules/lodash/_baseSlice.js");\n/**\n * Gets the parent value at `path` of `object`.\n *\n * @private\n * @param {Object} object The object to query.\n * @param {Array} path The path to get the parent value of.\n * @returns {*} Returns the parent value.\n */\n\n\nfunction parent(object, path) {\n return path.length < 2 ? object : baseGet(object, baseSlice(path, 0, -1));\n}\n\nmodule.exports = parent;//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvbG9kYXNoL19wYXJlbnQuanMuanMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly9TTkxpYnJhcnkvLi9ub2RlX21vZHVsZXMvbG9kYXNoL19wYXJlbnQuanM/ODI5NiJdLCJzb3VyY2VzQ29udGVudCI6WyJcInVzZSBzdHJpY3RcIjtcbnZhciBiYXNlR2V0ID0gcmVxdWlyZSgnLi9fYmFzZUdldCcpLCBiYXNlU2xpY2UgPSByZXF1aXJlKCcuL19iYXNlU2xpY2UnKTtcbi8qKlxuICogR2V0cyB0aGUgcGFyZW50IHZhbHVlIGF0IGBwYXRoYCBvZiBgb2JqZWN0YC5cbiAqXG4gKiBAcHJpdmF0ZVxuICogQHBhcmFtIHtPYmplY3R9IG9iamVjdCBUaGUgb2JqZWN0IHRvIHF1ZXJ5LlxuICogQHBhcmFtIHtBcnJheX0gcGF0aCBUaGUgcGF0aCB0byBnZXQgdGhlIHBhcmVudCB2YWx1ZSBvZi5cbiAqIEByZXR1cm5zIHsqfSBSZXR1cm5zIHRoZSBwYXJlbnQgdmFsdWUuXG4gKi9cbmZ1bmN0aW9uIHBhcmVudChvYmplY3QsIHBhdGgpIHtcbiAgICByZXR1cm4gcGF0aC5sZW5ndGggPCAyID8gb2JqZWN0IDogYmFzZUdldChvYmplY3QsIGJhc2VTbGljZShwYXRoLCAwLCAtMSkpO1xufVxubW9kdWxlLmV4cG9ydHMgPSBwYXJlbnQ7XG4iXSwibWFwcGluZ3MiOiJBQUFBO0FBQ0E7QUFBQTtBQUFBO0FBQ0E7Ozs7Ozs7Ozs7QUFRQTtBQUNBO0FBQ0E7QUFDQTtBQUFBIiwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./node_modules/lodash/_parent.js\n')},"./node_modules/lodash/_root.js":
|
||
/*!**************************************!*\
|
||
!*** ./node_modules/lodash/_root.js ***!
|
||
\**************************************/
|
||
/*! no static exports found */function(module,exports,__webpack_require__){"use strict";eval('\n\nfunction _typeof(obj) { "@babel/helpers - typeof"; if (typeof Symbol === "function" && typeof Symbol.iterator === "symbol") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }; } return _typeof(obj); }\n\nvar freeGlobal = __webpack_require__(/*! ./_freeGlobal */ "./node_modules/lodash/_freeGlobal.js");\n/** Detect free variable `self`. */\n\n\nvar freeSelf = (typeof self === "undefined" ? "undefined" : _typeof(self)) == \'object\' && self && self.Object === Object && self;\n/** Used as a reference to the global object. */\n\nvar root = freeGlobal || freeSelf || Function(\'return this\')();\nmodule.exports = root;//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvbG9kYXNoL19yb290LmpzLmpzIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vU05MaWJyYXJ5Ly4vbm9kZV9tb2R1bGVzL2xvZGFzaC9fcm9vdC5qcz8yYjNlIl0sInNvdXJjZXNDb250ZW50IjpbIlwidXNlIHN0cmljdFwiO1xudmFyIGZyZWVHbG9iYWwgPSByZXF1aXJlKCcuL19mcmVlR2xvYmFsJyk7XG4vKiogRGV0ZWN0IGZyZWUgdmFyaWFibGUgYHNlbGZgLiAqL1xudmFyIGZyZWVTZWxmID0gdHlwZW9mIHNlbGYgPT0gJ29iamVjdCcgJiYgc2VsZiAmJiBzZWxmLk9iamVjdCA9PT0gT2JqZWN0ICYmIHNlbGY7XG4vKiogVXNlZCBhcyBhIHJlZmVyZW5jZSB0byB0aGUgZ2xvYmFsIG9iamVjdC4gKi9cbnZhciByb290ID0gZnJlZUdsb2JhbCB8fCBmcmVlU2VsZiB8fCBGdW5jdGlvbigncmV0dXJuIHRoaXMnKSgpO1xubW9kdWxlLmV4cG9ydHMgPSByb290O1xuIl0sIm1hcHBpbmdzIjoiQUFBQTtBQUNBOzs7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQURBO0FBQ0E7QUFDQTtBQUFBO0FBQ0EiLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./node_modules/lodash/_root.js\n')},"./node_modules/lodash/_safeGet.js":
|
||
/*!*****************************************!*\
|
||
!*** ./node_modules/lodash/_safeGet.js ***!
|
||
\*****************************************/
|
||
/*! no static exports found */function(module,exports,__webpack_require__){"use strict";eval("\n/**\n * Gets the value at `key`, unless `key` is \"__proto__\" or \"constructor\".\n *\n * @private\n * @param {Object} object The object to query.\n * @param {string} key The key of the property to get.\n * @returns {*} Returns the property value.\n */\n\nfunction safeGet(object, key) {\n if (key === 'constructor' && typeof object[key] === 'function') {\n return;\n }\n\n if (key == '__proto__') {\n return;\n }\n\n return object[key];\n}\n\nmodule.exports = safeGet;//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvbG9kYXNoL19zYWZlR2V0LmpzLmpzIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vU05MaWJyYXJ5Ly4vbm9kZV9tb2R1bGVzL2xvZGFzaC9fc2FmZUdldC5qcz84YWRiIl0sInNvdXJjZXNDb250ZW50IjpbIlwidXNlIHN0cmljdFwiO1xuLyoqXG4gKiBHZXRzIHRoZSB2YWx1ZSBhdCBga2V5YCwgdW5sZXNzIGBrZXlgIGlzIFwiX19wcm90b19fXCIgb3IgXCJjb25zdHJ1Y3RvclwiLlxuICpcbiAqIEBwcml2YXRlXG4gKiBAcGFyYW0ge09iamVjdH0gb2JqZWN0IFRoZSBvYmplY3QgdG8gcXVlcnkuXG4gKiBAcGFyYW0ge3N0cmluZ30ga2V5IFRoZSBrZXkgb2YgdGhlIHByb3BlcnR5IHRvIGdldC5cbiAqIEByZXR1cm5zIHsqfSBSZXR1cm5zIHRoZSBwcm9wZXJ0eSB2YWx1ZS5cbiAqL1xuZnVuY3Rpb24gc2FmZUdldChvYmplY3QsIGtleSkge1xuICAgIGlmIChrZXkgPT09ICdjb25zdHJ1Y3RvcicgJiYgdHlwZW9mIG9iamVjdFtrZXldID09PSAnZnVuY3Rpb24nKSB7XG4gICAgICAgIHJldHVybjtcbiAgICB9XG4gICAgaWYgKGtleSA9PSAnX19wcm90b19fJykge1xuICAgICAgICByZXR1cm47XG4gICAgfVxuICAgIHJldHVybiBvYmplY3Rba2V5XTtcbn1cbm1vZHVsZS5leHBvcnRzID0gc2FmZUdldDtcbiJdLCJtYXBwaW5ncyI6IkFBQUE7QUFDQTs7Ozs7Ozs7O0FBUUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQUEiLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./node_modules/lodash/_safeGet.js\n")},"./node_modules/lodash/_setCacheAdd.js":
|
||
/*!*********************************************!*\
|
||
!*** ./node_modules/lodash/_setCacheAdd.js ***!
|
||
\*********************************************/
|
||
/*! no static exports found */function(module,exports,__webpack_require__){"use strict";eval("\n/** Used to stand-in for `undefined` hash values. */\n\nvar HASH_UNDEFINED = '__lodash_hash_undefined__';\n/**\n * Adds `value` to the array cache.\n *\n * @private\n * @name add\n * @memberOf SetCache\n * @alias push\n * @param {*} value The value to cache.\n * @returns {Object} Returns the cache instance.\n */\n\nfunction setCacheAdd(value) {\n this.__data__.set(value, HASH_UNDEFINED);\n\n return this;\n}\n\nmodule.exports = setCacheAdd;//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvbG9kYXNoL19zZXRDYWNoZUFkZC5qcy5qcyIsInNvdXJjZXMiOlsid2VicGFjazovL1NOTGlicmFyeS8uL25vZGVfbW9kdWxlcy9sb2Rhc2gvX3NldENhY2hlQWRkLmpzPzdlZDIiXSwic291cmNlc0NvbnRlbnQiOlsiXCJ1c2Ugc3RyaWN0XCI7XG4vKiogVXNlZCB0byBzdGFuZC1pbiBmb3IgYHVuZGVmaW5lZGAgaGFzaCB2YWx1ZXMuICovXG52YXIgSEFTSF9VTkRFRklORUQgPSAnX19sb2Rhc2hfaGFzaF91bmRlZmluZWRfXyc7XG4vKipcbiAqIEFkZHMgYHZhbHVlYCB0byB0aGUgYXJyYXkgY2FjaGUuXG4gKlxuICogQHByaXZhdGVcbiAqIEBuYW1lIGFkZFxuICogQG1lbWJlck9mIFNldENhY2hlXG4gKiBAYWxpYXMgcHVzaFxuICogQHBhcmFtIHsqfSB2YWx1ZSBUaGUgdmFsdWUgdG8gY2FjaGUuXG4gKiBAcmV0dXJucyB7T2JqZWN0fSBSZXR1cm5zIHRoZSBjYWNoZSBpbnN0YW5jZS5cbiAqL1xuZnVuY3Rpb24gc2V0Q2FjaGVBZGQodmFsdWUpIHtcbiAgICB0aGlzLl9fZGF0YV9fLnNldCh2YWx1ZSwgSEFTSF9VTkRFRklORUQpO1xuICAgIHJldHVybiB0aGlzO1xufVxubW9kdWxlLmV4cG9ydHMgPSBzZXRDYWNoZUFkZDtcbiJdLCJtYXBwaW5ncyI6IkFBQUE7QUFDQTtBQUNBO0FBQUE7QUFDQTs7Ozs7Ozs7Ozs7QUFVQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFBQSIsInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./node_modules/lodash/_setCacheAdd.js\n")},"./node_modules/lodash/_setCacheHas.js":
|
||
/*!*********************************************!*\
|
||
!*** ./node_modules/lodash/_setCacheHas.js ***!
|
||
\*********************************************/
|
||
/*! no static exports found */function(module,exports,__webpack_require__){"use strict";eval("\n/**\n * Checks if `value` is in the array cache.\n *\n * @private\n * @name has\n * @memberOf SetCache\n * @param {*} value The value to search for.\n * @returns {number} Returns `true` if `value` is found, else `false`.\n */\n\nfunction setCacheHas(value) {\n return this.__data__.has(value);\n}\n\nmodule.exports = setCacheHas;//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvbG9kYXNoL19zZXRDYWNoZUhhcy5qcy5qcyIsInNvdXJjZXMiOlsid2VicGFjazovL1NOTGlicmFyeS8uL25vZGVfbW9kdWxlcy9sb2Rhc2gvX3NldENhY2hlSGFzLmpzP2RjMGYiXSwic291cmNlc0NvbnRlbnQiOlsiXCJ1c2Ugc3RyaWN0XCI7XG4vKipcbiAqIENoZWNrcyBpZiBgdmFsdWVgIGlzIGluIHRoZSBhcnJheSBjYWNoZS5cbiAqXG4gKiBAcHJpdmF0ZVxuICogQG5hbWUgaGFzXG4gKiBAbWVtYmVyT2YgU2V0Q2FjaGVcbiAqIEBwYXJhbSB7Kn0gdmFsdWUgVGhlIHZhbHVlIHRvIHNlYXJjaCBmb3IuXG4gKiBAcmV0dXJucyB7bnVtYmVyfSBSZXR1cm5zIGB0cnVlYCBpZiBgdmFsdWVgIGlzIGZvdW5kLCBlbHNlIGBmYWxzZWAuXG4gKi9cbmZ1bmN0aW9uIHNldENhY2hlSGFzKHZhbHVlKSB7XG4gICAgcmV0dXJuIHRoaXMuX19kYXRhX18uaGFzKHZhbHVlKTtcbn1cbm1vZHVsZS5leHBvcnRzID0gc2V0Q2FjaGVIYXM7XG4iXSwibWFwcGluZ3MiOiJBQUFBO0FBQ0E7Ozs7Ozs7Ozs7QUFTQTtBQUNBO0FBQ0E7QUFDQTtBQUFBIiwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./node_modules/lodash/_setCacheHas.js\n")},"./node_modules/lodash/_setToArray.js":
|
||
/*!********************************************!*\
|
||
!*** ./node_modules/lodash/_setToArray.js ***!
|
||
\********************************************/
|
||
/*! no static exports found */function(module,exports,__webpack_require__){"use strict";eval("\n/**\n * Converts `set` to an array of its values.\n *\n * @private\n * @param {Object} set The set to convert.\n * @returns {Array} Returns the values.\n */\n\nfunction setToArray(set) {\n var index = -1,\n result = Array(set.size);\n set.forEach(function (value) {\n result[++index] = value;\n });\n return result;\n}\n\nmodule.exports = setToArray;//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvbG9kYXNoL19zZXRUb0FycmF5LmpzLmpzIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vU05MaWJyYXJ5Ly4vbm9kZV9tb2R1bGVzL2xvZGFzaC9fc2V0VG9BcnJheS5qcz9hYzQxIl0sInNvdXJjZXNDb250ZW50IjpbIlwidXNlIHN0cmljdFwiO1xuLyoqXG4gKiBDb252ZXJ0cyBgc2V0YCB0byBhbiBhcnJheSBvZiBpdHMgdmFsdWVzLlxuICpcbiAqIEBwcml2YXRlXG4gKiBAcGFyYW0ge09iamVjdH0gc2V0IFRoZSBzZXQgdG8gY29udmVydC5cbiAqIEByZXR1cm5zIHtBcnJheX0gUmV0dXJucyB0aGUgdmFsdWVzLlxuICovXG5mdW5jdGlvbiBzZXRUb0FycmF5KHNldCkge1xuICAgIHZhciBpbmRleCA9IC0xLCByZXN1bHQgPSBBcnJheShzZXQuc2l6ZSk7XG4gICAgc2V0LmZvckVhY2goZnVuY3Rpb24gKHZhbHVlKSB7XG4gICAgICAgIHJlc3VsdFsrK2luZGV4XSA9IHZhbHVlO1xuICAgIH0pO1xuICAgIHJldHVybiByZXN1bHQ7XG59XG5tb2R1bGUuZXhwb3J0cyA9IHNldFRvQXJyYXk7XG4iXSwibWFwcGluZ3MiOiJBQUFBO0FBQ0E7Ozs7Ozs7O0FBT0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUEiLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./node_modules/lodash/_setToArray.js\n")},"./node_modules/lodash/_setToString.js":
|
||
/*!*********************************************!*\
|
||
!*** ./node_modules/lodash/_setToString.js ***!
|
||
\*********************************************/
|
||
/*! no static exports found */function(module,exports,__webpack_require__){"use strict";eval('\n\nvar baseSetToString = __webpack_require__(/*! ./_baseSetToString */ "./node_modules/lodash/_baseSetToString.js"),\n shortOut = __webpack_require__(/*! ./_shortOut */ "./node_modules/lodash/_shortOut.js");\n/**\n * Sets the `toString` method of `func` to return `string`.\n *\n * @private\n * @param {Function} func The function to modify.\n * @param {Function} string The `toString` result.\n * @returns {Function} Returns `func`.\n */\n\n\nvar setToString = shortOut(baseSetToString);\nmodule.exports = setToString;//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvbG9kYXNoL19zZXRUb1N0cmluZy5qcy5qcyIsInNvdXJjZXMiOlsid2VicGFjazovL1NOTGlicmFyeS8uL25vZGVfbW9kdWxlcy9sb2Rhc2gvX3NldFRvU3RyaW5nLmpzP2MxYzkiXSwic291cmNlc0NvbnRlbnQiOlsiXCJ1c2Ugc3RyaWN0XCI7XG52YXIgYmFzZVNldFRvU3RyaW5nID0gcmVxdWlyZSgnLi9fYmFzZVNldFRvU3RyaW5nJyksIHNob3J0T3V0ID0gcmVxdWlyZSgnLi9fc2hvcnRPdXQnKTtcbi8qKlxuICogU2V0cyB0aGUgYHRvU3RyaW5nYCBtZXRob2Qgb2YgYGZ1bmNgIHRvIHJldHVybiBgc3RyaW5nYC5cbiAqXG4gKiBAcHJpdmF0ZVxuICogQHBhcmFtIHtGdW5jdGlvbn0gZnVuYyBUaGUgZnVuY3Rpb24gdG8gbW9kaWZ5LlxuICogQHBhcmFtIHtGdW5jdGlvbn0gc3RyaW5nIFRoZSBgdG9TdHJpbmdgIHJlc3VsdC5cbiAqIEByZXR1cm5zIHtGdW5jdGlvbn0gUmV0dXJucyBgZnVuY2AuXG4gKi9cbnZhciBzZXRUb1N0cmluZyA9IHNob3J0T3V0KGJhc2VTZXRUb1N0cmluZyk7XG5tb2R1bGUuZXhwb3J0cyA9IHNldFRvU3RyaW5nO1xuIl0sIm1hcHBpbmdzIjoiQUFBQTtBQUNBO0FBQUE7QUFBQTtBQUNBOzs7Ozs7Ozs7O0FBUUE7QUFDQSIsInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./node_modules/lodash/_setToString.js\n')},"./node_modules/lodash/_shortOut.js":
|
||
/*!******************************************!*\
|
||
!*** ./node_modules/lodash/_shortOut.js ***!
|
||
\******************************************/
|
||
/*! no static exports found */function(module,exports,__webpack_require__){"use strict";eval("\n/** Used to detect hot functions by number of calls within a span of milliseconds. */\n\nvar HOT_COUNT = 800,\n HOT_SPAN = 16;\n/* Built-in method references for those with the same name as other `lodash` methods. */\n\nvar nativeNow = Date.now;\n/**\n * Creates a function that'll short out and invoke `identity` instead\n * of `func` when it's called `HOT_COUNT` or more times in `HOT_SPAN`\n * milliseconds.\n *\n * @private\n * @param {Function} func The function to restrict.\n * @returns {Function} Returns the new shortable function.\n */\n\nfunction shortOut(func) {\n var count = 0,\n lastCalled = 0;\n return function () {\n var stamp = nativeNow(),\n remaining = HOT_SPAN - (stamp - lastCalled);\n lastCalled = stamp;\n\n if (remaining > 0) {\n if (++count >= HOT_COUNT) {\n return arguments[0];\n }\n } else {\n count = 0;\n }\n\n return func.apply(undefined, arguments);\n };\n}\n\nmodule.exports = shortOut;//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvbG9kYXNoL19zaG9ydE91dC5qcy5qcyIsInNvdXJjZXMiOlsid2VicGFjazovL1NOTGlicmFyeS8uL25vZGVfbW9kdWxlcy9sb2Rhc2gvX3Nob3J0T3V0LmpzP2YzYzEiXSwic291cmNlc0NvbnRlbnQiOlsiXCJ1c2Ugc3RyaWN0XCI7XG4vKiogVXNlZCB0byBkZXRlY3QgaG90IGZ1bmN0aW9ucyBieSBudW1iZXIgb2YgY2FsbHMgd2l0aGluIGEgc3BhbiBvZiBtaWxsaXNlY29uZHMuICovXG52YXIgSE9UX0NPVU5UID0gODAwLCBIT1RfU1BBTiA9IDE2O1xuLyogQnVpbHQtaW4gbWV0aG9kIHJlZmVyZW5jZXMgZm9yIHRob3NlIHdpdGggdGhlIHNhbWUgbmFtZSBhcyBvdGhlciBgbG9kYXNoYCBtZXRob2RzLiAqL1xudmFyIG5hdGl2ZU5vdyA9IERhdGUubm93O1xuLyoqXG4gKiBDcmVhdGVzIGEgZnVuY3Rpb24gdGhhdCdsbCBzaG9ydCBvdXQgYW5kIGludm9rZSBgaWRlbnRpdHlgIGluc3RlYWRcbiAqIG9mIGBmdW5jYCB3aGVuIGl0J3MgY2FsbGVkIGBIT1RfQ09VTlRgIG9yIG1vcmUgdGltZXMgaW4gYEhPVF9TUEFOYFxuICogbWlsbGlzZWNvbmRzLlxuICpcbiAqIEBwcml2YXRlXG4gKiBAcGFyYW0ge0Z1bmN0aW9ufSBmdW5jIFRoZSBmdW5jdGlvbiB0byByZXN0cmljdC5cbiAqIEByZXR1cm5zIHtGdW5jdGlvbn0gUmV0dXJucyB0aGUgbmV3IHNob3J0YWJsZSBmdW5jdGlvbi5cbiAqL1xuZnVuY3Rpb24gc2hvcnRPdXQoZnVuYykge1xuICAgIHZhciBjb3VudCA9IDAsIGxhc3RDYWxsZWQgPSAwO1xuICAgIHJldHVybiBmdW5jdGlvbiAoKSB7XG4gICAgICAgIHZhciBzdGFtcCA9IG5hdGl2ZU5vdygpLCByZW1haW5pbmcgPSBIT1RfU1BBTiAtIChzdGFtcCAtIGxhc3RDYWxsZWQpO1xuICAgICAgICBsYXN0Q2FsbGVkID0gc3RhbXA7XG4gICAgICAgIGlmIChyZW1haW5pbmcgPiAwKSB7XG4gICAgICAgICAgICBpZiAoKytjb3VudCA+PSBIT1RfQ09VTlQpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gYXJndW1lbnRzWzBdO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgY291bnQgPSAwO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiBmdW5jLmFwcGx5KHVuZGVmaW5lZCwgYXJndW1lbnRzKTtcbiAgICB9O1xufVxubW9kdWxlLmV4cG9ydHMgPSBzaG9ydE91dDtcbiJdLCJtYXBwaW5ncyI6IkFBQUE7QUFDQTtBQUNBO0FBQUE7QUFBQTtBQUNBO0FBQ0E7QUFBQTtBQUNBOzs7Ozs7Ozs7O0FBU0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFFQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUFBIiwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./node_modules/lodash/_shortOut.js\n")},"./node_modules/lodash/_stackClear.js":
|
||
/*!********************************************!*\
|
||
!*** ./node_modules/lodash/_stackClear.js ***!
|
||
\********************************************/
|
||
/*! no static exports found */function(module,exports,__webpack_require__){"use strict";eval('\n\nvar ListCache = __webpack_require__(/*! ./_ListCache */ "./node_modules/lodash/_ListCache.js");\n/**\n * Removes all key-value entries from the stack.\n *\n * @private\n * @name clear\n * @memberOf Stack\n */\n\n\nfunction stackClear() {\n this.__data__ = new ListCache();\n this.size = 0;\n}\n\nmodule.exports = stackClear;//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvbG9kYXNoL19zdGFja0NsZWFyLmpzLmpzIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vU05MaWJyYXJ5Ly4vbm9kZV9tb2R1bGVzL2xvZGFzaC9fc3RhY2tDbGVhci5qcz9lZmI2Il0sInNvdXJjZXNDb250ZW50IjpbIlwidXNlIHN0cmljdFwiO1xudmFyIExpc3RDYWNoZSA9IHJlcXVpcmUoJy4vX0xpc3RDYWNoZScpO1xuLyoqXG4gKiBSZW1vdmVzIGFsbCBrZXktdmFsdWUgZW50cmllcyBmcm9tIHRoZSBzdGFjay5cbiAqXG4gKiBAcHJpdmF0ZVxuICogQG5hbWUgY2xlYXJcbiAqIEBtZW1iZXJPZiBTdGFja1xuICovXG5mdW5jdGlvbiBzdGFja0NsZWFyKCkge1xuICAgIHRoaXMuX19kYXRhX18gPSBuZXcgTGlzdENhY2hlO1xuICAgIHRoaXMuc2l6ZSA9IDA7XG59XG5tb2R1bGUuZXhwb3J0cyA9IHN0YWNrQ2xlYXI7XG4iXSwibWFwcGluZ3MiOiJBQUFBO0FBQ0E7QUFBQTtBQUNBOzs7Ozs7Ozs7QUFPQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUEiLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./node_modules/lodash/_stackClear.js\n')},"./node_modules/lodash/_stackDelete.js":
|
||
/*!*********************************************!*\
|
||
!*** ./node_modules/lodash/_stackDelete.js ***!
|
||
\*********************************************/
|
||
/*! no static exports found */function(module,exports,__webpack_require__){"use strict";eval("\n/**\n * Removes `key` and its value from the stack.\n *\n * @private\n * @name delete\n * @memberOf Stack\n * @param {string} key The key of the value to remove.\n * @returns {boolean} Returns `true` if the entry was removed, else `false`.\n */\n\nfunction stackDelete(key) {\n var data = this.__data__,\n result = data['delete'](key);\n this.size = data.size;\n return result;\n}\n\nmodule.exports = stackDelete;//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvbG9kYXNoL19zdGFja0RlbGV0ZS5qcy5qcyIsInNvdXJjZXMiOlsid2VicGFjazovL1NOTGlicmFyeS8uL25vZGVfbW9kdWxlcy9sb2Rhc2gvX3N0YWNrRGVsZXRlLmpzPzJmY2MiXSwic291cmNlc0NvbnRlbnQiOlsiXCJ1c2Ugc3RyaWN0XCI7XG4vKipcbiAqIFJlbW92ZXMgYGtleWAgYW5kIGl0cyB2YWx1ZSBmcm9tIHRoZSBzdGFjay5cbiAqXG4gKiBAcHJpdmF0ZVxuICogQG5hbWUgZGVsZXRlXG4gKiBAbWVtYmVyT2YgU3RhY2tcbiAqIEBwYXJhbSB7c3RyaW5nfSBrZXkgVGhlIGtleSBvZiB0aGUgdmFsdWUgdG8gcmVtb3ZlLlxuICogQHJldHVybnMge2Jvb2xlYW59IFJldHVybnMgYHRydWVgIGlmIHRoZSBlbnRyeSB3YXMgcmVtb3ZlZCwgZWxzZSBgZmFsc2VgLlxuICovXG5mdW5jdGlvbiBzdGFja0RlbGV0ZShrZXkpIHtcbiAgICB2YXIgZGF0YSA9IHRoaXMuX19kYXRhX18sIHJlc3VsdCA9IGRhdGFbJ2RlbGV0ZSddKGtleSk7XG4gICAgdGhpcy5zaXplID0gZGF0YS5zaXplO1xuICAgIHJldHVybiByZXN1bHQ7XG59XG5tb2R1bGUuZXhwb3J0cyA9IHN0YWNrRGVsZXRlO1xuIl0sIm1hcHBpbmdzIjoiQUFBQTtBQUNBOzs7Ozs7Ozs7O0FBU0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQSIsInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./node_modules/lodash/_stackDelete.js\n")},"./node_modules/lodash/_stackGet.js":
|
||
/*!******************************************!*\
|
||
!*** ./node_modules/lodash/_stackGet.js ***!
|
||
\******************************************/
|
||
/*! no static exports found */function(module,exports,__webpack_require__){"use strict";eval("\n/**\n * Gets the stack value for `key`.\n *\n * @private\n * @name get\n * @memberOf Stack\n * @param {string} key The key of the value to get.\n * @returns {*} Returns the entry value.\n */\n\nfunction stackGet(key) {\n return this.__data__.get(key);\n}\n\nmodule.exports = stackGet;//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvbG9kYXNoL19zdGFja0dldC5qcy5qcyIsInNvdXJjZXMiOlsid2VicGFjazovL1NOTGlicmFyeS8uL25vZGVfbW9kdWxlcy9sb2Rhc2gvX3N0YWNrR2V0LmpzPzgwMmEiXSwic291cmNlc0NvbnRlbnQiOlsiXCJ1c2Ugc3RyaWN0XCI7XG4vKipcbiAqIEdldHMgdGhlIHN0YWNrIHZhbHVlIGZvciBga2V5YC5cbiAqXG4gKiBAcHJpdmF0ZVxuICogQG5hbWUgZ2V0XG4gKiBAbWVtYmVyT2YgU3RhY2tcbiAqIEBwYXJhbSB7c3RyaW5nfSBrZXkgVGhlIGtleSBvZiB0aGUgdmFsdWUgdG8gZ2V0LlxuICogQHJldHVybnMgeyp9IFJldHVybnMgdGhlIGVudHJ5IHZhbHVlLlxuICovXG5mdW5jdGlvbiBzdGFja0dldChrZXkpIHtcbiAgICByZXR1cm4gdGhpcy5fX2RhdGFfXy5nZXQoa2V5KTtcbn1cbm1vZHVsZS5leHBvcnRzID0gc3RhY2tHZXQ7XG4iXSwibWFwcGluZ3MiOiJBQUFBO0FBQ0E7Ozs7Ozs7Ozs7QUFTQTtBQUNBO0FBQ0E7QUFDQTtBQUFBIiwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./node_modules/lodash/_stackGet.js\n")},"./node_modules/lodash/_stackHas.js":
|
||
/*!******************************************!*\
|
||
!*** ./node_modules/lodash/_stackHas.js ***!
|
||
\******************************************/
|
||
/*! no static exports found */function(module,exports,__webpack_require__){"use strict";eval("\n/**\n * Checks if a stack value for `key` exists.\n *\n * @private\n * @name has\n * @memberOf Stack\n * @param {string} key The key of the entry to check.\n * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.\n */\n\nfunction stackHas(key) {\n return this.__data__.has(key);\n}\n\nmodule.exports = stackHas;//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvbG9kYXNoL19zdGFja0hhcy5qcy5qcyIsInNvdXJjZXMiOlsid2VicGFjazovL1NOTGlicmFyeS8uL25vZGVfbW9kdWxlcy9sb2Rhc2gvX3N0YWNrSGFzLmpzPzU1YTMiXSwic291cmNlc0NvbnRlbnQiOlsiXCJ1c2Ugc3RyaWN0XCI7XG4vKipcbiAqIENoZWNrcyBpZiBhIHN0YWNrIHZhbHVlIGZvciBga2V5YCBleGlzdHMuXG4gKlxuICogQHByaXZhdGVcbiAqIEBuYW1lIGhhc1xuICogQG1lbWJlck9mIFN0YWNrXG4gKiBAcGFyYW0ge3N0cmluZ30ga2V5IFRoZSBrZXkgb2YgdGhlIGVudHJ5IHRvIGNoZWNrLlxuICogQHJldHVybnMge2Jvb2xlYW59IFJldHVybnMgYHRydWVgIGlmIGFuIGVudHJ5IGZvciBga2V5YCBleGlzdHMsIGVsc2UgYGZhbHNlYC5cbiAqL1xuZnVuY3Rpb24gc3RhY2tIYXMoa2V5KSB7XG4gICAgcmV0dXJuIHRoaXMuX19kYXRhX18uaGFzKGtleSk7XG59XG5tb2R1bGUuZXhwb3J0cyA9IHN0YWNrSGFzO1xuIl0sIm1hcHBpbmdzIjoiQUFBQTtBQUNBOzs7Ozs7Ozs7O0FBU0E7QUFDQTtBQUNBO0FBQ0E7QUFBQSIsInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./node_modules/lodash/_stackHas.js\n")},"./node_modules/lodash/_stackSet.js":
|
||
/*!******************************************!*\
|
||
!*** ./node_modules/lodash/_stackSet.js ***!
|
||
\******************************************/
|
||
/*! no static exports found */function(module,exports,__webpack_require__){"use strict";eval('\n\nvar ListCache = __webpack_require__(/*! ./_ListCache */ "./node_modules/lodash/_ListCache.js"),\n Map = __webpack_require__(/*! ./_Map */ "./node_modules/lodash/_Map.js"),\n MapCache = __webpack_require__(/*! ./_MapCache */ "./node_modules/lodash/_MapCache.js");\n/** Used as the size to enable large array optimizations. */\n\n\nvar LARGE_ARRAY_SIZE = 200;\n/**\n * Sets the stack `key` to `value`.\n *\n * @private\n * @name set\n * @memberOf Stack\n * @param {string} key The key of the value to set.\n * @param {*} value The value to set.\n * @returns {Object} Returns the stack cache instance.\n */\n\nfunction stackSet(key, value) {\n var data = this.__data__;\n\n if (data instanceof ListCache) {\n var pairs = data.__data__;\n\n if (!Map || pairs.length < LARGE_ARRAY_SIZE - 1) {\n pairs.push([key, value]);\n this.size = ++data.size;\n return this;\n }\n\n data = this.__data__ = new MapCache(pairs);\n }\n\n data.set(key, value);\n this.size = data.size;\n return this;\n}\n\nmodule.exports = stackSet;//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvbG9kYXNoL19zdGFja1NldC5qcy5qcyIsInNvdXJjZXMiOlsid2VicGFjazovL1NOTGlicmFyeS8uL25vZGVfbW9kdWxlcy9sb2Rhc2gvX3N0YWNrU2V0LmpzP2QwMmMiXSwic291cmNlc0NvbnRlbnQiOlsiXCJ1c2Ugc3RyaWN0XCI7XG52YXIgTGlzdENhY2hlID0gcmVxdWlyZSgnLi9fTGlzdENhY2hlJyksIE1hcCA9IHJlcXVpcmUoJy4vX01hcCcpLCBNYXBDYWNoZSA9IHJlcXVpcmUoJy4vX01hcENhY2hlJyk7XG4vKiogVXNlZCBhcyB0aGUgc2l6ZSB0byBlbmFibGUgbGFyZ2UgYXJyYXkgb3B0aW1pemF0aW9ucy4gKi9cbnZhciBMQVJHRV9BUlJBWV9TSVpFID0gMjAwO1xuLyoqXG4gKiBTZXRzIHRoZSBzdGFjayBga2V5YCB0byBgdmFsdWVgLlxuICpcbiAqIEBwcml2YXRlXG4gKiBAbmFtZSBzZXRcbiAqIEBtZW1iZXJPZiBTdGFja1xuICogQHBhcmFtIHtzdHJpbmd9IGtleSBUaGUga2V5IG9mIHRoZSB2YWx1ZSB0byBzZXQuXG4gKiBAcGFyYW0geyp9IHZhbHVlIFRoZSB2YWx1ZSB0byBzZXQuXG4gKiBAcmV0dXJucyB7T2JqZWN0fSBSZXR1cm5zIHRoZSBzdGFjayBjYWNoZSBpbnN0YW5jZS5cbiAqL1xuZnVuY3Rpb24gc3RhY2tTZXQoa2V5LCB2YWx1ZSkge1xuICAgIHZhciBkYXRhID0gdGhpcy5fX2RhdGFfXztcbiAgICBpZiAoZGF0YSBpbnN0YW5jZW9mIExpc3RDYWNoZSkge1xuICAgICAgICB2YXIgcGFpcnMgPSBkYXRhLl9fZGF0YV9fO1xuICAgICAgICBpZiAoIU1hcCB8fCAocGFpcnMubGVuZ3RoIDwgTEFSR0VfQVJSQVlfU0laRSAtIDEpKSB7XG4gICAgICAgICAgICBwYWlycy5wdXNoKFtrZXksIHZhbHVlXSk7XG4gICAgICAgICAgICB0aGlzLnNpemUgPSArK2RhdGEuc2l6ZTtcbiAgICAgICAgICAgIHJldHVybiB0aGlzO1xuICAgICAgICB9XG4gICAgICAgIGRhdGEgPSB0aGlzLl9fZGF0YV9fID0gbmV3IE1hcENhY2hlKHBhaXJzKTtcbiAgICB9XG4gICAgZGF0YS5zZXQoa2V5LCB2YWx1ZSk7XG4gICAgdGhpcy5zaXplID0gZGF0YS5zaXplO1xuICAgIHJldHVybiB0aGlzO1xufVxubW9kdWxlLmV4cG9ydHMgPSBzdGFja1NldDtcbiJdLCJtYXBwaW5ncyI6IkFBQUE7QUFDQTtBQUFBO0FBQUE7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQURBO0FBQ0E7Ozs7Ozs7Ozs7O0FBVUE7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBIiwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./node_modules/lodash/_stackSet.js\n')},"./node_modules/lodash/_strictIndexOf.js":
|
||
/*!***********************************************!*\
|
||
!*** ./node_modules/lodash/_strictIndexOf.js ***!
|
||
\***********************************************/
|
||
/*! no static exports found */function(module,exports,__webpack_require__){"use strict";eval("\n/**\n * A specialized version of `_.indexOf` which performs strict equality\n * comparisons of values, i.e. `===`.\n *\n * @private\n * @param {Array} array The array to inspect.\n * @param {*} value The value to search for.\n * @param {number} fromIndex The index to search from.\n * @returns {number} Returns the index of the matched value, else `-1`.\n */\n\nfunction strictIndexOf(array, value, fromIndex) {\n var index = fromIndex - 1,\n length = array.length;\n\n while (++index < length) {\n if (array[index] === value) {\n return index;\n }\n }\n\n return -1;\n}\n\nmodule.exports = strictIndexOf;//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvbG9kYXNoL19zdHJpY3RJbmRleE9mLmpzLmpzIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vU05MaWJyYXJ5Ly4vbm9kZV9tb2R1bGVzL2xvZGFzaC9fc3RyaWN0SW5kZXhPZi5qcz8wOTlhIl0sInNvdXJjZXNDb250ZW50IjpbIlwidXNlIHN0cmljdFwiO1xuLyoqXG4gKiBBIHNwZWNpYWxpemVkIHZlcnNpb24gb2YgYF8uaW5kZXhPZmAgd2hpY2ggcGVyZm9ybXMgc3RyaWN0IGVxdWFsaXR5XG4gKiBjb21wYXJpc29ucyBvZiB2YWx1ZXMsIGkuZS4gYD09PWAuXG4gKlxuICogQHByaXZhdGVcbiAqIEBwYXJhbSB7QXJyYXl9IGFycmF5IFRoZSBhcnJheSB0byBpbnNwZWN0LlxuICogQHBhcmFtIHsqfSB2YWx1ZSBUaGUgdmFsdWUgdG8gc2VhcmNoIGZvci5cbiAqIEBwYXJhbSB7bnVtYmVyfSBmcm9tSW5kZXggVGhlIGluZGV4IHRvIHNlYXJjaCBmcm9tLlxuICogQHJldHVybnMge251bWJlcn0gUmV0dXJucyB0aGUgaW5kZXggb2YgdGhlIG1hdGNoZWQgdmFsdWUsIGVsc2UgYC0xYC5cbiAqL1xuZnVuY3Rpb24gc3RyaWN0SW5kZXhPZihhcnJheSwgdmFsdWUsIGZyb21JbmRleCkge1xuICAgIHZhciBpbmRleCA9IGZyb21JbmRleCAtIDEsIGxlbmd0aCA9IGFycmF5Lmxlbmd0aDtcbiAgICB3aGlsZSAoKytpbmRleCA8IGxlbmd0aCkge1xuICAgICAgICBpZiAoYXJyYXlbaW5kZXhdID09PSB2YWx1ZSkge1xuICAgICAgICAgICAgcmV0dXJuIGluZGV4O1xuICAgICAgICB9XG4gICAgfVxuICAgIHJldHVybiAtMTtcbn1cbm1vZHVsZS5leHBvcnRzID0gc3RyaWN0SW5kZXhPZjtcbiJdLCJtYXBwaW5ncyI6IkFBQUE7QUFDQTs7Ozs7Ozs7Ozs7QUFVQTtBQUNBO0FBQUE7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUFBIiwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./node_modules/lodash/_strictIndexOf.js\n")},"./node_modules/lodash/_stringToPath.js":
|
||
/*!**********************************************!*\
|
||
!*** ./node_modules/lodash/_stringToPath.js ***!
|
||
\**********************************************/
|
||
/*! no static exports found */function(module,exports,__webpack_require__){"use strict";eval("\n\nvar memoizeCapped = __webpack_require__(/*! ./_memoizeCapped */ \"./node_modules/lodash/_memoizeCapped.js\");\n/** Used to match property names within property paths. */\n\n\nvar rePropName = /[^.[\\]]+|\\[(?:(-?\\d+(?:\\.\\d+)?)|([\"'])((?:(?!\\2)[^\\\\]|\\\\.)*?)\\2)\\]|(?=(?:\\.|\\[\\])(?:\\.|\\[\\]|$))/g;\n/** Used to match backslashes in property paths. */\n\nvar reEscapeChar = /\\\\(\\\\)?/g;\n/**\n * Converts `string` to a property path array.\n *\n * @private\n * @param {string} string The string to convert.\n * @returns {Array} Returns the property path array.\n */\n\nvar stringToPath = memoizeCapped(function (string) {\n var result = [];\n\n if (string.charCodeAt(0) === 46\n /* . */\n ) {\n result.push('');\n }\n\n string.replace(rePropName, function (match, number, quote, subString) {\n result.push(quote ? subString.replace(reEscapeChar, '$1') : number || match);\n });\n return result;\n});\nmodule.exports = stringToPath;//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvbG9kYXNoL19zdHJpbmdUb1BhdGguanMuanMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly9TTkxpYnJhcnkvLi9ub2RlX21vZHVsZXMvbG9kYXNoL19zdHJpbmdUb1BhdGguanM/MThkOCJdLCJzb3VyY2VzQ29udGVudCI6WyJcInVzZSBzdHJpY3RcIjtcbnZhciBtZW1vaXplQ2FwcGVkID0gcmVxdWlyZSgnLi9fbWVtb2l6ZUNhcHBlZCcpO1xuLyoqIFVzZWQgdG8gbWF0Y2ggcHJvcGVydHkgbmFtZXMgd2l0aGluIHByb3BlcnR5IHBhdGhzLiAqL1xudmFyIHJlUHJvcE5hbWUgPSAvW14uW1xcXV0rfFxcWyg/OigtP1xcZCsoPzpcXC5cXGQrKT8pfChbXCInXSkoKD86KD8hXFwyKVteXFxcXF18XFxcXC4pKj8pXFwyKVxcXXwoPz0oPzpcXC58XFxbXFxdKSg/OlxcLnxcXFtcXF18JCkpL2c7XG4vKiogVXNlZCB0byBtYXRjaCBiYWNrc2xhc2hlcyBpbiBwcm9wZXJ0eSBwYXRocy4gKi9cbnZhciByZUVzY2FwZUNoYXIgPSAvXFxcXChcXFxcKT8vZztcbi8qKlxuICogQ29udmVydHMgYHN0cmluZ2AgdG8gYSBwcm9wZXJ0eSBwYXRoIGFycmF5LlxuICpcbiAqIEBwcml2YXRlXG4gKiBAcGFyYW0ge3N0cmluZ30gc3RyaW5nIFRoZSBzdHJpbmcgdG8gY29udmVydC5cbiAqIEByZXR1cm5zIHtBcnJheX0gUmV0dXJucyB0aGUgcHJvcGVydHkgcGF0aCBhcnJheS5cbiAqL1xudmFyIHN0cmluZ1RvUGF0aCA9IG1lbW9pemVDYXBwZWQoZnVuY3Rpb24gKHN0cmluZykge1xuICAgIHZhciByZXN1bHQgPSBbXTtcbiAgICBpZiAoc3RyaW5nLmNoYXJDb2RlQXQoMCkgPT09IDQ2IC8qIC4gKi8pIHtcbiAgICAgICAgcmVzdWx0LnB1c2goJycpO1xuICAgIH1cbiAgICBzdHJpbmcucmVwbGFjZShyZVByb3BOYW1lLCBmdW5jdGlvbiAobWF0Y2gsIG51bWJlciwgcXVvdGUsIHN1YlN0cmluZykge1xuICAgICAgICByZXN1bHQucHVzaChxdW90ZSA/IHN1YlN0cmluZy5yZXBsYWNlKHJlRXNjYXBlQ2hhciwgJyQxJykgOiAobnVtYmVyIHx8IG1hdGNoKSk7XG4gICAgfSk7XG4gICAgcmV0dXJuIHJlc3VsdDtcbn0pO1xubW9kdWxlLmV4cG9ydHMgPSBzdHJpbmdUb1BhdGg7XG4iXSwibWFwcGluZ3MiOiJBQUFBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQURBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7Ozs7Ozs7O0FBT0E7QUFDQTtBQUNBO0FBQUE7QUFBQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBIiwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./node_modules/lodash/_stringToPath.js\n")},"./node_modules/lodash/_toKey.js":
|
||
/*!***************************************!*\
|
||
!*** ./node_modules/lodash/_toKey.js ***!
|
||
\***************************************/
|
||
/*! no static exports found */function(module,exports,__webpack_require__){"use strict";eval("\n\nvar isSymbol = __webpack_require__(/*! ./isSymbol */ \"./node_modules/lodash/isSymbol.js\");\n/** Used as references for various `Number` constants. */\n\n\nvar INFINITY = 1 / 0;\n/**\n * Converts `value` to a string key if it's not a string or symbol.\n *\n * @private\n * @param {*} value The value to inspect.\n * @returns {string|symbol} Returns the key.\n */\n\nfunction toKey(value) {\n if (typeof value == 'string' || isSymbol(value)) {\n return value;\n }\n\n var result = value + '';\n return result == '0' && 1 / value == -INFINITY ? '-0' : result;\n}\n\nmodule.exports = toKey;//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvbG9kYXNoL190b0tleS5qcy5qcyIsInNvdXJjZXMiOlsid2VicGFjazovL1NOTGlicmFyeS8uL25vZGVfbW9kdWxlcy9sb2Rhc2gvX3RvS2V5LmpzP2Y0ZDYiXSwic291cmNlc0NvbnRlbnQiOlsiXCJ1c2Ugc3RyaWN0XCI7XG52YXIgaXNTeW1ib2wgPSByZXF1aXJlKCcuL2lzU3ltYm9sJyk7XG4vKiogVXNlZCBhcyByZWZlcmVuY2VzIGZvciB2YXJpb3VzIGBOdW1iZXJgIGNvbnN0YW50cy4gKi9cbnZhciBJTkZJTklUWSA9IDEgLyAwO1xuLyoqXG4gKiBDb252ZXJ0cyBgdmFsdWVgIHRvIGEgc3RyaW5nIGtleSBpZiBpdCdzIG5vdCBhIHN0cmluZyBvciBzeW1ib2wuXG4gKlxuICogQHByaXZhdGVcbiAqIEBwYXJhbSB7Kn0gdmFsdWUgVGhlIHZhbHVlIHRvIGluc3BlY3QuXG4gKiBAcmV0dXJucyB7c3RyaW5nfHN5bWJvbH0gUmV0dXJucyB0aGUga2V5LlxuICovXG5mdW5jdGlvbiB0b0tleSh2YWx1ZSkge1xuICAgIGlmICh0eXBlb2YgdmFsdWUgPT0gJ3N0cmluZycgfHwgaXNTeW1ib2wodmFsdWUpKSB7XG4gICAgICAgIHJldHVybiB2YWx1ZTtcbiAgICB9XG4gICAgdmFyIHJlc3VsdCA9ICh2YWx1ZSArICcnKTtcbiAgICByZXR1cm4gKHJlc3VsdCA9PSAnMCcgJiYgKDEgLyB2YWx1ZSkgPT0gLUlORklOSVRZKSA/ICctMCcgOiByZXN1bHQ7XG59XG5tb2R1bGUuZXhwb3J0cyA9IHRvS2V5O1xuIl0sIm1hcHBpbmdzIjoiQUFBQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFEQTtBQUNBOzs7Ozs7OztBQU9BO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUFBIiwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./node_modules/lodash/_toKey.js\n")},"./node_modules/lodash/_toSource.js":
|
||
/*!******************************************!*\
|
||
!*** ./node_modules/lodash/_toSource.js ***!
|
||
\******************************************/
|
||
/*! no static exports found */function(module,exports,__webpack_require__){"use strict";eval("\n/** Used for built-in method references. */\n\nvar funcProto = Function.prototype;\n/** Used to resolve the decompiled source of functions. */\n\nvar funcToString = funcProto.toString;\n/**\n * Converts `func` to its source code.\n *\n * @private\n * @param {Function} func The function to convert.\n * @returns {string} Returns the source code.\n */\n\nfunction toSource(func) {\n if (func != null) {\n try {\n return funcToString.call(func);\n } catch (e) {}\n\n try {\n return func + '';\n } catch (e) {}\n }\n\n return '';\n}\n\nmodule.exports = toSource;//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvbG9kYXNoL190b1NvdXJjZS5qcy5qcyIsInNvdXJjZXMiOlsid2VicGFjazovL1NOTGlicmFyeS8uL25vZGVfbW9kdWxlcy9sb2Rhc2gvX3RvU291cmNlLmpzP2RjNTciXSwic291cmNlc0NvbnRlbnQiOlsiXCJ1c2Ugc3RyaWN0XCI7XG4vKiogVXNlZCBmb3IgYnVpbHQtaW4gbWV0aG9kIHJlZmVyZW5jZXMuICovXG52YXIgZnVuY1Byb3RvID0gRnVuY3Rpb24ucHJvdG90eXBlO1xuLyoqIFVzZWQgdG8gcmVzb2x2ZSB0aGUgZGVjb21waWxlZCBzb3VyY2Ugb2YgZnVuY3Rpb25zLiAqL1xudmFyIGZ1bmNUb1N0cmluZyA9IGZ1bmNQcm90by50b1N0cmluZztcbi8qKlxuICogQ29udmVydHMgYGZ1bmNgIHRvIGl0cyBzb3VyY2UgY29kZS5cbiAqXG4gKiBAcHJpdmF0ZVxuICogQHBhcmFtIHtGdW5jdGlvbn0gZnVuYyBUaGUgZnVuY3Rpb24gdG8gY29udmVydC5cbiAqIEByZXR1cm5zIHtzdHJpbmd9IFJldHVybnMgdGhlIHNvdXJjZSBjb2RlLlxuICovXG5mdW5jdGlvbiB0b1NvdXJjZShmdW5jKSB7XG4gICAgaWYgKGZ1bmMgIT0gbnVsbCkge1xuICAgICAgICB0cnkge1xuICAgICAgICAgICAgcmV0dXJuIGZ1bmNUb1N0cmluZy5jYWxsKGZ1bmMpO1xuICAgICAgICB9XG4gICAgICAgIGNhdGNoIChlKSB7IH1cbiAgICAgICAgdHJ5IHtcbiAgICAgICAgICAgIHJldHVybiAoZnVuYyArICcnKTtcbiAgICAgICAgfVxuICAgICAgICBjYXRjaCAoZSkgeyB9XG4gICAgfVxuICAgIHJldHVybiAnJztcbn1cbm1vZHVsZS5leHBvcnRzID0gdG9Tb3VyY2U7XG4iXSwibWFwcGluZ3MiOiJBQUFBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7Ozs7Ozs7O0FBT0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBRUE7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUFBIiwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./node_modules/lodash/_toSource.js\n")},"./node_modules/lodash/constant.js":
|
||
/*!*****************************************!*\
|
||
!*** ./node_modules/lodash/constant.js ***!
|
||
\*****************************************/
|
||
/*! no static exports found */function(module,exports,__webpack_require__){"use strict";eval("\n/**\n * Creates a function that returns `value`.\n *\n * @static\n * @memberOf _\n * @since 2.4.0\n * @category Util\n * @param {*} value The value to return from the new function.\n * @returns {Function} Returns the new constant function.\n * @example\n *\n * var objects = _.times(2, _.constant({ 'a': 1 }));\n *\n * console.log(objects);\n * // => [{ 'a': 1 }, { 'a': 1 }]\n *\n * console.log(objects[0] === objects[1]);\n * // => true\n */\n\nfunction constant(value) {\n return function () {\n return value;\n };\n}\n\nmodule.exports = constant;//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvbG9kYXNoL2NvbnN0YW50LmpzLmpzIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vU05MaWJyYXJ5Ly4vbm9kZV9tb2R1bGVzL2xvZGFzaC9jb25zdGFudC5qcz83MmYwIl0sInNvdXJjZXNDb250ZW50IjpbIlwidXNlIHN0cmljdFwiO1xuLyoqXG4gKiBDcmVhdGVzIGEgZnVuY3Rpb24gdGhhdCByZXR1cm5zIGB2YWx1ZWAuXG4gKlxuICogQHN0YXRpY1xuICogQG1lbWJlck9mIF9cbiAqIEBzaW5jZSAyLjQuMFxuICogQGNhdGVnb3J5IFV0aWxcbiAqIEBwYXJhbSB7Kn0gdmFsdWUgVGhlIHZhbHVlIHRvIHJldHVybiBmcm9tIHRoZSBuZXcgZnVuY3Rpb24uXG4gKiBAcmV0dXJucyB7RnVuY3Rpb259IFJldHVybnMgdGhlIG5ldyBjb25zdGFudCBmdW5jdGlvbi5cbiAqIEBleGFtcGxlXG4gKlxuICogdmFyIG9iamVjdHMgPSBfLnRpbWVzKDIsIF8uY29uc3RhbnQoeyAnYSc6IDEgfSkpO1xuICpcbiAqIGNvbnNvbGUubG9nKG9iamVjdHMpO1xuICogLy8gPT4gW3sgJ2EnOiAxIH0sIHsgJ2EnOiAxIH1dXG4gKlxuICogY29uc29sZS5sb2cob2JqZWN0c1swXSA9PT0gb2JqZWN0c1sxXSk7XG4gKiAvLyA9PiB0cnVlXG4gKi9cbmZ1bmN0aW9uIGNvbnN0YW50KHZhbHVlKSB7XG4gICAgcmV0dXJuIGZ1bmN0aW9uICgpIHtcbiAgICAgICAgcmV0dXJuIHZhbHVlO1xuICAgIH07XG59XG5tb2R1bGUuZXhwb3J0cyA9IGNvbnN0YW50O1xuIl0sIm1hcHBpbmdzIjoiQUFBQTtBQUNBOzs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQW1CQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQSIsInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./node_modules/lodash/constant.js\n")},"./node_modules/lodash/eq.js":
|
||
/*!***********************************!*\
|
||
!*** ./node_modules/lodash/eq.js ***!
|
||
\***********************************/
|
||
/*! no static exports found */function(module,exports,__webpack_require__){"use strict";eval("\n/**\n * Performs a\n * [`SameValueZero`](http://ecma-international.org/ecma-262/7.0/#sec-samevaluezero)\n * comparison between two values to determine if they are equivalent.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to compare.\n * @param {*} other The other value to compare.\n * @returns {boolean} Returns `true` if the values are equivalent, else `false`.\n * @example\n *\n * var object = { 'a': 1 };\n * var other = { 'a': 1 };\n *\n * _.eq(object, object);\n * // => true\n *\n * _.eq(object, other);\n * // => false\n *\n * _.eq('a', 'a');\n * // => true\n *\n * _.eq('a', Object('a'));\n * // => false\n *\n * _.eq(NaN, NaN);\n * // => true\n */\n\nfunction eq(value, other) {\n return value === other || value !== value && other !== other;\n}\n\nmodule.exports = eq;//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvbG9kYXNoL2VxLmpzLmpzIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vU05MaWJyYXJ5Ly4vbm9kZV9tb2R1bGVzL2xvZGFzaC9lcS5qcz85NjM4Il0sInNvdXJjZXNDb250ZW50IjpbIlwidXNlIHN0cmljdFwiO1xuLyoqXG4gKiBQZXJmb3JtcyBhXG4gKiBbYFNhbWVWYWx1ZVplcm9gXShodHRwOi8vZWNtYS1pbnRlcm5hdGlvbmFsLm9yZy9lY21hLTI2Mi83LjAvI3NlYy1zYW1ldmFsdWV6ZXJvKVxuICogY29tcGFyaXNvbiBiZXR3ZWVuIHR3byB2YWx1ZXMgdG8gZGV0ZXJtaW5lIGlmIHRoZXkgYXJlIGVxdWl2YWxlbnQuXG4gKlxuICogQHN0YXRpY1xuICogQG1lbWJlck9mIF9cbiAqIEBzaW5jZSA0LjAuMFxuICogQGNhdGVnb3J5IExhbmdcbiAqIEBwYXJhbSB7Kn0gdmFsdWUgVGhlIHZhbHVlIHRvIGNvbXBhcmUuXG4gKiBAcGFyYW0geyp9IG90aGVyIFRoZSBvdGhlciB2YWx1ZSB0byBjb21wYXJlLlxuICogQHJldHVybnMge2Jvb2xlYW59IFJldHVybnMgYHRydWVgIGlmIHRoZSB2YWx1ZXMgYXJlIGVxdWl2YWxlbnQsIGVsc2UgYGZhbHNlYC5cbiAqIEBleGFtcGxlXG4gKlxuICogdmFyIG9iamVjdCA9IHsgJ2EnOiAxIH07XG4gKiB2YXIgb3RoZXIgPSB7ICdhJzogMSB9O1xuICpcbiAqIF8uZXEob2JqZWN0LCBvYmplY3QpO1xuICogLy8gPT4gdHJ1ZVxuICpcbiAqIF8uZXEob2JqZWN0LCBvdGhlcik7XG4gKiAvLyA9PiBmYWxzZVxuICpcbiAqIF8uZXEoJ2EnLCAnYScpO1xuICogLy8gPT4gdHJ1ZVxuICpcbiAqIF8uZXEoJ2EnLCBPYmplY3QoJ2EnKSk7XG4gKiAvLyA9PiBmYWxzZVxuICpcbiAqIF8uZXEoTmFOLCBOYU4pO1xuICogLy8gPT4gdHJ1ZVxuICovXG5mdW5jdGlvbiBlcSh2YWx1ZSwgb3RoZXIpIHtcbiAgICByZXR1cm4gdmFsdWUgPT09IG90aGVyIHx8ICh2YWx1ZSAhPT0gdmFsdWUgJiYgb3RoZXIgIT09IG90aGVyKTtcbn1cbm1vZHVsZS5leHBvcnRzID0gZXE7XG4iXSwibWFwcGluZ3MiOiJBQUFBO0FBQ0E7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQWdDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBIiwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./node_modules/lodash/eq.js\n")},"./node_modules/lodash/find.js":
|
||
/*!*************************************!*\
|
||
!*** ./node_modules/lodash/find.js ***!
|
||
\*************************************/
|
||
/*! no static exports found */function(module,exports,__webpack_require__){"use strict";eval("\n\nvar createFind = __webpack_require__(/*! ./_createFind */ \"./node_modules/lodash/_createFind.js\"),\n findIndex = __webpack_require__(/*! ./findIndex */ \"./node_modules/lodash/findIndex.js\");\n/**\n * Iterates over elements of `collection`, returning the first element\n * `predicate` returns truthy for. The predicate is invoked with three\n * arguments: (value, index|key, collection).\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Collection\n * @param {Array|Object} collection The collection to inspect.\n * @param {Function} [predicate=_.identity] The function invoked per iteration.\n * @param {number} [fromIndex=0] The index to search from.\n * @returns {*} Returns the matched element, else `undefined`.\n * @example\n *\n * var users = [\n * { 'user': 'barney', 'age': 36, 'active': true },\n * { 'user': 'fred', 'age': 40, 'active': false },\n * { 'user': 'pebbles', 'age': 1, 'active': true }\n * ];\n *\n * _.find(users, function(o) { return o.age < 40; });\n * // => object for 'barney'\n *\n * // The `_.matches` iteratee shorthand.\n * _.find(users, { 'age': 1, 'active': true });\n * // => object for 'pebbles'\n *\n * // The `_.matchesProperty` iteratee shorthand.\n * _.find(users, ['active', false]);\n * // => object for 'fred'\n *\n * // The `_.property` iteratee shorthand.\n * _.find(users, 'active');\n * // => object for 'barney'\n */\n\n\nvar find = createFind(findIndex);\nmodule.exports = find;//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvbG9kYXNoL2ZpbmQuanMuanMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly9TTkxpYnJhcnkvLi9ub2RlX21vZHVsZXMvbG9kYXNoL2ZpbmQuanM/Mjc2OSJdLCJzb3VyY2VzQ29udGVudCI6WyJcInVzZSBzdHJpY3RcIjtcbnZhciBjcmVhdGVGaW5kID0gcmVxdWlyZSgnLi9fY3JlYXRlRmluZCcpLCBmaW5kSW5kZXggPSByZXF1aXJlKCcuL2ZpbmRJbmRleCcpO1xuLyoqXG4gKiBJdGVyYXRlcyBvdmVyIGVsZW1lbnRzIG9mIGBjb2xsZWN0aW9uYCwgcmV0dXJuaW5nIHRoZSBmaXJzdCBlbGVtZW50XG4gKiBgcHJlZGljYXRlYCByZXR1cm5zIHRydXRoeSBmb3IuIFRoZSBwcmVkaWNhdGUgaXMgaW52b2tlZCB3aXRoIHRocmVlXG4gKiBhcmd1bWVudHM6ICh2YWx1ZSwgaW5kZXh8a2V5LCBjb2xsZWN0aW9uKS5cbiAqXG4gKiBAc3RhdGljXG4gKiBAbWVtYmVyT2YgX1xuICogQHNpbmNlIDAuMS4wXG4gKiBAY2F0ZWdvcnkgQ29sbGVjdGlvblxuICogQHBhcmFtIHtBcnJheXxPYmplY3R9IGNvbGxlY3Rpb24gVGhlIGNvbGxlY3Rpb24gdG8gaW5zcGVjdC5cbiAqIEBwYXJhbSB7RnVuY3Rpb259IFtwcmVkaWNhdGU9Xy5pZGVudGl0eV0gVGhlIGZ1bmN0aW9uIGludm9rZWQgcGVyIGl0ZXJhdGlvbi5cbiAqIEBwYXJhbSB7bnVtYmVyfSBbZnJvbUluZGV4PTBdIFRoZSBpbmRleCB0byBzZWFyY2ggZnJvbS5cbiAqIEByZXR1cm5zIHsqfSBSZXR1cm5zIHRoZSBtYXRjaGVkIGVsZW1lbnQsIGVsc2UgYHVuZGVmaW5lZGAuXG4gKiBAZXhhbXBsZVxuICpcbiAqIHZhciB1c2VycyA9IFtcbiAqICAgeyAndXNlcic6ICdiYXJuZXknLCAgJ2FnZSc6IDM2LCAnYWN0aXZlJzogdHJ1ZSB9LFxuICogICB7ICd1c2VyJzogJ2ZyZWQnLCAgICAnYWdlJzogNDAsICdhY3RpdmUnOiBmYWxzZSB9LFxuICogICB7ICd1c2VyJzogJ3BlYmJsZXMnLCAnYWdlJzogMSwgICdhY3RpdmUnOiB0cnVlIH1cbiAqIF07XG4gKlxuICogXy5maW5kKHVzZXJzLCBmdW5jdGlvbihvKSB7IHJldHVybiBvLmFnZSA8IDQwOyB9KTtcbiAqIC8vID0+IG9iamVjdCBmb3IgJ2Jhcm5leSdcbiAqXG4gKiAvLyBUaGUgYF8ubWF0Y2hlc2AgaXRlcmF0ZWUgc2hvcnRoYW5kLlxuICogXy5maW5kKHVzZXJzLCB7ICdhZ2UnOiAxLCAnYWN0aXZlJzogdHJ1ZSB9KTtcbiAqIC8vID0+IG9iamVjdCBmb3IgJ3BlYmJsZXMnXG4gKlxuICogLy8gVGhlIGBfLm1hdGNoZXNQcm9wZXJ0eWAgaXRlcmF0ZWUgc2hvcnRoYW5kLlxuICogXy5maW5kKHVzZXJzLCBbJ2FjdGl2ZScsIGZhbHNlXSk7XG4gKiAvLyA9PiBvYmplY3QgZm9yICdmcmVkJ1xuICpcbiAqIC8vIFRoZSBgXy5wcm9wZXJ0eWAgaXRlcmF0ZWUgc2hvcnRoYW5kLlxuICogXy5maW5kKHVzZXJzLCAnYWN0aXZlJyk7XG4gKiAvLyA9PiBvYmplY3QgZm9yICdiYXJuZXknXG4gKi9cbnZhciBmaW5kID0gY3JlYXRlRmluZChmaW5kSW5kZXgpO1xubW9kdWxlLmV4cG9ydHMgPSBmaW5kO1xuIl0sIm1hcHBpbmdzIjoiQUFBQTtBQUNBO0FBQUE7QUFBQTtBQUNBOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQW9DQTtBQUNBIiwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./node_modules/lodash/find.js\n")},"./node_modules/lodash/findIndex.js":
|
||
/*!******************************************!*\
|
||
!*** ./node_modules/lodash/findIndex.js ***!
|
||
\******************************************/
|
||
/*! no static exports found */function(module,exports,__webpack_require__){"use strict";eval("\n\nvar baseFindIndex = __webpack_require__(/*! ./_baseFindIndex */ \"./node_modules/lodash/_baseFindIndex.js\"),\n baseIteratee = __webpack_require__(/*! ./_baseIteratee */ \"./node_modules/lodash/_baseIteratee.js\"),\n toInteger = __webpack_require__(/*! ./toInteger */ \"./node_modules/lodash/toInteger.js\");\n/* Built-in method references for those with the same name as other `lodash` methods. */\n\n\nvar nativeMax = Math.max;\n/**\n * This method is like `_.find` except that it returns the index of the first\n * element `predicate` returns truthy for instead of the element itself.\n *\n * @static\n * @memberOf _\n * @since 1.1.0\n * @category Array\n * @param {Array} array The array to inspect.\n * @param {Function} [predicate=_.identity] The function invoked per iteration.\n * @param {number} [fromIndex=0] The index to search from.\n * @returns {number} Returns the index of the found element, else `-1`.\n * @example\n *\n * var users = [\n * { 'user': 'barney', 'active': false },\n * { 'user': 'fred', 'active': false },\n * { 'user': 'pebbles', 'active': true }\n * ];\n *\n * _.findIndex(users, function(o) { return o.user == 'barney'; });\n * // => 0\n *\n * // The `_.matches` iteratee shorthand.\n * _.findIndex(users, { 'user': 'fred', 'active': false });\n * // => 1\n *\n * // The `_.matchesProperty` iteratee shorthand.\n * _.findIndex(users, ['active', false]);\n * // => 0\n *\n * // The `_.property` iteratee shorthand.\n * _.findIndex(users, 'active');\n * // => 2\n */\n\nfunction findIndex(array, predicate, fromIndex) {\n var length = array == null ? 0 : array.length;\n\n if (!length) {\n return -1;\n }\n\n var index = fromIndex == null ? 0 : toInteger(fromIndex);\n\n if (index < 0) {\n index = nativeMax(length + index, 0);\n }\n\n return baseFindIndex(array, baseIteratee(predicate, 3), index);\n}\n\nmodule.exports = findIndex;//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvbG9kYXNoL2ZpbmRJbmRleC5qcy5qcyIsInNvdXJjZXMiOlsid2VicGFjazovL1NOTGlicmFyeS8uL25vZGVfbW9kdWxlcy9sb2Rhc2gvZmluZEluZGV4LmpzPzUxZjUiXSwic291cmNlc0NvbnRlbnQiOlsiXCJ1c2Ugc3RyaWN0XCI7XG52YXIgYmFzZUZpbmRJbmRleCA9IHJlcXVpcmUoJy4vX2Jhc2VGaW5kSW5kZXgnKSwgYmFzZUl0ZXJhdGVlID0gcmVxdWlyZSgnLi9fYmFzZUl0ZXJhdGVlJyksIHRvSW50ZWdlciA9IHJlcXVpcmUoJy4vdG9JbnRlZ2VyJyk7XG4vKiBCdWlsdC1pbiBtZXRob2QgcmVmZXJlbmNlcyBmb3IgdGhvc2Ugd2l0aCB0aGUgc2FtZSBuYW1lIGFzIG90aGVyIGBsb2Rhc2hgIG1ldGhvZHMuICovXG52YXIgbmF0aXZlTWF4ID0gTWF0aC5tYXg7XG4vKipcbiAqIFRoaXMgbWV0aG9kIGlzIGxpa2UgYF8uZmluZGAgZXhjZXB0IHRoYXQgaXQgcmV0dXJucyB0aGUgaW5kZXggb2YgdGhlIGZpcnN0XG4gKiBlbGVtZW50IGBwcmVkaWNhdGVgIHJldHVybnMgdHJ1dGh5IGZvciBpbnN0ZWFkIG9mIHRoZSBlbGVtZW50IGl0c2VsZi5cbiAqXG4gKiBAc3RhdGljXG4gKiBAbWVtYmVyT2YgX1xuICogQHNpbmNlIDEuMS4wXG4gKiBAY2F0ZWdvcnkgQXJyYXlcbiAqIEBwYXJhbSB7QXJyYXl9IGFycmF5IFRoZSBhcnJheSB0byBpbnNwZWN0LlxuICogQHBhcmFtIHtGdW5jdGlvbn0gW3ByZWRpY2F0ZT1fLmlkZW50aXR5XSBUaGUgZnVuY3Rpb24gaW52b2tlZCBwZXIgaXRlcmF0aW9uLlxuICogQHBhcmFtIHtudW1iZXJ9IFtmcm9tSW5kZXg9MF0gVGhlIGluZGV4IHRvIHNlYXJjaCBmcm9tLlxuICogQHJldHVybnMge251bWJlcn0gUmV0dXJucyB0aGUgaW5kZXggb2YgdGhlIGZvdW5kIGVsZW1lbnQsIGVsc2UgYC0xYC5cbiAqIEBleGFtcGxlXG4gKlxuICogdmFyIHVzZXJzID0gW1xuICogICB7ICd1c2VyJzogJ2Jhcm5leScsICAnYWN0aXZlJzogZmFsc2UgfSxcbiAqICAgeyAndXNlcic6ICdmcmVkJywgICAgJ2FjdGl2ZSc6IGZhbHNlIH0sXG4gKiAgIHsgJ3VzZXInOiAncGViYmxlcycsICdhY3RpdmUnOiB0cnVlIH1cbiAqIF07XG4gKlxuICogXy5maW5kSW5kZXgodXNlcnMsIGZ1bmN0aW9uKG8pIHsgcmV0dXJuIG8udXNlciA9PSAnYmFybmV5JzsgfSk7XG4gKiAvLyA9PiAwXG4gKlxuICogLy8gVGhlIGBfLm1hdGNoZXNgIGl0ZXJhdGVlIHNob3J0aGFuZC5cbiAqIF8uZmluZEluZGV4KHVzZXJzLCB7ICd1c2VyJzogJ2ZyZWQnLCAnYWN0aXZlJzogZmFsc2UgfSk7XG4gKiAvLyA9PiAxXG4gKlxuICogLy8gVGhlIGBfLm1hdGNoZXNQcm9wZXJ0eWAgaXRlcmF0ZWUgc2hvcnRoYW5kLlxuICogXy5maW5kSW5kZXgodXNlcnMsIFsnYWN0aXZlJywgZmFsc2VdKTtcbiAqIC8vID0+IDBcbiAqXG4gKiAvLyBUaGUgYF8ucHJvcGVydHlgIGl0ZXJhdGVlIHNob3J0aGFuZC5cbiAqIF8uZmluZEluZGV4KHVzZXJzLCAnYWN0aXZlJyk7XG4gKiAvLyA9PiAyXG4gKi9cbmZ1bmN0aW9uIGZpbmRJbmRleChhcnJheSwgcHJlZGljYXRlLCBmcm9tSW5kZXgpIHtcbiAgICB2YXIgbGVuZ3RoID0gYXJyYXkgPT0gbnVsbCA/IDAgOiBhcnJheS5sZW5ndGg7XG4gICAgaWYgKCFsZW5ndGgpIHtcbiAgICAgICAgcmV0dXJuIC0xO1xuICAgIH1cbiAgICB2YXIgaW5kZXggPSBmcm9tSW5kZXggPT0gbnVsbCA/IDAgOiB0b0ludGVnZXIoZnJvbUluZGV4KTtcbiAgICBpZiAoaW5kZXggPCAwKSB7XG4gICAgICAgIGluZGV4ID0gbmF0aXZlTWF4KGxlbmd0aCArIGluZGV4LCAwKTtcbiAgICB9XG4gICAgcmV0dXJuIGJhc2VGaW5kSW5kZXgoYXJyYXksIGJhc2VJdGVyYXRlZShwcmVkaWNhdGUsIDMpLCBpbmRleCk7XG59XG5tb2R1bGUuZXhwb3J0cyA9IGZpbmRJbmRleDtcbiJdLCJtYXBwaW5ncyI6IkFBQUE7QUFDQTtBQUFBO0FBQUE7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQURBO0FBQ0E7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQW1DQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUFBIiwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./node_modules/lodash/findIndex.js\n")},"./node_modules/lodash/get.js":
|
||
/*!************************************!*\
|
||
!*** ./node_modules/lodash/get.js ***!
|
||
\************************************/
|
||
/*! no static exports found */function(module,exports,__webpack_require__){"use strict";eval("\n\nvar baseGet = __webpack_require__(/*! ./_baseGet */ \"./node_modules/lodash/_baseGet.js\");\n/**\n * Gets the value at `path` of `object`. If the resolved value is\n * `undefined`, the `defaultValue` is returned in its place.\n *\n * @static\n * @memberOf _\n * @since 3.7.0\n * @category Object\n * @param {Object} object The object to query.\n * @param {Array|string} path The path of the property to get.\n * @param {*} [defaultValue] The value returned for `undefined` resolved values.\n * @returns {*} Returns the resolved value.\n * @example\n *\n * var object = { 'a': [{ 'b': { 'c': 3 } }] };\n *\n * _.get(object, 'a[0].b.c');\n * // => 3\n *\n * _.get(object, ['a', '0', 'b', 'c']);\n * // => 3\n *\n * _.get(object, 'a.b.c', 'default');\n * // => 'default'\n */\n\n\nfunction get(object, path, defaultValue) {\n var result = object == null ? undefined : baseGet(object, path);\n return result === undefined ? defaultValue : result;\n}\n\nmodule.exports = get;//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvbG9kYXNoL2dldC5qcy5qcyIsInNvdXJjZXMiOlsid2VicGFjazovL1NOTGlicmFyeS8uL25vZGVfbW9kdWxlcy9sb2Rhc2gvZ2V0LmpzPzliMDIiXSwic291cmNlc0NvbnRlbnQiOlsiXCJ1c2Ugc3RyaWN0XCI7XG52YXIgYmFzZUdldCA9IHJlcXVpcmUoJy4vX2Jhc2VHZXQnKTtcbi8qKlxuICogR2V0cyB0aGUgdmFsdWUgYXQgYHBhdGhgIG9mIGBvYmplY3RgLiBJZiB0aGUgcmVzb2x2ZWQgdmFsdWUgaXNcbiAqIGB1bmRlZmluZWRgLCB0aGUgYGRlZmF1bHRWYWx1ZWAgaXMgcmV0dXJuZWQgaW4gaXRzIHBsYWNlLlxuICpcbiAqIEBzdGF0aWNcbiAqIEBtZW1iZXJPZiBfXG4gKiBAc2luY2UgMy43LjBcbiAqIEBjYXRlZ29yeSBPYmplY3RcbiAqIEBwYXJhbSB7T2JqZWN0fSBvYmplY3QgVGhlIG9iamVjdCB0byBxdWVyeS5cbiAqIEBwYXJhbSB7QXJyYXl8c3RyaW5nfSBwYXRoIFRoZSBwYXRoIG9mIHRoZSBwcm9wZXJ0eSB0byBnZXQuXG4gKiBAcGFyYW0geyp9IFtkZWZhdWx0VmFsdWVdIFRoZSB2YWx1ZSByZXR1cm5lZCBmb3IgYHVuZGVmaW5lZGAgcmVzb2x2ZWQgdmFsdWVzLlxuICogQHJldHVybnMgeyp9IFJldHVybnMgdGhlIHJlc29sdmVkIHZhbHVlLlxuICogQGV4YW1wbGVcbiAqXG4gKiB2YXIgb2JqZWN0ID0geyAnYSc6IFt7ICdiJzogeyAnYyc6IDMgfSB9XSB9O1xuICpcbiAqIF8uZ2V0KG9iamVjdCwgJ2FbMF0uYi5jJyk7XG4gKiAvLyA9PiAzXG4gKlxuICogXy5nZXQob2JqZWN0LCBbJ2EnLCAnMCcsICdiJywgJ2MnXSk7XG4gKiAvLyA9PiAzXG4gKlxuICogXy5nZXQob2JqZWN0LCAnYS5iLmMnLCAnZGVmYXVsdCcpO1xuICogLy8gPT4gJ2RlZmF1bHQnXG4gKi9cbmZ1bmN0aW9uIGdldChvYmplY3QsIHBhdGgsIGRlZmF1bHRWYWx1ZSkge1xuICAgIHZhciByZXN1bHQgPSBvYmplY3QgPT0gbnVsbCA/IHVuZGVmaW5lZCA6IGJhc2VHZXQob2JqZWN0LCBwYXRoKTtcbiAgICByZXR1cm4gcmVzdWx0ID09PSB1bmRlZmluZWQgPyBkZWZhdWx0VmFsdWUgOiByZXN1bHQ7XG59XG5tb2R1bGUuZXhwb3J0cyA9IGdldDtcbiJdLCJtYXBwaW5ncyI6IkFBQUE7QUFDQTtBQUFBO0FBQ0E7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQXlCQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUEiLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./node_modules/lodash/get.js\n")},"./node_modules/lodash/hasIn.js":
|
||
/*!**************************************!*\
|
||
!*** ./node_modules/lodash/hasIn.js ***!
|
||
\**************************************/
|
||
/*! no static exports found */function(module,exports,__webpack_require__){"use strict";eval("\n\nvar baseHasIn = __webpack_require__(/*! ./_baseHasIn */ \"./node_modules/lodash/_baseHasIn.js\"),\n hasPath = __webpack_require__(/*! ./_hasPath */ \"./node_modules/lodash/_hasPath.js\");\n/**\n * Checks if `path` is a direct or inherited property of `object`.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Object\n * @param {Object} object The object to query.\n * @param {Array|string} path The path to check.\n * @returns {boolean} Returns `true` if `path` exists, else `false`.\n * @example\n *\n * var object = _.create({ 'a': _.create({ 'b': 2 }) });\n *\n * _.hasIn(object, 'a');\n * // => true\n *\n * _.hasIn(object, 'a.b');\n * // => true\n *\n * _.hasIn(object, ['a', 'b']);\n * // => true\n *\n * _.hasIn(object, 'b');\n * // => false\n */\n\n\nfunction hasIn(object, path) {\n return object != null && hasPath(object, path, baseHasIn);\n}\n\nmodule.exports = hasIn;//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvbG9kYXNoL2hhc0luLmpzLmpzIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vU05MaWJyYXJ5Ly4vbm9kZV9tb2R1bGVzL2xvZGFzaC9oYXNJbi5qcz84NjA0Il0sInNvdXJjZXNDb250ZW50IjpbIlwidXNlIHN0cmljdFwiO1xudmFyIGJhc2VIYXNJbiA9IHJlcXVpcmUoJy4vX2Jhc2VIYXNJbicpLCBoYXNQYXRoID0gcmVxdWlyZSgnLi9faGFzUGF0aCcpO1xuLyoqXG4gKiBDaGVja3MgaWYgYHBhdGhgIGlzIGEgZGlyZWN0IG9yIGluaGVyaXRlZCBwcm9wZXJ0eSBvZiBgb2JqZWN0YC5cbiAqXG4gKiBAc3RhdGljXG4gKiBAbWVtYmVyT2YgX1xuICogQHNpbmNlIDQuMC4wXG4gKiBAY2F0ZWdvcnkgT2JqZWN0XG4gKiBAcGFyYW0ge09iamVjdH0gb2JqZWN0IFRoZSBvYmplY3QgdG8gcXVlcnkuXG4gKiBAcGFyYW0ge0FycmF5fHN0cmluZ30gcGF0aCBUaGUgcGF0aCB0byBjaGVjay5cbiAqIEByZXR1cm5zIHtib29sZWFufSBSZXR1cm5zIGB0cnVlYCBpZiBgcGF0aGAgZXhpc3RzLCBlbHNlIGBmYWxzZWAuXG4gKiBAZXhhbXBsZVxuICpcbiAqIHZhciBvYmplY3QgPSBfLmNyZWF0ZSh7ICdhJzogXy5jcmVhdGUoeyAnYic6IDIgfSkgfSk7XG4gKlxuICogXy5oYXNJbihvYmplY3QsICdhJyk7XG4gKiAvLyA9PiB0cnVlXG4gKlxuICogXy5oYXNJbihvYmplY3QsICdhLmInKTtcbiAqIC8vID0+IHRydWVcbiAqXG4gKiBfLmhhc0luKG9iamVjdCwgWydhJywgJ2InXSk7XG4gKiAvLyA9PiB0cnVlXG4gKlxuICogXy5oYXNJbihvYmplY3QsICdiJyk7XG4gKiAvLyA9PiBmYWxzZVxuICovXG5mdW5jdGlvbiBoYXNJbihvYmplY3QsIHBhdGgpIHtcbiAgICByZXR1cm4gb2JqZWN0ICE9IG51bGwgJiYgaGFzUGF0aChvYmplY3QsIHBhdGgsIGJhc2VIYXNJbik7XG59XG5tb2R1bGUuZXhwb3J0cyA9IGhhc0luO1xuIl0sIm1hcHBpbmdzIjoiQUFBQTtBQUNBO0FBQUE7QUFBQTtBQUNBOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBMEJBO0FBQ0E7QUFDQTtBQUNBO0FBQUEiLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./node_modules/lodash/hasIn.js\n")},"./node_modules/lodash/identity.js":
|
||
/*!*****************************************!*\
|
||
!*** ./node_modules/lodash/identity.js ***!
|
||
\*****************************************/
|
||
/*! no static exports found */function(module,exports,__webpack_require__){"use strict";eval("\n/**\n * This method returns the first argument it receives.\n *\n * @static\n * @since 0.1.0\n * @memberOf _\n * @category Util\n * @param {*} value Any value.\n * @returns {*} Returns `value`.\n * @example\n *\n * var object = { 'a': 1 };\n *\n * console.log(_.identity(object) === object);\n * // => true\n */\n\nfunction identity(value) {\n return value;\n}\n\nmodule.exports = identity;//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvbG9kYXNoL2lkZW50aXR5LmpzLmpzIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vU05MaWJyYXJ5Ly4vbm9kZV9tb2R1bGVzL2xvZGFzaC9pZGVudGl0eS5qcz9jZDlkIl0sInNvdXJjZXNDb250ZW50IjpbIlwidXNlIHN0cmljdFwiO1xuLyoqXG4gKiBUaGlzIG1ldGhvZCByZXR1cm5zIHRoZSBmaXJzdCBhcmd1bWVudCBpdCByZWNlaXZlcy5cbiAqXG4gKiBAc3RhdGljXG4gKiBAc2luY2UgMC4xLjBcbiAqIEBtZW1iZXJPZiBfXG4gKiBAY2F0ZWdvcnkgVXRpbFxuICogQHBhcmFtIHsqfSB2YWx1ZSBBbnkgdmFsdWUuXG4gKiBAcmV0dXJucyB7Kn0gUmV0dXJucyBgdmFsdWVgLlxuICogQGV4YW1wbGVcbiAqXG4gKiB2YXIgb2JqZWN0ID0geyAnYSc6IDEgfTtcbiAqXG4gKiBjb25zb2xlLmxvZyhfLmlkZW50aXR5KG9iamVjdCkgPT09IG9iamVjdCk7XG4gKiAvLyA9PiB0cnVlXG4gKi9cbmZ1bmN0aW9uIGlkZW50aXR5KHZhbHVlKSB7XG4gICAgcmV0dXJuIHZhbHVlO1xufVxubW9kdWxlLmV4cG9ydHMgPSBpZGVudGl0eTtcbiJdLCJtYXBwaW5ncyI6IkFBQUE7QUFDQTs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFnQkE7QUFDQTtBQUNBO0FBQ0E7QUFBQSIsInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./node_modules/lodash/identity.js\n")},"./node_modules/lodash/isArguments.js":
|
||
/*!********************************************!*\
|
||
!*** ./node_modules/lodash/isArguments.js ***!
|
||
\********************************************/
|
||
/*! no static exports found */function(module,exports,__webpack_require__){"use strict";eval("\n\nvar baseIsArguments = __webpack_require__(/*! ./_baseIsArguments */ \"./node_modules/lodash/_baseIsArguments.js\"),\n isObjectLike = __webpack_require__(/*! ./isObjectLike */ \"./node_modules/lodash/isObjectLike.js\");\n/** Used for built-in method references. */\n\n\nvar objectProto = Object.prototype;\n/** Used to check objects for own properties. */\n\nvar hasOwnProperty = objectProto.hasOwnProperty;\n/** Built-in value references. */\n\nvar propertyIsEnumerable = objectProto.propertyIsEnumerable;\n/**\n * Checks if `value` is likely an `arguments` object.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an `arguments` object,\n * else `false`.\n * @example\n *\n * _.isArguments(function() { return arguments; }());\n * // => true\n *\n * _.isArguments([1, 2, 3]);\n * // => false\n */\n\nvar isArguments = baseIsArguments(function () {\n return arguments;\n}()) ? baseIsArguments : function (value) {\n return isObjectLike(value) && hasOwnProperty.call(value, 'callee') && !propertyIsEnumerable.call(value, 'callee');\n};\nmodule.exports = isArguments;//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvbG9kYXNoL2lzQXJndW1lbnRzLmpzLmpzIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vU05MaWJyYXJ5Ly4vbm9kZV9tb2R1bGVzL2xvZGFzaC9pc0FyZ3VtZW50cy5qcz9kMzcwIl0sInNvdXJjZXNDb250ZW50IjpbIlwidXNlIHN0cmljdFwiO1xudmFyIGJhc2VJc0FyZ3VtZW50cyA9IHJlcXVpcmUoJy4vX2Jhc2VJc0FyZ3VtZW50cycpLCBpc09iamVjdExpa2UgPSByZXF1aXJlKCcuL2lzT2JqZWN0TGlrZScpO1xuLyoqIFVzZWQgZm9yIGJ1aWx0LWluIG1ldGhvZCByZWZlcmVuY2VzLiAqL1xudmFyIG9iamVjdFByb3RvID0gT2JqZWN0LnByb3RvdHlwZTtcbi8qKiBVc2VkIHRvIGNoZWNrIG9iamVjdHMgZm9yIG93biBwcm9wZXJ0aWVzLiAqL1xudmFyIGhhc093blByb3BlcnR5ID0gb2JqZWN0UHJvdG8uaGFzT3duUHJvcGVydHk7XG4vKiogQnVpbHQtaW4gdmFsdWUgcmVmZXJlbmNlcy4gKi9cbnZhciBwcm9wZXJ0eUlzRW51bWVyYWJsZSA9IG9iamVjdFByb3RvLnByb3BlcnR5SXNFbnVtZXJhYmxlO1xuLyoqXG4gKiBDaGVja3MgaWYgYHZhbHVlYCBpcyBsaWtlbHkgYW4gYGFyZ3VtZW50c2Agb2JqZWN0LlxuICpcbiAqIEBzdGF0aWNcbiAqIEBtZW1iZXJPZiBfXG4gKiBAc2luY2UgMC4xLjBcbiAqIEBjYXRlZ29yeSBMYW5nXG4gKiBAcGFyYW0geyp9IHZhbHVlIFRoZSB2YWx1ZSB0byBjaGVjay5cbiAqIEByZXR1cm5zIHtib29sZWFufSBSZXR1cm5zIGB0cnVlYCBpZiBgdmFsdWVgIGlzIGFuIGBhcmd1bWVudHNgIG9iamVjdCxcbiAqICBlbHNlIGBmYWxzZWAuXG4gKiBAZXhhbXBsZVxuICpcbiAqIF8uaXNBcmd1bWVudHMoZnVuY3Rpb24oKSB7IHJldHVybiBhcmd1bWVudHM7IH0oKSk7XG4gKiAvLyA9PiB0cnVlXG4gKlxuICogXy5pc0FyZ3VtZW50cyhbMSwgMiwgM10pO1xuICogLy8gPT4gZmFsc2VcbiAqL1xudmFyIGlzQXJndW1lbnRzID0gYmFzZUlzQXJndW1lbnRzKGZ1bmN0aW9uICgpIHsgcmV0dXJuIGFyZ3VtZW50czsgfSgpKSA/IGJhc2VJc0FyZ3VtZW50cyA6IGZ1bmN0aW9uICh2YWx1ZSkge1xuICAgIHJldHVybiBpc09iamVjdExpa2UodmFsdWUpICYmIGhhc093blByb3BlcnR5LmNhbGwodmFsdWUsICdjYWxsZWUnKSAmJlxuICAgICAgICAhcHJvcGVydHlJc0VudW1lcmFibGUuY2FsbCh2YWx1ZSwgJ2NhbGxlZScpO1xufTtcbm1vZHVsZS5leHBvcnRzID0gaXNBcmd1bWVudHM7XG4iXSwibWFwcGluZ3MiOiJBQUFBO0FBQ0E7QUFBQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBREE7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQUE7QUFDQTs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQWtCQTtBQUFBO0FBQUE7QUFDQTtBQUVBO0FBQ0EiLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./node_modules/lodash/isArguments.js\n")},"./node_modules/lodash/isArray.js":
|
||
/*!****************************************!*\
|
||
!*** ./node_modules/lodash/isArray.js ***!
|
||
\****************************************/
|
||
/*! no static exports found */function(module,exports,__webpack_require__){"use strict";eval("\n/**\n * Checks if `value` is classified as an `Array` object.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an array, else `false`.\n * @example\n *\n * _.isArray([1, 2, 3]);\n * // => true\n *\n * _.isArray(document.body.children);\n * // => false\n *\n * _.isArray('abc');\n * // => false\n *\n * _.isArray(_.noop);\n * // => false\n */\n\nvar isArray = Array.isArray;\nmodule.exports = isArray;//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvbG9kYXNoL2lzQXJyYXkuanMuanMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly9TTkxpYnJhcnkvLi9ub2RlX21vZHVsZXMvbG9kYXNoL2lzQXJyYXkuanM/Njc0NyJdLCJzb3VyY2VzQ29udGVudCI6WyJcInVzZSBzdHJpY3RcIjtcbi8qKlxuICogQ2hlY2tzIGlmIGB2YWx1ZWAgaXMgY2xhc3NpZmllZCBhcyBhbiBgQXJyYXlgIG9iamVjdC5cbiAqXG4gKiBAc3RhdGljXG4gKiBAbWVtYmVyT2YgX1xuICogQHNpbmNlIDAuMS4wXG4gKiBAY2F0ZWdvcnkgTGFuZ1xuICogQHBhcmFtIHsqfSB2YWx1ZSBUaGUgdmFsdWUgdG8gY2hlY2suXG4gKiBAcmV0dXJucyB7Ym9vbGVhbn0gUmV0dXJucyBgdHJ1ZWAgaWYgYHZhbHVlYCBpcyBhbiBhcnJheSwgZWxzZSBgZmFsc2VgLlxuICogQGV4YW1wbGVcbiAqXG4gKiBfLmlzQXJyYXkoWzEsIDIsIDNdKTtcbiAqIC8vID0+IHRydWVcbiAqXG4gKiBfLmlzQXJyYXkoZG9jdW1lbnQuYm9keS5jaGlsZHJlbik7XG4gKiAvLyA9PiBmYWxzZVxuICpcbiAqIF8uaXNBcnJheSgnYWJjJyk7XG4gKiAvLyA9PiBmYWxzZVxuICpcbiAqIF8uaXNBcnJheShfLm5vb3ApO1xuICogLy8gPT4gZmFsc2VcbiAqL1xudmFyIGlzQXJyYXkgPSBBcnJheS5pc0FycmF5O1xubW9kdWxlLmV4cG9ydHMgPSBpc0FycmF5O1xuIl0sIm1hcHBpbmdzIjoiQUFBQTtBQUNBOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUF1QkE7QUFDQSIsInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./node_modules/lodash/isArray.js\n")},"./node_modules/lodash/isArrayLike.js":
|
||
/*!********************************************!*\
|
||
!*** ./node_modules/lodash/isArrayLike.js ***!
|
||
\********************************************/
|
||
/*! no static exports found */function(module,exports,__webpack_require__){"use strict";eval("\n\nvar isFunction = __webpack_require__(/*! ./isFunction */ \"./node_modules/lodash/isFunction.js\"),\n isLength = __webpack_require__(/*! ./isLength */ \"./node_modules/lodash/isLength.js\");\n/**\n * Checks if `value` is array-like. A value is considered array-like if it's\n * not a function and has a `value.length` that's an integer greater than or\n * equal to `0` and less than or equal to `Number.MAX_SAFE_INTEGER`.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is array-like, else `false`.\n * @example\n *\n * _.isArrayLike([1, 2, 3]);\n * // => true\n *\n * _.isArrayLike(document.body.children);\n * // => true\n *\n * _.isArrayLike('abc');\n * // => true\n *\n * _.isArrayLike(_.noop);\n * // => false\n */\n\n\nfunction isArrayLike(value) {\n return value != null && isLength(value.length) && !isFunction(value);\n}\n\nmodule.exports = isArrayLike;//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvbG9kYXNoL2lzQXJyYXlMaWtlLmpzLmpzIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vU05MaWJyYXJ5Ly4vbm9kZV9tb2R1bGVzL2xvZGFzaC9pc0FycmF5TGlrZS5qcz8zMGM5Il0sInNvdXJjZXNDb250ZW50IjpbIlwidXNlIHN0cmljdFwiO1xudmFyIGlzRnVuY3Rpb24gPSByZXF1aXJlKCcuL2lzRnVuY3Rpb24nKSwgaXNMZW5ndGggPSByZXF1aXJlKCcuL2lzTGVuZ3RoJyk7XG4vKipcbiAqIENoZWNrcyBpZiBgdmFsdWVgIGlzIGFycmF5LWxpa2UuIEEgdmFsdWUgaXMgY29uc2lkZXJlZCBhcnJheS1saWtlIGlmIGl0J3NcbiAqIG5vdCBhIGZ1bmN0aW9uIGFuZCBoYXMgYSBgdmFsdWUubGVuZ3RoYCB0aGF0J3MgYW4gaW50ZWdlciBncmVhdGVyIHRoYW4gb3JcbiAqIGVxdWFsIHRvIGAwYCBhbmQgbGVzcyB0aGFuIG9yIGVxdWFsIHRvIGBOdW1iZXIuTUFYX1NBRkVfSU5URUdFUmAuXG4gKlxuICogQHN0YXRpY1xuICogQG1lbWJlck9mIF9cbiAqIEBzaW5jZSA0LjAuMFxuICogQGNhdGVnb3J5IExhbmdcbiAqIEBwYXJhbSB7Kn0gdmFsdWUgVGhlIHZhbHVlIHRvIGNoZWNrLlxuICogQHJldHVybnMge2Jvb2xlYW59IFJldHVybnMgYHRydWVgIGlmIGB2YWx1ZWAgaXMgYXJyYXktbGlrZSwgZWxzZSBgZmFsc2VgLlxuICogQGV4YW1wbGVcbiAqXG4gKiBfLmlzQXJyYXlMaWtlKFsxLCAyLCAzXSk7XG4gKiAvLyA9PiB0cnVlXG4gKlxuICogXy5pc0FycmF5TGlrZShkb2N1bWVudC5ib2R5LmNoaWxkcmVuKTtcbiAqIC8vID0+IHRydWVcbiAqXG4gKiBfLmlzQXJyYXlMaWtlKCdhYmMnKTtcbiAqIC8vID0+IHRydWVcbiAqXG4gKiBfLmlzQXJyYXlMaWtlKF8ubm9vcCk7XG4gKiAvLyA9PiBmYWxzZVxuICovXG5mdW5jdGlvbiBpc0FycmF5TGlrZSh2YWx1ZSkge1xuICAgIHJldHVybiB2YWx1ZSAhPSBudWxsICYmIGlzTGVuZ3RoKHZhbHVlLmxlbmd0aCkgJiYgIWlzRnVuY3Rpb24odmFsdWUpO1xufVxubW9kdWxlLmV4cG9ydHMgPSBpc0FycmF5TGlrZTtcbiJdLCJtYXBwaW5ncyI6IkFBQUE7QUFDQTtBQUFBO0FBQUE7QUFDQTs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBeUJBO0FBQ0E7QUFDQTtBQUNBO0FBQUEiLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./node_modules/lodash/isArrayLike.js\n")},"./node_modules/lodash/isArrayLikeObject.js":
|
||
/*!**************************************************!*\
|
||
!*** ./node_modules/lodash/isArrayLikeObject.js ***!
|
||
\**************************************************/
|
||
/*! no static exports found */function(module,exports,__webpack_require__){"use strict";eval('\n\nvar isArrayLike = __webpack_require__(/*! ./isArrayLike */ "./node_modules/lodash/isArrayLike.js"),\n isObjectLike = __webpack_require__(/*! ./isObjectLike */ "./node_modules/lodash/isObjectLike.js");\n/**\n * This method is like `_.isArrayLike` except that it also checks if `value`\n * is an object.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an array-like object,\n * else `false`.\n * @example\n *\n * _.isArrayLikeObject([1, 2, 3]);\n * // => true\n *\n * _.isArrayLikeObject(document.body.children);\n * // => true\n *\n * _.isArrayLikeObject(\'abc\');\n * // => false\n *\n * _.isArrayLikeObject(_.noop);\n * // => false\n */\n\n\nfunction isArrayLikeObject(value) {\n return isObjectLike(value) && isArrayLike(value);\n}\n\nmodule.exports = isArrayLikeObject;//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvbG9kYXNoL2lzQXJyYXlMaWtlT2JqZWN0LmpzLmpzIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vU05MaWJyYXJ5Ly4vbm9kZV9tb2R1bGVzL2xvZGFzaC9pc0FycmF5TGlrZU9iamVjdC5qcz9kY2JlIl0sInNvdXJjZXNDb250ZW50IjpbIlwidXNlIHN0cmljdFwiO1xudmFyIGlzQXJyYXlMaWtlID0gcmVxdWlyZSgnLi9pc0FycmF5TGlrZScpLCBpc09iamVjdExpa2UgPSByZXF1aXJlKCcuL2lzT2JqZWN0TGlrZScpO1xuLyoqXG4gKiBUaGlzIG1ldGhvZCBpcyBsaWtlIGBfLmlzQXJyYXlMaWtlYCBleGNlcHQgdGhhdCBpdCBhbHNvIGNoZWNrcyBpZiBgdmFsdWVgXG4gKiBpcyBhbiBvYmplY3QuXG4gKlxuICogQHN0YXRpY1xuICogQG1lbWJlck9mIF9cbiAqIEBzaW5jZSA0LjAuMFxuICogQGNhdGVnb3J5IExhbmdcbiAqIEBwYXJhbSB7Kn0gdmFsdWUgVGhlIHZhbHVlIHRvIGNoZWNrLlxuICogQHJldHVybnMge2Jvb2xlYW59IFJldHVybnMgYHRydWVgIGlmIGB2YWx1ZWAgaXMgYW4gYXJyYXktbGlrZSBvYmplY3QsXG4gKiAgZWxzZSBgZmFsc2VgLlxuICogQGV4YW1wbGVcbiAqXG4gKiBfLmlzQXJyYXlMaWtlT2JqZWN0KFsxLCAyLCAzXSk7XG4gKiAvLyA9PiB0cnVlXG4gKlxuICogXy5pc0FycmF5TGlrZU9iamVjdChkb2N1bWVudC5ib2R5LmNoaWxkcmVuKTtcbiAqIC8vID0+IHRydWVcbiAqXG4gKiBfLmlzQXJyYXlMaWtlT2JqZWN0KCdhYmMnKTtcbiAqIC8vID0+IGZhbHNlXG4gKlxuICogXy5pc0FycmF5TGlrZU9iamVjdChfLm5vb3ApO1xuICogLy8gPT4gZmFsc2VcbiAqL1xuZnVuY3Rpb24gaXNBcnJheUxpa2VPYmplY3QodmFsdWUpIHtcbiAgICByZXR1cm4gaXNPYmplY3RMaWtlKHZhbHVlKSAmJiBpc0FycmF5TGlrZSh2YWx1ZSk7XG59XG5tb2R1bGUuZXhwb3J0cyA9IGlzQXJyYXlMaWtlT2JqZWN0O1xuIl0sIm1hcHBpbmdzIjoiQUFBQTtBQUNBO0FBQUE7QUFBQTtBQUNBOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUF5QkE7QUFDQTtBQUNBO0FBQ0E7QUFBQSIsInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./node_modules/lodash/isArrayLikeObject.js\n')},"./node_modules/lodash/isBuffer.js":
|
||
/*!*****************************************!*\
|
||
!*** ./node_modules/lodash/isBuffer.js ***!
|
||
\*****************************************/
|
||
/*! no static exports found */function(module,exports,__webpack_require__){"use strict";eval('/* WEBPACK VAR INJECTION */(function(module) {\n\nfunction _typeof(obj) { "@babel/helpers - typeof"; if (typeof Symbol === "function" && typeof Symbol.iterator === "symbol") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }; } return _typeof(obj); }\n\nvar root = __webpack_require__(/*! ./_root */ "./node_modules/lodash/_root.js"),\n stubFalse = __webpack_require__(/*! ./stubFalse */ "./node_modules/lodash/stubFalse.js");\n/** Detect free variable `exports`. */\n\n\nvar freeExports = ( false ? undefined : _typeof(exports)) == \'object\' && exports && !exports.nodeType && exports;\n/** Detect free variable `module`. */\n\nvar freeModule = freeExports && ( false ? undefined : _typeof(module)) == \'object\' && module && !module.nodeType && module;\n/** Detect the popular CommonJS extension `module.exports`. */\n\nvar moduleExports = freeModule && freeModule.exports === freeExports;\n/** Built-in value references. */\n\nvar Buffer = moduleExports ? root.Buffer : undefined;\n/* Built-in method references for those with the same name as other `lodash` methods. */\n\nvar nativeIsBuffer = Buffer ? Buffer.isBuffer : undefined;\n/**\n * Checks if `value` is a buffer.\n *\n * @static\n * @memberOf _\n * @since 4.3.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a buffer, else `false`.\n * @example\n *\n * _.isBuffer(new Buffer(2));\n * // => true\n *\n * _.isBuffer(new Uint8Array(2));\n * // => false\n */\n\nvar isBuffer = nativeIsBuffer || stubFalse;\nmodule.exports = isBuffer;\n/* WEBPACK VAR INJECTION */}.call(this, __webpack_require__(/*! ./../webpack/buildin/module.js */ "./node_modules/webpack/buildin/module.js")(module)))//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvbG9kYXNoL2lzQnVmZmVyLmpzLmpzIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vU05MaWJyYXJ5Ly4vbm9kZV9tb2R1bGVzL2xvZGFzaC9pc0J1ZmZlci5qcz8wZDI0Il0sInNvdXJjZXNDb250ZW50IjpbIlwidXNlIHN0cmljdFwiO1xudmFyIHJvb3QgPSByZXF1aXJlKCcuL19yb290JyksIHN0dWJGYWxzZSA9IHJlcXVpcmUoJy4vc3R1YkZhbHNlJyk7XG4vKiogRGV0ZWN0IGZyZWUgdmFyaWFibGUgYGV4cG9ydHNgLiAqL1xudmFyIGZyZWVFeHBvcnRzID0gdHlwZW9mIGV4cG9ydHMgPT0gJ29iamVjdCcgJiYgZXhwb3J0cyAmJiAhZXhwb3J0cy5ub2RlVHlwZSAmJiBleHBvcnRzO1xuLyoqIERldGVjdCBmcmVlIHZhcmlhYmxlIGBtb2R1bGVgLiAqL1xudmFyIGZyZWVNb2R1bGUgPSBmcmVlRXhwb3J0cyAmJiB0eXBlb2YgbW9kdWxlID09ICdvYmplY3QnICYmIG1vZHVsZSAmJiAhbW9kdWxlLm5vZGVUeXBlICYmIG1vZHVsZTtcbi8qKiBEZXRlY3QgdGhlIHBvcHVsYXIgQ29tbW9uSlMgZXh0ZW5zaW9uIGBtb2R1bGUuZXhwb3J0c2AuICovXG52YXIgbW9kdWxlRXhwb3J0cyA9IGZyZWVNb2R1bGUgJiYgZnJlZU1vZHVsZS5leHBvcnRzID09PSBmcmVlRXhwb3J0cztcbi8qKiBCdWlsdC1pbiB2YWx1ZSByZWZlcmVuY2VzLiAqL1xudmFyIEJ1ZmZlciA9IG1vZHVsZUV4cG9ydHMgPyByb290LkJ1ZmZlciA6IHVuZGVmaW5lZDtcbi8qIEJ1aWx0LWluIG1ldGhvZCByZWZlcmVuY2VzIGZvciB0aG9zZSB3aXRoIHRoZSBzYW1lIG5hbWUgYXMgb3RoZXIgYGxvZGFzaGAgbWV0aG9kcy4gKi9cbnZhciBuYXRpdmVJc0J1ZmZlciA9IEJ1ZmZlciA/IEJ1ZmZlci5pc0J1ZmZlciA6IHVuZGVmaW5lZDtcbi8qKlxuICogQ2hlY2tzIGlmIGB2YWx1ZWAgaXMgYSBidWZmZXIuXG4gKlxuICogQHN0YXRpY1xuICogQG1lbWJlck9mIF9cbiAqIEBzaW5jZSA0LjMuMFxuICogQGNhdGVnb3J5IExhbmdcbiAqIEBwYXJhbSB7Kn0gdmFsdWUgVGhlIHZhbHVlIHRvIGNoZWNrLlxuICogQHJldHVybnMge2Jvb2xlYW59IFJldHVybnMgYHRydWVgIGlmIGB2YWx1ZWAgaXMgYSBidWZmZXIsIGVsc2UgYGZhbHNlYC5cbiAqIEBleGFtcGxlXG4gKlxuICogXy5pc0J1ZmZlcihuZXcgQnVmZmVyKDIpKTtcbiAqIC8vID0+IHRydWVcbiAqXG4gKiBfLmlzQnVmZmVyKG5ldyBVaW50OEFycmF5KDIpKTtcbiAqIC8vID0+IGZhbHNlXG4gKi9cbnZhciBpc0J1ZmZlciA9IG5hdGl2ZUlzQnVmZmVyIHx8IHN0dWJGYWxzZTtcbm1vZHVsZS5leHBvcnRzID0gaXNCdWZmZXI7XG4iXSwibWFwcGluZ3MiOiJBQUFBO0FBQ0E7OztBQUFBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFEQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFBQTtBQUNBOzs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFpQkE7QUFDQTtBIiwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./node_modules/lodash/isBuffer.js\n')},"./node_modules/lodash/isFunction.js":
|
||
/*!*******************************************!*\
|
||
!*** ./node_modules/lodash/isFunction.js ***!
|
||
\*******************************************/
|
||
/*! no static exports found */function(module,exports,__webpack_require__){"use strict";eval("\n\nvar baseGetTag = __webpack_require__(/*! ./_baseGetTag */ \"./node_modules/lodash/_baseGetTag.js\"),\n isObject = __webpack_require__(/*! ./isObject */ \"./node_modules/lodash/isObject.js\");\n/** `Object#toString` result references. */\n\n\nvar asyncTag = '[object AsyncFunction]',\n funcTag = '[object Function]',\n genTag = '[object GeneratorFunction]',\n proxyTag = '[object Proxy]';\n/**\n * Checks if `value` is classified as a `Function` object.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a function, else `false`.\n * @example\n *\n * _.isFunction(_);\n * // => true\n *\n * _.isFunction(/abc/);\n * // => false\n */\n\nfunction isFunction(value) {\n if (!isObject(value)) {\n return false;\n } // The use of `Object#toString` avoids issues with the `typeof` operator\n // in Safari 9 which returns 'object' for typed arrays and other constructors.\n\n\n var tag = baseGetTag(value);\n return tag == funcTag || tag == genTag || tag == asyncTag || tag == proxyTag;\n}\n\nmodule.exports = isFunction;//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvbG9kYXNoL2lzRnVuY3Rpb24uanMuanMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly9TTkxpYnJhcnkvLi9ub2RlX21vZHVsZXMvbG9kYXNoL2lzRnVuY3Rpb24uanM/OTUyMCJdLCJzb3VyY2VzQ29udGVudCI6WyJcInVzZSBzdHJpY3RcIjtcbnZhciBiYXNlR2V0VGFnID0gcmVxdWlyZSgnLi9fYmFzZUdldFRhZycpLCBpc09iamVjdCA9IHJlcXVpcmUoJy4vaXNPYmplY3QnKTtcbi8qKiBgT2JqZWN0I3RvU3RyaW5nYCByZXN1bHQgcmVmZXJlbmNlcy4gKi9cbnZhciBhc3luY1RhZyA9ICdbb2JqZWN0IEFzeW5jRnVuY3Rpb25dJywgZnVuY1RhZyA9ICdbb2JqZWN0IEZ1bmN0aW9uXScsIGdlblRhZyA9ICdbb2JqZWN0IEdlbmVyYXRvckZ1bmN0aW9uXScsIHByb3h5VGFnID0gJ1tvYmplY3QgUHJveHldJztcbi8qKlxuICogQ2hlY2tzIGlmIGB2YWx1ZWAgaXMgY2xhc3NpZmllZCBhcyBhIGBGdW5jdGlvbmAgb2JqZWN0LlxuICpcbiAqIEBzdGF0aWNcbiAqIEBtZW1iZXJPZiBfXG4gKiBAc2luY2UgMC4xLjBcbiAqIEBjYXRlZ29yeSBMYW5nXG4gKiBAcGFyYW0geyp9IHZhbHVlIFRoZSB2YWx1ZSB0byBjaGVjay5cbiAqIEByZXR1cm5zIHtib29sZWFufSBSZXR1cm5zIGB0cnVlYCBpZiBgdmFsdWVgIGlzIGEgZnVuY3Rpb24sIGVsc2UgYGZhbHNlYC5cbiAqIEBleGFtcGxlXG4gKlxuICogXy5pc0Z1bmN0aW9uKF8pO1xuICogLy8gPT4gdHJ1ZVxuICpcbiAqIF8uaXNGdW5jdGlvbigvYWJjLyk7XG4gKiAvLyA9PiBmYWxzZVxuICovXG5mdW5jdGlvbiBpc0Z1bmN0aW9uKHZhbHVlKSB7XG4gICAgaWYgKCFpc09iamVjdCh2YWx1ZSkpIHtcbiAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH1cbiAgICAvLyBUaGUgdXNlIG9mIGBPYmplY3QjdG9TdHJpbmdgIGF2b2lkcyBpc3N1ZXMgd2l0aCB0aGUgYHR5cGVvZmAgb3BlcmF0b3JcbiAgICAvLyBpbiBTYWZhcmkgOSB3aGljaCByZXR1cm5zICdvYmplY3QnIGZvciB0eXBlZCBhcnJheXMgYW5kIG90aGVyIGNvbnN0cnVjdG9ycy5cbiAgICB2YXIgdGFnID0gYmFzZUdldFRhZyh2YWx1ZSk7XG4gICAgcmV0dXJuIHRhZyA9PSBmdW5jVGFnIHx8IHRhZyA9PSBnZW5UYWcgfHwgdGFnID09IGFzeW5jVGFnIHx8IHRhZyA9PSBwcm94eVRhZztcbn1cbm1vZHVsZS5leHBvcnRzID0gaXNGdW5jdGlvbjtcbiJdLCJtYXBwaW5ncyI6IkFBQUE7QUFDQTtBQUFBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFEQTtBQUFBO0FBQUE7QUFBQTtBQUNBOzs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFpQkE7QUFDQTtBQUNBO0FBQ0E7QUFFQTtBQUNBO0FBQ0E7QUFEQTtBQUNBO0FBQ0E7QUFDQTtBQUFBIiwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./node_modules/lodash/isFunction.js\n")},"./node_modules/lodash/isLength.js":
|
||
/*!*****************************************!*\
|
||
!*** ./node_modules/lodash/isLength.js ***!
|
||
\*****************************************/
|
||
/*! no static exports found */function(module,exports,__webpack_require__){"use strict";eval("\n/** Used as references for various `Number` constants. */\n\nvar MAX_SAFE_INTEGER = 9007199254740991;\n/**\n * Checks if `value` is a valid array-like length.\n *\n * **Note:** This method is loosely based on\n * [`ToLength`](http://ecma-international.org/ecma-262/7.0/#sec-tolength).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a valid length, else `false`.\n * @example\n *\n * _.isLength(3);\n * // => true\n *\n * _.isLength(Number.MIN_VALUE);\n * // => false\n *\n * _.isLength(Infinity);\n * // => false\n *\n * _.isLength('3');\n * // => false\n */\n\nfunction isLength(value) {\n return typeof value == 'number' && value > -1 && value % 1 == 0 && value <= MAX_SAFE_INTEGER;\n}\n\nmodule.exports = isLength;//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvbG9kYXNoL2lzTGVuZ3RoLmpzLmpzIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vU05MaWJyYXJ5Ly4vbm9kZV9tb2R1bGVzL2xvZGFzaC9pc0xlbmd0aC5qcz9iMjE4Il0sInNvdXJjZXNDb250ZW50IjpbIlwidXNlIHN0cmljdFwiO1xuLyoqIFVzZWQgYXMgcmVmZXJlbmNlcyBmb3IgdmFyaW91cyBgTnVtYmVyYCBjb25zdGFudHMuICovXG52YXIgTUFYX1NBRkVfSU5URUdFUiA9IDkwMDcxOTkyNTQ3NDA5OTE7XG4vKipcbiAqIENoZWNrcyBpZiBgdmFsdWVgIGlzIGEgdmFsaWQgYXJyYXktbGlrZSBsZW5ndGguXG4gKlxuICogKipOb3RlOioqIFRoaXMgbWV0aG9kIGlzIGxvb3NlbHkgYmFzZWQgb25cbiAqIFtgVG9MZW5ndGhgXShodHRwOi8vZWNtYS1pbnRlcm5hdGlvbmFsLm9yZy9lY21hLTI2Mi83LjAvI3NlYy10b2xlbmd0aCkuXG4gKlxuICogQHN0YXRpY1xuICogQG1lbWJlck9mIF9cbiAqIEBzaW5jZSA0LjAuMFxuICogQGNhdGVnb3J5IExhbmdcbiAqIEBwYXJhbSB7Kn0gdmFsdWUgVGhlIHZhbHVlIHRvIGNoZWNrLlxuICogQHJldHVybnMge2Jvb2xlYW59IFJldHVybnMgYHRydWVgIGlmIGB2YWx1ZWAgaXMgYSB2YWxpZCBsZW5ndGgsIGVsc2UgYGZhbHNlYC5cbiAqIEBleGFtcGxlXG4gKlxuICogXy5pc0xlbmd0aCgzKTtcbiAqIC8vID0+IHRydWVcbiAqXG4gKiBfLmlzTGVuZ3RoKE51bWJlci5NSU5fVkFMVUUpO1xuICogLy8gPT4gZmFsc2VcbiAqXG4gKiBfLmlzTGVuZ3RoKEluZmluaXR5KTtcbiAqIC8vID0+IGZhbHNlXG4gKlxuICogXy5pc0xlbmd0aCgnMycpO1xuICogLy8gPT4gZmFsc2VcbiAqL1xuZnVuY3Rpb24gaXNMZW5ndGgodmFsdWUpIHtcbiAgICByZXR1cm4gdHlwZW9mIHZhbHVlID09ICdudW1iZXInICYmXG4gICAgICAgIHZhbHVlID4gLTEgJiYgdmFsdWUgJSAxID09IDAgJiYgdmFsdWUgPD0gTUFYX1NBRkVfSU5URUdFUjtcbn1cbm1vZHVsZS5leHBvcnRzID0gaXNMZW5ndGg7XG4iXSwibWFwcGluZ3MiOiJBQUFBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQTBCQTtBQUNBO0FBRUE7QUFDQTtBQUFBIiwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./node_modules/lodash/isLength.js\n")},"./node_modules/lodash/isObject.js":
|
||
/*!*****************************************!*\
|
||
!*** ./node_modules/lodash/isObject.js ***!
|
||
\*****************************************/
|
||
/*! no static exports found */function(module,exports,__webpack_require__){"use strict";eval('\n/**\n * Checks if `value` is the\n * [language type](http://www.ecma-international.org/ecma-262/7.0/#sec-ecmascript-language-types)\n * of `Object`. (e.g. arrays, functions, objects, regexes, `new Number(0)`, and `new String(\'\')`)\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an object, else `false`.\n * @example\n *\n * _.isObject({});\n * // => true\n *\n * _.isObject([1, 2, 3]);\n * // => true\n *\n * _.isObject(_.noop);\n * // => true\n *\n * _.isObject(null);\n * // => false\n */\n\nfunction _typeof(obj) { "@babel/helpers - typeof"; if (typeof Symbol === "function" && typeof Symbol.iterator === "symbol") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }; } return _typeof(obj); }\n\nfunction isObject(value) {\n var type = _typeof(value);\n\n return value != null && (type == \'object\' || type == \'function\');\n}\n\nmodule.exports = isObject;//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvbG9kYXNoL2lzT2JqZWN0LmpzLmpzIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vU05MaWJyYXJ5Ly4vbm9kZV9tb2R1bGVzL2xvZGFzaC9pc09iamVjdC5qcz8xYThjIl0sInNvdXJjZXNDb250ZW50IjpbIlwidXNlIHN0cmljdFwiO1xuLyoqXG4gKiBDaGVja3MgaWYgYHZhbHVlYCBpcyB0aGVcbiAqIFtsYW5ndWFnZSB0eXBlXShodHRwOi8vd3d3LmVjbWEtaW50ZXJuYXRpb25hbC5vcmcvZWNtYS0yNjIvNy4wLyNzZWMtZWNtYXNjcmlwdC1sYW5ndWFnZS10eXBlcylcbiAqIG9mIGBPYmplY3RgLiAoZS5nLiBhcnJheXMsIGZ1bmN0aW9ucywgb2JqZWN0cywgcmVnZXhlcywgYG5ldyBOdW1iZXIoMClgLCBhbmQgYG5ldyBTdHJpbmcoJycpYClcbiAqXG4gKiBAc3RhdGljXG4gKiBAbWVtYmVyT2YgX1xuICogQHNpbmNlIDAuMS4wXG4gKiBAY2F0ZWdvcnkgTGFuZ1xuICogQHBhcmFtIHsqfSB2YWx1ZSBUaGUgdmFsdWUgdG8gY2hlY2suXG4gKiBAcmV0dXJucyB7Ym9vbGVhbn0gUmV0dXJucyBgdHJ1ZWAgaWYgYHZhbHVlYCBpcyBhbiBvYmplY3QsIGVsc2UgYGZhbHNlYC5cbiAqIEBleGFtcGxlXG4gKlxuICogXy5pc09iamVjdCh7fSk7XG4gKiAvLyA9PiB0cnVlXG4gKlxuICogXy5pc09iamVjdChbMSwgMiwgM10pO1xuICogLy8gPT4gdHJ1ZVxuICpcbiAqIF8uaXNPYmplY3QoXy5ub29wKTtcbiAqIC8vID0+IHRydWVcbiAqXG4gKiBfLmlzT2JqZWN0KG51bGwpO1xuICogLy8gPT4gZmFsc2VcbiAqL1xuZnVuY3Rpb24gaXNPYmplY3QodmFsdWUpIHtcbiAgICB2YXIgdHlwZSA9IHR5cGVvZiB2YWx1ZTtcbiAgICByZXR1cm4gdmFsdWUgIT0gbnVsbCAmJiAodHlwZSA9PSAnb2JqZWN0JyB8fCB0eXBlID09ICdmdW5jdGlvbicpO1xufVxubW9kdWxlLmV4cG9ydHMgPSBpc09iamVjdDtcbiJdLCJtYXBwaW5ncyI6IkFBQUE7QUFDQTs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQXlCQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFBQSIsInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./node_modules/lodash/isObject.js\n')},"./node_modules/lodash/isObjectLike.js":
|
||
/*!*********************************************!*\
|
||
!*** ./node_modules/lodash/isObjectLike.js ***!
|
||
\*********************************************/
|
||
/*! no static exports found */function(module,exports,__webpack_require__){"use strict";eval('\n/**\n * Checks if `value` is object-like. A value is object-like if it\'s not `null`\n * and has a `typeof` result of "object".\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is object-like, else `false`.\n * @example\n *\n * _.isObjectLike({});\n * // => true\n *\n * _.isObjectLike([1, 2, 3]);\n * // => true\n *\n * _.isObjectLike(_.noop);\n * // => false\n *\n * _.isObjectLike(null);\n * // => false\n */\n\nfunction _typeof(obj) { "@babel/helpers - typeof"; if (typeof Symbol === "function" && typeof Symbol.iterator === "symbol") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }; } return _typeof(obj); }\n\nfunction isObjectLike(value) {\n return value != null && _typeof(value) == \'object\';\n}\n\nmodule.exports = isObjectLike;//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvbG9kYXNoL2lzT2JqZWN0TGlrZS5qcy5qcyIsInNvdXJjZXMiOlsid2VicGFjazovL1NOTGlicmFyeS8uL25vZGVfbW9kdWxlcy9sb2Rhc2gvaXNPYmplY3RMaWtlLmpzPzEzMTAiXSwic291cmNlc0NvbnRlbnQiOlsiXCJ1c2Ugc3RyaWN0XCI7XG4vKipcbiAqIENoZWNrcyBpZiBgdmFsdWVgIGlzIG9iamVjdC1saWtlLiBBIHZhbHVlIGlzIG9iamVjdC1saWtlIGlmIGl0J3Mgbm90IGBudWxsYFxuICogYW5kIGhhcyBhIGB0eXBlb2ZgIHJlc3VsdCBvZiBcIm9iamVjdFwiLlxuICpcbiAqIEBzdGF0aWNcbiAqIEBtZW1iZXJPZiBfXG4gKiBAc2luY2UgNC4wLjBcbiAqIEBjYXRlZ29yeSBMYW5nXG4gKiBAcGFyYW0geyp9IHZhbHVlIFRoZSB2YWx1ZSB0byBjaGVjay5cbiAqIEByZXR1cm5zIHtib29sZWFufSBSZXR1cm5zIGB0cnVlYCBpZiBgdmFsdWVgIGlzIG9iamVjdC1saWtlLCBlbHNlIGBmYWxzZWAuXG4gKiBAZXhhbXBsZVxuICpcbiAqIF8uaXNPYmplY3RMaWtlKHt9KTtcbiAqIC8vID0+IHRydWVcbiAqXG4gKiBfLmlzT2JqZWN0TGlrZShbMSwgMiwgM10pO1xuICogLy8gPT4gdHJ1ZVxuICpcbiAqIF8uaXNPYmplY3RMaWtlKF8ubm9vcCk7XG4gKiAvLyA9PiBmYWxzZVxuICpcbiAqIF8uaXNPYmplY3RMaWtlKG51bGwpO1xuICogLy8gPT4gZmFsc2VcbiAqL1xuZnVuY3Rpb24gaXNPYmplY3RMaWtlKHZhbHVlKSB7XG4gICAgcmV0dXJuIHZhbHVlICE9IG51bGwgJiYgdHlwZW9mIHZhbHVlID09ICdvYmplY3QnO1xufVxubW9kdWxlLmV4cG9ydHMgPSBpc09iamVjdExpa2U7XG4iXSwibWFwcGluZ3MiOiJBQUFBO0FBQ0E7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQXdCQTtBQUNBO0FBQ0E7QUFDQTtBQUFBIiwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./node_modules/lodash/isObjectLike.js\n')},"./node_modules/lodash/isPlainObject.js":
|
||
/*!**********************************************!*\
|
||
!*** ./node_modules/lodash/isPlainObject.js ***!
|
||
\**********************************************/
|
||
/*! no static exports found */function(module,exports,__webpack_require__){"use strict";eval("\n\nvar baseGetTag = __webpack_require__(/*! ./_baseGetTag */ \"./node_modules/lodash/_baseGetTag.js\"),\n getPrototype = __webpack_require__(/*! ./_getPrototype */ \"./node_modules/lodash/_getPrototype.js\"),\n isObjectLike = __webpack_require__(/*! ./isObjectLike */ \"./node_modules/lodash/isObjectLike.js\");\n/** `Object#toString` result references. */\n\n\nvar objectTag = '[object Object]';\n/** Used for built-in method references. */\n\nvar funcProto = Function.prototype,\n objectProto = Object.prototype;\n/** Used to resolve the decompiled source of functions. */\n\nvar funcToString = funcProto.toString;\n/** Used to check objects for own properties. */\n\nvar hasOwnProperty = objectProto.hasOwnProperty;\n/** Used to infer the `Object` constructor. */\n\nvar objectCtorString = funcToString.call(Object);\n/**\n * Checks if `value` is a plain object, that is, an object created by the\n * `Object` constructor or one with a `[[Prototype]]` of `null`.\n *\n * @static\n * @memberOf _\n * @since 0.8.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a plain object, else `false`.\n * @example\n *\n * function Foo() {\n * this.a = 1;\n * }\n *\n * _.isPlainObject(new Foo);\n * // => false\n *\n * _.isPlainObject([1, 2, 3]);\n * // => false\n *\n * _.isPlainObject({ 'x': 0, 'y': 0 });\n * // => true\n *\n * _.isPlainObject(Object.create(null));\n * // => true\n */\n\nfunction isPlainObject(value) {\n if (!isObjectLike(value) || baseGetTag(value) != objectTag) {\n return false;\n }\n\n var proto = getPrototype(value);\n\n if (proto === null) {\n return true;\n }\n\n var Ctor = hasOwnProperty.call(proto, 'constructor') && proto.constructor;\n return typeof Ctor == 'function' && Ctor instanceof Ctor && funcToString.call(Ctor) == objectCtorString;\n}\n\nmodule.exports = isPlainObject;//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvbG9kYXNoL2lzUGxhaW5PYmplY3QuanMuanMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly9TTkxpYnJhcnkvLi9ub2RlX21vZHVsZXMvbG9kYXNoL2lzUGxhaW5PYmplY3QuanM/NjBlZCJdLCJzb3VyY2VzQ29udGVudCI6WyJcInVzZSBzdHJpY3RcIjtcbnZhciBiYXNlR2V0VGFnID0gcmVxdWlyZSgnLi9fYmFzZUdldFRhZycpLCBnZXRQcm90b3R5cGUgPSByZXF1aXJlKCcuL19nZXRQcm90b3R5cGUnKSwgaXNPYmplY3RMaWtlID0gcmVxdWlyZSgnLi9pc09iamVjdExpa2UnKTtcbi8qKiBgT2JqZWN0I3RvU3RyaW5nYCByZXN1bHQgcmVmZXJlbmNlcy4gKi9cbnZhciBvYmplY3RUYWcgPSAnW29iamVjdCBPYmplY3RdJztcbi8qKiBVc2VkIGZvciBidWlsdC1pbiBtZXRob2QgcmVmZXJlbmNlcy4gKi9cbnZhciBmdW5jUHJvdG8gPSBGdW5jdGlvbi5wcm90b3R5cGUsIG9iamVjdFByb3RvID0gT2JqZWN0LnByb3RvdHlwZTtcbi8qKiBVc2VkIHRvIHJlc29sdmUgdGhlIGRlY29tcGlsZWQgc291cmNlIG9mIGZ1bmN0aW9ucy4gKi9cbnZhciBmdW5jVG9TdHJpbmcgPSBmdW5jUHJvdG8udG9TdHJpbmc7XG4vKiogVXNlZCB0byBjaGVjayBvYmplY3RzIGZvciBvd24gcHJvcGVydGllcy4gKi9cbnZhciBoYXNPd25Qcm9wZXJ0eSA9IG9iamVjdFByb3RvLmhhc093blByb3BlcnR5O1xuLyoqIFVzZWQgdG8gaW5mZXIgdGhlIGBPYmplY3RgIGNvbnN0cnVjdG9yLiAqL1xudmFyIG9iamVjdEN0b3JTdHJpbmcgPSBmdW5jVG9TdHJpbmcuY2FsbChPYmplY3QpO1xuLyoqXG4gKiBDaGVja3MgaWYgYHZhbHVlYCBpcyBhIHBsYWluIG9iamVjdCwgdGhhdCBpcywgYW4gb2JqZWN0IGNyZWF0ZWQgYnkgdGhlXG4gKiBgT2JqZWN0YCBjb25zdHJ1Y3RvciBvciBvbmUgd2l0aCBhIGBbW1Byb3RvdHlwZV1dYCBvZiBgbnVsbGAuXG4gKlxuICogQHN0YXRpY1xuICogQG1lbWJlck9mIF9cbiAqIEBzaW5jZSAwLjguMFxuICogQGNhdGVnb3J5IExhbmdcbiAqIEBwYXJhbSB7Kn0gdmFsdWUgVGhlIHZhbHVlIHRvIGNoZWNrLlxuICogQHJldHVybnMge2Jvb2xlYW59IFJldHVybnMgYHRydWVgIGlmIGB2YWx1ZWAgaXMgYSBwbGFpbiBvYmplY3QsIGVsc2UgYGZhbHNlYC5cbiAqIEBleGFtcGxlXG4gKlxuICogZnVuY3Rpb24gRm9vKCkge1xuICogICB0aGlzLmEgPSAxO1xuICogfVxuICpcbiAqIF8uaXNQbGFpbk9iamVjdChuZXcgRm9vKTtcbiAqIC8vID0+IGZhbHNlXG4gKlxuICogXy5pc1BsYWluT2JqZWN0KFsxLCAyLCAzXSk7XG4gKiAvLyA9PiBmYWxzZVxuICpcbiAqIF8uaXNQbGFpbk9iamVjdCh7ICd4JzogMCwgJ3knOiAwIH0pO1xuICogLy8gPT4gdHJ1ZVxuICpcbiAqIF8uaXNQbGFpbk9iamVjdChPYmplY3QuY3JlYXRlKG51bGwpKTtcbiAqIC8vID0+IHRydWVcbiAqL1xuZnVuY3Rpb24gaXNQbGFpbk9iamVjdCh2YWx1ZSkge1xuICAgIGlmICghaXNPYmplY3RMaWtlKHZhbHVlKSB8fCBiYXNlR2V0VGFnKHZhbHVlKSAhPSBvYmplY3RUYWcpIHtcbiAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH1cbiAgICB2YXIgcHJvdG8gPSBnZXRQcm90b3R5cGUodmFsdWUpO1xuICAgIGlmIChwcm90byA9PT0gbnVsbCkge1xuICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICB9XG4gICAgdmFyIEN0b3IgPSBoYXNPd25Qcm9wZXJ0eS5jYWxsKHByb3RvLCAnY29uc3RydWN0b3InKSAmJiBwcm90by5jb25zdHJ1Y3RvcjtcbiAgICByZXR1cm4gdHlwZW9mIEN0b3IgPT0gJ2Z1bmN0aW9uJyAmJiBDdG9yIGluc3RhbmNlb2YgQ3RvciAmJlxuICAgICAgICBmdW5jVG9TdHJpbmcuY2FsbChDdG9yKSA9PSBvYmplY3RDdG9yU3RyaW5nO1xufVxubW9kdWxlLmV4cG9ydHMgPSBpc1BsYWluT2JqZWN0O1xuIl0sIm1hcHBpbmdzIjoiQUFBQTtBQUNBO0FBQUE7QUFBQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBREE7QUFDQTtBQUNBO0FBQUE7QUFBQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFBQTtBQUNBOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQTRCQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUVBO0FBQ0E7QUFBQSIsInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./node_modules/lodash/isPlainObject.js\n")},"./node_modules/lodash/isSymbol.js":
|
||
/*!*****************************************!*\
|
||
!*** ./node_modules/lodash/isSymbol.js ***!
|
||
\*****************************************/
|
||
/*! no static exports found */function(module,exports,__webpack_require__){"use strict";eval('\n\nfunction _typeof(obj) { "@babel/helpers - typeof"; if (typeof Symbol === "function" && typeof Symbol.iterator === "symbol") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }; } return _typeof(obj); }\n\nvar baseGetTag = __webpack_require__(/*! ./_baseGetTag */ "./node_modules/lodash/_baseGetTag.js"),\n isObjectLike = __webpack_require__(/*! ./isObjectLike */ "./node_modules/lodash/isObjectLike.js");\n/** `Object#toString` result references. */\n\n\nvar symbolTag = \'[object Symbol]\';\n/**\n * Checks if `value` is classified as a `Symbol` primitive or object.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a symbol, else `false`.\n * @example\n *\n * _.isSymbol(Symbol.iterator);\n * // => true\n *\n * _.isSymbol(\'abc\');\n * // => false\n */\n\nfunction isSymbol(value) {\n return _typeof(value) == \'symbol\' || isObjectLike(value) && baseGetTag(value) == symbolTag;\n}\n\nmodule.exports = isSymbol;//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvbG9kYXNoL2lzU3ltYm9sLmpzLmpzIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vU05MaWJyYXJ5Ly4vbm9kZV9tb2R1bGVzL2xvZGFzaC9pc1N5bWJvbC5qcz9mZmQ2Il0sInNvdXJjZXNDb250ZW50IjpbIlwidXNlIHN0cmljdFwiO1xudmFyIGJhc2VHZXRUYWcgPSByZXF1aXJlKCcuL19iYXNlR2V0VGFnJyksIGlzT2JqZWN0TGlrZSA9IHJlcXVpcmUoJy4vaXNPYmplY3RMaWtlJyk7XG4vKiogYE9iamVjdCN0b1N0cmluZ2AgcmVzdWx0IHJlZmVyZW5jZXMuICovXG52YXIgc3ltYm9sVGFnID0gJ1tvYmplY3QgU3ltYm9sXSc7XG4vKipcbiAqIENoZWNrcyBpZiBgdmFsdWVgIGlzIGNsYXNzaWZpZWQgYXMgYSBgU3ltYm9sYCBwcmltaXRpdmUgb3Igb2JqZWN0LlxuICpcbiAqIEBzdGF0aWNcbiAqIEBtZW1iZXJPZiBfXG4gKiBAc2luY2UgNC4wLjBcbiAqIEBjYXRlZ29yeSBMYW5nXG4gKiBAcGFyYW0geyp9IHZhbHVlIFRoZSB2YWx1ZSB0byBjaGVjay5cbiAqIEByZXR1cm5zIHtib29sZWFufSBSZXR1cm5zIGB0cnVlYCBpZiBgdmFsdWVgIGlzIGEgc3ltYm9sLCBlbHNlIGBmYWxzZWAuXG4gKiBAZXhhbXBsZVxuICpcbiAqIF8uaXNTeW1ib2woU3ltYm9sLml0ZXJhdG9yKTtcbiAqIC8vID0+IHRydWVcbiAqXG4gKiBfLmlzU3ltYm9sKCdhYmMnKTtcbiAqIC8vID0+IGZhbHNlXG4gKi9cbmZ1bmN0aW9uIGlzU3ltYm9sKHZhbHVlKSB7XG4gICAgcmV0dXJuIHR5cGVvZiB2YWx1ZSA9PSAnc3ltYm9sJyB8fFxuICAgICAgICAoaXNPYmplY3RMaWtlKHZhbHVlKSAmJiBiYXNlR2V0VGFnKHZhbHVlKSA9PSBzeW1ib2xUYWcpO1xufVxubW9kdWxlLmV4cG9ydHMgPSBpc1N5bWJvbDtcbiJdLCJtYXBwaW5ncyI6IkFBQUE7QUFDQTs7O0FBQUE7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQURBO0FBQ0E7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQWlCQTtBQUNBO0FBRUE7QUFDQTtBQUFBIiwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./node_modules/lodash/isSymbol.js\n')},"./node_modules/lodash/isTypedArray.js":
|
||
/*!*********************************************!*\
|
||
!*** ./node_modules/lodash/isTypedArray.js ***!
|
||
\*********************************************/
|
||
/*! no static exports found */function(module,exports,__webpack_require__){"use strict";eval('\n\nvar baseIsTypedArray = __webpack_require__(/*! ./_baseIsTypedArray */ "./node_modules/lodash/_baseIsTypedArray.js"),\n baseUnary = __webpack_require__(/*! ./_baseUnary */ "./node_modules/lodash/_baseUnary.js"),\n nodeUtil = __webpack_require__(/*! ./_nodeUtil */ "./node_modules/lodash/_nodeUtil.js");\n/* Node.js helper references. */\n\n\nvar nodeIsTypedArray = nodeUtil && nodeUtil.isTypedArray;\n/**\n * Checks if `value` is classified as a typed array.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a typed array, else `false`.\n * @example\n *\n * _.isTypedArray(new Uint8Array);\n * // => true\n *\n * _.isTypedArray([]);\n * // => false\n */\n\nvar isTypedArray = nodeIsTypedArray ? baseUnary(nodeIsTypedArray) : baseIsTypedArray;\nmodule.exports = isTypedArray;//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvbG9kYXNoL2lzVHlwZWRBcnJheS5qcy5qcyIsInNvdXJjZXMiOlsid2VicGFjazovL1NOTGlicmFyeS8uL25vZGVfbW9kdWxlcy9sb2Rhc2gvaXNUeXBlZEFycmF5LmpzPzczYWMiXSwic291cmNlc0NvbnRlbnQiOlsiXCJ1c2Ugc3RyaWN0XCI7XG52YXIgYmFzZUlzVHlwZWRBcnJheSA9IHJlcXVpcmUoJy4vX2Jhc2VJc1R5cGVkQXJyYXknKSwgYmFzZVVuYXJ5ID0gcmVxdWlyZSgnLi9fYmFzZVVuYXJ5JyksIG5vZGVVdGlsID0gcmVxdWlyZSgnLi9fbm9kZVV0aWwnKTtcbi8qIE5vZGUuanMgaGVscGVyIHJlZmVyZW5jZXMuICovXG52YXIgbm9kZUlzVHlwZWRBcnJheSA9IG5vZGVVdGlsICYmIG5vZGVVdGlsLmlzVHlwZWRBcnJheTtcbi8qKlxuICogQ2hlY2tzIGlmIGB2YWx1ZWAgaXMgY2xhc3NpZmllZCBhcyBhIHR5cGVkIGFycmF5LlxuICpcbiAqIEBzdGF0aWNcbiAqIEBtZW1iZXJPZiBfXG4gKiBAc2luY2UgMy4wLjBcbiAqIEBjYXRlZ29yeSBMYW5nXG4gKiBAcGFyYW0geyp9IHZhbHVlIFRoZSB2YWx1ZSB0byBjaGVjay5cbiAqIEByZXR1cm5zIHtib29sZWFufSBSZXR1cm5zIGB0cnVlYCBpZiBgdmFsdWVgIGlzIGEgdHlwZWQgYXJyYXksIGVsc2UgYGZhbHNlYC5cbiAqIEBleGFtcGxlXG4gKlxuICogXy5pc1R5cGVkQXJyYXkobmV3IFVpbnQ4QXJyYXkpO1xuICogLy8gPT4gdHJ1ZVxuICpcbiAqIF8uaXNUeXBlZEFycmF5KFtdKTtcbiAqIC8vID0+IGZhbHNlXG4gKi9cbnZhciBpc1R5cGVkQXJyYXkgPSBub2RlSXNUeXBlZEFycmF5ID8gYmFzZVVuYXJ5KG5vZGVJc1R5cGVkQXJyYXkpIDogYmFzZUlzVHlwZWRBcnJheTtcbm1vZHVsZS5leHBvcnRzID0gaXNUeXBlZEFycmF5O1xuIl0sIm1hcHBpbmdzIjoiQUFBQTtBQUNBO0FBQUE7QUFBQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBREE7QUFDQTs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBaUJBO0FBQ0EiLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./node_modules/lodash/isTypedArray.js\n')},"./node_modules/lodash/keys.js":
|
||
/*!*************************************!*\
|
||
!*** ./node_modules/lodash/keys.js ***!
|
||
\*************************************/
|
||
/*! no static exports found */function(module,exports,__webpack_require__){"use strict";eval("\n\nvar arrayLikeKeys = __webpack_require__(/*! ./_arrayLikeKeys */ \"./node_modules/lodash/_arrayLikeKeys.js\"),\n baseKeys = __webpack_require__(/*! ./_baseKeys */ \"./node_modules/lodash/_baseKeys.js\"),\n isArrayLike = __webpack_require__(/*! ./isArrayLike */ \"./node_modules/lodash/isArrayLike.js\");\n/**\n * Creates an array of the own enumerable property names of `object`.\n *\n * **Note:** Non-object values are coerced to objects. See the\n * [ES spec](http://ecma-international.org/ecma-262/7.0/#sec-object.keys)\n * for more details.\n *\n * @static\n * @since 0.1.0\n * @memberOf _\n * @category Object\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of property names.\n * @example\n *\n * function Foo() {\n * this.a = 1;\n * this.b = 2;\n * }\n *\n * Foo.prototype.c = 3;\n *\n * _.keys(new Foo);\n * // => ['a', 'b'] (iteration order is not guaranteed)\n *\n * _.keys('hi');\n * // => ['0', '1']\n */\n\n\nfunction keys(object) {\n return isArrayLike(object) ? arrayLikeKeys(object) : baseKeys(object);\n}\n\nmodule.exports = keys;//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvbG9kYXNoL2tleXMuanMuanMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly9TTkxpYnJhcnkvLi9ub2RlX21vZHVsZXMvbG9kYXNoL2tleXMuanM/ZWM2OSJdLCJzb3VyY2VzQ29udGVudCI6WyJcInVzZSBzdHJpY3RcIjtcbnZhciBhcnJheUxpa2VLZXlzID0gcmVxdWlyZSgnLi9fYXJyYXlMaWtlS2V5cycpLCBiYXNlS2V5cyA9IHJlcXVpcmUoJy4vX2Jhc2VLZXlzJyksIGlzQXJyYXlMaWtlID0gcmVxdWlyZSgnLi9pc0FycmF5TGlrZScpO1xuLyoqXG4gKiBDcmVhdGVzIGFuIGFycmF5IG9mIHRoZSBvd24gZW51bWVyYWJsZSBwcm9wZXJ0eSBuYW1lcyBvZiBgb2JqZWN0YC5cbiAqXG4gKiAqKk5vdGU6KiogTm9uLW9iamVjdCB2YWx1ZXMgYXJlIGNvZXJjZWQgdG8gb2JqZWN0cy4gU2VlIHRoZVxuICogW0VTIHNwZWNdKGh0dHA6Ly9lY21hLWludGVybmF0aW9uYWwub3JnL2VjbWEtMjYyLzcuMC8jc2VjLW9iamVjdC5rZXlzKVxuICogZm9yIG1vcmUgZGV0YWlscy5cbiAqXG4gKiBAc3RhdGljXG4gKiBAc2luY2UgMC4xLjBcbiAqIEBtZW1iZXJPZiBfXG4gKiBAY2F0ZWdvcnkgT2JqZWN0XG4gKiBAcGFyYW0ge09iamVjdH0gb2JqZWN0IFRoZSBvYmplY3QgdG8gcXVlcnkuXG4gKiBAcmV0dXJucyB7QXJyYXl9IFJldHVybnMgdGhlIGFycmF5IG9mIHByb3BlcnR5IG5hbWVzLlxuICogQGV4YW1wbGVcbiAqXG4gKiBmdW5jdGlvbiBGb28oKSB7XG4gKiAgIHRoaXMuYSA9IDE7XG4gKiAgIHRoaXMuYiA9IDI7XG4gKiB9XG4gKlxuICogRm9vLnByb3RvdHlwZS5jID0gMztcbiAqXG4gKiBfLmtleXMobmV3IEZvbyk7XG4gKiAvLyA9PiBbJ2EnLCAnYiddIChpdGVyYXRpb24gb3JkZXIgaXMgbm90IGd1YXJhbnRlZWQpXG4gKlxuICogXy5rZXlzKCdoaScpO1xuICogLy8gPT4gWycwJywgJzEnXVxuICovXG5mdW5jdGlvbiBrZXlzKG9iamVjdCkge1xuICAgIHJldHVybiBpc0FycmF5TGlrZShvYmplY3QpID8gYXJyYXlMaWtlS2V5cyhvYmplY3QpIDogYmFzZUtleXMob2JqZWN0KTtcbn1cbm1vZHVsZS5leHBvcnRzID0ga2V5cztcbiJdLCJtYXBwaW5ncyI6IkFBQUE7QUFDQTtBQUFBO0FBQUE7QUFBQTtBQUNBOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUE0QkE7QUFDQTtBQUNBO0FBQ0E7QUFBQSIsInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./node_modules/lodash/keys.js\n")},"./node_modules/lodash/keysIn.js":
|
||
/*!***************************************!*\
|
||
!*** ./node_modules/lodash/keysIn.js ***!
|
||
\***************************************/
|
||
/*! no static exports found */function(module,exports,__webpack_require__){"use strict";eval("\n\nvar arrayLikeKeys = __webpack_require__(/*! ./_arrayLikeKeys */ \"./node_modules/lodash/_arrayLikeKeys.js\"),\n baseKeysIn = __webpack_require__(/*! ./_baseKeysIn */ \"./node_modules/lodash/_baseKeysIn.js\"),\n isArrayLike = __webpack_require__(/*! ./isArrayLike */ \"./node_modules/lodash/isArrayLike.js\");\n/**\n * Creates an array of the own and inherited enumerable property names of `object`.\n *\n * **Note:** Non-object values are coerced to objects.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Object\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of property names.\n * @example\n *\n * function Foo() {\n * this.a = 1;\n * this.b = 2;\n * }\n *\n * Foo.prototype.c = 3;\n *\n * _.keysIn(new Foo);\n * // => ['a', 'b', 'c'] (iteration order is not guaranteed)\n */\n\n\nfunction keysIn(object) {\n return isArrayLike(object) ? arrayLikeKeys(object, true) : baseKeysIn(object);\n}\n\nmodule.exports = keysIn;//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvbG9kYXNoL2tleXNJbi5qcy5qcyIsInNvdXJjZXMiOlsid2VicGFjazovL1NOTGlicmFyeS8uL25vZGVfbW9kdWxlcy9sb2Rhc2gva2V5c0luLmpzPzk5MzQiXSwic291cmNlc0NvbnRlbnQiOlsiXCJ1c2Ugc3RyaWN0XCI7XG52YXIgYXJyYXlMaWtlS2V5cyA9IHJlcXVpcmUoJy4vX2FycmF5TGlrZUtleXMnKSwgYmFzZUtleXNJbiA9IHJlcXVpcmUoJy4vX2Jhc2VLZXlzSW4nKSwgaXNBcnJheUxpa2UgPSByZXF1aXJlKCcuL2lzQXJyYXlMaWtlJyk7XG4vKipcbiAqIENyZWF0ZXMgYW4gYXJyYXkgb2YgdGhlIG93biBhbmQgaW5oZXJpdGVkIGVudW1lcmFibGUgcHJvcGVydHkgbmFtZXMgb2YgYG9iamVjdGAuXG4gKlxuICogKipOb3RlOioqIE5vbi1vYmplY3QgdmFsdWVzIGFyZSBjb2VyY2VkIHRvIG9iamVjdHMuXG4gKlxuICogQHN0YXRpY1xuICogQG1lbWJlck9mIF9cbiAqIEBzaW5jZSAzLjAuMFxuICogQGNhdGVnb3J5IE9iamVjdFxuICogQHBhcmFtIHtPYmplY3R9IG9iamVjdCBUaGUgb2JqZWN0IHRvIHF1ZXJ5LlxuICogQHJldHVybnMge0FycmF5fSBSZXR1cm5zIHRoZSBhcnJheSBvZiBwcm9wZXJ0eSBuYW1lcy5cbiAqIEBleGFtcGxlXG4gKlxuICogZnVuY3Rpb24gRm9vKCkge1xuICogICB0aGlzLmEgPSAxO1xuICogICB0aGlzLmIgPSAyO1xuICogfVxuICpcbiAqIEZvby5wcm90b3R5cGUuYyA9IDM7XG4gKlxuICogXy5rZXlzSW4obmV3IEZvbyk7XG4gKiAvLyA9PiBbJ2EnLCAnYicsICdjJ10gKGl0ZXJhdGlvbiBvcmRlciBpcyBub3QgZ3VhcmFudGVlZClcbiAqL1xuZnVuY3Rpb24ga2V5c0luKG9iamVjdCkge1xuICAgIHJldHVybiBpc0FycmF5TGlrZShvYmplY3QpID8gYXJyYXlMaWtlS2V5cyhvYmplY3QsIHRydWUpIDogYmFzZUtleXNJbihvYmplY3QpO1xufVxubW9kdWxlLmV4cG9ydHMgPSBrZXlzSW47XG4iXSwibWFwcGluZ3MiOiJBQUFBO0FBQ0E7QUFBQTtBQUFBO0FBQUE7QUFDQTs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQXVCQTtBQUNBO0FBQ0E7QUFDQTtBQUFBIiwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./node_modules/lodash/keysIn.js\n")},"./node_modules/lodash/last.js":
|
||
/*!*************************************!*\
|
||
!*** ./node_modules/lodash/last.js ***!
|
||
\*************************************/
|
||
/*! no static exports found */function(module,exports,__webpack_require__){"use strict";eval("\n/**\n * Gets the last element of `array`.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Array\n * @param {Array} array The array to query.\n * @returns {*} Returns the last element of `array`.\n * @example\n *\n * _.last([1, 2, 3]);\n * // => 3\n */\n\nfunction last(array) {\n var length = array == null ? 0 : array.length;\n return length ? array[length - 1] : undefined;\n}\n\nmodule.exports = last;//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvbG9kYXNoL2xhc3QuanMuanMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly9TTkxpYnJhcnkvLi9ub2RlX21vZHVsZXMvbG9kYXNoL2xhc3QuanM/NDQxNiJdLCJzb3VyY2VzQ29udGVudCI6WyJcInVzZSBzdHJpY3RcIjtcbi8qKlxuICogR2V0cyB0aGUgbGFzdCBlbGVtZW50IG9mIGBhcnJheWAuXG4gKlxuICogQHN0YXRpY1xuICogQG1lbWJlck9mIF9cbiAqIEBzaW5jZSAwLjEuMFxuICogQGNhdGVnb3J5IEFycmF5XG4gKiBAcGFyYW0ge0FycmF5fSBhcnJheSBUaGUgYXJyYXkgdG8gcXVlcnkuXG4gKiBAcmV0dXJucyB7Kn0gUmV0dXJucyB0aGUgbGFzdCBlbGVtZW50IG9mIGBhcnJheWAuXG4gKiBAZXhhbXBsZVxuICpcbiAqIF8ubGFzdChbMSwgMiwgM10pO1xuICogLy8gPT4gM1xuICovXG5mdW5jdGlvbiBsYXN0KGFycmF5KSB7XG4gICAgdmFyIGxlbmd0aCA9IGFycmF5ID09IG51bGwgPyAwIDogYXJyYXkubGVuZ3RoO1xuICAgIHJldHVybiBsZW5ndGggPyBhcnJheVtsZW5ndGggLSAxXSA6IHVuZGVmaW5lZDtcbn1cbm1vZHVsZS5leHBvcnRzID0gbGFzdDtcbiJdLCJtYXBwaW5ncyI6IkFBQUE7QUFDQTs7Ozs7Ozs7Ozs7Ozs7O0FBY0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBIiwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./node_modules/lodash/last.js\n")},"./node_modules/lodash/memoize.js":
|
||
/*!****************************************!*\
|
||
!*** ./node_modules/lodash/memoize.js ***!
|
||
\****************************************/
|
||
/*! no static exports found */function(module,exports,__webpack_require__){"use strict";eval("\n\nvar MapCache = __webpack_require__(/*! ./_MapCache */ \"./node_modules/lodash/_MapCache.js\");\n/** Error message constants. */\n\n\nvar FUNC_ERROR_TEXT = 'Expected a function';\n/**\n * Creates a function that memoizes the result of `func`. If `resolver` is\n * provided, it determines the cache key for storing the result based on the\n * arguments provided to the memoized function. By default, the first argument\n * provided to the memoized function is used as the map cache key. The `func`\n * is invoked with the `this` binding of the memoized function.\n *\n * **Note:** The cache is exposed as the `cache` property on the memoized\n * function. Its creation may be customized by replacing the `_.memoize.Cache`\n * constructor with one whose instances implement the\n * [`Map`](http://ecma-international.org/ecma-262/7.0/#sec-properties-of-the-map-prototype-object)\n * method interface of `clear`, `delete`, `get`, `has`, and `set`.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Function\n * @param {Function} func The function to have its output memoized.\n * @param {Function} [resolver] The function to resolve the cache key.\n * @returns {Function} Returns the new memoized function.\n * @example\n *\n * var object = { 'a': 1, 'b': 2 };\n * var other = { 'c': 3, 'd': 4 };\n *\n * var values = _.memoize(_.values);\n * values(object);\n * // => [1, 2]\n *\n * values(other);\n * // => [3, 4]\n *\n * object.a = 2;\n * values(object);\n * // => [1, 2]\n *\n * // Modify the result cache.\n * values.cache.set(object, ['a', 'b']);\n * values(object);\n * // => ['a', 'b']\n *\n * // Replace `_.memoize.Cache`.\n * _.memoize.Cache = WeakMap;\n */\n\nfunction memoize(func, resolver) {\n if (typeof func != 'function' || resolver != null && typeof resolver != 'function') {\n throw new TypeError(FUNC_ERROR_TEXT);\n }\n\n var memoized = function memoized() {\n var args = arguments,\n key = resolver ? resolver.apply(this, args) : args[0],\n cache = memoized.cache;\n\n if (cache.has(key)) {\n return cache.get(key);\n }\n\n var result = func.apply(this, args);\n memoized.cache = cache.set(key, result) || cache;\n return result;\n };\n\n memoized.cache = new (memoize.Cache || MapCache)();\n return memoized;\n} // Expose `MapCache`.\n\n\nmemoize.Cache = MapCache;\nmodule.exports = memoize;//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvbG9kYXNoL21lbW9pemUuanMuanMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly9TTkxpYnJhcnkvLi9ub2RlX21vZHVsZXMvbG9kYXNoL21lbW9pemUuanM/ZTM4MCJdLCJzb3VyY2VzQ29udGVudCI6WyJcInVzZSBzdHJpY3RcIjtcbnZhciBNYXBDYWNoZSA9IHJlcXVpcmUoJy4vX01hcENhY2hlJyk7XG4vKiogRXJyb3IgbWVzc2FnZSBjb25zdGFudHMuICovXG52YXIgRlVOQ19FUlJPUl9URVhUID0gJ0V4cGVjdGVkIGEgZnVuY3Rpb24nO1xuLyoqXG4gKiBDcmVhdGVzIGEgZnVuY3Rpb24gdGhhdCBtZW1vaXplcyB0aGUgcmVzdWx0IG9mIGBmdW5jYC4gSWYgYHJlc29sdmVyYCBpc1xuICogcHJvdmlkZWQsIGl0IGRldGVybWluZXMgdGhlIGNhY2hlIGtleSBmb3Igc3RvcmluZyB0aGUgcmVzdWx0IGJhc2VkIG9uIHRoZVxuICogYXJndW1lbnRzIHByb3ZpZGVkIHRvIHRoZSBtZW1vaXplZCBmdW5jdGlvbi4gQnkgZGVmYXVsdCwgdGhlIGZpcnN0IGFyZ3VtZW50XG4gKiBwcm92aWRlZCB0byB0aGUgbWVtb2l6ZWQgZnVuY3Rpb24gaXMgdXNlZCBhcyB0aGUgbWFwIGNhY2hlIGtleS4gVGhlIGBmdW5jYFxuICogaXMgaW52b2tlZCB3aXRoIHRoZSBgdGhpc2AgYmluZGluZyBvZiB0aGUgbWVtb2l6ZWQgZnVuY3Rpb24uXG4gKlxuICogKipOb3RlOioqIFRoZSBjYWNoZSBpcyBleHBvc2VkIGFzIHRoZSBgY2FjaGVgIHByb3BlcnR5IG9uIHRoZSBtZW1vaXplZFxuICogZnVuY3Rpb24uIEl0cyBjcmVhdGlvbiBtYXkgYmUgY3VzdG9taXplZCBieSByZXBsYWNpbmcgdGhlIGBfLm1lbW9pemUuQ2FjaGVgXG4gKiBjb25zdHJ1Y3RvciB3aXRoIG9uZSB3aG9zZSBpbnN0YW5jZXMgaW1wbGVtZW50IHRoZVxuICogW2BNYXBgXShodHRwOi8vZWNtYS1pbnRlcm5hdGlvbmFsLm9yZy9lY21hLTI2Mi83LjAvI3NlYy1wcm9wZXJ0aWVzLW9mLXRoZS1tYXAtcHJvdG90eXBlLW9iamVjdClcbiAqIG1ldGhvZCBpbnRlcmZhY2Ugb2YgYGNsZWFyYCwgYGRlbGV0ZWAsIGBnZXRgLCBgaGFzYCwgYW5kIGBzZXRgLlxuICpcbiAqIEBzdGF0aWNcbiAqIEBtZW1iZXJPZiBfXG4gKiBAc2luY2UgMC4xLjBcbiAqIEBjYXRlZ29yeSBGdW5jdGlvblxuICogQHBhcmFtIHtGdW5jdGlvbn0gZnVuYyBUaGUgZnVuY3Rpb24gdG8gaGF2ZSBpdHMgb3V0cHV0IG1lbW9pemVkLlxuICogQHBhcmFtIHtGdW5jdGlvbn0gW3Jlc29sdmVyXSBUaGUgZnVuY3Rpb24gdG8gcmVzb2x2ZSB0aGUgY2FjaGUga2V5LlxuICogQHJldHVybnMge0Z1bmN0aW9ufSBSZXR1cm5zIHRoZSBuZXcgbWVtb2l6ZWQgZnVuY3Rpb24uXG4gKiBAZXhhbXBsZVxuICpcbiAqIHZhciBvYmplY3QgPSB7ICdhJzogMSwgJ2InOiAyIH07XG4gKiB2YXIgb3RoZXIgPSB7ICdjJzogMywgJ2QnOiA0IH07XG4gKlxuICogdmFyIHZhbHVlcyA9IF8ubWVtb2l6ZShfLnZhbHVlcyk7XG4gKiB2YWx1ZXMob2JqZWN0KTtcbiAqIC8vID0+IFsxLCAyXVxuICpcbiAqIHZhbHVlcyhvdGhlcik7XG4gKiAvLyA9PiBbMywgNF1cbiAqXG4gKiBvYmplY3QuYSA9IDI7XG4gKiB2YWx1ZXMob2JqZWN0KTtcbiAqIC8vID0+IFsxLCAyXVxuICpcbiAqIC8vIE1vZGlmeSB0aGUgcmVzdWx0IGNhY2hlLlxuICogdmFsdWVzLmNhY2hlLnNldChvYmplY3QsIFsnYScsICdiJ10pO1xuICogdmFsdWVzKG9iamVjdCk7XG4gKiAvLyA9PiBbJ2EnLCAnYiddXG4gKlxuICogLy8gUmVwbGFjZSBgXy5tZW1vaXplLkNhY2hlYC5cbiAqIF8ubWVtb2l6ZS5DYWNoZSA9IFdlYWtNYXA7XG4gKi9cbmZ1bmN0aW9uIG1lbW9pemUoZnVuYywgcmVzb2x2ZXIpIHtcbiAgICBpZiAodHlwZW9mIGZ1bmMgIT0gJ2Z1bmN0aW9uJyB8fCAocmVzb2x2ZXIgIT0gbnVsbCAmJiB0eXBlb2YgcmVzb2x2ZXIgIT0gJ2Z1bmN0aW9uJykpIHtcbiAgICAgICAgdGhyb3cgbmV3IFR5cGVFcnJvcihGVU5DX0VSUk9SX1RFWFQpO1xuICAgIH1cbiAgICB2YXIgbWVtb2l6ZWQgPSBmdW5jdGlvbiAoKSB7XG4gICAgICAgIHZhciBhcmdzID0gYXJndW1lbnRzLCBrZXkgPSByZXNvbHZlciA/IHJlc29sdmVyLmFwcGx5KHRoaXMsIGFyZ3MpIDogYXJnc1swXSwgY2FjaGUgPSBtZW1vaXplZC5jYWNoZTtcbiAgICAgICAgaWYgKGNhY2hlLmhhcyhrZXkpKSB7XG4gICAgICAgICAgICByZXR1cm4gY2FjaGUuZ2V0KGtleSk7XG4gICAgICAgIH1cbiAgICAgICAgdmFyIHJlc3VsdCA9IGZ1bmMuYXBwbHkodGhpcywgYXJncyk7XG4gICAgICAgIG1lbW9pemVkLmNhY2hlID0gY2FjaGUuc2V0KGtleSwgcmVzdWx0KSB8fCBjYWNoZTtcbiAgICAgICAgcmV0dXJuIHJlc3VsdDtcbiAgICB9O1xuICAgIG1lbW9pemVkLmNhY2hlID0gbmV3IChtZW1vaXplLkNhY2hlIHx8IE1hcENhY2hlKTtcbiAgICByZXR1cm4gbWVtb2l6ZWQ7XG59XG4vLyBFeHBvc2UgYE1hcENhY2hlYC5cbm1lbW9pemUuQ2FjaGUgPSBNYXBDYWNoZTtcbm1vZHVsZS5leHBvcnRzID0gbWVtb2l6ZTtcbiJdLCJtYXBwaW5ncyI6IkFBQUE7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBREE7QUFDQTs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBNENBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQUE7QUFBQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0EiLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./node_modules/lodash/memoize.js\n")},"./node_modules/lodash/merge.js":
|
||
/*!**************************************!*\
|
||
!*** ./node_modules/lodash/merge.js ***!
|
||
\**************************************/
|
||
/*! no static exports found */function(module,exports,__webpack_require__){"use strict";eval("\n\nvar baseMerge = __webpack_require__(/*! ./_baseMerge */ \"./node_modules/lodash/_baseMerge.js\"),\n createAssigner = __webpack_require__(/*! ./_createAssigner */ \"./node_modules/lodash/_createAssigner.js\");\n/**\n * This method is like `_.assign` except that it recursively merges own and\n * inherited enumerable string keyed properties of source objects into the\n * destination object. Source properties that resolve to `undefined` are\n * skipped if a destination value exists. Array and plain object properties\n * are merged recursively. Other objects and value types are overridden by\n * assignment. Source objects are applied from left to right. Subsequent\n * sources overwrite property assignments of previous sources.\n *\n * **Note:** This method mutates `object`.\n *\n * @static\n * @memberOf _\n * @since 0.5.0\n * @category Object\n * @param {Object} object The destination object.\n * @param {...Object} [sources] The source objects.\n * @returns {Object} Returns `object`.\n * @example\n *\n * var object = {\n * 'a': [{ 'b': 2 }, { 'd': 4 }]\n * };\n *\n * var other = {\n * 'a': [{ 'c': 3 }, { 'e': 5 }]\n * };\n *\n * _.merge(object, other);\n * // => { 'a': [{ 'b': 2, 'c': 3 }, { 'd': 4, 'e': 5 }] }\n */\n\n\nvar merge = createAssigner(function (object, source, srcIndex) {\n baseMerge(object, source, srcIndex);\n});\nmodule.exports = merge;//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvbG9kYXNoL21lcmdlLmpzLmpzIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vU05MaWJyYXJ5Ly4vbm9kZV9tb2R1bGVzL2xvZGFzaC9tZXJnZS5qcz80MjQ1Il0sInNvdXJjZXNDb250ZW50IjpbIlwidXNlIHN0cmljdFwiO1xudmFyIGJhc2VNZXJnZSA9IHJlcXVpcmUoJy4vX2Jhc2VNZXJnZScpLCBjcmVhdGVBc3NpZ25lciA9IHJlcXVpcmUoJy4vX2NyZWF0ZUFzc2lnbmVyJyk7XG4vKipcbiAqIFRoaXMgbWV0aG9kIGlzIGxpa2UgYF8uYXNzaWduYCBleGNlcHQgdGhhdCBpdCByZWN1cnNpdmVseSBtZXJnZXMgb3duIGFuZFxuICogaW5oZXJpdGVkIGVudW1lcmFibGUgc3RyaW5nIGtleWVkIHByb3BlcnRpZXMgb2Ygc291cmNlIG9iamVjdHMgaW50byB0aGVcbiAqIGRlc3RpbmF0aW9uIG9iamVjdC4gU291cmNlIHByb3BlcnRpZXMgdGhhdCByZXNvbHZlIHRvIGB1bmRlZmluZWRgIGFyZVxuICogc2tpcHBlZCBpZiBhIGRlc3RpbmF0aW9uIHZhbHVlIGV4aXN0cy4gQXJyYXkgYW5kIHBsYWluIG9iamVjdCBwcm9wZXJ0aWVzXG4gKiBhcmUgbWVyZ2VkIHJlY3Vyc2l2ZWx5LiBPdGhlciBvYmplY3RzIGFuZCB2YWx1ZSB0eXBlcyBhcmUgb3ZlcnJpZGRlbiBieVxuICogYXNzaWdubWVudC4gU291cmNlIG9iamVjdHMgYXJlIGFwcGxpZWQgZnJvbSBsZWZ0IHRvIHJpZ2h0LiBTdWJzZXF1ZW50XG4gKiBzb3VyY2VzIG92ZXJ3cml0ZSBwcm9wZXJ0eSBhc3NpZ25tZW50cyBvZiBwcmV2aW91cyBzb3VyY2VzLlxuICpcbiAqICoqTm90ZToqKiBUaGlzIG1ldGhvZCBtdXRhdGVzIGBvYmplY3RgLlxuICpcbiAqIEBzdGF0aWNcbiAqIEBtZW1iZXJPZiBfXG4gKiBAc2luY2UgMC41LjBcbiAqIEBjYXRlZ29yeSBPYmplY3RcbiAqIEBwYXJhbSB7T2JqZWN0fSBvYmplY3QgVGhlIGRlc3RpbmF0aW9uIG9iamVjdC5cbiAqIEBwYXJhbSB7Li4uT2JqZWN0fSBbc291cmNlc10gVGhlIHNvdXJjZSBvYmplY3RzLlxuICogQHJldHVybnMge09iamVjdH0gUmV0dXJucyBgb2JqZWN0YC5cbiAqIEBleGFtcGxlXG4gKlxuICogdmFyIG9iamVjdCA9IHtcbiAqICAgJ2EnOiBbeyAnYic6IDIgfSwgeyAnZCc6IDQgfV1cbiAqIH07XG4gKlxuICogdmFyIG90aGVyID0ge1xuICogICAnYSc6IFt7ICdjJzogMyB9LCB7ICdlJzogNSB9XVxuICogfTtcbiAqXG4gKiBfLm1lcmdlKG9iamVjdCwgb3RoZXIpO1xuICogLy8gPT4geyAnYSc6IFt7ICdiJzogMiwgJ2MnOiAzIH0sIHsgJ2QnOiA0LCAnZSc6IDUgfV0gfVxuICovXG52YXIgbWVyZ2UgPSBjcmVhdGVBc3NpZ25lcihmdW5jdGlvbiAob2JqZWN0LCBzb3VyY2UsIHNyY0luZGV4KSB7XG4gICAgYmFzZU1lcmdlKG9iamVjdCwgc291cmNlLCBzcmNJbmRleCk7XG59KTtcbm1vZHVsZS5leHBvcnRzID0gbWVyZ2U7XG4iXSwibWFwcGluZ3MiOiJBQUFBO0FBQ0E7QUFBQTtBQUFBO0FBQ0E7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQStCQTtBQUNBO0FBQ0E7QUFDQSIsInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./node_modules/lodash/merge.js\n")},"./node_modules/lodash/mergeWith.js":
|
||
/*!******************************************!*\
|
||
!*** ./node_modules/lodash/mergeWith.js ***!
|
||
\******************************************/
|
||
/*! no static exports found */function(module,exports,__webpack_require__){"use strict";eval("\n\nvar baseMerge = __webpack_require__(/*! ./_baseMerge */ \"./node_modules/lodash/_baseMerge.js\"),\n createAssigner = __webpack_require__(/*! ./_createAssigner */ \"./node_modules/lodash/_createAssigner.js\");\n/**\n * This method is like `_.merge` except that it accepts `customizer` which\n * is invoked to produce the merged values of the destination and source\n * properties. If `customizer` returns `undefined`, merging is handled by the\n * method instead. The `customizer` is invoked with six arguments:\n * (objValue, srcValue, key, object, source, stack).\n *\n * **Note:** This method mutates `object`.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Object\n * @param {Object} object The destination object.\n * @param {...Object} sources The source objects.\n * @param {Function} customizer The function to customize assigned values.\n * @returns {Object} Returns `object`.\n * @example\n *\n * function customizer(objValue, srcValue) {\n * if (_.isArray(objValue)) {\n * return objValue.concat(srcValue);\n * }\n * }\n *\n * var object = { 'a': [1], 'b': [2] };\n * var other = { 'a': [3], 'b': [4] };\n *\n * _.mergeWith(object, other, customizer);\n * // => { 'a': [1, 3], 'b': [2, 4] }\n */\n\n\nvar mergeWith = createAssigner(function (object, source, srcIndex, customizer) {\n baseMerge(object, source, srcIndex, customizer);\n});\nmodule.exports = mergeWith;//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvbG9kYXNoL21lcmdlV2l0aC5qcy5qcyIsInNvdXJjZXMiOlsid2VicGFjazovL1NOTGlicmFyeS8uL25vZGVfbW9kdWxlcy9sb2Rhc2gvbWVyZ2VXaXRoLmpzPzI0MTEiXSwic291cmNlc0NvbnRlbnQiOlsiXCJ1c2Ugc3RyaWN0XCI7XG52YXIgYmFzZU1lcmdlID0gcmVxdWlyZSgnLi9fYmFzZU1lcmdlJyksIGNyZWF0ZUFzc2lnbmVyID0gcmVxdWlyZSgnLi9fY3JlYXRlQXNzaWduZXInKTtcbi8qKlxuICogVGhpcyBtZXRob2QgaXMgbGlrZSBgXy5tZXJnZWAgZXhjZXB0IHRoYXQgaXQgYWNjZXB0cyBgY3VzdG9taXplcmAgd2hpY2hcbiAqIGlzIGludm9rZWQgdG8gcHJvZHVjZSB0aGUgbWVyZ2VkIHZhbHVlcyBvZiB0aGUgZGVzdGluYXRpb24gYW5kIHNvdXJjZVxuICogcHJvcGVydGllcy4gSWYgYGN1c3RvbWl6ZXJgIHJldHVybnMgYHVuZGVmaW5lZGAsIG1lcmdpbmcgaXMgaGFuZGxlZCBieSB0aGVcbiAqIG1ldGhvZCBpbnN0ZWFkLiBUaGUgYGN1c3RvbWl6ZXJgIGlzIGludm9rZWQgd2l0aCBzaXggYXJndW1lbnRzOlxuICogKG9ialZhbHVlLCBzcmNWYWx1ZSwga2V5LCBvYmplY3QsIHNvdXJjZSwgc3RhY2spLlxuICpcbiAqICoqTm90ZToqKiBUaGlzIG1ldGhvZCBtdXRhdGVzIGBvYmplY3RgLlxuICpcbiAqIEBzdGF0aWNcbiAqIEBtZW1iZXJPZiBfXG4gKiBAc2luY2UgNC4wLjBcbiAqIEBjYXRlZ29yeSBPYmplY3RcbiAqIEBwYXJhbSB7T2JqZWN0fSBvYmplY3QgVGhlIGRlc3RpbmF0aW9uIG9iamVjdC5cbiAqIEBwYXJhbSB7Li4uT2JqZWN0fSBzb3VyY2VzIFRoZSBzb3VyY2Ugb2JqZWN0cy5cbiAqIEBwYXJhbSB7RnVuY3Rpb259IGN1c3RvbWl6ZXIgVGhlIGZ1bmN0aW9uIHRvIGN1c3RvbWl6ZSBhc3NpZ25lZCB2YWx1ZXMuXG4gKiBAcmV0dXJucyB7T2JqZWN0fSBSZXR1cm5zIGBvYmplY3RgLlxuICogQGV4YW1wbGVcbiAqXG4gKiBmdW5jdGlvbiBjdXN0b21pemVyKG9ialZhbHVlLCBzcmNWYWx1ZSkge1xuICogICBpZiAoXy5pc0FycmF5KG9ialZhbHVlKSkge1xuICogICAgIHJldHVybiBvYmpWYWx1ZS5jb25jYXQoc3JjVmFsdWUpO1xuICogICB9XG4gKiB9XG4gKlxuICogdmFyIG9iamVjdCA9IHsgJ2EnOiBbMV0sICdiJzogWzJdIH07XG4gKiB2YXIgb3RoZXIgPSB7ICdhJzogWzNdLCAnYic6IFs0XSB9O1xuICpcbiAqIF8ubWVyZ2VXaXRoKG9iamVjdCwgb3RoZXIsIGN1c3RvbWl6ZXIpO1xuICogLy8gPT4geyAnYSc6IFsxLCAzXSwgJ2InOiBbMiwgNF0gfVxuICovXG52YXIgbWVyZ2VXaXRoID0gY3JlYXRlQXNzaWduZXIoZnVuY3Rpb24gKG9iamVjdCwgc291cmNlLCBzcmNJbmRleCwgY3VzdG9taXplcikge1xuICAgIGJhc2VNZXJnZShvYmplY3QsIHNvdXJjZSwgc3JjSW5kZXgsIGN1c3RvbWl6ZXIpO1xufSk7XG5tb2R1bGUuZXhwb3J0cyA9IG1lcmdlV2l0aDtcbiJdLCJtYXBwaW5ncyI6IkFBQUE7QUFDQTtBQUFBO0FBQUE7QUFDQTs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBK0JBO0FBQ0E7QUFDQTtBQUNBIiwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./node_modules/lodash/mergeWith.js\n")},"./node_modules/lodash/noop.js":
|
||
/*!*************************************!*\
|
||
!*** ./node_modules/lodash/noop.js ***!
|
||
\*************************************/
|
||
/*! no static exports found */function(module,exports,__webpack_require__){"use strict";eval("\n/**\n * This method returns `undefined`.\n *\n * @static\n * @memberOf _\n * @since 2.3.0\n * @category Util\n * @example\n *\n * _.times(2, _.noop);\n * // => [undefined, undefined]\n */\n\nfunction noop() {// No operation performed.\n}\n\nmodule.exports = noop;//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvbG9kYXNoL25vb3AuanMuanMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly9TTkxpYnJhcnkvLi9ub2RlX21vZHVsZXMvbG9kYXNoL25vb3AuanM/YmNkZiJdLCJzb3VyY2VzQ29udGVudCI6WyJcInVzZSBzdHJpY3RcIjtcbi8qKlxuICogVGhpcyBtZXRob2QgcmV0dXJucyBgdW5kZWZpbmVkYC5cbiAqXG4gKiBAc3RhdGljXG4gKiBAbWVtYmVyT2YgX1xuICogQHNpbmNlIDIuMy4wXG4gKiBAY2F0ZWdvcnkgVXRpbFxuICogQGV4YW1wbGVcbiAqXG4gKiBfLnRpbWVzKDIsIF8ubm9vcCk7XG4gKiAvLyA9PiBbdW5kZWZpbmVkLCB1bmRlZmluZWRdXG4gKi9cbmZ1bmN0aW9uIG5vb3AoKSB7XG4gICAgLy8gTm8gb3BlcmF0aW9uIHBlcmZvcm1lZC5cbn1cbm1vZHVsZS5leHBvcnRzID0gbm9vcDtcbiJdLCJtYXBwaW5ncyI6IkFBQUE7QUFDQTs7Ozs7Ozs7Ozs7OztBQVlBO0FBRUE7QUFDQTtBQUFBIiwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./node_modules/lodash/noop.js\n")},"./node_modules/lodash/property.js":
|
||
/*!*****************************************!*\
|
||
!*** ./node_modules/lodash/property.js ***!
|
||
\*****************************************/
|
||
/*! no static exports found */function(module,exports,__webpack_require__){"use strict";eval("\n\nvar baseProperty = __webpack_require__(/*! ./_baseProperty */ \"./node_modules/lodash/_baseProperty.js\"),\n basePropertyDeep = __webpack_require__(/*! ./_basePropertyDeep */ \"./node_modules/lodash/_basePropertyDeep.js\"),\n isKey = __webpack_require__(/*! ./_isKey */ \"./node_modules/lodash/_isKey.js\"),\n toKey = __webpack_require__(/*! ./_toKey */ \"./node_modules/lodash/_toKey.js\");\n/**\n * Creates a function that returns the value at `path` of a given object.\n *\n * @static\n * @memberOf _\n * @since 2.4.0\n * @category Util\n * @param {Array|string} path The path of the property to get.\n * @returns {Function} Returns the new accessor function.\n * @example\n *\n * var objects = [\n * { 'a': { 'b': 2 } },\n * { 'a': { 'b': 1 } }\n * ];\n *\n * _.map(objects, _.property('a.b'));\n * // => [2, 1]\n *\n * _.map(_.sortBy(objects, _.property(['a', 'b'])), 'a.b');\n * // => [1, 2]\n */\n\n\nfunction property(path) {\n return isKey(path) ? baseProperty(toKey(path)) : basePropertyDeep(path);\n}\n\nmodule.exports = property;//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvbG9kYXNoL3Byb3BlcnR5LmpzLmpzIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vU05MaWJyYXJ5Ly4vbm9kZV9tb2R1bGVzL2xvZGFzaC9wcm9wZXJ0eS5qcz9mOWNlIl0sInNvdXJjZXNDb250ZW50IjpbIlwidXNlIHN0cmljdFwiO1xudmFyIGJhc2VQcm9wZXJ0eSA9IHJlcXVpcmUoJy4vX2Jhc2VQcm9wZXJ0eScpLCBiYXNlUHJvcGVydHlEZWVwID0gcmVxdWlyZSgnLi9fYmFzZVByb3BlcnR5RGVlcCcpLCBpc0tleSA9IHJlcXVpcmUoJy4vX2lzS2V5JyksIHRvS2V5ID0gcmVxdWlyZSgnLi9fdG9LZXknKTtcbi8qKlxuICogQ3JlYXRlcyBhIGZ1bmN0aW9uIHRoYXQgcmV0dXJucyB0aGUgdmFsdWUgYXQgYHBhdGhgIG9mIGEgZ2l2ZW4gb2JqZWN0LlxuICpcbiAqIEBzdGF0aWNcbiAqIEBtZW1iZXJPZiBfXG4gKiBAc2luY2UgMi40LjBcbiAqIEBjYXRlZ29yeSBVdGlsXG4gKiBAcGFyYW0ge0FycmF5fHN0cmluZ30gcGF0aCBUaGUgcGF0aCBvZiB0aGUgcHJvcGVydHkgdG8gZ2V0LlxuICogQHJldHVybnMge0Z1bmN0aW9ufSBSZXR1cm5zIHRoZSBuZXcgYWNjZXNzb3IgZnVuY3Rpb24uXG4gKiBAZXhhbXBsZVxuICpcbiAqIHZhciBvYmplY3RzID0gW1xuICogICB7ICdhJzogeyAnYic6IDIgfSB9LFxuICogICB7ICdhJzogeyAnYic6IDEgfSB9XG4gKiBdO1xuICpcbiAqIF8ubWFwKG9iamVjdHMsIF8ucHJvcGVydHkoJ2EuYicpKTtcbiAqIC8vID0+IFsyLCAxXVxuICpcbiAqIF8ubWFwKF8uc29ydEJ5KG9iamVjdHMsIF8ucHJvcGVydHkoWydhJywgJ2InXSkpLCAnYS5iJyk7XG4gKiAvLyA9PiBbMSwgMl1cbiAqL1xuZnVuY3Rpb24gcHJvcGVydHkocGF0aCkge1xuICAgIHJldHVybiBpc0tleShwYXRoKSA/IGJhc2VQcm9wZXJ0eSh0b0tleShwYXRoKSkgOiBiYXNlUHJvcGVydHlEZWVwKHBhdGgpO1xufVxubW9kdWxlLmV4cG9ydHMgPSBwcm9wZXJ0eTtcbiJdLCJtYXBwaW5ncyI6IkFBQUE7QUFDQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQ0E7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQXNCQTtBQUNBO0FBQ0E7QUFDQTtBQUFBIiwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./node_modules/lodash/property.js\n")},"./node_modules/lodash/remove.js":
|
||
/*!***************************************!*\
|
||
!*** ./node_modules/lodash/remove.js ***!
|
||
\***************************************/
|
||
/*! no static exports found */function(module,exports,__webpack_require__){"use strict";eval('\n\nvar baseIteratee = __webpack_require__(/*! ./_baseIteratee */ "./node_modules/lodash/_baseIteratee.js"),\n basePullAt = __webpack_require__(/*! ./_basePullAt */ "./node_modules/lodash/_basePullAt.js");\n/**\n * Removes all elements from `array` that `predicate` returns truthy for\n * and returns an array of the removed elements. The predicate is invoked\n * with three arguments: (value, index, array).\n *\n * **Note:** Unlike `_.filter`, this method mutates `array`. Use `_.pull`\n * to pull elements from an array by value.\n *\n * @static\n * @memberOf _\n * @since 2.0.0\n * @category Array\n * @param {Array} array The array to modify.\n * @param {Function} [predicate=_.identity] The function invoked per iteration.\n * @returns {Array} Returns the new array of removed elements.\n * @example\n *\n * var array = [1, 2, 3, 4];\n * var evens = _.remove(array, function(n) {\n * return n % 2 == 0;\n * });\n *\n * console.log(array);\n * // => [1, 3]\n *\n * console.log(evens);\n * // => [2, 4]\n */\n\n\nfunction remove(array, predicate) {\n var result = [];\n\n if (!(array && array.length)) {\n return result;\n }\n\n var index = -1,\n indexes = [],\n length = array.length;\n predicate = baseIteratee(predicate, 3);\n\n while (++index < length) {\n var value = array[index];\n\n if (predicate(value, index, array)) {\n result.push(value);\n indexes.push(index);\n }\n }\n\n basePullAt(array, indexes);\n return result;\n}\n\nmodule.exports = remove;//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvbG9kYXNoL3JlbW92ZS5qcy5qcyIsInNvdXJjZXMiOlsid2VicGFjazovL1NOTGlicmFyeS8uL25vZGVfbW9kdWxlcy9sb2Rhc2gvcmVtb3ZlLmpzP2MwNGMiXSwic291cmNlc0NvbnRlbnQiOlsiXCJ1c2Ugc3RyaWN0XCI7XG52YXIgYmFzZUl0ZXJhdGVlID0gcmVxdWlyZSgnLi9fYmFzZUl0ZXJhdGVlJyksIGJhc2VQdWxsQXQgPSByZXF1aXJlKCcuL19iYXNlUHVsbEF0Jyk7XG4vKipcbiAqIFJlbW92ZXMgYWxsIGVsZW1lbnRzIGZyb20gYGFycmF5YCB0aGF0IGBwcmVkaWNhdGVgIHJldHVybnMgdHJ1dGh5IGZvclxuICogYW5kIHJldHVybnMgYW4gYXJyYXkgb2YgdGhlIHJlbW92ZWQgZWxlbWVudHMuIFRoZSBwcmVkaWNhdGUgaXMgaW52b2tlZFxuICogd2l0aCB0aHJlZSBhcmd1bWVudHM6ICh2YWx1ZSwgaW5kZXgsIGFycmF5KS5cbiAqXG4gKiAqKk5vdGU6KiogVW5saWtlIGBfLmZpbHRlcmAsIHRoaXMgbWV0aG9kIG11dGF0ZXMgYGFycmF5YC4gVXNlIGBfLnB1bGxgXG4gKiB0byBwdWxsIGVsZW1lbnRzIGZyb20gYW4gYXJyYXkgYnkgdmFsdWUuXG4gKlxuICogQHN0YXRpY1xuICogQG1lbWJlck9mIF9cbiAqIEBzaW5jZSAyLjAuMFxuICogQGNhdGVnb3J5IEFycmF5XG4gKiBAcGFyYW0ge0FycmF5fSBhcnJheSBUaGUgYXJyYXkgdG8gbW9kaWZ5LlxuICogQHBhcmFtIHtGdW5jdGlvbn0gW3ByZWRpY2F0ZT1fLmlkZW50aXR5XSBUaGUgZnVuY3Rpb24gaW52b2tlZCBwZXIgaXRlcmF0aW9uLlxuICogQHJldHVybnMge0FycmF5fSBSZXR1cm5zIHRoZSBuZXcgYXJyYXkgb2YgcmVtb3ZlZCBlbGVtZW50cy5cbiAqIEBleGFtcGxlXG4gKlxuICogdmFyIGFycmF5ID0gWzEsIDIsIDMsIDRdO1xuICogdmFyIGV2ZW5zID0gXy5yZW1vdmUoYXJyYXksIGZ1bmN0aW9uKG4pIHtcbiAqICAgcmV0dXJuIG4gJSAyID09IDA7XG4gKiB9KTtcbiAqXG4gKiBjb25zb2xlLmxvZyhhcnJheSk7XG4gKiAvLyA9PiBbMSwgM11cbiAqXG4gKiBjb25zb2xlLmxvZyhldmVucyk7XG4gKiAvLyA9PiBbMiwgNF1cbiAqL1xuZnVuY3Rpb24gcmVtb3ZlKGFycmF5LCBwcmVkaWNhdGUpIHtcbiAgICB2YXIgcmVzdWx0ID0gW107XG4gICAgaWYgKCEoYXJyYXkgJiYgYXJyYXkubGVuZ3RoKSkge1xuICAgICAgICByZXR1cm4gcmVzdWx0O1xuICAgIH1cbiAgICB2YXIgaW5kZXggPSAtMSwgaW5kZXhlcyA9IFtdLCBsZW5ndGggPSBhcnJheS5sZW5ndGg7XG4gICAgcHJlZGljYXRlID0gYmFzZUl0ZXJhdGVlKHByZWRpY2F0ZSwgMyk7XG4gICAgd2hpbGUgKCsraW5kZXggPCBsZW5ndGgpIHtcbiAgICAgICAgdmFyIHZhbHVlID0gYXJyYXlbaW5kZXhdO1xuICAgICAgICBpZiAocHJlZGljYXRlKHZhbHVlLCBpbmRleCwgYXJyYXkpKSB7XG4gICAgICAgICAgICByZXN1bHQucHVzaCh2YWx1ZSk7XG4gICAgICAgICAgICBpbmRleGVzLnB1c2goaW5kZXgpO1xuICAgICAgICB9XG4gICAgfVxuICAgIGJhc2VQdWxsQXQoYXJyYXksIGluZGV4ZXMpO1xuICAgIHJldHVybiByZXN1bHQ7XG59XG5tb2R1bGUuZXhwb3J0cyA9IHJlbW92ZTtcbiJdLCJtYXBwaW5ncyI6IkFBQUE7QUFDQTtBQUFBO0FBQUE7QUFDQTs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBNEJBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFBQTtBQUFBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQUEiLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./node_modules/lodash/remove.js\n')},"./node_modules/lodash/stubArray.js":
|
||
/*!******************************************!*\
|
||
!*** ./node_modules/lodash/stubArray.js ***!
|
||
\******************************************/
|
||
/*! no static exports found */function(module,exports,__webpack_require__){"use strict";eval("\n/**\n * This method returns a new empty array.\n *\n * @static\n * @memberOf _\n * @since 4.13.0\n * @category Util\n * @returns {Array} Returns the new empty array.\n * @example\n *\n * var arrays = _.times(2, _.stubArray);\n *\n * console.log(arrays);\n * // => [[], []]\n *\n * console.log(arrays[0] === arrays[1]);\n * // => false\n */\n\nfunction stubArray() {\n return [];\n}\n\nmodule.exports = stubArray;//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvbG9kYXNoL3N0dWJBcnJheS5qcy5qcyIsInNvdXJjZXMiOlsid2VicGFjazovL1NOTGlicmFyeS8uL25vZGVfbW9kdWxlcy9sb2Rhc2gvc3R1YkFycmF5LmpzP2QzMjciXSwic291cmNlc0NvbnRlbnQiOlsiXCJ1c2Ugc3RyaWN0XCI7XG4vKipcbiAqIFRoaXMgbWV0aG9kIHJldHVybnMgYSBuZXcgZW1wdHkgYXJyYXkuXG4gKlxuICogQHN0YXRpY1xuICogQG1lbWJlck9mIF9cbiAqIEBzaW5jZSA0LjEzLjBcbiAqIEBjYXRlZ29yeSBVdGlsXG4gKiBAcmV0dXJucyB7QXJyYXl9IFJldHVybnMgdGhlIG5ldyBlbXB0eSBhcnJheS5cbiAqIEBleGFtcGxlXG4gKlxuICogdmFyIGFycmF5cyA9IF8udGltZXMoMiwgXy5zdHViQXJyYXkpO1xuICpcbiAqIGNvbnNvbGUubG9nKGFycmF5cyk7XG4gKiAvLyA9PiBbW10sIFtdXVxuICpcbiAqIGNvbnNvbGUubG9nKGFycmF5c1swXSA9PT0gYXJyYXlzWzFdKTtcbiAqIC8vID0+IGZhbHNlXG4gKi9cbmZ1bmN0aW9uIHN0dWJBcnJheSgpIHtcbiAgICByZXR1cm4gW107XG59XG5tb2R1bGUuZXhwb3J0cyA9IHN0dWJBcnJheTtcbiJdLCJtYXBwaW5ncyI6IkFBQUE7QUFDQTs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQWtCQTtBQUNBO0FBQ0E7QUFDQTtBQUFBIiwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./node_modules/lodash/stubArray.js\n")},"./node_modules/lodash/stubFalse.js":
|
||
/*!******************************************!*\
|
||
!*** ./node_modules/lodash/stubFalse.js ***!
|
||
\******************************************/
|
||
/*! no static exports found */function(module,exports,__webpack_require__){"use strict";eval("\n/**\n * This method returns `false`.\n *\n * @static\n * @memberOf _\n * @since 4.13.0\n * @category Util\n * @returns {boolean} Returns `false`.\n * @example\n *\n * _.times(2, _.stubFalse);\n * // => [false, false]\n */\n\nfunction stubFalse() {\n return false;\n}\n\nmodule.exports = stubFalse;//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvbG9kYXNoL3N0dWJGYWxzZS5qcy5qcyIsInNvdXJjZXMiOlsid2VicGFjazovL1NOTGlicmFyeS8uL25vZGVfbW9kdWxlcy9sb2Rhc2gvc3R1YkZhbHNlLmpzPzA3YzciXSwic291cmNlc0NvbnRlbnQiOlsiXCJ1c2Ugc3RyaWN0XCI7XG4vKipcbiAqIFRoaXMgbWV0aG9kIHJldHVybnMgYGZhbHNlYC5cbiAqXG4gKiBAc3RhdGljXG4gKiBAbWVtYmVyT2YgX1xuICogQHNpbmNlIDQuMTMuMFxuICogQGNhdGVnb3J5IFV0aWxcbiAqIEByZXR1cm5zIHtib29sZWFufSBSZXR1cm5zIGBmYWxzZWAuXG4gKiBAZXhhbXBsZVxuICpcbiAqIF8udGltZXMoMiwgXy5zdHViRmFsc2UpO1xuICogLy8gPT4gW2ZhbHNlLCBmYWxzZV1cbiAqL1xuZnVuY3Rpb24gc3R1YkZhbHNlKCkge1xuICAgIHJldHVybiBmYWxzZTtcbn1cbm1vZHVsZS5leHBvcnRzID0gc3R1YkZhbHNlO1xuIl0sIm1hcHBpbmdzIjoiQUFBQTtBQUNBOzs7Ozs7Ozs7Ozs7OztBQWFBO0FBQ0E7QUFDQTtBQUNBO0FBQUEiLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./node_modules/lodash/stubFalse.js\n")},"./node_modules/lodash/toFinite.js":
|
||
/*!*****************************************!*\
|
||
!*** ./node_modules/lodash/toFinite.js ***!
|
||
\*****************************************/
|
||
/*! no static exports found */function(module,exports,__webpack_require__){"use strict";eval("\n\nvar toNumber = __webpack_require__(/*! ./toNumber */ \"./node_modules/lodash/toNumber.js\");\n/** Used as references for various `Number` constants. */\n\n\nvar INFINITY = 1 / 0,\n MAX_INTEGER = 1.7976931348623157e+308;\n/**\n * Converts `value` to a finite number.\n *\n * @static\n * @memberOf _\n * @since 4.12.0\n * @category Lang\n * @param {*} value The value to convert.\n * @returns {number} Returns the converted number.\n * @example\n *\n * _.toFinite(3.2);\n * // => 3.2\n *\n * _.toFinite(Number.MIN_VALUE);\n * // => 5e-324\n *\n * _.toFinite(Infinity);\n * // => 1.7976931348623157e+308\n *\n * _.toFinite('3.2');\n * // => 3.2\n */\n\nfunction toFinite(value) {\n if (!value) {\n return value === 0 ? value : 0;\n }\n\n value = toNumber(value);\n\n if (value === INFINITY || value === -INFINITY) {\n var sign = value < 0 ? -1 : 1;\n return sign * MAX_INTEGER;\n }\n\n return value === value ? value : 0;\n}\n\nmodule.exports = toFinite;//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvbG9kYXNoL3RvRmluaXRlLmpzLmpzIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vU05MaWJyYXJ5Ly4vbm9kZV9tb2R1bGVzL2xvZGFzaC90b0Zpbml0ZS5qcz82NDI4Il0sInNvdXJjZXNDb250ZW50IjpbIlwidXNlIHN0cmljdFwiO1xudmFyIHRvTnVtYmVyID0gcmVxdWlyZSgnLi90b051bWJlcicpO1xuLyoqIFVzZWQgYXMgcmVmZXJlbmNlcyBmb3IgdmFyaW91cyBgTnVtYmVyYCBjb25zdGFudHMuICovXG52YXIgSU5GSU5JVFkgPSAxIC8gMCwgTUFYX0lOVEVHRVIgPSAxLjc5NzY5MzEzNDg2MjMxNTdlKzMwODtcbi8qKlxuICogQ29udmVydHMgYHZhbHVlYCB0byBhIGZpbml0ZSBudW1iZXIuXG4gKlxuICogQHN0YXRpY1xuICogQG1lbWJlck9mIF9cbiAqIEBzaW5jZSA0LjEyLjBcbiAqIEBjYXRlZ29yeSBMYW5nXG4gKiBAcGFyYW0geyp9IHZhbHVlIFRoZSB2YWx1ZSB0byBjb252ZXJ0LlxuICogQHJldHVybnMge251bWJlcn0gUmV0dXJucyB0aGUgY29udmVydGVkIG51bWJlci5cbiAqIEBleGFtcGxlXG4gKlxuICogXy50b0Zpbml0ZSgzLjIpO1xuICogLy8gPT4gMy4yXG4gKlxuICogXy50b0Zpbml0ZShOdW1iZXIuTUlOX1ZBTFVFKTtcbiAqIC8vID0+IDVlLTMyNFxuICpcbiAqIF8udG9GaW5pdGUoSW5maW5pdHkpO1xuICogLy8gPT4gMS43OTc2OTMxMzQ4NjIzMTU3ZSszMDhcbiAqXG4gKiBfLnRvRmluaXRlKCczLjInKTtcbiAqIC8vID0+IDMuMlxuICovXG5mdW5jdGlvbiB0b0Zpbml0ZSh2YWx1ZSkge1xuICAgIGlmICghdmFsdWUpIHtcbiAgICAgICAgcmV0dXJuIHZhbHVlID09PSAwID8gdmFsdWUgOiAwO1xuICAgIH1cbiAgICB2YWx1ZSA9IHRvTnVtYmVyKHZhbHVlKTtcbiAgICBpZiAodmFsdWUgPT09IElORklOSVRZIHx8IHZhbHVlID09PSAtSU5GSU5JVFkpIHtcbiAgICAgICAgdmFyIHNpZ24gPSAodmFsdWUgPCAwID8gLTEgOiAxKTtcbiAgICAgICAgcmV0dXJuIHNpZ24gKiBNQVhfSU5URUdFUjtcbiAgICB9XG4gICAgcmV0dXJuIHZhbHVlID09PSB2YWx1ZSA/IHZhbHVlIDogMDtcbn1cbm1vZHVsZS5leHBvcnRzID0gdG9GaW5pdGU7XG4iXSwibWFwcGluZ3MiOiJBQUFBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQURBO0FBQUE7QUFDQTs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBdUJBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUFBIiwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./node_modules/lodash/toFinite.js\n")},"./node_modules/lodash/toInteger.js":
|
||
/*!******************************************!*\
|
||
!*** ./node_modules/lodash/toInteger.js ***!
|
||
\******************************************/
|
||
/*! no static exports found */function(module,exports,__webpack_require__){"use strict";eval("\n\nvar toFinite = __webpack_require__(/*! ./toFinite */ \"./node_modules/lodash/toFinite.js\");\n/**\n * Converts `value` to an integer.\n *\n * **Note:** This method is loosely based on\n * [`ToInteger`](http://www.ecma-international.org/ecma-262/7.0/#sec-tointeger).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to convert.\n * @returns {number} Returns the converted integer.\n * @example\n *\n * _.toInteger(3.2);\n * // => 3\n *\n * _.toInteger(Number.MIN_VALUE);\n * // => 0\n *\n * _.toInteger(Infinity);\n * // => 1.7976931348623157e+308\n *\n * _.toInteger('3.2');\n * // => 3\n */\n\n\nfunction toInteger(value) {\n var result = toFinite(value),\n remainder = result % 1;\n return result === result ? remainder ? result - remainder : result : 0;\n}\n\nmodule.exports = toInteger;//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvbG9kYXNoL3RvSW50ZWdlci5qcy5qcyIsInNvdXJjZXMiOlsid2VicGFjazovL1NOTGlicmFyeS8uL25vZGVfbW9kdWxlcy9sb2Rhc2gvdG9JbnRlZ2VyLmpzPzRiMTciXSwic291cmNlc0NvbnRlbnQiOlsiXCJ1c2Ugc3RyaWN0XCI7XG52YXIgdG9GaW5pdGUgPSByZXF1aXJlKCcuL3RvRmluaXRlJyk7XG4vKipcbiAqIENvbnZlcnRzIGB2YWx1ZWAgdG8gYW4gaW50ZWdlci5cbiAqXG4gKiAqKk5vdGU6KiogVGhpcyBtZXRob2QgaXMgbG9vc2VseSBiYXNlZCBvblxuICogW2BUb0ludGVnZXJgXShodHRwOi8vd3d3LmVjbWEtaW50ZXJuYXRpb25hbC5vcmcvZWNtYS0yNjIvNy4wLyNzZWMtdG9pbnRlZ2VyKS5cbiAqXG4gKiBAc3RhdGljXG4gKiBAbWVtYmVyT2YgX1xuICogQHNpbmNlIDQuMC4wXG4gKiBAY2F0ZWdvcnkgTGFuZ1xuICogQHBhcmFtIHsqfSB2YWx1ZSBUaGUgdmFsdWUgdG8gY29udmVydC5cbiAqIEByZXR1cm5zIHtudW1iZXJ9IFJldHVybnMgdGhlIGNvbnZlcnRlZCBpbnRlZ2VyLlxuICogQGV4YW1wbGVcbiAqXG4gKiBfLnRvSW50ZWdlcigzLjIpO1xuICogLy8gPT4gM1xuICpcbiAqIF8udG9JbnRlZ2VyKE51bWJlci5NSU5fVkFMVUUpO1xuICogLy8gPT4gMFxuICpcbiAqIF8udG9JbnRlZ2VyKEluZmluaXR5KTtcbiAqIC8vID0+IDEuNzk3NjkzMTM0ODYyMzE1N2UrMzA4XG4gKlxuICogXy50b0ludGVnZXIoJzMuMicpO1xuICogLy8gPT4gM1xuICovXG5mdW5jdGlvbiB0b0ludGVnZXIodmFsdWUpIHtcbiAgICB2YXIgcmVzdWx0ID0gdG9GaW5pdGUodmFsdWUpLCByZW1haW5kZXIgPSByZXN1bHQgJSAxO1xuICAgIHJldHVybiByZXN1bHQgPT09IHJlc3VsdCA/IChyZW1haW5kZXIgPyByZXN1bHQgLSByZW1haW5kZXIgOiByZXN1bHQpIDogMDtcbn1cbm1vZHVsZS5leHBvcnRzID0gdG9JbnRlZ2VyO1xuIl0sIm1hcHBpbmdzIjoiQUFBQTtBQUNBO0FBQUE7QUFDQTs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQTBCQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFBQSIsInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./node_modules/lodash/toInteger.js\n")},"./node_modules/lodash/toNumber.js":
|
||
/*!*****************************************!*\
|
||
!*** ./node_modules/lodash/toNumber.js ***!
|
||
\*****************************************/
|
||
/*! no static exports found */function(module,exports,__webpack_require__){"use strict";eval("\n\nvar isObject = __webpack_require__(/*! ./isObject */ \"./node_modules/lodash/isObject.js\"),\n isSymbol = __webpack_require__(/*! ./isSymbol */ \"./node_modules/lodash/isSymbol.js\");\n/** Used as references for various `Number` constants. */\n\n\nvar NAN = 0 / 0;\n/** Used to match leading and trailing whitespace. */\n\nvar reTrim = /^\\s+|\\s+$/g;\n/** Used to detect bad signed hexadecimal string values. */\n\nvar reIsBadHex = /^[-+]0x[0-9a-f]+$/i;\n/** Used to detect binary string values. */\n\nvar reIsBinary = /^0b[01]+$/i;\n/** Used to detect octal string values. */\n\nvar reIsOctal = /^0o[0-7]+$/i;\n/** Built-in method references without a dependency on `root`. */\n\nvar freeParseInt = parseInt;\n/**\n * Converts `value` to a number.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to process.\n * @returns {number} Returns the number.\n * @example\n *\n * _.toNumber(3.2);\n * // => 3.2\n *\n * _.toNumber(Number.MIN_VALUE);\n * // => 5e-324\n *\n * _.toNumber(Infinity);\n * // => Infinity\n *\n * _.toNumber('3.2');\n * // => 3.2\n */\n\nfunction toNumber(value) {\n if (typeof value == 'number') {\n return value;\n }\n\n if (isSymbol(value)) {\n return NAN;\n }\n\n if (isObject(value)) {\n var other = typeof value.valueOf == 'function' ? value.valueOf() : value;\n value = isObject(other) ? other + '' : other;\n }\n\n if (typeof value != 'string') {\n return value === 0 ? value : +value;\n }\n\n value = value.replace(reTrim, '');\n var isBinary = reIsBinary.test(value);\n return isBinary || reIsOctal.test(value) ? freeParseInt(value.slice(2), isBinary ? 2 : 8) : reIsBadHex.test(value) ? NAN : +value;\n}\n\nmodule.exports = toNumber;//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvbG9kYXNoL3RvTnVtYmVyLmpzLmpzIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vU05MaWJyYXJ5Ly4vbm9kZV9tb2R1bGVzL2xvZGFzaC90b051bWJlci5qcz9iNGIwIl0sInNvdXJjZXNDb250ZW50IjpbIlwidXNlIHN0cmljdFwiO1xudmFyIGlzT2JqZWN0ID0gcmVxdWlyZSgnLi9pc09iamVjdCcpLCBpc1N5bWJvbCA9IHJlcXVpcmUoJy4vaXNTeW1ib2wnKTtcbi8qKiBVc2VkIGFzIHJlZmVyZW5jZXMgZm9yIHZhcmlvdXMgYE51bWJlcmAgY29uc3RhbnRzLiAqL1xudmFyIE5BTiA9IDAgLyAwO1xuLyoqIFVzZWQgdG8gbWF0Y2ggbGVhZGluZyBhbmQgdHJhaWxpbmcgd2hpdGVzcGFjZS4gKi9cbnZhciByZVRyaW0gPSAvXlxccyt8XFxzKyQvZztcbi8qKiBVc2VkIHRvIGRldGVjdCBiYWQgc2lnbmVkIGhleGFkZWNpbWFsIHN0cmluZyB2YWx1ZXMuICovXG52YXIgcmVJc0JhZEhleCA9IC9eWy0rXTB4WzAtOWEtZl0rJC9pO1xuLyoqIFVzZWQgdG8gZGV0ZWN0IGJpbmFyeSBzdHJpbmcgdmFsdWVzLiAqL1xudmFyIHJlSXNCaW5hcnkgPSAvXjBiWzAxXSskL2k7XG4vKiogVXNlZCB0byBkZXRlY3Qgb2N0YWwgc3RyaW5nIHZhbHVlcy4gKi9cbnZhciByZUlzT2N0YWwgPSAvXjBvWzAtN10rJC9pO1xuLyoqIEJ1aWx0LWluIG1ldGhvZCByZWZlcmVuY2VzIHdpdGhvdXQgYSBkZXBlbmRlbmN5IG9uIGByb290YC4gKi9cbnZhciBmcmVlUGFyc2VJbnQgPSBwYXJzZUludDtcbi8qKlxuICogQ29udmVydHMgYHZhbHVlYCB0byBhIG51bWJlci5cbiAqXG4gKiBAc3RhdGljXG4gKiBAbWVtYmVyT2YgX1xuICogQHNpbmNlIDQuMC4wXG4gKiBAY2F0ZWdvcnkgTGFuZ1xuICogQHBhcmFtIHsqfSB2YWx1ZSBUaGUgdmFsdWUgdG8gcHJvY2Vzcy5cbiAqIEByZXR1cm5zIHtudW1iZXJ9IFJldHVybnMgdGhlIG51bWJlci5cbiAqIEBleGFtcGxlXG4gKlxuICogXy50b051bWJlcigzLjIpO1xuICogLy8gPT4gMy4yXG4gKlxuICogXy50b051bWJlcihOdW1iZXIuTUlOX1ZBTFVFKTtcbiAqIC8vID0+IDVlLTMyNFxuICpcbiAqIF8udG9OdW1iZXIoSW5maW5pdHkpO1xuICogLy8gPT4gSW5maW5pdHlcbiAqXG4gKiBfLnRvTnVtYmVyKCczLjInKTtcbiAqIC8vID0+IDMuMlxuICovXG5mdW5jdGlvbiB0b051bWJlcih2YWx1ZSkge1xuICAgIGlmICh0eXBlb2YgdmFsdWUgPT0gJ251bWJlcicpIHtcbiAgICAgICAgcmV0dXJuIHZhbHVlO1xuICAgIH1cbiAgICBpZiAoaXNTeW1ib2wodmFsdWUpKSB7XG4gICAgICAgIHJldHVybiBOQU47XG4gICAgfVxuICAgIGlmIChpc09iamVjdCh2YWx1ZSkpIHtcbiAgICAgICAgdmFyIG90aGVyID0gdHlwZW9mIHZhbHVlLnZhbHVlT2YgPT0gJ2Z1bmN0aW9uJyA/IHZhbHVlLnZhbHVlT2YoKSA6IHZhbHVlO1xuICAgICAgICB2YWx1ZSA9IGlzT2JqZWN0KG90aGVyKSA/IChvdGhlciArICcnKSA6IG90aGVyO1xuICAgIH1cbiAgICBpZiAodHlwZW9mIHZhbHVlICE9ICdzdHJpbmcnKSB7XG4gICAgICAgIHJldHVybiB2YWx1ZSA9PT0gMCA/IHZhbHVlIDogK3ZhbHVlO1xuICAgIH1cbiAgICB2YWx1ZSA9IHZhbHVlLnJlcGxhY2UocmVUcmltLCAnJyk7XG4gICAgdmFyIGlzQmluYXJ5ID0gcmVJc0JpbmFyeS50ZXN0KHZhbHVlKTtcbiAgICByZXR1cm4gKGlzQmluYXJ5IHx8IHJlSXNPY3RhbC50ZXN0KHZhbHVlKSlcbiAgICAgICAgPyBmcmVlUGFyc2VJbnQodmFsdWUuc2xpY2UoMiksIGlzQmluYXJ5ID8gMiA6IDgpXG4gICAgICAgIDogKHJlSXNCYWRIZXgudGVzdCh2YWx1ZSkgPyBOQU4gOiArdmFsdWUpO1xufVxubW9kdWxlLmV4cG9ydHMgPSB0b051bWJlcjtcbiJdLCJtYXBwaW5ncyI6IkFBQUE7QUFDQTtBQUFBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFEQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFBQTtBQUNBOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUF1QkE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBR0E7QUFDQTtBQUFBIiwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./node_modules/lodash/toNumber.js\n")},"./node_modules/lodash/toPlainObject.js":
|
||
/*!**********************************************!*\
|
||
!*** ./node_modules/lodash/toPlainObject.js ***!
|
||
\**********************************************/
|
||
/*! no static exports found */function(module,exports,__webpack_require__){"use strict";eval("\n\nvar copyObject = __webpack_require__(/*! ./_copyObject */ \"./node_modules/lodash/_copyObject.js\"),\n keysIn = __webpack_require__(/*! ./keysIn */ \"./node_modules/lodash/keysIn.js\");\n/**\n * Converts `value` to a plain object flattening inherited enumerable string\n * keyed properties of `value` to own properties of the plain object.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Lang\n * @param {*} value The value to convert.\n * @returns {Object} Returns the converted plain object.\n * @example\n *\n * function Foo() {\n * this.b = 2;\n * }\n *\n * Foo.prototype.c = 3;\n *\n * _.assign({ 'a': 1 }, new Foo);\n * // => { 'a': 1, 'b': 2 }\n *\n * _.assign({ 'a': 1 }, _.toPlainObject(new Foo));\n * // => { 'a': 1, 'b': 2, 'c': 3 }\n */\n\n\nfunction toPlainObject(value) {\n return copyObject(value, keysIn(value));\n}\n\nmodule.exports = toPlainObject;//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvbG9kYXNoL3RvUGxhaW5PYmplY3QuanMuanMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly9TTkxpYnJhcnkvLi9ub2RlX21vZHVsZXMvbG9kYXNoL3RvUGxhaW5PYmplY3QuanM/OGRlMiJdLCJzb3VyY2VzQ29udGVudCI6WyJcInVzZSBzdHJpY3RcIjtcbnZhciBjb3B5T2JqZWN0ID0gcmVxdWlyZSgnLi9fY29weU9iamVjdCcpLCBrZXlzSW4gPSByZXF1aXJlKCcuL2tleXNJbicpO1xuLyoqXG4gKiBDb252ZXJ0cyBgdmFsdWVgIHRvIGEgcGxhaW4gb2JqZWN0IGZsYXR0ZW5pbmcgaW5oZXJpdGVkIGVudW1lcmFibGUgc3RyaW5nXG4gKiBrZXllZCBwcm9wZXJ0aWVzIG9mIGB2YWx1ZWAgdG8gb3duIHByb3BlcnRpZXMgb2YgdGhlIHBsYWluIG9iamVjdC5cbiAqXG4gKiBAc3RhdGljXG4gKiBAbWVtYmVyT2YgX1xuICogQHNpbmNlIDMuMC4wXG4gKiBAY2F0ZWdvcnkgTGFuZ1xuICogQHBhcmFtIHsqfSB2YWx1ZSBUaGUgdmFsdWUgdG8gY29udmVydC5cbiAqIEByZXR1cm5zIHtPYmplY3R9IFJldHVybnMgdGhlIGNvbnZlcnRlZCBwbGFpbiBvYmplY3QuXG4gKiBAZXhhbXBsZVxuICpcbiAqIGZ1bmN0aW9uIEZvbygpIHtcbiAqICAgdGhpcy5iID0gMjtcbiAqIH1cbiAqXG4gKiBGb28ucHJvdG90eXBlLmMgPSAzO1xuICpcbiAqIF8uYXNzaWduKHsgJ2EnOiAxIH0sIG5ldyBGb28pO1xuICogLy8gPT4geyAnYSc6IDEsICdiJzogMiB9XG4gKlxuICogXy5hc3NpZ24oeyAnYSc6IDEgfSwgXy50b1BsYWluT2JqZWN0KG5ldyBGb28pKTtcbiAqIC8vID0+IHsgJ2EnOiAxLCAnYic6IDIsICdjJzogMyB9XG4gKi9cbmZ1bmN0aW9uIHRvUGxhaW5PYmplY3QodmFsdWUpIHtcbiAgICByZXR1cm4gY29weU9iamVjdCh2YWx1ZSwga2V5c0luKHZhbHVlKSk7XG59XG5tb2R1bGUuZXhwb3J0cyA9IHRvUGxhaW5PYmplY3Q7XG4iXSwibWFwcGluZ3MiOiJBQUFBO0FBQ0E7QUFBQTtBQUFBO0FBQ0E7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBd0JBO0FBQ0E7QUFDQTtBQUNBO0FBQUEiLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./node_modules/lodash/toPlainObject.js\n")},"./node_modules/lodash/toString.js":
|
||
/*!*****************************************!*\
|
||
!*** ./node_modules/lodash/toString.js ***!
|
||
\*****************************************/
|
||
/*! no static exports found */function(module,exports,__webpack_require__){"use strict";eval("\n\nvar baseToString = __webpack_require__(/*! ./_baseToString */ \"./node_modules/lodash/_baseToString.js\");\n/**\n * Converts `value` to a string. An empty string is returned for `null`\n * and `undefined` values. The sign of `-0` is preserved.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to convert.\n * @returns {string} Returns the converted string.\n * @example\n *\n * _.toString(null);\n * // => ''\n *\n * _.toString(-0);\n * // => '-0'\n *\n * _.toString([1, 2, 3]);\n * // => '1,2,3'\n */\n\n\nfunction toString(value) {\n return value == null ? '' : baseToString(value);\n}\n\nmodule.exports = toString;//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvbG9kYXNoL3RvU3RyaW5nLmpzLmpzIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vU05MaWJyYXJ5Ly4vbm9kZV9tb2R1bGVzL2xvZGFzaC90b1N0cmluZy5qcz83NmRkIl0sInNvdXJjZXNDb250ZW50IjpbIlwidXNlIHN0cmljdFwiO1xudmFyIGJhc2VUb1N0cmluZyA9IHJlcXVpcmUoJy4vX2Jhc2VUb1N0cmluZycpO1xuLyoqXG4gKiBDb252ZXJ0cyBgdmFsdWVgIHRvIGEgc3RyaW5nLiBBbiBlbXB0eSBzdHJpbmcgaXMgcmV0dXJuZWQgZm9yIGBudWxsYFxuICogYW5kIGB1bmRlZmluZWRgIHZhbHVlcy4gVGhlIHNpZ24gb2YgYC0wYCBpcyBwcmVzZXJ2ZWQuXG4gKlxuICogQHN0YXRpY1xuICogQG1lbWJlck9mIF9cbiAqIEBzaW5jZSA0LjAuMFxuICogQGNhdGVnb3J5IExhbmdcbiAqIEBwYXJhbSB7Kn0gdmFsdWUgVGhlIHZhbHVlIHRvIGNvbnZlcnQuXG4gKiBAcmV0dXJucyB7c3RyaW5nfSBSZXR1cm5zIHRoZSBjb252ZXJ0ZWQgc3RyaW5nLlxuICogQGV4YW1wbGVcbiAqXG4gKiBfLnRvU3RyaW5nKG51bGwpO1xuICogLy8gPT4gJydcbiAqXG4gKiBfLnRvU3RyaW5nKC0wKTtcbiAqIC8vID0+ICctMCdcbiAqXG4gKiBfLnRvU3RyaW5nKFsxLCAyLCAzXSk7XG4gKiAvLyA9PiAnMSwyLDMnXG4gKi9cbmZ1bmN0aW9uIHRvU3RyaW5nKHZhbHVlKSB7XG4gICAgcmV0dXJuIHZhbHVlID09IG51bGwgPyAnJyA6IGJhc2VUb1N0cmluZyh2YWx1ZSk7XG59XG5tb2R1bGUuZXhwb3J0cyA9IHRvU3RyaW5nO1xuIl0sIm1hcHBpbmdzIjoiQUFBQTtBQUNBO0FBQUE7QUFDQTs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFxQkE7QUFDQTtBQUNBO0FBQ0E7QUFBQSIsInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./node_modules/lodash/toString.js\n")},"./node_modules/lodash/uniq.js":
|
||
/*!*************************************!*\
|
||
!*** ./node_modules/lodash/uniq.js ***!
|
||
\*************************************/
|
||
/*! no static exports found */function(module,exports,__webpack_require__){"use strict";eval('\n\nvar baseUniq = __webpack_require__(/*! ./_baseUniq */ "./node_modules/lodash/_baseUniq.js");\n/**\n * Creates a duplicate-free version of an array, using\n * [`SameValueZero`](http://ecma-international.org/ecma-262/7.0/#sec-samevaluezero)\n * for equality comparisons, in which only the first occurrence of each element\n * is kept. The order of result values is determined by the order they occur\n * in the array.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Array\n * @param {Array} array The array to inspect.\n * @returns {Array} Returns the new duplicate free array.\n * @example\n *\n * _.uniq([2, 1, 2]);\n * // => [2, 1]\n */\n\n\nfunction uniq(array) {\n return array && array.length ? baseUniq(array) : [];\n}\n\nmodule.exports = uniq;//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvbG9kYXNoL3VuaXEuanMuanMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly9TTkxpYnJhcnkvLi9ub2RlX21vZHVsZXMvbG9kYXNoL3VuaXEuanM/ZWVkNiJdLCJzb3VyY2VzQ29udGVudCI6WyJcInVzZSBzdHJpY3RcIjtcbnZhciBiYXNlVW5pcSA9IHJlcXVpcmUoJy4vX2Jhc2VVbmlxJyk7XG4vKipcbiAqIENyZWF0ZXMgYSBkdXBsaWNhdGUtZnJlZSB2ZXJzaW9uIG9mIGFuIGFycmF5LCB1c2luZ1xuICogW2BTYW1lVmFsdWVaZXJvYF0oaHR0cDovL2VjbWEtaW50ZXJuYXRpb25hbC5vcmcvZWNtYS0yNjIvNy4wLyNzZWMtc2FtZXZhbHVlemVybylcbiAqIGZvciBlcXVhbGl0eSBjb21wYXJpc29ucywgaW4gd2hpY2ggb25seSB0aGUgZmlyc3Qgb2NjdXJyZW5jZSBvZiBlYWNoIGVsZW1lbnRcbiAqIGlzIGtlcHQuIFRoZSBvcmRlciBvZiByZXN1bHQgdmFsdWVzIGlzIGRldGVybWluZWQgYnkgdGhlIG9yZGVyIHRoZXkgb2NjdXJcbiAqIGluIHRoZSBhcnJheS5cbiAqXG4gKiBAc3RhdGljXG4gKiBAbWVtYmVyT2YgX1xuICogQHNpbmNlIDAuMS4wXG4gKiBAY2F0ZWdvcnkgQXJyYXlcbiAqIEBwYXJhbSB7QXJyYXl9IGFycmF5IFRoZSBhcnJheSB0byBpbnNwZWN0LlxuICogQHJldHVybnMge0FycmF5fSBSZXR1cm5zIHRoZSBuZXcgZHVwbGljYXRlIGZyZWUgYXJyYXkuXG4gKiBAZXhhbXBsZVxuICpcbiAqIF8udW5pcShbMiwgMSwgMl0pO1xuICogLy8gPT4gWzIsIDFdXG4gKi9cbmZ1bmN0aW9uIHVuaXEoYXJyYXkpIHtcbiAgICByZXR1cm4gKGFycmF5ICYmIGFycmF5Lmxlbmd0aCkgPyBiYXNlVW5pcShhcnJheSkgOiBbXTtcbn1cbm1vZHVsZS5leHBvcnRzID0gdW5pcTtcbiJdLCJtYXBwaW5ncyI6IkFBQUE7QUFDQTtBQUFBO0FBQ0E7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBa0JBO0FBQ0E7QUFDQTtBQUNBO0FBQUEiLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./node_modules/lodash/uniq.js\n')},"./node_modules/lodash/uniqWith.js":
|
||
/*!*****************************************!*\
|
||
!*** ./node_modules/lodash/uniqWith.js ***!
|
||
\*****************************************/
|
||
/*! no static exports found */function(module,exports,__webpack_require__){"use strict";eval("\n\nvar baseUniq = __webpack_require__(/*! ./_baseUniq */ \"./node_modules/lodash/_baseUniq.js\");\n/**\n * This method is like `_.uniq` except that it accepts `comparator` which\n * is invoked to compare elements of `array`. The order of result values is\n * determined by the order they occur in the array.The comparator is invoked\n * with two arguments: (arrVal, othVal).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Array\n * @param {Array} array The array to inspect.\n * @param {Function} [comparator] The comparator invoked per element.\n * @returns {Array} Returns the new duplicate free array.\n * @example\n *\n * var objects = [{ 'x': 1, 'y': 2 }, { 'x': 2, 'y': 1 }, { 'x': 1, 'y': 2 }];\n *\n * _.uniqWith(objects, _.isEqual);\n * // => [{ 'x': 1, 'y': 2 }, { 'x': 2, 'y': 1 }]\n */\n\n\nfunction uniqWith(array, comparator) {\n comparator = typeof comparator == 'function' ? comparator : undefined;\n return array && array.length ? baseUniq(array, undefined, comparator) : [];\n}\n\nmodule.exports = uniqWith;//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvbG9kYXNoL3VuaXFXaXRoLmpzLmpzIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vU05MaWJyYXJ5Ly4vbm9kZV9tb2R1bGVzL2xvZGFzaC91bmlxV2l0aC5qcz8xZmVlIl0sInNvdXJjZXNDb250ZW50IjpbIlwidXNlIHN0cmljdFwiO1xudmFyIGJhc2VVbmlxID0gcmVxdWlyZSgnLi9fYmFzZVVuaXEnKTtcbi8qKlxuICogVGhpcyBtZXRob2QgaXMgbGlrZSBgXy51bmlxYCBleGNlcHQgdGhhdCBpdCBhY2NlcHRzIGBjb21wYXJhdG9yYCB3aGljaFxuICogaXMgaW52b2tlZCB0byBjb21wYXJlIGVsZW1lbnRzIG9mIGBhcnJheWAuIFRoZSBvcmRlciBvZiByZXN1bHQgdmFsdWVzIGlzXG4gKiBkZXRlcm1pbmVkIGJ5IHRoZSBvcmRlciB0aGV5IG9jY3VyIGluIHRoZSBhcnJheS5UaGUgY29tcGFyYXRvciBpcyBpbnZva2VkXG4gKiB3aXRoIHR3byBhcmd1bWVudHM6IChhcnJWYWwsIG90aFZhbCkuXG4gKlxuICogQHN0YXRpY1xuICogQG1lbWJlck9mIF9cbiAqIEBzaW5jZSA0LjAuMFxuICogQGNhdGVnb3J5IEFycmF5XG4gKiBAcGFyYW0ge0FycmF5fSBhcnJheSBUaGUgYXJyYXkgdG8gaW5zcGVjdC5cbiAqIEBwYXJhbSB7RnVuY3Rpb259IFtjb21wYXJhdG9yXSBUaGUgY29tcGFyYXRvciBpbnZva2VkIHBlciBlbGVtZW50LlxuICogQHJldHVybnMge0FycmF5fSBSZXR1cm5zIHRoZSBuZXcgZHVwbGljYXRlIGZyZWUgYXJyYXkuXG4gKiBAZXhhbXBsZVxuICpcbiAqIHZhciBvYmplY3RzID0gW3sgJ3gnOiAxLCAneSc6IDIgfSwgeyAneCc6IDIsICd5JzogMSB9LCB7ICd4JzogMSwgJ3knOiAyIH1dO1xuICpcbiAqIF8udW5pcVdpdGgob2JqZWN0cywgXy5pc0VxdWFsKTtcbiAqIC8vID0+IFt7ICd4JzogMSwgJ3knOiAyIH0sIHsgJ3gnOiAyLCAneSc6IDEgfV1cbiAqL1xuZnVuY3Rpb24gdW5pcVdpdGgoYXJyYXksIGNvbXBhcmF0b3IpIHtcbiAgICBjb21wYXJhdG9yID0gdHlwZW9mIGNvbXBhcmF0b3IgPT0gJ2Z1bmN0aW9uJyA/IGNvbXBhcmF0b3IgOiB1bmRlZmluZWQ7XG4gICAgcmV0dXJuIChhcnJheSAmJiBhcnJheS5sZW5ndGgpID8gYmFzZVVuaXEoYXJyYXksIHVuZGVmaW5lZCwgY29tcGFyYXRvcikgOiBbXTtcbn1cbm1vZHVsZS5leHBvcnRzID0gdW5pcVdpdGg7XG4iXSwibWFwcGluZ3MiOiJBQUFBO0FBQ0E7QUFBQTtBQUNBOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBb0JBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQSIsInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./node_modules/lodash/uniqWith.js\n")},"./node_modules/process/browser.js":
|
||
/*!*****************************************!*\
|
||
!*** ./node_modules/process/browser.js ***!
|
||
\*****************************************/
|
||
/*! no static exports found */function(module,exports,__webpack_require__){"use strict";eval(" // shim for using process in browser\n\nvar process = module.exports = {}; // cached from whatever global is present so that test runners that stub it\n// don't break things. But we need to wrap it in a try catch in case it is\n// wrapped in strict mode code which doesn't define any globals. It's inside a\n// function because try/catches deoptimize in certain engines.\n\nvar cachedSetTimeout;\nvar cachedClearTimeout;\n\nfunction defaultSetTimout() {\n throw new Error('setTimeout has not been defined');\n}\n\nfunction defaultClearTimeout() {\n throw new Error('clearTimeout has not been defined');\n}\n\n(function () {\n try {\n if (typeof setTimeout === 'function') {\n cachedSetTimeout = setTimeout;\n } else {\n cachedSetTimeout = defaultSetTimout;\n }\n } catch (e) {\n cachedSetTimeout = defaultSetTimout;\n }\n\n try {\n if (typeof clearTimeout === 'function') {\n cachedClearTimeout = clearTimeout;\n } else {\n cachedClearTimeout = defaultClearTimeout;\n }\n } catch (e) {\n cachedClearTimeout = defaultClearTimeout;\n }\n})();\n\nfunction runTimeout(fun) {\n if (cachedSetTimeout === setTimeout) {\n //normal enviroments in sane situations\n return setTimeout(fun, 0);\n } // if setTimeout wasn't available but was latter defined\n\n\n if ((cachedSetTimeout === defaultSetTimout || !cachedSetTimeout) && setTimeout) {\n cachedSetTimeout = setTimeout;\n return setTimeout(fun, 0);\n }\n\n try {\n // when when somebody has screwed with setTimeout but no I.E. maddness\n return cachedSetTimeout(fun, 0);\n } catch (e) {\n try {\n // When we are in I.E. but the script has been evaled so I.E. doesn't trust the global object when called normally\n return cachedSetTimeout.call(null, fun, 0);\n } catch (e) {\n // same as above but when it's a version of I.E. that must have the global object for 'this', hopfully our context correct otherwise it will throw a global error\n return cachedSetTimeout.call(this, fun, 0);\n }\n }\n}\n\nfunction runClearTimeout(marker) {\n if (cachedClearTimeout === clearTimeout) {\n //normal enviroments in sane situations\n return clearTimeout(marker);\n } // if clearTimeout wasn't available but was latter defined\n\n\n if ((cachedClearTimeout === defaultClearTimeout || !cachedClearTimeout) && clearTimeout) {\n cachedClearTimeout = clearTimeout;\n return clearTimeout(marker);\n }\n\n try {\n // when when somebody has screwed with setTimeout but no I.E. maddness\n return cachedClearTimeout(marker);\n } catch (e) {\n try {\n // When we are in I.E. but the script has been evaled so I.E. doesn't trust the global object when called normally\n return cachedClearTimeout.call(null, marker);\n } catch (e) {\n // same as above but when it's a version of I.E. that must have the global object for 'this', hopfully our context correct otherwise it will throw a global error.\n // Some versions of I.E. have different rules for clearTimeout vs setTimeout\n return cachedClearTimeout.call(this, marker);\n }\n }\n}\n\nvar queue = [];\nvar draining = false;\nvar currentQueue;\nvar queueIndex = -1;\n\nfunction cleanUpNextTick() {\n if (!draining || !currentQueue) {\n return;\n }\n\n draining = false;\n\n if (currentQueue.length) {\n queue = currentQueue.concat(queue);\n } else {\n queueIndex = -1;\n }\n\n if (queue.length) {\n drainQueue();\n }\n}\n\nfunction drainQueue() {\n if (draining) {\n return;\n }\n\n var timeout = runTimeout(cleanUpNextTick);\n draining = true;\n var len = queue.length;\n\n while (len) {\n currentQueue = queue;\n queue = [];\n\n while (++queueIndex < len) {\n if (currentQueue) {\n currentQueue[queueIndex].run();\n }\n }\n\n queueIndex = -1;\n len = queue.length;\n }\n\n currentQueue = null;\n draining = false;\n runClearTimeout(timeout);\n}\n\nprocess.nextTick = function (fun) {\n var args = new Array(arguments.length - 1);\n\n if (arguments.length > 1) {\n for (var i = 1; i < arguments.length; i++) {\n args[i - 1] = arguments[i];\n }\n }\n\n queue.push(new Item(fun, args));\n\n if (queue.length === 1 && !draining) {\n runTimeout(drainQueue);\n }\n}; // v8 likes predictible objects\n\n\nfunction Item(fun, array) {\n this.fun = fun;\n this.array = array;\n}\n\nItem.prototype.run = function () {\n this.fun.apply(null, this.array);\n};\n\nprocess.title = 'browser';\nprocess.browser = true;\nprocess.env = {};\nprocess.argv = [];\nprocess.version = ''; // empty string to avoid regexp issues\n\nprocess.versions = {};\n\nfunction noop() {}\n\nprocess.on = noop;\nprocess.addListener = noop;\nprocess.once = noop;\nprocess.off = noop;\nprocess.removeListener = noop;\nprocess.removeAllListeners = noop;\nprocess.emit = noop;\nprocess.prependListener = noop;\nprocess.prependOnceListener = noop;\n\nprocess.listeners = function (name) {\n return [];\n};\n\nprocess.binding = function (name) {\n throw new Error('process.binding is not supported');\n};\n\nprocess.cwd = function () {\n return '/';\n};\n\nprocess.chdir = function (dir) {\n throw new Error('process.chdir is not supported');\n};\n\nprocess.umask = function () {\n return 0;\n};//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvcHJvY2Vzcy9icm93c2VyLmpzLmpzIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vU05MaWJyYXJ5Ly4vbm9kZV9tb2R1bGVzL3Byb2Nlc3MvYnJvd3Nlci5qcz9mMjhjIl0sInNvdXJjZXNDb250ZW50IjpbIlwidXNlIHN0cmljdFwiO1xuLy8gc2hpbSBmb3IgdXNpbmcgcHJvY2VzcyBpbiBicm93c2VyXG52YXIgcHJvY2VzcyA9IG1vZHVsZS5leHBvcnRzID0ge307XG4vLyBjYWNoZWQgZnJvbSB3aGF0ZXZlciBnbG9iYWwgaXMgcHJlc2VudCBzbyB0aGF0IHRlc3QgcnVubmVycyB0aGF0IHN0dWIgaXRcbi8vIGRvbid0IGJyZWFrIHRoaW5ncy4gIEJ1dCB3ZSBuZWVkIHRvIHdyYXAgaXQgaW4gYSB0cnkgY2F0Y2ggaW4gY2FzZSBpdCBpc1xuLy8gd3JhcHBlZCBpbiBzdHJpY3QgbW9kZSBjb2RlIHdoaWNoIGRvZXNuJ3QgZGVmaW5lIGFueSBnbG9iYWxzLiAgSXQncyBpbnNpZGUgYVxuLy8gZnVuY3Rpb24gYmVjYXVzZSB0cnkvY2F0Y2hlcyBkZW9wdGltaXplIGluIGNlcnRhaW4gZW5naW5lcy5cbnZhciBjYWNoZWRTZXRUaW1lb3V0O1xudmFyIGNhY2hlZENsZWFyVGltZW91dDtcbmZ1bmN0aW9uIGRlZmF1bHRTZXRUaW1vdXQoKSB7XG4gICAgdGhyb3cgbmV3IEVycm9yKCdzZXRUaW1lb3V0IGhhcyBub3QgYmVlbiBkZWZpbmVkJyk7XG59XG5mdW5jdGlvbiBkZWZhdWx0Q2xlYXJUaW1lb3V0KCkge1xuICAgIHRocm93IG5ldyBFcnJvcignY2xlYXJUaW1lb3V0IGhhcyBub3QgYmVlbiBkZWZpbmVkJyk7XG59XG4oZnVuY3Rpb24gKCkge1xuICAgIHRyeSB7XG4gICAgICAgIGlmICh0eXBlb2Ygc2V0VGltZW91dCA9PT0gJ2Z1bmN0aW9uJykge1xuICAgICAgICAgICAgY2FjaGVkU2V0VGltZW91dCA9IHNldFRpbWVvdXQ7XG4gICAgICAgIH1cbiAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICBjYWNoZWRTZXRUaW1lb3V0ID0gZGVmYXVsdFNldFRpbW91dDtcbiAgICAgICAgfVxuICAgIH1cbiAgICBjYXRjaCAoZSkge1xuICAgICAgICBjYWNoZWRTZXRUaW1lb3V0ID0gZGVmYXVsdFNldFRpbW91dDtcbiAgICB9XG4gICAgdHJ5IHtcbiAgICAgICAgaWYgKHR5cGVvZiBjbGVhclRpbWVvdXQgPT09ICdmdW5jdGlvbicpIHtcbiAgICAgICAgICAgIGNhY2hlZENsZWFyVGltZW91dCA9IGNsZWFyVGltZW91dDtcbiAgICAgICAgfVxuICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgIGNhY2hlZENsZWFyVGltZW91dCA9IGRlZmF1bHRDbGVhclRpbWVvdXQ7XG4gICAgICAgIH1cbiAgICB9XG4gICAgY2F0Y2ggKGUpIHtcbiAgICAgICAgY2FjaGVkQ2xlYXJUaW1lb3V0ID0gZGVmYXVsdENsZWFyVGltZW91dDtcbiAgICB9XG59KCkpO1xuZnVuY3Rpb24gcnVuVGltZW91dChmdW4pIHtcbiAgICBpZiAoY2FjaGVkU2V0VGltZW91dCA9PT0gc2V0VGltZW91dCkge1xuICAgICAgICAvL25vcm1hbCBlbnZpcm9tZW50cyBpbiBzYW5lIHNpdHVhdGlvbnNcbiAgICAgICAgcmV0dXJuIHNldFRpbWVvdXQoZnVuLCAwKTtcbiAgICB9XG4gICAgLy8gaWYgc2V0VGltZW91dCB3YXNuJ3QgYXZhaWxhYmxlIGJ1dCB3YXMgbGF0dGVyIGRlZmluZWRcbiAgICBpZiAoKGNhY2hlZFNldFRpbWVvdXQgPT09IGRlZmF1bHRTZXRUaW1vdXQgfHwgIWNhY2hlZFNldFRpbWVvdXQpICYmIHNldFRpbWVvdXQpIHtcbiAgICAgICAgY2FjaGVkU2V0VGltZW91dCA9IHNldFRpbWVvdXQ7XG4gICAgICAgIHJldHVybiBzZXRUaW1lb3V0KGZ1biwgMCk7XG4gICAgfVxuICAgIHRyeSB7XG4gICAgICAgIC8vIHdoZW4gd2hlbiBzb21lYm9keSBoYXMgc2NyZXdlZCB3aXRoIHNldFRpbWVvdXQgYnV0IG5vIEkuRS4gbWFkZG5lc3NcbiAgICAgICAgcmV0dXJuIGNhY2hlZFNldFRpbWVvdXQoZnVuLCAwKTtcbiAgICB9XG4gICAgY2F0Y2ggKGUpIHtcbiAgICAgICAgdHJ5IHtcbiAgICAgICAgICAgIC8vIFdoZW4gd2UgYXJlIGluIEkuRS4gYnV0IHRoZSBzY3JpcHQgaGFzIGJlZW4gZXZhbGVkIHNvIEkuRS4gZG9lc24ndCB0cnVzdCB0aGUgZ2xvYmFsIG9iamVjdCB3aGVuIGNhbGxlZCBub3JtYWxseVxuICAgICAgICAgICAgcmV0dXJuIGNhY2hlZFNldFRpbWVvdXQuY2FsbChudWxsLCBmdW4sIDApO1xuICAgICAgICB9XG4gICAgICAgIGNhdGNoIChlKSB7XG4gICAgICAgICAgICAvLyBzYW1lIGFzIGFib3ZlIGJ1dCB3aGVuIGl0J3MgYSB2ZXJzaW9uIG9mIEkuRS4gdGhhdCBtdXN0IGhhdmUgdGhlIGdsb2JhbCBvYmplY3QgZm9yICd0aGlzJywgaG9wZnVsbHkgb3VyIGNvbnRleHQgY29ycmVjdCBvdGhlcndpc2UgaXQgd2lsbCB0aHJvdyBhIGdsb2JhbCBlcnJvclxuICAgICAgICAgICAgcmV0dXJuIGNhY2hlZFNldFRpbWVvdXQuY2FsbCh0aGlzLCBmdW4sIDApO1xuICAgICAgICB9XG4gICAgfVxufVxuZnVuY3Rpb24gcnVuQ2xlYXJUaW1lb3V0KG1hcmtlcikge1xuICAgIGlmIChjYWNoZWRDbGVhclRpbWVvdXQgPT09IGNsZWFyVGltZW91dCkge1xuICAgICAgICAvL25vcm1hbCBlbnZpcm9tZW50cyBpbiBzYW5lIHNpdHVhdGlvbnNcbiAgICAgICAgcmV0dXJuIGNsZWFyVGltZW91dChtYXJrZXIpO1xuICAgIH1cbiAgICAvLyBpZiBjbGVhclRpbWVvdXQgd2Fzbid0IGF2YWlsYWJsZSBidXQgd2FzIGxhdHRlciBkZWZpbmVkXG4gICAgaWYgKChjYWNoZWRDbGVhclRpbWVvdXQgPT09IGRlZmF1bHRDbGVhclRpbWVvdXQgfHwgIWNhY2hlZENsZWFyVGltZW91dCkgJiYgY2xlYXJUaW1lb3V0KSB7XG4gICAgICAgIGNhY2hlZENsZWFyVGltZW91dCA9IGNsZWFyVGltZW91dDtcbiAgICAgICAgcmV0dXJuIGNsZWFyVGltZW91dChtYXJrZXIpO1xuICAgIH1cbiAgICB0cnkge1xuICAgICAgICAvLyB3aGVuIHdoZW4gc29tZWJvZHkgaGFzIHNjcmV3ZWQgd2l0aCBzZXRUaW1lb3V0IGJ1dCBubyBJLkUuIG1hZGRuZXNzXG4gICAgICAgIHJldHVybiBjYWNoZWRDbGVhclRpbWVvdXQobWFya2VyKTtcbiAgICB9XG4gICAgY2F0Y2ggKGUpIHtcbiAgICAgICAgdHJ5IHtcbiAgICAgICAgICAgIC8vIFdoZW4gd2UgYXJlIGluIEkuRS4gYnV0IHRoZSBzY3JpcHQgaGFzIGJlZW4gZXZhbGVkIHNvIEkuRS4gZG9lc24ndCAgdHJ1c3QgdGhlIGdsb2JhbCBvYmplY3Qgd2hlbiBjYWxsZWQgbm9ybWFsbHlcbiAgICAgICAgICAgIHJldHVybiBjYWNoZWRDbGVhclRpbWVvdXQuY2FsbChudWxsLCBtYXJrZXIpO1xuICAgICAgICB9XG4gICAgICAgIGNhdGNoIChlKSB7XG4gICAgICAgICAgICAvLyBzYW1lIGFzIGFib3ZlIGJ1dCB3aGVuIGl0J3MgYSB2ZXJzaW9uIG9mIEkuRS4gdGhhdCBtdXN0IGhhdmUgdGhlIGdsb2JhbCBvYmplY3QgZm9yICd0aGlzJywgaG9wZnVsbHkgb3VyIGNvbnRleHQgY29ycmVjdCBvdGhlcndpc2UgaXQgd2lsbCB0aHJvdyBhIGdsb2JhbCBlcnJvci5cbiAgICAgICAgICAgIC8vIFNvbWUgdmVyc2lvbnMgb2YgSS5FLiBoYXZlIGRpZmZlcmVudCBydWxlcyBmb3IgY2xlYXJUaW1lb3V0IHZzIHNldFRpbWVvdXRcbiAgICAgICAgICAgIHJldHVybiBjYWNoZWRDbGVhclRpbWVvdXQuY2FsbCh0aGlzLCBtYXJrZXIpO1xuICAgICAgICB9XG4gICAgfVxufVxudmFyIHF1ZXVlID0gW107XG52YXIgZHJhaW5pbmcgPSBmYWxzZTtcbnZhciBjdXJyZW50UXVldWU7XG52YXIgcXVldWVJbmRleCA9IC0xO1xuZnVuY3Rpb24gY2xlYW5VcE5leHRUaWNrKCkge1xuICAgIGlmICghZHJhaW5pbmcgfHwgIWN1cnJlbnRRdWV1ZSkge1xuICAgICAgICByZXR1cm47XG4gICAgfVxuICAgIGRyYWluaW5nID0gZmFsc2U7XG4gICAgaWYgKGN1cnJlbnRRdWV1ZS5sZW5ndGgpIHtcbiAgICAgICAgcXVldWUgPSBjdXJyZW50UXVldWUuY29uY2F0KHF1ZXVlKTtcbiAgICB9XG4gICAgZWxzZSB7XG4gICAgICAgIHF1ZXVlSW5kZXggPSAtMTtcbiAgICB9XG4gICAgaWYgKHF1ZXVlLmxlbmd0aCkge1xuICAgICAgICBkcmFpblF1ZXVlKCk7XG4gICAgfVxufVxuZnVuY3Rpb24gZHJhaW5RdWV1ZSgpIHtcbiAgICBpZiAoZHJhaW5pbmcpIHtcbiAgICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICB2YXIgdGltZW91dCA9IHJ1blRpbWVvdXQoY2xlYW5VcE5leHRUaWNrKTtcbiAgICBkcmFpbmluZyA9IHRydWU7XG4gICAgdmFyIGxlbiA9IHF1ZXVlLmxlbmd0aDtcbiAgICB3aGlsZSAobGVuKSB7XG4gICAgICAgIGN1cnJlbnRRdWV1ZSA9IHF1ZXVlO1xuICAgICAgICBxdWV1ZSA9IFtdO1xuICAgICAgICB3aGlsZSAoKytxdWV1ZUluZGV4IDwgbGVuKSB7XG4gICAgICAgICAgICBpZiAoY3VycmVudFF1ZXVlKSB7XG4gICAgICAgICAgICAgICAgY3VycmVudFF1ZXVlW3F1ZXVlSW5kZXhdLnJ1bigpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIHF1ZXVlSW5kZXggPSAtMTtcbiAgICAgICAgbGVuID0gcXVldWUubGVuZ3RoO1xuICAgIH1cbiAgICBjdXJyZW50UXVldWUgPSBudWxsO1xuICAgIGRyYWluaW5nID0gZmFsc2U7XG4gICAgcnVuQ2xlYXJUaW1lb3V0KHRpbWVvdXQpO1xufVxucHJvY2Vzcy5uZXh0VGljayA9IGZ1bmN0aW9uIChmdW4pIHtcbiAgICB2YXIgYXJncyA9IG5ldyBBcnJheShhcmd1bWVudHMubGVuZ3RoIC0gMSk7XG4gICAgaWYgKGFyZ3VtZW50cy5sZW5ndGggPiAxKSB7XG4gICAgICAgIGZvciAodmFyIGkgPSAxOyBpIDwgYXJndW1lbnRzLmxlbmd0aDsgaSsrKSB7XG4gICAgICAgICAgICBhcmdzW2kgLSAxXSA9IGFyZ3VtZW50c1tpXTtcbiAgICAgICAgfVxuICAgIH1cbiAgICBxdWV1ZS5wdXNoKG5ldyBJdGVtKGZ1biwgYXJncykpO1xuICAgIGlmIChxdWV1ZS5sZW5ndGggPT09IDEgJiYgIWRyYWluaW5nKSB7XG4gICAgICAgIHJ1blRpbWVvdXQoZHJhaW5RdWV1ZSk7XG4gICAgfVxufTtcbi8vIHY4IGxpa2VzIHByZWRpY3RpYmxlIG9iamVjdHNcbmZ1bmN0aW9uIEl0ZW0oZnVuLCBhcnJheSkge1xuICAgIHRoaXMuZnVuID0gZnVuO1xuICAgIHRoaXMuYXJyYXkgPSBhcnJheTtcbn1cbkl0ZW0ucHJvdG90eXBlLnJ1biA9IGZ1bmN0aW9uICgpIHtcbiAgICB0aGlzLmZ1bi5hcHBseShudWxsLCB0aGlzLmFycmF5KTtcbn07XG5wcm9jZXNzLnRpdGxlID0gJ2Jyb3dzZXInO1xucHJvY2Vzcy5icm93c2VyID0gdHJ1ZTtcbnByb2Nlc3MuZW52ID0ge307XG5wcm9jZXNzLmFyZ3YgPSBbXTtcbnByb2Nlc3MudmVyc2lvbiA9ICcnOyAvLyBlbXB0eSBzdHJpbmcgdG8gYXZvaWQgcmVnZXhwIGlzc3Vlc1xucHJvY2Vzcy52ZXJzaW9ucyA9IHt9O1xuZnVuY3Rpb24gbm9vcCgpIHsgfVxucHJvY2Vzcy5vbiA9IG5vb3A7XG5wcm9jZXNzLmFkZExpc3RlbmVyID0gbm9vcDtcbnByb2Nlc3Mub25jZSA9IG5vb3A7XG5wcm9jZXNzLm9mZiA9IG5vb3A7XG5wcm9jZXNzLnJlbW92ZUxpc3RlbmVyID0gbm9vcDtcbnByb2Nlc3MucmVtb3ZlQWxsTGlzdGVuZXJzID0gbm9vcDtcbnByb2Nlc3MuZW1pdCA9IG5vb3A7XG5wcm9jZXNzLnByZXBlbmRMaXN0ZW5lciA9IG5vb3A7XG5wcm9jZXNzLnByZXBlbmRPbmNlTGlzdGVuZXIgPSBub29wO1xucHJvY2Vzcy5saXN0ZW5lcnMgPSBmdW5jdGlvbiAobmFtZSkgeyByZXR1cm4gW107IH07XG5wcm9jZXNzLmJpbmRpbmcgPSBmdW5jdGlvbiAobmFtZSkge1xuICAgIHRocm93IG5ldyBFcnJvcigncHJvY2Vzcy5iaW5kaW5nIGlzIG5vdCBzdXBwb3J0ZWQnKTtcbn07XG5wcm9jZXNzLmN3ZCA9IGZ1bmN0aW9uICgpIHsgcmV0dXJuICcvJzsgfTtcbnByb2Nlc3MuY2hkaXIgPSBmdW5jdGlvbiAoZGlyKSB7XG4gICAgdGhyb3cgbmV3IEVycm9yKCdwcm9jZXNzLmNoZGlyIGlzIG5vdCBzdXBwb3J0ZWQnKTtcbn07XG5wcm9jZXNzLnVtYXNrID0gZnVuY3Rpb24gKCkgeyByZXR1cm4gMDsgfTtcbiJdLCJtYXBwaW5ncyI6IkFBQUE7QUFDQTtBQUNBO0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUVBO0FBQ0E7QUFDQTtBQUVBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBRUE7QUFDQTtBQUNBO0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBRUE7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFBQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUFBO0FBQUE7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFBQTtBQUFBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQUE7QUFBQSIsInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./node_modules/process/browser.js\n")},"./node_modules/regenerator-runtime/runtime.js":
|
||
/*!*****************************************************!*\
|
||
!*** ./node_modules/regenerator-runtime/runtime.js ***!
|
||
\*****************************************************/
|
||
/*! no static exports found */function(module,exports,__webpack_require__){"use strict";eval('/* WEBPACK VAR INJECTION */(function(module) {\n/**\n * Copyright (c) 2014-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\nfunction _typeof(obj) { "@babel/helpers - typeof"; if (typeof Symbol === "function" && typeof Symbol.iterator === "symbol") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }; } return _typeof(obj); }\n\nvar runtime = function (exports) {\n "use strict";\n\n var Op = Object.prototype;\n var hasOwn = Op.hasOwnProperty;\n var undefined; // More compressible than void 0.\n\n var $Symbol = typeof Symbol === "function" ? Symbol : {};\n var iteratorSymbol = $Symbol.iterator || "@@iterator";\n var asyncIteratorSymbol = $Symbol.asyncIterator || "@@asyncIterator";\n var toStringTagSymbol = $Symbol.toStringTag || "@@toStringTag";\n\n function wrap(innerFn, outerFn, self, tryLocsList) {\n // If outerFn provided and outerFn.prototype is a Generator, then outerFn.prototype instanceof Generator.\n var protoGenerator = outerFn && outerFn.prototype instanceof Generator ? outerFn : Generator;\n var generator = Object.create(protoGenerator.prototype);\n var context = new Context(tryLocsList || []); // The ._invoke method unifies the implementations of the .next,\n // .throw, and .return methods.\n\n generator._invoke = makeInvokeMethod(innerFn, self, context);\n return generator;\n }\n\n exports.wrap = wrap; // Try/catch helper to minimize deoptimizations. Returns a completion\n // record like context.tryEntries[i].completion. This interface could\n // have been (and was previously) designed to take a closure to be\n // invoked without arguments, but in all the cases we care about we\n // already have an existing method we want to call, so there\'s no need\n // to create a new function object. We can even get away with assuming\n // the method takes exactly one argument, since that happens to be true\n // in every case, so we don\'t have to touch the arguments object. The\n // only additional allocation required is the completion record, which\n // has a stable shape and so hopefully should be cheap to allocate.\n\n function tryCatch(fn, obj, arg) {\n try {\n return {\n type: "normal",\n arg: fn.call(obj, arg)\n };\n } catch (err) {\n return {\n type: "throw",\n arg: err\n };\n }\n }\n\n var GenStateSuspendedStart = "suspendedStart";\n var GenStateSuspendedYield = "suspendedYield";\n var GenStateExecuting = "executing";\n var GenStateCompleted = "completed"; // Returning this object from the innerFn has the same effect as\n // breaking out of the dispatch switch statement.\n\n var ContinueSentinel = {}; // Dummy constructor functions that we use as the .constructor and\n // .constructor.prototype properties for functions that return Generator\n // objects. For full spec compliance, you may wish to configure your\n // minifier not to mangle the names of these two functions.\n\n function Generator() {}\n\n function GeneratorFunction() {}\n\n function GeneratorFunctionPrototype() {} // This is a polyfill for %IteratorPrototype% for environments that\n // don\'t natively support it.\n\n\n var IteratorPrototype = {};\n\n IteratorPrototype[iteratorSymbol] = function () {\n return this;\n };\n\n var getProto = Object.getPrototypeOf;\n var NativeIteratorPrototype = getProto && getProto(getProto(values([])));\n\n if (NativeIteratorPrototype && NativeIteratorPrototype !== Op && hasOwn.call(NativeIteratorPrototype, iteratorSymbol)) {\n // This environment has a native %IteratorPrototype%; use it instead\n // of the polyfill.\n IteratorPrototype = NativeIteratorPrototype;\n }\n\n var Gp = GeneratorFunctionPrototype.prototype = Generator.prototype = Object.create(IteratorPrototype);\n GeneratorFunction.prototype = Gp.constructor = GeneratorFunctionPrototype;\n GeneratorFunctionPrototype.constructor = GeneratorFunction;\n GeneratorFunctionPrototype[toStringTagSymbol] = GeneratorFunction.displayName = "GeneratorFunction"; // Helper for defining the .next, .throw, and .return methods of the\n // Iterator interface in terms of a single ._invoke method.\n\n function defineIteratorMethods(prototype) {\n ["next", "throw", "return"].forEach(function (method) {\n prototype[method] = function (arg) {\n return this._invoke(method, arg);\n };\n });\n }\n\n exports.isGeneratorFunction = function (genFun) {\n var ctor = typeof genFun === "function" && genFun.constructor;\n return ctor ? ctor === GeneratorFunction || // For the native GeneratorFunction constructor, the best we can\n // do is to check its .name property.\n (ctor.displayName || ctor.name) === "GeneratorFunction" : false;\n };\n\n exports.mark = function (genFun) {\n if (Object.setPrototypeOf) {\n Object.setPrototypeOf(genFun, GeneratorFunctionPrototype);\n } else {\n genFun.__proto__ = GeneratorFunctionPrototype;\n\n if (!(toStringTagSymbol in genFun)) {\n genFun[toStringTagSymbol] = "GeneratorFunction";\n }\n }\n\n genFun.prototype = Object.create(Gp);\n return genFun;\n }; // Within the body of any async function, `await x` is transformed to\n // `yield regeneratorRuntime.awrap(x)`, so that the runtime can test\n // `hasOwn.call(value, "__await")` to determine if the yielded value is\n // meant to be awaited.\n\n\n exports.awrap = function (arg) {\n return {\n __await: arg\n };\n };\n\n function AsyncIterator(generator, PromiseImpl) {\n function invoke(method, arg, resolve, reject) {\n var record = tryCatch(generator[method], generator, arg);\n\n if (record.type === "throw") {\n reject(record.arg);\n } else {\n var result = record.arg;\n var value = result.value;\n\n if (value && _typeof(value) === "object" && hasOwn.call(value, "__await")) {\n return PromiseImpl.resolve(value.__await).then(function (value) {\n invoke("next", value, resolve, reject);\n }, function (err) {\n invoke("throw", err, resolve, reject);\n });\n }\n\n return PromiseImpl.resolve(value).then(function (unwrapped) {\n // When a yielded Promise is resolved, its final value becomes\n // the .value of the Promise<{value,done}> result for the\n // current iteration.\n result.value = unwrapped;\n resolve(result);\n }, function (error) {\n // If a rejected Promise was yielded, throw the rejection back\n // into the async generator function so it can be handled there.\n return invoke("throw", error, resolve, reject);\n });\n }\n }\n\n var previousPromise;\n\n function enqueue(method, arg) {\n function callInvokeWithMethodAndArg() {\n return new PromiseImpl(function (resolve, reject) {\n invoke(method, arg, resolve, reject);\n });\n }\n\n return previousPromise = // If enqueue has been called before, then we want to wait until\n // all previous Promises have been resolved before calling invoke,\n // so that results are always delivered in the correct order. If\n // enqueue has not been called before, then it is important to\n // call invoke immediately, without waiting on a callback to fire,\n // so that the async generator function has the opportunity to do\n // any necessary setup in a predictable way. This predictability\n // is why the Promise constructor synchronously invokes its\n // executor callback, and why async functions synchronously\n // execute code before the first await. Since we implement simple\n // async functions in terms of async generators, it is especially\n // important to get this right, even though it requires care.\n previousPromise ? previousPromise.then(callInvokeWithMethodAndArg, // Avoid propagating failures to Promises returned by later\n // invocations of the iterator.\n callInvokeWithMethodAndArg) : callInvokeWithMethodAndArg();\n } // Define the unified helper method that is used to implement .next,\n // .throw, and .return (see defineIteratorMethods).\n\n\n this._invoke = enqueue;\n }\n\n defineIteratorMethods(AsyncIterator.prototype);\n\n AsyncIterator.prototype[asyncIteratorSymbol] = function () {\n return this;\n };\n\n exports.AsyncIterator = AsyncIterator; // Note that simple async functions are implemented on top of\n // AsyncIterator objects; they just return a Promise for the value of\n // the final result produced by the iterator.\n\n exports.async = function (innerFn, outerFn, self, tryLocsList, PromiseImpl) {\n if (PromiseImpl === void 0) PromiseImpl = Promise;\n var iter = new AsyncIterator(wrap(innerFn, outerFn, self, tryLocsList), PromiseImpl);\n return exports.isGeneratorFunction(outerFn) ? iter // If outerFn is a generator, return the full iterator.\n : iter.next().then(function (result) {\n return result.done ? result.value : iter.next();\n });\n };\n\n function makeInvokeMethod(innerFn, self, context) {\n var state = GenStateSuspendedStart;\n return function invoke(method, arg) {\n if (state === GenStateExecuting) {\n throw new Error("Generator is already running");\n }\n\n if (state === GenStateCompleted) {\n if (method === "throw") {\n throw arg;\n } // Be forgiving, per 25.3.3.3.3 of the spec:\n // https://people.mozilla.org/~jorendorff/es6-draft.html#sec-generatorresume\n\n\n return doneResult();\n }\n\n context.method = method;\n context.arg = arg;\n\n while (true) {\n var delegate = context.delegate;\n\n if (delegate) {\n var delegateResult = maybeInvokeDelegate(delegate, context);\n\n if (delegateResult) {\n if (delegateResult === ContinueSentinel) continue;\n return delegateResult;\n }\n }\n\n if (context.method === "next") {\n // Setting context._sent for legacy support of Babel\'s\n // function.sent implementation.\n context.sent = context._sent = context.arg;\n } else if (context.method === "throw") {\n if (state === GenStateSuspendedStart) {\n state = GenStateCompleted;\n throw context.arg;\n }\n\n context.dispatchException(context.arg);\n } else if (context.method === "return") {\n context.abrupt("return", context.arg);\n }\n\n state = GenStateExecuting;\n var record = tryCatch(innerFn, self, context);\n\n if (record.type === "normal") {\n // If an exception is thrown from innerFn, we leave state ===\n // GenStateExecuting and loop back for another invocation.\n state = context.done ? GenStateCompleted : GenStateSuspendedYield;\n\n if (record.arg === ContinueSentinel) {\n continue;\n }\n\n return {\n value: record.arg,\n done: context.done\n };\n } else if (record.type === "throw") {\n state = GenStateCompleted; // Dispatch the exception by looping back around to the\n // context.dispatchException(context.arg) call above.\n\n context.method = "throw";\n context.arg = record.arg;\n }\n }\n };\n } // Call delegate.iterator[context.method](context.arg) and handle the\n // result, either by returning a { value, done } result from the\n // delegate iterator, or by modifying context.method and context.arg,\n // setting context.delegate to null, and returning the ContinueSentinel.\n\n\n function maybeInvokeDelegate(delegate, context) {\n var method = delegate.iterator[context.method];\n\n if (method === undefined) {\n // A .throw or .return when the delegate iterator has no .throw\n // method always terminates the yield* loop.\n context.delegate = null;\n\n if (context.method === "throw") {\n // Note: ["return"] must be used for ES3 parsing compatibility.\n if (delegate.iterator["return"]) {\n // If the delegate iterator has a return method, give it a\n // chance to clean up.\n context.method = "return";\n context.arg = undefined;\n maybeInvokeDelegate(delegate, context);\n\n if (context.method === "throw") {\n // If maybeInvokeDelegate(context) changed context.method from\n // "return" to "throw", let that override the TypeError below.\n return ContinueSentinel;\n }\n }\n\n context.method = "throw";\n context.arg = new TypeError("The iterator does not provide a \'throw\' method");\n }\n\n return ContinueSentinel;\n }\n\n var record = tryCatch(method, delegate.iterator, context.arg);\n\n if (record.type === "throw") {\n context.method = "throw";\n context.arg = record.arg;\n context.delegate = null;\n return ContinueSentinel;\n }\n\n var info = record.arg;\n\n if (!info) {\n context.method = "throw";\n context.arg = new TypeError("iterator result is not an object");\n context.delegate = null;\n return ContinueSentinel;\n }\n\n if (info.done) {\n // Assign the result of the finished delegate to the temporary\n // variable specified by delegate.resultName (see delegateYield).\n context[delegate.resultName] = info.value; // Resume execution at the desired location (see delegateYield).\n\n context.next = delegate.nextLoc; // If context.method was "throw" but the delegate handled the\n // exception, let the outer generator proceed normally. If\n // context.method was "next", forget context.arg since it has been\n // "consumed" by the delegate iterator. If context.method was\n // "return", allow the original .return call to continue in the\n // outer generator.\n\n if (context.method !== "return") {\n context.method = "next";\n context.arg = undefined;\n }\n } else {\n // Re-yield the result returned by the delegate method.\n return info;\n } // The delegate iterator is finished, so forget it and continue with\n // the outer generator.\n\n\n context.delegate = null;\n return ContinueSentinel;\n } // Define Generator.prototype.{next,throw,return} in terms of the\n // unified ._invoke helper method.\n\n\n defineIteratorMethods(Gp);\n Gp[toStringTagSymbol] = "Generator"; // A Generator should always return itself as the iterator object when the\n // @@iterator function is called on it. Some browsers\' implementations of the\n // iterator prototype chain incorrectly implement this, causing the Generator\n // object to not be returned from this call. This ensures that doesn\'t happen.\n // See https://github.com/facebook/regenerator/issues/274 for more details.\n\n Gp[iteratorSymbol] = function () {\n return this;\n };\n\n Gp.toString = function () {\n return "[object Generator]";\n };\n\n function pushTryEntry(locs) {\n var entry = {\n tryLoc: locs[0]\n };\n\n if (1 in locs) {\n entry.catchLoc = locs[1];\n }\n\n if (2 in locs) {\n entry.finallyLoc = locs[2];\n entry.afterLoc = locs[3];\n }\n\n this.tryEntries.push(entry);\n }\n\n function resetTryEntry(entry) {\n var record = entry.completion || {};\n record.type = "normal";\n delete record.arg;\n entry.completion = record;\n }\n\n function Context(tryLocsList) {\n // The root entry object (effectively a try statement without a catch\n // or a finally block) gives us a place to store values thrown from\n // locations where there is no enclosing try statement.\n this.tryEntries = [{\n tryLoc: "root"\n }];\n tryLocsList.forEach(pushTryEntry, this);\n this.reset(true);\n }\n\n exports.keys = function (object) {\n var keys = [];\n\n for (var key in object) {\n keys.push(key);\n }\n\n keys.reverse(); // Rather than returning an object with a next method, we keep\n // things simple and return the next function itself.\n\n return function next() {\n while (keys.length) {\n var key = keys.pop();\n\n if (key in object) {\n next.value = key;\n next.done = false;\n return next;\n }\n } // To avoid creating an additional object, we just hang the .value\n // and .done properties off the next function object itself. This\n // also ensures that the minifier will not anonymize the function.\n\n\n next.done = true;\n return next;\n };\n };\n\n function values(iterable) {\n if (iterable) {\n var iteratorMethod = iterable[iteratorSymbol];\n\n if (iteratorMethod) {\n return iteratorMethod.call(iterable);\n }\n\n if (typeof iterable.next === "function") {\n return iterable;\n }\n\n if (!isNaN(iterable.length)) {\n var i = -1,\n next = function next() {\n while (++i < iterable.length) {\n if (hasOwn.call(iterable, i)) {\n next.value = iterable[i];\n next.done = false;\n return next;\n }\n }\n\n next.value = undefined;\n next.done = true;\n return next;\n };\n\n return next.next = next;\n }\n } // Return an iterator with no values.\n\n\n return {\n next: doneResult\n };\n }\n\n exports.values = values;\n\n function doneResult() {\n return {\n value: undefined,\n done: true\n };\n }\n\n Context.prototype = {\n constructor: Context,\n reset: function reset(skipTempReset) {\n this.prev = 0;\n this.next = 0; // Resetting context._sent for legacy support of Babel\'s\n // function.sent implementation.\n\n this.sent = this._sent = undefined;\n this.done = false;\n this.delegate = null;\n this.method = "next";\n this.arg = undefined;\n this.tryEntries.forEach(resetTryEntry);\n\n if (!skipTempReset) {\n for (var name in this) {\n // Not sure about the optimal order of these conditions:\n if (name.charAt(0) === "t" && hasOwn.call(this, name) && !isNaN(+name.slice(1))) {\n this[name] = undefined;\n }\n }\n }\n },\n stop: function stop() {\n this.done = true;\n var rootEntry = this.tryEntries[0];\n var rootRecord = rootEntry.completion;\n\n if (rootRecord.type === "throw") {\n throw rootRecord.arg;\n }\n\n return this.rval;\n },\n dispatchException: function dispatchException(exception) {\n if (this.done) {\n throw exception;\n }\n\n var context = this;\n\n function handle(loc, caught) {\n record.type = "throw";\n record.arg = exception;\n context.next = loc;\n\n if (caught) {\n // If the dispatched exception was caught by a catch block,\n // then let that catch block handle the exception normally.\n context.method = "next";\n context.arg = undefined;\n }\n\n return !!caught;\n }\n\n for (var i = this.tryEntries.length - 1; i >= 0; --i) {\n var entry = this.tryEntries[i];\n var record = entry.completion;\n\n if (entry.tryLoc === "root") {\n // Exception thrown outside of any try block that could handle\n // it, so set the completion value of the entire function to\n // throw the exception.\n return handle("end");\n }\n\n if (entry.tryLoc <= this.prev) {\n var hasCatch = hasOwn.call(entry, "catchLoc");\n var hasFinally = hasOwn.call(entry, "finallyLoc");\n\n if (hasCatch && hasFinally) {\n if (this.prev < entry.catchLoc) {\n return handle(entry.catchLoc, true);\n } else if (this.prev < entry.finallyLoc) {\n return handle(entry.finallyLoc);\n }\n } else if (hasCatch) {\n if (this.prev < entry.catchLoc) {\n return handle(entry.catchLoc, true);\n }\n } else if (hasFinally) {\n if (this.prev < entry.finallyLoc) {\n return handle(entry.finallyLoc);\n }\n } else {\n throw new Error("try statement without catch or finally");\n }\n }\n }\n },\n abrupt: function abrupt(type, arg) {\n for (var i = this.tryEntries.length - 1; i >= 0; --i) {\n var entry = this.tryEntries[i];\n\n if (entry.tryLoc <= this.prev && hasOwn.call(entry, "finallyLoc") && this.prev < entry.finallyLoc) {\n var finallyEntry = entry;\n break;\n }\n }\n\n if (finallyEntry && (type === "break" || type === "continue") && finallyEntry.tryLoc <= arg && arg <= finallyEntry.finallyLoc) {\n // Ignore the finally entry if control is not jumping to a\n // location outside the try/catch block.\n finallyEntry = null;\n }\n\n var record = finallyEntry ? finallyEntry.completion : {};\n record.type = type;\n record.arg = arg;\n\n if (finallyEntry) {\n this.method = "next";\n this.next = finallyEntry.finallyLoc;\n return ContinueSentinel;\n }\n\n return this.complete(record);\n },\n complete: function complete(record, afterLoc) {\n if (record.type === "throw") {\n throw record.arg;\n }\n\n if (record.type === "break" || record.type === "continue") {\n this.next = record.arg;\n } else if (record.type === "return") {\n this.rval = this.arg = record.arg;\n this.method = "return";\n this.next = "end";\n } else if (record.type === "normal" && afterLoc) {\n this.next = afterLoc;\n }\n\n return ContinueSentinel;\n },\n finish: function finish(finallyLoc) {\n for (var i = this.tryEntries.length - 1; i >= 0; --i) {\n var entry = this.tryEntries[i];\n\n if (entry.finallyLoc === finallyLoc) {\n this.complete(entry.completion, entry.afterLoc);\n resetTryEntry(entry);\n return ContinueSentinel;\n }\n }\n },\n "catch": function _catch(tryLoc) {\n for (var i = this.tryEntries.length - 1; i >= 0; --i) {\n var entry = this.tryEntries[i];\n\n if (entry.tryLoc === tryLoc) {\n var record = entry.completion;\n\n if (record.type === "throw") {\n var thrown = record.arg;\n resetTryEntry(entry);\n }\n\n return thrown;\n }\n } // The context.catch method must only be called with a location\n // argument that corresponds to a known catch block.\n\n\n throw new Error("illegal catch attempt");\n },\n delegateYield: function delegateYield(iterable, resultName, nextLoc) {\n this.delegate = {\n iterator: values(iterable),\n resultName: resultName,\n nextLoc: nextLoc\n };\n\n if (this.method === "next") {\n // Deliberately forget the last sent value so that we don\'t\n // accidentally pass it on to the delegate.\n this.arg = undefined;\n }\n\n return ContinueSentinel;\n }\n }; // Regardless of whether this script is executing as a CommonJS module\n // or not, return the runtime object so that we can declare the variable\n // regeneratorRuntime in the outer scope, which allows this module to be\n // injected easily by `bin/regenerator --include-runtime script.js`.\n\n return exports;\n}( // If this script is executing as a CommonJS module, use module.exports\n// as the regeneratorRuntime namespace. Otherwise create a new empty\n// object. Either way, the resulting object will be used to initialize\n// the regeneratorRuntime variable at the top of this file.\n( false ? undefined : _typeof(module)) === "object" ? module.exports : {});\n\ntry {\n regeneratorRuntime = runtime;\n} catch (accidentalStrictMode) {\n // This module should not be running in strict mode, so the above\n // assignment should always work unless something is misconfigured. Just\n // in case runtime.js accidentally runs in strict mode, we can escape\n // strict mode using a global Function call. This could conceivably fail\n // if a Content Security Policy forbids using Function, but in that case\n // the proper solution is to fix the accidental strict mode problem. If\n // you\'ve misconfigured your bundler to force strict mode and applied a\n // CSP to forbid Function, and you\'re not willing to fix either of those\n // problems, please detail your unique predicament in a GitHub issue.\n Function("r", "regeneratorRuntime = r")(runtime);\n}\n/* WEBPACK VAR INJECTION */}.call(this, __webpack_require__(/*! ./../webpack/buildin/module.js */ "./node_modules/webpack/buildin/module.js")(module)))//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvcmVnZW5lcmF0b3ItcnVudGltZS9ydW50aW1lLmpzLmpzIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vU05MaWJyYXJ5Ly4vbm9kZV9tb2R1bGVzL3JlZ2VuZXJhdG9yLXJ1bnRpbWUvcnVudGltZS5qcz85NmNmIl0sInNvdXJjZXNDb250ZW50IjpbIlwidXNlIHN0cmljdFwiO1xuLyoqXG4gKiBDb3B5cmlnaHQgKGMpIDIwMTQtcHJlc2VudCwgRmFjZWJvb2ssIEluYy5cbiAqXG4gKiBUaGlzIHNvdXJjZSBjb2RlIGlzIGxpY2Vuc2VkIHVuZGVyIHRoZSBNSVQgbGljZW5zZSBmb3VuZCBpbiB0aGVcbiAqIExJQ0VOU0UgZmlsZSBpbiB0aGUgcm9vdCBkaXJlY3Rvcnkgb2YgdGhpcyBzb3VyY2UgdHJlZS5cbiAqL1xudmFyIHJ1bnRpbWUgPSAoZnVuY3Rpb24gKGV4cG9ydHMpIHtcbiAgICBcInVzZSBzdHJpY3RcIjtcbiAgICB2YXIgT3AgPSBPYmplY3QucHJvdG90eXBlO1xuICAgIHZhciBoYXNPd24gPSBPcC5oYXNPd25Qcm9wZXJ0eTtcbiAgICB2YXIgdW5kZWZpbmVkOyAvLyBNb3JlIGNvbXByZXNzaWJsZSB0aGFuIHZvaWQgMC5cbiAgICB2YXIgJFN5bWJvbCA9IHR5cGVvZiBTeW1ib2wgPT09IFwiZnVuY3Rpb25cIiA/IFN5bWJvbCA6IHt9O1xuICAgIHZhciBpdGVyYXRvclN5bWJvbCA9ICRTeW1ib2wuaXRlcmF0b3IgfHwgXCJAQGl0ZXJhdG9yXCI7XG4gICAgdmFyIGFzeW5jSXRlcmF0b3JTeW1ib2wgPSAkU3ltYm9sLmFzeW5jSXRlcmF0b3IgfHwgXCJAQGFzeW5jSXRlcmF0b3JcIjtcbiAgICB2YXIgdG9TdHJpbmdUYWdTeW1ib2wgPSAkU3ltYm9sLnRvU3RyaW5nVGFnIHx8IFwiQEB0b1N0cmluZ1RhZ1wiO1xuICAgIGZ1bmN0aW9uIHdyYXAoaW5uZXJGbiwgb3V0ZXJGbiwgc2VsZiwgdHJ5TG9jc0xpc3QpIHtcbiAgICAgICAgLy8gSWYgb3V0ZXJGbiBwcm92aWRlZCBhbmQgb3V0ZXJGbi5wcm90b3R5cGUgaXMgYSBHZW5lcmF0b3IsIHRoZW4gb3V0ZXJGbi5wcm90b3R5cGUgaW5zdGFuY2VvZiBHZW5lcmF0b3IuXG4gICAgICAgIHZhciBwcm90b0dlbmVyYXRvciA9IG91dGVyRm4gJiYgb3V0ZXJGbi5wcm90b3R5cGUgaW5zdGFuY2VvZiBHZW5lcmF0b3IgPyBvdXRlckZuIDogR2VuZXJhdG9yO1xuICAgICAgICB2YXIgZ2VuZXJhdG9yID0gT2JqZWN0LmNyZWF0ZShwcm90b0dlbmVyYXRvci5wcm90b3R5cGUpO1xuICAgICAgICB2YXIgY29udGV4dCA9IG5ldyBDb250ZXh0KHRyeUxvY3NMaXN0IHx8IFtdKTtcbiAgICAgICAgLy8gVGhlIC5faW52b2tlIG1ldGhvZCB1bmlmaWVzIHRoZSBpbXBsZW1lbnRhdGlvbnMgb2YgdGhlIC5uZXh0LFxuICAgICAgICAvLyAudGhyb3csIGFuZCAucmV0dXJuIG1ldGhvZHMuXG4gICAgICAgIGdlbmVyYXRvci5faW52b2tlID0gbWFrZUludm9rZU1ldGhvZChpbm5lckZuLCBzZWxmLCBjb250ZXh0KTtcbiAgICAgICAgcmV0dXJuIGdlbmVyYXRvcjtcbiAgICB9XG4gICAgZXhwb3J0cy53cmFwID0gd3JhcDtcbiAgICAvLyBUcnkvY2F0Y2ggaGVscGVyIHRvIG1pbmltaXplIGRlb3B0aW1pemF0aW9ucy4gUmV0dXJucyBhIGNvbXBsZXRpb25cbiAgICAvLyByZWNvcmQgbGlrZSBjb250ZXh0LnRyeUVudHJpZXNbaV0uY29tcGxldGlvbi4gVGhpcyBpbnRlcmZhY2UgY291bGRcbiAgICAvLyBoYXZlIGJlZW4gKGFuZCB3YXMgcHJldmlvdXNseSkgZGVzaWduZWQgdG8gdGFrZSBhIGNsb3N1cmUgdG8gYmVcbiAgICAvLyBpbnZva2VkIHdpdGhvdXQgYXJndW1lbnRzLCBidXQgaW4gYWxsIHRoZSBjYXNlcyB3ZSBjYXJlIGFib3V0IHdlXG4gICAgLy8gYWxyZWFkeSBoYXZlIGFuIGV4aXN0aW5nIG1ldGhvZCB3ZSB3YW50IHRvIGNhbGwsIHNvIHRoZXJlJ3Mgbm8gbmVlZFxuICAgIC8vIHRvIGNyZWF0ZSBhIG5ldyBmdW5jdGlvbiBvYmplY3QuIFdlIGNhbiBldmVuIGdldCBhd2F5IHdpdGggYXNzdW1pbmdcbiAgICAvLyB0aGUgbWV0aG9kIHRha2VzIGV4YWN0bHkgb25lIGFyZ3VtZW50LCBzaW5jZSB0aGF0IGhhcHBlbnMgdG8gYmUgdHJ1ZVxuICAgIC8vIGluIGV2ZXJ5IGNhc2UsIHNvIHdlIGRvbid0IGhhdmUgdG8gdG91Y2ggdGhlIGFyZ3VtZW50cyBvYmplY3QuIFRoZVxuICAgIC8vIG9ubHkgYWRkaXRpb25hbCBhbGxvY2F0aW9uIHJlcXVpcmVkIGlzIHRoZSBjb21wbGV0aW9uIHJlY29yZCwgd2hpY2hcbiAgICAvLyBoYXMgYSBzdGFibGUgc2hhcGUgYW5kIHNvIGhvcGVmdWxseSBzaG91bGQgYmUgY2hlYXAgdG8gYWxsb2NhdGUuXG4gICAgZnVuY3Rpb24gdHJ5Q2F0Y2goZm4sIG9iaiwgYXJnKSB7XG4gICAgICAgIHRyeSB7XG4gICAgICAgICAgICByZXR1cm4geyB0eXBlOiBcIm5vcm1hbFwiLCBhcmc6IGZuLmNhbGwob2JqLCBhcmcpIH07XG4gICAgICAgIH1cbiAgICAgICAgY2F0Y2ggKGVycikge1xuICAgICAgICAgICAgcmV0dXJuIHsgdHlwZTogXCJ0aHJvd1wiLCBhcmc6IGVyciB9O1xuICAgICAgICB9XG4gICAgfVxuICAgIHZhciBHZW5TdGF0ZVN1c3BlbmRlZFN0YXJ0ID0gXCJzdXNwZW5kZWRTdGFydFwiO1xuICAgIHZhciBHZW5TdGF0ZVN1c3BlbmRlZFlpZWxkID0gXCJzdXNwZW5kZWRZaWVsZFwiO1xuICAgIHZhciBHZW5TdGF0ZUV4ZWN1dGluZyA9IFwiZXhlY3V0aW5nXCI7XG4gICAgdmFyIEdlblN0YXRlQ29tcGxldGVkID0gXCJjb21wbGV0ZWRcIjtcbiAgICAvLyBSZXR1cm5pbmcgdGhpcyBvYmplY3QgZnJvbSB0aGUgaW5uZXJGbiBoYXMgdGhlIHNhbWUgZWZmZWN0IGFzXG4gICAgLy8gYnJlYWtpbmcgb3V0IG9mIHRoZSBkaXNwYXRjaCBzd2l0Y2ggc3RhdGVtZW50LlxuICAgIHZhciBDb250aW51ZVNlbnRpbmVsID0ge307XG4gICAgLy8gRHVtbXkgY29uc3RydWN0b3IgZnVuY3Rpb25zIHRoYXQgd2UgdXNlIGFzIHRoZSAuY29uc3RydWN0b3IgYW5kXG4gICAgLy8gLmNvbnN0cnVjdG9yLnByb3RvdHlwZSBwcm9wZXJ0aWVzIGZvciBmdW5jdGlvbnMgdGhhdCByZXR1cm4gR2VuZXJhdG9yXG4gICAgLy8gb2JqZWN0cy4gRm9yIGZ1bGwgc3BlYyBjb21wbGlhbmNlLCB5b3UgbWF5IHdpc2ggdG8gY29uZmlndXJlIHlvdXJcbiAgICAvLyBtaW5pZmllciBub3QgdG8gbWFuZ2xlIHRoZSBuYW1lcyBvZiB0aGVzZSB0d28gZnVuY3Rpb25zLlxuICAgIGZ1bmN0aW9uIEdlbmVyYXRvcigpIHsgfVxuICAgIGZ1bmN0aW9uIEdlbmVyYXRvckZ1bmN0aW9uKCkgeyB9XG4gICAgZnVuY3Rpb24gR2VuZXJhdG9yRnVuY3Rpb25Qcm90b3R5cGUoKSB7IH1cbiAgICAvLyBUaGlzIGlzIGEgcG9seWZpbGwgZm9yICVJdGVyYXRvclByb3RvdHlwZSUgZm9yIGVudmlyb25tZW50cyB0aGF0XG4gICAgLy8gZG9uJ3QgbmF0aXZlbHkgc3VwcG9ydCBpdC5cbiAgICB2YXIgSXRlcmF0b3JQcm90b3R5cGUgPSB7fTtcbiAgICBJdGVyYXRvclByb3RvdHlwZVtpdGVyYXRvclN5bWJvbF0gPSBmdW5jdGlvbiAoKSB7XG4gICAgICAgIHJldHVybiB0aGlzO1xuICAgIH07XG4gICAgdmFyIGdldFByb3RvID0gT2JqZWN0LmdldFByb3RvdHlwZU9mO1xuICAgIHZhciBOYXRpdmVJdGVyYXRvclByb3RvdHlwZSA9IGdldFByb3RvICYmIGdldFByb3RvKGdldFByb3RvKHZhbHVlcyhbXSkpKTtcbiAgICBpZiAoTmF0aXZlSXRlcmF0b3JQcm90b3R5cGUgJiZcbiAgICAgICAgTmF0aXZlSXRlcmF0b3JQcm90b3R5cGUgIT09IE9wICYmXG4gICAgICAgIGhhc093bi5jYWxsKE5hdGl2ZUl0ZXJhdG9yUHJvdG90eXBlLCBpdGVyYXRvclN5bWJvbCkpIHtcbiAgICAgICAgLy8gVGhpcyBlbnZpcm9ubWVudCBoYXMgYSBuYXRpdmUgJUl0ZXJhdG9yUHJvdG90eXBlJTsgdXNlIGl0IGluc3RlYWRcbiAgICAgICAgLy8gb2YgdGhlIHBvbHlmaWxsLlxuICAgICAgICBJdGVyYXRvclByb3RvdHlwZSA9IE5hdGl2ZUl0ZXJhdG9yUHJvdG90eXBlO1xuICAgIH1cbiAgICB2YXIgR3AgPSBHZW5lcmF0b3JGdW5jdGlvblByb3RvdHlwZS5wcm90b3R5cGUgPVxuICAgICAgICBHZW5lcmF0b3IucHJvdG90eXBlID0gT2JqZWN0LmNyZWF0ZShJdGVyYXRvclByb3RvdHlwZSk7XG4gICAgR2VuZXJhdG9yRnVuY3Rpb24ucHJvdG90eXBlID0gR3AuY29uc3RydWN0b3IgPSBHZW5lcmF0b3JGdW5jdGlvblByb3RvdHlwZTtcbiAgICBHZW5lcmF0b3JGdW5jdGlvblByb3RvdHlwZS5jb25zdHJ1Y3RvciA9IEdlbmVyYXRvckZ1bmN0aW9uO1xuICAgIEdlbmVyYXRvckZ1bmN0aW9uUHJvdG90eXBlW3RvU3RyaW5nVGFnU3ltYm9sXSA9XG4gICAgICAgIEdlbmVyYXRvckZ1bmN0aW9uLmRpc3BsYXlOYW1lID0gXCJHZW5lcmF0b3JGdW5jdGlvblwiO1xuICAgIC8vIEhlbHBlciBmb3IgZGVmaW5pbmcgdGhlIC5uZXh0LCAudGhyb3csIGFuZCAucmV0dXJuIG1ldGhvZHMgb2YgdGhlXG4gICAgLy8gSXRlcmF0b3IgaW50ZXJmYWNlIGluIHRlcm1zIG9mIGEgc2luZ2xlIC5faW52b2tlIG1ldGhvZC5cbiAgICBmdW5jdGlvbiBkZWZpbmVJdGVyYXRvck1ldGhvZHMocHJvdG90eXBlKSB7XG4gICAgICAgIFtcIm5leHRcIiwgXCJ0aHJvd1wiLCBcInJldHVyblwiXS5mb3JFYWNoKGZ1bmN0aW9uIChtZXRob2QpIHtcbiAgICAgICAgICAgIHByb3RvdHlwZVttZXRob2RdID0gZnVuY3Rpb24gKGFyZykge1xuICAgICAgICAgICAgICAgIHJldHVybiB0aGlzLl9pbnZva2UobWV0aG9kLCBhcmcpO1xuICAgICAgICAgICAgfTtcbiAgICAgICAgfSk7XG4gICAgfVxuICAgIGV4cG9ydHMuaXNHZW5lcmF0b3JGdW5jdGlvbiA9IGZ1bmN0aW9uIChnZW5GdW4pIHtcbiAgICAgICAgdmFyIGN0b3IgPSB0eXBlb2YgZ2VuRnVuID09PSBcImZ1bmN0aW9uXCIgJiYgZ2VuRnVuLmNvbnN0cnVjdG9yO1xuICAgICAgICByZXR1cm4gY3RvclxuICAgICAgICAgICAgPyBjdG9yID09PSBHZW5lcmF0b3JGdW5jdGlvbiB8fFxuICAgICAgICAgICAgICAgIC8vIEZvciB0aGUgbmF0aXZlIEdlbmVyYXRvckZ1bmN0aW9uIGNvbnN0cnVjdG9yLCB0aGUgYmVzdCB3ZSBjYW5cbiAgICAgICAgICAgICAgICAvLyBkbyBpcyB0byBjaGVjayBpdHMgLm5hbWUgcHJvcGVydHkuXG4gICAgICAgICAgICAgICAgKGN0b3IuZGlzcGxheU5hbWUgfHwgY3Rvci5uYW1lKSA9PT0gXCJHZW5lcmF0b3JGdW5jdGlvblwiXG4gICAgICAgICAgICA6IGZhbHNlO1xuICAgIH07XG4gICAgZXhwb3J0cy5tYXJrID0gZnVuY3Rpb24gKGdlbkZ1bikge1xuICAgICAgICBpZiAoT2JqZWN0LnNldFByb3RvdHlwZU9mKSB7XG4gICAgICAgICAgICBPYmplY3Quc2V0UHJvdG90eXBlT2YoZ2VuRnVuLCBHZW5lcmF0b3JGdW5jdGlvblByb3RvdHlwZSk7XG4gICAgICAgIH1cbiAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICBnZW5GdW4uX19wcm90b19fID0gR2VuZXJhdG9yRnVuY3Rpb25Qcm90b3R5cGU7XG4gICAgICAgICAgICBpZiAoISh0b1N0cmluZ1RhZ1N5bWJvbCBpbiBnZW5GdW4pKSB7XG4gICAgICAgICAgICAgICAgZ2VuRnVuW3RvU3RyaW5nVGFnU3ltYm9sXSA9IFwiR2VuZXJhdG9yRnVuY3Rpb25cIjtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICBnZW5GdW4ucHJvdG90eXBlID0gT2JqZWN0LmNyZWF0ZShHcCk7XG4gICAgICAgIHJldHVybiBnZW5GdW47XG4gICAgfTtcbiAgICAvLyBXaXRoaW4gdGhlIGJvZHkgb2YgYW55IGFzeW5jIGZ1bmN0aW9uLCBgYXdhaXQgeGAgaXMgdHJhbnNmb3JtZWQgdG9cbiAgICAvLyBgeWllbGQgcmVnZW5lcmF0b3JSdW50aW1lLmF3cmFwKHgpYCwgc28gdGhhdCB0aGUgcnVudGltZSBjYW4gdGVzdFxuICAgIC8vIGBoYXNPd24uY2FsbCh2YWx1ZSwgXCJfX2F3YWl0XCIpYCB0byBkZXRlcm1pbmUgaWYgdGhlIHlpZWxkZWQgdmFsdWUgaXNcbiAgICAvLyBtZWFudCB0byBiZSBhd2FpdGVkLlxuICAgIGV4cG9ydHMuYXdyYXAgPSBmdW5jdGlvbiAoYXJnKSB7XG4gICAgICAgIHJldHVybiB7IF9fYXdhaXQ6IGFyZyB9O1xuICAgIH07XG4gICAgZnVuY3Rpb24gQXN5bmNJdGVyYXRvcihnZW5lcmF0b3IsIFByb21pc2VJbXBsKSB7XG4gICAgICAgIGZ1bmN0aW9uIGludm9rZShtZXRob2QsIGFyZywgcmVzb2x2ZSwgcmVqZWN0KSB7XG4gICAgICAgICAgICB2YXIgcmVjb3JkID0gdHJ5Q2F0Y2goZ2VuZXJhdG9yW21ldGhvZF0sIGdlbmVyYXRvciwgYXJnKTtcbiAgICAgICAgICAgIGlmIChyZWNvcmQudHlwZSA9PT0gXCJ0aHJvd1wiKSB7XG4gICAgICAgICAgICAgICAgcmVqZWN0KHJlY29yZC5hcmcpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICAgICAgdmFyIHJlc3VsdCA9IHJlY29yZC5hcmc7XG4gICAgICAgICAgICAgICAgdmFyIHZhbHVlID0gcmVzdWx0LnZhbHVlO1xuICAgICAgICAgICAgICAgIGlmICh2YWx1ZSAmJlxuICAgICAgICAgICAgICAgICAgICB0eXBlb2YgdmFsdWUgPT09IFwib2JqZWN0XCIgJiZcbiAgICAgICAgICAgICAgICAgICAgaGFzT3duLmNhbGwodmFsdWUsIFwiX19hd2FpdFwiKSkge1xuICAgICAgICAgICAgICAgICAgICByZXR1cm4gUHJvbWlzZUltcGwucmVzb2x2ZSh2YWx1ZS5fX2F3YWl0KS50aGVuKGZ1bmN0aW9uICh2YWx1ZSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgaW52b2tlKFwibmV4dFwiLCB2YWx1ZSwgcmVzb2x2ZSwgcmVqZWN0KTtcbiAgICAgICAgICAgICAgICAgICAgfSwgZnVuY3Rpb24gKGVycikge1xuICAgICAgICAgICAgICAgICAgICAgICAgaW52b2tlKFwidGhyb3dcIiwgZXJyLCByZXNvbHZlLCByZWplY3QpO1xuICAgICAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgcmV0dXJuIFByb21pc2VJbXBsLnJlc29sdmUodmFsdWUpLnRoZW4oZnVuY3Rpb24gKHVud3JhcHBlZCkge1xuICAgICAgICAgICAgICAgICAgICAvLyBXaGVuIGEgeWllbGRlZCBQcm9taXNlIGlzIHJlc29sdmVkLCBpdHMgZmluYWwgdmFsdWUgYmVjb21lc1xuICAgICAgICAgICAgICAgICAgICAvLyB0aGUgLnZhbHVlIG9mIHRoZSBQcm9taXNlPHt2YWx1ZSxkb25lfT4gcmVzdWx0IGZvciB0aGVcbiAgICAgICAgICAgICAgICAgICAgLy8gY3VycmVudCBpdGVyYXRpb24uXG4gICAgICAgICAgICAgICAgICAgIHJlc3VsdC52YWx1ZSA9IHVud3JhcHBlZDtcbiAgICAgICAgICAgICAgICAgICAgcmVzb2x2ZShyZXN1bHQpO1xuICAgICAgICAgICAgICAgIH0sIGZ1bmN0aW9uIChlcnJvcikge1xuICAgICAgICAgICAgICAgICAgICAvLyBJZiBhIHJlamVjdGVkIFByb21pc2Ugd2FzIHlpZWxkZWQsIHRocm93IHRoZSByZWplY3Rpb24gYmFja1xuICAgICAgICAgICAgICAgICAgICAvLyBpbnRvIHRoZSBhc3luYyBnZW5lcmF0b3IgZnVuY3Rpb24gc28gaXQgY2FuIGJlIGhhbmRsZWQgdGhlcmUuXG4gICAgICAgICAgICAgICAgICAgIHJldHVybiBpbnZva2UoXCJ0aHJvd1wiLCBlcnJvciwgcmVzb2x2ZSwgcmVqZWN0KTtcbiAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICB2YXIgcHJldmlvdXNQcm9taXNlO1xuICAgICAgICBmdW5jdGlvbiBlbnF1ZXVlKG1ldGhvZCwgYXJnKSB7XG4gICAgICAgICAgICBmdW5jdGlvbiBjYWxsSW52b2tlV2l0aE1ldGhvZEFuZEFyZygpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gbmV3IFByb21pc2VJbXBsKGZ1bmN0aW9uIChyZXNvbHZlLCByZWplY3QpIHtcbiAgICAgICAgICAgICAgICAgICAgaW52b2tlKG1ldGhvZCwgYXJnLCByZXNvbHZlLCByZWplY3QpO1xuICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgcmV0dXJuIHByZXZpb3VzUHJvbWlzZSA9XG4gICAgICAgICAgICAgICAgLy8gSWYgZW5xdWV1ZSBoYXMgYmVlbiBjYWxsZWQgYmVmb3JlLCB0aGVuIHdlIHdhbnQgdG8gd2FpdCB1bnRpbFxuICAgICAgICAgICAgICAgIC8vIGFsbCBwcmV2aW91cyBQcm9taXNlcyBoYXZlIGJlZW4gcmVzb2x2ZWQgYmVmb3JlIGNhbGxpbmcgaW52b2tlLFxuICAgICAgICAgICAgICAgIC8vIHNvIHRoYXQgcmVzdWx0cyBhcmUgYWx3YXlzIGRlbGl2ZXJlZCBpbiB0aGUgY29ycmVjdCBvcmRlci4gSWZcbiAgICAgICAgICAgICAgICAvLyBlbnF1ZXVlIGhhcyBub3QgYmVlbiBjYWxsZWQgYmVmb3JlLCB0aGVuIGl0IGlzIGltcG9ydGFudCB0b1xuICAgICAgICAgICAgICAgIC8vIGNhbGwgaW52b2tlIGltbWVkaWF0ZWx5LCB3aXRob3V0IHdhaXRpbmcgb24gYSBjYWxsYmFjayB0byBmaXJlLFxuICAgICAgICAgICAgICAgIC8vIHNvIHRoYXQgdGhlIGFzeW5jIGdlbmVyYXRvciBmdW5jdGlvbiBoYXMgdGhlIG9wcG9ydHVuaXR5IHRvIGRvXG4gICAgICAgICAgICAgICAgLy8gYW55IG5lY2Vzc2FyeSBzZXR1cCBpbiBhIHByZWRpY3RhYmxlIHdheS4gVGhpcyBwcmVkaWN0YWJpbGl0eVxuICAgICAgICAgICAgICAgIC8vIGlzIHdoeSB0aGUgUHJvbWlzZSBjb25zdHJ1Y3RvciBzeW5jaHJvbm91c2x5IGludm9rZXMgaXRzXG4gICAgICAgICAgICAgICAgLy8gZXhlY3V0b3IgY2FsbGJhY2ssIGFuZCB3aHkgYXN5bmMgZnVuY3Rpb25zIHN5bmNocm9ub3VzbHlcbiAgICAgICAgICAgICAgICAvLyBleGVjdXRlIGNvZGUgYmVmb3JlIHRoZSBmaXJzdCBhd2FpdC4gU2luY2Ugd2UgaW1wbGVtZW50IHNpbXBsZVxuICAgICAgICAgICAgICAgIC8vIGFzeW5jIGZ1bmN0aW9ucyBpbiB0ZXJtcyBvZiBhc3luYyBnZW5lcmF0b3JzLCBpdCBpcyBlc3BlY2lhbGx5XG4gICAgICAgICAgICAgICAgLy8gaW1wb3J0YW50IHRvIGdldCB0aGlzIHJpZ2h0LCBldmVuIHRob3VnaCBpdCByZXF1aXJlcyBjYXJlLlxuICAgICAgICAgICAgICAgIHByZXZpb3VzUHJvbWlzZSA/IHByZXZpb3VzUHJvbWlzZS50aGVuKGNhbGxJbnZva2VXaXRoTWV0aG9kQW5kQXJnLCBcbiAgICAgICAgICAgICAgICAvLyBBdm9pZCBwcm9wYWdhdGluZyBmYWlsdXJlcyB0byBQcm9taXNlcyByZXR1cm5lZCBieSBsYXRlclxuICAgICAgICAgICAgICAgIC8vIGludm9jYXRpb25zIG9mIHRoZSBpdGVyYXRvci5cbiAgICAgICAgICAgICAgICBjYWxsSW52b2tlV2l0aE1ldGhvZEFuZEFyZykgOiBjYWxsSW52b2tlV2l0aE1ldGhvZEFuZEFyZygpO1xuICAgICAgICB9XG4gICAgICAgIC8vIERlZmluZSB0aGUgdW5pZmllZCBoZWxwZXIgbWV0aG9kIHRoYXQgaXMgdXNlZCB0byBpbXBsZW1lbnQgLm5leHQsXG4gICAgICAgIC8vIC50aHJvdywgYW5kIC5yZXR1cm4gKHNlZSBkZWZpbmVJdGVyYXRvck1ldGhvZHMpLlxuICAgICAgICB0aGlzLl9pbnZva2UgPSBlbnF1ZXVlO1xuICAgIH1cbiAgICBkZWZpbmVJdGVyYXRvck1ldGhvZHMoQXN5bmNJdGVyYXRvci5wcm90b3R5cGUpO1xuICAgIEFzeW5jSXRlcmF0b3IucHJvdG90eXBlW2FzeW5jSXRlcmF0b3JTeW1ib2xdID0gZnVuY3Rpb24gKCkge1xuICAgICAgICByZXR1cm4gdGhpcztcbiAgICB9O1xuICAgIGV4cG9ydHMuQXN5bmNJdGVyYXRvciA9IEFzeW5jSXRlcmF0b3I7XG4gICAgLy8gTm90ZSB0aGF0IHNpbXBsZSBhc3luYyBmdW5jdGlvbnMgYXJlIGltcGxlbWVudGVkIG9uIHRvcCBvZlxuICAgIC8vIEFzeW5jSXRlcmF0b3Igb2JqZWN0czsgdGhleSBqdXN0IHJldHVybiBhIFByb21pc2UgZm9yIHRoZSB2YWx1ZSBvZlxuICAgIC8vIHRoZSBmaW5hbCByZXN1bHQgcHJvZHVjZWQgYnkgdGhlIGl0ZXJhdG9yLlxuICAgIGV4cG9ydHMuYXN5bmMgPSBmdW5jdGlvbiAoaW5uZXJGbiwgb3V0ZXJGbiwgc2VsZiwgdHJ5TG9jc0xpc3QsIFByb21pc2VJbXBsKSB7XG4gICAgICAgIGlmIChQcm9taXNlSW1wbCA9PT0gdm9pZCAwKVxuICAgICAgICAgICAgUHJvbWlzZUltcGwgPSBQcm9taXNlO1xuICAgICAgICB2YXIgaXRlciA9IG5ldyBBc3luY0l0ZXJhdG9yKHdyYXAoaW5uZXJGbiwgb3V0ZXJGbiwgc2VsZiwgdHJ5TG9jc0xpc3QpLCBQcm9taXNlSW1wbCk7XG4gICAgICAgIHJldHVybiBleHBvcnRzLmlzR2VuZXJhdG9yRnVuY3Rpb24ob3V0ZXJGbilcbiAgICAgICAgICAgID8gaXRlciAvLyBJZiBvdXRlckZuIGlzIGEgZ2VuZXJhdG9yLCByZXR1cm4gdGhlIGZ1bGwgaXRlcmF0b3IuXG4gICAgICAgICAgICA6IGl0ZXIubmV4dCgpLnRoZW4oZnVuY3Rpb24gKHJlc3VsdCkge1xuICAgICAgICAgICAgICAgIHJldHVybiByZXN1bHQuZG9uZSA/IHJlc3VsdC52YWx1ZSA6IGl0ZXIubmV4dCgpO1xuICAgICAgICAgICAgfSk7XG4gICAgfTtcbiAgICBmdW5jdGlvbiBtYWtlSW52b2tlTWV0aG9kKGlubmVyRm4sIHNlbGYsIGNvbnRleHQpIHtcbiAgICAgICAgdmFyIHN0YXRlID0gR2VuU3RhdGVTdXNwZW5kZWRTdGFydDtcbiAgICAgICAgcmV0dXJuIGZ1bmN0aW9uIGludm9rZShtZXRob2QsIGFyZykge1xuICAgICAgICAgICAgaWYgKHN0YXRlID09PSBHZW5TdGF0ZUV4ZWN1dGluZykge1xuICAgICAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcihcIkdlbmVyYXRvciBpcyBhbHJlYWR5IHJ1bm5pbmdcIik7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBpZiAoc3RhdGUgPT09IEdlblN0YXRlQ29tcGxldGVkKSB7XG4gICAgICAgICAgICAgICAgaWYgKG1ldGhvZCA9PT0gXCJ0aHJvd1wiKSB7XG4gICAgICAgICAgICAgICAgICAgIHRocm93IGFyZztcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgLy8gQmUgZm9yZ2l2aW5nLCBwZXIgMjUuMy4zLjMuMyBvZiB0aGUgc3BlYzpcbiAgICAgICAgICAgICAgICAvLyBodHRwczovL3Blb3BsZS5tb3ppbGxhLm9yZy9+am9yZW5kb3JmZi9lczYtZHJhZnQuaHRtbCNzZWMtZ2VuZXJhdG9ycmVzdW1lXG4gICAgICAgICAgICAgICAgcmV0dXJuIGRvbmVSZXN1bHQoKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGNvbnRleHQubWV0aG9kID0gbWV0aG9kO1xuICAgICAgICAgICAgY29udGV4dC5hcmcgPSBhcmc7XG4gICAgICAgICAgICB3aGlsZSAodHJ1ZSkge1xuICAgICAgICAgICAgICAgIHZhciBkZWxlZ2F0ZSA9IGNvbnRleHQuZGVsZWdhdGU7XG4gICAgICAgICAgICAgICAgaWYgKGRlbGVnYXRlKSB7XG4gICAgICAgICAgICAgICAgICAgIHZhciBkZWxlZ2F0ZVJlc3VsdCA9IG1heWJlSW52b2tlRGVsZWdhdGUoZGVsZWdhdGUsIGNvbnRleHQpO1xuICAgICAgICAgICAgICAgICAgICBpZiAoZGVsZWdhdGVSZXN1bHQpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGlmIChkZWxlZ2F0ZVJlc3VsdCA9PT0gQ29udGludWVTZW50aW5lbClcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb250aW51ZTtcbiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBkZWxlZ2F0ZVJlc3VsdDtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBpZiAoY29udGV4dC5tZXRob2QgPT09IFwibmV4dFwiKSB7XG4gICAgICAgICAgICAgICAgICAgIC8vIFNldHRpbmcgY29udGV4dC5fc2VudCBmb3IgbGVnYWN5IHN1cHBvcnQgb2YgQmFiZWwnc1xuICAgICAgICAgICAgICAgICAgICAvLyBmdW5jdGlvbi5zZW50IGltcGxlbWVudGF0aW9uLlxuICAgICAgICAgICAgICAgICAgICBjb250ZXh0LnNlbnQgPSBjb250ZXh0Ll9zZW50ID0gY29udGV4dC5hcmc7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGVsc2UgaWYgKGNvbnRleHQubWV0aG9kID09PSBcInRocm93XCIpIHtcbiAgICAgICAgICAgICAgICAgICAgaWYgKHN0YXRlID09PSBHZW5TdGF0ZVN1c3BlbmRlZFN0YXJ0KSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBzdGF0ZSA9IEdlblN0YXRlQ29tcGxldGVkO1xuICAgICAgICAgICAgICAgICAgICAgICAgdGhyb3cgY29udGV4dC5hcmc7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgY29udGV4dC5kaXNwYXRjaEV4Y2VwdGlvbihjb250ZXh0LmFyZyk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGVsc2UgaWYgKGNvbnRleHQubWV0aG9kID09PSBcInJldHVyblwiKSB7XG4gICAgICAgICAgICAgICAgICAgIGNvbnRleHQuYWJydXB0KFwicmV0dXJuXCIsIGNvbnRleHQuYXJnKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgc3RhdGUgPSBHZW5TdGF0ZUV4ZWN1dGluZztcbiAgICAgICAgICAgICAgICB2YXIgcmVjb3JkID0gdHJ5Q2F0Y2goaW5uZXJGbiwgc2VsZiwgY29udGV4dCk7XG4gICAgICAgICAgICAgICAgaWYgKHJlY29yZC50eXBlID09PSBcIm5vcm1hbFwiKSB7XG4gICAgICAgICAgICAgICAgICAgIC8vIElmIGFuIGV4Y2VwdGlvbiBpcyB0aHJvd24gZnJvbSBpbm5lckZuLCB3ZSBsZWF2ZSBzdGF0ZSA9PT1cbiAgICAgICAgICAgICAgICAgICAgLy8gR2VuU3RhdGVFeGVjdXRpbmcgYW5kIGxvb3AgYmFjayBmb3IgYW5vdGhlciBpbnZvY2F0aW9uLlxuICAgICAgICAgICAgICAgICAgICBzdGF0ZSA9IGNvbnRleHQuZG9uZVxuICAgICAgICAgICAgICAgICAgICAgICAgPyBHZW5TdGF0ZUNvbXBsZXRlZFxuICAgICAgICAgICAgICAgICAgICAgICAgOiBHZW5TdGF0ZVN1c3BlbmRlZFlpZWxkO1xuICAgICAgICAgICAgICAgICAgICBpZiAocmVjb3JkLmFyZyA9PT0gQ29udGludWVTZW50aW5lbCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgY29udGludWU7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHZhbHVlOiByZWNvcmQuYXJnLFxuICAgICAgICAgICAgICAgICAgICAgICAgZG9uZTogY29udGV4dC5kb25lXG4gICAgICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGVsc2UgaWYgKHJlY29yZC50eXBlID09PSBcInRocm93XCIpIHtcbiAgICAgICAgICAgICAgICAgICAgc3RhdGUgPSBHZW5TdGF0ZUNvbXBsZXRlZDtcbiAgICAgICAgICAgICAgICAgICAgLy8gRGlzcGF0Y2ggdGhlIGV4Y2VwdGlvbiBieSBsb29waW5nIGJhY2sgYXJvdW5kIHRvIHRoZVxuICAgICAgICAgICAgICAgICAgICAvLyBjb250ZXh0LmRpc3BhdGNoRXhjZXB0aW9uKGNvbnRleHQuYXJnKSBjYWxsIGFib3ZlLlxuICAgICAgICAgICAgICAgICAgICBjb250ZXh0Lm1ldGhvZCA9IFwidGhyb3dcIjtcbiAgICAgICAgICAgICAgICAgICAgY29udGV4dC5hcmcgPSByZWNvcmQuYXJnO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgfTtcbiAgICB9XG4gICAgLy8gQ2FsbCBkZWxlZ2F0ZS5pdGVyYXRvcltjb250ZXh0Lm1ldGhvZF0oY29udGV4dC5hcmcpIGFuZCBoYW5kbGUgdGhlXG4gICAgLy8gcmVzdWx0LCBlaXRoZXIgYnkgcmV0dXJuaW5nIGEgeyB2YWx1ZSwgZG9uZSB9IHJlc3VsdCBmcm9tIHRoZVxuICAgIC8vIGRlbGVnYXRlIGl0ZXJhdG9yLCBvciBieSBtb2RpZnlpbmcgY29udGV4dC5tZXRob2QgYW5kIGNvbnRleHQuYXJnLFxuICAgIC8vIHNldHRpbmcgY29udGV4dC5kZWxlZ2F0ZSB0byBudWxsLCBhbmQgcmV0dXJuaW5nIHRoZSBDb250aW51ZVNlbnRpbmVsLlxuICAgIGZ1bmN0aW9uIG1heWJlSW52b2tlRGVsZWdhdGUoZGVsZWdhdGUsIGNvbnRleHQpIHtcbiAgICAgICAgdmFyIG1ldGhvZCA9IGRlbGVnYXRlLml0ZXJhdG9yW2NvbnRleHQubWV0aG9kXTtcbiAgICAgICAgaWYgKG1ldGhvZCA9PT0gdW5kZWZpbmVkKSB7XG4gICAgICAgICAgICAvLyBBIC50aHJvdyBvciAucmV0dXJuIHdoZW4gdGhlIGRlbGVnYXRlIGl0ZXJhdG9yIGhhcyBubyAudGhyb3dcbiAgICAgICAgICAgIC8vIG1ldGhvZCBhbHdheXMgdGVybWluYXRlcyB0aGUgeWllbGQqIGxvb3AuXG4gICAgICAgICAgICBjb250ZXh0LmRlbGVnYXRlID0gbnVsbDtcbiAgICAgICAgICAgIGlmIChjb250ZXh0Lm1ldGhvZCA9PT0gXCJ0aHJvd1wiKSB7XG4gICAgICAgICAgICAgICAgLy8gTm90ZTogW1wicmV0dXJuXCJdIG11c3QgYmUgdXNlZCBmb3IgRVMzIHBhcnNpbmcgY29tcGF0aWJpbGl0eS5cbiAgICAgICAgICAgICAgICBpZiAoZGVsZWdhdGUuaXRlcmF0b3JbXCJyZXR1cm5cIl0pIHtcbiAgICAgICAgICAgICAgICAgICAgLy8gSWYgdGhlIGRlbGVnYXRlIGl0ZXJhdG9yIGhhcyBhIHJldHVybiBtZXRob2QsIGdpdmUgaXQgYVxuICAgICAgICAgICAgICAgICAgICAvLyBjaGFuY2UgdG8gY2xlYW4gdXAuXG4gICAgICAgICAgICAgICAgICAgIGNvbnRleHQubWV0aG9kID0gXCJyZXR1cm5cIjtcbiAgICAgICAgICAgICAgICAgICAgY29udGV4dC5hcmcgPSB1bmRlZmluZWQ7XG4gICAgICAgICAgICAgICAgICAgIG1heWJlSW52b2tlRGVsZWdhdGUoZGVsZWdhdGUsIGNvbnRleHQpO1xuICAgICAgICAgICAgICAgICAgICBpZiAoY29udGV4dC5tZXRob2QgPT09IFwidGhyb3dcIikge1xuICAgICAgICAgICAgICAgICAgICAgICAgLy8gSWYgbWF5YmVJbnZva2VEZWxlZ2F0ZShjb250ZXh0KSBjaGFuZ2VkIGNvbnRleHQubWV0aG9kIGZyb21cbiAgICAgICAgICAgICAgICAgICAgICAgIC8vIFwicmV0dXJuXCIgdG8gXCJ0aHJvd1wiLCBsZXQgdGhhdCBvdmVycmlkZSB0aGUgVHlwZUVycm9yIGJlbG93LlxuICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIENvbnRpbnVlU2VudGluZWw7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgY29udGV4dC5tZXRob2QgPSBcInRocm93XCI7XG4gICAgICAgICAgICAgICAgY29udGV4dC5hcmcgPSBuZXcgVHlwZUVycm9yKFwiVGhlIGl0ZXJhdG9yIGRvZXMgbm90IHByb3ZpZGUgYSAndGhyb3cnIG1ldGhvZFwiKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHJldHVybiBDb250aW51ZVNlbnRpbmVsO1xuICAgICAgICB9XG4gICAgICAgIHZhciByZWNvcmQgPSB0cnlDYXRjaChtZXRob2QsIGRlbGVnYXRlLml0ZXJhdG9yLCBjb250ZXh0LmFyZyk7XG4gICAgICAgIGlmIChyZWNvcmQudHlwZSA9PT0gXCJ0aHJvd1wiKSB7XG4gICAgICAgICAgICBjb250ZXh0Lm1ldGhvZCA9IFwidGhyb3dcIjtcbiAgICAgICAgICAgIGNvbnRleHQuYXJnID0gcmVjb3JkLmFyZztcbiAgICAgICAgICAgIGNvbnRleHQuZGVsZWdhdGUgPSBudWxsO1xuICAgICAgICAgICAgcmV0dXJuIENvbnRpbnVlU2VudGluZWw7XG4gICAgICAgIH1cbiAgICAgICAgdmFyIGluZm8gPSByZWNvcmQuYXJnO1xuICAgICAgICBpZiAoIWluZm8pIHtcbiAgICAgICAgICAgIGNvbnRleHQubWV0aG9kID0gXCJ0aHJvd1wiO1xuICAgICAgICAgICAgY29udGV4dC5hcmcgPSBuZXcgVHlwZUVycm9yKFwiaXRlcmF0b3IgcmVzdWx0IGlzIG5vdCBhbiBvYmplY3RcIik7XG4gICAgICAgICAgICBjb250ZXh0LmRlbGVnYXRlID0gbnVsbDtcbiAgICAgICAgICAgIHJldHVybiBDb250aW51ZVNlbnRpbmVsO1xuICAgICAgICB9XG4gICAgICAgIGlmIChpbmZvLmRvbmUpIHtcbiAgICAgICAgICAgIC8vIEFzc2lnbiB0aGUgcmVzdWx0IG9mIHRoZSBmaW5pc2hlZCBkZWxlZ2F0ZSB0byB0aGUgdGVtcG9yYXJ5XG4gICAgICAgICAgICAvLyB2YXJpYWJsZSBzcGVjaWZpZWQgYnkgZGVsZWdhdGUucmVzdWx0TmFtZSAoc2VlIGRlbGVnYXRlWWllbGQpLlxuICAgICAgICAgICAgY29udGV4dFtkZWxlZ2F0ZS5yZXN1bHROYW1lXSA9IGluZm8udmFsdWU7XG4gICAgICAgICAgICAvLyBSZXN1bWUgZXhlY3V0aW9uIGF0IHRoZSBkZXNpcmVkIGxvY2F0aW9uIChzZWUgZGVsZWdhdGVZaWVsZCkuXG4gICAgICAgICAgICBjb250ZXh0Lm5leHQgPSBkZWxlZ2F0ZS5uZXh0TG9jO1xuICAgICAgICAgICAgLy8gSWYgY29udGV4dC5tZXRob2Qgd2FzIFwidGhyb3dcIiBidXQgdGhlIGRlbGVnYXRlIGhhbmRsZWQgdGhlXG4gICAgICAgICAgICAvLyBleGNlcHRpb24sIGxldCB0aGUgb3V0ZXIgZ2VuZXJhdG9yIHByb2NlZWQgbm9ybWFsbHkuIElmXG4gICAgICAgICAgICAvLyBjb250ZXh0Lm1ldGhvZCB3YXMgXCJuZXh0XCIsIGZvcmdldCBjb250ZXh0LmFyZyBzaW5jZSBpdCBoYXMgYmVlblxuICAgICAgICAgICAgLy8gXCJjb25zdW1lZFwiIGJ5IHRoZSBkZWxlZ2F0ZSBpdGVyYXRvci4gSWYgY29udGV4dC5tZXRob2Qgd2FzXG4gICAgICAgICAgICAvLyBcInJldHVyblwiLCBhbGxvdyB0aGUgb3JpZ2luYWwgLnJldHVybiBjYWxsIHRvIGNvbnRpbnVlIGluIHRoZVxuICAgICAgICAgICAgLy8gb3V0ZXIgZ2VuZXJhdG9yLlxuICAgICAgICAgICAgaWYgKGNvbnRleHQubWV0aG9kICE9PSBcInJldHVyblwiKSB7XG4gICAgICAgICAgICAgICAgY29udGV4dC5tZXRob2QgPSBcIm5leHRcIjtcbiAgICAgICAgICAgICAgICBjb250ZXh0LmFyZyA9IHVuZGVmaW5lZDtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgIC8vIFJlLXlpZWxkIHRoZSByZXN1bHQgcmV0dXJuZWQgYnkgdGhlIGRlbGVnYXRlIG1ldGhvZC5cbiAgICAgICAgICAgIHJldHVybiBpbmZvO1xuICAgICAgICB9XG4gICAgICAgIC8vIFRoZSBkZWxlZ2F0ZSBpdGVyYXRvciBpcyBmaW5pc2hlZCwgc28gZm9yZ2V0IGl0IGFuZCBjb250aW51ZSB3aXRoXG4gICAgICAgIC8vIHRoZSBvdXRlciBnZW5lcmF0b3IuXG4gICAgICAgIGNvbnRleHQuZGVsZWdhdGUgPSBudWxsO1xuICAgICAgICByZXR1cm4gQ29udGludWVTZW50aW5lbDtcbiAgICB9XG4gICAgLy8gRGVmaW5lIEdlbmVyYXRvci5wcm90b3R5cGUue25leHQsdGhyb3cscmV0dXJufSBpbiB0ZXJtcyBvZiB0aGVcbiAgICAvLyB1bmlmaWVkIC5faW52b2tlIGhlbHBlciBtZXRob2QuXG4gICAgZGVmaW5lSXRlcmF0b3JNZXRob2RzKEdwKTtcbiAgICBHcFt0b1N0cmluZ1RhZ1N5bWJvbF0gPSBcIkdlbmVyYXRvclwiO1xuICAgIC8vIEEgR2VuZXJhdG9yIHNob3VsZCBhbHdheXMgcmV0dXJuIGl0c2VsZiBhcyB0aGUgaXRlcmF0b3Igb2JqZWN0IHdoZW4gdGhlXG4gICAgLy8gQEBpdGVyYXRvciBmdW5jdGlvbiBpcyBjYWxsZWQgb24gaXQuIFNvbWUgYnJvd3NlcnMnIGltcGxlbWVudGF0aW9ucyBvZiB0aGVcbiAgICAvLyBpdGVyYXRvciBwcm90b3R5cGUgY2hhaW4gaW5jb3JyZWN0bHkgaW1wbGVtZW50IHRoaXMsIGNhdXNpbmcgdGhlIEdlbmVyYXRvclxuICAgIC8vIG9iamVjdCB0byBub3QgYmUgcmV0dXJuZWQgZnJvbSB0aGlzIGNhbGwuIFRoaXMgZW5zdXJlcyB0aGF0IGRvZXNuJ3QgaGFwcGVuLlxuICAgIC8vIFNlZSBodHRwczovL2dpdGh1Yi5jb20vZmFjZWJvb2svcmVnZW5lcmF0b3IvaXNzdWVzLzI3NCBmb3IgbW9yZSBkZXRhaWxzLlxuICAgIEdwW2l0ZXJhdG9yU3ltYm9sXSA9IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgcmV0dXJuIHRoaXM7XG4gICAgfTtcbiAgICBHcC50b1N0cmluZyA9IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgcmV0dXJuIFwiW29iamVjdCBHZW5lcmF0b3JdXCI7XG4gICAgfTtcbiAgICBmdW5jdGlvbiBwdXNoVHJ5RW50cnkobG9jcykge1xuICAgICAgICB2YXIgZW50cnkgPSB7IHRyeUxvYzogbG9jc1swXSB9O1xuICAgICAgICBpZiAoMSBpbiBsb2NzKSB7XG4gICAgICAgICAgICBlbnRyeS5jYXRjaExvYyA9IGxvY3NbMV07XG4gICAgICAgIH1cbiAgICAgICAgaWYgKDIgaW4gbG9jcykge1xuICAgICAgICAgICAgZW50cnkuZmluYWxseUxvYyA9IGxvY3NbMl07XG4gICAgICAgICAgICBlbnRyeS5hZnRlckxvYyA9IGxvY3NbM107XG4gICAgICAgIH1cbiAgICAgICAgdGhpcy50cnlFbnRyaWVzLnB1c2goZW50cnkpO1xuICAgIH1cbiAgICBmdW5jdGlvbiByZXNldFRyeUVudHJ5KGVudHJ5KSB7XG4gICAgICAgIHZhciByZWNvcmQgPSBlbnRyeS5jb21wbGV0aW9uIHx8IHt9O1xuICAgICAgICByZWNvcmQudHlwZSA9IFwibm9ybWFsXCI7XG4gICAgICAgIGRlbGV0ZSByZWNvcmQuYXJnO1xuICAgICAgICBlbnRyeS5jb21wbGV0aW9uID0gcmVjb3JkO1xuICAgIH1cbiAgICBmdW5jdGlvbiBDb250ZXh0KHRyeUxvY3NMaXN0KSB7XG4gICAgICAgIC8vIFRoZSByb290IGVudHJ5IG9iamVjdCAoZWZmZWN0aXZlbHkgYSB0cnkgc3RhdGVtZW50IHdpdGhvdXQgYSBjYXRjaFxuICAgICAgICAvLyBvciBhIGZpbmFsbHkgYmxvY2spIGdpdmVzIHVzIGEgcGxhY2UgdG8gc3RvcmUgdmFsdWVzIHRocm93biBmcm9tXG4gICAgICAgIC8vIGxvY2F0aW9ucyB3aGVyZSB0aGVyZSBpcyBubyBlbmNsb3NpbmcgdHJ5IHN0YXRlbWVudC5cbiAgICAgICAgdGhpcy50cnlFbnRyaWVzID0gW3sgdHJ5TG9jOiBcInJvb3RcIiB9XTtcbiAgICAgICAgdHJ5TG9jc0xpc3QuZm9yRWFjaChwdXNoVHJ5RW50cnksIHRoaXMpO1xuICAgICAgICB0aGlzLnJlc2V0KHRydWUpO1xuICAgIH1cbiAgICBleHBvcnRzLmtleXMgPSBmdW5jdGlvbiAob2JqZWN0KSB7XG4gICAgICAgIHZhciBrZXlzID0gW107XG4gICAgICAgIGZvciAodmFyIGtleSBpbiBvYmplY3QpIHtcbiAgICAgICAgICAgIGtleXMucHVzaChrZXkpO1xuICAgICAgICB9XG4gICAgICAgIGtleXMucmV2ZXJzZSgpO1xuICAgICAgICAvLyBSYXRoZXIgdGhhbiByZXR1cm5pbmcgYW4gb2JqZWN0IHdpdGggYSBuZXh0IG1ldGhvZCwgd2Uga2VlcFxuICAgICAgICAvLyB0aGluZ3Mgc2ltcGxlIGFuZCByZXR1cm4gdGhlIG5leHQgZnVuY3Rpb24gaXRzZWxmLlxuICAgICAgICByZXR1cm4gZnVuY3Rpb24gbmV4dCgpIHtcbiAgICAgICAgICAgIHdoaWxlIChrZXlzLmxlbmd0aCkge1xuICAgICAgICAgICAgICAgIHZhciBrZXkgPSBrZXlzLnBvcCgpO1xuICAgICAgICAgICAgICAgIGlmIChrZXkgaW4gb2JqZWN0KSB7XG4gICAgICAgICAgICAgICAgICAgIG5leHQudmFsdWUgPSBrZXk7XG4gICAgICAgICAgICAgICAgICAgIG5leHQuZG9uZSA9IGZhbHNlO1xuICAgICAgICAgICAgICAgICAgICByZXR1cm4gbmV4dDtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICAvLyBUbyBhdm9pZCBjcmVhdGluZyBhbiBhZGRpdGlvbmFsIG9iamVjdCwgd2UganVzdCBoYW5nIHRoZSAudmFsdWVcbiAgICAgICAgICAgIC8vIGFuZCAuZG9uZSBwcm9wZXJ0aWVzIG9mZiB0aGUgbmV4dCBmdW5jdGlvbiBvYmplY3QgaXRzZWxmLiBUaGlzXG4gICAgICAgICAgICAvLyBhbHNvIGVuc3VyZXMgdGhhdCB0aGUgbWluaWZpZXIgd2lsbCBub3QgYW5vbnltaXplIHRoZSBmdW5jdGlvbi5cbiAgICAgICAgICAgIG5leHQuZG9uZSA9IHRydWU7XG4gICAgICAgICAgICByZXR1cm4gbmV4dDtcbiAgICAgICAgfTtcbiAgICB9O1xuICAgIGZ1bmN0aW9uIHZhbHVlcyhpdGVyYWJsZSkge1xuICAgICAgICBpZiAoaXRlcmFibGUpIHtcbiAgICAgICAgICAgIHZhciBpdGVyYXRvck1ldGhvZCA9IGl0ZXJhYmxlW2l0ZXJhdG9yU3ltYm9sXTtcbiAgICAgICAgICAgIGlmIChpdGVyYXRvck1ldGhvZCkge1xuICAgICAgICAgICAgICAgIHJldHVybiBpdGVyYXRvck1ldGhvZC5jYWxsKGl0ZXJhYmxlKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGlmICh0eXBlb2YgaXRlcmFibGUubmV4dCA9PT0gXCJmdW5jdGlvblwiKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIGl0ZXJhYmxlO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgaWYgKCFpc05hTihpdGVyYWJsZS5sZW5ndGgpKSB7XG4gICAgICAgICAgICAgICAgdmFyIGkgPSAtMSwgbmV4dCA9IGZ1bmN0aW9uIG5leHQoKSB7XG4gICAgICAgICAgICAgICAgICAgIHdoaWxlICgrK2kgPCBpdGVyYWJsZS5sZW5ndGgpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGlmIChoYXNPd24uY2FsbChpdGVyYWJsZSwgaSkpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBuZXh0LnZhbHVlID0gaXRlcmFibGVbaV07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbmV4dC5kb25lID0gZmFsc2U7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIG5leHQ7XG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgbmV4dC52YWx1ZSA9IHVuZGVmaW5lZDtcbiAgICAgICAgICAgICAgICAgICAgbmV4dC5kb25lID0gdHJ1ZTtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIG5leHQ7XG4gICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgICByZXR1cm4gbmV4dC5uZXh0ID0gbmV4dDtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICAvLyBSZXR1cm4gYW4gaXRlcmF0b3Igd2l0aCBubyB2YWx1ZXMuXG4gICAgICAgIHJldHVybiB7IG5leHQ6IGRvbmVSZXN1bHQgfTtcbiAgICB9XG4gICAgZXhwb3J0cy52YWx1ZXMgPSB2YWx1ZXM7XG4gICAgZnVuY3Rpb24gZG9uZVJlc3VsdCgpIHtcbiAgICAgICAgcmV0dXJuIHsgdmFsdWU6IHVuZGVmaW5lZCwgZG9uZTogdHJ1ZSB9O1xuICAgIH1cbiAgICBDb250ZXh0LnByb3RvdHlwZSA9IHtcbiAgICAgICAgY29uc3RydWN0b3I6IENvbnRleHQsXG4gICAgICAgIHJlc2V0OiBmdW5jdGlvbiAoc2tpcFRlbXBSZXNldCkge1xuICAgICAgICAgICAgdGhpcy5wcmV2ID0gMDtcbiAgICAgICAgICAgIHRoaXMubmV4dCA9IDA7XG4gICAgICAgICAgICAvLyBSZXNldHRpbmcgY29udGV4dC5fc2VudCBmb3IgbGVnYWN5IHN1cHBvcnQgb2YgQmFiZWwnc1xuICAgICAgICAgICAgLy8gZnVuY3Rpb24uc2VudCBpbXBsZW1lbnRhdGlvbi5cbiAgICAgICAgICAgIHRoaXMuc2VudCA9IHRoaXMuX3NlbnQgPSB1bmRlZmluZWQ7XG4gICAgICAgICAgICB0aGlzLmRvbmUgPSBmYWxzZTtcbiAgICAgICAgICAgIHRoaXMuZGVsZWdhdGUgPSBudWxsO1xuICAgICAgICAgICAgdGhpcy5tZXRob2QgPSBcIm5leHRcIjtcbiAgICAgICAgICAgIHRoaXMuYXJnID0gdW5kZWZpbmVkO1xuICAgICAgICAgICAgdGhpcy50cnlFbnRyaWVzLmZvckVhY2gocmVzZXRUcnlFbnRyeSk7XG4gICAgICAgICAgICBpZiAoIXNraXBUZW1wUmVzZXQpIHtcbiAgICAgICAgICAgICAgICBmb3IgKHZhciBuYW1lIGluIHRoaXMpIHtcbiAgICAgICAgICAgICAgICAgICAgLy8gTm90IHN1cmUgYWJvdXQgdGhlIG9wdGltYWwgb3JkZXIgb2YgdGhlc2UgY29uZGl0aW9uczpcbiAgICAgICAgICAgICAgICAgICAgaWYgKG5hbWUuY2hhckF0KDApID09PSBcInRcIiAmJlxuICAgICAgICAgICAgICAgICAgICAgICAgaGFzT3duLmNhbGwodGhpcywgbmFtZSkgJiZcbiAgICAgICAgICAgICAgICAgICAgICAgICFpc05hTigrbmFtZS5zbGljZSgxKSkpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXNbbmFtZV0gPSB1bmRlZmluZWQ7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgIH0sXG4gICAgICAgIHN0b3A6IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICAgIHRoaXMuZG9uZSA9IHRydWU7XG4gICAgICAgICAgICB2YXIgcm9vdEVudHJ5ID0gdGhpcy50cnlFbnRyaWVzWzBdO1xuICAgICAgICAgICAgdmFyIHJvb3RSZWNvcmQgPSByb290RW50cnkuY29tcGxldGlvbjtcbiAgICAgICAgICAgIGlmIChyb290UmVjb3JkLnR5cGUgPT09IFwidGhyb3dcIikge1xuICAgICAgICAgICAgICAgIHRocm93IHJvb3RSZWNvcmQuYXJnO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgcmV0dXJuIHRoaXMucnZhbDtcbiAgICAgICAgfSxcbiAgICAgICAgZGlzcGF0Y2hFeGNlcHRpb246IGZ1bmN0aW9uIChleGNlcHRpb24pIHtcbiAgICAgICAgICAgIGlmICh0aGlzLmRvbmUpIHtcbiAgICAgICAgICAgICAgICB0aHJvdyBleGNlcHRpb247XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICB2YXIgY29udGV4dCA9IHRoaXM7XG4gICAgICAgICAgICBmdW5jdGlvbiBoYW5kbGUobG9jLCBjYXVnaHQpIHtcbiAgICAgICAgICAgICAgICByZWNvcmQudHlwZSA9IFwidGhyb3dcIjtcbiAgICAgICAgICAgICAgICByZWNvcmQuYXJnID0gZXhjZXB0aW9uO1xuICAgICAgICAgICAgICAgIGNvbnRleHQubmV4dCA9IGxvYztcbiAgICAgICAgICAgICAgICBpZiAoY2F1Z2h0KSB7XG4gICAgICAgICAgICAgICAgICAgIC8vIElmIHRoZSBkaXNwYXRjaGVkIGV4Y2VwdGlvbiB3YXMgY2F1Z2h0IGJ5IGEgY2F0Y2ggYmxvY2ssXG4gICAgICAgICAgICAgICAgICAgIC8vIHRoZW4gbGV0IHRoYXQgY2F0Y2ggYmxvY2sgaGFuZGxlIHRoZSBleGNlcHRpb24gbm9ybWFsbHkuXG4gICAgICAgICAgICAgICAgICAgIGNvbnRleHQubWV0aG9kID0gXCJuZXh0XCI7XG4gICAgICAgICAgICAgICAgICAgIGNvbnRleHQuYXJnID0gdW5kZWZpbmVkO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICByZXR1cm4gISFjYXVnaHQ7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBmb3IgKHZhciBpID0gdGhpcy50cnlFbnRyaWVzLmxlbmd0aCAtIDE7IGkgPj0gMDsgLS1pKSB7XG4gICAgICAgICAgICAgICAgdmFyIGVudHJ5ID0gdGhpcy50cnlFbnRyaWVzW2ldO1xuICAgICAgICAgICAgICAgIHZhciByZWNvcmQgPSBlbnRyeS5jb21wbGV0aW9uO1xuICAgICAgICAgICAgICAgIGlmIChlbnRyeS50cnlMb2MgPT09IFwicm9vdFwiKSB7XG4gICAgICAgICAgICAgICAgICAgIC8vIEV4Y2VwdGlvbiB0aHJvd24gb3V0c2lkZSBvZiBhbnkgdHJ5IGJsb2NrIHRoYXQgY291bGQgaGFuZGxlXG4gICAgICAgICAgICAgICAgICAgIC8vIGl0LCBzbyBzZXQgdGhlIGNvbXBsZXRpb24gdmFsdWUgb2YgdGhlIGVudGlyZSBmdW5jdGlvbiB0b1xuICAgICAgICAgICAgICAgICAgICAvLyB0aHJvdyB0aGUgZXhjZXB0aW9uLlxuICAgICAgICAgICAgICAgICAgICByZXR1cm4gaGFuZGxlKFwiZW5kXCIpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBpZiAoZW50cnkudHJ5TG9jIDw9IHRoaXMucHJldikge1xuICAgICAgICAgICAgICAgICAgICB2YXIgaGFzQ2F0Y2ggPSBoYXNPd24uY2FsbChlbnRyeSwgXCJjYXRjaExvY1wiKTtcbiAgICAgICAgICAgICAgICAgICAgdmFyIGhhc0ZpbmFsbHkgPSBoYXNPd24uY2FsbChlbnRyeSwgXCJmaW5hbGx5TG9jXCIpO1xuICAgICAgICAgICAgICAgICAgICBpZiAoaGFzQ2F0Y2ggJiYgaGFzRmluYWxseSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHRoaXMucHJldiA8IGVudHJ5LmNhdGNoTG9jKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGhhbmRsZShlbnRyeS5jYXRjaExvYywgdHJ1ZSk7XG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICBlbHNlIGlmICh0aGlzLnByZXYgPCBlbnRyeS5maW5hbGx5TG9jKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGhhbmRsZShlbnRyeS5maW5hbGx5TG9jKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICBlbHNlIGlmIChoYXNDYXRjaCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHRoaXMucHJldiA8IGVudHJ5LmNhdGNoTG9jKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGhhbmRsZShlbnRyeS5jYXRjaExvYywgdHJ1ZSk7XG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgZWxzZSBpZiAoaGFzRmluYWxseSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHRoaXMucHJldiA8IGVudHJ5LmZpbmFsbHlMb2MpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gaGFuZGxlKGVudHJ5LmZpbmFsbHlMb2MpO1xuICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKFwidHJ5IHN0YXRlbWVudCB3aXRob3V0IGNhdGNoIG9yIGZpbmFsbHlcIik7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgIH0sXG4gICAgICAgIGFicnVwdDogZnVuY3Rpb24gKHR5cGUsIGFyZykge1xuICAgICAgICAgICAgZm9yICh2YXIgaSA9IHRoaXMudHJ5RW50cmllcy5sZW5ndGggLSAxOyBpID49IDA7IC0taSkge1xuICAgICAgICAgICAgICAgIHZhciBlbnRyeSA9IHRoaXMudHJ5RW50cmllc1tpXTtcbiAgICAgICAgICAgICAgICBpZiAoZW50cnkudHJ5TG9jIDw9IHRoaXMucHJldiAmJlxuICAgICAgICAgICAgICAgICAgICBoYXNPd24uY2FsbChlbnRyeSwgXCJmaW5hbGx5TG9jXCIpICYmXG4gICAgICAgICAgICAgICAgICAgIHRoaXMucHJldiA8IGVudHJ5LmZpbmFsbHlMb2MpIHtcbiAgICAgICAgICAgICAgICAgICAgdmFyIGZpbmFsbHlFbnRyeSA9IGVudHJ5O1xuICAgICAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBpZiAoZmluYWxseUVudHJ5ICYmXG4gICAgICAgICAgICAgICAgKHR5cGUgPT09IFwiYnJlYWtcIiB8fFxuICAgICAgICAgICAgICAgICAgICB0eXBlID09PSBcImNvbnRpbnVlXCIpICYmXG4gICAgICAgICAgICAgICAgZmluYWxseUVudHJ5LnRyeUxvYyA8PSBhcmcgJiZcbiAgICAgICAgICAgICAgICBhcmcgPD0gZmluYWxseUVudHJ5LmZpbmFsbHlMb2MpIHtcbiAgICAgICAgICAgICAgICAvLyBJZ25vcmUgdGhlIGZpbmFsbHkgZW50cnkgaWYgY29udHJvbCBpcyBub3QganVtcGluZyB0byBhXG4gICAgICAgICAgICAgICAgLy8gbG9jYXRpb24gb3V0c2lkZSB0aGUgdHJ5L2NhdGNoIGJsb2NrLlxuICAgICAgICAgICAgICAgIGZpbmFsbHlFbnRyeSA9IG51bGw7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICB2YXIgcmVjb3JkID0gZmluYWxseUVudHJ5ID8gZmluYWxseUVudHJ5LmNvbXBsZXRpb24gOiB7fTtcbiAgICAgICAgICAgIHJlY29yZC50eXBlID0gdHlwZTtcbiAgICAgICAgICAgIHJlY29yZC5hcmcgPSBhcmc7XG4gICAgICAgICAgICBpZiAoZmluYWxseUVudHJ5KSB7XG4gICAgICAgICAgICAgICAgdGhpcy5tZXRob2QgPSBcIm5leHRcIjtcbiAgICAgICAgICAgICAgICB0aGlzLm5leHQgPSBmaW5hbGx5RW50cnkuZmluYWxseUxvYztcbiAgICAgICAgICAgICAgICByZXR1cm4gQ29udGludWVTZW50aW5lbDtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHJldHVybiB0aGlzLmNvbXBsZXRlKHJlY29yZCk7XG4gICAgICAgIH0sXG4gICAgICAgIGNvbXBsZXRlOiBmdW5jdGlvbiAocmVjb3JkLCBhZnRlckxvYykge1xuICAgICAgICAgICAgaWYgKHJlY29yZC50eXBlID09PSBcInRocm93XCIpIHtcbiAgICAgICAgICAgICAgICB0aHJvdyByZWNvcmQuYXJnO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgaWYgKHJlY29yZC50eXBlID09PSBcImJyZWFrXCIgfHxcbiAgICAgICAgICAgICAgICByZWNvcmQudHlwZSA9PT0gXCJjb250aW51ZVwiKSB7XG4gICAgICAgICAgICAgICAgdGhpcy5uZXh0ID0gcmVjb3JkLmFyZztcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGVsc2UgaWYgKHJlY29yZC50eXBlID09PSBcInJldHVyblwiKSB7XG4gICAgICAgICAgICAgICAgdGhpcy5ydmFsID0gdGhpcy5hcmcgPSByZWNvcmQuYXJnO1xuICAgICAgICAgICAgICAgIHRoaXMubWV0aG9kID0gXCJyZXR1cm5cIjtcbiAgICAgICAgICAgICAgICB0aGlzLm5leHQgPSBcImVuZFwiO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgZWxzZSBpZiAocmVjb3JkLnR5cGUgPT09IFwibm9ybWFsXCIgJiYgYWZ0ZXJMb2MpIHtcbiAgICAgICAgICAgICAgICB0aGlzLm5leHQgPSBhZnRlckxvYztcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHJldHVybiBDb250aW51ZVNlbnRpbmVsO1xuICAgICAgICB9LFxuICAgICAgICBmaW5pc2g6IGZ1bmN0aW9uIChmaW5hbGx5TG9jKSB7XG4gICAgICAgICAgICBmb3IgKHZhciBpID0gdGhpcy50cnlFbnRyaWVzLmxlbmd0aCAtIDE7IGkgPj0gMDsgLS1pKSB7XG4gICAgICAgICAgICAgICAgdmFyIGVudHJ5ID0gdGhpcy50cnlFbnRyaWVzW2ldO1xuICAgICAgICAgICAgICAgIGlmIChlbnRyeS5maW5hbGx5TG9jID09PSBmaW5hbGx5TG9jKSB7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuY29tcGxldGUoZW50cnkuY29tcGxldGlvbiwgZW50cnkuYWZ0ZXJMb2MpO1xuICAgICAgICAgICAgICAgICAgICByZXNldFRyeUVudHJ5KGVudHJ5KTtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIENvbnRpbnVlU2VudGluZWw7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICB9LFxuICAgICAgICBcImNhdGNoXCI6IGZ1bmN0aW9uICh0cnlMb2MpIHtcbiAgICAgICAgICAgIGZvciAodmFyIGkgPSB0aGlzLnRyeUVudHJpZXMubGVuZ3RoIC0gMTsgaSA+PSAwOyAtLWkpIHtcbiAgICAgICAgICAgICAgICB2YXIgZW50cnkgPSB0aGlzLnRyeUVudHJpZXNbaV07XG4gICAgICAgICAgICAgICAgaWYgKGVudHJ5LnRyeUxvYyA9PT0gdHJ5TG9jKSB7XG4gICAgICAgICAgICAgICAgICAgIHZhciByZWNvcmQgPSBlbnRyeS5jb21wbGV0aW9uO1xuICAgICAgICAgICAgICAgICAgICBpZiAocmVjb3JkLnR5cGUgPT09IFwidGhyb3dcIikge1xuICAgICAgICAgICAgICAgICAgICAgICAgdmFyIHRocm93biA9IHJlY29yZC5hcmc7XG4gICAgICAgICAgICAgICAgICAgICAgICByZXNldFRyeUVudHJ5KGVudHJ5KTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICByZXR1cm4gdGhyb3duO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIC8vIFRoZSBjb250ZXh0LmNhdGNoIG1ldGhvZCBtdXN0IG9ubHkgYmUgY2FsbGVkIHdpdGggYSBsb2NhdGlvblxuICAgICAgICAgICAgLy8gYXJndW1lbnQgdGhhdCBjb3JyZXNwb25kcyB0byBhIGtub3duIGNhdGNoIGJsb2NrLlxuICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKFwiaWxsZWdhbCBjYXRjaCBhdHRlbXB0XCIpO1xuICAgICAgICB9LFxuICAgICAgICBkZWxlZ2F0ZVlpZWxkOiBmdW5jdGlvbiAoaXRlcmFibGUsIHJlc3VsdE5hbWUsIG5leHRMb2MpIHtcbiAgICAgICAgICAgIHRoaXMuZGVsZWdhdGUgPSB7XG4gICAgICAgICAgICAgICAgaXRlcmF0b3I6IHZhbHVlcyhpdGVyYWJsZSksXG4gICAgICAgICAgICAgICAgcmVzdWx0TmFtZTogcmVzdWx0TmFtZSxcbiAgICAgICAgICAgICAgICBuZXh0TG9jOiBuZXh0TG9jXG4gICAgICAgICAgICB9O1xuICAgICAgICAgICAgaWYgKHRoaXMubWV0aG9kID09PSBcIm5leHRcIikge1xuICAgICAgICAgICAgICAgIC8vIERlbGliZXJhdGVseSBmb3JnZXQgdGhlIGxhc3Qgc2VudCB2YWx1ZSBzbyB0aGF0IHdlIGRvbid0XG4gICAgICAgICAgICAgICAgLy8gYWNjaWRlbnRhbGx5IHBhc3MgaXQgb24gdG8gdGhlIGRlbGVnYXRlLlxuICAgICAgICAgICAgICAgIHRoaXMuYXJnID0gdW5kZWZpbmVkO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgcmV0dXJuIENvbnRpbnVlU2VudGluZWw7XG4gICAgICAgIH1cbiAgICB9O1xuICAgIC8vIFJlZ2FyZGxlc3Mgb2Ygd2hldGhlciB0aGlzIHNjcmlwdCBpcyBleGVjdXRpbmcgYXMgYSBDb21tb25KUyBtb2R1bGVcbiAgICAvLyBvciBub3QsIHJldHVybiB0aGUgcnVudGltZSBvYmplY3Qgc28gdGhhdCB3ZSBjYW4gZGVjbGFyZSB0aGUgdmFyaWFibGVcbiAgICAvLyByZWdlbmVyYXRvclJ1bnRpbWUgaW4gdGhlIG91dGVyIHNjb3BlLCB3aGljaCBhbGxvd3MgdGhpcyBtb2R1bGUgdG8gYmVcbiAgICAvLyBpbmplY3RlZCBlYXNpbHkgYnkgYGJpbi9yZWdlbmVyYXRvciAtLWluY2x1ZGUtcnVudGltZSBzY3JpcHQuanNgLlxuICAgIHJldHVybiBleHBvcnRzO1xufShcbi8vIElmIHRoaXMgc2NyaXB0IGlzIGV4ZWN1dGluZyBhcyBhIENvbW1vbkpTIG1vZHVsZSwgdXNlIG1vZHVsZS5leHBvcnRzXG4vLyBhcyB0aGUgcmVnZW5lcmF0b3JSdW50aW1lIG5hbWVzcGFjZS4gT3RoZXJ3aXNlIGNyZWF0ZSBhIG5ldyBlbXB0eVxuLy8gb2JqZWN0LiBFaXRoZXIgd2F5LCB0aGUgcmVzdWx0aW5nIG9iamVjdCB3aWxsIGJlIHVzZWQgdG8gaW5pdGlhbGl6ZVxuLy8gdGhlIHJlZ2VuZXJhdG9yUnVudGltZSB2YXJpYWJsZSBhdCB0aGUgdG9wIG9mIHRoaXMgZmlsZS5cbnR5cGVvZiBtb2R1bGUgPT09IFwib2JqZWN0XCIgPyBtb2R1bGUuZXhwb3J0cyA6IHt9KSk7XG50cnkge1xuICAgIHJlZ2VuZXJhdG9yUnVudGltZSA9IHJ1bnRpbWU7XG59XG5jYXRjaCAoYWNjaWRlbnRhbFN0cmljdE1vZGUpIHtcbiAgICAvLyBUaGlzIG1vZHVsZSBzaG91bGQgbm90IGJlIHJ1bm5pbmcgaW4gc3RyaWN0IG1vZGUsIHNvIHRoZSBhYm92ZVxuICAgIC8vIGFzc2lnbm1lbnQgc2hvdWxkIGFsd2F5cyB3b3JrIHVubGVzcyBzb21ldGhpbmcgaXMgbWlzY29uZmlndXJlZC4gSnVzdFxuICAgIC8vIGluIGNhc2UgcnVudGltZS5qcyBhY2NpZGVudGFsbHkgcnVucyBpbiBzdHJpY3QgbW9kZSwgd2UgY2FuIGVzY2FwZVxuICAgIC8vIHN0cmljdCBtb2RlIHVzaW5nIGEgZ2xvYmFsIEZ1bmN0aW9uIGNhbGwuIFRoaXMgY291bGQgY29uY2VpdmFibHkgZmFpbFxuICAgIC8vIGlmIGEgQ29udGVudCBTZWN1cml0eSBQb2xpY3kgZm9yYmlkcyB1c2luZyBGdW5jdGlvbiwgYnV0IGluIHRoYXQgY2FzZVxuICAgIC8vIHRoZSBwcm9wZXIgc29sdXRpb24gaXMgdG8gZml4IHRoZSBhY2NpZGVudGFsIHN0cmljdCBtb2RlIHByb2JsZW0uIElmXG4gICAgLy8geW91J3ZlIG1pc2NvbmZpZ3VyZWQgeW91ciBidW5kbGVyIHRvIGZvcmNlIHN0cmljdCBtb2RlIGFuZCBhcHBsaWVkIGFcbiAgICAvLyBDU1AgdG8gZm9yYmlkIEZ1bmN0aW9uLCBhbmQgeW91J3JlIG5vdCB3aWxsaW5nIHRvIGZpeCBlaXRoZXIgb2YgdGhvc2VcbiAgICAvLyBwcm9ibGVtcywgcGxlYXNlIGRldGFpbCB5b3VyIHVuaXF1ZSBwcmVkaWNhbWVudCBpbiBhIEdpdEh1YiBpc3N1ZS5cbiAgICBGdW5jdGlvbihcInJcIiwgXCJyZWdlbmVyYXRvclJ1bnRpbWUgPSByXCIpKHJ1bnRpbWUpO1xufVxuIl0sIm1hcHBpbmdzIjoiQUFBQTtBQUNBOzs7Ozs7Ozs7QUFNQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBRUE7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUFBO0FBQUE7QUFBQTtBQUNBO0FBRUE7QUFBQTtBQUFBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUVBO0FBQ0E7QUFBQTtBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUFBO0FBQ0E7QUFBQTtBQUVBO0FBQ0E7QUFDQTtBQURBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUFBO0FBR0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBRUE7QUFDQTtBQUNBO0FBR0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFHQTtBQUNBO0FBRUE7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBRUE7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBREE7QUFDQTtBQUFBO0FBQUE7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFFQTtBQUNBO0FBQ0E7QUFBQTtBQUdBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBRUE7QUFDQTtBQUNBO0FBRUE7QUFDQTtBQUNBO0FBREE7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFFQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBRUE7QUFDQTtBQUFBO0FBR0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBRUE7QUFDQTtBQUNBO0FBREE7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBRUE7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBRkE7QUFJQTtBQUVBO0FBRUE7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFEQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFFQTtBQUNBO0FBQ0E7QUFFQTtBQUNBO0FBQ0E7QUFEQTtBQUNBO0FBQ0E7QUFFQTtBQUNBO0FBQ0E7QUFEQTtBQUNBO0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQUE7QUFBQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUVBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBREE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQUE7QUFBQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQUE7QUFDQTtBQUFBO0FBQUE7QUFBQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBRUE7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFHQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFFQTtBQUNBO0FBQ0E7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFHQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFLQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBRUE7QUFDQTtBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBRUE7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFFQTtBQUNBO0FBQ0E7QUFEQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUhBO0FBQ0E7QUFJQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBM0tBO0FBOEtBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0EiLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./node_modules/regenerator-runtime/runtime.js\n')},"./node_modules/setimmediate/setImmediate.js":
|
||
/*!***************************************************!*\
|
||
!*** ./node_modules/setimmediate/setImmediate.js ***!
|
||
\***************************************************/
|
||
/*! no static exports found */function(module,exports,__webpack_require__){"use strict";eval('/* WEBPACK VAR INJECTION */(function(global, process) {\n\n(function (global, undefined) {\n "use strict";\n\n if (global.setImmediate) {\n return;\n }\n\n var nextHandle = 1; // Spec says greater than zero\n\n var tasksByHandle = {};\n var currentlyRunningATask = false;\n var doc = global.document;\n var registerImmediate;\n\n function setImmediate(callback) {\n // Callback can either be a function or a string\n if (typeof callback !== "function") {\n callback = new Function("" + callback);\n } // Copy function arguments\n\n\n var args = new Array(arguments.length - 1);\n\n for (var i = 0; i < args.length; i++) {\n args[i] = arguments[i + 1];\n } // Store and register the task\n\n\n var task = {\n callback: callback,\n args: args\n };\n tasksByHandle[nextHandle] = task;\n registerImmediate(nextHandle);\n return nextHandle++;\n }\n\n function clearImmediate(handle) {\n delete tasksByHandle[handle];\n }\n\n function run(task) {\n var callback = task.callback;\n var args = task.args;\n\n switch (args.length) {\n case 0:\n callback();\n break;\n\n case 1:\n callback(args[0]);\n break;\n\n case 2:\n callback(args[0], args[1]);\n break;\n\n case 3:\n callback(args[0], args[1], args[2]);\n break;\n\n default:\n callback.apply(undefined, args);\n break;\n }\n }\n\n function runIfPresent(handle) {\n // From the spec: "Wait until any invocations of this algorithm started before this one have completed."\n // So if we\'re currently running a task, we\'ll need to delay this invocation.\n if (currentlyRunningATask) {\n // Delay by doing a setTimeout. setImmediate was tried instead, but in Firefox 7 it generated a\n // "too much recursion" error.\n setTimeout(runIfPresent, 0, handle);\n } else {\n var task = tasksByHandle[handle];\n\n if (task) {\n currentlyRunningATask = true;\n\n try {\n run(task);\n } finally {\n clearImmediate(handle);\n currentlyRunningATask = false;\n }\n }\n }\n }\n\n function installNextTickImplementation() {\n registerImmediate = function registerImmediate(handle) {\n process.nextTick(function () {\n runIfPresent(handle);\n });\n };\n }\n\n function canUsePostMessage() {\n // The test against `importScripts` prevents this implementation from being installed inside a web worker,\n // where `global.postMessage` means something completely different and can\'t be used for this purpose.\n if (global.postMessage && !global.importScripts) {\n var postMessageIsAsynchronous = true;\n var oldOnMessage = global.onmessage;\n\n global.onmessage = function () {\n postMessageIsAsynchronous = false;\n };\n\n global.postMessage("", "*");\n global.onmessage = oldOnMessage;\n return postMessageIsAsynchronous;\n }\n }\n\n function installPostMessageImplementation() {\n // Installs an event handler on `global` for the `message` event: see\n // * https://developer.mozilla.org/en/DOM/window.postMessage\n // * http://www.whatwg.org/specs/web-apps/current-work/multipage/comms.html#crossDocumentMessages\n var messagePrefix = "setImmediate$" + Math.random() + "$";\n\n var onGlobalMessage = function onGlobalMessage(event) {\n if (event.source === global && typeof event.data === "string" && event.data.indexOf(messagePrefix) === 0) {\n runIfPresent(+event.data.slice(messagePrefix.length));\n }\n };\n\n if (global.addEventListener) {\n global.addEventListener("message", onGlobalMessage, false);\n } else {\n global.attachEvent("onmessage", onGlobalMessage);\n }\n\n registerImmediate = function registerImmediate(handle) {\n global.postMessage(messagePrefix + handle, "*");\n };\n }\n\n function installMessageChannelImplementation() {\n var channel = new MessageChannel();\n\n channel.port1.onmessage = function (event) {\n var handle = event.data;\n runIfPresent(handle);\n };\n\n registerImmediate = function registerImmediate(handle) {\n channel.port2.postMessage(handle);\n };\n }\n\n function installReadyStateChangeImplementation() {\n var html = doc.documentElement;\n\n registerImmediate = function registerImmediate(handle) {\n // Create a <script> element; its readystatechange event will be fired asynchronously once it is inserted\n // into the document. Do so, thus queuing up the task. Remember to clean up once it\'s been called.\n var script = doc.createElement("script");\n\n script.onreadystatechange = function () {\n runIfPresent(handle);\n script.onreadystatechange = null;\n html.removeChild(script);\n script = null;\n };\n\n html.appendChild(script);\n };\n }\n\n function installSetTimeoutImplementation() {\n registerImmediate = function registerImmediate(handle) {\n setTimeout(runIfPresent, 0, handle);\n };\n } // If supported, we should attach to the prototype of global, since that is where setTimeout et al. live.\n\n\n var attachTo = Object.getPrototypeOf && Object.getPrototypeOf(global);\n attachTo = attachTo && attachTo.setTimeout ? attachTo : global; // Don\'t get fooled by e.g. browserify environments.\n\n if ({}.toString.call(global.process) === "[object process]") {\n // For Node.js before 0.9\n installNextTickImplementation();\n } else if (canUsePostMessage()) {\n // For non-IE10 modern browsers\n installPostMessageImplementation();\n } else if (global.MessageChannel) {\n // For web workers, where supported\n installMessageChannelImplementation();\n } else if (doc && "onreadystatechange" in doc.createElement("script")) {\n // For IE 6–8\n installReadyStateChangeImplementation();\n } else {\n // For older browsers\n installSetTimeoutImplementation();\n }\n\n attachTo.setImmediate = setImmediate;\n attachTo.clearImmediate = clearImmediate;\n})(typeof self === "undefined" ? typeof global === "undefined" ? this : global : self);\n/* WEBPACK VAR INJECTION */}.call(this, __webpack_require__(/*! ./../webpack/buildin/global.js */ "./node_modules/webpack/buildin/global.js"), __webpack_require__(/*! ./../process/browser.js */ "./node_modules/process/browser.js")))//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvc2V0aW1tZWRpYXRlL3NldEltbWVkaWF0ZS5qcy5qcyIsInNvdXJjZXMiOlsid2VicGFjazovL1NOTGlicmFyeS8uL25vZGVfbW9kdWxlcy9zZXRpbW1lZGlhdGUvc2V0SW1tZWRpYXRlLmpzPzYwMTciXSwic291cmNlc0NvbnRlbnQiOlsiXCJ1c2Ugc3RyaWN0XCI7XG4oZnVuY3Rpb24gKGdsb2JhbCwgdW5kZWZpbmVkKSB7XG4gICAgXCJ1c2Ugc3RyaWN0XCI7XG4gICAgaWYgKGdsb2JhbC5zZXRJbW1lZGlhdGUpIHtcbiAgICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICB2YXIgbmV4dEhhbmRsZSA9IDE7IC8vIFNwZWMgc2F5cyBncmVhdGVyIHRoYW4gemVyb1xuICAgIHZhciB0YXNrc0J5SGFuZGxlID0ge307XG4gICAgdmFyIGN1cnJlbnRseVJ1bm5pbmdBVGFzayA9IGZhbHNlO1xuICAgIHZhciBkb2MgPSBnbG9iYWwuZG9jdW1lbnQ7XG4gICAgdmFyIHJlZ2lzdGVySW1tZWRpYXRlO1xuICAgIGZ1bmN0aW9uIHNldEltbWVkaWF0ZShjYWxsYmFjaykge1xuICAgICAgICAvLyBDYWxsYmFjayBjYW4gZWl0aGVyIGJlIGEgZnVuY3Rpb24gb3IgYSBzdHJpbmdcbiAgICAgICAgaWYgKHR5cGVvZiBjYWxsYmFjayAhPT0gXCJmdW5jdGlvblwiKSB7XG4gICAgICAgICAgICBjYWxsYmFjayA9IG5ldyBGdW5jdGlvbihcIlwiICsgY2FsbGJhY2spO1xuICAgICAgICB9XG4gICAgICAgIC8vIENvcHkgZnVuY3Rpb24gYXJndW1lbnRzXG4gICAgICAgIHZhciBhcmdzID0gbmV3IEFycmF5KGFyZ3VtZW50cy5sZW5ndGggLSAxKTtcbiAgICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCBhcmdzLmxlbmd0aDsgaSsrKSB7XG4gICAgICAgICAgICBhcmdzW2ldID0gYXJndW1lbnRzW2kgKyAxXTtcbiAgICAgICAgfVxuICAgICAgICAvLyBTdG9yZSBhbmQgcmVnaXN0ZXIgdGhlIHRhc2tcbiAgICAgICAgdmFyIHRhc2sgPSB7IGNhbGxiYWNrOiBjYWxsYmFjaywgYXJnczogYXJncyB9O1xuICAgICAgICB0YXNrc0J5SGFuZGxlW25leHRIYW5kbGVdID0gdGFzaztcbiAgICAgICAgcmVnaXN0ZXJJbW1lZGlhdGUobmV4dEhhbmRsZSk7XG4gICAgICAgIHJldHVybiBuZXh0SGFuZGxlKys7XG4gICAgfVxuICAgIGZ1bmN0aW9uIGNsZWFySW1tZWRpYXRlKGhhbmRsZSkge1xuICAgICAgICBkZWxldGUgdGFza3NCeUhhbmRsZVtoYW5kbGVdO1xuICAgIH1cbiAgICBmdW5jdGlvbiBydW4odGFzaykge1xuICAgICAgICB2YXIgY2FsbGJhY2sgPSB0YXNrLmNhbGxiYWNrO1xuICAgICAgICB2YXIgYXJncyA9IHRhc2suYXJncztcbiAgICAgICAgc3dpdGNoIChhcmdzLmxlbmd0aCkge1xuICAgICAgICAgICAgY2FzZSAwOlxuICAgICAgICAgICAgICAgIGNhbGxiYWNrKCk7XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICBjYXNlIDE6XG4gICAgICAgICAgICAgICAgY2FsbGJhY2soYXJnc1swXSk7XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICBjYXNlIDI6XG4gICAgICAgICAgICAgICAgY2FsbGJhY2soYXJnc1swXSwgYXJnc1sxXSk7XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICBjYXNlIDM6XG4gICAgICAgICAgICAgICAgY2FsbGJhY2soYXJnc1swXSwgYXJnc1sxXSwgYXJnc1syXSk7XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICBkZWZhdWx0OlxuICAgICAgICAgICAgICAgIGNhbGxiYWNrLmFwcGx5KHVuZGVmaW5lZCwgYXJncyk7XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgIH1cbiAgICB9XG4gICAgZnVuY3Rpb24gcnVuSWZQcmVzZW50KGhhbmRsZSkge1xuICAgICAgICAvLyBGcm9tIHRoZSBzcGVjOiBcIldhaXQgdW50aWwgYW55IGludm9jYXRpb25zIG9mIHRoaXMgYWxnb3JpdGhtIHN0YXJ0ZWQgYmVmb3JlIHRoaXMgb25lIGhhdmUgY29tcGxldGVkLlwiXG4gICAgICAgIC8vIFNvIGlmIHdlJ3JlIGN1cnJlbnRseSBydW5uaW5nIGEgdGFzaywgd2UnbGwgbmVlZCB0byBkZWxheSB0aGlzIGludm9jYXRpb24uXG4gICAgICAgIGlmIChjdXJyZW50bHlSdW5uaW5nQVRhc2spIHtcbiAgICAgICAgICAgIC8vIERlbGF5IGJ5IGRvaW5nIGEgc2V0VGltZW91dC4gc2V0SW1tZWRpYXRlIHdhcyB0cmllZCBpbnN0ZWFkLCBidXQgaW4gRmlyZWZveCA3IGl0IGdlbmVyYXRlZCBhXG4gICAgICAgICAgICAvLyBcInRvbyBtdWNoIHJlY3Vyc2lvblwiIGVycm9yLlxuICAgICAgICAgICAgc2V0VGltZW91dChydW5JZlByZXNlbnQsIDAsIGhhbmRsZSk7XG4gICAgICAgIH1cbiAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICB2YXIgdGFzayA9IHRhc2tzQnlIYW5kbGVbaGFuZGxlXTtcbiAgICAgICAgICAgIGlmICh0YXNrKSB7XG4gICAgICAgICAgICAgICAgY3VycmVudGx5UnVubmluZ0FUYXNrID0gdHJ1ZTtcbiAgICAgICAgICAgICAgICB0cnkge1xuICAgICAgICAgICAgICAgICAgICBydW4odGFzayk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGZpbmFsbHkge1xuICAgICAgICAgICAgICAgICAgICBjbGVhckltbWVkaWF0ZShoYW5kbGUpO1xuICAgICAgICAgICAgICAgICAgICBjdXJyZW50bHlSdW5uaW5nQVRhc2sgPSBmYWxzZTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICB9XG4gICAgZnVuY3Rpb24gaW5zdGFsbE5leHRUaWNrSW1wbGVtZW50YXRpb24oKSB7XG4gICAgICAgIHJlZ2lzdGVySW1tZWRpYXRlID0gZnVuY3Rpb24gKGhhbmRsZSkge1xuICAgICAgICAgICAgcHJvY2Vzcy5uZXh0VGljayhmdW5jdGlvbiAoKSB7IHJ1bklmUHJlc2VudChoYW5kbGUpOyB9KTtcbiAgICAgICAgfTtcbiAgICB9XG4gICAgZnVuY3Rpb24gY2FuVXNlUG9zdE1lc3NhZ2UoKSB7XG4gICAgICAgIC8vIFRoZSB0ZXN0IGFnYWluc3QgYGltcG9ydFNjcmlwdHNgIHByZXZlbnRzIHRoaXMgaW1wbGVtZW50YXRpb24gZnJvbSBiZWluZyBpbnN0YWxsZWQgaW5zaWRlIGEgd2ViIHdvcmtlcixcbiAgICAgICAgLy8gd2hlcmUgYGdsb2JhbC5wb3N0TWVzc2FnZWAgbWVhbnMgc29tZXRoaW5nIGNvbXBsZXRlbHkgZGlmZmVyZW50IGFuZCBjYW4ndCBiZSB1c2VkIGZvciB0aGlzIHB1cnBvc2UuXG4gICAgICAgIGlmIChnbG9iYWwucG9zdE1lc3NhZ2UgJiYgIWdsb2JhbC5pbXBvcnRTY3JpcHRzKSB7XG4gICAgICAgICAgICB2YXIgcG9zdE1lc3NhZ2VJc0FzeW5jaHJvbm91cyA9IHRydWU7XG4gICAgICAgICAgICB2YXIgb2xkT25NZXNzYWdlID0gZ2xvYmFsLm9ubWVzc2FnZTtcbiAgICAgICAgICAgIGdsb2JhbC5vbm1lc3NhZ2UgPSBmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgICAgICAgcG9zdE1lc3NhZ2VJc0FzeW5jaHJvbm91cyA9IGZhbHNlO1xuICAgICAgICAgICAgfTtcbiAgICAgICAgICAgIGdsb2JhbC5wb3N0TWVzc2FnZShcIlwiLCBcIipcIik7XG4gICAgICAgICAgICBnbG9iYWwub25tZXNzYWdlID0gb2xkT25NZXNzYWdlO1xuICAgICAgICAgICAgcmV0dXJuIHBvc3RNZXNzYWdlSXNBc3luY2hyb25vdXM7XG4gICAgICAgIH1cbiAgICB9XG4gICAgZnVuY3Rpb24gaW5zdGFsbFBvc3RNZXNzYWdlSW1wbGVtZW50YXRpb24oKSB7XG4gICAgICAgIC8vIEluc3RhbGxzIGFuIGV2ZW50IGhhbmRsZXIgb24gYGdsb2JhbGAgZm9yIHRoZSBgbWVzc2FnZWAgZXZlbnQ6IHNlZVxuICAgICAgICAvLyAqIGh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2VuL0RPTS93aW5kb3cucG9zdE1lc3NhZ2VcbiAgICAgICAgLy8gKiBodHRwOi8vd3d3LndoYXR3Zy5vcmcvc3BlY3Mvd2ViLWFwcHMvY3VycmVudC13b3JrL211bHRpcGFnZS9jb21tcy5odG1sI2Nyb3NzRG9jdW1lbnRNZXNzYWdlc1xuICAgICAgICB2YXIgbWVzc2FnZVByZWZpeCA9IFwic2V0SW1tZWRpYXRlJFwiICsgTWF0aC5yYW5kb20oKSArIFwiJFwiO1xuICAgICAgICB2YXIgb25HbG9iYWxNZXNzYWdlID0gZnVuY3Rpb24gKGV2ZW50KSB7XG4gICAgICAgICAgICBpZiAoZXZlbnQuc291cmNlID09PSBnbG9iYWwgJiZcbiAgICAgICAgICAgICAgICB0eXBlb2YgZXZlbnQuZGF0YSA9PT0gXCJzdHJpbmdcIiAmJlxuICAgICAgICAgICAgICAgIGV2ZW50LmRhdGEuaW5kZXhPZihtZXNzYWdlUHJlZml4KSA9PT0gMCkge1xuICAgICAgICAgICAgICAgIHJ1bklmUHJlc2VudCgrZXZlbnQuZGF0YS5zbGljZShtZXNzYWdlUHJlZml4Lmxlbmd0aCkpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9O1xuICAgICAgICBpZiAoZ2xvYmFsLmFkZEV2ZW50TGlzdGVuZXIpIHtcbiAgICAgICAgICAgIGdsb2JhbC5hZGRFdmVudExpc3RlbmVyKFwibWVzc2FnZVwiLCBvbkdsb2JhbE1lc3NhZ2UsIGZhbHNlKTtcbiAgICAgICAgfVxuICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgIGdsb2JhbC5hdHRhY2hFdmVudChcIm9ubWVzc2FnZVwiLCBvbkdsb2JhbE1lc3NhZ2UpO1xuICAgICAgICB9XG4gICAgICAgIHJlZ2lzdGVySW1tZWRpYXRlID0gZnVuY3Rpb24gKGhhbmRsZSkge1xuICAgICAgICAgICAgZ2xvYmFsLnBvc3RNZXNzYWdlKG1lc3NhZ2VQcmVmaXggKyBoYW5kbGUsIFwiKlwiKTtcbiAgICAgICAgfTtcbiAgICB9XG4gICAgZnVuY3Rpb24gaW5zdGFsbE1lc3NhZ2VDaGFubmVsSW1wbGVtZW50YXRpb24oKSB7XG4gICAgICAgIHZhciBjaGFubmVsID0gbmV3IE1lc3NhZ2VDaGFubmVsKCk7XG4gICAgICAgIGNoYW5uZWwucG9ydDEub25tZXNzYWdlID0gZnVuY3Rpb24gKGV2ZW50KSB7XG4gICAgICAgICAgICB2YXIgaGFuZGxlID0gZXZlbnQuZGF0YTtcbiAgICAgICAgICAgIHJ1bklmUHJlc2VudChoYW5kbGUpO1xuICAgICAgICB9O1xuICAgICAgICByZWdpc3RlckltbWVkaWF0ZSA9IGZ1bmN0aW9uIChoYW5kbGUpIHtcbiAgICAgICAgICAgIGNoYW5uZWwucG9ydDIucG9zdE1lc3NhZ2UoaGFuZGxlKTtcbiAgICAgICAgfTtcbiAgICB9XG4gICAgZnVuY3Rpb24gaW5zdGFsbFJlYWR5U3RhdGVDaGFuZ2VJbXBsZW1lbnRhdGlvbigpIHtcbiAgICAgICAgdmFyIGh0bWwgPSBkb2MuZG9jdW1lbnRFbGVtZW50O1xuICAgICAgICByZWdpc3RlckltbWVkaWF0ZSA9IGZ1bmN0aW9uIChoYW5kbGUpIHtcbiAgICAgICAgICAgIC8vIENyZWF0ZSBhIDxzY3JpcHQ+IGVsZW1lbnQ7IGl0cyByZWFkeXN0YXRlY2hhbmdlIGV2ZW50IHdpbGwgYmUgZmlyZWQgYXN5bmNocm9ub3VzbHkgb25jZSBpdCBpcyBpbnNlcnRlZFxuICAgICAgICAgICAgLy8gaW50byB0aGUgZG9jdW1lbnQuIERvIHNvLCB0aHVzIHF1ZXVpbmcgdXAgdGhlIHRhc2suIFJlbWVtYmVyIHRvIGNsZWFuIHVwIG9uY2UgaXQncyBiZWVuIGNhbGxlZC5cbiAgICAgICAgICAgIHZhciBzY3JpcHQgPSBkb2MuY3JlYXRlRWxlbWVudChcInNjcmlwdFwiKTtcbiAgICAgICAgICAgIHNjcmlwdC5vbnJlYWR5c3RhdGVjaGFuZ2UgPSBmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgICAgICAgcnVuSWZQcmVzZW50KGhhbmRsZSk7XG4gICAgICAgICAgICAgICAgc2NyaXB0Lm9ucmVhZHlzdGF0ZWNoYW5nZSA9IG51bGw7XG4gICAgICAgICAgICAgICAgaHRtbC5yZW1vdmVDaGlsZChzY3JpcHQpO1xuICAgICAgICAgICAgICAgIHNjcmlwdCA9IG51bGw7XG4gICAgICAgICAgICB9O1xuICAgICAgICAgICAgaHRtbC5hcHBlbmRDaGlsZChzY3JpcHQpO1xuICAgICAgICB9O1xuICAgIH1cbiAgICBmdW5jdGlvbiBpbnN0YWxsU2V0VGltZW91dEltcGxlbWVudGF0aW9uKCkge1xuICAgICAgICByZWdpc3RlckltbWVkaWF0ZSA9IGZ1bmN0aW9uIChoYW5kbGUpIHtcbiAgICAgICAgICAgIHNldFRpbWVvdXQocnVuSWZQcmVzZW50LCAwLCBoYW5kbGUpO1xuICAgICAgICB9O1xuICAgIH1cbiAgICAvLyBJZiBzdXBwb3J0ZWQsIHdlIHNob3VsZCBhdHRhY2ggdG8gdGhlIHByb3RvdHlwZSBvZiBnbG9iYWwsIHNpbmNlIHRoYXQgaXMgd2hlcmUgc2V0VGltZW91dCBldCBhbC4gbGl2ZS5cbiAgICB2YXIgYXR0YWNoVG8gPSBPYmplY3QuZ2V0UHJvdG90eXBlT2YgJiYgT2JqZWN0LmdldFByb3RvdHlwZU9mKGdsb2JhbCk7XG4gICAgYXR0YWNoVG8gPSBhdHRhY2hUbyAmJiBhdHRhY2hUby5zZXRUaW1lb3V0ID8gYXR0YWNoVG8gOiBnbG9iYWw7XG4gICAgLy8gRG9uJ3QgZ2V0IGZvb2xlZCBieSBlLmcuIGJyb3dzZXJpZnkgZW52aXJvbm1lbnRzLlxuICAgIGlmICh7fS50b1N0cmluZy5jYWxsKGdsb2JhbC5wcm9jZXNzKSA9PT0gXCJbb2JqZWN0IHByb2Nlc3NdXCIpIHtcbiAgICAgICAgLy8gRm9yIE5vZGUuanMgYmVmb3JlIDAuOVxuICAgICAgICBpbnN0YWxsTmV4dFRpY2tJbXBsZW1lbnRhdGlvbigpO1xuICAgIH1cbiAgICBlbHNlIGlmIChjYW5Vc2VQb3N0TWVzc2FnZSgpKSB7XG4gICAgICAgIC8vIEZvciBub24tSUUxMCBtb2Rlcm4gYnJvd3NlcnNcbiAgICAgICAgaW5zdGFsbFBvc3RNZXNzYWdlSW1wbGVtZW50YXRpb24oKTtcbiAgICB9XG4gICAgZWxzZSBpZiAoZ2xvYmFsLk1lc3NhZ2VDaGFubmVsKSB7XG4gICAgICAgIC8vIEZvciB3ZWIgd29ya2Vycywgd2hlcmUgc3VwcG9ydGVkXG4gICAgICAgIGluc3RhbGxNZXNzYWdlQ2hhbm5lbEltcGxlbWVudGF0aW9uKCk7XG4gICAgfVxuICAgIGVsc2UgaWYgKGRvYyAmJiBcIm9ucmVhZHlzdGF0ZWNoYW5nZVwiIGluIGRvYy5jcmVhdGVFbGVtZW50KFwic2NyaXB0XCIpKSB7XG4gICAgICAgIC8vIEZvciBJRSA24oCTOFxuICAgICAgICBpbnN0YWxsUmVhZHlTdGF0ZUNoYW5nZUltcGxlbWVudGF0aW9uKCk7XG4gICAgfVxuICAgIGVsc2Uge1xuICAgICAgICAvLyBGb3Igb2xkZXIgYnJvd3NlcnNcbiAgICAgICAgaW5zdGFsbFNldFRpbWVvdXRJbXBsZW1lbnRhdGlvbigpO1xuICAgIH1cbiAgICBhdHRhY2hUby5zZXRJbW1lZGlhdGUgPSBzZXRJbW1lZGlhdGU7XG4gICAgYXR0YWNoVG8uY2xlYXJJbW1lZGlhdGUgPSBjbGVhckltbWVkaWF0ZTtcbn0odHlwZW9mIHNlbGYgPT09IFwidW5kZWZpbmVkXCIgPyB0eXBlb2YgZ2xvYmFsID09PSBcInVuZGVmaW5lZFwiID8gdGhpcyA6IGdsb2JhbCA6IHNlbGYpKTtcbiJdLCJtYXBwaW5ncyI6IkFBQUE7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFmQTtBQWlCQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUVBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUFBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUdBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBRUE7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBRUE7QUFDQTtBQUNBO0FBRUE7QUFDQTtBQUNBO0FBRUE7QUFDQTtBQUNBO0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QSIsInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./node_modules/setimmediate/setImmediate.js\n')},"./node_modules/timers-browserify/main.js":
|
||
/*!************************************************!*\
|
||
!*** ./node_modules/timers-browserify/main.js ***!
|
||
\************************************************/
|
||
/*! no static exports found */function(module,exports,__webpack_require__){"use strict";eval('/* WEBPACK VAR INJECTION */(function(global) {\n\nvar scope = typeof global !== "undefined" && global || typeof self !== "undefined" && self || window;\nvar apply = Function.prototype.apply; // DOM APIs, for completeness\n\nexports.setTimeout = function () {\n return new Timeout(apply.call(setTimeout, scope, arguments), clearTimeout);\n};\n\nexports.setInterval = function () {\n return new Timeout(apply.call(setInterval, scope, arguments), clearInterval);\n};\n\nexports.clearTimeout = exports.clearInterval = function (timeout) {\n if (timeout) {\n timeout.close();\n }\n};\n\nfunction Timeout(id, clearFn) {\n this._id = id;\n this._clearFn = clearFn;\n}\n\nTimeout.prototype.unref = Timeout.prototype.ref = function () {};\n\nTimeout.prototype.close = function () {\n this._clearFn.call(scope, this._id);\n}; // Does not start the time, just sets up the members needed.\n\n\nexports.enroll = function (item, msecs) {\n clearTimeout(item._idleTimeoutId);\n item._idleTimeout = msecs;\n};\n\nexports.unenroll = function (item) {\n clearTimeout(item._idleTimeoutId);\n item._idleTimeout = -1;\n};\n\nexports._unrefActive = exports.active = function (item) {\n clearTimeout(item._idleTimeoutId);\n var msecs = item._idleTimeout;\n\n if (msecs >= 0) {\n item._idleTimeoutId = setTimeout(function onTimeout() {\n if (item._onTimeout) item._onTimeout();\n }, msecs);\n }\n}; // setimmediate attaches itself to the global object\n\n\n__webpack_require__(/*! setimmediate */ "./node_modules/setimmediate/setImmediate.js"); // On some exotic environments, it\'s not clear which object `setimmediate` was\n// able to install onto. Search each possibility in the same order as the\n// `setimmediate` library.\n\n\nexports.setImmediate = typeof self !== "undefined" && self.setImmediate || typeof global !== "undefined" && global.setImmediate || this && this.setImmediate;\nexports.clearImmediate = typeof self !== "undefined" && self.clearImmediate || typeof global !== "undefined" && global.clearImmediate || this && this.clearImmediate;\n/* WEBPACK VAR INJECTION */}.call(this, __webpack_require__(/*! ./../webpack/buildin/global.js */ "./node_modules/webpack/buildin/global.js")))//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvdGltZXJzLWJyb3dzZXJpZnkvbWFpbi5qcy5qcyIsInNvdXJjZXMiOlsid2VicGFjazovL1NOTGlicmFyeS8uL25vZGVfbW9kdWxlcy90aW1lcnMtYnJvd3NlcmlmeS9tYWluLmpzPzUxMTgiXSwic291cmNlc0NvbnRlbnQiOlsiXCJ1c2Ugc3RyaWN0XCI7XG52YXIgc2NvcGUgPSAodHlwZW9mIGdsb2JhbCAhPT0gXCJ1bmRlZmluZWRcIiAmJiBnbG9iYWwpIHx8XG4gICAgKHR5cGVvZiBzZWxmICE9PSBcInVuZGVmaW5lZFwiICYmIHNlbGYpIHx8XG4gICAgd2luZG93O1xudmFyIGFwcGx5ID0gRnVuY3Rpb24ucHJvdG90eXBlLmFwcGx5O1xuLy8gRE9NIEFQSXMsIGZvciBjb21wbGV0ZW5lc3NcbmV4cG9ydHMuc2V0VGltZW91dCA9IGZ1bmN0aW9uICgpIHtcbiAgICByZXR1cm4gbmV3IFRpbWVvdXQoYXBwbHkuY2FsbChzZXRUaW1lb3V0LCBzY29wZSwgYXJndW1lbnRzKSwgY2xlYXJUaW1lb3V0KTtcbn07XG5leHBvcnRzLnNldEludGVydmFsID0gZnVuY3Rpb24gKCkge1xuICAgIHJldHVybiBuZXcgVGltZW91dChhcHBseS5jYWxsKHNldEludGVydmFsLCBzY29wZSwgYXJndW1lbnRzKSwgY2xlYXJJbnRlcnZhbCk7XG59O1xuZXhwb3J0cy5jbGVhclRpbWVvdXQgPVxuICAgIGV4cG9ydHMuY2xlYXJJbnRlcnZhbCA9IGZ1bmN0aW9uICh0aW1lb3V0KSB7XG4gICAgICAgIGlmICh0aW1lb3V0KSB7XG4gICAgICAgICAgICB0aW1lb3V0LmNsb3NlKCk7XG4gICAgICAgIH1cbiAgICB9O1xuZnVuY3Rpb24gVGltZW91dChpZCwgY2xlYXJGbikge1xuICAgIHRoaXMuX2lkID0gaWQ7XG4gICAgdGhpcy5fY2xlYXJGbiA9IGNsZWFyRm47XG59XG5UaW1lb3V0LnByb3RvdHlwZS51bnJlZiA9IFRpbWVvdXQucHJvdG90eXBlLnJlZiA9IGZ1bmN0aW9uICgpIHsgfTtcblRpbWVvdXQucHJvdG90eXBlLmNsb3NlID0gZnVuY3Rpb24gKCkge1xuICAgIHRoaXMuX2NsZWFyRm4uY2FsbChzY29wZSwgdGhpcy5faWQpO1xufTtcbi8vIERvZXMgbm90IHN0YXJ0IHRoZSB0aW1lLCBqdXN0IHNldHMgdXAgdGhlIG1lbWJlcnMgbmVlZGVkLlxuZXhwb3J0cy5lbnJvbGwgPSBmdW5jdGlvbiAoaXRlbSwgbXNlY3MpIHtcbiAgICBjbGVhclRpbWVvdXQoaXRlbS5faWRsZVRpbWVvdXRJZCk7XG4gICAgaXRlbS5faWRsZVRpbWVvdXQgPSBtc2Vjcztcbn07XG5leHBvcnRzLnVuZW5yb2xsID0gZnVuY3Rpb24gKGl0ZW0pIHtcbiAgICBjbGVhclRpbWVvdXQoaXRlbS5faWRsZVRpbWVvdXRJZCk7XG4gICAgaXRlbS5faWRsZVRpbWVvdXQgPSAtMTtcbn07XG5leHBvcnRzLl91bnJlZkFjdGl2ZSA9IGV4cG9ydHMuYWN0aXZlID0gZnVuY3Rpb24gKGl0ZW0pIHtcbiAgICBjbGVhclRpbWVvdXQoaXRlbS5faWRsZVRpbWVvdXRJZCk7XG4gICAgdmFyIG1zZWNzID0gaXRlbS5faWRsZVRpbWVvdXQ7XG4gICAgaWYgKG1zZWNzID49IDApIHtcbiAgICAgICAgaXRlbS5faWRsZVRpbWVvdXRJZCA9IHNldFRpbWVvdXQoZnVuY3Rpb24gb25UaW1lb3V0KCkge1xuICAgICAgICAgICAgaWYgKGl0ZW0uX29uVGltZW91dClcbiAgICAgICAgICAgICAgICBpdGVtLl9vblRpbWVvdXQoKTtcbiAgICAgICAgfSwgbXNlY3MpO1xuICAgIH1cbn07XG4vLyBzZXRpbW1lZGlhdGUgYXR0YWNoZXMgaXRzZWxmIHRvIHRoZSBnbG9iYWwgb2JqZWN0XG5yZXF1aXJlKFwic2V0aW1tZWRpYXRlXCIpO1xuLy8gT24gc29tZSBleG90aWMgZW52aXJvbm1lbnRzLCBpdCdzIG5vdCBjbGVhciB3aGljaCBvYmplY3QgYHNldGltbWVkaWF0ZWAgd2FzXG4vLyBhYmxlIHRvIGluc3RhbGwgb250by4gIFNlYXJjaCBlYWNoIHBvc3NpYmlsaXR5IGluIHRoZSBzYW1lIG9yZGVyIGFzIHRoZVxuLy8gYHNldGltbWVkaWF0ZWAgbGlicmFyeS5cbmV4cG9ydHMuc2V0SW1tZWRpYXRlID0gKHR5cGVvZiBzZWxmICE9PSBcInVuZGVmaW5lZFwiICYmIHNlbGYuc2V0SW1tZWRpYXRlKSB8fFxuICAgICh0eXBlb2YgZ2xvYmFsICE9PSBcInVuZGVmaW5lZFwiICYmIGdsb2JhbC5zZXRJbW1lZGlhdGUpIHx8XG4gICAgKHRoaXMgJiYgdGhpcy5zZXRJbW1lZGlhdGUpO1xuZXhwb3J0cy5jbGVhckltbWVkaWF0ZSA9ICh0eXBlb2Ygc2VsZiAhPT0gXCJ1bmRlZmluZWRcIiAmJiBzZWxmLmNsZWFySW1tZWRpYXRlKSB8fFxuICAgICh0eXBlb2YgZ2xvYmFsICE9PSBcInVuZGVmaW5lZFwiICYmIGdsb2JhbC5jbGVhckltbWVkaWF0ZSkgfHxcbiAgICAodGhpcyAmJiB0aGlzLmNsZWFySW1tZWRpYXRlKTtcbiJdLCJtYXBwaW5ncyI6IkFBQUE7QUFDQTtBQUFBO0FBR0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFEQTtBQUdBO0EiLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./node_modules/timers-browserify/main.js\n')},"./node_modules/webpack/buildin/global.js":
|
||
/*!***********************************!*\
|
||
!*** (webpack)/buildin/global.js ***!
|
||
\***********************************/
|
||
/*! no static exports found */function(module,exports,__webpack_require__){"use strict";eval('\n\nfunction _typeof(obj) { "@babel/helpers - typeof"; if (typeof Symbol === "function" && typeof Symbol.iterator === "symbol") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }; } return _typeof(obj); }\n\nvar g; // This works in non-strict mode\n\ng = function () {\n return this;\n}();\n\ntry {\n // This works if eval is allowed (see CSP)\n g = g || new Function("return this")();\n} catch (e) {\n // This works if the window reference is available\n if ((typeof window === "undefined" ? "undefined" : _typeof(window)) === "object") g = window;\n} // g can still be undefined, but nothing to do about it...\n// We return undefined, instead of nothing here, so it\'s\n// easier to handle this case. if(!global) { ...}\n\n\nmodule.exports = g;//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvd2VicGFjay9idWlsZGluL2dsb2JhbC5qcy5qcyIsInNvdXJjZXMiOlsid2VicGFjazovL1NOTGlicmFyeS8od2VicGFjaykvYnVpbGRpbi9nbG9iYWwuanM/Y2QwMCJdLCJzb3VyY2VzQ29udGVudCI6WyJcInVzZSBzdHJpY3RcIjtcbnZhciBnO1xuLy8gVGhpcyB3b3JrcyBpbiBub24tc3RyaWN0IG1vZGVcbmcgPSAoZnVuY3Rpb24gKCkge1xuICAgIHJldHVybiB0aGlzO1xufSkoKTtcbnRyeSB7XG4gICAgLy8gVGhpcyB3b3JrcyBpZiBldmFsIGlzIGFsbG93ZWQgKHNlZSBDU1ApXG4gICAgZyA9IGcgfHwgbmV3IEZ1bmN0aW9uKFwicmV0dXJuIHRoaXNcIikoKTtcbn1cbmNhdGNoIChlKSB7XG4gICAgLy8gVGhpcyB3b3JrcyBpZiB0aGUgd2luZG93IHJlZmVyZW5jZSBpcyBhdmFpbGFibGVcbiAgICBpZiAodHlwZW9mIHdpbmRvdyA9PT0gXCJvYmplY3RcIilcbiAgICAgICAgZyA9IHdpbmRvdztcbn1cbi8vIGcgY2FuIHN0aWxsIGJlIHVuZGVmaW5lZCwgYnV0IG5vdGhpbmcgdG8gZG8gYWJvdXQgaXQuLi5cbi8vIFdlIHJldHVybiB1bmRlZmluZWQsIGluc3RlYWQgb2Ygbm90aGluZyBoZXJlLCBzbyBpdCdzXG4vLyBlYXNpZXIgdG8gaGFuZGxlIHRoaXMgY2FzZS4gaWYoIWdsb2JhbCkgeyAuLi59XG5tb2R1bGUuZXhwb3J0cyA9IGc7XG4iXSwibWFwcGluZ3MiOiJBQUFBO0FBQ0E7OztBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBRUE7QUFDQTtBQUVBO0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFEQSIsInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./node_modules/webpack/buildin/global.js\n')},"./node_modules/webpack/buildin/module.js":
|
||
/*!***********************************!*\
|
||
!*** (webpack)/buildin/module.js ***!
|
||
\***********************************/
|
||
/*! no static exports found */function(module,exports,__webpack_require__){"use strict";eval('\n\nmodule.exports = function (module) {\n if (!module.webpackPolyfill) {\n module.deprecate = function () {};\n\n module.paths = []; // module.parent = undefined by default\n\n if (!module.children) module.children = [];\n Object.defineProperty(module, "loaded", {\n enumerable: true,\n get: function get() {\n return module.l;\n }\n });\n Object.defineProperty(module, "id", {\n enumerable: true,\n get: function get() {\n return module.i;\n }\n });\n module.webpackPolyfill = 1;\n }\n\n return module;\n};//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvd2VicGFjay9idWlsZGluL21vZHVsZS5qcy5qcyIsInNvdXJjZXMiOlsid2VicGFjazovL1NOTGlicmFyeS8od2VicGFjaykvYnVpbGRpbi9tb2R1bGUuanM/Y2VkMiJdLCJzb3VyY2VzQ29udGVudCI6WyJcInVzZSBzdHJpY3RcIjtcbm1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24gKG1vZHVsZSkge1xuICAgIGlmICghbW9kdWxlLndlYnBhY2tQb2x5ZmlsbCkge1xuICAgICAgICBtb2R1bGUuZGVwcmVjYXRlID0gZnVuY3Rpb24gKCkgeyB9O1xuICAgICAgICBtb2R1bGUucGF0aHMgPSBbXTtcbiAgICAgICAgLy8gbW9kdWxlLnBhcmVudCA9IHVuZGVmaW5lZCBieSBkZWZhdWx0XG4gICAgICAgIGlmICghbW9kdWxlLmNoaWxkcmVuKVxuICAgICAgICAgICAgbW9kdWxlLmNoaWxkcmVuID0gW107XG4gICAgICAgIE9iamVjdC5kZWZpbmVQcm9wZXJ0eShtb2R1bGUsIFwibG9hZGVkXCIsIHtcbiAgICAgICAgICAgIGVudW1lcmFibGU6IHRydWUsXG4gICAgICAgICAgICBnZXQ6IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gbW9kdWxlLmw7XG4gICAgICAgICAgICB9XG4gICAgICAgIH0pO1xuICAgICAgICBPYmplY3QuZGVmaW5lUHJvcGVydHkobW9kdWxlLCBcImlkXCIsIHtcbiAgICAgICAgICAgIGVudW1lcmFibGU6IHRydWUsXG4gICAgICAgICAgICBnZXQ6IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gbW9kdWxlLmk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH0pO1xuICAgICAgICBtb2R1bGUud2VicGFja1BvbHlmaWxsID0gMTtcbiAgICB9XG4gICAgcmV0dXJuIG1vZHVsZTtcbn07XG4iXSwibWFwcGluZ3MiOiJBQUFBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFKQTtBQU1BO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFKQTtBQU1BO0FBQ0E7QUFDQTtBQUFBO0FBQ0EiLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./node_modules/webpack/buildin/module.js\n')}})},module.exports=factory()},function(e,t,n){"use strict";n.d(t,"e",(function(){return r})),n.d(t,"f",(function(){return a})),n.d(t,"c",(function(){return o})),n.d(t,"a",(function(){return c})),n.d(t,"b",(function(){return s})),n.d(t,"d",(function(){return l}));const r=!1;function a(e){return null==e}function o(){try{const e=navigator.platform.toLowerCase();let t="";return-1!==e.indexOf("mac")?t="mac":-1!==e.indexOf("win")&&(t="windows"),-1!==e.indexOf("linux")&&(t="linux"),t+(l()?"-desktop":"-web")}catch(e){return"unknown-platform"}}let i;function c(e){if("undefined"!=typeof Intl&&Intl.DateTimeFormat){if(!i){const e=navigator.languages&&navigator.languages.length?navigator.languages[0]:navigator.language;i=new Intl.DateTimeFormat(e,{year:"numeric",month:"numeric",day:"2-digit",hour:"2-digit",minute:"2-digit"})}return i.format(e)}return e.toDateString()+" "+e.toLocaleTimeString()}function s(e,t,n=!1){let r;return()=>{const a=this,o=arguments,i=n&&!r;clearTimeout(r),r=setTimeout((function(){r=null,n||e.apply(a,o)}),t),i&&e.apply(a,o)}}function l(){return window.isElectron}Array.prototype.includes||Object.defineProperty(Array.prototype,"includes",{value:function(e,t){if(null==this)throw new TypeError('"this" is null or not defined');var n=Object(this),r=n.length>>>0;if(0===r)return!1;var a,o,i=0|t,c=Math.max(i>=0?i:r-Math.abs(i),0);for(;c<r;){if((a=n[c])===(o=e)||"number"==typeof a&&"number"==typeof o&&isNaN(a)&&isNaN(o))return!0;c++}return!1}})},function(e,t,n){"use strict";n.d(t,"b",(function(){return s})),n.d(t,"c",(function(){return l})),n.d(t,"a",(function(){return g}));var r=n(1),a=n(54),o=n.n(a),i=n(0);function c(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}let s,l;!function(e){e[e.TagChanged=1]="TagChanged",e[e.ActiveEditorChanged=2]="ActiveEditorChanged",e[e.PreferencesChanged=3]="PreferencesChanged",e[e.PanelResized=4]="PanelResized",e[e.EditorFocused=5]="EditorFocused",e[e.BeganBackupDownload=6]="BeganBackupDownload",e[e.EndedBackupDownload=7]="EndedBackupDownload",e[e.DesktopExtsReady=8]="DesktopExtsReady",e[e.WindowDidFocus=9]="WindowDidFocus",e[e.WindowDidBlur=10]="WindowDidBlur"}(s||(s={})),function(e){e[e.UserInteraction=1]="UserInteraction",e[e.Script=2]="Script"}(l||(l={}));class g{constructor(e,t,n){c(this,"$rootScope",void 0),c(this,"$timeout",void 0),c(this,"application",void 0),c(this,"observers",[]),c(this,"locked",!0),c(this,"unsubApp",void 0),c(this,"rootScopeCleanup1",void 0),c(this,"rootScopeCleanup2",void 0),c(this,"onVisibilityChange",void 0),c(this,"selectedTag",void 0),c(this,"userPreferences",void 0),c(this,"multiEditorEnabled",!1),this.$timeout=t,this.$rootScope=e,this.application=n,this.registerVisibilityObservers(),this.addAppEventObserver(),this.streamNotesAndTags();this.onVisibilityChange=(()=>{const e="visible"===document.visibilityState?s.WindowDidFocus:s.WindowDidBlur;this.notifyEvent(e)}).bind(this)}deinit(){this.unsubApp(),this.unsubApp=void 0,this.observers.length=0,this.rootScopeCleanup1&&(this.rootScopeCleanup1(),this.rootScopeCleanup2(),this.rootScopeCleanup1=void 0,this.rootScopeCleanup2=void 0),document.removeEventListener("visibilitychange",this.onVisibilityChange),this.onVisibilityChange=void 0}createEditor(e){const t=this.getActiveEditor();!t||this.multiEditorEnabled?this.application.editorGroup.createEditor(void 0,e):t.reset(e)}async openEditor(e){const t=this.application.findItem(e),n=async()=>{const n=this.getActiveEditor();!n||this.multiEditorEnabled?this.application.editorGroup.createEditor(e):n.setNote(t),await this.notifyEvent(s.ActiveEditorChanged)};return t&&t.safeContent.protected&&await this.application.privilegesService.actionRequiresPrivilege(i.ProtectedAction.ViewProtectedNotes)?new Promise(e=>{this.application.presentPrivilegesModal(i.ProtectedAction.ViewProtectedNotes,()=>{n().then(e)})}):n()}getActiveEditor(){return this.application.editorGroup.editors[0]}getEditors(){return this.application.editorGroup.editors}closeEditor(e){this.application.editorGroup.closeEditor(e)}closeActiveEditor(){this.application.editorGroup.closeActiveEditor()}closeAllEditors(){this.application.editorGroup.closeAllEditors()}editorForNote(e){for(const t of this.getEditors())if(t.note.uuid===e.uuid)return t}streamNotesAndTags(){this.application.streamItems([i.ContentType.Note,i.ContentType.Tag],async(e,t)=>{if(t===i.PayloadSource.PreSyncSave){const t=e.filter(e=>e.content_type===i.ContentType.Note);for(const e of t){var n,r;const t=this.editorForNote(e);t&&((e.deleted||e.trashed&&!(null===(n=this.selectedTag)||void 0===n?void 0:n.isTrashTag)||e.archived&&!(null===(r=this.selectedTag)||void 0===r?void 0:r.isArchiveTag))&&this.closeEditor(t))}}if(this.selectedTag){const t=e.find(e=>e.uuid===this.selectedTag.uuid);t&&(this.selectedTag=t)}})}addAppEventObserver(){this.unsubApp=this.application.addEventObserver(async e=>{e===i.ApplicationEvent.Started?this.locked=!0:e===i.ApplicationEvent.Launched&&(this.locked=!1)})}isLocked(){return this.locked}registerVisibilityObservers(){Object(r.d)()?(this.rootScopeCleanup1=this.$rootScope.$on("window-lost-focus",()=>{this.notifyEvent(s.WindowDidBlur)}),this.rootScopeCleanup2=this.$rootScope.$on("window-gained-focus",()=>{this.notifyEvent(s.WindowDidFocus)})):document.addEventListener("visibilitychange",this.onVisibilityChange)}addObserver(e){return this.observers.push(e),()=>{o()(this.observers,e)}}async notifyEvent(e,t){return new Promise(n=>{this.$timeout(async()=>{for(const n of this.observers)await n(e,t);n()})})}setSelectedTag(e){if(this.selectedTag===e)return;const t=this.selectedTag;this.selectedTag=e,this.notifyEvent(s.TagChanged,{tag:e,previousTag:t})}getNoteTags(e){return this.application.referencingForItem(e).filter(e=>e.content_type===i.ContentType.Tag)}getTagNotes(e){return e.isSmartTag()?this.application.notesMatchingSmartTag(e):this.application.referencesForItem(e).filter(e=>e.content_type===i.ContentType.Note)}getSelectedTag(){return this.selectedTag}setUserPreferences(e){this.userPreferences=e,this.notifyEvent(s.PreferencesChanged)}panelDidResize(e,t){this.notifyEvent(s.PanelResized,{panel:e,collapsed:t})}editorDidFocus(e){this.notifyEvent(s.EditorFocused,{eventSource:e})}beganBackupDownload(){this.notifyEvent(s.BeganBackupDownload)}endedBackupDownload(e){this.notifyEvent(s.EndedBackupDownload,{success:e})}desktopExtensionsReady(){this.notifyEvent(s.DesktopExtsReady)}}g.$inject=["$rootScope","$timeout","application"]},function(e,t,n){n(83),e.exports=angular},function(e,t,n){"use strict";var r=Object.prototype.hasOwnProperty;function a(e,t){return Array.isArray(e)?function(e,t){for(var n,r="",o="",i=Array.isArray(t),c=0;c<e.length;c++)(n=a(e[c]))&&(i&&t[c]&&(n=s(n)),r=r+o+n,o=" ");return r}(e,t):e&&"object"==typeof e?function(e){var t="",n="";for(var a in e)a&&e[a]&&r.call(e,a)&&(t=t+n+a,n=" ");return t}(e):e||""}function o(e){if(!e)return"";if("object"==typeof e){var t="";for(var n in e)r.call(e,n)&&(t=t+n+":"+e[n]+";");return t}return e+""}function i(e,t,n,r){if(!1===t||null==t||!t&&("class"===e||"style"===e))return"";if(!0===t)return" "+(r?e:e+'="'+e+'"');var a=typeof t;return"object"!==a&&"function"!==a||"function"!=typeof t.toJSON||(t=t.toJSON()),"string"==typeof t||(t=JSON.stringify(t),n||-1===t.indexOf('"'))?(n&&(t=s(t))," "+e+'="'+t+'"'):" "+e+"='"+t.replace(/'/g,"'")+"'"}t.merge=function e(t,n){if(1===arguments.length){for(var r=t[0],a=1;a<t.length;a++)r=e(r,t[a]);return r}for(var i in n)if("class"===i){var c=t[i]||[];t[i]=(Array.isArray(c)?c:[c]).concat(n[i]||[])}else if("style"===i){c=(c=o(t[i]))&&";"!==c[c.length-1]?c+";":c;var s=o(n[i]);s=s&&";"!==s[s.length-1]?s+";":s,t[i]=c+s}else t[i]=n[i];return t},t.classes=a,t.style=o,t.attr=i,t.attrs=function(e,t){var n="";for(var c in e)if(r.call(e,c)){var s=e[c];if("class"===c){s=a(s),n=i(c,s,!1,t)+n;continue}"style"===c&&(s=o(s)),n+=i(c,s,!1,t)}return n};var c=/["&<>]/;function s(e){var t=""+e,n=c.exec(t);if(!n)return e;var r,a,o,i="";for(r=n.index,a=0;r<t.length;r++){switch(t.charCodeAt(r)){case 34:o=""";break;case 38:o="&";break;case 60:o="<";break;case 62:o=">";break;default:continue}a!==r&&(i+=t.substring(a,r)),a=r+1,i+=o}return a!==r?i+t.substring(a,r):i}t.escape=s,t.rethrow=function e(t,r,a,o){if(!(t instanceof Error))throw t;if(!("undefined"==typeof window&&r||o))throw t.message+=" on line "+a,t;try{o=o||n(113).readFileSync(r,"utf8")}catch(n){e(t,null,a)}var i=3,c=o.split("\n"),s=Math.max(a-i,0),l=Math.min(c.length,a+i);i=c.slice(s,l).map((function(e,t){var n=t+s+1;return(n==a?" > ":" ")+n+"| "+e})).join("\n");throw t.path=r,t.message=(r||"Pug")+":"+a+"\n"+i+"\n\n"+t.message,t}},function(e,t,n){"use strict";n.d(t,"c",(function(){return o})),n.d(t,"b",(function(){return i})),n.d(t,"a",(function(){return c}));var r=n(0),a=n(19);function o({text:e,title:t,confirmButtonText:n="Confirm",cancelButtonText:r="Cancel",confirmButtonStyle:o="info"}){return new Promise(i=>{new a.SKAlert({title:t,text:e,buttons:[{text:r,style:"neutral",action(){i(!1)}},{text:n,style:o,action(){i(!0)}}]}).present()})}function i({title:e,text:t,closeButtonText:n="OK"}){return new Promise(r=>{new a.SKAlert({title:e,text:t,buttons:[{text:n,style:"neutral",action:r}]}).present()})}class c{alert(e,t,n){return i({text:e,title:t,closeButtonText:n})}confirm(e,t,n,a,i){return o({text:e,title:t,confirmButtonText:n,cancelButtonText:i,confirmButtonStyle:a===r.ButtonType.Danger?"danger":"info"})}blockingDialog(e){const t=new a.SKAlert({text:e});return t.present(),()=>{t.dismiss()}}}},function(e,t,n){var r=n(30),a="object"==typeof self&&self&&self.Object===Object&&self,o=r||a||Function("return this")();e.exports=o},function(e,t){var n=Array.isArray;e.exports=n},function(e,t,n){var r=n(98),a=n(103);e.exports=function(e,t){var n=a(e,t);return r(n)?n:void 0}},function(e,t,n){var r=n(11),a=n(99),o=n(100),i=r?r.toStringTag:void 0;e.exports=function(e){return null==e?void 0===e?"[object Undefined]":"[object Null]":i&&i in Object(e)?a(e):o(e)}},function(e,t){e.exports=function(e){return null!=e&&"object"==typeof e}},function(e,t,n){var r=n(6).Symbol;e.exports=r},function(e,t){e.exports=function(e){var t=typeof e;return null!=e&&("object"==t||"function"==t)}},function(e,t,n){var r=n(119),a=n(120),o=n(121),i=n(122),c=n(123);function s(e){var t=-1,n=null==e?0:e.length;for(this.clear();++t<n;){var r=e[t];this.set(r[0],r[1])}}s.prototype.clear=r,s.prototype.delete=a,s.prototype.get=o,s.prototype.has=i,s.prototype.set=c,e.exports=s},function(e,t,n){var r=n(37);e.exports=function(e,t){for(var n=e.length;n--;)if(r(e[n][0],t))return n;return-1}},function(e,t,n){var r=n(8)(Object,"create");e.exports=r},function(e,t,n){var r=n(137);e.exports=function(e,t){var n=e.__data__;return r(t)?n["string"==typeof t?"string":"hash"]:n.map}},function(e,t,n){var r=n(9),a=n(10);e.exports=function(e){return"symbol"==typeof e||a(e)&&"[object Symbol]"==r(e)}},function(e,t,n){var r=n(17);e.exports=function(e){if("string"==typeof e||r(e))return e;var t=e+"";return"0"==t&&1/e==-1/0?"-0":t}},function(e,t,n){var r;window,r=function(){return function(e){var t={};function n(r){if(t[r])return t[r].exports;var a=t[r]={i:r,l:!1,exports:{}};return e[r].call(a.exports,a,a.exports,n),a.l=!0,a.exports}return n.m=e,n.c=t,n.d=function(e,t,r){n.o(e,t)||Object.defineProperty(e,t,{enumerable:!0,get:r})},n.r=function(e){"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})},n.t=function(e,t){if(1&t&&(e=n(e)),8&t)return e;if(4&t&&"object"==typeof e&&e&&e.__esModule)return e;var r=Object.create(null);if(n.r(r),Object.defineProperty(r,"default",{enumerable:!0,value:e}),2&t&&"string"!=typeof e)for(var a in e)n.d(r,a,function(t){return e[t]}.bind(null,a));return r},n.n=function(e){var t=e&&e.__esModule?function(){return e.default}:function(){return e};return n.d(t,"a",t),t},n.o=function(e,t){return Object.prototype.hasOwnProperty.call(e,t)},n.p="",n(n.s=0)}([function(e,t,n){"use strict";function r(e,t){for(var n=0;n<t.length;n++){var r=t[n];r.enumerable=r.enumerable||!1,r.configurable=!0,"value"in r&&(r.writable=!0),Object.defineProperty(e,r.key,r)}}n.r(t);var a=function(){function e(t){var n,r,a,o=this,i=t.title,c=t.text,s=t.buttons;!function(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}(this,e),a=function(e){if("Enter"===e.key){var t=o.primaryButton();t.action&&t.action(),o.dismiss()}},(r="keyupListener")in(n=this)?Object.defineProperty(n,r,{value:a,enumerable:!0,configurable:!0,writable:!0}):n[r]=a,this.title=i,this.text=c,this.buttons=s}var t,n,a;return t=e,(n=[{key:"buttonsString",value:function(){var e=this.buttons.map((function(e,t){return function(e,t){return"\n <div id='button-".concat(t,"' class='sk-button ").concat(e.style,"'>\n <div class='sk-label'>").concat(e.text,"</div>\n </div>\n ")}(e,t)})).join("");return"\n <div class='sk-button-group'>\n ".concat(e,"\n </div>\n ")}},{key:"templateString",value:function(){var e,t;this.buttons?(e="\n <div class=\"sk-panel-row\" style='margin-top: 8px;'>\n ".concat(this.buttonsString(),"\n </div>\n "),t=""):(e="",t='style="padding-bottom: 8px"');var n=this.title?"<div class='sk-h3 sk-panel-section-title'>".concat(this.title,"</div>"):"",r=this.text?"<p class='sk-p'>".concat(this.text,"</p>"):"";return'\n <div class="sk-modal">\n <div class="sk-modal-background"></div>\n <div class="sk-modal-content">\n <div class="sn-component">\n <div class="sk-panel" style=\'max-width: 500px;\'>\n <div class="sk-panel-content" '.concat(t,'>\n <div class="sk-panel-section">\n ').concat(n,'\n\n <div class="sk-panel-row">\n ').concat(r,"\n </div>\n\n ").concat(e,"\n </div>\n </div>\n </div>\n </div>\n </div>\n </div>\n ")}},{key:"dismiss",value:function(){this.onElement.removeChild(this.element),document.removeEventListener("keyup",this.keyupListener)}},{key:"primaryButton",value:function(){var e=this.buttons.find((function(e){return!0===e.primary}));return e||(e=this.buttons[this.buttons.length-1]),e}},{key:"present",value:function(){var e=this,t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{},n=t.onElement;n||(n=document.body),this.onElement=n,this.element=document.createElement("div"),this.element.className="sn-component",this.element.innerHTML=this.templateString().trim(),this.buttons&&(document.addEventListener("keyup",this.keyupListener),this.buttons.forEach((function(t,n){e.element.querySelector("#button-".concat(n)).onclick=function(){t.action&&t.action(),e.dismiss()}}))),n.appendChild(this.element)}}])&&r(t.prototype,n),a&&r(t,a),e}();n.d(t,"SKAlert",(function(){return a}))}])},e.exports=r()},function(e,t,n){(function(e){var r=void 0!==e&&e||"undefined"!=typeof self&&self||window,a=Function.prototype.apply;function o(e,t){this._id=e,this._clearFn=t}t.setTimeout=function(){return new o(a.call(setTimeout,r,arguments),clearTimeout)},t.setInterval=function(){return new o(a.call(setInterval,r,arguments),clearInterval)},t.clearTimeout=t.clearInterval=function(e){e&&e.close()},o.prototype.unref=o.prototype.ref=function(){},o.prototype.close=function(){this._clearFn.call(r,this._id)},t.enroll=function(e,t){clearTimeout(e._idleTimeoutId),e._idleTimeout=t},t.unenroll=function(e){clearTimeout(e._idleTimeoutId),e._idleTimeout=-1},t._unrefActive=t.active=function(e){clearTimeout(e._idleTimeoutId);var t=e._idleTimeout;t>=0&&(e._idleTimeoutId=setTimeout((function(){e._onTimeout&&e._onTimeout()}),t))},n(89),t.setImmediate="undefined"!=typeof self&&self.setImmediate||void 0!==e&&e.setImmediate||this&&this.setImmediate,t.clearImmediate="undefined"!=typeof self&&self.clearImmediate||void 0!==e&&e.clearImmediate||this&&this.clearImmediate}).call(this,n(21))},function(e,t){var n;n=function(){return this}();try{n=n||new Function("return this")()}catch(e){"object"==typeof window&&(n=window)}e.exports=n},function(e,t){e.exports=function(e){return e}},function(e,t,n){var r=n(8)(n(6),"Map");e.exports=r},function(e,t,n){var r=n(129),a=n(136),o=n(138),i=n(139),c=n(140);function s(e){var t=-1,n=null==e?0:e.length;for(this.clear();++t<n;){var r=e[t];this.set(r[0],r[1])}}s.prototype.clear=r,s.prototype.delete=a,s.prototype.get=o,s.prototype.has=i,s.prototype.set=c,e.exports=s},function(e,t,n){var r=n(158),a=n(164),o=n(45);e.exports=function(e){return o(e)?r(e):a(e)}},function(e,t){e.exports=function(e){return"number"==typeof e&&e>-1&&e%1==0&&e<=9007199254740991}},function(e,t,n){var r=n(7),a=n(17),o=/\.|\[(?:[^[\]]*|(["'])(?:(?!\1)[^\\]|\\.)*?\1)\]/,i=/^\w*$/;e.exports=function(e,t){if(r(e))return!1;var n=typeof e;return!("number"!=n&&"symbol"!=n&&"boolean"!=n&&null!=e&&!a(e))||(i.test(e)||!o.test(e)||null!=t&&e in Object(t))}},function(e,t,n){"use strict";(function(e){n.d(t,"a",(function(){return i}));var r=n(1),a=n(2);function o(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}class i{constructor(t){o(this,"application",void 0),o(this,"unsubState",void 0),o(this,"pollFocusInterval",void 0),o(this,"lastFocusState",void 0),o(this,"lockAfterDate",void 0),o(this,"lockTimeout",void 0),this.application=t,e(()=>{this.observeVisibility()})}observeVisibility(){this.unsubState=this.application.getAppState().addObserver(async e=>{e===a.b.WindowDidBlur?this.documentVisibilityChanged(!1):e===a.b.WindowDidFocus&&this.documentVisibilityChanged(!0)}),Object(r.d)()||this.beginWebFocusPolling()}deinit(){this.unsubState(),this.pollFocusInterval&&clearInterval(this.pollFocusInterval)}async setAutoLockInterval(e){return this.application.setValue("AutoLockIntervalKey",e)}async getAutoLockInterval(){const e=await this.application.getValue("AutoLockIntervalKey");return e||0}beginWebFocusPolling(){this.pollFocusInterval=setInterval(()=>{const e=document.hasFocus();e&&"hidden"===this.lastFocusState?this.documentVisibilityChanged(!0):e||"visible"!==this.lastFocusState||this.documentVisibilityChanged(!1),this.lastFocusState=e?"visible":"hidden"},1e3)}getAutoLockIntervalOptions(){return[{value:0,label:"Off"},{value:1,label:"Immediately"},{value:6e4,label:"1m"},{value:3e5,label:"5m"},{value:36e5,label:"1h"}]}async documentVisibilityChanged(e){if(e){!await this.application.isLocked()&&this.lockAfterDate&&new Date>this.lockAfterDate&&this.application.lock(),this.cancelAutoLockTimer()}else this.beginAutoLockTimer()}async beginAutoLockTimer(){var e=await this.getAutoLockInterval();if(0===e)return;this.lockAfterDate=(e=>{const t=new Date;return t.setSeconds(t.getSeconds()+e),t})(e/1e3),this.lockTimeout=setTimeout(()=>{this.cancelAutoLockTimer(),this.application.lock(),this.lockAfterDate=void 0},e)}cancelAutoLockTimer(){clearTimeout(this.lockTimeout),this.lockAfterDate=void 0}}}).call(this,n(20).setImmediate)},function(e,t,n){var r=n(9),a=n(12);e.exports=function(e){if(!a(e))return!1;var t=r(e);return"[object Function]"==t||"[object GeneratorFunction]"==t||"[object AsyncFunction]"==t||"[object Proxy]"==t}},function(e,t,n){(function(t){var n="object"==typeof t&&t&&t.Object===Object&&t;e.exports=n}).call(this,n(21))},function(e,t){var n=Function.prototype.toString;e.exports=function(e){if(null!=e){try{return n.call(e)}catch(e){}try{return e+""}catch(e){}}return""}},function(e,t){e.exports=function(e,t){for(var n=-1,r=null==e?0:e.length,a=Array(r);++n<r;)a[n]=t(e[n],n,e);return a}},function(e,t){e.exports=function(e,t,n,r){for(var a=e.length,o=n+(r?1:-1);r?o--:++o<a;)if(t(e[o],o,e))return o;return-1}},function(e,t){e.exports=function(e){return function(t){return e(t)}}},function(e,t,n){var r=n(117),a=n(174),o=n(22),i=n(7),c=n(184);e.exports=function(e){return"function"==typeof e?e:null==e?o:"object"==typeof e?i(e)?a(e[0],e[1]):r(e):c(e)}},function(e,t,n){var r=n(13),a=n(124),o=n(125),i=n(126),c=n(127),s=n(128);function l(e){var t=this.__data__=new r(e);this.size=t.size}l.prototype.clear=a,l.prototype.delete=o,l.prototype.get=i,l.prototype.has=c,l.prototype.set=s,e.exports=l},function(e,t){e.exports=function(e,t){return e===t||e!=e&&t!=t}},function(e,t,n){var r=n(141),a=n(10);e.exports=function e(t,n,o,i,c){return t===n||(null==t||null==n||!a(t)&&!a(n)?t!=t&&n!=n:r(t,n,o,i,e,c))}},function(e,t,n){var r=n(142),a=n(145),o=n(146);e.exports=function(e,t,n,i,c,s){var l=1&n,g=e.length,I=t.length;if(g!=I&&!(l&&I>g))return!1;var B=s.get(e);if(B&&s.get(t))return B==t;var A=-1,u=!0,d=2&n?new r:void 0;for(s.set(e,t),s.set(t,e);++A<g;){var _=e[A],C=t[A];if(i)var b=l?i(C,_,A,t,e,s):i(_,C,A,e,t,s);if(void 0!==b){if(b)continue;u=!1;break}if(d){if(!a(t,(function(e,t){if(!o(d,t)&&(_===e||c(_,e,n,i,s)))return d.push(t)}))){u=!1;break}}else if(_!==C&&!c(_,C,n,i,s)){u=!1;break}}return s.delete(e),s.delete(t),u}},function(e,t,n){var r=n(160),a=n(10),o=Object.prototype,i=o.hasOwnProperty,c=o.propertyIsEnumerable,s=r(function(){return arguments}())?r:function(e){return a(e)&&i.call(e,"callee")&&!c.call(e,"callee")};e.exports=s},function(e,t,n){(function(e){var r=n(6),a=n(161),o=t&&!t.nodeType&&t,i=o&&"object"==typeof e&&e&&!e.nodeType&&e,c=i&&i.exports===o?r.Buffer:void 0,s=(c?c.isBuffer:void 0)||a;e.exports=s}).call(this,n(42)(e))},function(e,t){e.exports=function(e){return e.webpackPolyfill||(e.deprecate=function(){},e.paths=[],e.children||(e.children=[]),Object.defineProperty(e,"loaded",{enumerable:!0,get:function(){return e.l}}),Object.defineProperty(e,"id",{enumerable:!0,get:function(){return e.i}}),e.webpackPolyfill=1),e}},function(e,t){var n=/^(?:0|[1-9]\d*)$/;e.exports=function(e,t){var r=typeof e;return!!(t=null==t?9007199254740991:t)&&("number"==r||"symbol"!=r&&n.test(e))&&e>-1&&e%1==0&&e<t}},function(e,t,n){var r=n(162),a=n(34),o=n(163),i=o&&o.isTypedArray,c=i?a(i):r;e.exports=c},function(e,t,n){var r=n(29),a=n(26);e.exports=function(e){return null!=e&&a(e.length)&&!r(e)}},function(e,t,n){var r=n(12);e.exports=function(e){return e==e&&!r(e)}},function(e,t){e.exports=function(e,t){return function(n){return null!=n&&(n[e]===t&&(void 0!==t||e in Object(n)))}}},function(e,t,n){var r=n(49),a=n(18);e.exports=function(e,t){for(var n=0,o=(t=r(t,e)).length;null!=e&&n<o;)e=e[a(t[n++])];return n&&n==o?e:void 0}},function(e,t,n){var r=n(7),a=n(27),o=n(176),i=n(179);e.exports=function(e,t){return r(e)?e:a(e,t)?[e]:o(i(e))}},function(e,t,n){"use strict";(function(e){function r(t){return{restrict:"A",link:function(n,r){r.on("focus",()=>{if(!t.getSelection().toString()){const t=r[0];e(()=>{t.setSelectionRange(0,t.value.length)})}})}}}n.d(t,"a",(function(){return r})),r.$inject=["$window"]}).call(this,n(20).setImmediate)},function(e,t,n){"use strict";(function(e){n.d(t,"a",(function(){return A}));var r=n(52),a=n(79),o=n(0),i=n(3),c=n.n(i),s=n(1),l=n(5),g=n(80),I=n(53);function B(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}class A extends o.SNApplication{constructor(e,t,n,i){const c=new g.a("",t);super(o.Environment.Web,Object(o.platformFromString)(Object(s.c)()),c,new I.SNWebCrypto,new l.a,"",void 0,void 0),B(this,"$compile",void 0),B(this,"scope",void 0),B(this,"onDeinit",void 0),B(this,"webServices",void 0),B(this,"currentAuthenticationElement",void 0),B(this,"editorGroup",void 0),B(this,"componentGroup",void 0),this.$compile=e,this.scope=n,this.onDeinit=i,c.setApplication(this),this.editorGroup=new a.a(this),this.componentGroup=new r.a(this)}deinit(){for(const e of Object.keys(this.webServices)){const t=this.webServices[e];t.deinit&&t.deinit(),t.application=void 0}this.webServices={},this.onDeinit(this),this.onDeinit=void 0,this.$compile=void 0,this.editorGroup.deinit(),this.componentGroup.deinit(),this.scope.application=void 0,this.scope.$destroy(),this.scope=void 0,e(()=>{super.deinit()})}setWebServices(e){this.webServices=e}getAppState(){return this.webServices.appState}getDesktopService(){return this.webServices.desktopService}getLockService(){return this.webServices.lockService}getArchiveService(){return this.webServices.archiveService}getNativeExtService(){return this.webServices.nativeExtService}getStatusService(){return this.webServices.statusService}getThemeService(){return this.webServices.themeService}getPrefsService(){return this.webServices.prefsService}getKeyboardService(){return this.webServices.keyboardService}async checkForSecurityUpdate(){return this.protocolUpgradeAvailable()}presentPasswordWizard(e){const t=this.scope.$new(!0);t.type=e,t.application=this;const n=this.$compile("<password-wizard application='application' type='type'></password-wizard>")(t);c.a.element(document.body).append(n)}promptForChallenge(e){const t=this.scope.$new(!0);t.challenge=e,t.application=this;const n=this.$compile("<challenge-modal class='sk-modal' application='application' challenge='challenge'></challenge-modal>")(t);c.a.element(document.body).append(n)}async performProtocolUpgrade(){const e=await this.upgradeProtocolVersion();e.success?this.alertService.alert("Success! Your encryption version has been upgraded. You'll be asked to enter your credentials again on other devices you're signed into."):e.error&&(console.error(e.error),this.alertService.alert("Unable to upgrade encryption version. Please try again."))}async presentPrivilegesModal(e,t,n){if(this.authenticationInProgress())return void(n&&n());const r=this.scope.$new(!0);r.action=e,r.onSuccess=async()=>{t&&await t(),this.currentAuthenticationElement=void 0},r.onCancel=async()=>{n&&await n(),this.currentAuthenticationElement=void 0},r.application=this;const a=this.$compile("\n <privileges-auth-modal application='application' action='action' on-success='onSuccess'\n on-cancel='onCancel' class='sk-modal'></privileges-auth-modal>\n ")(r);c.a.element(document.body).append(a),this.currentAuthenticationElement=a}presentPrivilegesManagementModal(){const e=this.scope.$new(!0);e.application=this;const t=this.$compile("<privileges-management-modal application='application' class='sk-modal'></privileges-management-modal>")(e);c.a.element(document.body).append(t)}authenticationInProgress(){return null!=this.currentAuthenticationElement}presentPasswordModal(e){const t=this.scope.$new(!0);t.type="password",t.title="Decryption Assistance",t.message="Unable to decrypt this item with your current keys.\n Please enter your account password at the time of this revision.",t.callback=e;const n=this.$compile("<input-modal type='type' message='message'\n title='title' callback='callback()'></input-modal>")(t);c.a.element(document.body).append(n)}presentRevisionPreviewModal(e,t){const n=this.scope.$new(!0);n.uuid=e,n.content=t,n.application=this;const r=this.$compile("<revision-preview-modal application='application' uuid='uuid' content='content'\n class='sk-modal'></revision-preview-modal>")(n);c.a.element(document.body).append(r)}}A.$inject=["$compile","$timeout","scope","onDeinit"]}).call(this,n(20).setImmediate)},function(e,t,n){"use strict";n.d(t,"a",(function(){return i}));var r=n(0);function a(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}const o=[r.ComponentArea.Editor,r.ComponentArea.NoteTags,r.ComponentArea.TagsList];class i{constructor(e){a(this,"application",void 0),a(this,"changeObservers",[]),a(this,"activeComponents",[]),this.application=e}get componentManager(){var e;return null===(e=this.application)||void 0===e?void 0:e.componentManager}deinit(){this.application=void 0}async activateComponent(e){if(!this.activeComponents.includes(e.uuid)){if(o.includes(e.area)){const t=this.activeComponentForArea(e.area);t&&await this.deactivateComponent(t,!1)}Object(r.addIfUnique)(this.activeComponents,e.uuid),await this.componentManager.activateComponent(e.uuid),this.notifyObservers()}}async deactivateComponent(e,t=!0){this.activeComponents.includes(e.uuid)&&(Object(r.removeFromArray)(this.activeComponents,e.uuid),this.componentManager&&(await this.componentManager.deactivateComponent(e.uuid),t&&this.notifyObservers()))}async deactivateComponentForArea(e){const t=this.activeComponentForArea(e);if(t)return this.deactivateComponent(t)}activeComponentForArea(e){return this.activeComponentsForArea(e)[0]}activeComponentsForArea(e){return this.allActiveComponents().filter(t=>t.area===e)}allComponentsForArea(e){return this.componentManager.componentsForArea(e)}allActiveComponents(){return this.application.getAll(this.activeComponents)}addChangeObserver(e){return this.changeObservers.push(e),e(),()=>{Object(r.removeFromArray)(this.changeObservers,e)}}notifyObservers(){for(const e of this.changeObservers)e()}}},function(module,exports,__webpack_require__){var e;window,e=function(){return function(e){var t={};function n(r){if(t[r])return t[r].exports;var a=t[r]={i:r,l:!1,exports:{}};return e[r].call(a.exports,a,a.exports,n),a.l=!0,a.exports}return n.m=e,n.c=t,n.d=function(e,t,r){n.o(e,t)||Object.defineProperty(e,t,{enumerable:!0,get:r})},n.r=function(e){"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})},n.t=function(e,t){if(1&t&&(e=n(e)),8&t)return e;if(4&t&&"object"==typeof e&&e&&e.__esModule)return e;var r=Object.create(null);if(n.r(r),Object.defineProperty(r,"default",{enumerable:!0,value:e}),2&t&&"string"!=typeof e)for(var a in e)n.d(r,a,function(t){return e[t]}.bind(null,a));return r},n.n=function(e){var t=e&&e.__esModule?function(){return e.default}:function(){return e};return n.d(t,"a",t),t},n.o=function(e,t){return Object.prototype.hasOwnProperty.call(e,t)},n.p="/dist/",n(n.s=167)}([function(e,t,n){e.exports=n(85)},function(e,t){"function"==typeof Object.create?e.exports=function(e,t){e.super_=t,e.prototype=Object.create(t.prototype,{constructor:{value:e,enumerable:!1,writable:!0,configurable:!0}})}:e.exports=function(e,t){e.super_=t;var n=function(){};n.prototype=t.prototype,e.prototype=new n,e.prototype.constructor=e}},function(e,t,n){var r=n(3),a=r.Buffer;function o(e,t){for(var n in e)t[n]=e[n]}function i(e,t,n){return a(e,t,n)}a.from&&a.alloc&&a.allocUnsafe&&a.allocUnsafeSlow?e.exports=r:(o(r,t),t.Buffer=i),o(a,i),i.from=function(e,t,n){if("number"==typeof e)throw new TypeError("Argument must not be a number");return a(e,t,n)},i.alloc=function(e,t,n){if("number"!=typeof e)throw new TypeError("Argument must be a number");var r=a(e);return void 0!==t?"string"==typeof n?r.fill(t,n):r.fill(t):r.fill(0),r},i.allocUnsafe=function(e){if("number"!=typeof e)throw new TypeError("Argument must be a number");return a(e)},i.allocUnsafeSlow=function(e){if("number"!=typeof e)throw new TypeError("Argument must be a number");return r.SlowBuffer(e)}},function(e,t,n){"use strict";(function(e){
|
||
/*!
|
||
* The buffer module from node.js, for the browser.
|
||
*
|
||
* @author Feross Aboukhadijeh <http://feross.org>
|
||
* @license MIT
|
||
*/
|
||
var r=n(87),a=n(88),o=n(43);function i(){return s.TYPED_ARRAY_SUPPORT?2147483647:1073741823}function c(e,t){if(i()<t)throw new RangeError("Invalid typed array length");return s.TYPED_ARRAY_SUPPORT?(e=new Uint8Array(t)).__proto__=s.prototype:(null===e&&(e=new s(t)),e.length=t),e}function s(e,t,n){if(!(s.TYPED_ARRAY_SUPPORT||this instanceof s))return new s(e,t,n);if("number"==typeof e){if("string"==typeof t)throw new Error("If encoding is specified then the first argument must be a string");return I(this,e)}return l(this,e,t,n)}function l(e,t,n,r){if("number"==typeof t)throw new TypeError('"value" argument must not be a number');return"undefined"!=typeof ArrayBuffer&&t instanceof ArrayBuffer?function(e,t,n,r){if(t.byteLength,n<0||t.byteLength<n)throw new RangeError("'offset' is out of bounds");if(t.byteLength<n+(r||0))throw new RangeError("'length' is out of bounds");return t=void 0===n&&void 0===r?new Uint8Array(t):void 0===r?new Uint8Array(t,n):new Uint8Array(t,n,r),s.TYPED_ARRAY_SUPPORT?(e=t).__proto__=s.prototype:e=B(e,t),e}(e,t,n,r):"string"==typeof t?function(e,t,n){if("string"==typeof n&&""!==n||(n="utf8"),!s.isEncoding(n))throw new TypeError('"encoding" must be a valid string encoding');var r=0|u(t,n),a=(e=c(e,r)).write(t,n);return a!==r&&(e=e.slice(0,a)),e}(e,t,n):function(e,t){if(s.isBuffer(t)){var n=0|A(t.length);return 0===(e=c(e,n)).length||t.copy(e,0,0,n),e}if(t){if("undefined"!=typeof ArrayBuffer&&t.buffer instanceof ArrayBuffer||"length"in t)return"number"!=typeof t.length||(r=t.length)!=r?c(e,0):B(e,t);if("Buffer"===t.type&&o(t.data))return B(e,t.data)}var r;throw new TypeError("First argument must be a string, Buffer, ArrayBuffer, Array, or array-like object.")}(e,t)}function g(e){if("number"!=typeof e)throw new TypeError('"size" argument must be a number');if(e<0)throw new RangeError('"size" argument must not be negative')}function I(e,t){if(g(t),e=c(e,t<0?0:0|A(t)),!s.TYPED_ARRAY_SUPPORT)for(var n=0;n<t;++n)e[n]=0;return e}function B(e,t){var n=t.length<0?0:0|A(t.length);e=c(e,n);for(var r=0;r<n;r+=1)e[r]=255&t[r];return e}function A(e){if(e>=i())throw new RangeError("Attempt to allocate Buffer larger than maximum size: 0x"+i().toString(16)+" bytes");return 0|e}function u(e,t){if(s.isBuffer(e))return e.length;if("undefined"!=typeof ArrayBuffer&&"function"==typeof ArrayBuffer.isView&&(ArrayBuffer.isView(e)||e instanceof ArrayBuffer))return e.byteLength;"string"!=typeof e&&(e=""+e);var n=e.length;if(0===n)return 0;for(var r=!1;;)switch(t){case"ascii":case"latin1":case"binary":return n;case"utf8":case"utf-8":case void 0:return k(e).length;case"ucs2":case"ucs-2":case"utf16le":case"utf-16le":return 2*n;case"hex":return n>>>1;case"base64":return Y(e).length;default:if(r)return k(e).length;t=(""+t).toLowerCase(),r=!0}}function d(e,t,n){var r=!1;if((void 0===t||t<0)&&(t=0),t>this.length)return"";if((void 0===n||n>this.length)&&(n=this.length),n<=0)return"";if((n>>>=0)<=(t>>>=0))return"";for(e||(e="utf8");;)switch(e){case"hex":return v(this,t,n);case"utf8":case"utf-8":return f(this,t,n);case"ascii":return G(this,t,n);case"latin1":case"binary":return E(this,t,n);case"base64":return U(this,t,n);case"ucs2":case"ucs-2":case"utf16le":case"utf-16le":return Z(this,t,n);default:if(r)throw new TypeError("Unknown encoding: "+e);e=(e+"").toLowerCase(),r=!0}}function _(e,t,n){var r=e[t];e[t]=e[n],e[n]=r}function C(e,t,n,r,a){if(0===e.length)return-1;if("string"==typeof n?(r=n,n=0):n>2147483647?n=2147483647:n<-2147483648&&(n=-2147483648),n=+n,isNaN(n)&&(n=a?0:e.length-1),n<0&&(n=e.length+n),n>=e.length){if(a)return-1;n=e.length-1}else if(n<0){if(!a)return-1;n=0}if("string"==typeof t&&(t=s.from(t,r)),s.isBuffer(t))return 0===t.length?-1:b(e,t,n,r,a);if("number"==typeof t)return t&=255,s.TYPED_ARRAY_SUPPORT&&"function"==typeof Uint8Array.prototype.indexOf?a?Uint8Array.prototype.indexOf.call(e,t,n):Uint8Array.prototype.lastIndexOf.call(e,t,n):b(e,[t],n,r,a);throw new TypeError("val must be string, number or Buffer")}function b(e,t,n,r,a){var o,i=1,c=e.length,s=t.length;if(void 0!==r&&("ucs2"===(r=String(r).toLowerCase())||"ucs-2"===r||"utf16le"===r||"utf-16le"===r)){if(e.length<2||t.length<2)return-1;i=2,c/=2,s/=2,n/=2}function l(e,t){return 1===i?e[t]:e.readUInt16BE(t*i)}if(a){var g=-1;for(o=n;o<c;o++)if(l(e,o)===l(t,-1===g?0:o-g)){if(-1===g&&(g=o),o-g+1===s)return g*i}else-1!==g&&(o-=o-g),g=-1}else for(n+s>c&&(n=c-s),o=n;o>=0;o--){for(var I=!0,B=0;B<s;B++)if(l(e,o+B)!==l(t,B)){I=!1;break}if(I)return o}return-1}function p(e,t,n,r){n=Number(n)||0;var a=e.length-n;r?(r=Number(r))>a&&(r=a):r=a;var o=t.length;if(o%2!=0)throw new TypeError("Invalid hex string");r>o/2&&(r=o/2);for(var i=0;i<r;++i){var c=parseInt(t.substr(2*i,2),16);if(isNaN(c))return i;e[n+i]=c}return i}function Q(e,t,n,r){return S(k(t,e.length-n),e,n,r)}function h(e,t,n,r){return S(function(e){for(var t=[],n=0;n<e.length;++n)t.push(255&e.charCodeAt(n));return t}(t),e,n,r)}function y(e,t,n,r){return h(e,t,n,r)}function m(e,t,n,r){return S(Y(t),e,n,r)}function F(e,t,n,r){return S(function(e,t){for(var n,r,a,o=[],i=0;i<e.length&&!((t-=2)<0);++i)r=(n=e.charCodeAt(i))>>8,a=n%256,o.push(a),o.push(r);return o}(t,e.length-n),e,n,r)}function U(e,t,n){return 0===t&&n===e.length?r.fromByteArray(e):r.fromByteArray(e.slice(t,n))}function f(e,t,n){n=Math.min(e.length,n);for(var r=[],a=t;a<n;){var o,i,c,s,l=e[a],g=null,I=l>239?4:l>223?3:l>191?2:1;if(a+I<=n)switch(I){case 1:l<128&&(g=l);break;case 2:128==(192&(o=e[a+1]))&&(s=(31&l)<<6|63&o)>127&&(g=s);break;case 3:o=e[a+1],i=e[a+2],128==(192&o)&&128==(192&i)&&(s=(15&l)<<12|(63&o)<<6|63&i)>2047&&(s<55296||s>57343)&&(g=s);break;case 4:o=e[a+1],i=e[a+2],c=e[a+3],128==(192&o)&&128==(192&i)&&128==(192&c)&&(s=(15&l)<<18|(63&o)<<12|(63&i)<<6|63&c)>65535&&s<1114112&&(g=s)}null===g?(g=65533,I=1):g>65535&&(g-=65536,r.push(g>>>10&1023|55296),g=56320|1023&g),r.push(g),a+=I}return function(e){var t=e.length;if(t<=4096)return String.fromCharCode.apply(String,e);for(var n="",r=0;r<t;)n+=String.fromCharCode.apply(String,e.slice(r,r+=4096));return n}(r)}function G(e,t,n){var r="";n=Math.min(e.length,n);for(var a=t;a<n;++a)r+=String.fromCharCode(127&e[a]);return r}function E(e,t,n){var r="";n=Math.min(e.length,n);for(var a=t;a<n;++a)r+=String.fromCharCode(e[a]);return r}function v(e,t,n){var r=e.length;(!t||t<0)&&(t=0),(!n||n<0||n>r)&&(n=r);for(var a="",o=t;o<n;++o)a+=w(e[o]);return a}function Z(e,t,n){for(var r=e.slice(t,n),a="",o=0;o<r.length;o+=2)a+=String.fromCharCode(r[o]+256*r[o+1]);return a}function X(e,t,n){if(e%1!=0||e<0)throw new RangeError("offset is not uint");if(e+t>n)throw new RangeError("Trying to access beyond buffer length")}function W(e,t,n,r,a,o){if(!s.isBuffer(e))throw new TypeError('"buffer" argument must be a Buffer instance');if(t>a||t<o)throw new RangeError('"value" argument is out of bounds');if(n+r>e.length)throw new RangeError("Index out of range")}function R(e,t,n,r){t<0&&(t=65535+t+1);for(var a=0,o=Math.min(e.length-n,2);a<o;++a)e[n+a]=(t&255<<8*(r?a:1-a))>>>8*(r?a:1-a)}function V(e,t,n,r){t<0&&(t=4294967295+t+1);for(var a=0,o=Math.min(e.length-n,4);a<o;++a)e[n+a]=t>>>8*(r?a:3-a)&255}function O(e,t,n,r,a,o){if(n+r>e.length)throw new RangeError("Index out of range");if(n<0)throw new RangeError("Index out of range")}function x(e,t,n,r,o){return o||O(e,0,n,4),a.write(e,t,n,r,23,4),n+4}function T(e,t,n,r,o){return o||O(e,0,n,8),a.write(e,t,n,r,52,8),n+8}t.Buffer=s,t.SlowBuffer=function(e){return+e!=e&&(e=0),s.alloc(+e)},t.INSPECT_MAX_BYTES=50,s.TYPED_ARRAY_SUPPORT=void 0!==e.TYPED_ARRAY_SUPPORT?e.TYPED_ARRAY_SUPPORT:function(){try{var e=new Uint8Array(1);return e.__proto__={__proto__:Uint8Array.prototype,foo:function(){return 42}},42===e.foo()&&"function"==typeof e.subarray&&0===e.subarray(1,1).byteLength}catch(e){return!1}}(),t.kMaxLength=i(),s.poolSize=8192,s._augment=function(e){return e.__proto__=s.prototype,e},s.from=function(e,t,n){return l(null,e,t,n)},s.TYPED_ARRAY_SUPPORT&&(s.prototype.__proto__=Uint8Array.prototype,s.__proto__=Uint8Array,"undefined"!=typeof Symbol&&Symbol.species&&s[Symbol.species]===s&&Object.defineProperty(s,Symbol.species,{value:null,configurable:!0})),s.alloc=function(e,t,n){return function(e,t,n,r){return g(t),t<=0?c(e,t):void 0!==n?"string"==typeof r?c(e,t).fill(n,r):c(e,t).fill(n):c(e,t)}(null,e,t,n)},s.allocUnsafe=function(e){return I(null,e)},s.allocUnsafeSlow=function(e){return I(null,e)},s.isBuffer=function(e){return!(null==e||!e._isBuffer)},s.compare=function(e,t){if(!s.isBuffer(e)||!s.isBuffer(t))throw new TypeError("Arguments must be Buffers");if(e===t)return 0;for(var n=e.length,r=t.length,a=0,o=Math.min(n,r);a<o;++a)if(e[a]!==t[a]){n=e[a],r=t[a];break}return n<r?-1:r<n?1:0},s.isEncoding=function(e){switch(String(e).toLowerCase()){case"hex":case"utf8":case"utf-8":case"ascii":case"latin1":case"binary":case"base64":case"ucs2":case"ucs-2":case"utf16le":case"utf-16le":return!0;default:return!1}},s.concat=function(e,t){if(!o(e))throw new TypeError('"list" argument must be an Array of Buffers');if(0===e.length)return s.alloc(0);var n;if(void 0===t)for(t=0,n=0;n<e.length;++n)t+=e[n].length;var r=s.allocUnsafe(t),a=0;for(n=0;n<e.length;++n){var i=e[n];if(!s.isBuffer(i))throw new TypeError('"list" argument must be an Array of Buffers');i.copy(r,a),a+=i.length}return r},s.byteLength=u,s.prototype._isBuffer=!0,s.prototype.swap16=function(){var e=this.length;if(e%2!=0)throw new RangeError("Buffer size must be a multiple of 16-bits");for(var t=0;t<e;t+=2)_(this,t,t+1);return this},s.prototype.swap32=function(){var e=this.length;if(e%4!=0)throw new RangeError("Buffer size must be a multiple of 32-bits");for(var t=0;t<e;t+=4)_(this,t,t+3),_(this,t+1,t+2);return this},s.prototype.swap64=function(){var e=this.length;if(e%8!=0)throw new RangeError("Buffer size must be a multiple of 64-bits");for(var t=0;t<e;t+=8)_(this,t,t+7),_(this,t+1,t+6),_(this,t+2,t+5),_(this,t+3,t+4);return this},s.prototype.toString=function(){var e=0|this.length;return 0===e?"":0===arguments.length?f(this,0,e):d.apply(this,arguments)},s.prototype.equals=function(e){if(!s.isBuffer(e))throw new TypeError("Argument must be a Buffer");return this===e||0===s.compare(this,e)},s.prototype.inspect=function(){var e="",n=t.INSPECT_MAX_BYTES;return this.length>0&&(e=this.toString("hex",0,n).match(/.{2}/g).join(" "),this.length>n&&(e+=" ... ")),"<Buffer "+e+">"},s.prototype.compare=function(e,t,n,r,a){if(!s.isBuffer(e))throw new TypeError("Argument must be a Buffer");if(void 0===t&&(t=0),void 0===n&&(n=e?e.length:0),void 0===r&&(r=0),void 0===a&&(a=this.length),t<0||n>e.length||r<0||a>this.length)throw new RangeError("out of range index");if(r>=a&&t>=n)return 0;if(r>=a)return-1;if(t>=n)return 1;if(this===e)return 0;for(var o=(a>>>=0)-(r>>>=0),i=(n>>>=0)-(t>>>=0),c=Math.min(o,i),l=this.slice(r,a),g=e.slice(t,n),I=0;I<c;++I)if(l[I]!==g[I]){o=l[I],i=g[I];break}return o<i?-1:i<o?1:0},s.prototype.includes=function(e,t,n){return-1!==this.indexOf(e,t,n)},s.prototype.indexOf=function(e,t,n){return C(this,e,t,n,!0)},s.prototype.lastIndexOf=function(e,t,n){return C(this,e,t,n,!1)},s.prototype.write=function(e,t,n,r){if(void 0===t)r="utf8",n=this.length,t=0;else if(void 0===n&&"string"==typeof t)r=t,n=this.length,t=0;else{if(!isFinite(t))throw new Error("Buffer.write(string, encoding, offset[, length]) is no longer supported");t|=0,isFinite(n)?(n|=0,void 0===r&&(r="utf8")):(r=n,n=void 0)}var a=this.length-t;if((void 0===n||n>a)&&(n=a),e.length>0&&(n<0||t<0)||t>this.length)throw new RangeError("Attempt to write outside buffer bounds");r||(r="utf8");for(var o=!1;;)switch(r){case"hex":return p(this,e,t,n);case"utf8":case"utf-8":return Q(this,e,t,n);case"ascii":return h(this,e,t,n);case"latin1":case"binary":return y(this,e,t,n);case"base64":return m(this,e,t,n);case"ucs2":case"ucs-2":case"utf16le":case"utf-16le":return F(this,e,t,n);default:if(o)throw new TypeError("Unknown encoding: "+r);r=(""+r).toLowerCase(),o=!0}},s.prototype.toJSON=function(){return{type:"Buffer",data:Array.prototype.slice.call(this._arr||this,0)}},s.prototype.slice=function(e,t){var n,r=this.length;if((e=~~e)<0?(e+=r)<0&&(e=0):e>r&&(e=r),(t=void 0===t?r:~~t)<0?(t+=r)<0&&(t=0):t>r&&(t=r),t<e&&(t=e),s.TYPED_ARRAY_SUPPORT)(n=this.subarray(e,t)).__proto__=s.prototype;else{var a=t-e;n=new s(a,void 0);for(var o=0;o<a;++o)n[o]=this[o+e]}return n},s.prototype.readUIntLE=function(e,t,n){e|=0,t|=0,n||X(e,t,this.length);for(var r=this[e],a=1,o=0;++o<t&&(a*=256);)r+=this[e+o]*a;return r},s.prototype.readUIntBE=function(e,t,n){e|=0,t|=0,n||X(e,t,this.length);for(var r=this[e+--t],a=1;t>0&&(a*=256);)r+=this[e+--t]*a;return r},s.prototype.readUInt8=function(e,t){return t||X(e,1,this.length),this[e]},s.prototype.readUInt16LE=function(e,t){return t||X(e,2,this.length),this[e]|this[e+1]<<8},s.prototype.readUInt16BE=function(e,t){return t||X(e,2,this.length),this[e]<<8|this[e+1]},s.prototype.readUInt32LE=function(e,t){return t||X(e,4,this.length),(this[e]|this[e+1]<<8|this[e+2]<<16)+16777216*this[e+3]},s.prototype.readUInt32BE=function(e,t){return t||X(e,4,this.length),16777216*this[e]+(this[e+1]<<16|this[e+2]<<8|this[e+3])},s.prototype.readIntLE=function(e,t,n){e|=0,t|=0,n||X(e,t,this.length);for(var r=this[e],a=1,o=0;++o<t&&(a*=256);)r+=this[e+o]*a;return r>=(a*=128)&&(r-=Math.pow(2,8*t)),r},s.prototype.readIntBE=function(e,t,n){e|=0,t|=0,n||X(e,t,this.length);for(var r=t,a=1,o=this[e+--r];r>0&&(a*=256);)o+=this[e+--r]*a;return o>=(a*=128)&&(o-=Math.pow(2,8*t)),o},s.prototype.readInt8=function(e,t){return t||X(e,1,this.length),128&this[e]?-1*(255-this[e]+1):this[e]},s.prototype.readInt16LE=function(e,t){t||X(e,2,this.length);var n=this[e]|this[e+1]<<8;return 32768&n?4294901760|n:n},s.prototype.readInt16BE=function(e,t){t||X(e,2,this.length);var n=this[e+1]|this[e]<<8;return 32768&n?4294901760|n:n},s.prototype.readInt32LE=function(e,t){return t||X(e,4,this.length),this[e]|this[e+1]<<8|this[e+2]<<16|this[e+3]<<24},s.prototype.readInt32BE=function(e,t){return t||X(e,4,this.length),this[e]<<24|this[e+1]<<16|this[e+2]<<8|this[e+3]},s.prototype.readFloatLE=function(e,t){return t||X(e,4,this.length),a.read(this,e,!0,23,4)},s.prototype.readFloatBE=function(e,t){return t||X(e,4,this.length),a.read(this,e,!1,23,4)},s.prototype.readDoubleLE=function(e,t){return t||X(e,8,this.length),a.read(this,e,!0,52,8)},s.prototype.readDoubleBE=function(e,t){return t||X(e,8,this.length),a.read(this,e,!1,52,8)},s.prototype.writeUIntLE=function(e,t,n,r){e=+e,t|=0,n|=0,r||W(this,e,t,n,Math.pow(2,8*n)-1,0);var a=1,o=0;for(this[t]=255&e;++o<n&&(a*=256);)this[t+o]=e/a&255;return t+n},s.prototype.writeUIntBE=function(e,t,n,r){e=+e,t|=0,n|=0,r||W(this,e,t,n,Math.pow(2,8*n)-1,0);var a=n-1,o=1;for(this[t+a]=255&e;--a>=0&&(o*=256);)this[t+a]=e/o&255;return t+n},s.prototype.writeUInt8=function(e,t,n){return e=+e,t|=0,n||W(this,e,t,1,255,0),s.TYPED_ARRAY_SUPPORT||(e=Math.floor(e)),this[t]=255&e,t+1},s.prototype.writeUInt16LE=function(e,t,n){return e=+e,t|=0,n||W(this,e,t,2,65535,0),s.TYPED_ARRAY_SUPPORT?(this[t]=255&e,this[t+1]=e>>>8):R(this,e,t,!0),t+2},s.prototype.writeUInt16BE=function(e,t,n){return e=+e,t|=0,n||W(this,e,t,2,65535,0),s.TYPED_ARRAY_SUPPORT?(this[t]=e>>>8,this[t+1]=255&e):R(this,e,t,!1),t+2},s.prototype.writeUInt32LE=function(e,t,n){return e=+e,t|=0,n||W(this,e,t,4,4294967295,0),s.TYPED_ARRAY_SUPPORT?(this[t+3]=e>>>24,this[t+2]=e>>>16,this[t+1]=e>>>8,this[t]=255&e):V(this,e,t,!0),t+4},s.prototype.writeUInt32BE=function(e,t,n){return e=+e,t|=0,n||W(this,e,t,4,4294967295,0),s.TYPED_ARRAY_SUPPORT?(this[t]=e>>>24,this[t+1]=e>>>16,this[t+2]=e>>>8,this[t+3]=255&e):V(this,e,t,!1),t+4},s.prototype.writeIntLE=function(e,t,n,r){if(e=+e,t|=0,!r){var a=Math.pow(2,8*n-1);W(this,e,t,n,a-1,-a)}var o=0,i=1,c=0;for(this[t]=255&e;++o<n&&(i*=256);)e<0&&0===c&&0!==this[t+o-1]&&(c=1),this[t+o]=(e/i>>0)-c&255;return t+n},s.prototype.writeIntBE=function(e,t,n,r){if(e=+e,t|=0,!r){var a=Math.pow(2,8*n-1);W(this,e,t,n,a-1,-a)}var o=n-1,i=1,c=0;for(this[t+o]=255&e;--o>=0&&(i*=256);)e<0&&0===c&&0!==this[t+o+1]&&(c=1),this[t+o]=(e/i>>0)-c&255;return t+n},s.prototype.writeInt8=function(e,t,n){return e=+e,t|=0,n||W(this,e,t,1,127,-128),s.TYPED_ARRAY_SUPPORT||(e=Math.floor(e)),e<0&&(e=255+e+1),this[t]=255&e,t+1},s.prototype.writeInt16LE=function(e,t,n){return e=+e,t|=0,n||W(this,e,t,2,32767,-32768),s.TYPED_ARRAY_SUPPORT?(this[t]=255&e,this[t+1]=e>>>8):R(this,e,t,!0),t+2},s.prototype.writeInt16BE=function(e,t,n){return e=+e,t|=0,n||W(this,e,t,2,32767,-32768),s.TYPED_ARRAY_SUPPORT?(this[t]=e>>>8,this[t+1]=255&e):R(this,e,t,!1),t+2},s.prototype.writeInt32LE=function(e,t,n){return e=+e,t|=0,n||W(this,e,t,4,2147483647,-2147483648),s.TYPED_ARRAY_SUPPORT?(this[t]=255&e,this[t+1]=e>>>8,this[t+2]=e>>>16,this[t+3]=e>>>24):V(this,e,t,!0),t+4},s.prototype.writeInt32BE=function(e,t,n){return e=+e,t|=0,n||W(this,e,t,4,2147483647,-2147483648),e<0&&(e=4294967295+e+1),s.TYPED_ARRAY_SUPPORT?(this[t]=e>>>24,this[t+1]=e>>>16,this[t+2]=e>>>8,this[t+3]=255&e):V(this,e,t,!1),t+4},s.prototype.writeFloatLE=function(e,t,n){return x(this,e,t,!0,n)},s.prototype.writeFloatBE=function(e,t,n){return x(this,e,t,!1,n)},s.prototype.writeDoubleLE=function(e,t,n){return T(this,e,t,!0,n)},s.prototype.writeDoubleBE=function(e,t,n){return T(this,e,t,!1,n)},s.prototype.copy=function(e,t,n,r){if(n||(n=0),r||0===r||(r=this.length),t>=e.length&&(t=e.length),t||(t=0),r>0&&r<n&&(r=n),r===n)return 0;if(0===e.length||0===this.length)return 0;if(t<0)throw new RangeError("targetStart out of bounds");if(n<0||n>=this.length)throw new RangeError("sourceStart out of bounds");if(r<0)throw new RangeError("sourceEnd out of bounds");r>this.length&&(r=this.length),e.length-t<r-n&&(r=e.length-t+n);var a,o=r-n;if(this===e&&n<t&&t<r)for(a=o-1;a>=0;--a)e[a+t]=this[a+n];else if(o<1e3||!s.TYPED_ARRAY_SUPPORT)for(a=0;a<o;++a)e[a+t]=this[a+n];else Uint8Array.prototype.set.call(e,this.subarray(n,n+o),t);return o},s.prototype.fill=function(e,t,n,r){if("string"==typeof e){if("string"==typeof t?(r=t,t=0,n=this.length):"string"==typeof n&&(r=n,n=this.length),1===e.length){var a=e.charCodeAt(0);a<256&&(e=a)}if(void 0!==r&&"string"!=typeof r)throw new TypeError("encoding must be a string");if("string"==typeof r&&!s.isEncoding(r))throw new TypeError("Unknown encoding: "+r)}else"number"==typeof e&&(e&=255);if(t<0||this.length<t||this.length<n)throw new RangeError("Out of range index");if(n<=t)return this;var o;if(t>>>=0,n=void 0===n?this.length:n>>>0,e||(e=0),"number"==typeof e)for(o=t;o<n;++o)this[o]=e;else{var i=s.isBuffer(e)?e:k(new s(e,r).toString()),c=i.length;for(o=0;o<n-t;++o)this[o+t]=i[o%c]}return this};var N=/[^+\/0-9A-Za-z-_]/g;function w(e){return e<16?"0"+e.toString(16):e.toString(16)}function k(e,t){var n;t=t||1/0;for(var r=e.length,a=null,o=[],i=0;i<r;++i){if((n=e.charCodeAt(i))>55295&&n<57344){if(!a){if(n>56319){(t-=3)>-1&&o.push(239,191,189);continue}if(i+1===r){(t-=3)>-1&&o.push(239,191,189);continue}a=n;continue}if(n<56320){(t-=3)>-1&&o.push(239,191,189),a=n;continue}n=65536+(a-55296<<10|n-56320)}else a&&(t-=3)>-1&&o.push(239,191,189);if(a=null,n<128){if((t-=1)<0)break;o.push(n)}else if(n<2048){if((t-=2)<0)break;o.push(n>>6|192,63&n|128)}else if(n<65536){if((t-=3)<0)break;o.push(n>>12|224,n>>6&63|128,63&n|128)}else{if(!(n<1114112))throw new Error("Invalid code point");if((t-=4)<0)break;o.push(n>>18|240,n>>12&63|128,n>>6&63|128,63&n|128)}}return o}function Y(e){return r.toByteArray(function(e){if((e=function(e){return e.trim?e.trim():e.replace(/^\s+|\s+$/g,"")}(e).replace(N,"")).length<2)return"";for(;e.length%4!=0;)e+="=";return e}(e))}function S(e,t,n,r){for(var a=0;a<r&&!(a+n>=t.length||a>=e.length);++a)t[a+n]=e[a];return a}}).call(this,n(8))},function(e,t,n){(function(e){function t(e){return(t="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e})(e)}!function(e,r){"use strict";function a(e,t){if(!e)throw new Error(t||"Assertion failed")}function o(e,t){e.super_=t;var n=function(){};n.prototype=t.prototype,e.prototype=new n,e.prototype.constructor=e}function i(e,t,n){if(i.isBN(e))return e;this.negative=0,this.words=null,this.length=0,this.red=null,null!==e&&("le"!==t&&"be"!==t||(n=t,t=10),this._init(e||0,t||10,n||"be"))}var c;"object"===t(e)?e.exports=i:r.BN=i,i.BN=i,i.wordSize=26;try{c=n(123).Buffer}catch(e){}function s(e,t,n){for(var r=0,a=Math.min(e.length,n),o=t;o<a;o++){var i=e.charCodeAt(o)-48;r<<=4,r|=i>=49&&i<=54?i-49+10:i>=17&&i<=22?i-17+10:15&i}return r}function l(e,t,n,r){for(var a=0,o=Math.min(e.length,n),i=t;i<o;i++){var c=e.charCodeAt(i)-48;a*=r,a+=c>=49?c-49+10:c>=17?c-17+10:c}return a}i.isBN=function(e){return e instanceof i||null!==e&&"object"===t(e)&&e.constructor.wordSize===i.wordSize&&Array.isArray(e.words)},i.max=function(e,t){return e.cmp(t)>0?e:t},i.min=function(e,t){return e.cmp(t)<0?e:t},i.prototype._init=function(e,n,r){if("number"==typeof e)return this._initNumber(e,n,r);if("object"===t(e))return this._initArray(e,n,r);"hex"===n&&(n=16),a(n===(0|n)&&n>=2&&n<=36);var o=0;"-"===(e=e.toString().replace(/\s+/g,""))[0]&&o++,16===n?this._parseHex(e,o):this._parseBase(e,n,o),"-"===e[0]&&(this.negative=1),this.strip(),"le"===r&&this._initArray(this.toArray(),n,r)},i.prototype._initNumber=function(e,t,n){e<0&&(this.negative=1,e=-e),e<67108864?(this.words=[67108863&e],this.length=1):e<4503599627370496?(this.words=[67108863&e,e/67108864&67108863],this.length=2):(a(e<9007199254740992),this.words=[67108863&e,e/67108864&67108863,1],this.length=3),"le"===n&&this._initArray(this.toArray(),t,n)},i.prototype._initArray=function(e,t,n){if(a("number"==typeof e.length),e.length<=0)return this.words=[0],this.length=1,this;this.length=Math.ceil(e.length/3),this.words=new Array(this.length);for(var r=0;r<this.length;r++)this.words[r]=0;var o,i,c=0;if("be"===n)for(r=e.length-1,o=0;r>=0;r-=3)i=e[r]|e[r-1]<<8|e[r-2]<<16,this.words[o]|=i<<c&67108863,this.words[o+1]=i>>>26-c&67108863,(c+=24)>=26&&(c-=26,o++);else if("le"===n)for(r=0,o=0;r<e.length;r+=3)i=e[r]|e[r+1]<<8|e[r+2]<<16,this.words[o]|=i<<c&67108863,this.words[o+1]=i>>>26-c&67108863,(c+=24)>=26&&(c-=26,o++);return this.strip()},i.prototype._parseHex=function(e,t){this.length=Math.ceil((e.length-t)/6),this.words=new Array(this.length);for(var n=0;n<this.length;n++)this.words[n]=0;var r,a,o=0;for(n=e.length-6,r=0;n>=t;n-=6)a=s(e,n,n+6),this.words[r]|=a<<o&67108863,this.words[r+1]|=a>>>26-o&4194303,(o+=24)>=26&&(o-=26,r++);n+6!==t&&(a=s(e,t,n+6),this.words[r]|=a<<o&67108863,this.words[r+1]|=a>>>26-o&4194303),this.strip()},i.prototype._parseBase=function(e,t,n){this.words=[0],this.length=1;for(var r=0,a=1;a<=67108863;a*=t)r++;r--,a=a/t|0;for(var o=e.length-n,i=o%r,c=Math.min(o,o-i)+n,s=0,g=n;g<c;g+=r)s=l(e,g,g+r,t),this.imuln(a),this.words[0]+s<67108864?this.words[0]+=s:this._iaddn(s);if(0!==i){var I=1;for(s=l(e,g,e.length,t),g=0;g<i;g++)I*=t;this.imuln(I),this.words[0]+s<67108864?this.words[0]+=s:this._iaddn(s)}},i.prototype.copy=function(e){e.words=new Array(this.length);for(var t=0;t<this.length;t++)e.words[t]=this.words[t];e.length=this.length,e.negative=this.negative,e.red=this.red},i.prototype.clone=function(){var e=new i(null);return this.copy(e),e},i.prototype._expand=function(e){for(;this.length<e;)this.words[this.length++]=0;return this},i.prototype.strip=function(){for(;this.length>1&&0===this.words[this.length-1];)this.length--;return this._normSign()},i.prototype._normSign=function(){return 1===this.length&&0===this.words[0]&&(this.negative=0),this},i.prototype.inspect=function(){return(this.red?"<BN-R: ":"<BN: ")+this.toString(16)+">"};var g=["","0","00","000","0000","00000","000000","0000000","00000000","000000000","0000000000","00000000000","000000000000","0000000000000","00000000000000","000000000000000","0000000000000000","00000000000000000","000000000000000000","0000000000000000000","00000000000000000000","000000000000000000000","0000000000000000000000","00000000000000000000000","000000000000000000000000","0000000000000000000000000"],I=[0,0,25,16,12,11,10,9,8,8,7,7,7,7,6,6,6,6,6,6,6,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5],B=[0,0,33554432,43046721,16777216,48828125,60466176,40353607,16777216,43046721,1e7,19487171,35831808,62748517,7529536,11390625,16777216,24137569,34012224,47045881,64e6,4084101,5153632,6436343,7962624,9765625,11881376,14348907,17210368,20511149,243e5,28629151,33554432,39135393,45435424,52521875,60466176];function A(e,t,n){n.negative=t.negative^e.negative;var r=e.length+t.length|0;n.length=r,r=r-1|0;var a=0|e.words[0],o=0|t.words[0],i=a*o,c=67108863&i,s=i/67108864|0;n.words[0]=c;for(var l=1;l<r;l++){for(var g=s>>>26,I=67108863&s,B=Math.min(l,t.length-1),A=Math.max(0,l-e.length+1);A<=B;A++){var u=l-A|0;g+=(i=(a=0|e.words[u])*(o=0|t.words[A])+I)/67108864|0,I=67108863&i}n.words[l]=0|I,s=0|g}return 0!==s?n.words[l]=0|s:n.length--,n.strip()}i.prototype.toString=function(e,t){var n;if(t=0|t||1,16===(e=e||10)||"hex"===e){n="";for(var r=0,o=0,i=0;i<this.length;i++){var c=this.words[i],s=(16777215&(c<<r|o)).toString(16);n=0!=(o=c>>>24-r&16777215)||i!==this.length-1?g[6-s.length]+s+n:s+n,(r+=2)>=26&&(r-=26,i--)}for(0!==o&&(n=o.toString(16)+n);n.length%t!=0;)n="0"+n;return 0!==this.negative&&(n="-"+n),n}if(e===(0|e)&&e>=2&&e<=36){var l=I[e],A=B[e];n="";var u=this.clone();for(u.negative=0;!u.isZero();){var d=u.modn(A).toString(e);n=(u=u.idivn(A)).isZero()?d+n:g[l-d.length]+d+n}for(this.isZero()&&(n="0"+n);n.length%t!=0;)n="0"+n;return 0!==this.negative&&(n="-"+n),n}a(!1,"Base should be between 2 and 36")},i.prototype.toNumber=function(){var e=this.words[0];return 2===this.length?e+=67108864*this.words[1]:3===this.length&&1===this.words[2]?e+=4503599627370496+67108864*this.words[1]:this.length>2&&a(!1,"Number can only safely store up to 53 bits"),0!==this.negative?-e:e},i.prototype.toJSON=function(){return this.toString(16)},i.prototype.toBuffer=function(e,t){return a(void 0!==c),this.toArrayLike(c,e,t)},i.prototype.toArray=function(e,t){return this.toArrayLike(Array,e,t)},i.prototype.toArrayLike=function(e,t,n){var r=this.byteLength(),o=n||Math.max(1,r);a(r<=o,"byte array longer than desired length"),a(o>0,"Requested array length <= 0"),this.strip();var i,c,s="le"===t,l=new e(o),g=this.clone();if(s){for(c=0;!g.isZero();c++)i=g.andln(255),g.iushrn(8),l[c]=i;for(;c<o;c++)l[c]=0}else{for(c=0;c<o-r;c++)l[c]=0;for(c=0;!g.isZero();c++)i=g.andln(255),g.iushrn(8),l[o-c-1]=i}return l},Math.clz32?i.prototype._countBits=function(e){return 32-Math.clz32(e)}:i.prototype._countBits=function(e){var t=e,n=0;return t>=4096&&(n+=13,t>>>=13),t>=64&&(n+=7,t>>>=7),t>=8&&(n+=4,t>>>=4),t>=2&&(n+=2,t>>>=2),n+t},i.prototype._zeroBits=function(e){if(0===e)return 26;var t=e,n=0;return 0==(8191&t)&&(n+=13,t>>>=13),0==(127&t)&&(n+=7,t>>>=7),0==(15&t)&&(n+=4,t>>>=4),0==(3&t)&&(n+=2,t>>>=2),0==(1&t)&&n++,n},i.prototype.bitLength=function(){var e=this.words[this.length-1],t=this._countBits(e);return 26*(this.length-1)+t},i.prototype.zeroBits=function(){if(this.isZero())return 0;for(var e=0,t=0;t<this.length;t++){var n=this._zeroBits(this.words[t]);if(e+=n,26!==n)break}return e},i.prototype.byteLength=function(){return Math.ceil(this.bitLength()/8)},i.prototype.toTwos=function(e){return 0!==this.negative?this.abs().inotn(e).iaddn(1):this.clone()},i.prototype.fromTwos=function(e){return this.testn(e-1)?this.notn(e).iaddn(1).ineg():this.clone()},i.prototype.isNeg=function(){return 0!==this.negative},i.prototype.neg=function(){return this.clone().ineg()},i.prototype.ineg=function(){return this.isZero()||(this.negative^=1),this},i.prototype.iuor=function(e){for(;this.length<e.length;)this.words[this.length++]=0;for(var t=0;t<e.length;t++)this.words[t]=this.words[t]|e.words[t];return this.strip()},i.prototype.ior=function(e){return a(0==(this.negative|e.negative)),this.iuor(e)},i.prototype.or=function(e){return this.length>e.length?this.clone().ior(e):e.clone().ior(this)},i.prototype.uor=function(e){return this.length>e.length?this.clone().iuor(e):e.clone().iuor(this)},i.prototype.iuand=function(e){var t;t=this.length>e.length?e:this;for(var n=0;n<t.length;n++)this.words[n]=this.words[n]&e.words[n];return this.length=t.length,this.strip()},i.prototype.iand=function(e){return a(0==(this.negative|e.negative)),this.iuand(e)},i.prototype.and=function(e){return this.length>e.length?this.clone().iand(e):e.clone().iand(this)},i.prototype.uand=function(e){return this.length>e.length?this.clone().iuand(e):e.clone().iuand(this)},i.prototype.iuxor=function(e){var t,n;this.length>e.length?(t=this,n=e):(t=e,n=this);for(var r=0;r<n.length;r++)this.words[r]=t.words[r]^n.words[r];if(this!==t)for(;r<t.length;r++)this.words[r]=t.words[r];return this.length=t.length,this.strip()},i.prototype.ixor=function(e){return a(0==(this.negative|e.negative)),this.iuxor(e)},i.prototype.xor=function(e){return this.length>e.length?this.clone().ixor(e):e.clone().ixor(this)},i.prototype.uxor=function(e){return this.length>e.length?this.clone().iuxor(e):e.clone().iuxor(this)},i.prototype.inotn=function(e){a("number"==typeof e&&e>=0);var t=0|Math.ceil(e/26),n=e%26;this._expand(t),n>0&&t--;for(var r=0;r<t;r++)this.words[r]=67108863&~this.words[r];return n>0&&(this.words[r]=~this.words[r]&67108863>>26-n),this.strip()},i.prototype.notn=function(e){return this.clone().inotn(e)},i.prototype.setn=function(e,t){a("number"==typeof e&&e>=0);var n=e/26|0,r=e%26;return this._expand(n+1),this.words[n]=t?this.words[n]|1<<r:this.words[n]&~(1<<r),this.strip()},i.prototype.iadd=function(e){var t,n,r;if(0!==this.negative&&0===e.negative)return this.negative=0,t=this.isub(e),this.negative^=1,this._normSign();if(0===this.negative&&0!==e.negative)return e.negative=0,t=this.isub(e),e.negative=1,t._normSign();this.length>e.length?(n=this,r=e):(n=e,r=this);for(var a=0,o=0;o<r.length;o++)t=(0|n.words[o])+(0|r.words[o])+a,this.words[o]=67108863&t,a=t>>>26;for(;0!==a&&o<n.length;o++)t=(0|n.words[o])+a,this.words[o]=67108863&t,a=t>>>26;if(this.length=n.length,0!==a)this.words[this.length]=a,this.length++;else if(n!==this)for(;o<n.length;o++)this.words[o]=n.words[o];return this},i.prototype.add=function(e){var t;return 0!==e.negative&&0===this.negative?(e.negative=0,t=this.sub(e),e.negative^=1,t):0===e.negative&&0!==this.negative?(this.negative=0,t=e.sub(this),this.negative=1,t):this.length>e.length?this.clone().iadd(e):e.clone().iadd(this)},i.prototype.isub=function(e){if(0!==e.negative){e.negative=0;var t=this.iadd(e);return e.negative=1,t._normSign()}if(0!==this.negative)return this.negative=0,this.iadd(e),this.negative=1,this._normSign();var n,r,a=this.cmp(e);if(0===a)return this.negative=0,this.length=1,this.words[0]=0,this;a>0?(n=this,r=e):(n=e,r=this);for(var o=0,i=0;i<r.length;i++)o=(t=(0|n.words[i])-(0|r.words[i])+o)>>26,this.words[i]=67108863&t;for(;0!==o&&i<n.length;i++)o=(t=(0|n.words[i])+o)>>26,this.words[i]=67108863&t;if(0===o&&i<n.length&&n!==this)for(;i<n.length;i++)this.words[i]=n.words[i];return this.length=Math.max(this.length,i),n!==this&&(this.negative=1),this.strip()},i.prototype.sub=function(e){return this.clone().isub(e)};var u=function(e,t,n){var r,a,o,i=e.words,c=t.words,s=n.words,l=0,g=0|i[0],I=8191&g,B=g>>>13,A=0|i[1],u=8191&A,d=A>>>13,_=0|i[2],C=8191&_,b=_>>>13,p=0|i[3],Q=8191&p,h=p>>>13,y=0|i[4],m=8191&y,F=y>>>13,U=0|i[5],f=8191&U,G=U>>>13,E=0|i[6],v=8191&E,Z=E>>>13,X=0|i[7],W=8191&X,R=X>>>13,V=0|i[8],O=8191&V,x=V>>>13,T=0|i[9],N=8191&T,w=T>>>13,k=0|c[0],Y=8191&k,S=k>>>13,H=0|c[1],D=8191&H,J=H>>>13,P=0|c[2],M=8191&P,L=P>>>13,z=0|c[3],j=8191&z,K=z>>>13,q=0|c[4],$=8191&q,ee=q>>>13,te=0|c[5],ne=8191&te,re=te>>>13,ae=0|c[6],oe=8191&ae,ie=ae>>>13,ce=0|c[7],se=8191&ce,le=ce>>>13,ge=0|c[8],Ie=8191&ge,Be=ge>>>13,Ae=0|c[9],ue=8191&Ae,de=Ae>>>13;n.negative=e.negative^t.negative,n.length=19;var _e=(l+(r=Math.imul(I,Y))|0)+((8191&(a=(a=Math.imul(I,S))+Math.imul(B,Y)|0))<<13)|0;l=((o=Math.imul(B,S))+(a>>>13)|0)+(_e>>>26)|0,_e&=67108863,r=Math.imul(u,Y),a=(a=Math.imul(u,S))+Math.imul(d,Y)|0,o=Math.imul(d,S);var Ce=(l+(r=r+Math.imul(I,D)|0)|0)+((8191&(a=(a=a+Math.imul(I,J)|0)+Math.imul(B,D)|0))<<13)|0;l=((o=o+Math.imul(B,J)|0)+(a>>>13)|0)+(Ce>>>26)|0,Ce&=67108863,r=Math.imul(C,Y),a=(a=Math.imul(C,S))+Math.imul(b,Y)|0,o=Math.imul(b,S),r=r+Math.imul(u,D)|0,a=(a=a+Math.imul(u,J)|0)+Math.imul(d,D)|0,o=o+Math.imul(d,J)|0;var be=(l+(r=r+Math.imul(I,M)|0)|0)+((8191&(a=(a=a+Math.imul(I,L)|0)+Math.imul(B,M)|0))<<13)|0;l=((o=o+Math.imul(B,L)|0)+(a>>>13)|0)+(be>>>26)|0,be&=67108863,r=Math.imul(Q,Y),a=(a=Math.imul(Q,S))+Math.imul(h,Y)|0,o=Math.imul(h,S),r=r+Math.imul(C,D)|0,a=(a=a+Math.imul(C,J)|0)+Math.imul(b,D)|0,o=o+Math.imul(b,J)|0,r=r+Math.imul(u,M)|0,a=(a=a+Math.imul(u,L)|0)+Math.imul(d,M)|0,o=o+Math.imul(d,L)|0;var pe=(l+(r=r+Math.imul(I,j)|0)|0)+((8191&(a=(a=a+Math.imul(I,K)|0)+Math.imul(B,j)|0))<<13)|0;l=((o=o+Math.imul(B,K)|0)+(a>>>13)|0)+(pe>>>26)|0,pe&=67108863,r=Math.imul(m,Y),a=(a=Math.imul(m,S))+Math.imul(F,Y)|0,o=Math.imul(F,S),r=r+Math.imul(Q,D)|0,a=(a=a+Math.imul(Q,J)|0)+Math.imul(h,D)|0,o=o+Math.imul(h,J)|0,r=r+Math.imul(C,M)|0,a=(a=a+Math.imul(C,L)|0)+Math.imul(b,M)|0,o=o+Math.imul(b,L)|0,r=r+Math.imul(u,j)|0,a=(a=a+Math.imul(u,K)|0)+Math.imul(d,j)|0,o=o+Math.imul(d,K)|0;var Qe=(l+(r=r+Math.imul(I,$)|0)|0)+((8191&(a=(a=a+Math.imul(I,ee)|0)+Math.imul(B,$)|0))<<13)|0;l=((o=o+Math.imul(B,ee)|0)+(a>>>13)|0)+(Qe>>>26)|0,Qe&=67108863,r=Math.imul(f,Y),a=(a=Math.imul(f,S))+Math.imul(G,Y)|0,o=Math.imul(G,S),r=r+Math.imul(m,D)|0,a=(a=a+Math.imul(m,J)|0)+Math.imul(F,D)|0,o=o+Math.imul(F,J)|0,r=r+Math.imul(Q,M)|0,a=(a=a+Math.imul(Q,L)|0)+Math.imul(h,M)|0,o=o+Math.imul(h,L)|0,r=r+Math.imul(C,j)|0,a=(a=a+Math.imul(C,K)|0)+Math.imul(b,j)|0,o=o+Math.imul(b,K)|0,r=r+Math.imul(u,$)|0,a=(a=a+Math.imul(u,ee)|0)+Math.imul(d,$)|0,o=o+Math.imul(d,ee)|0;var he=(l+(r=r+Math.imul(I,ne)|0)|0)+((8191&(a=(a=a+Math.imul(I,re)|0)+Math.imul(B,ne)|0))<<13)|0;l=((o=o+Math.imul(B,re)|0)+(a>>>13)|0)+(he>>>26)|0,he&=67108863,r=Math.imul(v,Y),a=(a=Math.imul(v,S))+Math.imul(Z,Y)|0,o=Math.imul(Z,S),r=r+Math.imul(f,D)|0,a=(a=a+Math.imul(f,J)|0)+Math.imul(G,D)|0,o=o+Math.imul(G,J)|0,r=r+Math.imul(m,M)|0,a=(a=a+Math.imul(m,L)|0)+Math.imul(F,M)|0,o=o+Math.imul(F,L)|0,r=r+Math.imul(Q,j)|0,a=(a=a+Math.imul(Q,K)|0)+Math.imul(h,j)|0,o=o+Math.imul(h,K)|0,r=r+Math.imul(C,$)|0,a=(a=a+Math.imul(C,ee)|0)+Math.imul(b,$)|0,o=o+Math.imul(b,ee)|0,r=r+Math.imul(u,ne)|0,a=(a=a+Math.imul(u,re)|0)+Math.imul(d,ne)|0,o=o+Math.imul(d,re)|0;var ye=(l+(r=r+Math.imul(I,oe)|0)|0)+((8191&(a=(a=a+Math.imul(I,ie)|0)+Math.imul(B,oe)|0))<<13)|0;l=((o=o+Math.imul(B,ie)|0)+(a>>>13)|0)+(ye>>>26)|0,ye&=67108863,r=Math.imul(W,Y),a=(a=Math.imul(W,S))+Math.imul(R,Y)|0,o=Math.imul(R,S),r=r+Math.imul(v,D)|0,a=(a=a+Math.imul(v,J)|0)+Math.imul(Z,D)|0,o=o+Math.imul(Z,J)|0,r=r+Math.imul(f,M)|0,a=(a=a+Math.imul(f,L)|0)+Math.imul(G,M)|0,o=o+Math.imul(G,L)|0,r=r+Math.imul(m,j)|0,a=(a=a+Math.imul(m,K)|0)+Math.imul(F,j)|0,o=o+Math.imul(F,K)|0,r=r+Math.imul(Q,$)|0,a=(a=a+Math.imul(Q,ee)|0)+Math.imul(h,$)|0,o=o+Math.imul(h,ee)|0,r=r+Math.imul(C,ne)|0,a=(a=a+Math.imul(C,re)|0)+Math.imul(b,ne)|0,o=o+Math.imul(b,re)|0,r=r+Math.imul(u,oe)|0,a=(a=a+Math.imul(u,ie)|0)+Math.imul(d,oe)|0,o=o+Math.imul(d,ie)|0;var me=(l+(r=r+Math.imul(I,se)|0)|0)+((8191&(a=(a=a+Math.imul(I,le)|0)+Math.imul(B,se)|0))<<13)|0;l=((o=o+Math.imul(B,le)|0)+(a>>>13)|0)+(me>>>26)|0,me&=67108863,r=Math.imul(O,Y),a=(a=Math.imul(O,S))+Math.imul(x,Y)|0,o=Math.imul(x,S),r=r+Math.imul(W,D)|0,a=(a=a+Math.imul(W,J)|0)+Math.imul(R,D)|0,o=o+Math.imul(R,J)|0,r=r+Math.imul(v,M)|0,a=(a=a+Math.imul(v,L)|0)+Math.imul(Z,M)|0,o=o+Math.imul(Z,L)|0,r=r+Math.imul(f,j)|0,a=(a=a+Math.imul(f,K)|0)+Math.imul(G,j)|0,o=o+Math.imul(G,K)|0,r=r+Math.imul(m,$)|0,a=(a=a+Math.imul(m,ee)|0)+Math.imul(F,$)|0,o=o+Math.imul(F,ee)|0,r=r+Math.imul(Q,ne)|0,a=(a=a+Math.imul(Q,re)|0)+Math.imul(h,ne)|0,o=o+Math.imul(h,re)|0,r=r+Math.imul(C,oe)|0,a=(a=a+Math.imul(C,ie)|0)+Math.imul(b,oe)|0,o=o+Math.imul(b,ie)|0,r=r+Math.imul(u,se)|0,a=(a=a+Math.imul(u,le)|0)+Math.imul(d,se)|0,o=o+Math.imul(d,le)|0;var Fe=(l+(r=r+Math.imul(I,Ie)|0)|0)+((8191&(a=(a=a+Math.imul(I,Be)|0)+Math.imul(B,Ie)|0))<<13)|0;l=((o=o+Math.imul(B,Be)|0)+(a>>>13)|0)+(Fe>>>26)|0,Fe&=67108863,r=Math.imul(N,Y),a=(a=Math.imul(N,S))+Math.imul(w,Y)|0,o=Math.imul(w,S),r=r+Math.imul(O,D)|0,a=(a=a+Math.imul(O,J)|0)+Math.imul(x,D)|0,o=o+Math.imul(x,J)|0,r=r+Math.imul(W,M)|0,a=(a=a+Math.imul(W,L)|0)+Math.imul(R,M)|0,o=o+Math.imul(R,L)|0,r=r+Math.imul(v,j)|0,a=(a=a+Math.imul(v,K)|0)+Math.imul(Z,j)|0,o=o+Math.imul(Z,K)|0,r=r+Math.imul(f,$)|0,a=(a=a+Math.imul(f,ee)|0)+Math.imul(G,$)|0,o=o+Math.imul(G,ee)|0,r=r+Math.imul(m,ne)|0,a=(a=a+Math.imul(m,re)|0)+Math.imul(F,ne)|0,o=o+Math.imul(F,re)|0,r=r+Math.imul(Q,oe)|0,a=(a=a+Math.imul(Q,ie)|0)+Math.imul(h,oe)|0,o=o+Math.imul(h,ie)|0,r=r+Math.imul(C,se)|0,a=(a=a+Math.imul(C,le)|0)+Math.imul(b,se)|0,o=o+Math.imul(b,le)|0,r=r+Math.imul(u,Ie)|0,a=(a=a+Math.imul(u,Be)|0)+Math.imul(d,Ie)|0,o=o+Math.imul(d,Be)|0;var Ue=(l+(r=r+Math.imul(I,ue)|0)|0)+((8191&(a=(a=a+Math.imul(I,de)|0)+Math.imul(B,ue)|0))<<13)|0;l=((o=o+Math.imul(B,de)|0)+(a>>>13)|0)+(Ue>>>26)|0,Ue&=67108863,r=Math.imul(N,D),a=(a=Math.imul(N,J))+Math.imul(w,D)|0,o=Math.imul(w,J),r=r+Math.imul(O,M)|0,a=(a=a+Math.imul(O,L)|0)+Math.imul(x,M)|0,o=o+Math.imul(x,L)|0,r=r+Math.imul(W,j)|0,a=(a=a+Math.imul(W,K)|0)+Math.imul(R,j)|0,o=o+Math.imul(R,K)|0,r=r+Math.imul(v,$)|0,a=(a=a+Math.imul(v,ee)|0)+Math.imul(Z,$)|0,o=o+Math.imul(Z,ee)|0,r=r+Math.imul(f,ne)|0,a=(a=a+Math.imul(f,re)|0)+Math.imul(G,ne)|0,o=o+Math.imul(G,re)|0,r=r+Math.imul(m,oe)|0,a=(a=a+Math.imul(m,ie)|0)+Math.imul(F,oe)|0,o=o+Math.imul(F,ie)|0,r=r+Math.imul(Q,se)|0,a=(a=a+Math.imul(Q,le)|0)+Math.imul(h,se)|0,o=o+Math.imul(h,le)|0,r=r+Math.imul(C,Ie)|0,a=(a=a+Math.imul(C,Be)|0)+Math.imul(b,Ie)|0,o=o+Math.imul(b,Be)|0;var fe=(l+(r=r+Math.imul(u,ue)|0)|0)+((8191&(a=(a=a+Math.imul(u,de)|0)+Math.imul(d,ue)|0))<<13)|0;l=((o=o+Math.imul(d,de)|0)+(a>>>13)|0)+(fe>>>26)|0,fe&=67108863,r=Math.imul(N,M),a=(a=Math.imul(N,L))+Math.imul(w,M)|0,o=Math.imul(w,L),r=r+Math.imul(O,j)|0,a=(a=a+Math.imul(O,K)|0)+Math.imul(x,j)|0,o=o+Math.imul(x,K)|0,r=r+Math.imul(W,$)|0,a=(a=a+Math.imul(W,ee)|0)+Math.imul(R,$)|0,o=o+Math.imul(R,ee)|0,r=r+Math.imul(v,ne)|0,a=(a=a+Math.imul(v,re)|0)+Math.imul(Z,ne)|0,o=o+Math.imul(Z,re)|0,r=r+Math.imul(f,oe)|0,a=(a=a+Math.imul(f,ie)|0)+Math.imul(G,oe)|0,o=o+Math.imul(G,ie)|0,r=r+Math.imul(m,se)|0,a=(a=a+Math.imul(m,le)|0)+Math.imul(F,se)|0,o=o+Math.imul(F,le)|0,r=r+Math.imul(Q,Ie)|0,a=(a=a+Math.imul(Q,Be)|0)+Math.imul(h,Ie)|0,o=o+Math.imul(h,Be)|0;var Ge=(l+(r=r+Math.imul(C,ue)|0)|0)+((8191&(a=(a=a+Math.imul(C,de)|0)+Math.imul(b,ue)|0))<<13)|0;l=((o=o+Math.imul(b,de)|0)+(a>>>13)|0)+(Ge>>>26)|0,Ge&=67108863,r=Math.imul(N,j),a=(a=Math.imul(N,K))+Math.imul(w,j)|0,o=Math.imul(w,K),r=r+Math.imul(O,$)|0,a=(a=a+Math.imul(O,ee)|0)+Math.imul(x,$)|0,o=o+Math.imul(x,ee)|0,r=r+Math.imul(W,ne)|0,a=(a=a+Math.imul(W,re)|0)+Math.imul(R,ne)|0,o=o+Math.imul(R,re)|0,r=r+Math.imul(v,oe)|0,a=(a=a+Math.imul(v,ie)|0)+Math.imul(Z,oe)|0,o=o+Math.imul(Z,ie)|0,r=r+Math.imul(f,se)|0,a=(a=a+Math.imul(f,le)|0)+Math.imul(G,se)|0,o=o+Math.imul(G,le)|0,r=r+Math.imul(m,Ie)|0,a=(a=a+Math.imul(m,Be)|0)+Math.imul(F,Ie)|0,o=o+Math.imul(F,Be)|0;var Ee=(l+(r=r+Math.imul(Q,ue)|0)|0)+((8191&(a=(a=a+Math.imul(Q,de)|0)+Math.imul(h,ue)|0))<<13)|0;l=((o=o+Math.imul(h,de)|0)+(a>>>13)|0)+(Ee>>>26)|0,Ee&=67108863,r=Math.imul(N,$),a=(a=Math.imul(N,ee))+Math.imul(w,$)|0,o=Math.imul(w,ee),r=r+Math.imul(O,ne)|0,a=(a=a+Math.imul(O,re)|0)+Math.imul(x,ne)|0,o=o+Math.imul(x,re)|0,r=r+Math.imul(W,oe)|0,a=(a=a+Math.imul(W,ie)|0)+Math.imul(R,oe)|0,o=o+Math.imul(R,ie)|0,r=r+Math.imul(v,se)|0,a=(a=a+Math.imul(v,le)|0)+Math.imul(Z,se)|0,o=o+Math.imul(Z,le)|0,r=r+Math.imul(f,Ie)|0,a=(a=a+Math.imul(f,Be)|0)+Math.imul(G,Ie)|0,o=o+Math.imul(G,Be)|0;var ve=(l+(r=r+Math.imul(m,ue)|0)|0)+((8191&(a=(a=a+Math.imul(m,de)|0)+Math.imul(F,ue)|0))<<13)|0;l=((o=o+Math.imul(F,de)|0)+(a>>>13)|0)+(ve>>>26)|0,ve&=67108863,r=Math.imul(N,ne),a=(a=Math.imul(N,re))+Math.imul(w,ne)|0,o=Math.imul(w,re),r=r+Math.imul(O,oe)|0,a=(a=a+Math.imul(O,ie)|0)+Math.imul(x,oe)|0,o=o+Math.imul(x,ie)|0,r=r+Math.imul(W,se)|0,a=(a=a+Math.imul(W,le)|0)+Math.imul(R,se)|0,o=o+Math.imul(R,le)|0,r=r+Math.imul(v,Ie)|0,a=(a=a+Math.imul(v,Be)|0)+Math.imul(Z,Ie)|0,o=o+Math.imul(Z,Be)|0;var Ze=(l+(r=r+Math.imul(f,ue)|0)|0)+((8191&(a=(a=a+Math.imul(f,de)|0)+Math.imul(G,ue)|0))<<13)|0;l=((o=o+Math.imul(G,de)|0)+(a>>>13)|0)+(Ze>>>26)|0,Ze&=67108863,r=Math.imul(N,oe),a=(a=Math.imul(N,ie))+Math.imul(w,oe)|0,o=Math.imul(w,ie),r=r+Math.imul(O,se)|0,a=(a=a+Math.imul(O,le)|0)+Math.imul(x,se)|0,o=o+Math.imul(x,le)|0,r=r+Math.imul(W,Ie)|0,a=(a=a+Math.imul(W,Be)|0)+Math.imul(R,Ie)|0,o=o+Math.imul(R,Be)|0;var Xe=(l+(r=r+Math.imul(v,ue)|0)|0)+((8191&(a=(a=a+Math.imul(v,de)|0)+Math.imul(Z,ue)|0))<<13)|0;l=((o=o+Math.imul(Z,de)|0)+(a>>>13)|0)+(Xe>>>26)|0,Xe&=67108863,r=Math.imul(N,se),a=(a=Math.imul(N,le))+Math.imul(w,se)|0,o=Math.imul(w,le),r=r+Math.imul(O,Ie)|0,a=(a=a+Math.imul(O,Be)|0)+Math.imul(x,Ie)|0,o=o+Math.imul(x,Be)|0;var We=(l+(r=r+Math.imul(W,ue)|0)|0)+((8191&(a=(a=a+Math.imul(W,de)|0)+Math.imul(R,ue)|0))<<13)|0;l=((o=o+Math.imul(R,de)|0)+(a>>>13)|0)+(We>>>26)|0,We&=67108863,r=Math.imul(N,Ie),a=(a=Math.imul(N,Be))+Math.imul(w,Ie)|0,o=Math.imul(w,Be);var Re=(l+(r=r+Math.imul(O,ue)|0)|0)+((8191&(a=(a=a+Math.imul(O,de)|0)+Math.imul(x,ue)|0))<<13)|0;l=((o=o+Math.imul(x,de)|0)+(a>>>13)|0)+(Re>>>26)|0,Re&=67108863;var Ve=(l+(r=Math.imul(N,ue))|0)+((8191&(a=(a=Math.imul(N,de))+Math.imul(w,ue)|0))<<13)|0;return l=((o=Math.imul(w,de))+(a>>>13)|0)+(Ve>>>26)|0,Ve&=67108863,s[0]=_e,s[1]=Ce,s[2]=be,s[3]=pe,s[4]=Qe,s[5]=he,s[6]=ye,s[7]=me,s[8]=Fe,s[9]=Ue,s[10]=fe,s[11]=Ge,s[12]=Ee,s[13]=ve,s[14]=Ze,s[15]=Xe,s[16]=We,s[17]=Re,s[18]=Ve,0!==l&&(s[19]=l,n.length++),n};function d(e,t,n){return(new _).mulp(e,t,n)}function _(e,t){this.x=e,this.y=t}Math.imul||(u=A),i.prototype.mulTo=function(e,t){var n=this.length+e.length;return 10===this.length&&10===e.length?u(this,e,t):n<63?A(this,e,t):n<1024?function(e,t,n){n.negative=t.negative^e.negative,n.length=e.length+t.length;for(var r=0,a=0,o=0;o<n.length-1;o++){var i=a;a=0;for(var c=67108863&r,s=Math.min(o,t.length-1),l=Math.max(0,o-e.length+1);l<=s;l++){var g=o-l,I=(0|e.words[g])*(0|t.words[l]),B=67108863&I;c=67108863&(B=B+c|0),a+=(i=(i=i+(I/67108864|0)|0)+(B>>>26)|0)>>>26,i&=67108863}n.words[o]=c,r=i,i=a}return 0!==r?n.words[o]=r:n.length--,n.strip()}(this,e,t):d(this,e,t)},_.prototype.makeRBT=function(e){for(var t=new Array(e),n=i.prototype._countBits(e)-1,r=0;r<e;r++)t[r]=this.revBin(r,n,e);return t},_.prototype.revBin=function(e,t,n){if(0===e||e===n-1)return e;for(var r=0,a=0;a<t;a++)r|=(1&e)<<t-a-1,e>>=1;return r},_.prototype.permute=function(e,t,n,r,a,o){for(var i=0;i<o;i++)r[i]=t[e[i]],a[i]=n[e[i]]},_.prototype.transform=function(e,t,n,r,a,o){this.permute(o,e,t,n,r,a);for(var i=1;i<a;i<<=1)for(var c=i<<1,s=Math.cos(2*Math.PI/c),l=Math.sin(2*Math.PI/c),g=0;g<a;g+=c)for(var I=s,B=l,A=0;A<i;A++){var u=n[g+A],d=r[g+A],_=n[g+A+i],C=r[g+A+i],b=I*_-B*C;C=I*C+B*_,_=b,n[g+A]=u+_,r[g+A]=d+C,n[g+A+i]=u-_,r[g+A+i]=d-C,A!==c&&(b=s*I-l*B,B=s*B+l*I,I=b)}},_.prototype.guessLen13b=function(e,t){var n=1|Math.max(t,e),r=1&n,a=0;for(n=n/2|0;n;n>>>=1)a++;return 1<<a+1+r},_.prototype.conjugate=function(e,t,n){if(!(n<=1))for(var r=0;r<n/2;r++){var a=e[r];e[r]=e[n-r-1],e[n-r-1]=a,a=t[r],t[r]=-t[n-r-1],t[n-r-1]=-a}},_.prototype.normalize13b=function(e,t){for(var n=0,r=0;r<t/2;r++){var a=8192*Math.round(e[2*r+1]/t)+Math.round(e[2*r]/t)+n;e[r]=67108863&a,n=a<67108864?0:a/67108864|0}return e},_.prototype.convert13b=function(e,t,n,r){for(var o=0,i=0;i<t;i++)o+=0|e[i],n[2*i]=8191&o,o>>>=13,n[2*i+1]=8191&o,o>>>=13;for(i=2*t;i<r;++i)n[i]=0;a(0===o),a(0==(-8192&o))},_.prototype.stub=function(e){for(var t=new Array(e),n=0;n<e;n++)t[n]=0;return t},_.prototype.mulp=function(e,t,n){var r=2*this.guessLen13b(e.length,t.length),a=this.makeRBT(r),o=this.stub(r),i=new Array(r),c=new Array(r),s=new Array(r),l=new Array(r),g=new Array(r),I=new Array(r),B=n.words;B.length=r,this.convert13b(e.words,e.length,i,r),this.convert13b(t.words,t.length,l,r),this.transform(i,o,c,s,r,a),this.transform(l,o,g,I,r,a);for(var A=0;A<r;A++){var u=c[A]*g[A]-s[A]*I[A];s[A]=c[A]*I[A]+s[A]*g[A],c[A]=u}return this.conjugate(c,s,r),this.transform(c,s,B,o,r,a),this.conjugate(B,o,r),this.normalize13b(B,r),n.negative=e.negative^t.negative,n.length=e.length+t.length,n.strip()},i.prototype.mul=function(e){var t=new i(null);return t.words=new Array(this.length+e.length),this.mulTo(e,t)},i.prototype.mulf=function(e){var t=new i(null);return t.words=new Array(this.length+e.length),d(this,e,t)},i.prototype.imul=function(e){return this.clone().mulTo(e,this)},i.prototype.imuln=function(e){a("number"==typeof e),a(e<67108864);for(var t=0,n=0;n<this.length;n++){var r=(0|this.words[n])*e,o=(67108863&r)+(67108863&t);t>>=26,t+=r/67108864|0,t+=o>>>26,this.words[n]=67108863&o}return 0!==t&&(this.words[n]=t,this.length++),this},i.prototype.muln=function(e){return this.clone().imuln(e)},i.prototype.sqr=function(){return this.mul(this)},i.prototype.isqr=function(){return this.imul(this.clone())},i.prototype.pow=function(e){var t=function(e){for(var t=new Array(e.bitLength()),n=0;n<t.length;n++){var r=n/26|0,a=n%26;t[n]=(e.words[r]&1<<a)>>>a}return t}(e);if(0===t.length)return new i(1);for(var n=this,r=0;r<t.length&&0===t[r];r++,n=n.sqr());if(++r<t.length)for(var a=n.sqr();r<t.length;r++,a=a.sqr())0!==t[r]&&(n=n.mul(a));return n},i.prototype.iushln=function(e){a("number"==typeof e&&e>=0);var t,n=e%26,r=(e-n)/26,o=67108863>>>26-n<<26-n;if(0!==n){var i=0;for(t=0;t<this.length;t++){var c=this.words[t]&o,s=(0|this.words[t])-c<<n;this.words[t]=s|i,i=c>>>26-n}i&&(this.words[t]=i,this.length++)}if(0!==r){for(t=this.length-1;t>=0;t--)this.words[t+r]=this.words[t];for(t=0;t<r;t++)this.words[t]=0;this.length+=r}return this.strip()},i.prototype.ishln=function(e){return a(0===this.negative),this.iushln(e)},i.prototype.iushrn=function(e,t,n){var r;a("number"==typeof e&&e>=0),r=t?(t-t%26)/26:0;var o=e%26,i=Math.min((e-o)/26,this.length),c=67108863^67108863>>>o<<o,s=n;if(r-=i,r=Math.max(0,r),s){for(var l=0;l<i;l++)s.words[l]=this.words[l];s.length=i}if(0===i);else if(this.length>i)for(this.length-=i,l=0;l<this.length;l++)this.words[l]=this.words[l+i];else this.words[0]=0,this.length=1;var g=0;for(l=this.length-1;l>=0&&(0!==g||l>=r);l--){var I=0|this.words[l];this.words[l]=g<<26-o|I>>>o,g=I&c}return s&&0!==g&&(s.words[s.length++]=g),0===this.length&&(this.words[0]=0,this.length=1),this.strip()},i.prototype.ishrn=function(e,t,n){return a(0===this.negative),this.iushrn(e,t,n)},i.prototype.shln=function(e){return this.clone().ishln(e)},i.prototype.ushln=function(e){return this.clone().iushln(e)},i.prototype.shrn=function(e){return this.clone().ishrn(e)},i.prototype.ushrn=function(e){return this.clone().iushrn(e)},i.prototype.testn=function(e){a("number"==typeof e&&e>=0);var t=e%26,n=(e-t)/26,r=1<<t;return!(this.length<=n||!(this.words[n]&r))},i.prototype.imaskn=function(e){a("number"==typeof e&&e>=0);var t=e%26,n=(e-t)/26;if(a(0===this.negative,"imaskn works only with positive numbers"),this.length<=n)return this;if(0!==t&&n++,this.length=Math.min(n,this.length),0!==t){var r=67108863^67108863>>>t<<t;this.words[this.length-1]&=r}return this.strip()},i.prototype.maskn=function(e){return this.clone().imaskn(e)},i.prototype.iaddn=function(e){return a("number"==typeof e),a(e<67108864),e<0?this.isubn(-e):0!==this.negative?1===this.length&&(0|this.words[0])<e?(this.words[0]=e-(0|this.words[0]),this.negative=0,this):(this.negative=0,this.isubn(e),this.negative=1,this):this._iaddn(e)},i.prototype._iaddn=function(e){this.words[0]+=e;for(var t=0;t<this.length&&this.words[t]>=67108864;t++)this.words[t]-=67108864,t===this.length-1?this.words[t+1]=1:this.words[t+1]++;return this.length=Math.max(this.length,t+1),this},i.prototype.isubn=function(e){if(a("number"==typeof e),a(e<67108864),e<0)return this.iaddn(-e);if(0!==this.negative)return this.negative=0,this.iaddn(e),this.negative=1,this;if(this.words[0]-=e,1===this.length&&this.words[0]<0)this.words[0]=-this.words[0],this.negative=1;else for(var t=0;t<this.length&&this.words[t]<0;t++)this.words[t]+=67108864,this.words[t+1]-=1;return this.strip()},i.prototype.addn=function(e){return this.clone().iaddn(e)},i.prototype.subn=function(e){return this.clone().isubn(e)},i.prototype.iabs=function(){return this.negative=0,this},i.prototype.abs=function(){return this.clone().iabs()},i.prototype._ishlnsubmul=function(e,t,n){var r,o,i=e.length+n;this._expand(i);var c=0;for(r=0;r<e.length;r++){o=(0|this.words[r+n])+c;var s=(0|e.words[r])*t;c=((o-=67108863&s)>>26)-(s/67108864|0),this.words[r+n]=67108863&o}for(;r<this.length-n;r++)c=(o=(0|this.words[r+n])+c)>>26,this.words[r+n]=67108863&o;if(0===c)return this.strip();for(a(-1===c),c=0,r=0;r<this.length;r++)c=(o=-(0|this.words[r])+c)>>26,this.words[r]=67108863&o;return this.negative=1,this.strip()},i.prototype._wordDiv=function(e,t){var n=(this.length,e.length),r=this.clone(),a=e,o=0|a.words[a.length-1];0!=(n=26-this._countBits(o))&&(a=a.ushln(n),r.iushln(n),o=0|a.words[a.length-1]);var c,s=r.length-a.length;if("mod"!==t){(c=new i(null)).length=s+1,c.words=new Array(c.length);for(var l=0;l<c.length;l++)c.words[l]=0}var g=r.clone()._ishlnsubmul(a,1,s);0===g.negative&&(r=g,c&&(c.words[s]=1));for(var I=s-1;I>=0;I--){var B=67108864*(0|r.words[a.length+I])+(0|r.words[a.length+I-1]);for(B=Math.min(B/o|0,67108863),r._ishlnsubmul(a,B,I);0!==r.negative;)B--,r.negative=0,r._ishlnsubmul(a,1,I),r.isZero()||(r.negative^=1);c&&(c.words[I]=B)}return c&&c.strip(),r.strip(),"div"!==t&&0!==n&&r.iushrn(n),{div:c||null,mod:r}},i.prototype.divmod=function(e,t,n){return a(!e.isZero()),this.isZero()?{div:new i(0),mod:new i(0)}:0!==this.negative&&0===e.negative?(c=this.neg().divmod(e,t),"mod"!==t&&(r=c.div.neg()),"div"!==t&&(o=c.mod.neg(),n&&0!==o.negative&&o.iadd(e)),{div:r,mod:o}):0===this.negative&&0!==e.negative?(c=this.divmod(e.neg(),t),"mod"!==t&&(r=c.div.neg()),{div:r,mod:c.mod}):0!=(this.negative&e.negative)?(c=this.neg().divmod(e.neg(),t),"div"!==t&&(o=c.mod.neg(),n&&0!==o.negative&&o.isub(e)),{div:c.div,mod:o}):e.length>this.length||this.cmp(e)<0?{div:new i(0),mod:this}:1===e.length?"div"===t?{div:this.divn(e.words[0]),mod:null}:"mod"===t?{div:null,mod:new i(this.modn(e.words[0]))}:{div:this.divn(e.words[0]),mod:new i(this.modn(e.words[0]))}:this._wordDiv(e,t);var r,o,c},i.prototype.div=function(e){return this.divmod(e,"div",!1).div},i.prototype.mod=function(e){return this.divmod(e,"mod",!1).mod},i.prototype.umod=function(e){return this.divmod(e,"mod",!0).mod},i.prototype.divRound=function(e){var t=this.divmod(e);if(t.mod.isZero())return t.div;var n=0!==t.div.negative?t.mod.isub(e):t.mod,r=e.ushrn(1),a=e.andln(1),o=n.cmp(r);return o<0||1===a&&0===o?t.div:0!==t.div.negative?t.div.isubn(1):t.div.iaddn(1)},i.prototype.modn=function(e){a(e<=67108863);for(var t=(1<<26)%e,n=0,r=this.length-1;r>=0;r--)n=(t*n+(0|this.words[r]))%e;return n},i.prototype.idivn=function(e){a(e<=67108863);for(var t=0,n=this.length-1;n>=0;n--){var r=(0|this.words[n])+67108864*t;this.words[n]=r/e|0,t=r%e}return this.strip()},i.prototype.divn=function(e){return this.clone().idivn(e)},i.prototype.egcd=function(e){a(0===e.negative),a(!e.isZero());var t=this,n=e.clone();t=0!==t.negative?t.umod(e):t.clone();for(var r=new i(1),o=new i(0),c=new i(0),s=new i(1),l=0;t.isEven()&&n.isEven();)t.iushrn(1),n.iushrn(1),++l;for(var g=n.clone(),I=t.clone();!t.isZero();){for(var B=0,A=1;0==(t.words[0]&A)&&B<26;++B,A<<=1);if(B>0)for(t.iushrn(B);B-- >0;)(r.isOdd()||o.isOdd())&&(r.iadd(g),o.isub(I)),r.iushrn(1),o.iushrn(1);for(var u=0,d=1;0==(n.words[0]&d)&&u<26;++u,d<<=1);if(u>0)for(n.iushrn(u);u-- >0;)(c.isOdd()||s.isOdd())&&(c.iadd(g),s.isub(I)),c.iushrn(1),s.iushrn(1);t.cmp(n)>=0?(t.isub(n),r.isub(c),o.isub(s)):(n.isub(t),c.isub(r),s.isub(o))}return{a:c,b:s,gcd:n.iushln(l)}},i.prototype._invmp=function(e){a(0===e.negative),a(!e.isZero());var t=this,n=e.clone();t=0!==t.negative?t.umod(e):t.clone();for(var r,o=new i(1),c=new i(0),s=n.clone();t.cmpn(1)>0&&n.cmpn(1)>0;){for(var l=0,g=1;0==(t.words[0]&g)&&l<26;++l,g<<=1);if(l>0)for(t.iushrn(l);l-- >0;)o.isOdd()&&o.iadd(s),o.iushrn(1);for(var I=0,B=1;0==(n.words[0]&B)&&I<26;++I,B<<=1);if(I>0)for(n.iushrn(I);I-- >0;)c.isOdd()&&c.iadd(s),c.iushrn(1);t.cmp(n)>=0?(t.isub(n),o.isub(c)):(n.isub(t),c.isub(o))}return(r=0===t.cmpn(1)?o:c).cmpn(0)<0&&r.iadd(e),r},i.prototype.gcd=function(e){if(this.isZero())return e.abs();if(e.isZero())return this.abs();var t=this.clone(),n=e.clone();t.negative=0,n.negative=0;for(var r=0;t.isEven()&&n.isEven();r++)t.iushrn(1),n.iushrn(1);for(;;){for(;t.isEven();)t.iushrn(1);for(;n.isEven();)n.iushrn(1);var a=t.cmp(n);if(a<0){var o=t;t=n,n=o}else if(0===a||0===n.cmpn(1))break;t.isub(n)}return n.iushln(r)},i.prototype.invm=function(e){return this.egcd(e).a.umod(e)},i.prototype.isEven=function(){return 0==(1&this.words[0])},i.prototype.isOdd=function(){return 1==(1&this.words[0])},i.prototype.andln=function(e){return this.words[0]&e},i.prototype.bincn=function(e){a("number"==typeof e);var t=e%26,n=(e-t)/26,r=1<<t;if(this.length<=n)return this._expand(n+1),this.words[n]|=r,this;for(var o=r,i=n;0!==o&&i<this.length;i++){var c=0|this.words[i];o=(c+=o)>>>26,c&=67108863,this.words[i]=c}return 0!==o&&(this.words[i]=o,this.length++),this},i.prototype.isZero=function(){return 1===this.length&&0===this.words[0]},i.prototype.cmpn=function(e){var t,n=e<0;if(0!==this.negative&&!n)return-1;if(0===this.negative&&n)return 1;if(this.strip(),this.length>1)t=1;else{n&&(e=-e),a(e<=67108863,"Number is too big");var r=0|this.words[0];t=r===e?0:r<e?-1:1}return 0!==this.negative?0|-t:t},i.prototype.cmp=function(e){if(0!==this.negative&&0===e.negative)return-1;if(0===this.negative&&0!==e.negative)return 1;var t=this.ucmp(e);return 0!==this.negative?0|-t:t},i.prototype.ucmp=function(e){if(this.length>e.length)return 1;if(this.length<e.length)return-1;for(var t=0,n=this.length-1;n>=0;n--){var r=0|this.words[n],a=0|e.words[n];if(r!==a){r<a?t=-1:r>a&&(t=1);break}}return t},i.prototype.gtn=function(e){return 1===this.cmpn(e)},i.prototype.gt=function(e){return 1===this.cmp(e)},i.prototype.gten=function(e){return this.cmpn(e)>=0},i.prototype.gte=function(e){return this.cmp(e)>=0},i.prototype.ltn=function(e){return-1===this.cmpn(e)},i.prototype.lt=function(e){return-1===this.cmp(e)},i.prototype.lten=function(e){return this.cmpn(e)<=0},i.prototype.lte=function(e){return this.cmp(e)<=0},i.prototype.eqn=function(e){return 0===this.cmpn(e)},i.prototype.eq=function(e){return 0===this.cmp(e)},i.red=function(e){return new m(e)},i.prototype.toRed=function(e){return a(!this.red,"Already a number in reduction context"),a(0===this.negative,"red works only with positives"),e.convertTo(this)._forceRed(e)},i.prototype.fromRed=function(){return a(this.red,"fromRed works only with numbers in reduction context"),this.red.convertFrom(this)},i.prototype._forceRed=function(e){return this.red=e,this},i.prototype.forceRed=function(e){return a(!this.red,"Already a number in reduction context"),this._forceRed(e)},i.prototype.redAdd=function(e){return a(this.red,"redAdd works only with red numbers"),this.red.add(this,e)},i.prototype.redIAdd=function(e){return a(this.red,"redIAdd works only with red numbers"),this.red.iadd(this,e)},i.prototype.redSub=function(e){return a(this.red,"redSub works only with red numbers"),this.red.sub(this,e)},i.prototype.redISub=function(e){return a(this.red,"redISub works only with red numbers"),this.red.isub(this,e)},i.prototype.redShl=function(e){return a(this.red,"redShl works only with red numbers"),this.red.shl(this,e)},i.prototype.redMul=function(e){return a(this.red,"redMul works only with red numbers"),this.red._verify2(this,e),this.red.mul(this,e)},i.prototype.redIMul=function(e){return a(this.red,"redMul works only with red numbers"),this.red._verify2(this,e),this.red.imul(this,e)},i.prototype.redSqr=function(){return a(this.red,"redSqr works only with red numbers"),this.red._verify1(this),this.red.sqr(this)},i.prototype.redISqr=function(){return a(this.red,"redISqr works only with red numbers"),this.red._verify1(this),this.red.isqr(this)},i.prototype.redSqrt=function(){return a(this.red,"redSqrt works only with red numbers"),this.red._verify1(this),this.red.sqrt(this)},i.prototype.redInvm=function(){return a(this.red,"redInvm works only with red numbers"),this.red._verify1(this),this.red.invm(this)},i.prototype.redNeg=function(){return a(this.red,"redNeg works only with red numbers"),this.red._verify1(this),this.red.neg(this)},i.prototype.redPow=function(e){return a(this.red&&!e.red,"redPow(normalNum)"),this.red._verify1(this),this.red.pow(this,e)};var C={k256:null,p224:null,p192:null,p25519:null};function b(e,t){this.name=e,this.p=new i(t,16),this.n=this.p.bitLength(),this.k=new i(1).iushln(this.n).isub(this.p),this.tmp=this._tmp()}function p(){b.call(this,"k256","ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff fffffffe fffffc2f")}function Q(){b.call(this,"p224","ffffffff ffffffff ffffffff ffffffff 00000000 00000000 00000001")}function h(){b.call(this,"p192","ffffffff ffffffff ffffffff fffffffe ffffffff ffffffff")}function y(){b.call(this,"25519","7fffffffffffffff ffffffffffffffff ffffffffffffffff ffffffffffffffed")}function m(e){if("string"==typeof e){var t=i._prime(e);this.m=t.p,this.prime=t}else a(e.gtn(1),"modulus must be greater than 1"),this.m=e,this.prime=null}function F(e){m.call(this,e),this.shift=this.m.bitLength(),this.shift%26!=0&&(this.shift+=26-this.shift%26),this.r=new i(1).iushln(this.shift),this.r2=this.imod(this.r.sqr()),this.rinv=this.r._invmp(this.m),this.minv=this.rinv.mul(this.r).isubn(1).div(this.m),this.minv=this.minv.umod(this.r),this.minv=this.r.sub(this.minv)}b.prototype._tmp=function(){var e=new i(null);return e.words=new Array(Math.ceil(this.n/13)),e},b.prototype.ireduce=function(e){var t,n=e;do{this.split(n,this.tmp),t=(n=(n=this.imulK(n)).iadd(this.tmp)).bitLength()}while(t>this.n);var r=t<this.n?-1:n.ucmp(this.p);return 0===r?(n.words[0]=0,n.length=1):r>0?n.isub(this.p):n.strip(),n},b.prototype.split=function(e,t){e.iushrn(this.n,0,t)},b.prototype.imulK=function(e){return e.imul(this.k)},o(p,b),p.prototype.split=function(e,t){for(var n=Math.min(e.length,9),r=0;r<n;r++)t.words[r]=e.words[r];if(t.length=n,e.length<=9)return e.words[0]=0,void(e.length=1);var a=e.words[9];for(t.words[t.length++]=4194303&a,r=10;r<e.length;r++){var o=0|e.words[r];e.words[r-10]=(4194303&o)<<4|a>>>22,a=o}a>>>=22,e.words[r-10]=a,0===a&&e.length>10?e.length-=10:e.length-=9},p.prototype.imulK=function(e){e.words[e.length]=0,e.words[e.length+1]=0,e.length+=2;for(var t=0,n=0;n<e.length;n++){var r=0|e.words[n];t+=977*r,e.words[n]=67108863&t,t=64*r+(t/67108864|0)}return 0===e.words[e.length-1]&&(e.length--,0===e.words[e.length-1]&&e.length--),e},o(Q,b),o(h,b),o(y,b),y.prototype.imulK=function(e){for(var t=0,n=0;n<e.length;n++){var r=19*(0|e.words[n])+t,a=67108863&r;r>>>=26,e.words[n]=a,t=r}return 0!==t&&(e.words[e.length++]=t),e},i._prime=function(e){if(C[e])return C[e];var t;if("k256"===e)t=new p;else if("p224"===e)t=new Q;else if("p192"===e)t=new h;else{if("p25519"!==e)throw new Error("Unknown prime "+e);t=new y}return C[e]=t,t},m.prototype._verify1=function(e){a(0===e.negative,"red works only with positives"),a(e.red,"red works only with red numbers")},m.prototype._verify2=function(e,t){a(0==(e.negative|t.negative),"red works only with positives"),a(e.red&&e.red===t.red,"red works only with red numbers")},m.prototype.imod=function(e){return this.prime?this.prime.ireduce(e)._forceRed(this):e.umod(this.m)._forceRed(this)},m.prototype.neg=function(e){return e.isZero()?e.clone():this.m.sub(e)._forceRed(this)},m.prototype.add=function(e,t){this._verify2(e,t);var n=e.add(t);return n.cmp(this.m)>=0&&n.isub(this.m),n._forceRed(this)},m.prototype.iadd=function(e,t){this._verify2(e,t);var n=e.iadd(t);return n.cmp(this.m)>=0&&n.isub(this.m),n},m.prototype.sub=function(e,t){this._verify2(e,t);var n=e.sub(t);return n.cmpn(0)<0&&n.iadd(this.m),n._forceRed(this)},m.prototype.isub=function(e,t){this._verify2(e,t);var n=e.isub(t);return n.cmpn(0)<0&&n.iadd(this.m),n},m.prototype.shl=function(e,t){return this._verify1(e),this.imod(e.ushln(t))},m.prototype.imul=function(e,t){return this._verify2(e,t),this.imod(e.imul(t))},m.prototype.mul=function(e,t){return this._verify2(e,t),this.imod(e.mul(t))},m.prototype.isqr=function(e){return this.imul(e,e.clone())},m.prototype.sqr=function(e){return this.mul(e,e)},m.prototype.sqrt=function(e){if(e.isZero())return e.clone();var t=this.m.andln(3);if(a(t%2==1),3===t){var n=this.m.add(new i(1)).iushrn(2);return this.pow(e,n)}for(var r=this.m.subn(1),o=0;!r.isZero()&&0===r.andln(1);)o++,r.iushrn(1);a(!r.isZero());var c=new i(1).toRed(this),s=c.redNeg(),l=this.m.subn(1).iushrn(1),g=this.m.bitLength();for(g=new i(2*g*g).toRed(this);0!==this.pow(g,l).cmp(s);)g.redIAdd(s);for(var I=this.pow(g,r),B=this.pow(e,r.addn(1).iushrn(1)),A=this.pow(e,r),u=o;0!==A.cmp(c);){for(var d=A,_=0;0!==d.cmp(c);_++)d=d.redSqr();a(_<u);var C=this.pow(I,new i(1).iushln(u-_-1));B=B.redMul(C),I=C.redSqr(),A=A.redMul(I),u=_}return B},m.prototype.invm=function(e){var t=e._invmp(this.m);return 0!==t.negative?(t.negative=0,this.imod(t).redNeg()):this.imod(t)},m.prototype.pow=function(e,t){if(t.isZero())return new i(1).toRed(this);if(0===t.cmpn(1))return e.clone();var n=new Array(16);n[0]=new i(1).toRed(this),n[1]=e;for(var r=2;r<n.length;r++)n[r]=this.mul(n[r-1],e);var a=n[0],o=0,c=0,s=t.bitLength()%26;for(0===s&&(s=26),r=t.length-1;r>=0;r--){for(var l=t.words[r],g=s-1;g>=0;g--){var I=l>>g&1;a!==n[0]&&(a=this.sqr(a)),0!==I||0!==o?(o<<=1,o|=I,(4==++c||0===r&&0===g)&&(a=this.mul(a,n[o]),c=0,o=0)):c=0}s=26}return a},m.prototype.convertTo=function(e){var t=e.umod(this.m);return t===e?t.clone():t},m.prototype.convertFrom=function(e){var t=e.clone();return t.red=null,t},i.mont=function(e){return new F(e)},o(F,m),F.prototype.convertTo=function(e){return this.imod(e.ushln(this.shift))},F.prototype.convertFrom=function(e){var t=this.imod(e.mul(this.rinv));return t.red=null,t},F.prototype.imul=function(e,t){if(e.isZero()||t.isZero())return e.words[0]=0,e.length=1,e;var n=e.imul(t),r=n.maskn(this.shift).mul(this.minv).imaskn(this.shift).mul(this.m),a=n.isub(r).iushrn(this.shift),o=a;return a.cmp(this.m)>=0?o=a.isub(this.m):a.cmpn(0)<0&&(o=a.iadd(this.m)),o._forceRed(this)},F.prototype.mul=function(e,t){if(e.isZero()||t.isZero())return new i(0)._forceRed(this);var n=e.mul(t),r=n.maskn(this.shift).mul(this.minv).imaskn(this.shift).mul(this.m),a=n.isub(r).iushrn(this.shift),o=a;return a.cmp(this.m)>=0?o=a.isub(this.m):a.cmpn(0)<0&&(o=a.iadd(this.m)),o._forceRed(this)},F.prototype.invm=function(e){return this.imod(e._invmp(this.m).mul(this.r2))._forceRed(this)}}(e,this)}).call(this,n(42)(e))},function(e,t,n){var r,a,o,i,c;function s(e){return(s="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e})(e)}c="object"==s((i=this).sodium)&&"function"==typeof i.sodium.onload?i.sodium.onload:null,a=[t,n(86)],void 0!==(o="function"==typeof(r=function(e,t){"use strict";var n,r=t.ready.then((function(){function r(){if(0!==n._sodium_init())throw new Error("libsodium was not correctly initialized.");for(var t=["crypto_aead_chacha20poly1305_decrypt","crypto_aead_chacha20poly1305_decrypt_detached","crypto_aead_chacha20poly1305_encrypt","crypto_aead_chacha20poly1305_encrypt_detached","crypto_aead_chacha20poly1305_ietf_decrypt","crypto_aead_chacha20poly1305_ietf_decrypt_detached","crypto_aead_chacha20poly1305_ietf_encrypt","crypto_aead_chacha20poly1305_ietf_encrypt_detached","crypto_aead_chacha20poly1305_ietf_keygen","crypto_aead_chacha20poly1305_keygen","crypto_aead_xchacha20poly1305_ietf_decrypt","crypto_aead_xchacha20poly1305_ietf_decrypt_detached","crypto_aead_xchacha20poly1305_ietf_encrypt","crypto_aead_xchacha20poly1305_ietf_encrypt_detached","crypto_aead_xchacha20poly1305_ietf_keygen","crypto_auth","crypto_auth_hmacsha256","crypto_auth_hmacsha256_keygen","crypto_auth_hmacsha256_verify","crypto_auth_hmacsha512","crypto_auth_hmacsha512_keygen","crypto_auth_hmacsha512_verify","crypto_auth_keygen","crypto_auth_verify","crypto_box_beforenm","crypto_box_curve25519xchacha20poly1305_keypair","crypto_box_curve25519xchacha20poly1305_seal","crypto_box_curve25519xchacha20poly1305_seal_open","crypto_box_detached","crypto_box_easy","crypto_box_easy_afternm","crypto_box_keypair","crypto_box_open_detached","crypto_box_open_easy","crypto_box_open_easy_afternm","crypto_box_seal","crypto_box_seal_open","crypto_box_seed_keypair","crypto_core_ristretto255_add","crypto_core_ristretto255_from_hash","crypto_core_ristretto255_is_valid_point","crypto_core_ristretto255_random","crypto_core_ristretto255_scalar_add","crypto_core_ristretto255_scalar_complement","crypto_core_ristretto255_scalar_invert","crypto_core_ristretto255_scalar_mul","crypto_core_ristretto255_scalar_negate","crypto_core_ristretto255_scalar_random","crypto_core_ristretto255_scalar_reduce","crypto_core_ristretto255_scalar_sub","crypto_core_ristretto255_sub","crypto_generichash","crypto_generichash_blake2b_salt_personal","crypto_generichash_final","crypto_generichash_init","crypto_generichash_keygen","crypto_generichash_update","crypto_hash","crypto_hash_sha256","crypto_hash_sha512","crypto_kdf_derive_from_key","crypto_kdf_keygen","crypto_kx_client_session_keys","crypto_kx_keypair","crypto_kx_seed_keypair","crypto_kx_server_session_keys","crypto_onetimeauth","crypto_onetimeauth_final","crypto_onetimeauth_init","crypto_onetimeauth_keygen","crypto_onetimeauth_update","crypto_onetimeauth_verify","crypto_pwhash","crypto_pwhash_scryptsalsa208sha256","crypto_pwhash_scryptsalsa208sha256_ll","crypto_pwhash_scryptsalsa208sha256_str","crypto_pwhash_scryptsalsa208sha256_str_verify","crypto_pwhash_str","crypto_pwhash_str_verify","crypto_scalarmult","crypto_scalarmult_base","crypto_scalarmult_ristretto255","crypto_scalarmult_ristretto255_base","crypto_secretbox_detached","crypto_secretbox_easy","crypto_secretbox_keygen","crypto_secretbox_open_detached","crypto_secretbox_open_easy","crypto_secretstream_xchacha20poly1305_init_pull","crypto_secretstream_xchacha20poly1305_init_push","crypto_secretstream_xchacha20poly1305_keygen","crypto_secretstream_xchacha20poly1305_pull","crypto_secretstream_xchacha20poly1305_push","crypto_secretstream_xchacha20poly1305_rekey","crypto_shorthash","crypto_shorthash_keygen","crypto_shorthash_siphashx24","crypto_sign","crypto_sign_detached","crypto_sign_ed25519_pk_to_curve25519","crypto_sign_ed25519_sk_to_curve25519","crypto_sign_ed25519_sk_to_pk","crypto_sign_ed25519_sk_to_seed","crypto_sign_final_create","crypto_sign_final_verify","crypto_sign_init","crypto_sign_keypair","crypto_sign_open","crypto_sign_seed_keypair","crypto_sign_update","crypto_sign_verify_detached","crypto_stream_chacha20","crypto_stream_chacha20_ietf_xor","crypto_stream_chacha20_ietf_xor_ic","crypto_stream_chacha20_keygen","crypto_stream_chacha20_xor","crypto_stream_chacha20_xor_ic","crypto_stream_keygen","crypto_stream_xchacha20_keygen","crypto_stream_xchacha20_xor","crypto_stream_xchacha20_xor_ic","randombytes_buf","randombytes_buf_deterministic","randombytes_close","randombytes_random","randombytes_set_implementation","randombytes_stir","randombytes_uniform","sodium_version_string"],r=[y,m,F,U,f,G,E,v,Z,X,W,R,V,O,x,T,N,w,k,Y,S,H,D,J,P,M,L,z,j,K,q,$,ee,te,ne,re,ae,oe,ie,ce,se,le,ge,Ie,Be,Ae,ue,de,_e,Ce,be,pe,Qe,he,ye,me,Fe,Ue,fe,Ge,Ee,ve,Ze,Xe,We,Re,Ve,Oe,xe,Te,Ne,we,ke,Ye,Se,He,De,Je,Pe,Me,Le,ze,je,Ke,qe,$e,et,tt,nt,rt,at,ot,it,ct,st,lt,gt,It,Bt,At,ut,dt,_t,Ct,bt,pt,Qt,ht,yt,mt,Ft,Ut,ft,Gt,Et,vt,Zt,Xt,Wt,Rt,Vt,Ot,xt,Tt,Nt,wt,kt,Yt,St],a=0;a<r.length;a++)"function"==typeof n["_"+t[a]]&&(e[t[a]]=r[a]);var o=["SODIUM_LIBRARY_VERSION_MAJOR","SODIUM_LIBRARY_VERSION_MINOR","crypto_aead_chacha20poly1305_ABYTES","crypto_aead_chacha20poly1305_KEYBYTES","crypto_aead_chacha20poly1305_MESSAGEBYTES_MAX","crypto_aead_chacha20poly1305_NPUBBYTES","crypto_aead_chacha20poly1305_NSECBYTES","crypto_aead_chacha20poly1305_ietf_ABYTES","crypto_aead_chacha20poly1305_ietf_KEYBYTES","crypto_aead_chacha20poly1305_ietf_MESSAGEBYTES_MAX","crypto_aead_chacha20poly1305_ietf_NPUBBYTES","crypto_aead_chacha20poly1305_ietf_NSECBYTES","crypto_aead_xchacha20poly1305_ietf_ABYTES","crypto_aead_xchacha20poly1305_ietf_KEYBYTES","crypto_aead_xchacha20poly1305_ietf_MESSAGEBYTES_MAX","crypto_aead_xchacha20poly1305_ietf_NPUBBYTES","crypto_aead_xchacha20poly1305_ietf_NSECBYTES","crypto_auth_BYTES","crypto_auth_KEYBYTES","crypto_auth_hmacsha256_BYTES","crypto_auth_hmacsha256_KEYBYTES","crypto_auth_hmacsha512_BYTES","crypto_auth_hmacsha512_KEYBYTES","crypto_box_BEFORENMBYTES","crypto_box_MACBYTES","crypto_box_MESSAGEBYTES_MAX","crypto_box_NONCEBYTES","crypto_box_PUBLICKEYBYTES","crypto_box_SEALBYTES","crypto_box_SECRETKEYBYTES","crypto_box_SEEDBYTES","crypto_box_curve25519xchacha20poly1305_NONCEBYTES","crypto_box_curve25519xchacha20poly1305_PUBLICKEYBYTES","crypto_box_curve25519xchacha20poly1305_SECRETKEYBYTES","crypto_core_hchacha20_CONSTBYTES","crypto_core_hchacha20_INPUTBYTES","crypto_core_hchacha20_KEYBYTES","crypto_core_hchacha20_OUTPUTBYTES","crypto_core_ristretto255_BYTES","crypto_core_ristretto255_HASHBYTES","crypto_core_ristretto255_NONREDUCEDSCALARBYTES","crypto_core_ristretto255_SCALARBYTES","crypto_generichash_BYTES","crypto_generichash_BYTES_MAX","crypto_generichash_BYTES_MIN","crypto_generichash_KEYBYTES","crypto_generichash_KEYBYTES_MAX","crypto_generichash_KEYBYTES_MIN","crypto_generichash_blake2b_BYTES","crypto_generichash_blake2b_BYTES_MAX","crypto_generichash_blake2b_BYTES_MIN","crypto_generichash_blake2b_KEYBYTES","crypto_generichash_blake2b_KEYBYTES_MAX","crypto_generichash_blake2b_KEYBYTES_MIN","crypto_generichash_blake2b_PERSONALBYTES","crypto_generichash_blake2b_SALTBYTES","crypto_hash_BYTES","crypto_hash_sha256_BYTES","crypto_hash_sha512_BYTES","crypto_kdf_BYTES_MAX","crypto_kdf_BYTES_MIN","crypto_kdf_CONTEXTBYTES","crypto_kdf_KEYBYTES","crypto_kx_PUBLICKEYBYTES","crypto_kx_SECRETKEYBYTES","crypto_kx_SEEDBYTES","crypto_kx_SESSIONKEYBYTES","crypto_onetimeauth_BYTES","crypto_onetimeauth_KEYBYTES","crypto_pwhash_ALG_ARGON2I13","crypto_pwhash_ALG_ARGON2ID13","crypto_pwhash_ALG_DEFAULT","crypto_pwhash_BYTES_MAX","crypto_pwhash_BYTES_MIN","crypto_pwhash_MEMLIMIT_INTERACTIVE","crypto_pwhash_MEMLIMIT_MAX","crypto_pwhash_MEMLIMIT_MIN","crypto_pwhash_MEMLIMIT_MODERATE","crypto_pwhash_MEMLIMIT_SENSITIVE","crypto_pwhash_OPSLIMIT_INTERACTIVE","crypto_pwhash_OPSLIMIT_MAX","crypto_pwhash_OPSLIMIT_MIN","crypto_pwhash_OPSLIMIT_MODERATE","crypto_pwhash_OPSLIMIT_SENSITIVE","crypto_pwhash_PASSWD_MAX","crypto_pwhash_PASSWD_MIN","crypto_pwhash_SALTBYTES","crypto_pwhash_STRBYTES","crypto_pwhash_STR_VERIFY","crypto_pwhash_scryptsalsa208sha256_BYTES_MAX","crypto_pwhash_scryptsalsa208sha256_BYTES_MIN","crypto_pwhash_scryptsalsa208sha256_MEMLIMIT_INTERACTIVE","crypto_pwhash_scryptsalsa208sha256_MEMLIMIT_MAX","crypto_pwhash_scryptsalsa208sha256_MEMLIMIT_MIN","crypto_pwhash_scryptsalsa208sha256_MEMLIMIT_SENSITIVE","crypto_pwhash_scryptsalsa208sha256_OPSLIMIT_INTERACTIVE","crypto_pwhash_scryptsalsa208sha256_OPSLIMIT_MAX","crypto_pwhash_scryptsalsa208sha256_OPSLIMIT_MIN","crypto_pwhash_scryptsalsa208sha256_OPSLIMIT_SENSITIVE","crypto_pwhash_scryptsalsa208sha256_SALTBYTES","crypto_pwhash_scryptsalsa208sha256_STRBYTES","crypto_pwhash_scryptsalsa208sha256_STR_VERIFY","crypto_scalarmult_BYTES","crypto_scalarmult_SCALARBYTES","crypto_scalarmult_ristretto255_BYTES","crypto_scalarmult_ristretto255_SCALARBYTES","crypto_secretbox_KEYBYTES","crypto_secretbox_MACBYTES","crypto_secretbox_MESSAGEBYTES_MAX","crypto_secretbox_NONCEBYTES","crypto_secretstream_xchacha20poly1305_ABYTES","crypto_secretstream_xchacha20poly1305_HEADERBYTES","crypto_secretstream_xchacha20poly1305_KEYBYTES","crypto_secretstream_xchacha20poly1305_MESSAGEBYTES_MAX","crypto_secretstream_xchacha20poly1305_MESSAGESBYTES_MAX","crypto_secretstream_xchacha20poly1305_NPUBBYTES","crypto_secretstream_xchacha20poly1305_TAG_FINAL","crypto_secretstream_xchacha20poly1305_TAG_MESSAGE","crypto_secretstream_xchacha20poly1305_TAG_PUSH","crypto_secretstream_xchacha20poly1305_TAG_REKEY","crypto_shorthash_BYTES","crypto_shorthash_KEYBYTES","crypto_shorthash_siphashx24_BYTES","crypto_shorthash_siphashx24_KEYBYTES","crypto_sign_BYTES","crypto_sign_MESSAGEBYTES_MAX","crypto_sign_PUBLICKEYBYTES","crypto_sign_SECRETKEYBYTES","crypto_sign_SEEDBYTES","crypto_stream_KEYBYTES","crypto_stream_MESSAGEBYTES_MAX","crypto_stream_NONCEBYTES","crypto_stream_chacha20_KEYBYTES","crypto_stream_chacha20_NONCEBYTES","crypto_stream_chacha20_ietf_KEYBYTES","crypto_stream_chacha20_ietf_MESSAGEBYTES_MAX","crypto_stream_chacha20_ietf_NONCEBYTES","crypto_stream_xchacha20_KEYBYTES","crypto_stream_xchacha20_MESSAGEBYTES_MAX","crypto_stream_xchacha20_NONCEBYTES","randombytes_SEEDBYTES"];for(a=0;a<o.length;a++)"function"==typeof(c=n["_"+o[a].toLowerCase()])&&(e[o[a]]=c());var i=["SODIUM_VERSION_STRING","crypto_pwhash_STRPREFIX","crypto_pwhash_scryptsalsa208sha256_STRPREFIX"];for(a=0;a<i.length;a++){var c;"function"==typeof(c=n["_"+i[a].toLowerCase()])&&(e[i[a]]=n.UTF8ToString(c()))}}n=t;try{r();var a=new Uint8Array([98,97,108,108,115]),o=e.randombytes_buf(e.crypto_secretbox_NONCEBYTES),i=e.randombytes_buf(e.crypto_secretbox_KEYBYTES),c=e.crypto_secretbox_easy(a,o,i),s=e.crypto_secretbox_open_easy(c,o,i);if(e.memcmp(a,s))return}catch(e){if(null==n.useBackupModule)throw new Error("Both wasm and asm failed to load"+e)}n.useBackupModule(),r()}));function a(e){if("function"==typeof TextEncoder)return(new TextEncoder).encode(e);e=unescape(encodeURIComponent(e));for(var t=new Uint8Array(e.length),n=0,r=e.length;n<r;n++)t[n]=e.charCodeAt(n);return t}function o(e){if("function"==typeof TextDecoder)return new TextDecoder("utf-8",{fatal:!0}).decode(e);var t=Math.ceil(e.length/8192);if(t<=1)try{return decodeURIComponent(escape(String.fromCharCode.apply(null,e)))}catch(e){throw new TypeError("The encoded data was not valid.")}for(var n="",r=0,a=0;a<t;a++){var i=Array.prototype.slice.call(e,8192*a+r,8192*(a+1)+r);if(0!=i.length){var c,s=i.length,l=0;do{var g=i[--s];g>=240?(l=4,c=!0):g>=224?(l=3,c=!0):g>=192?(l=2,c=!0):g<128&&(l=1,c=!0)}while(!c);for(var I=l-(i.length-s),B=0;B<I;B++)r--,i.pop();n+=o(i)}}return n}function i(e){e=h(null,e,"input");for(var t,n,r,a="",o=0;o<e.length;o++)r=87+(n=15&e[o])+(n-10>>8&-39)<<8|87+(t=e[o]>>>4)+(t-10>>8&-39),a+=String.fromCharCode(255&r)+String.fromCharCode(r>>>8);return a}var c={ORIGINAL:1,ORIGINAL_NO_PADDING:3,URLSAFE:5,URLSAFE_NO_PADDING:7};function l(e){if(null==e)return c.URLSAFE_NO_PADDING;if(e!==c.ORIGINAL&&e!==c.ORIGINAL_NO_PADDING&&e!==c.URLSAFE&&e!=c.URLSAFE_NO_PADDING)throw new Error("unsupported base64 variant");return e}function g(e,t){t=l(t),e=h(a,e,"input");var r,a=[],i=0|Math.floor(e.length/3),c=e.length-3*i,s=4*i+(0!==c?0==(2&t)?4:2+(c>>>1):0),g=new u(s+1),I=d(e);return a.push(I),a.push(g.address),0===n._sodium_bin2base64(g.address,g.length,I,e.length,t)&&b(a,"conversion failed"),g.length=s,r=o(g.to_Uint8Array()),C(a),r}function I(e,t){var n=t||"uint8array";if(!B(n))throw new Error(n+" output format is not available");if(e instanceof u){if("uint8array"===n)return e.to_Uint8Array();if("text"===n)return o(e.to_Uint8Array());if("hex"===n)return i(e.to_Uint8Array());if("base64"===n)return g(e.to_Uint8Array(),c.URLSAFE_NO_PADDING);throw new Error('What is output format "'+n+'"?')}if("object"==s(e)){for(var r=Object.keys(e),a={},l=0;l<r.length;l++)a[r[l]]=I(e[r[l]],n);return a}if("string"==typeof e)return e;throw new TypeError("Cannot format output")}function B(e){for(var t=["uint8array","text","hex","base64"],n=0;n<t.length;n++)if(t[n]===e)return!0;return!1}function A(e){if(e){if("string"!=typeof e)throw new TypeError("When defined, the output format must be a string");if(!B(e))throw new Error(e+" is not a supported output format")}}function u(e){this.length=e,this.address=_(e)}function d(e){var t=_(e.length);return n.HEAPU8.set(e,t),t}function _(e){var t=n._malloc(e);if(0===t)throw{message:"_malloc() failed",length:e};return t}function C(e){if(e)for(var t=0;t<e.length;t++)r=e[t],n._free(r);var r}function b(e,t){throw C(e),new Error(t)}function p(e,t){throw C(e),new TypeError(t)}function Q(e,t,n){null==t&&p(e,n+" cannot be null or undefined")}function h(e,t,n){return Q(e,t,n),t instanceof Uint8Array?t:"string"==typeof t?a(t):void p(e,"unsupported input type for "+n)}function y(e,t,r,a,o,i){var c=[];A(i);var s=null;null!=e&&(s=d(e=h(c,e,"secret_nonce")),e.length,c.push(s)),t=h(c,t,"ciphertext");var l,g=n._crypto_aead_chacha20poly1305_abytes(),B=t.length;B<g&&p(c,"ciphertext is too short"),l=d(t),c.push(l);var _=null,Q=0;null!=r&&(_=d(r=h(c,r,"additional_data")),Q=r.length,c.push(_)),a=h(c,a,"public_nonce");var y,m=0|n._crypto_aead_chacha20poly1305_npubbytes();a.length!==m&&p(c,"invalid public_nonce length"),y=d(a),c.push(y),o=h(c,o,"key");var F,U=0|n._crypto_aead_chacha20poly1305_keybytes();o.length!==U&&p(c,"invalid key length"),F=d(o),c.push(F);var f=new u(B-n._crypto_aead_chacha20poly1305_abytes()|0),G=f.address;if(c.push(G),0===n._crypto_aead_chacha20poly1305_decrypt(G,null,s,l,B,0,_,Q,0,y,F)){var E=I(f,i);return C(c),E}b(c,"ciphertext cannot be decrypted using that key")}function m(e,t,r,a,o,i,c){var s=[];A(c);var l=null;null!=e&&(l=d(e=h(s,e,"secret_nonce")),e.length,s.push(l));var g=d(t=h(s,t,"ciphertext")),B=t.length;s.push(g),r=h(s,r,"mac");var _,Q=0|n._crypto_box_macbytes();r.length!==Q&&p(s,"invalid mac length"),_=d(r),s.push(_);var y=null,m=0;null!=a&&(y=d(a=h(s,a,"additional_data")),m=a.length,s.push(y)),o=h(s,o,"public_nonce");var F,U=0|n._crypto_aead_chacha20poly1305_npubbytes();o.length!==U&&p(s,"invalid public_nonce length"),F=d(o),s.push(F),i=h(s,i,"key");var f,G=0|n._crypto_aead_chacha20poly1305_keybytes();i.length!==G&&p(s,"invalid key length"),f=d(i),s.push(f);var E=new u(0|B),v=E.address;if(s.push(v),0===n._crypto_aead_chacha20poly1305_decrypt_detached(v,l,g,B,0,_,y,m,0,F,f)){var Z=I(E,c);return C(s),Z}b(s,"ciphertext cannot be decrypted using that key")}function F(e,t,r,a,o,i){var c=[];A(i);var s=d(e=h(c,e,"message")),l=e.length;c.push(s);var g=null,B=0;null!=t&&(g=d(t=h(c,t,"additional_data")),B=t.length,c.push(g));var _=null;null!=r&&(_=d(r=h(c,r,"secret_nonce")),r.length,c.push(_)),a=h(c,a,"public_nonce");var Q,y=0|n._crypto_aead_chacha20poly1305_npubbytes();a.length!==y&&p(c,"invalid public_nonce length"),Q=d(a),c.push(Q),o=h(c,o,"key");var m,F=0|n._crypto_aead_chacha20poly1305_keybytes();o.length!==F&&p(c,"invalid key length"),m=d(o),c.push(m);var U=new u(l+n._crypto_aead_chacha20poly1305_abytes()|0),f=U.address;if(c.push(f),0===n._crypto_aead_chacha20poly1305_encrypt(f,null,s,l,0,g,B,0,_,Q,m)){var G=I(U,i);return C(c),G}b(c,"invalid usage")}function U(e,t,r,a,o,i){var c=[];A(i);var s=d(e=h(c,e,"message")),l=e.length;c.push(s);var g=null,B=0;null!=t&&(g=d(t=h(c,t,"additional_data")),B=t.length,c.push(g));var _=null;null!=r&&(_=d(r=h(c,r,"secret_nonce")),r.length,c.push(_)),a=h(c,a,"public_nonce");var Q,y=0|n._crypto_aead_chacha20poly1305_npubbytes();a.length!==y&&p(c,"invalid public_nonce length"),Q=d(a),c.push(Q),o=h(c,o,"key");var m,F=0|n._crypto_aead_chacha20poly1305_keybytes();o.length!==F&&p(c,"invalid key length"),m=d(o),c.push(m);var U=new u(0|l),f=U.address;c.push(f);var G=new u(0|n._crypto_aead_chacha20poly1305_abytes()),E=G.address;if(c.push(E),0===n._crypto_aead_chacha20poly1305_encrypt_detached(f,E,null,s,l,0,g,B,0,_,Q,m)){var v=I({ciphertext:U,mac:G},i);return C(c),v}b(c,"invalid usage")}function f(e,t,r,a,o,i){var c=[];A(i);var s=null;null!=e&&(s=d(e=h(c,e,"secret_nonce")),e.length,c.push(s)),t=h(c,t,"ciphertext");var l,g=n._crypto_aead_chacha20poly1305_ietf_abytes(),B=t.length;B<g&&p(c,"ciphertext is too short"),l=d(t),c.push(l);var _=null,Q=0;null!=r&&(_=d(r=h(c,r,"additional_data")),Q=r.length,c.push(_)),a=h(c,a,"public_nonce");var y,m=0|n._crypto_aead_chacha20poly1305_ietf_npubbytes();a.length!==m&&p(c,"invalid public_nonce length"),y=d(a),c.push(y),o=h(c,o,"key");var F,U=0|n._crypto_aead_chacha20poly1305_ietf_keybytes();o.length!==U&&p(c,"invalid key length"),F=d(o),c.push(F);var f=new u(B-n._crypto_aead_chacha20poly1305_ietf_abytes()|0),G=f.address;if(c.push(G),0===n._crypto_aead_chacha20poly1305_ietf_decrypt(G,null,s,l,B,0,_,Q,0,y,F)){var E=I(f,i);return C(c),E}b(c,"ciphertext cannot be decrypted using that key")}function G(e,t,r,a,o,i,c){var s=[];A(c);var l=null;null!=e&&(l=d(e=h(s,e,"secret_nonce")),e.length,s.push(l));var g=d(t=h(s,t,"ciphertext")),B=t.length;s.push(g),r=h(s,r,"mac");var _,Q=0|n._crypto_box_macbytes();r.length!==Q&&p(s,"invalid mac length"),_=d(r),s.push(_);var y=null,m=0;null!=a&&(y=d(a=h(s,a,"additional_data")),m=a.length,s.push(y)),o=h(s,o,"public_nonce");var F,U=0|n._crypto_aead_chacha20poly1305_ietf_npubbytes();o.length!==U&&p(s,"invalid public_nonce length"),F=d(o),s.push(F),i=h(s,i,"key");var f,G=0|n._crypto_aead_chacha20poly1305_ietf_keybytes();i.length!==G&&p(s,"invalid key length"),f=d(i),s.push(f);var E=new u(0|B),v=E.address;if(s.push(v),0===n._crypto_aead_chacha20poly1305_ietf_decrypt_detached(v,l,g,B,0,_,y,m,0,F,f)){var Z=I(E,c);return C(s),Z}b(s,"ciphertext cannot be decrypted using that key")}function E(e,t,r,a,o,i){var c=[];A(i);var s=d(e=h(c,e,"message")),l=e.length;c.push(s);var g=null,B=0;null!=t&&(g=d(t=h(c,t,"additional_data")),B=t.length,c.push(g));var _=null;null!=r&&(_=d(r=h(c,r,"secret_nonce")),r.length,c.push(_)),a=h(c,a,"public_nonce");var Q,y=0|n._crypto_aead_chacha20poly1305_ietf_npubbytes();a.length!==y&&p(c,"invalid public_nonce length"),Q=d(a),c.push(Q),o=h(c,o,"key");var m,F=0|n._crypto_aead_chacha20poly1305_ietf_keybytes();o.length!==F&&p(c,"invalid key length"),m=d(o),c.push(m);var U=new u(l+n._crypto_aead_chacha20poly1305_ietf_abytes()|0),f=U.address;if(c.push(f),0===n._crypto_aead_chacha20poly1305_ietf_encrypt(f,null,s,l,0,g,B,0,_,Q,m)){var G=I(U,i);return C(c),G}b(c,"invalid usage")}function v(e,t,r,a,o,i){var c=[];A(i);var s=d(e=h(c,e,"message")),l=e.length;c.push(s);var g=null,B=0;null!=t&&(g=d(t=h(c,t,"additional_data")),B=t.length,c.push(g));var _=null;null!=r&&(_=d(r=h(c,r,"secret_nonce")),r.length,c.push(_)),a=h(c,a,"public_nonce");var Q,y=0|n._crypto_aead_chacha20poly1305_ietf_npubbytes();a.length!==y&&p(c,"invalid public_nonce length"),Q=d(a),c.push(Q),o=h(c,o,"key");var m,F=0|n._crypto_aead_chacha20poly1305_ietf_keybytes();o.length!==F&&p(c,"invalid key length"),m=d(o),c.push(m);var U=new u(0|l),f=U.address;c.push(f);var G=new u(0|n._crypto_aead_chacha20poly1305_ietf_abytes()),E=G.address;if(c.push(E),0===n._crypto_aead_chacha20poly1305_ietf_encrypt_detached(f,E,null,s,l,0,g,B,0,_,Q,m)){var v=I({ciphertext:U,mac:G},i);return C(c),v}b(c,"invalid usage")}function Z(e){var t=[];A(e);var r=new u(0|n._crypto_aead_chacha20poly1305_ietf_keybytes()),a=r.address;t.push(a),n._crypto_aead_chacha20poly1305_ietf_keygen(a);var o=I(r,e);return C(t),o}function X(e){var t=[];A(e);var r=new u(0|n._crypto_aead_chacha20poly1305_keybytes()),a=r.address;t.push(a),n._crypto_aead_chacha20poly1305_keygen(a);var o=I(r,e);return C(t),o}function W(e,t,r,a,o,i){var c=[];A(i);var s=null;null!=e&&(s=d(e=h(c,e,"secret_nonce")),e.length,c.push(s)),t=h(c,t,"ciphertext");var l,g=n._crypto_aead_xchacha20poly1305_ietf_abytes(),B=t.length;B<g&&p(c,"ciphertext is too short"),l=d(t),c.push(l);var _=null,Q=0;null!=r&&(_=d(r=h(c,r,"additional_data")),Q=r.length,c.push(_)),a=h(c,a,"public_nonce");var y,m=0|n._crypto_aead_xchacha20poly1305_ietf_npubbytes();a.length!==m&&p(c,"invalid public_nonce length"),y=d(a),c.push(y),o=h(c,o,"key");var F,U=0|n._crypto_aead_xchacha20poly1305_ietf_keybytes();o.length!==U&&p(c,"invalid key length"),F=d(o),c.push(F);var f=new u(B-n._crypto_aead_xchacha20poly1305_ietf_abytes()|0),G=f.address;if(c.push(G),0===n._crypto_aead_xchacha20poly1305_ietf_decrypt(G,null,s,l,B,0,_,Q,0,y,F)){var E=I(f,i);return C(c),E}b(c,"ciphertext cannot be decrypted using that key")}function R(e,t,r,a,o,i,c){var s=[];A(c);var l=null;null!=e&&(l=d(e=h(s,e,"secret_nonce")),e.length,s.push(l));var g=d(t=h(s,t,"ciphertext")),B=t.length;s.push(g),r=h(s,r,"mac");var _,Q=0|n._crypto_box_macbytes();r.length!==Q&&p(s,"invalid mac length"),_=d(r),s.push(_);var y=null,m=0;null!=a&&(y=d(a=h(s,a,"additional_data")),m=a.length,s.push(y)),o=h(s,o,"public_nonce");var F,U=0|n._crypto_aead_xchacha20poly1305_ietf_npubbytes();o.length!==U&&p(s,"invalid public_nonce length"),F=d(o),s.push(F),i=h(s,i,"key");var f,G=0|n._crypto_aead_xchacha20poly1305_ietf_keybytes();i.length!==G&&p(s,"invalid key length"),f=d(i),s.push(f);var E=new u(0|B),v=E.address;if(s.push(v),0===n._crypto_aead_xchacha20poly1305_ietf_decrypt_detached(v,l,g,B,0,_,y,m,0,F,f)){var Z=I(E,c);return C(s),Z}b(s,"ciphertext cannot be decrypted using that key")}function V(e,t,r,a,o,i){var c=[];A(i);var s=d(e=h(c,e,"message")),l=e.length;c.push(s);var g=null,B=0;null!=t&&(g=d(t=h(c,t,"additional_data")),B=t.length,c.push(g));var _=null;null!=r&&(_=d(r=h(c,r,"secret_nonce")),r.length,c.push(_)),a=h(c,a,"public_nonce");var Q,y=0|n._crypto_aead_xchacha20poly1305_ietf_npubbytes();a.length!==y&&p(c,"invalid public_nonce length"),Q=d(a),c.push(Q),o=h(c,o,"key");var m,F=0|n._crypto_aead_xchacha20poly1305_ietf_keybytes();o.length!==F&&p(c,"invalid key length"),m=d(o),c.push(m);var U=new u(l+n._crypto_aead_xchacha20poly1305_ietf_abytes()|0),f=U.address;if(c.push(f),0===n._crypto_aead_xchacha20poly1305_ietf_encrypt(f,null,s,l,0,g,B,0,_,Q,m)){var G=I(U,i);return C(c),G}b(c,"invalid usage")}function O(e,t,r,a,o,i){var c=[];A(i);var s=d(e=h(c,e,"message")),l=e.length;c.push(s);var g=null,B=0;null!=t&&(g=d(t=h(c,t,"additional_data")),B=t.length,c.push(g));var _=null;null!=r&&(_=d(r=h(c,r,"secret_nonce")),r.length,c.push(_)),a=h(c,a,"public_nonce");var Q,y=0|n._crypto_aead_xchacha20poly1305_ietf_npubbytes();a.length!==y&&p(c,"invalid public_nonce length"),Q=d(a),c.push(Q),o=h(c,o,"key");var m,F=0|n._crypto_aead_xchacha20poly1305_ietf_keybytes();o.length!==F&&p(c,"invalid key length"),m=d(o),c.push(m);var U=new u(0|l),f=U.address;c.push(f);var G=new u(0|n._crypto_aead_xchacha20poly1305_ietf_abytes()),E=G.address;if(c.push(E),0===n._crypto_aead_xchacha20poly1305_ietf_encrypt_detached(f,E,null,s,l,0,g,B,0,_,Q,m)){var v=I({ciphertext:U,mac:G},i);return C(c),v}b(c,"invalid usage")}function x(e){var t=[];A(e);var r=new u(0|n._crypto_aead_xchacha20poly1305_ietf_keybytes()),a=r.address;t.push(a),n._crypto_aead_xchacha20poly1305_ietf_keygen(a);var o=I(r,e);return C(t),o}function T(e,t,r){var a=[];A(r);var o=d(e=h(a,e,"message")),i=e.length;a.push(o),t=h(a,t,"key");var c,s=0|n._crypto_auth_keybytes();t.length!==s&&p(a,"invalid key length"),c=d(t),a.push(c);var l=new u(0|n._crypto_auth_bytes()),g=l.address;if(a.push(g),0==(0|n._crypto_auth(g,o,i,0,c))){var B=I(l,r);return C(a),B}b(a,"invalid usage")}function N(e,t,r){var a=[];A(r);var o=d(e=h(a,e,"message")),i=e.length;a.push(o),t=h(a,t,"key");var c,s=0|n._crypto_auth_hmacsha256_keybytes();t.length!==s&&p(a,"invalid key length"),c=d(t),a.push(c);var l=new u(0|n._crypto_auth_hmacsha256_bytes()),g=l.address;if(a.push(g),0==(0|n._crypto_auth_hmacsha256(g,o,i,0,c))){var B=I(l,r);return C(a),B}b(a,"invalid usage")}function w(e){var t=[];A(e);var r=new u(0|n._crypto_auth_hmacsha256_keybytes()),a=r.address;t.push(a),n._crypto_auth_hmacsha256_keygen(a);var o=I(r,e);return C(t),o}function k(e,t,r){var a=[];e=h(a,e,"tag");var o,i=0|n._crypto_auth_hmacsha256_bytes();e.length!==i&&p(a,"invalid tag length"),o=d(e),a.push(o);var c=d(t=h(a,t,"message")),s=t.length;a.push(c),r=h(a,r,"key");var l,g=0|n._crypto_auth_hmacsha256_keybytes();r.length!==g&&p(a,"invalid key length"),l=d(r),a.push(l);var I=0==(0|n._crypto_auth_hmacsha256_verify(o,c,s,0,l));return C(a),I}function Y(e,t,r){var a=[];A(r);var o=d(e=h(a,e,"message")),i=e.length;a.push(o),t=h(a,t,"key");var c,s=0|n._crypto_auth_hmacsha512_keybytes();t.length!==s&&p(a,"invalid key length"),c=d(t),a.push(c);var l=new u(0|n._crypto_auth_hmacsha512_bytes()),g=l.address;if(a.push(g),0==(0|n._crypto_auth_hmacsha512(g,o,i,0,c))){var B=I(l,r);return C(a),B}b(a,"invalid usage")}function S(e){var t=[];A(e);var r=new u(0|n._crypto_auth_hmacsha512_keybytes()),a=r.address;t.push(a),n._crypto_auth_hmacsha512_keygen(a);var o=I(r,e);return C(t),o}function H(e,t,r){var a=[];e=h(a,e,"tag");var o,i=0|n._crypto_auth_hmacsha512_bytes();e.length!==i&&p(a,"invalid tag length"),o=d(e),a.push(o);var c=d(t=h(a,t,"message")),s=t.length;a.push(c),r=h(a,r,"key");var l,g=0|n._crypto_auth_hmacsha512_keybytes();r.length!==g&&p(a,"invalid key length"),l=d(r),a.push(l);var I=0==(0|n._crypto_auth_hmacsha512_verify(o,c,s,0,l));return C(a),I}function D(e){var t=[];A(e);var r=new u(0|n._crypto_auth_keybytes()),a=r.address;t.push(a),n._crypto_auth_keygen(a);var o=I(r,e);return C(t),o}function J(e,t,r){var a=[];e=h(a,e,"tag");var o,i=0|n._crypto_auth_bytes();e.length!==i&&p(a,"invalid tag length"),o=d(e),a.push(o);var c=d(t=h(a,t,"message")),s=t.length;a.push(c),r=h(a,r,"key");var l,g=0|n._crypto_auth_keybytes();r.length!==g&&p(a,"invalid key length"),l=d(r),a.push(l);var I=0==(0|n._crypto_auth_verify(o,c,s,0,l));return C(a),I}function P(e,t,r){var a=[];A(r),e=h(a,e,"publicKey");var o,i=0|n._crypto_box_publickeybytes();e.length!==i&&p(a,"invalid publicKey length"),o=d(e),a.push(o),t=h(a,t,"privateKey");var c,s=0|n._crypto_box_secretkeybytes();t.length!==s&&p(a,"invalid privateKey length"),c=d(t),a.push(c);var l=new u(0|n._crypto_box_beforenmbytes()),g=l.address;if(a.push(g),0==(0|n._crypto_box_beforenm(g,o,c))){var B=I(l,r);return C(a),B}b(a,"invalid usage")}function M(e){var t=[];A(e);var r=new u(0|n._crypto_box_curve25519xchacha20poly1305_publickeybytes()),a=r.address;t.push(a);var o=new u(0|n._crypto_box_curve25519xchacha20poly1305_secretkeybytes()),i=o.address;t.push(i),n._crypto_box_curve25519xchacha20poly1305_keypair(a,i);var c=I({publicKey:r,privateKey:o,keyType:"curve25519"},e);return C(t),c}function L(e,t,r){var a=[];A(r);var o=d(e=h(a,e,"message")),i=e.length;a.push(o),t=h(a,t,"publicKey");var c,s=0|n._crypto_box_curve25519xchacha20poly1305_publickeybytes();t.length!==s&&p(a,"invalid publicKey length"),c=d(t),a.push(c);var l=new u(i+n._crypto_box_curve25519xchacha20poly1305_sealbytes()|0),g=l.address;a.push(g),n._crypto_box_curve25519xchacha20poly1305_seal(g,o,i,0,c);var B=I(l,r);return C(a),B}function z(e,t,r,a){var o=[];A(a),e=h(o,e,"ciphertext");var i,c=n._crypto_box_curve25519xchacha20poly1305_sealbytes(),s=e.length;s<c&&p(o,"ciphertext is too short"),i=d(e),o.push(i),t=h(o,t,"publicKey");var l,g=0|n._crypto_box_curve25519xchacha20poly1305_publickeybytes();t.length!==g&&p(o,"invalid publicKey length"),l=d(t),o.push(l),r=h(o,r,"secretKey");var B,_=0|n._crypto_box_curve25519xchacha20poly1305_secretkeybytes();r.length!==_&&p(o,"invalid secretKey length"),B=d(r),o.push(B);var b=new u(s-n._crypto_box_curve25519xchacha20poly1305_sealbytes()|0),Q=b.address;o.push(Q),n._crypto_box_curve25519xchacha20poly1305_seal_open(Q,i,s,0,l,B);var y=I(b,a);return C(o),y}function j(e,t,r,a,o){var i=[];A(o);var c=d(e=h(i,e,"message")),s=e.length;i.push(c),t=h(i,t,"nonce");var l,g=0|n._crypto_box_noncebytes();t.length!==g&&p(i,"invalid nonce length"),l=d(t),i.push(l),r=h(i,r,"publicKey");var B,_=0|n._crypto_box_publickeybytes();r.length!==_&&p(i,"invalid publicKey length"),B=d(r),i.push(B),a=h(i,a,"privateKey");var Q,y=0|n._crypto_box_secretkeybytes();a.length!==y&&p(i,"invalid privateKey length"),Q=d(a),i.push(Q);var m=new u(0|s),F=m.address;i.push(F);var U=new u(0|n._crypto_box_macbytes()),f=U.address;if(i.push(f),0==(0|n._crypto_box_detached(F,f,c,s,0,l,B,Q))){var G=I({ciphertext:m,mac:U},o);return C(i),G}b(i,"invalid usage")}function K(e,t,r,a,o){var i=[];A(o);var c=d(e=h(i,e,"message")),s=e.length;i.push(c),t=h(i,t,"nonce");var l,g=0|n._crypto_box_noncebytes();t.length!==g&&p(i,"invalid nonce length"),l=d(t),i.push(l),r=h(i,r,"publicKey");var B,_=0|n._crypto_box_publickeybytes();r.length!==_&&p(i,"invalid publicKey length"),B=d(r),i.push(B),a=h(i,a,"privateKey");var Q,y=0|n._crypto_box_secretkeybytes();a.length!==y&&p(i,"invalid privateKey length"),Q=d(a),i.push(Q);var m=new u(s+n._crypto_box_macbytes()|0),F=m.address;if(i.push(F),0==(0|n._crypto_box_easy(F,c,s,0,l,B,Q))){var U=I(m,o);return C(i),U}b(i,"invalid usage")}function q(e,t,r,a){var o=[];A(a);var i=d(e=h(o,e,"message")),c=e.length;o.push(i),t=h(o,t,"nonce");var s,l=0|n._crypto_box_noncebytes();t.length!==l&&p(o,"invalid nonce length"),s=d(t),o.push(s),r=h(o,r,"sharedKey");var g,B=0|n._crypto_box_beforenmbytes();r.length!==B&&p(o,"invalid sharedKey length"),g=d(r),o.push(g);var _=new u(c+n._crypto_box_macbytes()|0),Q=_.address;if(o.push(Q),0==(0|n._crypto_box_easy_afternm(Q,i,c,0,s,g))){var y=I(_,a);return C(o),y}b(o,"invalid usage")}function $(e){var t=[];A(e);var r=new u(0|n._crypto_box_publickeybytes()),a=r.address;t.push(a);var o=new u(0|n._crypto_box_secretkeybytes()),i=o.address;if(t.push(i),0==(0|n._crypto_box_keypair(a,i))){var c={publicKey:I(r,e),privateKey:I(o,e),keyType:"x25519"};return C(t),c}b(t,"internal error")}function ee(e,t,r,a,o,i){var c=[];A(i);var s=d(e=h(c,e,"ciphertext")),l=e.length;c.push(s),t=h(c,t,"mac");var g,B=0|n._crypto_box_macbytes();t.length!==B&&p(c,"invalid mac length"),g=d(t),c.push(g),r=h(c,r,"nonce");var _,Q=0|n._crypto_box_noncebytes();r.length!==Q&&p(c,"invalid nonce length"),_=d(r),c.push(_),a=h(c,a,"publicKey");var y,m=0|n._crypto_box_publickeybytes();a.length!==m&&p(c,"invalid publicKey length"),y=d(a),c.push(y),o=h(c,o,"privateKey");var F,U=0|n._crypto_box_secretkeybytes();o.length!==U&&p(c,"invalid privateKey length"),F=d(o),c.push(F);var f=new u(0|l),G=f.address;if(c.push(G),0==(0|n._crypto_box_open_detached(G,s,g,l,0,_,y,F))){var E=I(f,i);return C(c),E}b(c,"incorrect key pair for the given ciphertext")}function te(e,t,r,a,o){var i=[];A(o),e=h(i,e,"ciphertext");var c,s=n._crypto_box_macbytes(),l=e.length;l<s&&p(i,"ciphertext is too short"),c=d(e),i.push(c),t=h(i,t,"nonce");var g,B=0|n._crypto_box_noncebytes();t.length!==B&&p(i,"invalid nonce length"),g=d(t),i.push(g),r=h(i,r,"publicKey");var _,Q=0|n._crypto_box_publickeybytes();r.length!==Q&&p(i,"invalid publicKey length"),_=d(r),i.push(_),a=h(i,a,"privateKey");var y,m=0|n._crypto_box_secretkeybytes();a.length!==m&&p(i,"invalid privateKey length"),y=d(a),i.push(y);var F=new u(l-n._crypto_box_macbytes()|0),U=F.address;if(i.push(U),0==(0|n._crypto_box_open_easy(U,c,l,0,g,_,y))){var f=I(F,o);return C(i),f}b(i,"incorrect key pair for the given ciphertext")}function ne(e,t,r,a){var o=[];A(a);var i=d(e=h(o,e,"ciphertext")),c=e.length;o.push(i),t=h(o,t,"nonce");var s,l=0|n._crypto_box_noncebytes();t.length!==l&&p(o,"invalid nonce length"),s=d(t),o.push(s),r=h(o,r,"sharedKey");var g,B=0|n._crypto_box_beforenmbytes();r.length!==B&&p(o,"invalid sharedKey length"),g=d(r),o.push(g);var _=new u(c-n._crypto_box_macbytes()|0),Q=_.address;if(o.push(Q),0==(0|n._crypto_box_open_easy_afternm(Q,i,c,0,s,g))){var y=I(_,a);return C(o),y}b(o,"incorrect secret key for the given ciphertext")}function re(e,t,r){var a=[];A(r);var o=d(e=h(a,e,"message")),i=e.length;a.push(o),t=h(a,t,"publicKey");var c,s=0|n._crypto_box_publickeybytes();t.length!==s&&p(a,"invalid publicKey length"),c=d(t),a.push(c);var l=new u(i+n._crypto_box_sealbytes()|0),g=l.address;if(a.push(g),0==(0|n._crypto_box_seal(g,o,i,0,c))){var B=I(l,r);return C(a),B}b(a,"invalid usage")}function ae(e,t,r,a){var o=[];A(a),e=h(o,e,"ciphertext");var i,c=n._crypto_box_sealbytes(),s=e.length;s<c&&p(o,"ciphertext is too short"),i=d(e),o.push(i),t=h(o,t,"publicKey");var l,g=0|n._crypto_box_publickeybytes();t.length!==g&&p(o,"invalid publicKey length"),l=d(t),o.push(l),r=h(o,r,"privateKey");var B,_=0|n._crypto_box_secretkeybytes();r.length!==_&&p(o,"invalid privateKey length"),B=d(r),o.push(B);var Q=new u(s-n._crypto_box_sealbytes()|0),y=Q.address;if(o.push(y),0==(0|n._crypto_box_seal_open(y,i,s,0,l,B))){var m=I(Q,a);return C(o),m}b(o,"incorrect key pair for the given ciphertext")}function oe(e,t){var r=[];A(t),e=h(r,e,"seed");var a,o=0|n._crypto_box_seedbytes();e.length!==o&&p(r,"invalid seed length"),a=d(e),r.push(a);var i=new u(0|n._crypto_box_publickeybytes()),c=i.address;r.push(c);var s=new u(0|n._crypto_box_secretkeybytes()),l=s.address;if(r.push(l),0==(0|n._crypto_box_seed_keypair(c,l,a))){var g={publicKey:I(i,t),privateKey:I(s,t),keyType:"x25519"};return C(r),g}b(r,"invalid usage")}function ie(e,t,r){var a=[];A(r),e=h(a,e,"p");var o,i=0|n._crypto_core_ristretto255_bytes();e.length!==i&&p(a,"invalid p length"),o=d(e),a.push(o),t=h(a,t,"q");var c,s=0|n._crypto_core_ristretto255_bytes();t.length!==s&&p(a,"invalid q length"),c=d(t),a.push(c);var l=new u(0|n._crypto_core_ristretto255_bytes()),g=l.address;if(a.push(g),0==(0|n._crypto_core_ristretto255_add(g,o,c))){var B=I(l,r);return C(a),B}b(a,"inputs is invalid element")}function ce(e,t){var r=[];A(t);var a=d(e=h(r,e,"r"));e.length,r.push(a);var o=new u(0|n._crypto_core_ristretto255_bytes()),i=o.address;if(r.push(i),0==(0|n._crypto_core_ristretto255_from_hash(i,a))){var c=I(o,t);return C(r),c}b(r,"invalid usage")}function se(e,t){var r=[];A(t);var a=d(e=h(r,e,"point"));e.length,r.push(a);var o=1==(0|n._crypto_core_ristretto255_is_valid_point(a));return C(r),o}function le(e){var t=[];A(e);var r=new u(0|n._crypto_core_ristretto255_bytes()),a=r.address;t.push(a),n._crypto_core_ristretto255_random(a);var o=I(r,e);return C(t),o}function ge(e,t,r){var a=[];A(r),e=h(a,e,"x");var o,i=0|n._crypto_core_ristretto255_scalarbytes();e.length!==i&&p(a,"invalid x length"),o=d(e),a.push(o),t=h(a,t,"y");var c,s=0|n._crypto_core_ristretto255_scalarbytes();t.length!==s&&p(a,"invalid y length"),c=d(t),a.push(c);var l=new u(0|n._crypto_core_ristretto255_scalarbytes()),g=l.address;a.push(g),n._crypto_core_ristretto255_scalar_add(g,o,c);var B=I(l,r);return C(a),B}function Ie(e,t){var r=[];A(t);var a=d(e=h(r,e,"s"));e.length,r.push(a);var o=new u(0|n._crypto_core_ristretto255_scalarbytes()),i=o.address;r.push(i),n._crypto_core_ristretto255_scalar_complement(i,a);var c=I(o,t);return C(r),c}function Be(e,t){var r=[];A(t);var a=d(e=h(r,e,"s"));e.length,r.push(a);var o=new u(0|n._crypto_core_ristretto255_scalarbytes()),i=o.address;if(r.push(i),0==(0|n._crypto_core_ristretto255_scalar_invert(i,a))){var c=I(o,t);return C(r),c}b(r,"invalid reciprocate")}function Ae(e,t,r){var a=[];A(r),e=h(a,e,"x");var o,i=0|n._crypto_core_ristretto255_scalarbytes();e.length!==i&&p(a,"invalid x length"),o=d(e),a.push(o),t=h(a,t,"y");var c,s=0|n._crypto_core_ristretto255_scalarbytes();t.length!==s&&p(a,"invalid y length"),c=d(t),a.push(c);var l=new u(0|n._crypto_core_ristretto255_scalarbytes()),g=l.address;a.push(g),n._crypto_core_ristretto255_scalar_mul(g,o,c);var B=I(l,r);return C(a),B}function ue(e,t){var r=[];A(t);var a=d(e=h(r,e,"s"));e.length,r.push(a);var o=new u(0|n._crypto_core_ristretto255_scalarbytes()),i=o.address;r.push(i),n._crypto_core_ristretto255_scalar_negate(i,a);var c=I(o,t);return C(r),c}function de(e){var t=[];A(e);var r=new u(0|n._crypto_core_ristretto255_scalarbytes()),a=r.address;t.push(a),n._crypto_core_ristretto255_random(a);var o=I(r,e);return C(t),o}function _e(e,t){var r=[];A(t);var a=d(e=h(r,e,"sample"));e.length,r.push(a);var o=new u(0|n._crypto_core_ristretto255_scalarbytes()),i=o.address;r.push(i),n._crypto_core_ristretto255_scalar_reduce(i,a);var c=I(o,t);return C(r),c}function Ce(e,t,r){var a=[];A(r),e=h(a,e,"x");var o,i=0|n._crypto_core_ristretto255_scalarbytes();e.length!==i&&p(a,"invalid x length"),o=d(e),a.push(o),t=h(a,t,"y");var c,s=0|n._crypto_core_ristretto255_scalarbytes();t.length!==s&&p(a,"invalid y length"),c=d(t),a.push(c);var l=new u(0|n._crypto_core_ristretto255_scalarbytes()),g=l.address;a.push(g),n._crypto_core_ristretto255_scalar_sub(g,o,c);var B=I(l,r);return C(a),B}function be(e,t,r){var a=[];A(r),e=h(a,e,"p");var o,i=0|n._crypto_core_ristretto255_bytes();e.length!==i&&p(a,"invalid p length"),o=d(e),a.push(o),t=h(a,t,"q");var c,s=0|n._crypto_core_ristretto255_bytes();t.length!==s&&p(a,"invalid q length"),c=d(t),a.push(c);var l=new u(0|n._crypto_core_ristretto255_bytes()),g=l.address;if(a.push(g),0==(0|n._crypto_core_ristretto255_sub(g,o,c))){var B=I(l,r);return C(a),B}b(a,"inputs is invalid element")}function pe(e,t,r,a){var o=[];A(a),Q(o,e,"hash_length"),("number"!=typeof e||(0|e)!==e||e<0)&&p(o,"hash_length must be an unsigned integer");var i=d(t=h(o,t,"message")),c=t.length;o.push(i);var s=null,l=0;null!=r&&(s=d(r=h(o,r,"key")),l=r.length,o.push(s));var g=new u(e|=0),B=g.address;if(o.push(B),0==(0|n._crypto_generichash(B,e,i,c,0,s,l))){var _=I(g,a);return C(o),_}b(o,"invalid usage")}function Qe(e,t,r,a,o){var i=[];A(o),Q(i,e,"subkey_len"),("number"!=typeof e||(0|e)!==e||e<0)&&p(i,"subkey_len must be an unsigned integer");var c=null,s=0;null!=t&&(c=d(t=h(i,t,"key")),s=t.length,i.push(c)),r=h(i,r,"id");var l,g=0|n._crypto_generichash_blake2b_saltbytes();r.length!==g&&p(i,"invalid id length"),l=d(r),i.push(l),a=h(i,a,"ctx");var B,_=0|n._crypto_generichash_blake2b_personalbytes();a.length!==_&&p(i,"invalid ctx length"),B=d(a),i.push(B);var y=new u(0|e),m=y.address;if(i.push(m),0==(0|n._crypto_generichash_blake2b_salt_personal(m,e,null,0,0,c,s,l,B))){var F=I(y,o);return C(i),F}b(i,"invalid usage")}function he(e,t,r){var a=[];A(r),Q(a,e,"state_address"),Q(a,t,"hash_length"),("number"!=typeof t||(0|t)!==t||t<0)&&p(a,"hash_length must be an unsigned integer");var o=new u(t|=0),i=o.address;if(a.push(i),0==(0|n._crypto_generichash_final(e,i,t))){var c=(n._free(e),I(o,r));return C(a),c}b(a,"invalid usage")}function ye(e,t,r){var a=[];A(r);var o=null,i=0;null!=e&&(o=d(e=h(a,e,"key")),i=e.length,a.push(o)),Q(a,t,"hash_length"),("number"!=typeof t||(0|t)!==t||t<0)&&p(a,"hash_length must be an unsigned integer");var c=new u(357).address;if(0==(0|n._crypto_generichash_init(c,o,i,t))){var s=c;return C(a),s}b(a,"invalid usage")}function me(e){var t=[];A(e);var r=new u(0|n._crypto_generichash_keybytes()),a=r.address;t.push(a),n._crypto_generichash_keygen(a);var o=I(r,e);return C(t),o}function Fe(e,t,r){var a=[];A(r),Q(a,e,"state_address");var o=d(t=h(a,t,"message_chunk")),i=t.length;a.push(o),0!=(0|n._crypto_generichash_update(e,o,i))&&b(a,"invalid usage"),C(a)}function Ue(e,t){var r=[];A(t);var a=d(e=h(r,e,"message")),o=e.length;r.push(a);var i=new u(0|n._crypto_hash_bytes()),c=i.address;if(r.push(c),0==(0|n._crypto_hash(c,a,o,0))){var s=I(i,t);return C(r),s}b(r,"invalid usage")}function fe(e,t){var r=[];A(t);var a=d(e=h(r,e,"message")),o=e.length;r.push(a);var i=new u(0|n._crypto_hash_sha256_bytes()),c=i.address;if(r.push(c),0==(0|n._crypto_hash_sha256(c,a,o,0))){var s=I(i,t);return C(r),s}b(r,"invalid usage")}function Ge(e,t){var r=[];A(t);var a=d(e=h(r,e,"message")),o=e.length;r.push(a);var i=new u(0|n._crypto_hash_sha512_bytes()),c=i.address;if(r.push(c),0==(0|n._crypto_hash_sha512(c,a,o,0))){var s=I(i,t);return C(r),s}b(r,"invalid usage")}function Ee(e,t,r,o,i){var c=[];A(i),Q(c,e,"subkey_len"),("number"!=typeof e||(0|e)!==e||e<0)&&p(c,"subkey_len must be an unsigned integer"),Q(c,t,"subkey_id"),("number"!=typeof t||(0|t)!==t||t<0)&&p(c,"subkey_id must be an unsigned integer"),"string"!=typeof r&&p(c,"ctx must be a string");var s=d(r=a(r+"\0"));r.length,c.push(s),o=h(c,o,"key");var l,g=0|n._crypto_kdf_keybytes();o.length!==g&&p(c,"invalid key length"),l=d(o),c.push(l);var B=new u(0|e),_=B.address;c.push(_),n._crypto_kdf_derive_from_key(_,e,t,t>>>24>>>8,s,l);var b=I(B,i);return C(c),b}function ve(e){var t=[];A(e);var r=new u(0|n._crypto_kdf_keybytes()),a=r.address;t.push(a),n._crypto_kdf_keygen(a);var o=I(r,e);return C(t),o}function Ze(e,t,r,a){var o=[];A(a),e=h(o,e,"clientPublicKey");var i,c=0|n._crypto_kx_publickeybytes();e.length!==c&&p(o,"invalid clientPublicKey length"),i=d(e),o.push(i),t=h(o,t,"clientSecretKey");var s,l=0|n._crypto_kx_secretkeybytes();t.length!==l&&p(o,"invalid clientSecretKey length"),s=d(t),o.push(s),r=h(o,r,"serverPublicKey");var g,B=0|n._crypto_kx_publickeybytes();r.length!==B&&p(o,"invalid serverPublicKey length"),g=d(r),o.push(g);var _=new u(0|n._crypto_kx_sessionkeybytes()),Q=_.address;o.push(Q);var y=new u(0|n._crypto_kx_sessionkeybytes()),m=y.address;if(o.push(m),0==(0|n._crypto_kx_client_session_keys(Q,m,i,s,g))){var F=I({sharedRx:_,sharedTx:y},a);return C(o),F}b(o,"invalid usage")}function Xe(e){var t=[];A(e);var r=new u(0|n._crypto_kx_publickeybytes()),a=r.address;t.push(a);var o=new u(0|n._crypto_kx_secretkeybytes()),i=o.address;if(t.push(i),0==(0|n._crypto_kx_keypair(a,i))){var c={publicKey:I(r,e),privateKey:I(o,e),keyType:"x25519"};return C(t),c}b(t,"internal error")}function We(e,t){var r=[];A(t),e=h(r,e,"seed");var a,o=0|n._crypto_kx_seedbytes();e.length!==o&&p(r,"invalid seed length"),a=d(e),r.push(a);var i=new u(0|n._crypto_kx_publickeybytes()),c=i.address;r.push(c);var s=new u(0|n._crypto_kx_secretkeybytes()),l=s.address;if(r.push(l),0==(0|n._crypto_kx_seed_keypair(c,l,a))){var g={publicKey:I(i,t),privateKey:I(s,t),keyType:"x25519"};return C(r),g}b(r,"internal error")}function Re(e,t,r,a){var o=[];A(a),e=h(o,e,"serverPublicKey");var i,c=0|n._crypto_kx_publickeybytes();e.length!==c&&p(o,"invalid serverPublicKey length"),i=d(e),o.push(i),t=h(o,t,"serverSecretKey");var s,l=0|n._crypto_kx_secretkeybytes();t.length!==l&&p(o,"invalid serverSecretKey length"),s=d(t),o.push(s),r=h(o,r,"clientPublicKey");var g,B=0|n._crypto_kx_publickeybytes();r.length!==B&&p(o,"invalid clientPublicKey length"),g=d(r),o.push(g);var _=new u(0|n._crypto_kx_sessionkeybytes()),Q=_.address;o.push(Q);var y=new u(0|n._crypto_kx_sessionkeybytes()),m=y.address;if(o.push(m),0==(0|n._crypto_kx_server_session_keys(Q,m,i,s,g))){var F=I({sharedRx:_,sharedTx:y},a);return C(o),F}b(o,"invalid usage")}function Ve(e,t,r){var a=[];A(r);var o=d(e=h(a,e,"message")),i=e.length;a.push(o),t=h(a,t,"key");var c,s=0|n._crypto_onetimeauth_keybytes();t.length!==s&&p(a,"invalid key length"),c=d(t),a.push(c);var l=new u(0|n._crypto_onetimeauth_bytes()),g=l.address;if(a.push(g),0==(0|n._crypto_onetimeauth(g,o,i,0,c))){var B=I(l,r);return C(a),B}b(a,"invalid usage")}function Oe(e,t){var r=[];A(t),Q(r,e,"state_address");var a=new u(0|n._crypto_onetimeauth_bytes()),o=a.address;if(r.push(o),0==(0|n._crypto_onetimeauth_final(e,o))){var i=(n._free(e),I(a,t));return C(r),i}b(r,"invalid usage")}function xe(e,t){var r=[];A(t);var a=null;null!=e&&(a=d(e=h(r,e,"key")),e.length,r.push(a));var o=new u(144).address;if(0==(0|n._crypto_onetimeauth_init(o,a))){var i=o;return C(r),i}b(r,"invalid usage")}function Te(e){var t=[];A(e);var r=new u(0|n._crypto_onetimeauth_keybytes()),a=r.address;t.push(a),n._crypto_onetimeauth_keygen(a);var o=I(r,e);return C(t),o}function Ne(e,t,r){var a=[];A(r),Q(a,e,"state_address");var o=d(t=h(a,t,"message_chunk")),i=t.length;a.push(o),0!=(0|n._crypto_onetimeauth_update(e,o,i))&&b(a,"invalid usage"),C(a)}function we(e,t,r){var a=[];e=h(a,e,"hash");var o,i=0|n._crypto_onetimeauth_bytes();e.length!==i&&p(a,"invalid hash length"),o=d(e),a.push(o);var c=d(t=h(a,t,"message")),s=t.length;a.push(c),r=h(a,r,"key");var l,g=0|n._crypto_onetimeauth_keybytes();r.length!==g&&p(a,"invalid key length"),l=d(r),a.push(l);var I=0==(0|n._crypto_onetimeauth_verify(o,c,s,0,l));return C(a),I}function ke(e,t,r,a,o,i,c){var s=[];A(c),Q(s,e,"keyLength"),("number"!=typeof e||(0|e)!==e||e<0)&&p(s,"keyLength must be an unsigned integer");var l=d(t=h(s,t,"password")),g=t.length;s.push(l),r=h(s,r,"salt");var B,_=0|n._crypto_pwhash_saltbytes();r.length!==_&&p(s,"invalid salt length"),B=d(r),s.push(B),Q(s,a,"opsLimit"),("number"!=typeof a||(0|a)!==a||a<0)&&p(s,"opsLimit must be an unsigned integer"),Q(s,o,"memLimit"),("number"!=typeof o||(0|o)!==o||o<0)&&p(s,"memLimit must be an unsigned integer"),Q(s,i,"algorithm"),("number"!=typeof i||(0|i)!==i||i<0)&&p(s,"algorithm must be an unsigned integer");var y=new u(0|e),m=y.address;if(s.push(m),0==(0|n._crypto_pwhash(m,e,0,l,g,0,B,a,0,o,i))){var F=I(y,c);return C(s),F}b(s,"invalid usage")}function Ye(e,t,r,a,o,i){var c=[];A(i),Q(c,e,"keyLength"),("number"!=typeof e||(0|e)!==e||e<0)&&p(c,"keyLength must be an unsigned integer");var s=d(t=h(c,t,"password")),l=t.length;c.push(s),r=h(c,r,"salt");var g,B=0|n._crypto_pwhash_scryptsalsa208sha256_saltbytes();r.length!==B&&p(c,"invalid salt length"),g=d(r),c.push(g),Q(c,a,"opsLimit"),("number"!=typeof a||(0|a)!==a||a<0)&&p(c,"opsLimit must be an unsigned integer"),Q(c,o,"memLimit"),("number"!=typeof o||(0|o)!==o||o<0)&&p(c,"memLimit must be an unsigned integer");var _=new u(0|e),y=_.address;if(c.push(y),0==(0|n._crypto_pwhash_scryptsalsa208sha256(y,e,0,s,l,0,g,a,0,o))){var m=I(_,i);return C(c),m}b(c,"invalid usage")}function Se(e,t,r,a,o,i,c){var s=[];A(c);var l=d(e=h(s,e,"password")),g=e.length;s.push(l);var B=d(t=h(s,t,"salt")),_=t.length;s.push(B),Q(s,r,"opsLimit"),("number"!=typeof r||(0|r)!==r||r<0)&&p(s,"opsLimit must be an unsigned integer"),Q(s,a,"r"),("number"!=typeof a||(0|a)!==a||a<0)&&p(s,"r must be an unsigned integer"),Q(s,o,"p"),("number"!=typeof o||(0|o)!==o||o<0)&&p(s,"p must be an unsigned integer"),Q(s,i,"keyLength"),("number"!=typeof i||(0|i)!==i||i<0)&&p(s,"keyLength must be an unsigned integer");var y=new u(0|i),m=y.address;if(s.push(m),0==(0|n._crypto_pwhash_scryptsalsa208sha256_ll(l,g,B,_,r,0,a,o,m,i))){var F=I(y,c);return C(s),F}b(s,"invalid usage")}function He(e,t,r,a){var o=[];A(a);var i=d(e=h(o,e,"password")),c=e.length;o.push(i),Q(o,t,"opsLimit"),("number"!=typeof t||(0|t)!==t||t<0)&&p(o,"opsLimit must be an unsigned integer"),Q(o,r,"memLimit"),("number"!=typeof r||(0|r)!==r||r<0)&&p(o,"memLimit must be an unsigned integer");var s=new u(0|n._crypto_pwhash_scryptsalsa208sha256_strbytes()).address;if(o.push(s),0==(0|n._crypto_pwhash_scryptsalsa208sha256_str(s,i,c,0,t,0,r))){var l=n.UTF8ToString(s);return C(o),l}b(o,"invalid usage")}function De(e,t,r){var o=[];A(r),"string"!=typeof e&&p(o,"hashed_password must be a string");var i=d(e=a(e+"\0"));e.length,o.push(i);var c=d(t=h(o,t,"password")),s=t.length;o.push(c);var l=0==(0|n._crypto_pwhash_scryptsalsa208sha256_str_verify(i,c,s,0));return C(o),l}function Je(e,t,r,a){var o=[];A(a);var i=d(e=h(o,e,"password")),c=e.length;o.push(i),Q(o,t,"opsLimit"),("number"!=typeof t||(0|t)!==t||t<0)&&p(o,"opsLimit must be an unsigned integer"),Q(o,r,"memLimit"),("number"!=typeof r||(0|r)!==r||r<0)&&p(o,"memLimit must be an unsigned integer");var s=new u(0|n._crypto_pwhash_strbytes()).address;if(o.push(s),0==(0|n._crypto_pwhash_str(s,i,c,0,t,0,r))){var l=n.UTF8ToString(s);return C(o),l}b(o,"invalid usage")}function Pe(e,t,r){var o=[];A(r),"string"!=typeof e&&p(o,"hashed_password must be a string");var i=d(e=a(e+"\0"));e.length,o.push(i);var c=d(t=h(o,t,"password")),s=t.length;o.push(c);var l=0==(0|n._crypto_pwhash_str_verify(i,c,s,0));return C(o),l}function Me(e,t,r){var a=[];A(r),e=h(a,e,"privateKey");var o,i=0|n._crypto_scalarmult_scalarbytes();e.length!==i&&p(a,"invalid privateKey length"),o=d(e),a.push(o),t=h(a,t,"publicKey");var c,s=0|n._crypto_scalarmult_scalarbytes();t.length!==s&&p(a,"invalid publicKey length"),c=d(t),a.push(c);var l=new u(0|n._crypto_scalarmult_bytes()),g=l.address;if(a.push(g),0==(0|n._crypto_scalarmult(g,o,c))){var B=I(l,r);return C(a),B}b(a,"weak public key")}function Le(e,t){var r=[];A(t),e=h(r,e,"privateKey");var a,o=0|n._crypto_scalarmult_scalarbytes();e.length!==o&&p(r,"invalid privateKey length"),a=d(e),r.push(a);var i=new u(0|n._crypto_scalarmult_scalarbytes()),c=i.address;if(r.push(c),0==(0|n._crypto_scalarmult_base(c,a))){var s=I(i,t);return C(r),s}b(r,"insecure scalar")}function ze(e,t,r){var a=[];A(r),e=h(a,e,"scalar");var o,i=0|n._crypto_scalarmult_ristretto255_scalarbytes();e.length!==i&&p(a,"invalid scalar length"),o=d(e),a.push(o),t=h(a,t,"privateKey");var c,s=0|n._crypto_scalarmult_ristretto255_bytes();t.length!==s&&p(a,"invalid privateKey length"),c=d(t),a.push(c);var l=new u(0|n._crypto_scalarmult_ristretto255_bytes()),g=l.address;if(a.push(g),0==(0|n._crypto_scalarmult_ristretto255(g,o,c))){var B=I(l,r);return C(a),B}b(a,"input is zero element")}function je(e,t){var r=[];A(t);var a=d(e=h(r,e,"scalar"));e.length,r.push(a);var o=new u(0|n._crypto_core_ristretto255_bytes()),i=o.address;if(r.push(i),0==(0|n._crypto_scalarmult_ristretto255_base(i,a))){var c=I(o,t);return C(r),c}b(r,"scalar is 0")}function Ke(e,t,r,a){var o=[];A(a);var i=d(e=h(o,e,"message")),c=e.length;o.push(i),t=h(o,t,"nonce");var s,l=0|n._crypto_secretbox_noncebytes();t.length!==l&&p(o,"invalid nonce length"),s=d(t),o.push(s),r=h(o,r,"key");var g,B=0|n._crypto_secretbox_keybytes();r.length!==B&&p(o,"invalid key length"),g=d(r),o.push(g);var _=new u(0|c),Q=_.address;o.push(Q);var y=new u(0|n._crypto_secretbox_macbytes()),m=y.address;if(o.push(m),0==(0|n._crypto_secretbox_detached(Q,m,i,c,0,s,g))){var F=I({mac:y,cipher:_},a);return C(o),F}b(o,"invalid usage")}function qe(e,t,r,a){var o=[];A(a);var i=d(e=h(o,e,"message")),c=e.length;o.push(i),t=h(o,t,"nonce");var s,l=0|n._crypto_secretbox_noncebytes();t.length!==l&&p(o,"invalid nonce length"),s=d(t),o.push(s),r=h(o,r,"key");var g,B=0|n._crypto_secretbox_keybytes();r.length!==B&&p(o,"invalid key length"),g=d(r),o.push(g);var _=new u(c+n._crypto_secretbox_macbytes()|0),Q=_.address;if(o.push(Q),0==(0|n._crypto_secretbox_easy(Q,i,c,0,s,g))){var y=I(_,a);return C(o),y}b(o,"invalid usage")}function $e(e){var t=[];A(e);var r=new u(0|n._crypto_secretbox_keybytes()),a=r.address;t.push(a),n._crypto_secretbox_keygen(a);var o=I(r,e);return C(t),o}function et(e,t,r,a,o){var i=[];A(o);var c=d(e=h(i,e,"ciphertext")),s=e.length;i.push(c),t=h(i,t,"mac");var l,g=0|n._crypto_secretbox_macbytes();t.length!==g&&p(i,"invalid mac length"),l=d(t),i.push(l),r=h(i,r,"nonce");var B,_=0|n._crypto_secretbox_noncebytes();r.length!==_&&p(i,"invalid nonce length"),B=d(r),i.push(B),a=h(i,a,"key");var Q,y=0|n._crypto_secretbox_keybytes();a.length!==y&&p(i,"invalid key length"),Q=d(a),i.push(Q);var m=new u(0|s),F=m.address;if(i.push(F),0==(0|n._crypto_secretbox_open_detached(F,c,l,s,0,B,Q))){var U=I(m,o);return C(i),U}b(i,"wrong secret key for the given ciphertext")}function tt(e,t,r,a){var o=[];A(a),e=h(o,e,"ciphertext");var i,c=n._crypto_secretbox_macbytes(),s=e.length;s<c&&p(o,"ciphertext is too short"),i=d(e),o.push(i),t=h(o,t,"nonce");var l,g=0|n._crypto_secretbox_noncebytes();t.length!==g&&p(o,"invalid nonce length"),l=d(t),o.push(l),r=h(o,r,"key");var B,_=0|n._crypto_secretbox_keybytes();r.length!==_&&p(o,"invalid key length"),B=d(r),o.push(B);var Q=new u(s-n._crypto_secretbox_macbytes()|0),y=Q.address;if(o.push(y),0==(0|n._crypto_secretbox_open_easy(y,i,s,0,l,B))){var m=I(Q,a);return C(o),m}b(o,"wrong secret key for the given ciphertext")}function nt(e,t,r){var a=[];A(r),e=h(a,e,"header");var o,i=0|n._crypto_secretstream_xchacha20poly1305_headerbytes();e.length!==i&&p(a,"invalid header length"),o=d(e),a.push(o),t=h(a,t,"key");var c,s=0|n._crypto_secretstream_xchacha20poly1305_keybytes();t.length!==s&&p(a,"invalid key length"),c=d(t),a.push(c);var l=new u(52).address;if(0==(0|n._crypto_secretstream_xchacha20poly1305_init_pull(l,o,c))){var g=l;return C(a),g}b(a,"invalid usage")}function rt(e,t){var r=[];A(t),e=h(r,e,"key");var a,o=0|n._crypto_secretstream_xchacha20poly1305_keybytes();e.length!==o&&p(r,"invalid key length"),a=d(e),r.push(a);var i=new u(52).address,c=new u(0|n._crypto_secretstream_xchacha20poly1305_headerbytes()),s=c.address;if(r.push(s),0==(0|n._crypto_secretstream_xchacha20poly1305_init_push(i,s,a))){var l={state:i,header:I(c,t)};return C(r),l}b(r,"invalid usage")}function at(e){var t=[];A(e);var r=new u(0|n._crypto_secretstream_xchacha20poly1305_keybytes()),a=r.address;t.push(a),n._crypto_secretstream_xchacha20poly1305_keygen(a);var o=I(r,e);return C(t),o}function ot(e,t,r,a){var o=[];A(a),Q(o,e,"state_address"),t=h(o,t,"cipher");var i,c=n._crypto_secretstream_xchacha20poly1305_abytes(),s=t.length;s<c&&p(o,"cipher is too short"),i=d(t),o.push(i);var l=null,g=0;null!=r&&(l=d(r=h(o,r,"ad")),g=r.length,o.push(l));var B=new u(s-n._crypto_secretstream_xchacha20poly1305_abytes()|0),b=B.address;o.push(b);var y,m=(y=_(1),o.push(y),(m=0===n._crypto_secretstream_xchacha20poly1305_pull(e,b,0,y,i,s,0,l,g)&&{tag:n.HEAPU8[y],message:B})&&{message:I(m.message,a),tag:m.tag});return C(o),m}function it(e,t,r,a,o){var i=[];A(o),Q(i,e,"state_address");var c=d(t=h(i,t,"message_chunk")),s=t.length;i.push(c);var l=null,g=0;null!=r&&(l=d(r=h(i,r,"ad")),g=r.length,i.push(l)),Q(i,a,"tag"),("number"!=typeof a||(0|a)!==a||a<0)&&p(i,"tag must be an unsigned integer");var B=new u(s+n._crypto_secretstream_xchacha20poly1305_abytes()|0),_=B.address;if(i.push(_),0==(0|n._crypto_secretstream_xchacha20poly1305_push(e,_,0,c,s,0,l,g,0,a))){var y=I(B,o);return C(i),y}b(i,"invalid usage")}function ct(e,t){var r=[];return A(t),Q(r,e,"state_address"),n._crypto_secretstream_xchacha20poly1305_rekey(e),C(r),!0}function st(e,t,r){var a=[];A(r);var o=d(e=h(a,e,"message")),i=e.length;a.push(o),t=h(a,t,"key");var c,s=0|n._crypto_shorthash_keybytes();t.length!==s&&p(a,"invalid key length"),c=d(t),a.push(c);var l=new u(0|n._crypto_shorthash_bytes()),g=l.address;if(a.push(g),0==(0|n._crypto_shorthash(g,o,i,0,c))){var B=I(l,r);return C(a),B}b(a,"invalid usage")}function lt(e){var t=[];A(e);var r=new u(0|n._crypto_shorthash_keybytes()),a=r.address;t.push(a),n._crypto_shorthash_keygen(a);var o=I(r,e);return C(t),o}function gt(e,t,r){var a=[];A(r);var o=d(e=h(a,e,"message")),i=e.length;a.push(o),t=h(a,t,"key");var c,s=0|n._crypto_shorthash_siphashx24_keybytes();t.length!==s&&p(a,"invalid key length"),c=d(t),a.push(c);var l=new u(0|n._crypto_shorthash_siphashx24_bytes()),g=l.address;if(a.push(g),0==(0|n._crypto_shorthash_siphashx24(g,o,i,0,c))){var B=I(l,r);return C(a),B}b(a,"invalid usage")}function It(e,t,r){var a=[];A(r);var o=d(e=h(a,e,"message")),i=e.length;a.push(o),t=h(a,t,"privateKey");var c,s=0|n._crypto_sign_secretkeybytes();t.length!==s&&p(a,"invalid privateKey length"),c=d(t),a.push(c);var l=new u(e.length+n._crypto_sign_bytes()|0),g=l.address;if(a.push(g),0==(0|n._crypto_sign(g,null,o,i,0,c))){var B=I(l,r);return C(a),B}b(a,"invalid usage")}function Bt(e,t,r){var a=[];A(r);var o=d(e=h(a,e,"message")),i=e.length;a.push(o),t=h(a,t,"privateKey");var c,s=0|n._crypto_sign_secretkeybytes();t.length!==s&&p(a,"invalid privateKey length"),c=d(t),a.push(c);var l=new u(0|n._crypto_sign_bytes()),g=l.address;if(a.push(g),0==(0|n._crypto_sign_detached(g,null,o,i,0,c))){var B=I(l,r);return C(a),B}b(a,"invalid usage")}function At(e,t){var r=[];A(t),e=h(r,e,"edPk");var a,o=0|n._crypto_sign_publickeybytes();e.length!==o&&p(r,"invalid edPk length"),a=d(e),r.push(a);var i=new u(0|n._crypto_scalarmult_scalarbytes()),c=i.address;if(r.push(c),0==(0|n._crypto_sign_ed25519_pk_to_curve25519(c,a))){var s=I(i,t);return C(r),s}b(r,"invalid key")}function ut(e,t){var r=[];A(t),e=h(r,e,"edSk");var a,o=0|n._crypto_sign_secretkeybytes();e.length!==o&&p(r,"invalid edSk length"),a=d(e),r.push(a);var i=new u(0|n._crypto_scalarmult_scalarbytes()),c=i.address;if(r.push(c),0==(0|n._crypto_sign_ed25519_sk_to_curve25519(c,a))){var s=I(i,t);return C(r),s}b(r,"invalid key")}function dt(e,t){var r=[];A(t),e=h(r,e,"privateKey");var a,o=0|n._crypto_sign_secretkeybytes();e.length!==o&&p(r,"invalid privateKey length"),a=d(e),r.push(a);var i=new u(0|n._crypto_sign_publickeybytes()),c=i.address;if(r.push(c),0==(0|n._crypto_sign_ed25519_sk_to_pk(c,a))){var s=I(i,t);return C(r),s}b(r,"invalid key")}function _t(e,t){var r=[];A(t),e=h(r,e,"privateKey");var a,o=0|n._crypto_sign_secretkeybytes();e.length!==o&&p(r,"invalid privateKey length"),a=d(e),r.push(a);var i=new u(0|n._crypto_sign_seedbytes()),c=i.address;if(r.push(c),0==(0|n._crypto_sign_ed25519_sk_to_seed(c,a))){var s=I(i,t);return C(r),s}b(r,"invalid key")}function Ct(e,t,r){var a=[];A(r),Q(a,e,"state_address"),t=h(a,t,"privateKey");var o,i=0|n._crypto_sign_secretkeybytes();t.length!==i&&p(a,"invalid privateKey length"),o=d(t),a.push(o);var c=new u(0|n._crypto_sign_bytes()),s=c.address;if(a.push(s),0==(0|n._crypto_sign_final_create(e,s,null,o))){var l=(n._free(e),I(c,r));return C(a),l}b(a,"invalid usage")}function bt(e,t,r,a){var o=[];A(a),Q(o,e,"state_address"),t=h(o,t,"signature");var i,c=0|n._crypto_sign_bytes();t.length!==c&&p(o,"invalid signature length"),i=d(t),o.push(i),r=h(o,r,"publicKey");var s,l=0|n._crypto_sign_publickeybytes();r.length!==l&&p(o,"invalid publicKey length"),s=d(r),o.push(s);var g=0==(0|n._crypto_sign_final_verify(e,i,s));return C(o),g}function pt(e){var t=[];A(e);var r=new u(208).address;if(0==(0|n._crypto_sign_init(r))){var a=r;return C(t),a}b(t,"internal error")}function Qt(e){var t=[];A(e);var r=new u(0|n._crypto_sign_publickeybytes()),a=r.address;t.push(a);var o=new u(0|n._crypto_sign_secretkeybytes()),i=o.address;if(t.push(i),0==(0|n._crypto_sign_keypair(a,i))){var c={publicKey:I(r,e),privateKey:I(o,e),keyType:"ed25519"};return C(t),c}b(t,"internal error")}function ht(e,t,r){var a=[];A(r),e=h(a,e,"signedMessage");var o,i=n._crypto_sign_bytes(),c=e.length;c<i&&p(a,"signedMessage is too short"),o=d(e),a.push(o),t=h(a,t,"publicKey");var s,l=0|n._crypto_sign_publickeybytes();t.length!==l&&p(a,"invalid publicKey length"),s=d(t),a.push(s);var g=new u(c-n._crypto_sign_bytes()|0),B=g.address;if(a.push(B),0==(0|n._crypto_sign_open(B,null,o,c,0,s))){var _=I(g,r);return C(a),_}b(a,"incorrect signature for the given public key")}function yt(e,t){var r=[];A(t),e=h(r,e,"seed");var a,o=0|n._crypto_sign_seedbytes();e.length!==o&&p(r,"invalid seed length"),a=d(e),r.push(a);var i=new u(0|n._crypto_sign_publickeybytes()),c=i.address;r.push(c);var s=new u(0|n._crypto_sign_secretkeybytes()),l=s.address;if(r.push(l),0==(0|n._crypto_sign_seed_keypair(c,l,a))){var g={publicKey:I(i,t),privateKey:I(s,t),keyType:"ed25519"};return C(r),g}b(r,"invalid usage")}function mt(e,t,r){var a=[];A(r),Q(a,e,"state_address");var o=d(t=h(a,t,"message_chunk")),i=t.length;a.push(o),0!=(0|n._crypto_sign_update(e,o,i))&&b(a,"invalid usage"),C(a)}function Ft(e,t,r){var a=[];e=h(a,e,"signature");var o,i=0|n._crypto_sign_bytes();e.length!==i&&p(a,"invalid signature length"),o=d(e),a.push(o);var c=d(t=h(a,t,"message")),s=t.length;a.push(c),r=h(a,r,"publicKey");var l,g=0|n._crypto_sign_publickeybytes();r.length!==g&&p(a,"invalid publicKey length"),l=d(r),a.push(l);var I=0==(0|n._crypto_sign_verify_detached(o,c,s,0,l));return C(a),I}function Ut(e,t,r,a){var o=[];A(a),Q(o,e,"outLength"),("number"!=typeof e||(0|e)!==e||e<0)&&p(o,"outLength must be an unsigned integer"),t=h(o,t,"key");var i,c=0|n._crypto_stream_chacha20_keybytes();t.length!==c&&p(o,"invalid key length"),i=d(t),o.push(i),r=h(o,r,"nonce");var s,l=0|n._crypto_stream_chacha20_noncebytes();r.length!==l&&p(o,"invalid nonce length"),s=d(r),o.push(s);var g=new u(0|e),B=g.address;o.push(B),n._crypto_stream_chacha20(B,e,0,s,i);var _=I(g,a);return C(o),_}function ft(e,t,r,a){var o=[];A(a);var i=d(e=h(o,e,"input_message")),c=e.length;o.push(i),t=h(o,t,"nonce");var s,l=0|n._crypto_stream_chacha20_ietf_noncebytes();t.length!==l&&p(o,"invalid nonce length"),s=d(t),o.push(s),r=h(o,r,"key");var g,B=0|n._crypto_stream_chacha20_ietf_keybytes();r.length!==B&&p(o,"invalid key length"),g=d(r),o.push(g);var _=new u(0|c),Q=_.address;if(o.push(Q),0===n._crypto_stream_chacha20_ietf_xor(Q,i,c,0,s,g)){var y=I(_,a);return C(o),y}b(o,"invalid usage")}function Gt(e,t,r,a,o){var i=[];A(o);var c=d(e=h(i,e,"input_message")),s=e.length;i.push(c),t=h(i,t,"nonce");var l,g=0|n._crypto_stream_chacha20_ietf_noncebytes();t.length!==g&&p(i,"invalid nonce length"),l=d(t),i.push(l),Q(i,r,"nonce_increment"),("number"!=typeof r||(0|r)!==r||r<0)&&p(i,"nonce_increment must be an unsigned integer"),a=h(i,a,"key");var B,_=0|n._crypto_stream_chacha20_ietf_keybytes();a.length!==_&&p(i,"invalid key length"),B=d(a),i.push(B);var y=new u(0|s),m=y.address;if(i.push(m),0===n._crypto_stream_chacha20_ietf_xor_ic(m,c,s,0,l,r,0,B)){var F=I(y,o);return C(i),F}b(i,"invalid usage")}function Et(e){var t=[];A(e);var r=new u(0|n._crypto_stream_chacha20_keybytes()),a=r.address;t.push(a),n._crypto_stream_chacha20_keygen(a);var o=I(r,e);return C(t),o}function vt(e,t,r,a){var o=[];A(a);var i=d(e=h(o,e,"input_message")),c=e.length;o.push(i),t=h(o,t,"nonce");var s,l=0|n._crypto_stream_chacha20_noncebytes();t.length!==l&&p(o,"invalid nonce length"),s=d(t),o.push(s),r=h(o,r,"key");var g,B=0|n._crypto_stream_chacha20_keybytes();r.length!==B&&p(o,"invalid key length"),g=d(r),o.push(g);var _=new u(0|c),Q=_.address;if(o.push(Q),0===n._crypto_stream_chacha20_xor(Q,i,c,0,s,g)){var y=I(_,a);return C(o),y}b(o,"invalid usage")}function Zt(e,t,r,a,o){var i=[];A(o);var c=d(e=h(i,e,"input_message")),s=e.length;i.push(c),t=h(i,t,"nonce");var l,g=0|n._crypto_stream_chacha20_noncebytes();t.length!==g&&p(i,"invalid nonce length"),l=d(t),i.push(l),Q(i,r,"nonce_increment"),("number"!=typeof r||(0|r)!==r||r<0)&&p(i,"nonce_increment must be an unsigned integer"),a=h(i,a,"key");var B,_=0|n._crypto_stream_chacha20_keybytes();a.length!==_&&p(i,"invalid key length"),B=d(a),i.push(B);var y=new u(0|s),m=y.address;if(i.push(m),0===n._crypto_stream_chacha20_xor_ic(m,c,s,0,l,r,0,B)){var F=I(y,o);return C(i),F}b(i,"invalid usage")}function Xt(e){var t=[];A(e);var r=new u(0|n._crypto_stream_keybytes()),a=r.address;t.push(a),n._crypto_stream_keygen(a);var o=I(r,e);return C(t),o}function Wt(e){var t=[];A(e);var r=new u(0|n._crypto_stream_xchacha20_keybytes()),a=r.address;t.push(a),n._crypto_stream_xchacha20_keygen(a);var o=I(r,e);return C(t),o}function Rt(e,t,r,a){var o=[];A(a);var i=d(e=h(o,e,"input_message")),c=e.length;o.push(i),t=h(o,t,"nonce");var s,l=0|n._crypto_stream_xchacha20_noncebytes();t.length!==l&&p(o,"invalid nonce length"),s=d(t),o.push(s),r=h(o,r,"key");var g,B=0|n._crypto_stream_xchacha20_keybytes();r.length!==B&&p(o,"invalid key length"),g=d(r),o.push(g);var _=new u(0|c),Q=_.address;if(o.push(Q),0===n._crypto_stream_xchacha20_xor(Q,i,c,0,s,g)){var y=I(_,a);return C(o),y}b(o,"invalid usage")}function Vt(e,t,r,a,o){var i=[];A(o);var c=d(e=h(i,e,"input_message")),s=e.length;i.push(c),t=h(i,t,"nonce");var l,g=0|n._crypto_stream_xchacha20_noncebytes();t.length!==g&&p(i,"invalid nonce length"),l=d(t),i.push(l),Q(i,r,"nonce_increment"),("number"!=typeof r||(0|r)!==r||r<0)&&p(i,"nonce_increment must be an unsigned integer"),a=h(i,a,"key");var B,_=0|n._crypto_stream_xchacha20_keybytes();a.length!==_&&p(i,"invalid key length"),B=d(a),i.push(B);var y=new u(0|s),m=y.address;if(i.push(m),0===n._crypto_stream_xchacha20_xor_ic(m,c,s,0,l,r,0,B)){var F=I(y,o);return C(i),F}b(i,"invalid usage")}function Ot(e,t){var r=[];A(t),Q(r,e,"length"),("number"!=typeof e||(0|e)!==e||e<0)&&p(r,"length must be an unsigned integer");var a=new u(0|e),o=a.address;r.push(o),n._randombytes_buf(o,e);var i=I(a,t);return C(r),i}function xt(e,t,r){var a=[];A(r),Q(a,e,"length"),("number"!=typeof e||(0|e)!==e||e<0)&&p(a,"length must be an unsigned integer"),t=h(a,t,"seed");var o,i=0|n._randombytes_seedbytes();t.length!==i&&p(a,"invalid seed length"),o=d(t),a.push(o);var c=new u(0|e),s=c.address;a.push(s),n._randombytes_buf_deterministic(s,e,o);var l=I(c,r);return C(a),l}function Tt(e){A(e),n._randombytes_close()}function Nt(e){A(e);var t=n._randombytes_random()>>>0;return C([]),t}function wt(e,t){var r=[];A(t);for(var a=n._malloc(24),o=0;o<6;o++)n.setValue(a+4*o,n.Runtime.addFunction(e[["implementation_name","random","stir","uniform","buf","close"][o]]),"i32");0!=(0|n._randombytes_set_implementation(a))&&b(r,"unsupported implementation"),C(r)}function kt(e){A(e),n._randombytes_stir()}function Yt(e,t){var r=[];A(t),Q(r,e,"upper_bound"),("number"!=typeof e||(0|e)!==e||e<0)&&p(r,"upper_bound must be an unsigned integer");var a=n._randombytes_uniform(e)>>>0;return C(r),a}function St(){var e=n._sodium_version_string(),t=n.UTF8ToString(e);return C([]),t}return u.prototype.to_Uint8Array=function(){var e=new Uint8Array(this.length);return e.set(n.HEAPU8.subarray(this.address,this.address+this.length)),e},e.add=function(e,t){if(!(e instanceof Uint8Array&&t instanceof Uint8Array))throw new TypeError("Only Uint8Array instances can added");var n=e.length,r=0,a=0;if(t.length!=e.length)throw new TypeError("Arguments must have the same length");for(a=0;a<n;a++)r>>=8,r+=e[a]+t[a],e[a]=255&r},e.base64_variants=c,e.compare=function(e,t){if(!(e instanceof Uint8Array&&t instanceof Uint8Array))throw new TypeError("Only Uint8Array instances can be compared");if(e.length!==t.length)throw new TypeError("Only instances of identical length can be compared");for(var n=0,r=1,a=e.length;a-- >0;)n|=t[a]-e[a]>>8&r,r&=(t[a]^e[a])-1>>8;return n+n+r-1},e.from_base64=function(e,t){t=l(t);var r,a=[],o=new u(3*(e=h(a,e,"input")).length/4),i=d(e),c=_(4),s=_(4);return a.push(i),a.push(o.address),a.push(o.result_bin_len_p),a.push(o.b64_end_p),0!==n._sodium_base642bin(o.address,o.length,i,e.length,0,c,s,t)&&b(a,"invalid input"),n.getValue(s,"i32")-i!==e.length&&b(a,"incomplete input"),o.length=n.getValue(c,"i32"),r=o.to_Uint8Array(),C(a),r},e.from_hex=function(e){var t,r=[],a=new u((e=h(r,e,"input")).length/2),o=d(e),i=_(4);return r.push(o),r.push(a.address),r.push(a.hex_end_p),0!==n._sodium_hex2bin(a.address,a.length,o,e.length,0,0,i)&&b(r,"invalid input"),n.getValue(i,"i32")-o!==e.length&&b(r,"incomplete input"),t=a.to_Uint8Array(),C(r),t},e.from_string=a,e.increment=function(e){if(!(e instanceof Uint8Array))throw new TypeError("Only Uint8Array instances can be incremented");for(var t=256,n=0,r=e.length;n<r;n++)t>>=8,t+=e[n],e[n]=255&t},e.is_zero=function(e){if(!(e instanceof Uint8Array))throw new TypeError("Only Uint8Array instances can be checked");for(var t=0,n=0,r=e.length;n<r;n++)t|=e[n];return 0===t},e.libsodium=t,e.memcmp=function(e,t){if(!(e instanceof Uint8Array&&t instanceof Uint8Array))throw new TypeError("Only Uint8Array instances can be compared");if(e.length!==t.length)throw new TypeError("Only instances of identical length can be compared");for(var n=0,r=0,a=e.length;r<a;r++)n|=e[r]^t[r];return 0===n},e.memzero=function(e){if(!(e instanceof Uint8Array))throw new TypeError("Only Uint8Array instances can be wiped");for(var t=0,n=e.length;t<n;t++)e[t]=0},e.output_formats=function(){return["uint8array","text","hex","base64"]},e.pad=function(e,t){if(!(e instanceof Uint8Array))throw new TypeError("buffer must be a Uint8Array");if((t|=0)<=0)throw new Error("block size must be > 0");var r,a=[],o=_(4),i=1,c=0,s=0|e.length,l=new u(s+t);a.push(o),a.push(l.address);for(var g=l.address,I=l.address+s+t;g<I;g++)n.HEAPU8[g]=e[c],c+=i=1&~((65535&((s-=i)>>>48|s>>>32|s>>>16|s))-1>>16);return 0!==n._sodium_pad(o,l.address,e.length,t,l.length)&&b(a,"internal error"),l.length=n.getValue(o,"i32"),r=l.to_Uint8Array(),C(a),r},e.unpad=function(e,t){if(!(e instanceof Uint8Array))throw new TypeError("buffer must be a Uint8Array");if((t|=0)<=0)throw new Error("block size must be > 0");var r=[],a=d(e),o=_(4);return r.push(a),r.push(o),0!==n._sodium_unpad(o,a,e.length,t)&&b(r,"unsupported/invalid padding"),e=(e=new Uint8Array(e)).subarray(0,n.getValue(o,"i32")),C(r),e},e.ready=r,e.symbols=function(){return Object.keys(e).sort()},e.to_base64=g,e.to_hex=i,e.to_string=o,e})?r.apply(t,a):r)&&(e.exports=o),c&&i.sodium.ready.then((function(){c(i.sodium)}))},function(e,t){function n(e,t){if(!e)throw new Error(t||"Assertion failed")}e.exports=n,n.equal=function(e,t,n){if(e!=t)throw new Error(n||"Assertion failed: "+e+" != "+t)}},function(e,t,n){"use strict";var r=t,a=n(4),o=n(6),i=n(70);r.assert=o,r.toArray=i.toArray,r.zero2=i.zero2,r.toHex=i.toHex,r.encode=i.encode,r.getNAF=function(e,t,n){var r=new Array(Math.max(e.bitLength(),n)+1);r.fill(0);for(var a=1<<t+1,o=e.clone(),i=0;i<r.length;i++){var c,s=o.andln(a-1);o.isOdd()?(c=s>(a>>1)-1?(a>>1)-s:s,o.isubn(c)):c=0,r[i]=c,o.iushrn(1)}return r},r.getJSF=function(e,t){var n=[[],[]];e=e.clone(),t=t.clone();for(var r=0,a=0;e.cmpn(-r)>0||t.cmpn(-a)>0;){var o,i,c,s=e.andln(3)+r&3,l=t.andln(3)+a&3;3===s&&(s=-1),3===l&&(l=-1),o=0==(1&s)?0:3!=(c=e.andln(7)+r&7)&&5!==c||2!==l?s:-s,n[0].push(o),i=0==(1&l)?0:3!=(c=t.andln(7)+a&7)&&5!==c||2!==s?l:-l,n[1].push(i),2*r===o+1&&(r=1-r),2*a===i+1&&(a=1-a),e.iushrn(1),t.iushrn(1)}return n},r.cachedProperty=function(e,t,n){var r="_"+t;e.prototype[t]=function(){return void 0!==this[r]?this[r]:this[r]=n.call(this)}},r.parseBytes=function(e){return"string"==typeof e?r.toArray(e,"hex"):e},r.intFromLE=function(e){return new a(e,"hex","le")}},function(e,t){function n(e){return(n="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e})(e)}var r;r=function(){return this}();try{r=r||new Function("return this")()}catch(e){"object"===("undefined"==typeof window?"undefined":n(window))&&(r=window)}e.exports=r},function(e,t){var n,r,a=e.exports={};function o(){throw new Error("setTimeout has not been defined")}function i(){throw new Error("clearTimeout has not been defined")}function c(e){if(n===setTimeout)return setTimeout(e,0);if((n===o||!n)&&setTimeout)return n=setTimeout,setTimeout(e,0);try{return n(e,0)}catch(t){try{return n.call(null,e,0)}catch(t){return n.call(this,e,0)}}}!function(){try{n="function"==typeof setTimeout?setTimeout:o}catch(e){n=o}try{r="function"==typeof clearTimeout?clearTimeout:i}catch(e){r=i}}();var s,l=[],g=!1,I=-1;function B(){g&&s&&(g=!1,s.length?l=s.concat(l):I=-1,l.length&&A())}function A(){if(!g){var e=c(B);g=!0;for(var t=l.length;t;){for(s=l,l=[];++I<t;)s&&s[I].run();I=-1,t=l.length}s=null,g=!1,function(e){if(r===clearTimeout)return clearTimeout(e);if((r===i||!r)&&clearTimeout)return r=clearTimeout,clearTimeout(e);try{r(e)}catch(t){try{return r.call(null,e)}catch(t){return r.call(this,e)}}}(e)}}function u(e,t){this.fun=e,this.array=t}function d(){}a.nextTick=function(e){var t=new Array(arguments.length-1);if(arguments.length>1)for(var n=1;n<arguments.length;n++)t[n-1]=arguments[n];l.push(new u(e,t)),1!==l.length||g||c(A)},u.prototype.run=function(){this.fun.apply(null,this.array)},a.title="browser",a.browser=!0,a.env={},a.argv=[],a.version="",a.versions={},a.on=d,a.addListener=d,a.once=d,a.off=d,a.removeListener=d,a.removeAllListeners=d,a.emit=d,a.prependListener=d,a.prependOnceListener=d,a.listeners=function(e){return[]},a.binding=function(e){throw new Error("process.binding is not supported")},a.cwd=function(){return"/"},a.chdir=function(e){throw new Error("process.chdir is not supported")},a.umask=function(){return 0}},function(e,t,n){"use strict";var r=n(6),a=n(1);function o(e,t){return 55296==(64512&e.charCodeAt(t))&&!(t<0||t+1>=e.length)&&56320==(64512&e.charCodeAt(t+1))}function i(e){return(e>>>24|e>>>8&65280|e<<8&16711680|(255&e)<<24)>>>0}function c(e){return 1===e.length?"0"+e:e}function s(e){return 7===e.length?"0"+e:6===e.length?"00"+e:5===e.length?"000"+e:4===e.length?"0000"+e:3===e.length?"00000"+e:2===e.length?"000000"+e:1===e.length?"0000000"+e:e}t.inherits=a,t.toArray=function(e,t){if(Array.isArray(e))return e.slice();if(!e)return[];var n=[];if("string"==typeof e)if(t){if("hex"===t)for((e=e.replace(/[^a-z0-9]+/gi,"")).length%2!=0&&(e="0"+e),a=0;a<e.length;a+=2)n.push(parseInt(e[a]+e[a+1],16))}else for(var r=0,a=0;a<e.length;a++){var i=e.charCodeAt(a);i<128?n[r++]=i:i<2048?(n[r++]=i>>6|192,n[r++]=63&i|128):o(e,a)?(i=65536+((1023&i)<<10)+(1023&e.charCodeAt(++a)),n[r++]=i>>18|240,n[r++]=i>>12&63|128,n[r++]=i>>6&63|128,n[r++]=63&i|128):(n[r++]=i>>12|224,n[r++]=i>>6&63|128,n[r++]=63&i|128)}else for(a=0;a<e.length;a++)n[a]=0|e[a];return n},t.toHex=function(e){for(var t="",n=0;n<e.length;n++)t+=c(e[n].toString(16));return t},t.htonl=i,t.toHex32=function(e,t){for(var n="",r=0;r<e.length;r++){var a=e[r];"little"===t&&(a=i(a)),n+=s(a.toString(16))}return n},t.zero2=c,t.zero8=s,t.join32=function(e,t,n,a){var o=n-t;r(o%4==0);for(var i=new Array(o/4),c=0,s=t;c<i.length;c++,s+=4){var l;l="big"===a?e[s]<<24|e[s+1]<<16|e[s+2]<<8|e[s+3]:e[s+3]<<24|e[s+2]<<16|e[s+1]<<8|e[s],i[c]=l>>>0}return i},t.split32=function(e,t){for(var n=new Array(4*e.length),r=0,a=0;r<e.length;r++,a+=4){var o=e[r];"big"===t?(n[a]=o>>>24,n[a+1]=o>>>16&255,n[a+2]=o>>>8&255,n[a+3]=255&o):(n[a+3]=o>>>24,n[a+2]=o>>>16&255,n[a+1]=o>>>8&255,n[a]=255&o)}return n},t.rotr32=function(e,t){return e>>>t|e<<32-t},t.rotl32=function(e,t){return e<<t|e>>>32-t},t.sum32=function(e,t){return e+t>>>0},t.sum32_3=function(e,t,n){return e+t+n>>>0},t.sum32_4=function(e,t,n,r){return e+t+n+r>>>0},t.sum32_5=function(e,t,n,r,a){return e+t+n+r+a>>>0},t.sum64=function(e,t,n,r){var a=e[t],o=r+e[t+1]>>>0,i=(o<r?1:0)+n+a;e[t]=i>>>0,e[t+1]=o},t.sum64_hi=function(e,t,n,r){return(t+r>>>0<t?1:0)+e+n>>>0},t.sum64_lo=function(e,t,n,r){return t+r>>>0},t.sum64_4_hi=function(e,t,n,r,a,o,i,c){var s=0,l=t;return s+=(l=l+r>>>0)<t?1:0,s+=(l=l+o>>>0)<o?1:0,e+n+a+i+(s+=(l=l+c>>>0)<c?1:0)>>>0},t.sum64_4_lo=function(e,t,n,r,a,o,i,c){return t+r+o+c>>>0},t.sum64_5_hi=function(e,t,n,r,a,o,i,c,s,l){var g=0,I=t;return g+=(I=I+r>>>0)<t?1:0,g+=(I=I+o>>>0)<o?1:0,g+=(I=I+c>>>0)<c?1:0,e+n+a+i+s+(g+=(I=I+l>>>0)<l?1:0)>>>0},t.sum64_5_lo=function(e,t,n,r,a,o,i,c,s,l){return t+r+o+c+l>>>0},t.rotr64_hi=function(e,t,n){return(t<<32-n|e>>>n)>>>0},t.rotr64_lo=function(e,t,n){return(e<<32-n|t>>>n)>>>0},t.shr64_hi=function(e,t,n){return e>>>n},t.shr64_lo=function(e,t,n){return(e<<32-n|t>>>n)>>>0}},function(e,t,n){var r=n(2).Buffer,a=n(27).Transform,o=n(31).StringDecoder;function i(e){a.call(this),this.hashMode="string"==typeof e,this.hashMode?this[e]=this._finalOrDigest:this.final=this._finalOrDigest,this._final&&(this.__final=this._final,this._final=null),this._decoder=null,this._encoding=null}n(1)(i,a),i.prototype.update=function(e,t,n){"string"==typeof e&&(e=r.from(e,t));var a=this._update(e);return this.hashMode?this:(n&&(a=this._toString(a,n)),a)},i.prototype.setAutoPadding=function(){},i.prototype.getAuthTag=function(){throw new Error("trying to get auth tag in unsupported state")},i.prototype.setAuthTag=function(){throw new Error("trying to set auth tag in unsupported state")},i.prototype.setAAD=function(){throw new Error("trying to set aad in unsupported state")},i.prototype._transform=function(e,t,n){var r;try{this.hashMode?this._update(e):this.push(this._update(e))}catch(e){r=e}finally{n(r)}},i.prototype._flush=function(e){var t;try{this.push(this.__final())}catch(e){t=e}e(t)},i.prototype._finalOrDigest=function(e){var t=this.__final()||r.alloc(0);return e&&(t=this._toString(t,e,!0)),t},i.prototype._toString=function(e,t,n){if(this._decoder||(this._decoder=new o(t),this._encoding=t),this._encoding!==t)throw new Error("can't switch encodings");var r=this._decoder.write(e);return n&&(r+=this._decoder.end()),r},e.exports=i},function(e,t,n){"use strict";var r=n(21),a=Object.keys||function(e){var t=[];for(var n in e)t.push(n);return t};e.exports=I;var o=Object.create(n(16));o.inherits=n(1);var i=n(48),c=n(30);o.inherits(I,i);for(var s=a(c.prototype),l=0;l<s.length;l++){var g=s[l];I.prototype[g]||(I.prototype[g]=c.prototype[g])}function I(e){if(!(this instanceof I))return new I(e);i.call(this,e),c.call(this,e),e&&!1===e.readable&&(this.readable=!1),e&&!1===e.writable&&(this.writable=!1),this.allowHalfOpen=!0,e&&!1===e.allowHalfOpen&&(this.allowHalfOpen=!1),this.once("end",B)}function B(){this.allowHalfOpen||this._writableState.ended||r.nextTick(A,this)}function A(e){e.end()}Object.defineProperty(I.prototype,"writableHighWaterMark",{enumerable:!1,get:function(){return this._writableState.highWaterMark}}),Object.defineProperty(I.prototype,"destroyed",{get:function(){return void 0!==this._readableState&&void 0!==this._writableState&&this._readableState.destroyed&&this._writableState.destroyed},set:function(e){void 0!==this._readableState&&void 0!==this._writableState&&(this._readableState.destroyed=e,this._writableState.destroyed=e)}}),I.prototype._destroy=function(e,t){this.push(null),this.end(),r.nextTick(t,e)}},function(e,t,n){"use strict";(function(t,r){var a=n(2).Buffer,o=t.crypto||t.msCrypto;o&&o.getRandomValues?e.exports=function(e,t){if(e>4294967295)throw new RangeError("requested too many random bytes");var n=a.allocUnsafe(e);if(e>0)if(e>65536)for(var i=0;i<e;i+=65536)o.getRandomValues(n.slice(i,i+65536));else o.getRandomValues(n);return"function"==typeof t?r.nextTick((function(){t(null,n)})):n}:e.exports=function(){throw new Error("Secure random number generation is not supported by this browser.\nUse Chrome, Firefox or Internet Explorer 11")}}).call(this,n(8),n(9))},function(e,t,n){var r=n(2).Buffer;function a(e,t){this._block=r.alloc(e),this._finalSize=t,this._blockSize=e,this._len=0}a.prototype.update=function(e,t){"string"==typeof e&&(t=t||"utf8",e=r.from(e,t));for(var n=this._block,a=this._blockSize,o=e.length,i=this._len,c=0;c<o;){for(var s=i%a,l=Math.min(o-c,a-s),g=0;g<l;g++)n[s+g]=e[c+g];c+=l,(i+=l)%a==0&&this._update(n)}return this._len+=o,this},a.prototype.digest=function(e){var t=this._len%this._blockSize;this._block[t]=128,this._block.fill(0,t+1),t>=this._finalSize&&(this._update(this._block),this._block.fill(0));var n=8*this._len;if(n<=4294967295)this._block.writeUInt32BE(n,this._blockSize-4);else{var r=(4294967295&n)>>>0,a=(n-r)/4294967296;this._block.writeUInt32BE(a,this._blockSize-8),this._block.writeUInt32BE(r,this._blockSize-4)}this._update(this._block);var o=this._hash();return e?o.toString(e):o},a.prototype._update=function(){throw new Error("_update must be implemented by subclass")},e.exports=a},function(e,t,n){"use strict";var r=n(1),a=n(26),o=n(32),i=n(33),c=n(11);function s(e){c.call(this,"digest"),this._hash=e}r(s,c),s.prototype._update=function(e){this._hash.update(e)},s.prototype._final=function(){return this._hash.digest()},e.exports=function(e){return"md5"===(e=e.toLowerCase())?new a:"rmd160"===e||"ripemd160"===e?new o:new s(i(e))}},function(e,t,n){(function(e){function n(e){return(n="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e})(e)}function r(e){return Object.prototype.toString.call(e)}t.isArray=function(e){return Array.isArray?Array.isArray(e):"[object Array]"===r(e)},t.isBoolean=function(e){return"boolean"==typeof e},t.isNull=function(e){return null===e},t.isNullOrUndefined=function(e){return null==e},t.isNumber=function(e){return"number"==typeof e},t.isString=function(e){return"string"==typeof e},t.isSymbol=function(e){return"symbol"===n(e)},t.isUndefined=function(e){return void 0===e},t.isRegExp=function(e){return"[object RegExp]"===r(e)},t.isObject=function(e){return"object"===n(e)&&null!==e},t.isDate=function(e){return"[object Date]"===r(e)},t.isError=function(e){return"[object Error]"===r(e)||e instanceof Error},t.isFunction=function(e){return"function"==typeof e},t.isPrimitive=function(e){return null===e||"boolean"==typeof e||"number"==typeof e||"string"==typeof e||"symbol"===n(e)||void 0===e},t.isBuffer=e.isBuffer}).call(this,n(3).Buffer)},function(e,t,n){(function(t){e.exports=function(e,n){for(var r=Math.min(e.length,n.length),a=new t(r),o=0;o<r;++o)a[o]=e[o]^n[o];return a}}).call(this,n(3).Buffer)},function(e,t,n){"use strict";var r=n(10),a=n(6);function o(){this.pending=null,this.pendingTotal=0,this.blockSize=this.constructor.blockSize,this.outSize=this.constructor.outSize,this.hmacStrength=this.constructor.hmacStrength,this.padLength=this.constructor.padLength/8,this.endian="big",this._delta8=this.blockSize/8,this._delta32=this.blockSize/32}t.BlockHash=o,o.prototype.update=function(e,t){if(e=r.toArray(e,t),this.pending?this.pending=this.pending.concat(e):this.pending=e,this.pendingTotal+=e.length,this.pending.length>=this._delta8){var n=(e=this.pending).length%this._delta8;this.pending=e.slice(e.length-n,e.length),0===this.pending.length&&(this.pending=null),e=r.join32(e,0,e.length-n,this.endian);for(var a=0;a<e.length;a+=this._delta32)this._update(e,a,a+this._delta32)}return this},o.prototype.digest=function(e){return this.update(this._pad()),a(null===this.pending),this._digest(e)},o.prototype._pad=function(){var e=this.pendingTotal,t=this._delta8,n=t-(e+this.padLength)%t,r=new Array(n+this.padLength);r[0]=128;for(var a=1;a<n;a++)r[a]=0;if(e<<=3,"big"===this.endian){for(var o=8;o<this.padLength;o++)r[a++]=0;r[a++]=0,r[a++]=0,r[a++]=0,r[a++]=0,r[a++]=e>>>24&255,r[a++]=e>>>16&255,r[a++]=e>>>8&255,r[a++]=255&e}else for(r[a++]=255&e,r[a++]=e>>>8&255,r[a++]=e>>>16&255,r[a++]=e>>>24&255,r[a++]=0,r[a++]=0,r[a++]=0,r[a++]=0,o=8;o<this.padLength;o++)r[a++]=0;return r}},function(e,t,n){var r=t;r.bignum=n(4),r.define=n(148).define,r.base=n(20),r.constants=n(76),r.decoders=n(153),r.encoders=n(155)},function(e,t,n){var r=t;r.Reporter=n(150).Reporter,r.DecoderBuffer=n(75).DecoderBuffer,r.EncoderBuffer=n(75).EncoderBuffer,r.Node=n(151)},function(e,t,n){"use strict";(function(t){void 0===t||!t.version||0===t.version.indexOf("v0.")||0===t.version.indexOf("v1.")&&0!==t.version.indexOf("v1.8.")?e.exports={nextTick:function(e,n,r,a){if("function"!=typeof e)throw new TypeError('"callback" argument must be a function');var o,i,c=arguments.length;switch(c){case 0:case 1:return t.nextTick(e);case 2:return t.nextTick((function(){e.call(null,n)}));case 3:return t.nextTick((function(){e.call(null,n,r)}));case 4:return t.nextTick((function(){e.call(null,n,r,a)}));default:for(o=new Array(c-1),i=0;i<o.length;)o[i++]=arguments[i];return t.nextTick((function(){e.apply(null,o)}))}}}:e.exports=t}).call(this,n(9))},function(e,t,n){var r=n(2).Buffer;function a(e){r.isBuffer(e)||(e=r.from(e));for(var t=e.length/4|0,n=new Array(t),a=0;a<t;a++)n[a]=e.readUInt32BE(4*a);return n}function o(e){for(;0<e.length;e++)e[0]=0}function i(e,t,n,r,a){for(var o,i,c,s,l=n[0],g=n[1],I=n[2],B=n[3],A=e[0]^t[0],u=e[1]^t[1],d=e[2]^t[2],_=e[3]^t[3],C=4,b=1;b<a;b++)o=l[A>>>24]^g[u>>>16&255]^I[d>>>8&255]^B[255&_]^t[C++],i=l[u>>>24]^g[d>>>16&255]^I[_>>>8&255]^B[255&A]^t[C++],c=l[d>>>24]^g[_>>>16&255]^I[A>>>8&255]^B[255&u]^t[C++],s=l[_>>>24]^g[A>>>16&255]^I[u>>>8&255]^B[255&d]^t[C++],A=o,u=i,d=c,_=s;return o=(r[A>>>24]<<24|r[u>>>16&255]<<16|r[d>>>8&255]<<8|r[255&_])^t[C++],i=(r[u>>>24]<<24|r[d>>>16&255]<<16|r[_>>>8&255]<<8|r[255&A])^t[C++],c=(r[d>>>24]<<24|r[_>>>16&255]<<16|r[A>>>8&255]<<8|r[255&u])^t[C++],s=(r[_>>>24]<<24|r[A>>>16&255]<<16|r[u>>>8&255]<<8|r[255&d])^t[C++],[o>>>=0,i>>>=0,c>>>=0,s>>>=0]}var c=[0,1,2,4,8,16,32,64,128,27,54],s=function(){for(var e=new Array(256),t=0;t<256;t++)e[t]=t<128?t<<1:t<<1^283;for(var n=[],r=[],a=[[],[],[],[]],o=[[],[],[],[]],i=0,c=0,s=0;s<256;++s){var l=c^c<<1^c<<2^c<<3^c<<4;l=l>>>8^255&l^99,n[i]=l,r[l]=i;var g=e[i],I=e[g],B=e[I],A=257*e[l]^16843008*l;a[0][i]=A<<24|A>>>8,a[1][i]=A<<16|A>>>16,a[2][i]=A<<8|A>>>24,a[3][i]=A,A=16843009*B^65537*I^257*g^16843008*i,o[0][l]=A<<24|A>>>8,o[1][l]=A<<16|A>>>16,o[2][l]=A<<8|A>>>24,o[3][l]=A,0===i?i=c=1:(i=g^e[e[e[B^g]]],c^=e[e[c]])}return{SBOX:n,INV_SBOX:r,SUB_MIX:a,INV_SUB_MIX:o}}();function l(e){this._key=a(e),this._reset()}l.blockSize=16,l.keySize=32,l.prototype.blockSize=l.blockSize,l.prototype.keySize=l.keySize,l.prototype._reset=function(){for(var e=this._key,t=e.length,n=t+6,r=4*(n+1),a=[],o=0;o<t;o++)a[o]=e[o];for(o=t;o<r;o++){var i=a[o-1];o%t==0?(i=i<<8|i>>>24,i=s.SBOX[i>>>24]<<24|s.SBOX[i>>>16&255]<<16|s.SBOX[i>>>8&255]<<8|s.SBOX[255&i],i^=c[o/t|0]<<24):t>6&&o%t==4&&(i=s.SBOX[i>>>24]<<24|s.SBOX[i>>>16&255]<<16|s.SBOX[i>>>8&255]<<8|s.SBOX[255&i]),a[o]=a[o-t]^i}for(var l=[],g=0;g<r;g++){var I=r-g,B=a[I-(g%4?0:4)];l[g]=g<4||I<=4?B:s.INV_SUB_MIX[0][s.SBOX[B>>>24]]^s.INV_SUB_MIX[1][s.SBOX[B>>>16&255]]^s.INV_SUB_MIX[2][s.SBOX[B>>>8&255]]^s.INV_SUB_MIX[3][s.SBOX[255&B]]}this._nRounds=n,this._keySchedule=a,this._invKeySchedule=l},l.prototype.encryptBlockRaw=function(e){return i(e=a(e),this._keySchedule,s.SUB_MIX,s.SBOX,this._nRounds)},l.prototype.encryptBlock=function(e){var t=this.encryptBlockRaw(e),n=r.allocUnsafe(16);return n.writeUInt32BE(t[0],0),n.writeUInt32BE(t[1],4),n.writeUInt32BE(t[2],8),n.writeUInt32BE(t[3],12),n},l.prototype.decryptBlock=function(e){var t=(e=a(e))[1];e[1]=e[3],e[3]=t;var n=i(e,this._invKeySchedule,s.INV_SUB_MIX,s.INV_SBOX,this._nRounds),o=r.allocUnsafe(16);return o.writeUInt32BE(n[0],0),o.writeUInt32BE(n[3],4),o.writeUInt32BE(n[2],8),o.writeUInt32BE(n[1],12),o},l.prototype.scrub=function(){o(this._keySchedule),o(this._invKeySchedule),o(this._key)},e.exports.AES=l},function(e,t,n){var r=n(2).Buffer,a=n(26);e.exports=function(e,t,n,o){if(r.isBuffer(e)||(e=r.from(e,"binary")),t&&(r.isBuffer(t)||(t=r.from(t,"binary")),8!==t.length))throw new RangeError("salt should be Buffer with 8 byte length");for(var i=n/8,c=r.alloc(i),s=r.alloc(o||0),l=r.alloc(0);i>0||o>0;){var g=new a;g.update(l),g.update(e),t&&g.update(t),l=g.digest();var I=0;if(i>0){var B=c.length-i;I=Math.min(i,l.length),l.copy(c,B,0,I),i-=I}if(I<l.length&&o>0){var A=s.length-o,u=Math.min(o,l.length-I);l.copy(s,A,I,I+u),o-=u}}return l.fill(0),{key:c,iv:s}}},function(e,t,n){"use strict";var r=n(4),a=n(7),o=a.getNAF,i=a.getJSF,c=a.assert;function s(e,t){this.type=e,this.p=new r(t.p,16),this.red=t.prime?r.red(t.prime):r.mont(this.p),this.zero=new r(0).toRed(this.red),this.one=new r(1).toRed(this.red),this.two=new r(2).toRed(this.red),this.n=t.n&&new r(t.n,16),this.g=t.g&&this.pointFromJSON(t.g,t.gRed),this._wnafT1=new Array(4),this._wnafT2=new Array(4),this._wnafT3=new Array(4),this._wnafT4=new Array(4),this._bitLength=this.n?this.n.bitLength():0;var n=this.n&&this.p.div(this.n);!n||n.cmpn(100)>0?this.redN=null:(this._maxwellTrick=!0,this.redN=this.n.toRed(this.red))}function l(e,t){this.curve=e,this.type=t,this.precomputed=null}e.exports=s,s.prototype.point=function(){throw new Error("Not implemented")},s.prototype.validate=function(){throw new Error("Not implemented")},s.prototype._fixedNafMul=function(e,t){c(e.precomputed);var n=e._getDoubles(),r=o(t,1,this._bitLength),a=(1<<n.step+1)-(n.step%2==0?2:1);a/=3;for(var i=[],s=0;s<r.length;s+=n.step){var l=0;for(t=s+n.step-1;t>=s;t--)l=(l<<1)+r[t];i.push(l)}for(var g=this.jpoint(null,null,null),I=this.jpoint(null,null,null),B=a;B>0;B--){for(s=0;s<i.length;s++)(l=i[s])===B?I=I.mixedAdd(n.points[s]):l===-B&&(I=I.mixedAdd(n.points[s].neg()));g=g.add(I)}return g.toP()},s.prototype._wnafMul=function(e,t){var n=4,r=e._getNAFPoints(n);n=r.wnd;for(var a=r.points,i=o(t,n,this._bitLength),s=this.jpoint(null,null,null),l=i.length-1;l>=0;l--){for(t=0;l>=0&&0===i[l];l--)t++;if(l>=0&&t++,s=s.dblp(t),l<0)break;var g=i[l];c(0!==g),s="affine"===e.type?g>0?s.mixedAdd(a[g-1>>1]):s.mixedAdd(a[-g-1>>1].neg()):g>0?s.add(a[g-1>>1]):s.add(a[-g-1>>1].neg())}return"affine"===e.type?s.toP():s},s.prototype._wnafMulAdd=function(e,t,n,r,a){for(var c=this._wnafT1,s=this._wnafT2,l=this._wnafT3,g=0,I=0;I<r;I++){var B=(U=t[I])._getNAFPoints(e);c[I]=B.wnd,s[I]=B.points}for(I=r-1;I>=1;I-=2){var A=I-1,u=I;if(1===c[A]&&1===c[u]){var d=[t[A],null,null,t[u]];0===t[A].y.cmp(t[u].y)?(d[1]=t[A].add(t[u]),d[2]=t[A].toJ().mixedAdd(t[u].neg())):0===t[A].y.cmp(t[u].y.redNeg())?(d[1]=t[A].toJ().mixedAdd(t[u]),d[2]=t[A].add(t[u].neg())):(d[1]=t[A].toJ().mixedAdd(t[u]),d[2]=t[A].toJ().mixedAdd(t[u].neg()));var _=[-3,-1,-5,-7,0,7,5,1,3],C=i(n[A],n[u]);g=Math.max(C[0].length,g),l[A]=new Array(g),l[u]=new Array(g);for(var b=0;b<g;b++){var p=0|C[0][b],Q=0|C[1][b];l[A][b]=_[3*(p+1)+(Q+1)],l[u][b]=0,s[A]=d}}else l[A]=o(n[A],c[A],this._bitLength),l[u]=o(n[u],c[u],this._bitLength),g=Math.max(l[A].length,g),g=Math.max(l[u].length,g)}var h=this.jpoint(null,null,null),y=this._wnafT4;for(I=g;I>=0;I--){for(var m=0;I>=0;){var F=!0;for(b=0;b<r;b++)y[b]=0|l[b][I],0!==y[b]&&(F=!1);if(!F)break;m++,I--}if(I>=0&&m++,h=h.dblp(m),I<0)break;for(b=0;b<r;b++){var U,f=y[b];0!==f&&(f>0?U=s[b][f-1>>1]:f<0&&(U=s[b][-f-1>>1].neg()),h="affine"===U.type?h.mixedAdd(U):h.add(U))}}for(I=0;I<r;I++)s[I]=null;return a?h:h.toP()},s.BasePoint=l,l.prototype.eq=function(){throw new Error("Not implemented")},l.prototype.validate=function(){return this.curve.validate(this)},s.prototype.decodePoint=function(e,t){e=a.toArray(e,t);var n=this.p.byteLength();if((4===e[0]||6===e[0]||7===e[0])&&e.length-1==2*n)return 6===e[0]?c(e[e.length-1]%2==0):7===e[0]&&c(e[e.length-1]%2==1),this.point(e.slice(1,1+n),e.slice(1+n,1+2*n));if((2===e[0]||3===e[0])&&e.length-1===n)return this.pointFromX(e.slice(1,1+n),3===e[0]);throw new Error("Unknown point format")},l.prototype.encodeCompressed=function(e){return this.encode(e,!0)},l.prototype._encode=function(e){var t=this.curve.p.byteLength(),n=this.getX().toArray("be",t);return e?[this.getY().isEven()?2:3].concat(n):[4].concat(n,this.getY().toArray("be",t))},l.prototype.encode=function(e,t){return a.encode(this._encode(t),e)},l.prototype.precompute=function(e){if(this.precomputed)return this;var t={doubles:null,naf:null,beta:null};return t.naf=this._getNAFPoints(8),t.doubles=this._getDoubles(4,e),t.beta=this._getBeta(),this.precomputed=t,this},l.prototype._hasDoubles=function(e){if(!this.precomputed)return!1;var t=this.precomputed.doubles;return!!t&&t.points.length>=Math.ceil((e.bitLength()+1)/t.step)},l.prototype._getDoubles=function(e,t){if(this.precomputed&&this.precomputed.doubles)return this.precomputed.doubles;for(var n=[this],r=this,a=0;a<t;a+=e){for(var o=0;o<e;o++)r=r.dbl();n.push(r)}return{step:e,points:n}},l.prototype._getNAFPoints=function(e){if(this.precomputed&&this.precomputed.naf)return this.precomputed.naf;for(var t=[this],n=(1<<e)-1,r=1===n?null:this.dbl(),a=1;a<n;a++)t[a]=t[a-1].add(r);return{wnd:e,points:t}},l.prototype._getBeta=function(){return null},l.prototype.dblp=function(e){for(var t=this,n=0;n<e;n++)t=t.dbl();return t}},function(e,t,n){function r(e){return(r="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e})(e)}var a=n(147),o=n(158),i=n(159),c=n(35),s=n(57),l=n(2).Buffer;function g(e){var t;"object"!==r(e)||l.isBuffer(e)||(t=e.passphrase,e=e.key),"string"==typeof e&&(e=l.from(e));var n,g,I=i(e,t),B=I.tag,A=I.data;switch(B){case"CERTIFICATE":g=a.certificate.decode(A,"der").tbsCertificate.subjectPublicKeyInfo;case"PUBLIC KEY":switch(g||(g=a.PublicKey.decode(A,"der")),n=g.algorithm.algorithm.join(".")){case"1.2.840.113549.1.1.1":return a.RSAPublicKey.decode(g.subjectPublicKey.data,"der");case"1.2.840.10045.2.1":return g.subjectPrivateKey=g.subjectPublicKey,{type:"ec",data:g};case"1.2.840.10040.4.1":return g.algorithm.params.pub_key=a.DSAparam.decode(g.subjectPublicKey.data,"der"),{type:"dsa",data:g.algorithm.params};default:throw new Error("unknown key id "+n)}throw new Error("unknown key type "+B);case"ENCRYPTED PRIVATE KEY":A=function(e,t){var n=e.algorithm.decrypt.kde.kdeparams.salt,r=parseInt(e.algorithm.decrypt.kde.kdeparams.iters.toString(),10),a=o[e.algorithm.decrypt.cipher.algo.join(".")],i=e.algorithm.decrypt.cipher.iv,g=e.subjectPrivateKey,I=parseInt(a.split("-")[1],10)/8,B=s.pbkdf2Sync(t,n,r,I,"sha1"),A=c.createDecipheriv(a,B,i),u=[];return u.push(A.update(g)),u.push(A.final()),l.concat(u)}(A=a.EncryptedPrivateKey.decode(A,"der"),t);case"PRIVATE KEY":switch(n=(g=a.PrivateKey.decode(A,"der")).algorithm.algorithm.join(".")){case"1.2.840.113549.1.1.1":return a.RSAPrivateKey.decode(g.subjectPrivateKey,"der");case"1.2.840.10045.2.1":return{curve:g.algorithm.curve,privateKey:a.ECPrivateKey.decode(g.subjectPrivateKey,"der").privateKey};case"1.2.840.10040.4.1":return g.algorithm.params.priv_key=a.DSAparam.decode(g.subjectPrivateKey,"der"),{type:"dsa",params:g.algorithm.params};default:throw new Error("unknown key id "+n)}throw new Error("unknown key type "+B);case"RSA PUBLIC KEY":return a.RSAPublicKey.decode(A,"der");case"RSA PRIVATE KEY":return a.RSAPrivateKey.decode(A,"der");case"DSA PRIVATE KEY":return{type:"dsa",params:a.DSAPrivateKey.decode(A,"der")};case"EC PRIVATE KEY":return{curve:(A=a.ECPrivateKey.decode(A,"der")).parameters.value,privateKey:A.privateKey};default:throw new Error("unknown key type "+B)}}e.exports=g,g.signature=a.signature},function(e,t,n){"use strict";var r=n(1),a=n(47),o=n(2).Buffer,i=new Array(16);function c(){a.call(this,64),this._a=1732584193,this._b=4023233417,this._c=2562383102,this._d=271733878}function s(e,t){return e<<t|e>>>32-t}function l(e,t,n,r,a,o,i){return s(e+(t&n|~t&r)+a+o|0,i)+t|0}function g(e,t,n,r,a,o,i){return s(e+(t&r|n&~r)+a+o|0,i)+t|0}function I(e,t,n,r,a,o,i){return s(e+(t^n^r)+a+o|0,i)+t|0}function B(e,t,n,r,a,o,i){return s(e+(n^(t|~r))+a+o|0,i)+t|0}r(c,a),c.prototype._update=function(){for(var e=i,t=0;t<16;++t)e[t]=this._block.readInt32LE(4*t);var n=this._a,r=this._b,a=this._c,o=this._d;n=l(n,r,a,o,e[0],3614090360,7),o=l(o,n,r,a,e[1],3905402710,12),a=l(a,o,n,r,e[2],606105819,17),r=l(r,a,o,n,e[3],3250441966,22),n=l(n,r,a,o,e[4],4118548399,7),o=l(o,n,r,a,e[5],1200080426,12),a=l(a,o,n,r,e[6],2821735955,17),r=l(r,a,o,n,e[7],4249261313,22),n=l(n,r,a,o,e[8],1770035416,7),o=l(o,n,r,a,e[9],2336552879,12),a=l(a,o,n,r,e[10],4294925233,17),r=l(r,a,o,n,e[11],2304563134,22),n=l(n,r,a,o,e[12],1804603682,7),o=l(o,n,r,a,e[13],4254626195,12),a=l(a,o,n,r,e[14],2792965006,17),n=g(n,r=l(r,a,o,n,e[15],1236535329,22),a,o,e[1],4129170786,5),o=g(o,n,r,a,e[6],3225465664,9),a=g(a,o,n,r,e[11],643717713,14),r=g(r,a,o,n,e[0],3921069994,20),n=g(n,r,a,o,e[5],3593408605,5),o=g(o,n,r,a,e[10],38016083,9),a=g(a,o,n,r,e[15],3634488961,14),r=g(r,a,o,n,e[4],3889429448,20),n=g(n,r,a,o,e[9],568446438,5),o=g(o,n,r,a,e[14],3275163606,9),a=g(a,o,n,r,e[3],4107603335,14),r=g(r,a,o,n,e[8],1163531501,20),n=g(n,r,a,o,e[13],2850285829,5),o=g(o,n,r,a,e[2],4243563512,9),a=g(a,o,n,r,e[7],1735328473,14),n=I(n,r=g(r,a,o,n,e[12],2368359562,20),a,o,e[5],4294588738,4),o=I(o,n,r,a,e[8],2272392833,11),a=I(a,o,n,r,e[11],1839030562,16),r=I(r,a,o,n,e[14],4259657740,23),n=I(n,r,a,o,e[1],2763975236,4),o=I(o,n,r,a,e[4],1272893353,11),a=I(a,o,n,r,e[7],4139469664,16),r=I(r,a,o,n,e[10],3200236656,23),n=I(n,r,a,o,e[13],681279174,4),o=I(o,n,r,a,e[0],3936430074,11),a=I(a,o,n,r,e[3],3572445317,16),r=I(r,a,o,n,e[6],76029189,23),n=I(n,r,a,o,e[9],3654602809,4),o=I(o,n,r,a,e[12],3873151461,11),a=I(a,o,n,r,e[15],530742520,16),n=B(n,r=I(r,a,o,n,e[2],3299628645,23),a,o,e[0],4096336452,6),o=B(o,n,r,a,e[7],1126891415,10),a=B(a,o,n,r,e[14],2878612391,15),r=B(r,a,o,n,e[5],4237533241,21),n=B(n,r,a,o,e[12],1700485571,6),o=B(o,n,r,a,e[3],2399980690,10),a=B(a,o,n,r,e[10],4293915773,15),r=B(r,a,o,n,e[1],2240044497,21),n=B(n,r,a,o,e[8],1873313359,6),o=B(o,n,r,a,e[15],4264355552,10),a=B(a,o,n,r,e[6],2734768916,15),r=B(r,a,o,n,e[13],1309151649,21),n=B(n,r,a,o,e[4],4149444226,6),o=B(o,n,r,a,e[11],3174756917,10),a=B(a,o,n,r,e[2],718787259,15),r=B(r,a,o,n,e[9],3951481745,21),this._a=this._a+n|0,this._b=this._b+r|0,this._c=this._c+a|0,this._d=this._d+o|0},c.prototype._digest=function(){this._block[this._blockOffset++]=128,this._blockOffset>56&&(this._block.fill(0,this._blockOffset,64),this._update(),this._blockOffset=0),this._block.fill(0,this._blockOffset,56),this._block.writeUInt32LE(this._length[0],56),this._block.writeUInt32LE(this._length[1],60),this._update();var e=o.allocUnsafe(16);return e.writeInt32LE(this._a,0),e.writeInt32LE(this._b,4),e.writeInt32LE(this._c,8),e.writeInt32LE(this._d,12),e},e.exports=c},function(e,t,n){e.exports=a;var r=n(28).EventEmitter;function a(){r.call(this)}n(1)(a,r),a.Readable=n(29),a.Writable=n(96),a.Duplex=n(97),a.Transform=n(98),a.PassThrough=n(99),a.Stream=a,a.prototype.pipe=function(e,t){var n=this;function a(t){e.writable&&!1===e.write(t)&&n.pause&&n.pause()}function o(){n.readable&&n.resume&&n.resume()}n.on("data",a),e.on("drain",o),e._isStdio||t&&!1===t.end||(n.on("end",c),n.on("close",s));var i=!1;function c(){i||(i=!0,e.end())}function s(){i||(i=!0,"function"==typeof e.destroy&&e.destroy())}function l(e){if(g(),0===r.listenerCount(this,"error"))throw e}function g(){n.removeListener("data",a),e.removeListener("drain",o),n.removeListener("end",c),n.removeListener("close",s),n.removeListener("error",l),e.removeListener("error",l),n.removeListener("end",g),n.removeListener("close",g),e.removeListener("close",g)}return n.on("error",l),e.on("error",l),n.on("end",g),n.on("close",g),e.on("close",g),e.emit("pipe",n),e}},function(e,t,n){"use strict";function r(e){return(r="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e})(e)}var a,o="object"===("undefined"==typeof Reflect?"undefined":r(Reflect))?Reflect:null,i=o&&"function"==typeof o.apply?o.apply:function(e,t,n){return Function.prototype.apply.call(e,t,n)};a=o&&"function"==typeof o.ownKeys?o.ownKeys:Object.getOwnPropertySymbols?function(e){return Object.getOwnPropertyNames(e).concat(Object.getOwnPropertySymbols(e))}:function(e){return Object.getOwnPropertyNames(e)};var c=Number.isNaN||function(e){return e!=e};function s(){s.init.call(this)}e.exports=s,s.EventEmitter=s,s.prototype._events=void 0,s.prototype._eventsCount=0,s.prototype._maxListeners=void 0;var l=10;function g(e){if("function"!=typeof e)throw new TypeError('The "listener" argument must be of type Function. Received type '+r(e))}function I(e){return void 0===e._maxListeners?s.defaultMaxListeners:e._maxListeners}function B(e,t,n,r){var a,o,i,c;if(g(n),void 0===(o=e._events)?(o=e._events=Object.create(null),e._eventsCount=0):(void 0!==o.newListener&&(e.emit("newListener",t,n.listener?n.listener:n),o=e._events),i=o[t]),void 0===i)i=o[t]=n,++e._eventsCount;else if("function"==typeof i?i=o[t]=r?[n,i]:[i,n]:r?i.unshift(n):i.push(n),(a=I(e))>0&&i.length>a&&!i.warned){i.warned=!0;var s=new Error("Possible EventEmitter memory leak detected. "+i.length+" "+String(t)+" listeners added. Use emitter.setMaxListeners() to increase limit");s.name="MaxListenersExceededWarning",s.emitter=e,s.type=t,s.count=i.length,c=s,console&&console.warn&&console.warn(c)}return e}function A(){if(!this.fired)return this.target.removeListener(this.type,this.wrapFn),this.fired=!0,0===arguments.length?this.listener.call(this.target):this.listener.apply(this.target,arguments)}function u(e,t,n){var r={fired:!1,wrapFn:void 0,target:e,type:t,listener:n},a=A.bind(r);return a.listener=n,r.wrapFn=a,a}function d(e,t,n){var r=e._events;if(void 0===r)return[];var a=r[t];return void 0===a?[]:"function"==typeof a?n?[a.listener||a]:[a]:n?function(e){for(var t=new Array(e.length),n=0;n<t.length;++n)t[n]=e[n].listener||e[n];return t}(a):C(a,a.length)}function _(e){var t=this._events;if(void 0!==t){var n=t[e];if("function"==typeof n)return 1;if(void 0!==n)return n.length}return 0}function C(e,t){for(var n=new Array(t),r=0;r<t;++r)n[r]=e[r];return n}Object.defineProperty(s,"defaultMaxListeners",{enumerable:!0,get:function(){return l},set:function(e){if("number"!=typeof e||e<0||c(e))throw new RangeError('The value of "defaultMaxListeners" is out of range. It must be a non-negative number. Received '+e+".");l=e}}),s.init=function(){void 0!==this._events&&this._events!==Object.getPrototypeOf(this)._events||(this._events=Object.create(null),this._eventsCount=0),this._maxListeners=this._maxListeners||void 0},s.prototype.setMaxListeners=function(e){if("number"!=typeof e||e<0||c(e))throw new RangeError('The value of "n" is out of range. It must be a non-negative number. Received '+e+".");return this._maxListeners=e,this},s.prototype.getMaxListeners=function(){return I(this)},s.prototype.emit=function(e){for(var t=[],n=1;n<arguments.length;n++)t.push(arguments[n]);var r="error"===e,a=this._events;if(void 0!==a)r=r&&void 0===a.error;else if(!r)return!1;if(r){var o;if(t.length>0&&(o=t[0]),o instanceof Error)throw o;var c=new Error("Unhandled error."+(o?" ("+o.message+")":""));throw c.context=o,c}var s=a[e];if(void 0===s)return!1;if("function"==typeof s)i(s,this,t);else{var l=s.length,g=C(s,l);for(n=0;n<l;++n)i(g[n],this,t)}return!0},s.prototype.addListener=function(e,t){return B(this,e,t,!1)},s.prototype.on=s.prototype.addListener,s.prototype.prependListener=function(e,t){return B(this,e,t,!0)},s.prototype.once=function(e,t){return g(t),this.on(e,u(this,e,t)),this},s.prototype.prependOnceListener=function(e,t){return g(t),this.prependListener(e,u(this,e,t)),this},s.prototype.removeListener=function(e,t){var n,r,a,o,i;if(g(t),void 0===(r=this._events))return this;if(void 0===(n=r[e]))return this;if(n===t||n.listener===t)0==--this._eventsCount?this._events=Object.create(null):(delete r[e],r.removeListener&&this.emit("removeListener",e,n.listener||t));else if("function"!=typeof n){for(a=-1,o=n.length-1;o>=0;o--)if(n[o]===t||n[o].listener===t){i=n[o].listener,a=o;break}if(a<0)return this;0===a?n.shift():function(e,t){for(;t+1<e.length;t++)e[t]=e[t+1];e.pop()}(n,a),1===n.length&&(r[e]=n[0]),void 0!==r.removeListener&&this.emit("removeListener",e,i||t)}return this},s.prototype.off=s.prototype.removeListener,s.prototype.removeAllListeners=function(e){var t,n,r;if(void 0===(n=this._events))return this;if(void 0===n.removeListener)return 0===arguments.length?(this._events=Object.create(null),this._eventsCount=0):void 0!==n[e]&&(0==--this._eventsCount?this._events=Object.create(null):delete n[e]),this;if(0===arguments.length){var a,o=Object.keys(n);for(r=0;r<o.length;++r)"removeListener"!==(a=o[r])&&this.removeAllListeners(a);return this.removeAllListeners("removeListener"),this._events=Object.create(null),this._eventsCount=0,this}if("function"==typeof(t=n[e]))this.removeListener(e,t);else if(void 0!==t)for(r=t.length-1;r>=0;r--)this.removeListener(e,t[r]);return this},s.prototype.listeners=function(e){return d(this,e,!0)},s.prototype.rawListeners=function(e){return d(this,e,!1)},s.listenerCount=function(e,t){return"function"==typeof e.listenerCount?e.listenerCount(t):_.call(e,t)},s.prototype.listenerCount=_,s.prototype.eventNames=function(){return this._eventsCount>0?a(this._events):[]}},function(e,t,n){(t=e.exports=n(48)).Stream=t,t.Readable=t,t.Writable=n(30),t.Duplex=n(12),t.Transform=n(51),t.PassThrough=n(95)},function(e,t,n){"use strict";(function(t,r,a){var o=n(21);function i(e){var t=this;this.next=null,this.entry=null,this.finish=function(){!function(e,t,n){var r=e.entry;for(e.entry=null;r;){var a=r.callback;t.pendingcb--,a(void 0),r=r.next}t.corkedRequestsFree?t.corkedRequestsFree.next=e:t.corkedRequestsFree=e}(t,e)}}e.exports=b;var c,s=!t.browser&&["v0.10","v0.9."].indexOf(t.version.slice(0,5))>-1?r:o.nextTick;b.WritableState=C;var l=Object.create(n(16));l.inherits=n(1);var g,I={deprecate:n(94)},B=n(49),A=n(2).Buffer,u=a.Uint8Array||function(){},d=n(50);function _(){}function C(e,t){c=c||n(12),e=e||{};var r=t instanceof c;this.objectMode=!!e.objectMode,r&&(this.objectMode=this.objectMode||!!e.writableObjectMode);var a=e.highWaterMark,l=e.writableHighWaterMark,g=this.objectMode?16:16384;this.highWaterMark=a||0===a?a:r&&(l||0===l)?l:g,this.highWaterMark=Math.floor(this.highWaterMark),this.finalCalled=!1,this.needDrain=!1,this.ending=!1,this.ended=!1,this.finished=!1,this.destroyed=!1;var I=!1===e.decodeStrings;this.decodeStrings=!I,this.defaultEncoding=e.defaultEncoding||"utf8",this.length=0,this.writing=!1,this.corked=0,this.sync=!0,this.bufferProcessing=!1,this.onwrite=function(e){!function(e,t){var n=e._writableState,r=n.sync,a=n.writecb;if(function(e){e.writing=!1,e.writecb=null,e.length-=e.writelen,e.writelen=0}(n),t)!function(e,t,n,r,a){--t.pendingcb,n?(o.nextTick(a,r),o.nextTick(F,e,t),e._writableState.errorEmitted=!0,e.emit("error",r)):(a(r),e._writableState.errorEmitted=!0,e.emit("error",r),F(e,t))}(e,n,r,t,a);else{var i=y(n);i||n.corked||n.bufferProcessing||!n.bufferedRequest||h(e,n),r?s(Q,e,n,i,a):Q(e,n,i,a)}}(t,e)},this.writecb=null,this.writelen=0,this.bufferedRequest=null,this.lastBufferedRequest=null,this.pendingcb=0,this.prefinished=!1,this.errorEmitted=!1,this.bufferedRequestCount=0,this.corkedRequestsFree=new i(this)}function b(e){if(c=c||n(12),!(g.call(b,this)||this instanceof c))return new b(e);this._writableState=new C(e,this),this.writable=!0,e&&("function"==typeof e.write&&(this._write=e.write),"function"==typeof e.writev&&(this._writev=e.writev),"function"==typeof e.destroy&&(this._destroy=e.destroy),"function"==typeof e.final&&(this._final=e.final)),B.call(this)}function p(e,t,n,r,a,o,i){t.writelen=r,t.writecb=i,t.writing=!0,t.sync=!0,n?e._writev(a,t.onwrite):e._write(a,o,t.onwrite),t.sync=!1}function Q(e,t,n,r){n||function(e,t){0===t.length&&t.needDrain&&(t.needDrain=!1,e.emit("drain"))}(e,t),t.pendingcb--,r(),F(e,t)}function h(e,t){t.bufferProcessing=!0;var n=t.bufferedRequest;if(e._writev&&n&&n.next){var r=t.bufferedRequestCount,a=new Array(r),o=t.corkedRequestsFree;o.entry=n;for(var c=0,s=!0;n;)a[c]=n,n.isBuf||(s=!1),n=n.next,c+=1;a.allBuffers=s,p(e,t,!0,t.length,a,"",o.finish),t.pendingcb++,t.lastBufferedRequest=null,o.next?(t.corkedRequestsFree=o.next,o.next=null):t.corkedRequestsFree=new i(t),t.bufferedRequestCount=0}else{for(;n;){var l=n.chunk,g=n.encoding,I=n.callback;if(p(e,t,!1,t.objectMode?1:l.length,l,g,I),n=n.next,t.bufferedRequestCount--,t.writing)break}null===n&&(t.lastBufferedRequest=null)}t.bufferedRequest=n,t.bufferProcessing=!1}function y(e){return e.ending&&0===e.length&&null===e.bufferedRequest&&!e.finished&&!e.writing}function m(e,t){e._final((function(n){t.pendingcb--,n&&e.emit("error",n),t.prefinished=!0,e.emit("prefinish"),F(e,t)}))}function F(e,t){var n=y(t);return n&&(function(e,t){t.prefinished||t.finalCalled||("function"==typeof e._final?(t.pendingcb++,t.finalCalled=!0,o.nextTick(m,e,t)):(t.prefinished=!0,e.emit("prefinish")))}(e,t),0===t.pendingcb&&(t.finished=!0,e.emit("finish"))),n}l.inherits(b,B),C.prototype.getBuffer=function(){for(var e=this.bufferedRequest,t=[];e;)t.push(e),e=e.next;return t},function(){try{Object.defineProperty(C.prototype,"buffer",{get:I.deprecate((function(){return this.getBuffer()}),"_writableState.buffer is deprecated. Use _writableState.getBuffer instead.","DEP0003")})}catch(e){}}(),"function"==typeof Symbol&&Symbol.hasInstance&&"function"==typeof Function.prototype[Symbol.hasInstance]?(g=Function.prototype[Symbol.hasInstance],Object.defineProperty(b,Symbol.hasInstance,{value:function(e){return!!g.call(this,e)||this===b&&e&&e._writableState instanceof C}})):g=function(e){return e instanceof this},b.prototype.pipe=function(){this.emit("error",new Error("Cannot pipe, not readable"))},b.prototype.write=function(e,t,n){var r,a=this._writableState,i=!1,c=!a.objectMode&&(r=e,A.isBuffer(r)||r instanceof u);return c&&!A.isBuffer(e)&&(e=function(e){return A.from(e)}(e)),"function"==typeof t&&(n=t,t=null),c?t="buffer":t||(t=a.defaultEncoding),"function"!=typeof n&&(n=_),a.ended?function(e,t){var n=new Error("write after end");e.emit("error",n),o.nextTick(t,n)}(this,n):(c||function(e,t,n,r){var a=!0,i=!1;return null===n?i=new TypeError("May not write null values to stream"):"string"==typeof n||void 0===n||t.objectMode||(i=new TypeError("Invalid non-string/buffer chunk")),i&&(e.emit("error",i),o.nextTick(r,i),a=!1),a}(this,a,e,n))&&(a.pendingcb++,i=function(e,t,n,r,a,o){if(!n){var i=function(e,t,n){return e.objectMode||!1===e.decodeStrings||"string"!=typeof t||(t=A.from(t,n)),t}(t,r,a);r!==i&&(n=!0,a="buffer",r=i)}var c=t.objectMode?1:r.length;t.length+=c;var s=t.length<t.highWaterMark;if(s||(t.needDrain=!0),t.writing||t.corked){var l=t.lastBufferedRequest;t.lastBufferedRequest={chunk:r,encoding:a,isBuf:n,callback:o,next:null},l?l.next=t.lastBufferedRequest:t.bufferedRequest=t.lastBufferedRequest,t.bufferedRequestCount+=1}else p(e,t,!1,c,r,a,o);return s}(this,a,c,e,t,n)),i},b.prototype.cork=function(){this._writableState.corked++},b.prototype.uncork=function(){var e=this._writableState;e.corked&&(e.corked--,e.writing||e.corked||e.finished||e.bufferProcessing||!e.bufferedRequest||h(this,e))},b.prototype.setDefaultEncoding=function(e){if("string"==typeof e&&(e=e.toLowerCase()),!(["hex","utf8","utf-8","ascii","binary","base64","ucs2","ucs-2","utf16le","utf-16le","raw"].indexOf((e+"").toLowerCase())>-1))throw new TypeError("Unknown encoding: "+e);return this._writableState.defaultEncoding=e,this},Object.defineProperty(b.prototype,"writableHighWaterMark",{enumerable:!1,get:function(){return this._writableState.highWaterMark}}),b.prototype._write=function(e,t,n){n(new Error("_write() is not implemented"))},b.prototype._writev=null,b.prototype.end=function(e,t,n){var r=this._writableState;"function"==typeof e?(n=e,e=null,t=null):"function"==typeof t&&(n=t,t=null),null!=e&&this.write(e,t),r.corked&&(r.corked=1,this.uncork()),r.ending||r.finished||function(e,t,n){t.ending=!0,F(e,t),n&&(t.finished?o.nextTick(n):e.once("finish",n)),t.ended=!0,e.writable=!1}(this,r,n)},Object.defineProperty(b.prototype,"destroyed",{get:function(){return void 0!==this._writableState&&this._writableState.destroyed},set:function(e){this._writableState&&(this._writableState.destroyed=e)}}),b.prototype.destroy=d.destroy,b.prototype._undestroy=d.undestroy,b.prototype._destroy=function(e,t){this.end(),t(e)}}).call(this,n(9),n(92).setImmediate,n(8))},function(e,t,n){"use strict";var r=n(2).Buffer,a=r.isEncoding||function(e){switch((e=""+e)&&e.toLowerCase()){case"hex":case"utf8":case"utf-8":case"ascii":case"binary":case"base64":case"ucs2":case"ucs-2":case"utf16le":case"utf-16le":case"raw":return!0;default:return!1}};function o(e){var t;switch(this.encoding=function(e){var t=function(e){if(!e)return"utf8";for(var t;;)switch(e){case"utf8":case"utf-8":return"utf8";case"ucs2":case"ucs-2":case"utf16le":case"utf-16le":return"utf16le";case"latin1":case"binary":return"latin1";case"base64":case"ascii":case"hex":return e;default:if(t)return;e=(""+e).toLowerCase(),t=!0}}(e);if("string"!=typeof t&&(r.isEncoding===a||!a(e)))throw new Error("Unknown encoding: "+e);return t||e}(e),this.encoding){case"utf16le":this.text=s,this.end=l,t=4;break;case"utf8":this.fillLast=c,t=4;break;case"base64":this.text=g,this.end=I,t=3;break;default:return this.write=B,void(this.end=A)}this.lastNeed=0,this.lastTotal=0,this.lastChar=r.allocUnsafe(t)}function i(e){return e<=127?0:e>>5==6?2:e>>4==14?3:e>>3==30?4:e>>6==2?-1:-2}function c(e){var t=this.lastTotal-this.lastNeed,n=function(e,t,n){if(128!=(192&t[0]))return e.lastNeed=0,"<22>";if(e.lastNeed>1&&t.length>1){if(128!=(192&t[1]))return e.lastNeed=1,"<22>";if(e.lastNeed>2&&t.length>2&&128!=(192&t[2]))return e.lastNeed=2,"<22>"}}(this,e);return void 0!==n?n:this.lastNeed<=e.length?(e.copy(this.lastChar,t,0,this.lastNeed),this.lastChar.toString(this.encoding,0,this.lastTotal)):(e.copy(this.lastChar,t,0,e.length),void(this.lastNeed-=e.length))}function s(e,t){if((e.length-t)%2==0){var n=e.toString("utf16le",t);if(n){var r=n.charCodeAt(n.length-1);if(r>=55296&&r<=56319)return this.lastNeed=2,this.lastTotal=4,this.lastChar[0]=e[e.length-2],this.lastChar[1]=e[e.length-1],n.slice(0,-1)}return n}return this.lastNeed=1,this.lastTotal=2,this.lastChar[0]=e[e.length-1],e.toString("utf16le",t,e.length-1)}function l(e){var t=e&&e.length?this.write(e):"";if(this.lastNeed){var n=this.lastTotal-this.lastNeed;return t+this.lastChar.toString("utf16le",0,n)}return t}function g(e,t){var n=(e.length-t)%3;return 0===n?e.toString("base64",t):(this.lastNeed=3-n,this.lastTotal=3,1===n?this.lastChar[0]=e[e.length-1]:(this.lastChar[0]=e[e.length-2],this.lastChar[1]=e[e.length-1]),e.toString("base64",t,e.length-n))}function I(e){var t=e&&e.length?this.write(e):"";return this.lastNeed?t+this.lastChar.toString("base64",0,3-this.lastNeed):t}function B(e){return e.toString(this.encoding)}function A(e){return e&&e.length?this.write(e):""}t.StringDecoder=o,o.prototype.write=function(e){if(0===e.length)return"";var t,n;if(this.lastNeed){if(void 0===(t=this.fillLast(e)))return"";n=this.lastNeed,this.lastNeed=0}else n=0;return n<e.length?t?t+this.text(e,n):this.text(e,n):t||""},o.prototype.end=function(e){var t=e&&e.length?this.write(e):"";return this.lastNeed?t+"<22>":t},o.prototype.text=function(e,t){var n=function(e,t,n){var r=t.length-1;if(r<n)return 0;var a=i(t[r]);return a>=0?(a>0&&(e.lastNeed=a-1),a):--r<n||-2===a?0:(a=i(t[r]))>=0?(a>0&&(e.lastNeed=a-2),a):--r<n||-2===a?0:(a=i(t[r]))>=0?(a>0&&(2===a?a=0:e.lastNeed=a-3),a):0}(this,e,t);if(!this.lastNeed)return e.toString("utf8",t);this.lastTotal=n;var r=e.length-(n-this.lastNeed);return e.copy(this.lastChar,0,r),e.toString("utf8",t,r)},o.prototype.fillLast=function(e){if(this.lastNeed<=e.length)return e.copy(this.lastChar,this.lastTotal-this.lastNeed,0,this.lastNeed),this.lastChar.toString(this.encoding,0,this.lastTotal);e.copy(this.lastChar,this.lastTotal-this.lastNeed,0,e.length),this.lastNeed-=e.length}},function(e,t,n){"use strict";var r=n(3).Buffer,a=n(1),o=n(47),i=new Array(16),c=[0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,7,4,13,1,10,6,15,3,12,0,9,5,2,14,11,8,3,10,14,4,9,15,8,1,2,7,0,6,13,11,5,12,1,9,11,10,0,8,12,4,13,3,7,15,14,5,6,2,4,0,5,9,7,12,2,10,14,1,3,8,11,6,15,13],s=[5,14,7,0,9,2,11,4,13,6,15,8,1,10,3,12,6,11,3,7,0,13,5,10,14,15,8,12,4,9,1,2,15,5,1,3,7,14,6,9,11,8,12,2,10,0,4,13,8,6,4,1,3,11,15,0,5,12,2,13,9,7,10,14,12,15,10,4,1,5,8,7,6,2,13,14,0,3,9,11],l=[11,14,15,12,5,8,7,9,11,13,14,15,6,7,9,8,7,6,8,13,11,9,7,15,7,12,15,9,11,7,13,12,11,13,6,7,14,9,13,15,14,8,13,6,5,12,7,5,11,12,14,15,14,15,9,8,9,14,5,6,8,6,5,12,9,15,5,11,6,8,13,12,5,12,13,14,11,8,5,6],g=[8,9,9,11,13,15,15,5,7,7,8,11,14,14,12,6,9,13,15,7,12,8,9,11,7,7,12,7,6,15,13,11,9,7,15,11,8,6,6,14,12,13,5,14,13,13,7,5,15,5,8,11,14,14,6,14,6,9,12,9,12,5,15,8,8,5,12,9,12,5,14,6,8,13,6,5,15,13,11,11],I=[0,1518500249,1859775393,2400959708,2840853838],B=[1352829926,1548603684,1836072691,2053994217,0];function A(){o.call(this,64),this._a=1732584193,this._b=4023233417,this._c=2562383102,this._d=271733878,this._e=3285377520}function u(e,t){return e<<t|e>>>32-t}function d(e,t,n,r,a,o,i,c){return u(e+(t^n^r)+o+i|0,c)+a|0}function _(e,t,n,r,a,o,i,c){return u(e+(t&n|~t&r)+o+i|0,c)+a|0}function C(e,t,n,r,a,o,i,c){return u(e+((t|~n)^r)+o+i|0,c)+a|0}function b(e,t,n,r,a,o,i,c){return u(e+(t&r|n&~r)+o+i|0,c)+a|0}function p(e,t,n,r,a,o,i,c){return u(e+(t^(n|~r))+o+i|0,c)+a|0}a(A,o),A.prototype._update=function(){for(var e=i,t=0;t<16;++t)e[t]=this._block.readInt32LE(4*t);for(var n=0|this._a,r=0|this._b,a=0|this._c,o=0|this._d,A=0|this._e,Q=0|this._a,h=0|this._b,y=0|this._c,m=0|this._d,F=0|this._e,U=0;U<80;U+=1){var f,G;U<16?(f=d(n,r,a,o,A,e[c[U]],I[0],l[U]),G=p(Q,h,y,m,F,e[s[U]],B[0],g[U])):U<32?(f=_(n,r,a,o,A,e[c[U]],I[1],l[U]),G=b(Q,h,y,m,F,e[s[U]],B[1],g[U])):U<48?(f=C(n,r,a,o,A,e[c[U]],I[2],l[U]),G=C(Q,h,y,m,F,e[s[U]],B[2],g[U])):U<64?(f=b(n,r,a,o,A,e[c[U]],I[3],l[U]),G=_(Q,h,y,m,F,e[s[U]],B[3],g[U])):(f=p(n,r,a,o,A,e[c[U]],I[4],l[U]),G=d(Q,h,y,m,F,e[s[U]],B[4],g[U])),n=A,A=o,o=u(a,10),a=r,r=f,Q=F,F=m,m=u(y,10),y=h,h=G}var E=this._b+a+m|0;this._b=this._c+o+F|0,this._c=this._d+A+Q|0,this._d=this._e+n+h|0,this._e=this._a+r+y|0,this._a=E},A.prototype._digest=function(){this._block[this._blockOffset++]=128,this._blockOffset>56&&(this._block.fill(0,this._blockOffset,64),this._update(),this._blockOffset=0),this._block.fill(0,this._blockOffset,56),this._block.writeUInt32LE(this._length[0],56),this._block.writeUInt32LE(this._length[1],60),this._update();var e=r.alloc?r.alloc(20):new r(20);return e.writeInt32LE(this._a,0),e.writeInt32LE(this._b,4),e.writeInt32LE(this._c,8),e.writeInt32LE(this._d,12),e.writeInt32LE(this._e,16),e},e.exports=A},function(e,t,n){(t=e.exports=function(e){e=e.toLowerCase();var n=t[e];if(!n)throw new Error(e+" is not supported (we accept pull requests)");return new n}).sha=n(100),t.sha1=n(101),t.sha224=n(102),t.sha256=n(52),t.sha384=n(103),t.sha512=n(53)},function(e,t,n){"use strict";var r=n(6);function a(e){this.options=e,this.type=this.options.type,this.blockSize=8,this._init(),this.buffer=new Array(this.blockSize),this.bufferOff=0}e.exports=a,a.prototype._init=function(){},a.prototype.update=function(e){return 0===e.length?[]:"decrypt"===this.type?this._updateDecrypt(e):this._updateEncrypt(e)},a.prototype._buffer=function(e,t){for(var n=Math.min(this.buffer.length-this.bufferOff,e.length-t),r=0;r<n;r++)this.buffer[this.bufferOff+r]=e[t+r];return this.bufferOff+=n,n},a.prototype._flushBuffer=function(e,t){return this._update(this.buffer,0,e,t),this.bufferOff=0,this.blockSize},a.prototype._updateEncrypt=function(e){var t=0,n=0,r=(this.bufferOff+e.length)/this.blockSize|0,a=new Array(r*this.blockSize);0!==this.bufferOff&&(t+=this._buffer(e,t),this.bufferOff===this.buffer.length&&(n+=this._flushBuffer(a,n)));for(var o=e.length-(e.length-t)%this.blockSize;t<o;t+=this.blockSize)this._update(e,t,a,n),n+=this.blockSize;for(;t<e.length;t++,this.bufferOff++)this.buffer[this.bufferOff]=e[t];return a},a.prototype._updateDecrypt=function(e){for(var t=0,n=0,r=Math.ceil((this.bufferOff+e.length)/this.blockSize)-1,a=new Array(r*this.blockSize);r>0;r--)t+=this._buffer(e,t),n+=this._flushBuffer(a,n);return t+=this._buffer(e,t),a},a.prototype.final=function(e){var t,n;return e&&(t=this.update(e)),n="encrypt"===this.type?this._finalEncrypt():this._finalDecrypt(),t?t.concat(n):n},a.prototype._pad=function(e,t){if(0===t)return!1;for(;t<e.length;)e[t++]=0;return!0},a.prototype._finalEncrypt=function(){if(!this._pad(this.buffer,this.bufferOff))return[];var e=new Array(this.blockSize);return this._update(this.buffer,0,e,0),e},a.prototype._unpad=function(e){return e},a.prototype._finalDecrypt=function(){r.equal(this.bufferOff,this.blockSize,"Not enough data to decrypt");var e=new Array(this.blockSize);return this._flushBuffer(e,0),this._unpad(e)}},function(e,t,n){var r=n(112),a=n(120),o=n(65);t.createCipher=t.Cipher=r.createCipher,t.createCipheriv=t.Cipheriv=r.createCipheriv,t.createDecipher=t.Decipher=a.createDecipher,t.createDecipheriv=t.Decipheriv=a.createDecipheriv,t.listCiphers=t.getCiphers=function(){return Object.keys(o)}},function(e,t,n){var r={ECB:n(113),CBC:n(114),CFB:n(115),CFB8:n(116),CFB1:n(117),OFB:n(118),CTR:n(63),GCM:n(63)},a=n(65);for(var o in a)a[o].module=r[a[o].mode];e.exports=a},function(e,t,n){function r(e){return(r="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e})(e)}var a;function o(e){this.rand=e}if(e.exports=function(e){return a||(a=new o(null)),a.generate(e)},e.exports.Rand=o,o.prototype.generate=function(e){return this._rand(e)},o.prototype._rand=function(e){if(this.rand.getBytes)return this.rand.getBytes(e);for(var t=new Uint8Array(e),n=0;n<t.length;n++)t[n]=this.rand.getByte();return t},"object"===("undefined"==typeof self?"undefined":r(self)))self.crypto&&self.crypto.getRandomValues?o.prototype._rand=function(e){var t=new Uint8Array(e);return self.crypto.getRandomValues(t),t}:self.msCrypto&&self.msCrypto.getRandomValues?o.prototype._rand=function(e){var t=new Uint8Array(e);return self.msCrypto.getRandomValues(t),t}:"object"===("undefined"==typeof window?"undefined":r(window))&&(o.prototype._rand=function(){throw new Error("Not implemented yet")});else try{var i=n(124);if("function"!=typeof i.randomBytes)throw new Error("Not supported");o.prototype._rand=function(e){return i.randomBytes(e)}}catch(e){}},function(e,t,n){(function(t){var r=n(4),a=n(13);function o(e,n){var a=function(e){var t=i(e);return{blinder:t.toRed(r.mont(e.modulus)).redPow(new r(e.publicExponent)).fromRed(),unblinder:t.invm(e.modulus)}}(n),o=n.modulus.byteLength(),c=(r.mont(n.modulus),new r(e).mul(a.blinder).umod(n.modulus)),s=c.toRed(r.mont(n.prime1)),l=c.toRed(r.mont(n.prime2)),g=n.coefficient,I=n.prime1,B=n.prime2,A=s.redPow(n.exponent1),u=l.redPow(n.exponent2);A=A.fromRed(),u=u.fromRed();var d=A.isub(u).imul(g).umod(I);return d.imul(B),u.iadd(d),new t(u.imul(a.unblinder).umod(n.modulus).toArray(!1,o))}function i(e){for(var t=e.modulus.byteLength(),n=new r(a(t));n.cmp(e.modulus)>=0||!n.umod(e.prime1)||!n.umod(e.prime2);)n=new r(a(t));return n}e.exports=o,o.getr=i}).call(this,n(3).Buffer)},function(e,t,n){"use strict";var r=t;r.version=n(129).version,r.utils=n(7),r.rand=n(37),r.curve=n(71),r.curves=n(40),r.ec=n(140),r.eddsa=n(144)},function(e,t,n){"use strict";var r,a=t,o=n(41),i=n(71),c=n(7).assert;function s(e){"short"===e.type?this.curve=new i.short(e):"edwards"===e.type?this.curve=new i.edwards(e):this.curve=new i.mont(e),this.g=this.curve.g,this.n=this.curve.n,this.hash=e.hash,c(this.g.validate(),"Invalid curve"),c(this.g.mul(this.n).isInfinity(),"Invalid curve, G*N != O")}function l(e,t){Object.defineProperty(a,e,{configurable:!0,enumerable:!0,get:function(){var n=new s(t);return Object.defineProperty(a,e,{configurable:!0,enumerable:!0,value:n}),n}})}a.PresetCurve=s,l("p192",{type:"short",prime:"p192",p:"ffffffff ffffffff ffffffff fffffffe ffffffff ffffffff",a:"ffffffff ffffffff ffffffff fffffffe ffffffff fffffffc",b:"64210519 e59c80e7 0fa7e9ab 72243049 feb8deec c146b9b1",n:"ffffffff ffffffff ffffffff 99def836 146bc9b1 b4d22831",hash:o.sha256,gRed:!1,g:["188da80e b03090f6 7cbf20eb 43a18800 f4ff0afd 82ff1012","07192b95 ffc8da78 631011ed 6b24cdd5 73f977a1 1e794811"]}),l("p224",{type:"short",prime:"p224",p:"ffffffff ffffffff ffffffff ffffffff 00000000 00000000 00000001",a:"ffffffff ffffffff ffffffff fffffffe ffffffff ffffffff fffffffe",b:"b4050a85 0c04b3ab f5413256 5044b0b7 d7bfd8ba 270b3943 2355ffb4",n:"ffffffff ffffffff ffffffff ffff16a2 e0b8f03e 13dd2945 5c5c2a3d",hash:o.sha256,gRed:!1,g:["b70e0cbd 6bb4bf7f 321390b9 4a03c1d3 56c21122 343280d6 115c1d21","bd376388 b5f723fb 4c22dfe6 cd4375a0 5a074764 44d58199 85007e34"]}),l("p256",{type:"short",prime:null,p:"ffffffff 00000001 00000000 00000000 00000000 ffffffff ffffffff ffffffff",a:"ffffffff 00000001 00000000 00000000 00000000 ffffffff ffffffff fffffffc",b:"5ac635d8 aa3a93e7 b3ebbd55 769886bc 651d06b0 cc53b0f6 3bce3c3e 27d2604b",n:"ffffffff 00000000 ffffffff ffffffff bce6faad a7179e84 f3b9cac2 fc632551",hash:o.sha256,gRed:!1,g:["6b17d1f2 e12c4247 f8bce6e5 63a440f2 77037d81 2deb33a0 f4a13945 d898c296","4fe342e2 fe1a7f9b 8ee7eb4a 7c0f9e16 2bce3357 6b315ece cbb64068 37bf51f5"]}),l("p384",{type:"short",prime:null,p:"ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff fffffffe ffffffff 00000000 00000000 ffffffff",a:"ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff fffffffe ffffffff 00000000 00000000 fffffffc",b:"b3312fa7 e23ee7e4 988e056b e3f82d19 181d9c6e fe814112 0314088f 5013875a c656398d 8a2ed19d 2a85c8ed d3ec2aef",n:"ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff c7634d81 f4372ddf 581a0db2 48b0a77a ecec196a ccc52973",hash:o.sha384,gRed:!1,g:["aa87ca22 be8b0537 8eb1c71e f320ad74 6e1d3b62 8ba79b98 59f741e0 82542a38 5502f25d bf55296c 3a545e38 72760ab7","3617de4a 96262c6f 5d9e98bf 9292dc29 f8f41dbd 289a147c e9da3113 b5f0b8c0 0a60b1ce 1d7e819d 7a431d7c 90ea0e5f"]}),l("p521",{type:"short",prime:null,p:"000001ff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff",a:"000001ff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff fffffffc",b:"00000051 953eb961 8e1c9a1f 929a21a0 b68540ee a2da725b 99b315f3 b8b48991 8ef109e1 56193951 ec7e937b 1652c0bd 3bb1bf07 3573df88 3d2c34f1 ef451fd4 6b503f00",n:"000001ff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff fffffffa 51868783 bf2f966b 7fcc0148 f709a5d0 3bb5c9b8 899c47ae bb6fb71e 91386409",hash:o.sha512,gRed:!1,g:["000000c6 858e06b7 0404e9cd 9e3ecb66 2395b442 9c648139 053fb521 f828af60 6b4d3dba a14b5e77 efe75928 fe1dc127 a2ffa8de 3348b3c1 856a429b f97e7e31 c2e5bd66","00000118 39296a78 9a3bc004 5c8a5fb4 2c7d1bd9 98f54449 579b4468 17afbd17 273e662c 97ee7299 5ef42640 c550b901 3fad0761 353c7086 a272c240 88be9476 9fd16650"]}),l("curve25519",{type:"mont",prime:"p25519",p:"7fffffffffffffff ffffffffffffffff ffffffffffffffff ffffffffffffffed",a:"76d06",b:"1",n:"1000000000000000 0000000000000000 14def9dea2f79cd6 5812631a5cf5d3ed",hash:o.sha256,gRed:!1,g:["9"]}),l("ed25519",{type:"edwards",prime:"p25519",p:"7fffffffffffffff ffffffffffffffff ffffffffffffffff ffffffffffffffed",a:"-1",c:"1",d:"52036cee2b6ffe73 8cc740797779e898 00700a4d4141d8ab 75eb4dca135978a3",n:"1000000000000000 0000000000000000 14def9dea2f79cd6 5812631a5cf5d3ed",hash:o.sha256,gRed:!1,g:["216936d3cd6e53fec0a4e231fdd6dc5c692cc7609525a7b2c9562d608f25d51a","6666666666666666666666666666666666666666666666666666666666666658"]});try{r=n(139)}catch(e){r=void 0}l("secp256k1",{type:"short",prime:"k256",p:"ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff fffffffe fffffc2f",a:"0",b:"7",n:"ffffffff ffffffff ffffffff fffffffe baaedce6 af48a03b bfd25e8c d0364141",h:"1",hash:o.sha256,beta:"7ae96a2b657c07106e64479eac3434e99cf0497512f58995c1396c28719501ee",lambda:"5363ad4cc05c30e0a5261c028812645a122e22ea20816678df02967c1b23bd72",basis:[{a:"3086d221a7d46bcde86c90e49284eb15",b:"-e4437ed6010e88286f547fa90abfe4c3"},{a:"114ca50f7a8e2f3f657c1108d9d44cfd8",b:"3086d221a7d46bcde86c90e49284eb15"}],gRed:!1,g:["79be667ef9dcbbac55a06295ce870b07029bfcdb2dce28d959f2815b16f81798","483ada7726a3c4655da4fbfc0e1108a8fd17b448a68554199c47d08ffb10d4b8",r]})},function(e,t,n){var r=t;r.utils=n(10),r.common=n(18),r.sha=n(133),r.ripemd=n(137),r.hmac=n(138),r.sha1=r.sha.sha1,r.sha256=r.sha.sha256,r.sha224=r.sha.sha224,r.sha384=r.sha.sha384,r.sha512=r.sha.sha512,r.ripemd160=r.ripemd.ripemd160},function(e,t){e.exports=function(e){return e.webpackPolyfill||(e.deprecate=function(){},e.paths=[],e.children||(e.children=[]),Object.defineProperty(e,"loaded",{enumerable:!0,get:function(){return e.l}}),Object.defineProperty(e,"id",{enumerable:!0,get:function(){return e.i}}),e.webpackPolyfill=1),e}},function(e,t){var n={}.toString;e.exports=Array.isArray||function(e){return"[object Array]"==n.call(e)}},function(e,t){},function(e,t,n){(function(e){function n(e,t){for(var n=0,r=e.length-1;r>=0;r--){var a=e[r];"."===a?e.splice(r,1):".."===a?(e.splice(r,1),n++):n&&(e.splice(r,1),n--)}if(t)for(;n--;n)e.unshift("..");return e}function r(e,t){if(e.filter)return e.filter(t);for(var n=[],r=0;r<e.length;r++)t(e[r],r,e)&&n.push(e[r]);return n}t.resolve=function(){for(var t="",a=!1,o=arguments.length-1;o>=-1&&!a;o--){var i=o>=0?arguments[o]:e.cwd();if("string"!=typeof i)throw new TypeError("Arguments to path.resolve must be strings");i&&(t=i+"/"+t,a="/"===i.charAt(0))}return(a?"/":"")+(t=n(r(t.split("/"),(function(e){return!!e})),!a).join("/"))||"."},t.normalize=function(e){var o=t.isAbsolute(e),i="/"===a(e,-1);return(e=n(r(e.split("/"),(function(e){return!!e})),!o).join("/"))||o||(e="."),e&&i&&(e+="/"),(o?"/":"")+e},t.isAbsolute=function(e){return"/"===e.charAt(0)},t.join=function(){var e=Array.prototype.slice.call(arguments,0);return t.normalize(r(e,(function(e,t){if("string"!=typeof e)throw new TypeError("Arguments to path.join must be strings");return e})).join("/"))},t.relative=function(e,n){function r(e){for(var t=0;t<e.length&&""===e[t];t++);for(var n=e.length-1;n>=0&&""===e[n];n--);return t>n?[]:e.slice(t,n-t+1)}e=t.resolve(e).substr(1),n=t.resolve(n).substr(1);for(var a=r(e.split("/")),o=r(n.split("/")),i=Math.min(a.length,o.length),c=i,s=0;s<i;s++)if(a[s]!==o[s]){c=s;break}var l=[];for(s=c;s<a.length;s++)l.push("..");return(l=l.concat(o.slice(c))).join("/")},t.sep="/",t.delimiter=":",t.dirname=function(e){if("string"!=typeof e&&(e+=""),0===e.length)return".";for(var t=e.charCodeAt(0),n=47===t,r=-1,a=!0,o=e.length-1;o>=1;--o)if(47===(t=e.charCodeAt(o))){if(!a){r=o;break}}else a=!1;return-1===r?n?"/":".":n&&1===r?"/":e.slice(0,r)},t.basename=function(e,t){var n=function(e){"string"!=typeof e&&(e+="");var t,n=0,r=-1,a=!0;for(t=e.length-1;t>=0;--t)if(47===e.charCodeAt(t)){if(!a){n=t+1;break}}else-1===r&&(a=!1,r=t+1);return-1===r?"":e.slice(n,r)}(e);return t&&n.substr(-1*t.length)===t&&(n=n.substr(0,n.length-t.length)),n},t.extname=function(e){"string"!=typeof e&&(e+="");for(var t=-1,n=0,r=-1,a=!0,o=0,i=e.length-1;i>=0;--i){var c=e.charCodeAt(i);if(47!==c)-1===r&&(a=!1,r=i+1),46===c?-1===t?t=i:1!==o&&(o=1):-1!==t&&(o=-1);else if(!a){n=i+1;break}}return-1===t||-1===r||0===o||1===o&&t===r-1&&t===n+1?"":e.slice(t,r)};var a="b"==="ab".substr(-1)?function(e,t,n){return e.substr(t,n)}:function(e,t,n){return t<0&&(t=e.length+t),e.substr(t,n)}}).call(this,n(9))},function(e,t,n){"use strict";t.randomBytes=t.rng=t.pseudoRandomBytes=t.prng=n(13),t.createHash=t.Hash=n(15),t.createHmac=t.Hmac=n(54);var r=n(105),a=Object.keys(r),o=["sha1","sha224","sha256","sha384","sha512","md5","rmd160"].concat(a);t.getHashes=function(){return o};var i=n(57);t.pbkdf2=i.pbkdf2,t.pbkdf2Sync=i.pbkdf2Sync;var c=n(107);t.Cipher=c.Cipher,t.createCipher=c.createCipher,t.Cipheriv=c.Cipheriv,t.createCipheriv=c.createCipheriv,t.Decipher=c.Decipher,t.createDecipher=c.createDecipher,t.Decipheriv=c.Decipheriv,t.createDecipheriv=c.createDecipheriv,t.getCiphers=c.getCiphers,t.listCiphers=c.listCiphers;var s=n(122);t.DiffieHellmanGroup=s.DiffieHellmanGroup,t.createDiffieHellmanGroup=s.createDiffieHellmanGroup,t.getDiffieHellman=s.getDiffieHellman,t.createDiffieHellman=s.createDiffieHellman,t.DiffieHellman=s.DiffieHellman;var l=n(127);t.createSign=l.createSign,t.Sign=l.Sign,t.createVerify=l.createVerify,t.Verify=l.Verify,t.createECDH=n(161);var g=n(162);t.publicEncrypt=g.publicEncrypt,t.privateEncrypt=g.privateEncrypt,t.publicDecrypt=g.publicDecrypt,t.privateDecrypt=g.privateDecrypt;var I=n(165);t.randomFill=I.randomFill,t.randomFillSync=I.randomFillSync,t.createCredentials=function(){throw new Error(["sorry, createCredentials is not implemented yet","we accept pull requests","https://github.com/crypto-browserify/crypto-browserify"].join("\n"))},t.constants={DH_CHECK_P_NOT_SAFE_PRIME:2,DH_CHECK_P_NOT_PRIME:1,DH_UNABLE_TO_CHECK_GENERATOR:4,DH_NOT_SUITABLE_GENERATOR:8,NPN_ENABLED:1,ALPN_ENABLED:1,RSA_PKCS1_PADDING:1,RSA_SSLV23_PADDING:2,RSA_NO_PADDING:3,RSA_PKCS1_OAEP_PADDING:4,RSA_X931_PADDING:5,RSA_PKCS1_PSS_PADDING:6,POINT_CONVERSION_COMPRESSED:2,POINT_CONVERSION_UNCOMPRESSED:4,POINT_CONVERSION_HYBRID:6}},function(e,t,n){"use strict";var r=n(2).Buffer,a=n(27).Transform;function o(e){a.call(this),this._block=r.allocUnsafe(e),this._blockSize=e,this._blockOffset=0,this._length=[0,0,0,0],this._finalized=!1}n(1)(o,a),o.prototype._transform=function(e,t,n){var r=null;try{this.update(e,t)}catch(e){r=e}n(r)},o.prototype._flush=function(e){var t=null;try{this.push(this.digest())}catch(e){t=e}e(t)},o.prototype.update=function(e,t){if(function(e,t){if(!r.isBuffer(e)&&"string"!=typeof e)throw new TypeError("Data must be a string or a buffer")}(e),this._finalized)throw new Error("Digest already called");r.isBuffer(e)||(e=r.from(e,t));for(var n=this._block,a=0;this._blockOffset+e.length-a>=this._blockSize;){for(var o=this._blockOffset;o<this._blockSize;)n[o++]=e[a++];this._update(),this._blockOffset=0}for(;a<e.length;)n[this._blockOffset++]=e[a++];for(var i=0,c=8*e.length;c>0;++i)this._length[i]+=c,(c=this._length[i]/4294967296|0)>0&&(this._length[i]-=4294967296*c);return this},o.prototype._update=function(){throw new Error("_update is not implemented")},o.prototype.digest=function(e){if(this._finalized)throw new Error("Digest already called");this._finalized=!0;var t=this._digest();void 0!==e&&(t=t.toString(e)),this._block.fill(0),this._blockOffset=0;for(var n=0;n<4;++n)this._length[n]=0;return t},o.prototype._digest=function(){throw new Error("_digest is not implemented")},e.exports=o},function(e,t,n){"use strict";(function(t,r){var a=n(21);e.exports=p;var o,i=n(43);p.ReadableState=b,n(28).EventEmitter;var c=function(e,t){return e.listeners(t).length},s=n(49),l=n(2).Buffer,g=t.Uint8Array||function(){},I=Object.create(n(16));I.inherits=n(1);var B=n(89),A=void 0;A=B&&B.debuglog?B.debuglog("stream"):function(){};var u,d=n(90),_=n(50);I.inherits(p,s);var C=["error","close","destroy","pause","resume"];function b(e,t){e=e||{};var r=t instanceof(o=o||n(12));this.objectMode=!!e.objectMode,r&&(this.objectMode=this.objectMode||!!e.readableObjectMode);var a=e.highWaterMark,i=e.readableHighWaterMark,c=this.objectMode?16:16384;this.highWaterMark=a||0===a?a:r&&(i||0===i)?i:c,this.highWaterMark=Math.floor(this.highWaterMark),this.buffer=new d,this.length=0,this.pipes=null,this.pipesCount=0,this.flowing=null,this.ended=!1,this.endEmitted=!1,this.reading=!1,this.sync=!0,this.needReadable=!1,this.emittedReadable=!1,this.readableListening=!1,this.resumeScheduled=!1,this.destroyed=!1,this.defaultEncoding=e.defaultEncoding||"utf8",this.awaitDrain=0,this.readingMore=!1,this.decoder=null,this.encoding=null,e.encoding&&(u||(u=n(31).StringDecoder),this.decoder=new u(e.encoding),this.encoding=e.encoding)}function p(e){if(o=o||n(12),!(this instanceof p))return new p(e);this._readableState=new b(e,this),this.readable=!0,e&&("function"==typeof e.read&&(this._read=e.read),"function"==typeof e.destroy&&(this._destroy=e.destroy)),s.call(this)}function Q(e,t,n,r,a){var o,i=e._readableState;return null===t?(i.reading=!1,function(e,t){if(!t.ended){if(t.decoder){var n=t.decoder.end();n&&n.length&&(t.buffer.push(n),t.length+=t.objectMode?1:n.length)}t.ended=!0,m(e)}}(e,i)):(a||(o=function(e,t){var n,r;return r=t,l.isBuffer(r)||r instanceof g||"string"==typeof t||void 0===t||e.objectMode||(n=new TypeError("Invalid non-string/buffer chunk")),n}(i,t)),o?e.emit("error",o):i.objectMode||t&&t.length>0?("string"==typeof t||i.objectMode||Object.getPrototypeOf(t)===l.prototype||(t=function(e){return l.from(e)}(t)),r?i.endEmitted?e.emit("error",new Error("stream.unshift() after end event")):h(e,i,t,!0):i.ended?e.emit("error",new Error("stream.push() after EOF")):(i.reading=!1,i.decoder&&!n?(t=i.decoder.write(t),i.objectMode||0!==t.length?h(e,i,t,!1):U(e,i)):h(e,i,t,!1))):r||(i.reading=!1)),function(e){return!e.ended&&(e.needReadable||e.length<e.highWaterMark||0===e.length)}(i)}function h(e,t,n,r){t.flowing&&0===t.length&&!t.sync?(e.emit("data",n),e.read(0)):(t.length+=t.objectMode?1:n.length,r?t.buffer.unshift(n):t.buffer.push(n),t.needReadable&&m(e)),U(e,t)}function y(e,t){return e<=0||0===t.length&&t.ended?0:t.objectMode?1:e!=e?t.flowing&&t.length?t.buffer.head.data.length:t.length:(e>t.highWaterMark&&(t.highWaterMark=function(e){return e>=8388608?e=8388608:(e--,e|=e>>>1,e|=e>>>2,e|=e>>>4,e|=e>>>8,e|=e>>>16,e++),e}(e)),e<=t.length?e:t.ended?t.length:(t.needReadable=!0,0))}function m(e){var t=e._readableState;t.needReadable=!1,t.emittedReadable||(A("emitReadable",t.flowing),t.emittedReadable=!0,t.sync?a.nextTick(F,e):F(e))}function F(e){A("emit readable"),e.emit("readable"),v(e)}function U(e,t){t.readingMore||(t.readingMore=!0,a.nextTick(f,e,t))}function f(e,t){for(var n=t.length;!t.reading&&!t.flowing&&!t.ended&&t.length<t.highWaterMark&&(A("maybeReadMore read 0"),e.read(0),n!==t.length);)n=t.length;t.readingMore=!1}function G(e){A("readable nexttick read 0"),e.read(0)}function E(e,t){t.reading||(A("resume read 0"),e.read(0)),t.resumeScheduled=!1,t.awaitDrain=0,e.emit("resume"),v(e),t.flowing&&!t.reading&&e.read(0)}function v(e){var t=e._readableState;for(A("flow",t.flowing);t.flowing&&null!==e.read(););}function Z(e,t){return 0===t.length?null:(t.objectMode?n=t.buffer.shift():!e||e>=t.length?(n=t.decoder?t.buffer.join(""):1===t.buffer.length?t.buffer.head.data:t.buffer.concat(t.length),t.buffer.clear()):n=function(e,t,n){var r;return e<t.head.data.length?(r=t.head.data.slice(0,e),t.head.data=t.head.data.slice(e)):r=e===t.head.data.length?t.shift():n?function(e,t){var n=t.head,r=1,a=n.data;for(e-=a.length;n=n.next;){var o=n.data,i=e>o.length?o.length:e;if(i===o.length?a+=o:a+=o.slice(0,e),0==(e-=i)){i===o.length?(++r,n.next?t.head=n.next:t.head=t.tail=null):(t.head=n,n.data=o.slice(i));break}++r}return t.length-=r,a}(e,t):function(e,t){var n=l.allocUnsafe(e),r=t.head,a=1;for(r.data.copy(n),e-=r.data.length;r=r.next;){var o=r.data,i=e>o.length?o.length:e;if(o.copy(n,n.length-e,0,i),0==(e-=i)){i===o.length?(++a,r.next?t.head=r.next:t.head=t.tail=null):(t.head=r,r.data=o.slice(i));break}++a}return t.length-=a,n}(e,t),r}(e,t.buffer,t.decoder),n);var n}function X(e){var t=e._readableState;if(t.length>0)throw new Error('"endReadable()" called on non-empty stream');t.endEmitted||(t.ended=!0,a.nextTick(W,t,e))}function W(e,t){e.endEmitted||0!==e.length||(e.endEmitted=!0,t.readable=!1,t.emit("end"))}function R(e,t){for(var n=0,r=e.length;n<r;n++)if(e[n]===t)return n;return-1}Object.defineProperty(p.prototype,"destroyed",{get:function(){return void 0!==this._readableState&&this._readableState.destroyed},set:function(e){this._readableState&&(this._readableState.destroyed=e)}}),p.prototype.destroy=_.destroy,p.prototype._undestroy=_.undestroy,p.prototype._destroy=function(e,t){this.push(null),t(e)},p.prototype.push=function(e,t){var n,r=this._readableState;return r.objectMode?n=!0:"string"==typeof e&&((t=t||r.defaultEncoding)!==r.encoding&&(e=l.from(e,t),t=""),n=!0),Q(this,e,t,!1,n)},p.prototype.unshift=function(e){return Q(this,e,null,!0,!1)},p.prototype.isPaused=function(){return!1===this._readableState.flowing},p.prototype.setEncoding=function(e){return u||(u=n(31).StringDecoder),this._readableState.decoder=new u(e),this._readableState.encoding=e,this},p.prototype.read=function(e){A("read",e),e=parseInt(e,10);var t=this._readableState,n=e;if(0!==e&&(t.emittedReadable=!1),0===e&&t.needReadable&&(t.length>=t.highWaterMark||t.ended))return A("read: emitReadable",t.length,t.ended),0===t.length&&t.ended?X(this):m(this),null;if(0===(e=y(e,t))&&t.ended)return 0===t.length&&X(this),null;var r,a=t.needReadable;return A("need readable",a),(0===t.length||t.length-e<t.highWaterMark)&&A("length less than watermark",a=!0),t.ended||t.reading?A("reading or ended",a=!1):a&&(A("do read"),t.reading=!0,t.sync=!0,0===t.length&&(t.needReadable=!0),this._read(t.highWaterMark),t.sync=!1,t.reading||(e=y(n,t))),null===(r=e>0?Z(e,t):null)?(t.needReadable=!0,e=0):t.length-=e,0===t.length&&(t.ended||(t.needReadable=!0),n!==e&&t.ended&&X(this)),null!==r&&this.emit("data",r),r},p.prototype._read=function(e){this.emit("error",new Error("_read() is not implemented"))},p.prototype.pipe=function(e,t){var n=this,o=this._readableState;switch(o.pipesCount){case 0:o.pipes=e;break;case 1:o.pipes=[o.pipes,e];break;default:o.pipes.push(e)}o.pipesCount+=1,A("pipe count=%d opts=%j",o.pipesCount,t);var s=t&&!1===t.end||e===r.stdout||e===r.stderr?b:l;function l(){A("onend"),e.end()}o.endEmitted?a.nextTick(s):n.once("end",s),e.on("unpipe",(function t(r,a){A("onunpipe"),r===n&&a&&!1===a.hasUnpiped&&(a.hasUnpiped=!0,A("cleanup"),e.removeListener("close",_),e.removeListener("finish",C),e.removeListener("drain",g),e.removeListener("error",d),e.removeListener("unpipe",t),n.removeListener("end",l),n.removeListener("end",b),n.removeListener("data",u),I=!0,!o.awaitDrain||e._writableState&&!e._writableState.needDrain||g())}));var g=function(e){return function(){var t=e._readableState;A("pipeOnDrain",t.awaitDrain),t.awaitDrain&&t.awaitDrain--,0===t.awaitDrain&&c(e,"data")&&(t.flowing=!0,v(e))}}(n);e.on("drain",g);var I=!1,B=!1;function u(t){A("ondata"),B=!1,!1!==e.write(t)||B||((1===o.pipesCount&&o.pipes===e||o.pipesCount>1&&-1!==R(o.pipes,e))&&!I&&(A("false write response, pause",n._readableState.awaitDrain),n._readableState.awaitDrain++,B=!0),n.pause())}function d(t){A("onerror",t),b(),e.removeListener("error",d),0===c(e,"error")&&e.emit("error",t)}function _(){e.removeListener("finish",C),b()}function C(){A("onfinish"),e.removeListener("close",_),b()}function b(){A("unpipe"),n.unpipe(e)}return n.on("data",u),function(e,t,n){if("function"==typeof e.prependListener)return e.prependListener(t,n);e._events&&e._events[t]?i(e._events[t])?e._events[t].unshift(n):e._events[t]=[n,e._events[t]]:e.on(t,n)}(e,"error",d),e.once("close",_),e.once("finish",C),e.emit("pipe",n),o.flowing||(A("pipe resume"),n.resume()),e},p.prototype.unpipe=function(e){var t=this._readableState,n={hasUnpiped:!1};if(0===t.pipesCount)return this;if(1===t.pipesCount)return e&&e!==t.pipes||(e||(e=t.pipes),t.pipes=null,t.pipesCount=0,t.flowing=!1,e&&e.emit("unpipe",this,n)),this;if(!e){var r=t.pipes,a=t.pipesCount;t.pipes=null,t.pipesCount=0,t.flowing=!1;for(var o=0;o<a;o++)r[o].emit("unpipe",this,n);return this}var i=R(t.pipes,e);return-1===i||(t.pipes.splice(i,1),t.pipesCount-=1,1===t.pipesCount&&(t.pipes=t.pipes[0]),e.emit("unpipe",this,n)),this},p.prototype.on=function(e,t){var n=s.prototype.on.call(this,e,t);if("data"===e)!1!==this._readableState.flowing&&this.resume();else if("readable"===e){var r=this._readableState;r.endEmitted||r.readableListening||(r.readableListening=r.needReadable=!0,r.emittedReadable=!1,r.reading?r.length&&m(this):a.nextTick(G,this))}return n},p.prototype.addListener=p.prototype.on,p.prototype.resume=function(){var e=this._readableState;return e.flowing||(A("resume"),e.flowing=!0,function(e,t){t.resumeScheduled||(t.resumeScheduled=!0,a.nextTick(E,e,t))}(this,e)),this},p.prototype.pause=function(){return A("call pause flowing=%j",this._readableState.flowing),!1!==this._readableState.flowing&&(A("pause"),this._readableState.flowing=!1,this.emit("pause")),this},p.prototype.wrap=function(e){var t=this,n=this._readableState,r=!1;for(var a in e.on("end",(function(){if(A("wrapped end"),n.decoder&&!n.ended){var e=n.decoder.end();e&&e.length&&t.push(e)}t.push(null)})),e.on("data",(function(a){A("wrapped data"),n.decoder&&(a=n.decoder.write(a)),n.objectMode&&null==a||(n.objectMode||a&&a.length)&&(t.push(a)||(r=!0,e.pause()))})),e)void 0===this[a]&&"function"==typeof e[a]&&(this[a]=function(t){return function(){return e[t].apply(e,arguments)}}(a));for(var o=0;o<C.length;o++)e.on(C[o],this.emit.bind(this,C[o]));return this._read=function(t){A("wrapped _read",t),r&&(r=!1,e.resume())},this},Object.defineProperty(p.prototype,"readableHighWaterMark",{enumerable:!1,get:function(){return this._readableState.highWaterMark}}),p._fromList=Z}).call(this,n(8),n(9))},function(e,t,n){e.exports=n(28).EventEmitter},function(e,t,n){"use strict";var r=n(21);function a(e,t){e.emit("error",t)}e.exports={destroy:function(e,t){var n=this,o=this._readableState&&this._readableState.destroyed,i=this._writableState&&this._writableState.destroyed;return o||i?(t?t(e):!e||this._writableState&&this._writableState.errorEmitted||r.nextTick(a,this,e),this):(this._readableState&&(this._readableState.destroyed=!0),this._writableState&&(this._writableState.destroyed=!0),this._destroy(e||null,(function(e){!t&&e?(r.nextTick(a,n,e),n._writableState&&(n._writableState.errorEmitted=!0)):t&&t(e)})),this)},undestroy:function(){this._readableState&&(this._readableState.destroyed=!1,this._readableState.reading=!1,this._readableState.ended=!1,this._readableState.endEmitted=!1),this._writableState&&(this._writableState.destroyed=!1,this._writableState.ended=!1,this._writableState.ending=!1,this._writableState.finished=!1,this._writableState.errorEmitted=!1)}}},function(e,t,n){"use strict";e.exports=i;var r=n(12),a=Object.create(n(16));function o(e,t){var n=this._transformState;n.transforming=!1;var r=n.writecb;if(!r)return this.emit("error",new Error("write callback called multiple times"));n.writechunk=null,n.writecb=null,null!=t&&this.push(t),r(e);var a=this._readableState;a.reading=!1,(a.needReadable||a.length<a.highWaterMark)&&this._read(a.highWaterMark)}function i(e){if(!(this instanceof i))return new i(e);r.call(this,e),this._transformState={afterTransform:o.bind(this),needTransform:!1,transforming:!1,writecb:null,writechunk:null,writeencoding:null},this._readableState.needReadable=!0,this._readableState.sync=!1,e&&("function"==typeof e.transform&&(this._transform=e.transform),"function"==typeof e.flush&&(this._flush=e.flush)),this.on("prefinish",c)}function c(){var e=this;"function"==typeof this._flush?this._flush((function(t,n){s(e,t,n)})):s(this,null,null)}function s(e,t,n){if(t)return e.emit("error",t);if(null!=n&&e.push(n),e._writableState.length)throw new Error("Calling transform done when ws.length != 0");if(e._transformState.transforming)throw new Error("Calling transform done when still transforming");return e.push(null)}a.inherits=n(1),a.inherits(i,r),i.prototype.push=function(e,t){return this._transformState.needTransform=!1,r.prototype.push.call(this,e,t)},i.prototype._transform=function(e,t,n){throw new Error("_transform() is not implemented")},i.prototype._write=function(e,t,n){var r=this._transformState;if(r.writecb=n,r.writechunk=e,r.writeencoding=t,!r.transforming){var a=this._readableState;(r.needTransform||a.needReadable||a.length<a.highWaterMark)&&this._read(a.highWaterMark)}},i.prototype._read=function(e){var t=this._transformState;null!==t.writechunk&&t.writecb&&!t.transforming?(t.transforming=!0,this._transform(t.writechunk,t.writeencoding,t.afterTransform)):t.needTransform=!0},i.prototype._destroy=function(e,t){var n=this;r.prototype._destroy.call(this,e,(function(e){t(e),n.emit("close")}))}},function(e,t,n){var r=n(1),a=n(14),o=n(2).Buffer,i=[1116352408,1899447441,3049323471,3921009573,961987163,1508970993,2453635748,2870763221,3624381080,310598401,607225278,1426881987,1925078388,2162078206,2614888103,3248222580,3835390401,4022224774,264347078,604807628,770255983,1249150122,1555081692,1996064986,2554220882,2821834349,2952996808,3210313671,3336571891,3584528711,113926993,338241895,666307205,773529912,1294757372,1396182291,1695183700,1986661051,2177026350,2456956037,2730485921,2820302411,3259730800,3345764771,3516065817,3600352804,4094571909,275423344,430227734,506948616,659060556,883997877,958139571,1322822218,1537002063,1747873779,1955562222,2024104815,2227730452,2361852424,2428436474,2756734187,3204031479,3329325298],c=new Array(64);function s(){this.init(),this._w=c,a.call(this,64,56)}function l(e,t,n){return n^e&(t^n)}function g(e,t,n){return e&t|n&(e|t)}function I(e){return(e>>>2|e<<30)^(e>>>13|e<<19)^(e>>>22|e<<10)}function B(e){return(e>>>6|e<<26)^(e>>>11|e<<21)^(e>>>25|e<<7)}function A(e){return(e>>>7|e<<25)^(e>>>18|e<<14)^e>>>3}r(s,a),s.prototype.init=function(){return this._a=1779033703,this._b=3144134277,this._c=1013904242,this._d=2773480762,this._e=1359893119,this._f=2600822924,this._g=528734635,this._h=1541459225,this},s.prototype._update=function(e){for(var t,n=this._w,r=0|this._a,a=0|this._b,o=0|this._c,c=0|this._d,s=0|this._e,u=0|this._f,d=0|this._g,_=0|this._h,C=0;C<16;++C)n[C]=e.readInt32BE(4*C);for(;C<64;++C)n[C]=0|(((t=n[C-2])>>>17|t<<15)^(t>>>19|t<<13)^t>>>10)+n[C-7]+A(n[C-15])+n[C-16];for(var b=0;b<64;++b){var p=_+B(s)+l(s,u,d)+i[b]+n[b]|0,Q=I(r)+g(r,a,o)|0;_=d,d=u,u=s,s=c+p|0,c=o,o=a,a=r,r=p+Q|0}this._a=r+this._a|0,this._b=a+this._b|0,this._c=o+this._c|0,this._d=c+this._d|0,this._e=s+this._e|0,this._f=u+this._f|0,this._g=d+this._g|0,this._h=_+this._h|0},s.prototype._hash=function(){var e=o.allocUnsafe(32);return e.writeInt32BE(this._a,0),e.writeInt32BE(this._b,4),e.writeInt32BE(this._c,8),e.writeInt32BE(this._d,12),e.writeInt32BE(this._e,16),e.writeInt32BE(this._f,20),e.writeInt32BE(this._g,24),e.writeInt32BE(this._h,28),e},e.exports=s},function(e,t,n){var r=n(1),a=n(14),o=n(2).Buffer,i=[1116352408,3609767458,1899447441,602891725,3049323471,3964484399,3921009573,2173295548,961987163,4081628472,1508970993,3053834265,2453635748,2937671579,2870763221,3664609560,3624381080,2734883394,310598401,1164996542,607225278,1323610764,1426881987,3590304994,1925078388,4068182383,2162078206,991336113,2614888103,633803317,3248222580,3479774868,3835390401,2666613458,4022224774,944711139,264347078,2341262773,604807628,2007800933,770255983,1495990901,1249150122,1856431235,1555081692,3175218132,1996064986,2198950837,2554220882,3999719339,2821834349,766784016,2952996808,2566594879,3210313671,3203337956,3336571891,1034457026,3584528711,2466948901,113926993,3758326383,338241895,168717936,666307205,1188179964,773529912,1546045734,1294757372,1522805485,1396182291,2643833823,1695183700,2343527390,1986661051,1014477480,2177026350,1206759142,2456956037,344077627,2730485921,1290863460,2820302411,3158454273,3259730800,3505952657,3345764771,106217008,3516065817,3606008344,3600352804,1432725776,4094571909,1467031594,275423344,851169720,430227734,3100823752,506948616,1363258195,659060556,3750685593,883997877,3785050280,958139571,3318307427,1322822218,3812723403,1537002063,2003034995,1747873779,3602036899,1955562222,1575990012,2024104815,1125592928,2227730452,2716904306,2361852424,442776044,2428436474,593698344,2756734187,3733110249,3204031479,2999351573,3329325298,3815920427,3391569614,3928383900,3515267271,566280711,3940187606,3454069534,4118630271,4000239992,116418474,1914138554,174292421,2731055270,289380356,3203993006,460393269,320620315,685471733,587496836,852142971,1086792851,1017036298,365543100,1126000580,2618297676,1288033470,3409855158,1501505948,4234509866,1607167915,987167468,1816402316,1246189591],c=new Array(160);function s(){this.init(),this._w=c,a.call(this,128,112)}function l(e,t,n){return n^e&(t^n)}function g(e,t,n){return e&t|n&(e|t)}function I(e,t){return(e>>>28|t<<4)^(t>>>2|e<<30)^(t>>>7|e<<25)}function B(e,t){return(e>>>14|t<<18)^(e>>>18|t<<14)^(t>>>9|e<<23)}function A(e,t){return(e>>>1|t<<31)^(e>>>8|t<<24)^e>>>7}function u(e,t){return(e>>>1|t<<31)^(e>>>8|t<<24)^(e>>>7|t<<25)}function d(e,t){return(e>>>19|t<<13)^(t>>>29|e<<3)^e>>>6}function _(e,t){return(e>>>19|t<<13)^(t>>>29|e<<3)^(e>>>6|t<<26)}function C(e,t){return e>>>0<t>>>0?1:0}r(s,a),s.prototype.init=function(){return this._ah=1779033703,this._bh=3144134277,this._ch=1013904242,this._dh=2773480762,this._eh=1359893119,this._fh=2600822924,this._gh=528734635,this._hh=1541459225,this._al=4089235720,this._bl=2227873595,this._cl=4271175723,this._dl=1595750129,this._el=2917565137,this._fl=725511199,this._gl=4215389547,this._hl=327033209,this},s.prototype._update=function(e){for(var t=this._w,n=0|this._ah,r=0|this._bh,a=0|this._ch,o=0|this._dh,c=0|this._eh,s=0|this._fh,b=0|this._gh,p=0|this._hh,Q=0|this._al,h=0|this._bl,y=0|this._cl,m=0|this._dl,F=0|this._el,U=0|this._fl,f=0|this._gl,G=0|this._hl,E=0;E<32;E+=2)t[E]=e.readInt32BE(4*E),t[E+1]=e.readInt32BE(4*E+4);for(;E<160;E+=2){var v=t[E-30],Z=t[E-30+1],X=A(v,Z),W=u(Z,v),R=d(v=t[E-4],Z=t[E-4+1]),V=_(Z,v),O=t[E-14],x=t[E-14+1],T=t[E-32],N=t[E-32+1],w=W+x|0,k=X+O+C(w,W)|0;k=(k=k+R+C(w=w+V|0,V)|0)+T+C(w=w+N|0,N)|0,t[E]=k,t[E+1]=w}for(var Y=0;Y<160;Y+=2){k=t[Y],w=t[Y+1];var S=g(n,r,a),H=g(Q,h,y),D=I(n,Q),J=I(Q,n),P=B(c,F),M=B(F,c),L=i[Y],z=i[Y+1],j=l(c,s,b),K=l(F,U,f),q=G+M|0,$=p+P+C(q,G)|0;$=($=($=$+j+C(q=q+K|0,K)|0)+L+C(q=q+z|0,z)|0)+k+C(q=q+w|0,w)|0;var ee=J+H|0,te=D+S+C(ee,J)|0;p=b,G=f,b=s,f=U,s=c,U=F,c=o+$+C(F=m+q|0,m)|0,o=a,m=y,a=r,y=h,r=n,h=Q,n=$+te+C(Q=q+ee|0,q)|0}this._al=this._al+Q|0,this._bl=this._bl+h|0,this._cl=this._cl+y|0,this._dl=this._dl+m|0,this._el=this._el+F|0,this._fl=this._fl+U|0,this._gl=this._gl+f|0,this._hl=this._hl+G|0,this._ah=this._ah+n+C(this._al,Q)|0,this._bh=this._bh+r+C(this._bl,h)|0,this._ch=this._ch+a+C(this._cl,y)|0,this._dh=this._dh+o+C(this._dl,m)|0,this._eh=this._eh+c+C(this._el,F)|0,this._fh=this._fh+s+C(this._fl,U)|0,this._gh=this._gh+b+C(this._gl,f)|0,this._hh=this._hh+p+C(this._hl,G)|0},s.prototype._hash=function(){var e=o.allocUnsafe(64);function t(t,n,r){e.writeInt32BE(t,r),e.writeInt32BE(n,r+4)}return t(this._ah,this._al,0),t(this._bh,this._bl,8),t(this._ch,this._cl,16),t(this._dh,this._dl,24),t(this._eh,this._el,32),t(this._fh,this._fl,40),t(this._gh,this._gl,48),t(this._hh,this._hl,56),e},e.exports=s},function(e,t,n){"use strict";var r=n(1),a=n(104),o=n(11),i=n(2).Buffer,c=n(55),s=n(32),l=n(33),g=i.alloc(128);function I(e,t){o.call(this,"digest"),"string"==typeof t&&(t=i.from(t));var n="sha512"===e||"sha384"===e?128:64;this._alg=e,this._key=t,t.length>n?t=("rmd160"===e?new s:l(e)).update(t).digest():t.length<n&&(t=i.concat([t,g],n));for(var r=this._ipad=i.allocUnsafe(n),a=this._opad=i.allocUnsafe(n),c=0;c<n;c++)r[c]=54^t[c],a[c]=92^t[c];this._hash="rmd160"===e?new s:l(e),this._hash.update(r)}r(I,o),I.prototype._update=function(e){this._hash.update(e)},I.prototype._final=function(){var e=this._hash.digest();return("rmd160"===this._alg?new s:l(this._alg)).update(this._opad).update(e).digest()},e.exports=function(e,t){return"rmd160"===(e=e.toLowerCase())||"ripemd160"===e?new I("rmd160",t):"md5"===e?new a(c,t):new I(e,t)}},function(e,t,n){var r=n(26);e.exports=function(e){return(new r).update(e).digest()}},function(e){e.exports=JSON.parse('{"sha224WithRSAEncryption":{"sign":"rsa","hash":"sha224","id":"302d300d06096086480165030402040500041c"},"RSA-SHA224":{"sign":"ecdsa/rsa","hash":"sha224","id":"302d300d06096086480165030402040500041c"},"sha256WithRSAEncryption":{"sign":"rsa","hash":"sha256","id":"3031300d060960864801650304020105000420"},"RSA-SHA256":{"sign":"ecdsa/rsa","hash":"sha256","id":"3031300d060960864801650304020105000420"},"sha384WithRSAEncryption":{"sign":"rsa","hash":"sha384","id":"3041300d060960864801650304020205000430"},"RSA-SHA384":{"sign":"ecdsa/rsa","hash":"sha384","id":"3041300d060960864801650304020205000430"},"sha512WithRSAEncryption":{"sign":"rsa","hash":"sha512","id":"3051300d060960864801650304020305000440"},"RSA-SHA512":{"sign":"ecdsa/rsa","hash":"sha512","id":"3051300d060960864801650304020305000440"},"RSA-SHA1":{"sign":"rsa","hash":"sha1","id":"3021300906052b0e03021a05000414"},"ecdsa-with-SHA1":{"sign":"ecdsa","hash":"sha1","id":""},"sha256":{"sign":"ecdsa","hash":"sha256","id":""},"sha224":{"sign":"ecdsa","hash":"sha224","id":""},"sha384":{"sign":"ecdsa","hash":"sha384","id":""},"sha512":{"sign":"ecdsa","hash":"sha512","id":""},"DSA-SHA":{"sign":"dsa","hash":"sha1","id":""},"DSA-SHA1":{"sign":"dsa","hash":"sha1","id":""},"DSA":{"sign":"dsa","hash":"sha1","id":""},"DSA-WITH-SHA224":{"sign":"dsa","hash":"sha224","id":""},"DSA-SHA224":{"sign":"dsa","hash":"sha224","id":""},"DSA-WITH-SHA256":{"sign":"dsa","hash":"sha256","id":""},"DSA-SHA256":{"sign":"dsa","hash":"sha256","id":""},"DSA-WITH-SHA384":{"sign":"dsa","hash":"sha384","id":""},"DSA-SHA384":{"sign":"dsa","hash":"sha384","id":""},"DSA-WITH-SHA512":{"sign":"dsa","hash":"sha512","id":""},"DSA-SHA512":{"sign":"dsa","hash":"sha512","id":""},"DSA-RIPEMD160":{"sign":"dsa","hash":"rmd160","id":""},"ripemd160WithRSA":{"sign":"rsa","hash":"rmd160","id":"3021300906052b2403020105000414"},"RSA-RIPEMD160":{"sign":"rsa","hash":"rmd160","id":"3021300906052b2403020105000414"},"md5WithRSAEncryption":{"sign":"rsa","hash":"md5","id":"3020300c06082a864886f70d020505000410"},"RSA-MD5":{"sign":"rsa","hash":"md5","id":"3020300c06082a864886f70d020505000410"}}')},function(e,t,n){t.pbkdf2=n(106),t.pbkdf2Sync=n(60)},function(e,t,n){(function(t){var n=Math.pow(2,30)-1;function r(e,n){if("string"!=typeof e&&!t.isBuffer(e))throw new TypeError(n+" must be a buffer or string")}e.exports=function(e,t,a,o){if(r(e,"Password"),r(t,"Salt"),"number"!=typeof a)throw new TypeError("Iterations not a number");if(a<0)throw new TypeError("Bad iterations");if("number"!=typeof o)throw new TypeError("Key length not a number");if(o<0||o>n||o!=o)throw new TypeError("Bad key length")}}).call(this,n(3).Buffer)},function(e,t,n){(function(t){var n;n=t.browser||parseInt(t.version.split(".")[0].slice(1),10)>=6?"utf-8":"binary",e.exports=n}).call(this,n(9))},function(e,t,n){var r=n(55),a=n(32),o=n(33),i=n(58),c=n(59),s=n(2).Buffer,l=s.alloc(128),g={md5:16,sha1:20,sha224:28,sha256:32,sha384:48,sha512:64,rmd160:20,ripemd160:20};function I(e,t,n){var i=function(e){return"rmd160"===e||"ripemd160"===e?function(e){return(new a).update(e).digest()}:"md5"===e?r:function(t){return o(e).update(t).digest()}}(e),c="sha512"===e||"sha384"===e?128:64;t.length>c?t=i(t):t.length<c&&(t=s.concat([t,l],c));for(var I=s.allocUnsafe(c+g[e]),B=s.allocUnsafe(c+g[e]),A=0;A<c;A++)I[A]=54^t[A],B[A]=92^t[A];var u=s.allocUnsafe(c+n+4);I.copy(u,0,0,c),this.ipad1=u,this.ipad2=I,this.opad=B,this.alg=e,this.blocksize=c,this.hash=i,this.size=g[e]}I.prototype.run=function(e,t){return e.copy(t,this.blocksize),this.hash(t).copy(this.opad,this.blocksize),this.hash(this.opad)},e.exports=function(e,t,n,r,a){i(e,t,n,r),s.isBuffer(e)||(e=s.from(e,c)),s.isBuffer(t)||(t=s.from(t,c));var o=new I(a=a||"sha1",e,t.length),l=s.allocUnsafe(r),B=s.allocUnsafe(t.length+4);t.copy(B,0,0,t.length);for(var A=0,u=g[a],d=Math.ceil(r/u),_=1;_<=d;_++){B.writeUInt32BE(_,t.length);for(var C=o.run(B,o.ipad1),b=C,p=1;p<n;p++){b=o.run(b,o.ipad2);for(var Q=0;Q<u;Q++)C[Q]^=b[Q]}C.copy(l,A),A+=u}return l}},function(e,t,n){"use strict";t.readUInt32BE=function(e,t){return(e[0+t]<<24|e[1+t]<<16|e[2+t]<<8|e[3+t])>>>0},t.writeUInt32BE=function(e,t,n){e[0+n]=t>>>24,e[1+n]=t>>>16&255,e[2+n]=t>>>8&255,e[3+n]=255&t},t.ip=function(e,t,n,r){for(var a=0,o=0,i=6;i>=0;i-=2){for(var c=0;c<=24;c+=8)a<<=1,a|=t>>>c+i&1;for(c=0;c<=24;c+=8)a<<=1,a|=e>>>c+i&1}for(i=6;i>=0;i-=2){for(c=1;c<=25;c+=8)o<<=1,o|=t>>>c+i&1;for(c=1;c<=25;c+=8)o<<=1,o|=e>>>c+i&1}n[r+0]=a>>>0,n[r+1]=o>>>0},t.rip=function(e,t,n,r){for(var a=0,o=0,i=0;i<4;i++)for(var c=24;c>=0;c-=8)a<<=1,a|=t>>>c+i&1,a<<=1,a|=e>>>c+i&1;for(i=4;i<8;i++)for(c=24;c>=0;c-=8)o<<=1,o|=t>>>c+i&1,o<<=1,o|=e>>>c+i&1;n[r+0]=a>>>0,n[r+1]=o>>>0},t.pc1=function(e,t,n,r){for(var a=0,o=0,i=7;i>=5;i--){for(var c=0;c<=24;c+=8)a<<=1,a|=t>>c+i&1;for(c=0;c<=24;c+=8)a<<=1,a|=e>>c+i&1}for(c=0;c<=24;c+=8)a<<=1,a|=t>>c+i&1;for(i=1;i<=3;i++){for(c=0;c<=24;c+=8)o<<=1,o|=t>>c+i&1;for(c=0;c<=24;c+=8)o<<=1,o|=e>>c+i&1}for(c=0;c<=24;c+=8)o<<=1,o|=e>>c+i&1;n[r+0]=a>>>0,n[r+1]=o>>>0},t.r28shl=function(e,t){return e<<t&268435455|e>>>28-t};var r=[14,11,17,4,27,23,25,0,13,22,7,18,5,9,16,24,2,20,12,21,1,8,15,26,15,4,25,19,9,1,26,16,5,11,23,8,12,7,17,0,22,3,10,14,6,20,27,24];t.pc2=function(e,t,n,a){for(var o=0,i=0,c=r.length>>>1,s=0;s<c;s++)o<<=1,o|=e>>>r[s]&1;for(s=c;s<r.length;s++)i<<=1,i|=t>>>r[s]&1;n[a+0]=o>>>0,n[a+1]=i>>>0},t.expand=function(e,t,n){var r=0,a=0;r=(1&e)<<5|e>>>27;for(var o=23;o>=15;o-=4)r<<=6,r|=e>>>o&63;for(o=11;o>=3;o-=4)a|=e>>>o&63,a<<=6;a|=(31&e)<<1|e>>>31,t[n+0]=r>>>0,t[n+1]=a>>>0};var a=[14,0,4,15,13,7,1,4,2,14,15,2,11,13,8,1,3,10,10,6,6,12,12,11,5,9,9,5,0,3,7,8,4,15,1,12,14,8,8,2,13,4,6,9,2,1,11,7,15,5,12,11,9,3,7,14,3,10,10,0,5,6,0,13,15,3,1,13,8,4,14,7,6,15,11,2,3,8,4,14,9,12,7,0,2,1,13,10,12,6,0,9,5,11,10,5,0,13,14,8,7,10,11,1,10,3,4,15,13,4,1,2,5,11,8,6,12,7,6,12,9,0,3,5,2,14,15,9,10,13,0,7,9,0,14,9,6,3,3,4,15,6,5,10,1,2,13,8,12,5,7,14,11,12,4,11,2,15,8,1,13,1,6,10,4,13,9,0,8,6,15,9,3,8,0,7,11,4,1,15,2,14,12,3,5,11,10,5,14,2,7,12,7,13,13,8,14,11,3,5,0,6,6,15,9,0,10,3,1,4,2,7,8,2,5,12,11,1,12,10,4,14,15,9,10,3,6,15,9,0,0,6,12,10,11,1,7,13,13,8,15,9,1,4,3,5,14,11,5,12,2,7,8,2,4,14,2,14,12,11,4,2,1,12,7,4,10,7,11,13,6,1,8,5,5,0,3,15,15,10,13,3,0,9,14,8,9,6,4,11,2,8,1,12,11,7,10,1,13,14,7,2,8,13,15,6,9,15,12,0,5,9,6,10,3,4,0,5,14,3,12,10,1,15,10,4,15,2,9,7,2,12,6,9,8,5,0,6,13,1,3,13,4,14,14,0,7,11,5,3,11,8,9,4,14,3,15,2,5,12,2,9,8,5,12,15,3,10,7,11,0,14,4,1,10,7,1,6,13,0,11,8,6,13,4,13,11,0,2,11,14,7,15,4,0,9,8,1,13,10,3,14,12,3,9,5,7,12,5,2,10,15,6,8,1,6,1,6,4,11,11,13,13,8,12,1,3,4,7,10,14,7,10,9,15,5,6,0,8,15,0,14,5,2,9,3,2,12,13,1,2,15,8,13,4,8,6,10,15,3,11,7,1,4,10,12,9,5,3,6,14,11,5,0,0,14,12,9,7,2,7,2,11,1,4,14,1,7,9,4,12,10,14,8,2,13,0,15,6,12,10,9,13,0,15,3,3,5,5,6,8,11];t.substitute=function(e,t){for(var n=0,r=0;r<4;r++)n<<=4,n|=a[64*r+(e>>>18-6*r&63)];for(r=0;r<4;r++)n<<=4,n|=a[256+64*r+(t>>>18-6*r&63)];return n>>>0};var o=[16,25,12,11,3,20,4,15,31,17,9,6,27,14,1,22,30,24,8,18,0,5,29,23,13,19,2,26,10,21,28,7];t.permute=function(e){for(var t=0,n=0;n<o.length;n++)t<<=1,t|=e>>>o[n]&1;return t>>>0},t.padSplit=function(e,t,n){for(var r=e.toString(2);r.length<t;)r="0"+r;for(var a=[],o=0;o<t;o+=n)a.push(r.slice(o,o+n));return a.join(" ")}},function(e,t,n){"use strict";var r=n(6),a=n(1),o=n(61),i=n(34);function c(){this.tmp=new Array(2),this.keys=null}function s(e){i.call(this,e);var t=new c;this._desState=t,this.deriveKeys(t,e.key)}a(s,i),e.exports=s,s.create=function(e){return new s(e)};var l=[1,1,2,2,2,2,2,2,1,2,2,2,2,2,2,1];s.prototype.deriveKeys=function(e,t){e.keys=new Array(32),r.equal(t.length,this.blockSize,"Invalid key length");var n=o.readUInt32BE(t,0),a=o.readUInt32BE(t,4);o.pc1(n,a,e.tmp,0),n=e.tmp[0],a=e.tmp[1];for(var i=0;i<e.keys.length;i+=2){var c=l[i>>>1];n=o.r28shl(n,c),a=o.r28shl(a,c),o.pc2(n,a,e.keys,i)}},s.prototype._update=function(e,t,n,r){var a=this._desState,i=o.readUInt32BE(e,t),c=o.readUInt32BE(e,t+4);o.ip(i,c,a.tmp,0),i=a.tmp[0],c=a.tmp[1],"encrypt"===this.type?this._encrypt(a,i,c,a.tmp,0):this._decrypt(a,i,c,a.tmp,0),i=a.tmp[0],c=a.tmp[1],o.writeUInt32BE(n,i,r),o.writeUInt32BE(n,c,r+4)},s.prototype._pad=function(e,t){for(var n=e.length-t,r=t;r<e.length;r++)e[r]=n;return!0},s.prototype._unpad=function(e){for(var t=e[e.length-1],n=e.length-t;n<e.length;n++)r.equal(e[n],t);return e.slice(0,e.length-t)},s.prototype._encrypt=function(e,t,n,r,a){for(var i=t,c=n,s=0;s<e.keys.length;s+=2){var l=e.keys[s],g=e.keys[s+1];o.expand(c,e.tmp,0),l^=e.tmp[0],g^=e.tmp[1];var I=o.substitute(l,g),B=c;c=(i^o.permute(I))>>>0,i=B}o.rip(c,i,r,a)},s.prototype._decrypt=function(e,t,n,r,a){for(var i=n,c=t,s=e.keys.length-2;s>=0;s-=2){var l=e.keys[s],g=e.keys[s+1];o.expand(i,e.tmp,0),l^=e.tmp[0],g^=e.tmp[1];var I=o.substitute(l,g),B=i;i=(c^o.permute(I))>>>0,c=B}o.rip(i,c,r,a)}},function(e,t,n){var r=n(17),a=n(2).Buffer,o=n(64);function i(e){var t=e._cipher.encryptBlockRaw(e._prev);return o(e._prev),t}t.encrypt=function(e,t){var n=Math.ceil(t.length/16),o=e._cache.length;e._cache=a.concat([e._cache,a.allocUnsafe(16*n)]);for(var c=0;c<n;c++){var s=i(e),l=o+16*c;e._cache.writeUInt32BE(s[0],l+0),e._cache.writeUInt32BE(s[1],l+4),e._cache.writeUInt32BE(s[2],l+8),e._cache.writeUInt32BE(s[3],l+12)}var g=e._cache.slice(0,t.length);return e._cache=e._cache.slice(t.length),r(t,g)}},function(e,t){e.exports=function(e){for(var t,n=e.length;n--;){if(255!==(t=e.readUInt8(n))){t++,e.writeUInt8(t,n);break}e.writeUInt8(0,n)}}},function(e){e.exports=JSON.parse('{"aes-128-ecb":{"cipher":"AES","key":128,"iv":0,"mode":"ECB","type":"block"},"aes-192-ecb":{"cipher":"AES","key":192,"iv":0,"mode":"ECB","type":"block"},"aes-256-ecb":{"cipher":"AES","key":256,"iv":0,"mode":"ECB","type":"block"},"aes-128-cbc":{"cipher":"AES","key":128,"iv":16,"mode":"CBC","type":"block"},"aes-192-cbc":{"cipher":"AES","key":192,"iv":16,"mode":"CBC","type":"block"},"aes-256-cbc":{"cipher":"AES","key":256,"iv":16,"mode":"CBC","type":"block"},"aes128":{"cipher":"AES","key":128,"iv":16,"mode":"CBC","type":"block"},"aes192":{"cipher":"AES","key":192,"iv":16,"mode":"CBC","type":"block"},"aes256":{"cipher":"AES","key":256,"iv":16,"mode":"CBC","type":"block"},"aes-128-cfb":{"cipher":"AES","key":128,"iv":16,"mode":"CFB","type":"stream"},"aes-192-cfb":{"cipher":"AES","key":192,"iv":16,"mode":"CFB","type":"stream"},"aes-256-cfb":{"cipher":"AES","key":256,"iv":16,"mode":"CFB","type":"stream"},"aes-128-cfb8":{"cipher":"AES","key":128,"iv":16,"mode":"CFB8","type":"stream"},"aes-192-cfb8":{"cipher":"AES","key":192,"iv":16,"mode":"CFB8","type":"stream"},"aes-256-cfb8":{"cipher":"AES","key":256,"iv":16,"mode":"CFB8","type":"stream"},"aes-128-cfb1":{"cipher":"AES","key":128,"iv":16,"mode":"CFB1","type":"stream"},"aes-192-cfb1":{"cipher":"AES","key":192,"iv":16,"mode":"CFB1","type":"stream"},"aes-256-cfb1":{"cipher":"AES","key":256,"iv":16,"mode":"CFB1","type":"stream"},"aes-128-ofb":{"cipher":"AES","key":128,"iv":16,"mode":"OFB","type":"stream"},"aes-192-ofb":{"cipher":"AES","key":192,"iv":16,"mode":"OFB","type":"stream"},"aes-256-ofb":{"cipher":"AES","key":256,"iv":16,"mode":"OFB","type":"stream"},"aes-128-ctr":{"cipher":"AES","key":128,"iv":16,"mode":"CTR","type":"stream"},"aes-192-ctr":{"cipher":"AES","key":192,"iv":16,"mode":"CTR","type":"stream"},"aes-256-ctr":{"cipher":"AES","key":256,"iv":16,"mode":"CTR","type":"stream"},"aes-128-gcm":{"cipher":"AES","key":128,"iv":12,"mode":"GCM","type":"auth"},"aes-192-gcm":{"cipher":"AES","key":192,"iv":12,"mode":"GCM","type":"auth"},"aes-256-gcm":{"cipher":"AES","key":256,"iv":12,"mode":"GCM","type":"auth"}}')},function(e,t,n){var r=n(22),a=n(2).Buffer,o=n(11),i=n(1),c=n(119),s=n(17),l=n(64);function g(e,t,n,i){o.call(this);var s=a.alloc(4,0);this._cipher=new r.AES(t);var g=this._cipher.encryptBlock(s);this._ghash=new c(g),n=function(e,t,n){if(12===t.length)return e._finID=a.concat([t,a.from([0,0,0,1])]),a.concat([t,a.from([0,0,0,2])]);var r=new c(n),o=t.length,i=o%16;r.update(t),i&&(i=16-i,r.update(a.alloc(i,0))),r.update(a.alloc(8,0));var s=8*o,g=a.alloc(8);g.writeUIntBE(s,0,8),r.update(g),e._finID=r.state;var I=a.from(e._finID);return l(I),I}(this,n,g),this._prev=a.from(n),this._cache=a.allocUnsafe(0),this._secCache=a.allocUnsafe(0),this._decrypt=i,this._alen=0,this._len=0,this._mode=e,this._authTag=null,this._called=!1}i(g,o),g.prototype._update=function(e){if(!this._called&&this._alen){var t=16-this._alen%16;t<16&&(t=a.alloc(t,0),this._ghash.update(t))}this._called=!0;var n=this._mode.encrypt(this,e);return this._decrypt?this._ghash.update(e):this._ghash.update(n),this._len+=e.length,n},g.prototype._final=function(){if(this._decrypt&&!this._authTag)throw new Error("Unsupported state or unable to authenticate data");var e=s(this._ghash.final(8*this._alen,8*this._len),this._cipher.encryptBlock(this._finID));if(this._decrypt&&function(e,t){var n=0;e.length!==t.length&&n++;for(var r=Math.min(e.length,t.length),a=0;a<r;++a)n+=e[a]^t[a];return n}(e,this._authTag))throw new Error("Unsupported state or unable to authenticate data");this._authTag=e,this._cipher.scrub()},g.prototype.getAuthTag=function(){if(this._decrypt||!a.isBuffer(this._authTag))throw new Error("Attempting to get auth tag in unsupported state");return this._authTag},g.prototype.setAuthTag=function(e){if(!this._decrypt)throw new Error("Attempting to set auth tag in unsupported state");this._authTag=e},g.prototype.setAAD=function(e){if(this._called)throw new Error("Attempting to set AAD in unsupported state");this._ghash.update(e),this._alen+=e.length},e.exports=g},function(e,t,n){var r=n(22),a=n(2).Buffer,o=n(11);function i(e,t,n,i){o.call(this),this._cipher=new r.AES(t),this._prev=a.from(n),this._cache=a.allocUnsafe(0),this._secCache=a.allocUnsafe(0),this._decrypt=i,this._mode=e}n(1)(i,o),i.prototype._update=function(e){return this._mode.encrypt(this,e,this._decrypt)},i.prototype._final=function(){this._cipher.scrub()},e.exports=i},function(e,t,n){var r=n(13);e.exports=C,C.simpleSieve=d,C.fermatTest=_;var a=n(4),o=new a(24),i=new(n(69)),c=new a(1),s=new a(2),l=new a(5),g=(new a(16),new a(8),new a(10)),I=new a(3),B=(new a(7),new a(11)),A=new a(4),u=(new a(12),null);function d(e){for(var t=function(){if(null!==u)return u;var e=[];e[0]=2;for(var t=1,n=3;n<1048576;n+=2){for(var r=Math.ceil(Math.sqrt(n)),a=0;a<t&&e[a]<=r&&n%e[a]!=0;a++);t!==a&&e[a]<=r||(e[t++]=n)}return u=e,e}(),n=0;n<t.length;n++)if(0===e.modn(t[n]))return 0===e.cmpn(t[n]);return!0}function _(e){var t=a.mont(e);return 0===s.toRed(t).redPow(e.subn(1)).fromRed().cmpn(1)}function C(e,t){if(e<16)return new a(2===t||5===t?[140,123]:[140,39]);var n,u;for(t=new a(t);;){for(n=new a(r(Math.ceil(e/8)));n.bitLength()>e;)n.ishrn(1);if(n.isEven()&&n.iadd(c),n.testn(1)||n.iadd(s),t.cmp(s)){if(!t.cmp(l))for(;n.mod(g).cmp(I);)n.iadd(A)}else for(;n.mod(o).cmp(B);)n.iadd(A);if(d(u=n.shrn(1))&&d(n)&&_(u)&&_(n)&&i.test(u)&&i.test(n))return n}}},function(e,t,n){var r=n(4),a=n(37);function o(e){this.rand=e||new a.Rand}e.exports=o,o.create=function(e){return new o(e)},o.prototype._randbelow=function(e){var t=e.bitLength(),n=Math.ceil(t/8);do{var a=new r(this.rand.generate(n))}while(a.cmp(e)>=0);return a},o.prototype._randrange=function(e,t){var n=t.sub(e);return e.add(this._randbelow(n))},o.prototype.test=function(e,t,n){var a=e.bitLength(),o=r.mont(e),i=new r(1).toRed(o);t||(t=Math.max(1,a/48|0));for(var c=e.subn(1),s=0;!c.testn(s);s++);for(var l=e.shrn(s),g=c.toRed(o);t>0;t--){var I=this._randrange(new r(2),c);n&&n(I);var B=I.toRed(o).redPow(l);if(0!==B.cmp(i)&&0!==B.cmp(g)){for(var A=1;A<s;A++){if(0===(B=B.redSqr()).cmp(i))return!1;if(0===B.cmp(g))break}if(A===s)return!1}}return!0},o.prototype.getDivisor=function(e,t){var n=e.bitLength(),a=r.mont(e),o=new r(1).toRed(a);t||(t=Math.max(1,n/48|0));for(var i=e.subn(1),c=0;!i.testn(c);c++);for(var s=e.shrn(c),l=i.toRed(a);t>0;t--){var g=this._randrange(new r(2),i),I=e.gcd(g);if(0!==I.cmpn(1))return I;var B=g.toRed(a).redPow(s);if(0!==B.cmp(o)&&0!==B.cmp(l)){for(var A=1;A<c;A++){if(0===(B=B.redSqr()).cmp(o))return B.fromRed().subn(1).gcd(e);if(0===B.cmp(l))break}if(A===c)return(B=B.redSqr()).fromRed().subn(1).gcd(e)}}return!1}},function(e,t,n){"use strict";var r=t;function a(e){return 1===e.length?"0"+e:e}function o(e){for(var t="",n=0;n<e.length;n++)t+=a(e[n].toString(16));return t}r.toArray=function(e,t){if(Array.isArray(e))return e.slice();if(!e)return[];var n=[];if("string"!=typeof e){for(var r=0;r<e.length;r++)n[r]=0|e[r];return n}if("hex"===t)for((e=e.replace(/[^a-z0-9]+/gi,"")).length%2!=0&&(e="0"+e),r=0;r<e.length;r+=2)n.push(parseInt(e[r]+e[r+1],16));else for(r=0;r<e.length;r++){var a=e.charCodeAt(r),o=a>>8,i=255&a;o?n.push(o,i):n.push(i)}return n},r.zero2=a,r.toHex=o,r.encode=function(e,t){return"hex"===t?o(e):e}},function(e,t,n){"use strict";var r=t;r.base=n(24),r.short=n(130),r.mont=n(131),r.edwards=n(132)},function(e,t,n){"use strict";var r=n(10).rotr32;function a(e,t,n){return e&t^~e&n}function o(e,t,n){return e&t^e&n^t&n}function i(e,t,n){return e^t^n}t.ft_1=function(e,t,n,r){return 0===e?a(t,n,r):1===e||3===e?i(t,n,r):2===e?o(t,n,r):void 0},t.ch32=a,t.maj32=o,t.p32=i,t.s0_256=function(e){return r(e,2)^r(e,13)^r(e,22)},t.s1_256=function(e){return r(e,6)^r(e,11)^r(e,25)},t.g0_256=function(e){return r(e,7)^r(e,18)^e>>>3},t.g1_256=function(e){return r(e,17)^r(e,19)^e>>>10}},function(e,t,n){"use strict";var r=n(10),a=n(18),o=n(72),i=n(6),c=r.sum32,s=r.sum32_4,l=r.sum32_5,g=o.ch32,I=o.maj32,B=o.s0_256,A=o.s1_256,u=o.g0_256,d=o.g1_256,_=a.BlockHash,C=[1116352408,1899447441,3049323471,3921009573,961987163,1508970993,2453635748,2870763221,3624381080,310598401,607225278,1426881987,1925078388,2162078206,2614888103,3248222580,3835390401,4022224774,264347078,604807628,770255983,1249150122,1555081692,1996064986,2554220882,2821834349,2952996808,3210313671,3336571891,3584528711,113926993,338241895,666307205,773529912,1294757372,1396182291,1695183700,1986661051,2177026350,2456956037,2730485921,2820302411,3259730800,3345764771,3516065817,3600352804,4094571909,275423344,430227734,506948616,659060556,883997877,958139571,1322822218,1537002063,1747873779,1955562222,2024104815,2227730452,2361852424,2428436474,2756734187,3204031479,3329325298];function b(){if(!(this instanceof b))return new b;_.call(this),this.h=[1779033703,3144134277,1013904242,2773480762,1359893119,2600822924,528734635,1541459225],this.k=C,this.W=new Array(64)}r.inherits(b,_),e.exports=b,b.blockSize=512,b.outSize=256,b.hmacStrength=192,b.padLength=64,b.prototype._update=function(e,t){for(var n=this.W,r=0;r<16;r++)n[r]=e[t+r];for(;r<n.length;r++)n[r]=s(d(n[r-2]),n[r-7],u(n[r-15]),n[r-16]);var a=this.h[0],o=this.h[1],_=this.h[2],C=this.h[3],b=this.h[4],p=this.h[5],Q=this.h[6],h=this.h[7];for(i(this.k.length===n.length),r=0;r<n.length;r++){var y=l(h,A(b),g(b,p,Q),this.k[r],n[r]),m=c(B(a),I(a,o,_));h=Q,Q=p,p=b,b=c(C,y),C=_,_=o,o=a,a=c(y,m)}this.h[0]=c(this.h[0],a),this.h[1]=c(this.h[1],o),this.h[2]=c(this.h[2],_),this.h[3]=c(this.h[3],C),this.h[4]=c(this.h[4],b),this.h[5]=c(this.h[5],p),this.h[6]=c(this.h[6],Q),this.h[7]=c(this.h[7],h)},b.prototype._digest=function(e){return"hex"===e?r.toHex32(this.h,"big"):r.split32(this.h,"big")}},function(e,t,n){"use strict";var r=n(10),a=n(18),o=n(6),i=r.rotr64_hi,c=r.rotr64_lo,s=r.shr64_hi,l=r.shr64_lo,g=r.sum64,I=r.sum64_hi,B=r.sum64_lo,A=r.sum64_4_hi,u=r.sum64_4_lo,d=r.sum64_5_hi,_=r.sum64_5_lo,C=a.BlockHash,b=[1116352408,3609767458,1899447441,602891725,3049323471,3964484399,3921009573,2173295548,961987163,4081628472,1508970993,3053834265,2453635748,2937671579,2870763221,3664609560,3624381080,2734883394,310598401,1164996542,607225278,1323610764,1426881987,3590304994,1925078388,4068182383,2162078206,991336113,2614888103,633803317,3248222580,3479774868,3835390401,2666613458,4022224774,944711139,264347078,2341262773,604807628,2007800933,770255983,1495990901,1249150122,1856431235,1555081692,3175218132,1996064986,2198950837,2554220882,3999719339,2821834349,766784016,2952996808,2566594879,3210313671,3203337956,3336571891,1034457026,3584528711,2466948901,113926993,3758326383,338241895,168717936,666307205,1188179964,773529912,1546045734,1294757372,1522805485,1396182291,2643833823,1695183700,2343527390,1986661051,1014477480,2177026350,1206759142,2456956037,344077627,2730485921,1290863460,2820302411,3158454273,3259730800,3505952657,3345764771,106217008,3516065817,3606008344,3600352804,1432725776,4094571909,1467031594,275423344,851169720,430227734,3100823752,506948616,1363258195,659060556,3750685593,883997877,3785050280,958139571,3318307427,1322822218,3812723403,1537002063,2003034995,1747873779,3602036899,1955562222,1575990012,2024104815,1125592928,2227730452,2716904306,2361852424,442776044,2428436474,593698344,2756734187,3733110249,3204031479,2999351573,3329325298,3815920427,3391569614,3928383900,3515267271,566280711,3940187606,3454069534,4118630271,4000239992,116418474,1914138554,174292421,2731055270,289380356,3203993006,460393269,320620315,685471733,587496836,852142971,1086792851,1017036298,365543100,1126000580,2618297676,1288033470,3409855158,1501505948,4234509866,1607167915,987167468,1816402316,1246189591];function p(){if(!(this instanceof p))return new p;C.call(this),this.h=[1779033703,4089235720,3144134277,2227873595,1013904242,4271175723,2773480762,1595750129,1359893119,2917565137,2600822924,725511199,528734635,4215389547,1541459225,327033209],this.k=b,this.W=new Array(160)}function Q(e,t,n,r,a){var o=e&n^~e&a;return o<0&&(o+=4294967296),o}function h(e,t,n,r,a,o){var i=t&r^~t&o;return i<0&&(i+=4294967296),i}function y(e,t,n,r,a){var o=e&n^e&a^n&a;return o<0&&(o+=4294967296),o}function m(e,t,n,r,a,o){var i=t&r^t&o^r&o;return i<0&&(i+=4294967296),i}function F(e,t){var n=i(e,t,28)^i(t,e,2)^i(t,e,7);return n<0&&(n+=4294967296),n}function U(e,t){var n=c(e,t,28)^c(t,e,2)^c(t,e,7);return n<0&&(n+=4294967296),n}function f(e,t){var n=i(e,t,14)^i(e,t,18)^i(t,e,9);return n<0&&(n+=4294967296),n}function G(e,t){var n=c(e,t,14)^c(e,t,18)^c(t,e,9);return n<0&&(n+=4294967296),n}function E(e,t){var n=i(e,t,1)^i(e,t,8)^s(e,t,7);return n<0&&(n+=4294967296),n}function v(e,t){var n=c(e,t,1)^c(e,t,8)^l(e,t,7);return n<0&&(n+=4294967296),n}function Z(e,t){var n=i(e,t,19)^i(t,e,29)^s(e,t,6);return n<0&&(n+=4294967296),n}function X(e,t){var n=c(e,t,19)^c(t,e,29)^l(e,t,6);return n<0&&(n+=4294967296),n}r.inherits(p,C),e.exports=p,p.blockSize=1024,p.outSize=512,p.hmacStrength=192,p.padLength=128,p.prototype._prepareBlock=function(e,t){for(var n=this.W,r=0;r<32;r++)n[r]=e[t+r];for(;r<n.length;r+=2){var a=Z(n[r-4],n[r-3]),o=X(n[r-4],n[r-3]),i=n[r-14],c=n[r-13],s=E(n[r-30],n[r-29]),l=v(n[r-30],n[r-29]),g=n[r-32],I=n[r-31];n[r]=A(a,o,i,c,s,l,g,I),n[r+1]=u(a,o,i,c,s,l,g,I)}},p.prototype._update=function(e,t){this._prepareBlock(e,t);var n=this.W,r=this.h[0],a=this.h[1],i=this.h[2],c=this.h[3],s=this.h[4],l=this.h[5],A=this.h[6],u=this.h[7],C=this.h[8],b=this.h[9],p=this.h[10],E=this.h[11],v=this.h[12],Z=this.h[13],X=this.h[14],W=this.h[15];o(this.k.length===n.length);for(var R=0;R<n.length;R+=2){var V=X,O=W,x=f(C,b),T=G(C,b),N=Q(C,0,p,0,v),w=h(0,b,0,E,0,Z),k=this.k[R],Y=this.k[R+1],S=n[R],H=n[R+1],D=d(V,O,x,T,N,w,k,Y,S,H),J=_(V,O,x,T,N,w,k,Y,S,H);V=F(r,a),O=U(r,a),x=y(r,0,i,0,s),T=m(0,a,0,c,0,l);var P=I(V,O,x,T),M=B(V,O,x,T);X=v,W=Z,v=p,Z=E,p=C,E=b,C=I(A,u,D,J),b=B(u,u,D,J),A=s,u=l,s=i,l=c,i=r,c=a,r=I(D,J,P,M),a=B(D,J,P,M)}g(this.h,0,r,a),g(this.h,2,i,c),g(this.h,4,s,l),g(this.h,6,A,u),g(this.h,8,C,b),g(this.h,10,p,E),g(this.h,12,v,Z),g(this.h,14,X,W)},p.prototype._digest=function(e){return"hex"===e?r.toHex32(this.h,"big"):r.split32(this.h,"big")}},function(e,t,n){function r(e){return(r="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e})(e)}var a=n(1),o=n(20).Reporter,i=n(3).Buffer;function c(e,t){o.call(this,t),i.isBuffer(e)?(this.base=e,this.offset=0,this.length=e.length):this.error("Input not Buffer")}function s(e,t){if(Array.isArray(e))this.length=0,this.value=e.map((function(e){return e instanceof s||(e=new s(e,t)),this.length+=e.length,e}),this);else if("number"==typeof e){if(!(0<=e&&e<=255))return t.error("non-byte EncoderBuffer value");this.value=e,this.length=1}else if("string"==typeof e)this.value=e,this.length=i.byteLength(e);else{if(!i.isBuffer(e))return t.error("Unsupported type: "+r(e));this.value=e,this.length=e.length}}a(c,o),t.DecoderBuffer=c,c.prototype.save=function(){return{offset:this.offset,reporter:o.prototype.save.call(this)}},c.prototype.restore=function(e){var t=new c(this.base);return t.offset=e.offset,t.length=this.offset,this.offset=e.offset,o.prototype.restore.call(this,e.reporter),t},c.prototype.isEmpty=function(){return this.offset===this.length},c.prototype.readUInt8=function(e){return this.offset+1<=this.length?this.base.readUInt8(this.offset++,!0):this.error(e||"DecoderBuffer overrun")},c.prototype.skip=function(e,t){if(!(this.offset+e<=this.length))return this.error(t||"DecoderBuffer overrun");var n=new c(this.base);return n._reporterState=this._reporterState,n.offset=this.offset,n.length=this.offset+e,this.offset+=e,n},c.prototype.raw=function(e){return this.base.slice(e?e.offset:this.offset,this.length)},t.EncoderBuffer=s,s.prototype.join=function(e,t){return e||(e=new i(this.length)),t||(t=0),0===this.length||(Array.isArray(this.value)?this.value.forEach((function(n){n.join(e,t),t+=n.length})):("number"==typeof this.value?e[t]=this.value:"string"==typeof this.value?e.write(this.value,t):i.isBuffer(this.value)&&this.value.copy(e,t),t+=this.length)),e}},function(e,t,n){var r=t;r._reverse=function(e){var t={};return Object.keys(e).forEach((function(n){(0|n)==n&&(n|=0);var r=e[n];t[r]=n})),t},r.der=n(152)},function(e,t,n){var r=n(1),a=n(19),o=a.base,i=a.bignum,c=a.constants.der;function s(e){this.enc="der",this.name=e.name,this.entity=e,this.tree=new l,this.tree._init(e.body)}function l(e){o.Node.call(this,"der",e)}function g(e,t){var n=e.readUInt8(t);if(e.isError(n))return n;var r=c.tagClass[n>>6],a=0==(32&n);if(31==(31&n)){var o=n;for(n=0;128==(128&o);){if(o=e.readUInt8(t),e.isError(o))return o;n<<=7,n|=127&o}}else n&=31;return{cls:r,primitive:a,tag:n,tagStr:c.tag[n]}}function I(e,t,n){var r=e.readUInt8(n);if(e.isError(r))return r;if(!t&&128===r)return null;if(0==(128&r))return r;var a=127&r;if(a>4)return e.error("length octect is too long");r=0;for(var o=0;o<a;o++){r<<=8;var i=e.readUInt8(n);if(e.isError(i))return i;r|=i}return r}e.exports=s,s.prototype.decode=function(e,t){return e instanceof o.DecoderBuffer||(e=new o.DecoderBuffer(e,t)),this.tree._decode(e,t)},r(l,o.Node),l.prototype._peekTag=function(e,t,n){if(e.isEmpty())return!1;var r=e.save(),a=g(e,'Failed to peek tag: "'+t+'"');return e.isError(a)?a:(e.restore(r),a.tag===t||a.tagStr===t||a.tagStr+"of"===t||n)},l.prototype._decodeTag=function(e,t,n){var r=g(e,'Failed to decode tag of "'+t+'"');if(e.isError(r))return r;var a=I(e,r.primitive,'Failed to get length of "'+t+'"');if(e.isError(a))return a;if(!n&&r.tag!==t&&r.tagStr!==t&&r.tagStr+"of"!==t)return e.error('Failed to match tag: "'+t+'"');if(r.primitive||null!==a)return e.skip(a,'Failed to match body of: "'+t+'"');var o=e.save(),i=this._skipUntilEnd(e,'Failed to skip indefinite length body: "'+this.tag+'"');return e.isError(i)?i:(a=e.offset-o.offset,e.restore(o),e.skip(a,'Failed to match body of: "'+t+'"'))},l.prototype._skipUntilEnd=function(e,t){for(;;){var n=g(e,t);if(e.isError(n))return n;var r,a=I(e,n.primitive,t);if(e.isError(a))return a;if(r=n.primitive||null!==a?e.skip(a):this._skipUntilEnd(e,t),e.isError(r))return r;if("end"===n.tagStr)break}},l.prototype._decodeList=function(e,t,n,r){for(var a=[];!e.isEmpty();){var o=this._peekTag(e,"end");if(e.isError(o))return o;var i=n.decode(e,"der",r);if(e.isError(i)&&o)break;a.push(i)}return a},l.prototype._decodeStr=function(e,t){if("bitstr"===t){var n=e.readUInt8();return e.isError(n)?n:{unused:n,data:e.raw()}}if("bmpstr"===t){var r=e.raw();if(r.length%2==1)return e.error("Decoding of string type: bmpstr length mismatch");for(var a="",o=0;o<r.length/2;o++)a+=String.fromCharCode(r.readUInt16BE(2*o));return a}if("numstr"===t){var i=e.raw().toString("ascii");return this._isNumstr(i)?i:e.error("Decoding of string type: numstr unsupported characters")}if("octstr"===t)return e.raw();if("objDesc"===t)return e.raw();if("printstr"===t){var c=e.raw().toString("ascii");return this._isPrintstr(c)?c:e.error("Decoding of string type: printstr unsupported characters")}return/str$/.test(t)?e.raw().toString():e.error("Decoding of string type: "+t+" unsupported")},l.prototype._decodeObjid=function(e,t,n){for(var r,a=[],o=0;!e.isEmpty();){var i=e.readUInt8();o<<=7,o|=127&i,0==(128&i)&&(a.push(o),o=0)}128&i&&a.push(o);var c=a[0]/40|0,s=a[0]%40;if(r=n?a:[c,s].concat(a.slice(1)),t){var l=t[r.join(" ")];void 0===l&&(l=t[r.join(".")]),void 0!==l&&(r=l)}return r},l.prototype._decodeTime=function(e,t){var n=e.raw().toString();if("gentime"===t)var r=0|n.slice(0,4),a=0|n.slice(4,6),o=0|n.slice(6,8),i=0|n.slice(8,10),c=0|n.slice(10,12),s=0|n.slice(12,14);else{if("utctime"!==t)return e.error("Decoding "+t+" time is not supported yet");r=0|n.slice(0,2),a=0|n.slice(2,4),o=0|n.slice(4,6),i=0|n.slice(6,8),c=0|n.slice(8,10),s=0|n.slice(10,12),r=r<70?2e3+r:1900+r}return Date.UTC(r,a-1,o,i,c,s,0)},l.prototype._decodeNull=function(e){return null},l.prototype._decodeBool=function(e){var t=e.readUInt8();return e.isError(t)?t:0!==t},l.prototype._decodeInt=function(e,t){var n=e.raw(),r=new i(n);return t&&(r=t[r.toString(10)]||r),r},l.prototype._use=function(e,t){return"function"==typeof e&&(e=e(t)),e._getDecoder("der").tree}},function(e,t,n){var r=n(1),a=n(3).Buffer,o=n(19),i=o.base,c=o.constants.der;function s(e){this.enc="der",this.name=e.name,this.entity=e,this.tree=new l,this.tree._init(e.body)}function l(e){i.Node.call(this,"der",e)}function g(e){return e<10?"0"+e:e}e.exports=s,s.prototype.encode=function(e,t){return this.tree._encode(e,t).join()},r(l,i.Node),l.prototype._encodeComposite=function(e,t,n,r){var o,i=function(e,t,n,r){var a;if("seqof"===e?e="seq":"setof"===e&&(e="set"),c.tagByName.hasOwnProperty(e))a=c.tagByName[e];else{if("number"!=typeof e||(0|e)!==e)return r.error("Unknown tag: "+e);a=e}return a>=31?r.error("Multi-octet tag encoding unsupported"):(t||(a|=32),a|c.tagClassByName[n||"universal"]<<6)}(e,t,n,this.reporter);if(r.length<128)return(o=new a(2))[0]=i,o[1]=r.length,this._createEncoderBuffer([o,r]);for(var s=1,l=r.length;l>=256;l>>=8)s++;(o=new a(2+s))[0]=i,o[1]=128|s,l=1+s;for(var g=r.length;g>0;l--,g>>=8)o[l]=255&g;return this._createEncoderBuffer([o,r])},l.prototype._encodeStr=function(e,t){if("bitstr"===t)return this._createEncoderBuffer([0|e.unused,e.data]);if("bmpstr"===t){for(var n=new a(2*e.length),r=0;r<e.length;r++)n.writeUInt16BE(e.charCodeAt(r),2*r);return this._createEncoderBuffer(n)}return"numstr"===t?this._isNumstr(e)?this._createEncoderBuffer(e):this.reporter.error("Encoding of string type: numstr supports only digits and space"):"printstr"===t?this._isPrintstr(e)?this._createEncoderBuffer(e):this.reporter.error("Encoding of string type: printstr supports only latin upper and lower case letters, digits, space, apostrophe, left and rigth parenthesis, plus sign, comma, hyphen, dot, slash, colon, equal sign, question mark"):/str$/.test(t)||"objDesc"===t?this._createEncoderBuffer(e):this.reporter.error("Encoding of string type: "+t+" unsupported")},l.prototype._encodeObjid=function(e,t,n){if("string"==typeof e){if(!t)return this.reporter.error("string objid given, but no values map found");if(!t.hasOwnProperty(e))return this.reporter.error("objid not found in values map");e=t[e].split(/[\s\.]+/g);for(var r=0;r<e.length;r++)e[r]|=0}else if(Array.isArray(e))for(e=e.slice(),r=0;r<e.length;r++)e[r]|=0;if(!Array.isArray(e))return this.reporter.error("objid() should be either array or string, got: "+JSON.stringify(e));if(!n){if(e[1]>=40)return this.reporter.error("Second objid identifier OOB");e.splice(0,2,40*e[0]+e[1])}var o=0;for(r=0;r<e.length;r++){var i=e[r];for(o++;i>=128;i>>=7)o++}var c=new a(o),s=c.length-1;for(r=e.length-1;r>=0;r--)for(i=e[r],c[s--]=127&i;(i>>=7)>0;)c[s--]=128|127&i;return this._createEncoderBuffer(c)},l.prototype._encodeTime=function(e,t){var n,r=new Date(e);return"gentime"===t?n=[g(r.getFullYear()),g(r.getUTCMonth()+1),g(r.getUTCDate()),g(r.getUTCHours()),g(r.getUTCMinutes()),g(r.getUTCSeconds()),"Z"].join(""):"utctime"===t?n=[g(r.getFullYear()%100),g(r.getUTCMonth()+1),g(r.getUTCDate()),g(r.getUTCHours()),g(r.getUTCMinutes()),g(r.getUTCSeconds()),"Z"].join(""):this.reporter.error("Encoding "+t+" time is not supported yet"),this._encodeStr(n,"octstr")},l.prototype._encodeNull=function(){return this._createEncoderBuffer("")},l.prototype._encodeInt=function(e,t){if("string"==typeof e){if(!t)return this.reporter.error("String int or enum given, but no values map");if(!t.hasOwnProperty(e))return this.reporter.error("Values map doesn't contain: "+JSON.stringify(e));e=t[e]}if("number"!=typeof e&&!a.isBuffer(e)){var n=e.toArray();!e.sign&&128&n[0]&&n.unshift(0),e=new a(n)}if(a.isBuffer(e)){var r=e.length;0===e.length&&r++;var o=new a(r);return e.copy(o),0===e.length&&(o[0]=0),this._createEncoderBuffer(o)}if(e<128)return this._createEncoderBuffer(e);if(e<256)return this._createEncoderBuffer([0,e]);r=1;for(var i=e;i>=256;i>>=8)r++;for(i=(o=new Array(r)).length-1;i>=0;i--)o[i]=255&e,e>>=8;return 128&o[0]&&o.unshift(0),this._createEncoderBuffer(new a(o))},l.prototype._encodeBool=function(e){return this._createEncoderBuffer(e?255:0)},l.prototype._use=function(e,t){return"function"==typeof e&&(e=e(t)),e._getEncoder("der").tree},l.prototype._skipDefault=function(e,t,n){var r,a=this._baseState;if(null===a.default)return!1;var o=e.join();if(void 0===a.defaultBuffer&&(a.defaultBuffer=this._encodeValue(a.default,t,n).join()),o.length!==a.defaultBuffer.length)return!1;for(r=0;r<o.length;r++)if(o[r]!==a.defaultBuffer[r])return!1;return!0}},function(e){e.exports=JSON.parse('{"1.3.132.0.10":"secp256k1","1.3.132.0.33":"p224","1.2.840.10045.3.1.1":"p192","1.2.840.10045.3.1.7":"p256","1.3.132.0.34":"p384","1.3.132.0.35":"p521"}')},function(e,t,n){var r=n(15),a=n(2).Buffer;function o(e){var t=a.allocUnsafe(4);return t.writeUInt32BE(e,0),t}e.exports=function(e,t){for(var n,i=a.alloc(0),c=0;i.length<t;)n=o(c++),i=a.concat([i,r("sha1").update(e).update(n).digest()]);return i.slice(0,t)}},function(e,t){e.exports=function(e,t){for(var n=e.length,r=-1;++r<n;)e[r]^=t[r];return e}},function(e,t,n){var r=n(4),a=n(2).Buffer;e.exports=function(e,t){return a.from(e.toRed(r.mont(t.modulus)).redPow(new r(t.publicExponent)).fromRed().toArray())}},function(e,t,n){(function(t){var r=n(166).strict;e.exports=function(e){if(r(e)){var n=t.from(e.buffer);return e.byteLength!==e.buffer.byteLength&&(n=n.slice(e.byteOffset,e.byteOffset+e.byteLength)),n}return t.from(e)}}).call(this,n(3).Buffer)},,function(e,t,n){(function(e){function t(e){return(t="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e})(e)}var n=function(e){"use strict";var n=Object.prototype,r=n.hasOwnProperty,a="function"==typeof Symbol?Symbol:{},o=a.iterator||"@@iterator",i=a.asyncIterator||"@@asyncIterator",c=a.toStringTag||"@@toStringTag";function s(e,t,n,r){var a=t&&t.prototype instanceof I?t:I,o=Object.create(a.prototype),i=new m(r||[]);return o._invoke=function(e,t,n){var r="suspendedStart";return function(a,o){if("executing"===r)throw new Error("Generator is already running");if("completed"===r){if("throw"===a)throw o;return{value:void 0,done:!0}}for(n.method=a,n.arg=o;;){var i=n.delegate;if(i){var c=Q(i,n);if(c){if(c===g)continue;return c}}if("next"===n.method)n.sent=n._sent=n.arg;else if("throw"===n.method){if("suspendedStart"===r)throw r="completed",n.arg;n.dispatchException(n.arg)}else"return"===n.method&&n.abrupt("return",n.arg);r="executing";var s=l(e,t,n);if("normal"===s.type){if(r=n.done?"completed":"suspendedYield",s.arg===g)continue;return{value:s.arg,done:n.done}}"throw"===s.type&&(r="completed",n.method="throw",n.arg=s.arg)}}}(e,n,i),o}function l(e,t,n){try{return{type:"normal",arg:e.call(t,n)}}catch(e){return{type:"throw",arg:e}}}e.wrap=s;var g={};function I(){}function B(){}function A(){}var u={};u[o]=function(){return this};var d=Object.getPrototypeOf,_=d&&d(d(F([])));_&&_!==n&&r.call(_,o)&&(u=_);var C=A.prototype=I.prototype=Object.create(u);function b(e){["next","throw","return"].forEach((function(t){e[t]=function(e){return this._invoke(t,e)}}))}function p(e,n){var a;this._invoke=function(o,i){function c(){return new n((function(a,c){!function a(o,i,c,s){var g=l(e[o],e,i);if("throw"!==g.type){var I=g.arg,B=I.value;return B&&"object"===t(B)&&r.call(B,"__await")?n.resolve(B.__await).then((function(e){a("next",e,c,s)}),(function(e){a("throw",e,c,s)})):n.resolve(B).then((function(e){I.value=e,c(I)}),(function(e){return a("throw",e,c,s)}))}s(g.arg)}(o,i,a,c)}))}return a=a?a.then(c,c):c()}}function Q(e,t){var n=e.iterator[t.method];if(void 0===n){if(t.delegate=null,"throw"===t.method){if(e.iterator.return&&(t.method="return",t.arg=void 0,Q(e,t),"throw"===t.method))return g;t.method="throw",t.arg=new TypeError("The iterator does not provide a 'throw' method")}return g}var r=l(n,e.iterator,t.arg);if("throw"===r.type)return t.method="throw",t.arg=r.arg,t.delegate=null,g;var a=r.arg;return a?a.done?(t[e.resultName]=a.value,t.next=e.nextLoc,"return"!==t.method&&(t.method="next",t.arg=void 0),t.delegate=null,g):a:(t.method="throw",t.arg=new TypeError("iterator result is not an object"),t.delegate=null,g)}function h(e){var t={tryLoc:e[0]};1 in e&&(t.catchLoc=e[1]),2 in e&&(t.finallyLoc=e[2],t.afterLoc=e[3]),this.tryEntries.push(t)}function y(e){var t=e.completion||{};t.type="normal",delete t.arg,e.completion=t}function m(e){this.tryEntries=[{tryLoc:"root"}],e.forEach(h,this),this.reset(!0)}function F(e){if(e){var t=e[o];if(t)return t.call(e);if("function"==typeof e.next)return e;if(!isNaN(e.length)){var n=-1,a=function t(){for(;++n<e.length;)if(r.call(e,n))return t.value=e[n],t.done=!1,t;return t.value=void 0,t.done=!0,t};return a.next=a}}return{next:U}}function U(){return{value:void 0,done:!0}}return B.prototype=C.constructor=A,A.constructor=B,A[c]=B.displayName="GeneratorFunction",e.isGeneratorFunction=function(e){var t="function"==typeof e&&e.constructor;return!!t&&(t===B||"GeneratorFunction"===(t.displayName||t.name))},e.mark=function(e){return Object.setPrototypeOf?Object.setPrototypeOf(e,A):(e.__proto__=A,c in e||(e[c]="GeneratorFunction")),e.prototype=Object.create(C),e},e.awrap=function(e){return{__await:e}},b(p.prototype),p.prototype[i]=function(){return this},e.AsyncIterator=p,e.async=function(t,n,r,a,o){void 0===o&&(o=Promise);var i=new p(s(t,n,r,a),o);return e.isGeneratorFunction(n)?i:i.next().then((function(e){return e.done?e.value:i.next()}))},b(C),C[c]="Generator",C[o]=function(){return this},C.toString=function(){return"[object Generator]"},e.keys=function(e){var t=[];for(var n in e)t.push(n);return t.reverse(),function n(){for(;t.length;){var r=t.pop();if(r in e)return n.value=r,n.done=!1,n}return n.done=!0,n}},e.values=F,m.prototype={constructor:m,reset:function(e){if(this.prev=0,this.next=0,this.sent=this._sent=void 0,this.done=!1,this.delegate=null,this.method="next",this.arg=void 0,this.tryEntries.forEach(y),!e)for(var t in this)"t"===t.charAt(0)&&r.call(this,t)&&!isNaN(+t.slice(1))&&(this[t]=void 0)},stop:function(){this.done=!0;var e=this.tryEntries[0].completion;if("throw"===e.type)throw e.arg;return this.rval},dispatchException:function(e){if(this.done)throw e;var t=this;function n(n,r){return i.type="throw",i.arg=e,t.next=n,r&&(t.method="next",t.arg=void 0),!!r}for(var a=this.tryEntries.length-1;a>=0;--a){var o=this.tryEntries[a],i=o.completion;if("root"===o.tryLoc)return n("end");if(o.tryLoc<=this.prev){var c=r.call(o,"catchLoc"),s=r.call(o,"finallyLoc");if(c&&s){if(this.prev<o.catchLoc)return n(o.catchLoc,!0);if(this.prev<o.finallyLoc)return n(o.finallyLoc)}else if(c){if(this.prev<o.catchLoc)return n(o.catchLoc,!0)}else{if(!s)throw new Error("try statement without catch or finally");if(this.prev<o.finallyLoc)return n(o.finallyLoc)}}}},abrupt:function(e,t){for(var n=this.tryEntries.length-1;n>=0;--n){var a=this.tryEntries[n];if(a.tryLoc<=this.prev&&r.call(a,"finallyLoc")&&this.prev<a.finallyLoc){var o=a;break}}o&&("break"===e||"continue"===e)&&o.tryLoc<=t&&t<=o.finallyLoc&&(o=null);var i=o?o.completion:{};return i.type=e,i.arg=t,o?(this.method="next",this.next=o.finallyLoc,g):this.complete(i)},complete:function(e,t){if("throw"===e.type)throw e.arg;return"break"===e.type||"continue"===e.type?this.next=e.arg:"return"===e.type?(this.rval=this.arg=e.arg,this.method="return",this.next="end"):"normal"===e.type&&t&&(this.next=t),g},finish:function(e){for(var t=this.tryEntries.length-1;t>=0;--t){var n=this.tryEntries[t];if(n.finallyLoc===e)return this.complete(n.completion,n.afterLoc),y(n),g}},catch:function(e){for(var t=this.tryEntries.length-1;t>=0;--t){var n=this.tryEntries[t];if(n.tryLoc===e){var r=n.completion;if("throw"===r.type){var a=r.arg;y(n)}return a}}throw new Error("illegal catch attempt")},delegateYield:function(e,t,n){return this.delegate={iterator:F(e),resultName:t,nextLoc:n},"next"===this.method&&(this.arg=void 0),g}},e}("object"===t(e)?e.exports:{});try{regeneratorRuntime=n}catch(e){Function("r","regeneratorRuntime = r")(n)}}).call(this,n(42)(e))},function(e,t,n){(function(r,a,o,i){var c,s;function l(e){return(l="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e})(e)}void 0===(s="function"==typeof(c=function(t){"use strict";var c;void 0===(c=t)&&(c={});var s=c;"object"!=l(s.sodium)&&("object"==(void 0===r?"undefined":l(r))?s=r:"object"==("undefined"==typeof window?"undefined":l(window))&&(s=window)),"object"==l(s.sodium)&&"number"==typeof s.sodium.totalMemory&&(c.TOTAL_MEMORY=s.sodium.totalMemory);var g=c;return c.ready=new Promise((function(t,r){(s=g).onAbort=r,s.print=function(e){},s.printErr=function(e){},s.onRuntimeInitialized=function(){try{s._crypto_secretbox_keybytes(),t()}catch(e){r(e)}},s.useBackupModule=function(){var t,r=void 0!==(r={})?r:{},c={};for(t in r)r.hasOwnProperty(t)&&(c[t]=r[t]);var s,I,B,A,u=[],d=!1;s="object"==("undefined"==typeof window?"undefined":l(window)),I="function"==typeof importScripts,B="object"==(void 0===a?"undefined":l(a))&&"object"==l(a.versions)&&"string"==typeof a.versions.node,d=B&&!s&&!I,A=!s&&!d&&!I;var _,C,b,p,Q,h="";d?(h=o+"/",_=function(e,t){var r;return(r=Ae(e))||(p||(p=n(44)),Q||(Q=n(45)),e=Q.normalize(e),r=p.readFileSync(e)),t?r:r.toString()},b=function(e){var t=_(e,!0);return t.buffer||(t=new Uint8Array(t)),f(t.buffer),t},a.argv.length>1&&a.argv[1].replace(/\\/g,"/"),u=a.argv.slice(2),e.exports=r,a.on("unhandledRejection",K),r.inspect=function(){return"[Emscripten Module object]"}):A?("undefined"!=typeof read&&(_=function(e){var t=Ae(e);return t?Ie(t):read(e)}),b=function(e){var t;return(t=Ae(e))?t:"function"==typeof readbuffer?new Uint8Array(readbuffer(e)):(f("object"==l(t=read(e,"binary"))),t)},"undefined"!=typeof scriptArgs?u=scriptArgs:void 0!==arguments&&(u=arguments),"undefined"!=typeof print&&("undefined"==typeof console&&(console={}),console.log=print,console.warn=console.error="undefined"!=typeof printErr?printErr:print)):(s||I)&&(I?h=self.location.href:document.currentScript&&(h=document.currentScript.src),h=0!==h.indexOf("blob:")?h.substr(0,h.lastIndexOf("/")+1):"",_=function(e){try{var t=new XMLHttpRequest;return t.open("GET",e,!1),t.send(null),t.responseText}catch(t){var n=Ae(e);if(n)return Ie(n);throw t}},I&&(b=function(e){try{var t=new XMLHttpRequest;return t.open("GET",e,!1),t.responseType="arraybuffer",t.send(null),new Uint8Array(t.response)}catch(t){var n=Ae(e);if(n)return n;throw t}}),C=function(e,t,n){var r=new XMLHttpRequest;r.open("GET",e,!0),r.responseType="arraybuffer",r.onload=function(){if(200==r.status||0==r.status&&r.response)t(r.response);else{var a=Ae(e);a?t(a.buffer):n()}},r.onerror=n,r.send(null)});var y=r.print||void 0,m=r.printErr||void 0;for(t in c)c.hasOwnProperty(t)&&(r[t]=c[t]);c=null,r.arguments&&(u=r.arguments),r.thisProgram&&r.thisProgram,r.quit&&r.quit,new Array(8);var F=0;r.wasmBinary&&r.wasmBinary,r.noExitRuntime&&r.noExitRuntime;var U=!1;function f(e,t){e||K("Assertion failed: "+t)}var G,E,v,Z,X,W,R,V="undefined"!=typeof TextDecoder?new TextDecoder("utf8"):void 0;function O(e,t){return e?function(e,t,n){for(var r=t+n,a=t;e[a]&&!(a>=r);)++a;if(a-t>16&&e.subarray&&V)return V.decode(e.subarray(t,a));for(var o="";t<a;){var i=e[t++];if(128&i){var c=63&e[t++];if(192!=(224&i)){var s=63&e[t++];if((i=224==(240&i)?(15&i)<<12|c<<6|s:(7&i)<<18|c<<12|s<<6|63&e[t++])<65536)o+=String.fromCharCode(i);else{var l=i-65536;o+=String.fromCharCode(55296|l>>10,56320|1023&l)}}else o+=String.fromCharCode((31&i)<<6|c)}else o+=String.fromCharCode(i)}return o}(v,e,t):""}function x(e,t){return e%t>0&&(e+=t-e%t),e}function T(e){G=e,r.HEAP8=E=new Int8Array(e),r.HEAP16=Z=new Int16Array(e),r.HEAP32=X=new Int32Array(e),r.HEAPU8=v=new Uint8Array(e),r.HEAPU16=new Uint16Array(e),r.HEAPU32=new Uint32Array(e),r.HEAPF32=W=new Float32Array(e),r.HEAPF64=R=new Float64Array(e)}"undefined"!=typeof TextDecoder&&new TextDecoder("utf-16le");var N=r.TOTAL_MEMORY||16777216;function w(e){for(;e.length>0;){var t=e.shift();if("function"!=typeof t){var n=t.func;"number"==typeof n?void 0===t.arg?r.dynCall_v(n):r.dynCall_vi(n,t.arg):n(void 0===t.arg?null:t.arg)}else t()}}N=(G=r.buffer?r.buffer:new ArrayBuffer(N)).byteLength,T(G),X[8808]=5278304;var k=[],Y=[],S=[],H=[],D=Math.abs,J=Math.ceil,P=Math.floor,M=Math.min,L=0,z=null,j=null;function K(e){throw r.onAbort&&r.onAbort(e),y(e+=""),m(e),U=!0,"abort("+e+"). Build with -s ASSERTIONS=1 for more info."}r.preloadedImages={},r.preloadedAudios={};var q,$,ee=null,te="data:application/octet-stream;base64,";function ne(e){return String.prototype.startsWith?e.startsWith(te):0===e.indexOf(te)}var re=[function(){return r.getRandomValue()},function(){if(void 0===r.getRandomValue)try{var e="object"==("undefined"==typeof window?"undefined":l(window))?window:self,t=void 0!==e.crypto?e.crypto:e.msCrypto,a=function(){var e=new Uint32Array(1);return t.getRandomValues(e),e[0]>>>0};a(),r.getRandomValue=a}catch(e){try{var o=n(46),i=function(){var e=o.randomBytes(4);return(e[0]<<24|e[1]<<16|e[2]<<8|e[3])>>>0};i(),r.getRandomValue=i}catch(e){throw"No secure random number generator found"}}}];function ae(e){return e}function oe(e){return e.replace(/\b__Z[\w\d_]+/g,(function(e){return e==e?e:e+" ["+e+"]"}))}function ie(){var e=new Error;if(!e.stack){try{throw new Error(0)}catch(t){e=t}if(!e.stack)return"(no stack trace available)"}return e.stack.toString()}function ce(){return E.length}function se(e){try{var t=new ArrayBuffer(e);if(t.byteLength!=e)return;return new Int8Array(t).set(E),Ce(t),T(t),1}catch(e){}}function le(e){return r.___errno_location&&(X[r.___errno_location()>>2]=e),e}ee="data:application/octet-stream;base64,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v2xF/xZF9QEXy7IAqmOqAEH4bwAlbJn/QCVFAABYPv5ZlJD/v0TgAfEnNQApy+3/kX7C/90q/f8ZY5cAYf3fAUpzMf8Gr0j/O7DLAHy3+QHk5GMAgQzP/qjAw//MsBD+mOqrAE0lVf8heIf/jsLjAR/WOgDVu33/6C48/750Kv6XshP/Mz7t/szswQDC6DwArCKd/70QuP5nA1//jekk/ikZC/8Vw6YAdvUtAEPVlf+fDBL/u6TjAaAZBQAMTsMBK8XhADCOKf7Emzz/38cSAZGInAD8dan+keLuAO8XawBttbz/5nAx/kmq7f/nt+P/UNwUAMJrfwF/zWUALjTFAdKrJP9YA1r/OJeNAGC7//8qTsgA/kZGAfR9qADMRIoBfNdGAGZCyP4RNOQAddyP/sv4ewA4Eq7/upek/zPo0AGg5Cv/+R0ZAUS+PwANAAAAAP8AAAAA9QAAAAAAAPsAAAAAAAD9AAAAAPMAAAAABwAAAAAAAwAAAADzAAAAAAUAAAAAAAAAAAsAAAAAAAsAAAAA8wAAAAAAAP0AAAAAAP8AAAAAAwAAAAD1AAAAAAAAAA8AAAAAAP8AAAAA/wAAAAAHAAAAAAUAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACbolY/CsiewRcP0ifLvmPDV36wF08YzObE4AohtU/wFxxdqcD1N2E+6PAt2DRBnDyogU/osOczGTsf9d5KsA3rs////////////////////////////////////////f+3///////////////////////////////////////9/7v///////////////////////////////////////3/t0/VcGmMSWNac96Le+d4UAAAAAAAAAAAAAAAAAAAAEAjJvPNn5glqO6fKhIWuZ7sr+JT+cvNuPPE2HV869U+l0YLmrX9SDlEfbD4rjGgFm2u9Qfur2YMfeSF+ExnN4FsirijXmC+KQs1l7yORRDdxLztN7M/7wLW824mBpdu16Ti1SPNbwlY5GdAFtvER8VmbTxmvpII/khiBbdrVXhyrQgIDo5iqB9i+b3BFAVuDEoyy5E6+hTEk4rT/1cN9DFVviXvydF2+crGWFjv+sd6ANRLHJacG3JuUJmnPdPGbwdJK8Z7BaZvk4yVPOIZHvu+11YyLxp3BD2WcrHfMoQwkdQIrWW8s6S2D5KZuqoR0StT7Qb3cqbBctVMRg9qI+Xar32buUlE+mBAytC1txjGoPyH7mMgnA7DkDu++x39Zv8KPqD3zC+DGJacKk0eRp9VvggPgUWPKBnBuDgpnKSkU/C/SRoUKtycmySZcOCEbLu0qxFr8bSxN37OVnRMNOFPeY6+LVHMKZaiydzy7Cmp25q7tRy7JwoE7NYIUhSxykmQD8Uyh6L+iATBCvEtmGqiRl/jQcItLwjC+VAajUWzHGFLv1hnoktEQqWVVJAaZ1iogcVeFNQ70uNG7MnCgahDI0NK4FsGkGVOrQVEIbDcemeuO30x3SCeoSJvhtbywNGNaycWzDBw5y4pB40qq2E5z42N3T8qcW6O4stbzby5o/LLvXe6Cj3RgLxdDb2OleHKr8KEUeMiE7DlkGggCx4woHmMj+v++kOm9gt7rbFCkFXnGsvej+b4rU3Lj8nhxxpxhJurOPifKB8LAIce4htEe6+DN1n3a6njRbu5/T331um8Xcqpn8AammMiixX1jCq4N+b4EmD8RG0ccEzULcRuEfQQj9XfbKJMkx0B7q8oyvL7JFQq+njxMDRCcxGcdQ7ZCPsu+1MVMKn5l/Jwpf1ns+tY6q2/LXxdYR0qMGURsgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA4Ot6fDtBuK4WVuP68Z/EatoJjeucMrH9hmIFFl9JuABfnJW8o1CMJLHQsVWcg+9bBERcxFgcjobYIk7d0J8RV+z///////////////////////////////////////9/7f///////////////////////////////////////3/u////////////////////////////////////////f1NpZ0VkMjU1MTkgbm8gRWQyNTUxOSBjb2xsaXNpb25zAQAAAAAAAAAAAAAAAAAAAFMtPmJ1ZmxlbiA8PSBCTEFLRTJCX0JMT0NLQllURVMAY3J5cHRvX2dlbmVyaWNoYXNoL2JsYWtlMmIvcmVmL2JsYWtlMmItcmVmLmMAYmxha2UyYl9maW5hbABvdXRsZW4gPD0gVUlOVDhfTUFYAGNyeXB0b19nZW5lcmljaGFzaC9ibGFrZTJiL3JlZi9nZW5lcmljaGFzaF9ibGFrZTJiLmMAY3J5cHRvX2dlbmVyaWNoYXNoX2JsYWtlMmJfZmluYWwAJGFyZ29uMmlkACRhcmdvbjJpACR2PQAkbT0ALHQ9ACxwPQAkYXJnb24yaWQkdj0AJGFyZ29uMmkkdj0AJGFyZ29uMmlkJAAkYXJnb24yaSQAInsgcmV0dXJuIE1vZHVsZS5nZXRSYW5kb21WYWx1ZSgpOyB9IgB7IGlmIChNb2R1bGUuZ2V0UmFuZG9tVmFsdWUgPT09IHVuZGVmaW5lZCkgeyB0cnkgeyB2YXIgd2luZG93XyA9ICdvYmplY3QnID09PSB0eXBlb2Ygd2luZG93ID8gd2luZG93IDogc2VsZjsgdmFyIGNyeXB0b18gPSB0eXBlb2Ygd2luZG93Xy5jcnlwdG8gIT09ICd1bmRlZmluZWQnID8gd2luZG93Xy5jcnlwdG8gOiB3aW5kb3dfLm1zQ3J5cHRvOyB2YXIgcmFuZG9tVmFsdWVzU3RhbmRhcmQgPSBmdW5jdGlvbigpIHsgdmFyIGJ1ZiA9IG5ldyBVaW50MzJBcnJheSgxKTsgY3J5cHRvXy5nZXRSYW5kb21WYWx1ZXMoYnVmKTsgcmV0dXJuIGJ1ZlswXSA+Pj4gMDsgfTsgcmFuZG9tVmFsdWVzU3RhbmRhcmQoKTsgTW9kdWxlLmdldFJhbmRvbVZhbHVlID0gcmFuZG9tVmFsdWVzU3RhbmRhcmQ7IH0gY2F0Y2ggKGUpIHsgdHJ5IHsgdmFyIGNyeXB0byA9IHJlcXVpcmUoJ2NyeXB0bycpOyB2YXIgcmFuZG9tVmFsdWVOb2RlSlMgPSBmdW5jdGlvbigpIHsgdmFyIGJ1ZiA9IGNyeXB0b1sncmFuZG9tQnl0ZXMnXSg0KTsgcmV0dXJuIChidWZbMF0gPDwgMjQgfCBidWZbMV0gPDwgMTYgfCBidWZbMl0gPDwgOCB8IGJ1ZlszXSkgPj4+IDA7IH07IHJhbmRvbVZhbHVlTm9kZUpTKCk7IE1vZHVsZS5nZXRSYW5kb21WYWx1ZSA9IHJhbmRvbVZhbHVlTm9kZUpTOyB9IGNhdGNoIChlKSB7IHRocm93ICdObyBzZWN1cmUgcmFuZG9tIG51bWJlciBnZW5lcmF0b3IgZm91bmQnOyB9IH0gfSB9AExpYnNvZGl1bURSR2J1Zl9sZW4gPD0gU0laRV9NQVgAcmFuZG9tYnl0ZXMvcmFuZG9tYnl0ZXMuYwByYW5kb21ieXRlcwBiNjRfcG9zIDw9IGI2NF9sZW4Ac29kaXVtL2NvZGVjcy5jAHNvZGl1bV9iaW4yYmFzZTY0ADEuMC4xOA==";var ge=!1;function Ie(e){for(var t=[],n=0;n<e.length;n++){var r=e[n];r>255&&(ge&&f(!1,"Character code "+r+" ("+String.fromCharCode(r)+") at offset "+n+" not in 0x00-0xFF."),r&=255),t.push(String.fromCharCode(r))}return t.join("")}var Be="function"==typeof atob?atob:function(e){var t,n,r,a,o,i,c="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=",s="",l=0;e=e.replace(/[^A-Za-z0-9\+\/\=]/g,"");do{t=c.indexOf(e.charAt(l++))<<2|(a=c.indexOf(e.charAt(l++)))>>4,n=(15&a)<<4|(o=c.indexOf(e.charAt(l++)))>>2,r=(3&o)<<6|(i=c.indexOf(e.charAt(l++))),s+=String.fromCharCode(t),64!==o&&(s+=String.fromCharCode(n)),64!==i&&(s+=String.fromCharCode(r))}while(l<e.length);return s};function Ae(e){if(ne(e))return function(e){if("boolean"==typeof d&&d){var t;try{t=i.from(e,"base64")}catch(n){t=new i(e,"base64")}return new Uint8Array(t.buffer,t.byteOffset,t.byteLength)}try{for(var n=Be(e),r=new Uint8Array(n.length),a=0;a<n.length;++a)r[a]=n.charCodeAt(a);return r}catch(e){throw new Error("Converting base64 string to bytes failed.")}}(e.slice(te.length))}var ue,de,_e=function(e,t,n){var r=new e.Int8Array(n),a=new e.Int32Array(n),o=new e.Uint8Array(n),i=e.Math.imul,c=e.Math.clz32,s=t.b,l=t.c,g=t.d,I=t.f,B=t.g,A=t.h,u=t.i,d=t.j,_=t.k,C=35424;function b(e,t){e|=0,t|=0;var n,i,c,s,g,I,B=0,A=0,u=0,d=0,_=0,b=0,p=0,Q=0,h=0,y=0,m=0,F=0,U=0,f=0,G=0,E=0,v=0,Z=0,X=0,W=0,R=0,V=0,O=0,x=0,T=0,N=0,w=0,k=0,Y=0,S=0,H=0,D=0,J=0,P=0,M=0,L=0,z=0,j=0,K=0,q=0,$=0,ee=0,te=0,ne=0,re=0,ae=0,oe=0,ie=0,ce=0,se=0,le=0,ge=0,Ie=0,Be=0,Ae=0,ue=0,de=0,_e=0,Ce=0,be=0;n=C,i=C=C+63&-64,C=C+256|0,B=0;do{d=0|Yt(t+(B<<3)|0),u=0|l(),a[(A=i+128+(B<<3)|0)>>2]=d,a[A+4>>2]=u,B=B+1|0}while(16!=(0|B));B=e,A=(t=i)+64|0;do{r[t>>0]=0|r[B>>0],t=t+1|0,B=B+1|0}while((0|t)<(0|A));for(a[i+88>>2]=1595750129,a[i+88+4>>2]=-1521486534,D=-1377402159^(o[e+64>>0]|o[e+64+1>>0]<<8|o[e+64+2>>0]<<16|o[e+64+3>>0]<<24),H=1359893119^(o[e+64+4>>0]|o[e+64+4+1>>0]<<8|o[e+64+4+2>>0]<<16|o[e+64+4+3>>0]<<24),W=725511199^(o[e+72>>0]|o[e+72+1>>0]<<8|o[e+72+2>>0]<<16|o[e+72+3>>0]<<24),R=-1694144372^(o[e+72+4>>0]|o[e+72+4+1>>0]<<8|o[e+72+4+2>>0]<<16|o[e+72+4+3>>0]<<24),m=-79577749^(o[e+80>>0]|o[e+80+1>>0]<<8|o[e+80+2>>0]<<16|o[e+80+3>>0]<<24),F=528734635^(o[e+80+4>>0]|o[e+80+4+1>>0]<<8|o[e+80+4+2>>0]<<16|o[e+80+4+3>>0]<<24),ee=327033209^(o[e+88>>0]|o[e+88+1>>0]<<8|o[e+88+2>>0]<<16|o[e+88+3>>0]<<24),$=1541459225^(o[e+88+4>>0]|o[e+88+4+1>>0]<<8|o[e+88+4+2>>0]<<16|o[e+88+4+3>>0]<<24),p=0|a[i+32>>2],Q=0|a[i+32+4>>2],Q=0|Pt((t=0|vn(0|(H=0|Pt((_e=0|vn(0|(Ce=0|vn(0|(J=0|a[i+128>>2]),0|(P=0|a[i+128+4>>2]),0|p,0|Q)),0|(_e=0|l()),0|a[i>>2],0|a[i+4>>2]))^D,(Ce=0|l())^H,32)),0|(D=0|l()),-205731576,1779033703))^p,(d=0|l())^Q,24),p=0|l(),te=0|a[i+128+8>>2],ne=0|a[i+128+8+4>>2],D=0|Pt((Ce=0|vn(0|(Ce=0|vn(0|Q,0|p,0|_e,0|Ce)),0|l(),0|te,0|ne))^H,(_e=0|l())^D,16),H=0|l(),a[i+96>>2]=D,a[i+96+4>>2]=H,d=0|vn(0|D,0|H,0|t,0|d),t=0|l(),a[i+64>>2]=d,a[i+64+4>>2]=t,p=0|Pt(d^Q,t^p,63),Q=0|l(),a[i+32>>2]=p,a[i+32+4>>2]=Q,j=0|a[i+40>>2],K=0|a[i+40+4>>2],K=0|Pt((b=0|vn(0|(R=0|Pt((Be=0|vn(0|(Ie=0|vn(0|(A=0|a[i+128+16>>2]),0|(B=0|a[i+128+16+4>>2]),0|j,0|K)),0|(Be=0|l()),0|a[i+8>>2],0|a[i+8+4>>2]))^W,(Ie=0|l())^R,32)),0|(W=0|l()),-2067093701,-1150833019))^j,(h=0|l())^K,24),j=0|l(),y=0|a[i+128+24>>2],U=0|a[i+128+24+4>>2],W=0|Pt((Ie=0|vn(0|(Ie=0|vn(0|K,0|j,0|Be,0|Ie)),0|l(),0|y,0|U))^R,(Be=0|l())^W,16),R=0|l(),a[i+104>>2]=W,a[i+104+4>>2]=R,h=0|vn(0|W,0|R,0|b,0|h),b=0|l(),a[i+72>>2]=h,a[i+72+4>>2]=b,j=0|Pt(h^K,b^j,63),K=0|l(),k=0|a[i+48>>2],Y=0|a[i+48+4>>2],Y=0|Pt((z=0|vn(0|(F=0|Pt((le=0|vn(0|(se=0|vn(0|(I=0|a[i+128+32>>2]),0|(Ae=0|a[i+128+32+4>>2]),0|k,0|Y)),0|(le=0|l()),0|a[i+16>>2],0|a[i+16+4>>2]))^m,(se=0|l())^F,32)),0|(m=0|l()),-23791573,1013904242))^k,(q=0|l())^Y,24),k=0|l(),c=0|a[i+128+40>>2],E=0|a[i+128+40+4>>2],k=0|Pt((q=0|vn(0|(m=0|Pt((se=0|vn(0|(se=0|vn(0|Y,0|k,0|le,0|se)),0|l(),0|c,0|E))^F,(le=0|l())^m,16)),0|(F=0|l()),0|z,0|q))^Y,(z=0|l())^k,63),Y=0|l(),Z=0|a[i+56>>2],v=0|a[i+56+4>>2],v=0|Pt((w=0|vn(0|($=0|Pt((ie=0|vn(0|(oe=0|vn(0|(G=0|a[i+128+48>>2]),0|(f=0|a[i+128+48+4>>2]),0|Z,0|v)),0|(ie=0|l()),0|a[i+24>>2],0|a[i+24+4>>2]))^ee,(oe=0|l())^$,32)),0|(ee=0|l()),1595750129,-1521486534))^Z,(S=0|l())^v,24),Z=0|l(),X=0|a[i+128+56>>2],V=0|a[i+128+56+4>>2],Z=0|Pt((S=0|vn(0|(ee=0|Pt((oe=0|vn(0|(oe=0|vn(0|v,0|Z,0|ie,0|oe)),0|l(),0|X,0|V))^$,(ie=0|l())^ee,16)),0|($=0|l()),0|w,0|S))^v,(w=0|l())^Z,63),v=0|l(),M=0|a[i+128+64>>2],L=0|a[i+128+64+4>>2],K=0|Pt((z=0|vn(0|($=0|Pt((_e=0|vn(0|(_e=0|vn(0|j,0|K,0|Ce,0|_e)),0|l(),0|M,0|L))^ee,(Ce=0|l())^$,32)),0|(ee=0|l()),0|q,0|z))^j,(q=0|l())^K,24),j=0|l(),g=0|a[i+128+72>>2],ge=0|a[i+128+72+4>>2],ee=0|Pt((Ce=0|vn(0|(Ce=0|vn(0|K,0|j,0|_e,0|Ce)),0|l(),0|g,0|ge))^$,(_e=0|l())^ee,16),$=0|l(),a[i+120>>2]=ee,a[i+120+4>>2]=$,q=0|vn(0|ee,0|$,0|z,0|q),z=0|l(),a[i+80>>2]=q,a[i+80+4>>2]=z,j=0|Pt(q^K,z^j,63),K=0|l(),re=0|a[i+128+80>>2],ae=0|a[i+128+80+4>>2],Y=0|Pt((w=0|vn(0|(H=0|Pt((Be=0|vn(0|(Be=0|vn(0|k,0|Y,0|Ie,0|Be)),0|l(),0|re,0|ae))^D,(Ie=0|l())^H,32)),0|(D=0|l()),0|S,0|w))^k,(S=0|l())^Y,24),k=0|l(),O=0|a[i+128+88>>2],x=0|a[i+128+88+4>>2],k=0|Pt((S=0|vn(0|(D=0|Pt((Ie=0|vn(0|(Ie=0|vn(0|Y,0|k,0|Be,0|Ie)),0|l(),0|O,0|x))^H,(Be=0|l())^D,16)),0|(H=0|l()),0|w,0|S))^Y,(w=0|l())^k,63),Y=0|l(),u=0|a[i+128+96>>2],_=0|a[i+128+96+4>>2],v=0|Pt((t=0|vn(0|(R=0|Pt((le=0|vn(0|(le=0|vn(0|Z,0|v,0|se,0|le)),0|l(),0|u,0|_))^W,(se=0|l())^R,32)),0|(W=0|l()),0|d,0|t))^Z,(d=0|l())^v,24),Z=0|l(),s=0|a[i+128+104>>2],ce=0|a[i+128+104+4>>2],Z=0|Pt((d=0|vn(0|(W=0|Pt((se=0|vn(0|(se=0|vn(0|v,0|Z,0|le,0|se)),0|l(),0|s,0|ce))^R,(le=0|l())^W,16)),0|(R=0|l()),0|t,0|d))^v,(t=0|l())^Z,63),v=0|l(),ue=0|a[i+128+112>>2],de=0|a[i+128+112+4>>2],Q=0|Pt((b=0|vn(0|(F=0|Pt((ie=0|vn(0|(ie=0|vn(0|oe,0|ie,0|p,0|Q)),0|l(),0|ue,0|de))^m,(oe=0|l())^F,32)),0|(m=0|l()),0|h,0|b))^p,(h=0|l())^Q,24),p=0|l(),T=0|a[i+128+120>>2],N=0|a[i+128+120+4>>2],p=0|Pt((h=0|vn(0|(m=0|Pt((oe=0|vn(0|(oe=0|vn(0|Q,0|p,0|ie,0|oe)),0|l(),0|T,0|N))^F,(ie=0|l())^m,16)),0|(F=0|l()),0|b,0|h))^Q,(b=0|l())^p,63),Q=0|l(),Q=0|Pt((t=0|vn(0|(H=0|Pt((_e=0|vn(0|(_e=0|vn(0|ue,0|de,0|Ce,0|_e)),0|l(),0|p,0|Q))^D,(Ce=0|l())^H,32)),0|(D=0|l()),0|d,0|t))^p,(d=0|l())^Q,24),p=0|l(),p=0|Pt((d=0|vn(0|(D=0|Pt((Ce=0|vn(0|(Ce=0|vn(0|_e,0|Ce,0|re,0|ae)),0|l(),0|Q,0|p))^H,(_e=0|l())^D,16)),0|(H=0|l()),0|t,0|d))^Q,(t=0|l())^p,63),Q=0|l(),a[i+32>>2]=p,a[i+32+4>>2]=Q,K=0|Pt((b=0|vn(0|(R=0|Pt(W^(Be=0|vn(0|(be=0|vn(0|j,0|K,0|I,0|Ae)),0|l(),0|Ie,0|Be)),R^(Ie=0|l()),32)),0|(W=0|l()),0|h,0|b))^j,(h=0|l())^K,24),j=0|l(),j=0|Pt((h=0|vn(0|(W=0|Pt((Ie=0|vn(0|(Ie=0|vn(0|Be,0|Ie,0|M,0|L)),0|l(),0|K,0|j))^R,(Be=0|l())^W,16)),0|(R=0|l()),0|b,0|h))^K,(b=0|l())^j,63),K=0|l(),Y=0|Pt((z=0|vn(0|(F=0|Pt(m^(le=0|vn(0|(be=0|vn(0|k,0|Y,0|g,0|ge)),0|l(),0|se,0|le)),F^(se=0|l()),32)),0|(m=0|l()),0|q,0|z))^k,(q=0|l())^Y,24),k=0|l(),k=0|Pt((q=0|vn(0|(m=0|Pt((se=0|vn(0|(se=0|vn(0|T,0|N,0|le,0|se)),0|l(),0|Y,0|k))^F,(le=0|l())^m,16)),0|(F=0|l()),0|z,0|q))^Y,(z=0|l())^k,63),Y=0|l(),v=0|Pt((w=0|vn(0|($=0|Pt((ie=0|vn(0|(be=0|vn(0|Z,0|v,0|s,0|ce)),0|l(),0|oe,0|ie))^ee,(oe=0|l())^$,32)),0|(ee=0|l()),0|S,0|w))^Z,(S=0|l())^v,24),Z=0|l(),Z=0|Pt((S=0|vn(0|(ee=0|Pt((oe=0|vn(0|(oe=0|vn(0|ie,0|oe,0|G,0|f)),0|l(),0|v,0|Z))^$,(ie=0|l())^ee,16)),0|($=0|l()),0|w,0|S))^v,(w=0|l())^Z,63),v=0|l(),K=0|Pt((z=0|vn(0|($=0|Pt(ee^(_e=0|vn(0|(_e=0|vn(0|Ce,0|_e,0|te,0|ne)),0|l(),0|j,0|K)),$^(Ce=0|l()),32)),0|(ee=0|l()),0|q,0|z))^j,(q=0|l())^K,24),j=0|l(),ee=0|Pt((Ce=0|vn(0|(Ce=0|vn(0|_e,0|Ce,0|u,0|_)),0|l(),0|K,0|j))^$,(_e=0|l())^ee,16),$=0|l(),a[i+120>>2]=ee,a[i+120+4>>2]=$,j=0|Pt((q=0|vn(0|ee,0|$,0|z,0|q))^K,(z=0|l())^j,63),K=0|l(),Y=0|Pt((w=0|vn(0|(H=0|Pt((Be=0|vn(0|(Be=0|vn(0|Ie,0|Be,0|J,0|P)),0|l(),0|k,0|Y))^D,(Ie=0|l())^H,32)),0|(D=0|l()),0|S,0|w))^k,(S=0|l())^Y,24),k=0|l(),k=0|Pt((S=0|vn(0|(D=0|Pt((Ie=0|vn(0|(Ie=0|vn(0|Be,0|Ie,0|A,0|B)),0|l(),0|Y,0|k))^H,(Be=0|l())^D,16)),0|(H=0|l()),0|w,0|S))^Y,(w=0|l())^k,63),Y=0|l(),v=0|Pt((t=0|vn(0|(R=0|Pt((le=0|vn(0|(le=0|vn(0|se,0|le,0|O,0|x)),0|l(),0|Z,0|v))^W,(se=0|l())^R,32)),0|(W=0|l()),0|d,0|t))^Z,(d=0|l())^v,24),Z=0|l(),Z=0|Pt((d=0|vn(0|(W=0|Pt((se=0|vn(0|(se=0|vn(0|le,0|se,0|X,0|V)),0|l(),0|v,0|Z))^R,(le=0|l())^W,16)),0|(R=0|l()),0|t,0|d))^v,(t=0|l())^Z,63),v=0|l(),Q=0|Pt((b=0|vn(0|(F=0|Pt((ie=0|vn(0|(be=0|vn(0|p,0|Q,0|c,0|E)),0|l(),0|oe,0|ie))^m,(oe=0|l())^F,32)),0|(m=0|l()),0|h,0|b))^p,(h=0|l())^Q,24),p=0|l(),p=0|Pt((h=0|vn(0|(m=0|Pt((oe=0|vn(0|(oe=0|vn(0|ie,0|oe,0|y,0|U)),0|l(),0|Q,0|p))^F,(ie=0|l())^m,16)),0|(F=0|l()),0|b,0|h))^Q,(b=0|l())^p,63),Q=0|l(),Q=0|Pt((t=0|vn(0|(H=0|Pt((_e=0|vn(0|(_e=0|vn(0|Ce,0|_e,0|O,0|x)),0|l(),0|p,0|Q))^D,(Ce=0|l())^H,32)),0|(D=0|l()),0|d,0|t))^p,(d=0|l())^Q,24),p=0|l(),p=0|Pt((d=0|vn(0|(D=0|Pt((Ce=0|vn(0|(Ce=0|vn(0|_e,0|Ce,0|M,0|L)),0|l(),0|Q,0|p))^H,(_e=0|l())^D,16)),0|(H=0|l()),0|t,0|d))^Q,(t=0|l())^p,63),Q=0|l(),a[i+32>>2]=p,a[i+32+4>>2]=Q,K=0|Pt((b=0|vn(0|(R=0|Pt(W^(Be=0|vn(0|(be=0|vn(0|j,0|K,0|u,0|_)),0|l(),0|Ie,0|Be)),R^(Ie=0|l()),32)),0|(W=0|l()),0|h,0|b))^j,(h=0|l())^K,24),j=0|l(),j=0|Pt((h=0|vn(0|(W=0|Pt((Ie=0|vn(0|(Ie=0|vn(0|Be,0|Ie,0|J,0|P)),0|l(),0|K,0|j))^R,(Be=0|l())^W,16)),0|(R=0|l()),0|b,0|h))^K,(b=0|l())^j,63),K=0|l(),Y=0|Pt((z=0|vn(0|(F=0|Pt(m^(le=0|vn(0|(be=0|vn(0|k,0|Y,0|c,0|E)),0|l(),0|se,0|le)),F^(se=0|l()),32)),0|(m=0|l()),0|q,0|z))^k,(q=0|l())^Y,24),k=0|l(),k=0|Pt((q=0|vn(0|(m=0|Pt((se=0|vn(0|(se=0|vn(0|le,0|se,0|A,0|B)),0|l(),0|Y,0|k))^F,(le=0|l())^m,16)),0|(F=0|l()),0|z,0|q))^Y,(z=0|l())^k,63),Y=0|l(),v=0|Pt((w=0|vn(0|($=0|Pt((ie=0|vn(0|(be=0|vn(0|Z,0|v,0|T,0|N)),0|l(),0|oe,0|ie))^ee,(oe=0|l())^$,32)),0|(ee=0|l()),0|S,0|w))^Z,(S=0|l())^v,24),Z=0|l(),Z=0|Pt((S=0|vn(0|(ee=0|Pt((oe=0|vn(0|(oe=0|vn(0|ie,0|oe,0|s,0|ce)),0|l(),0|v,0|Z))^$,(ie=0|l())^ee,16)),0|($=0|l()),0|w,0|S))^v,(w=0|l())^Z,63),v=0|l(),K=0|Pt((z=0|vn(0|($=0|Pt(ee^(_e=0|vn(0|(_e=0|vn(0|Ce,0|_e,0|re,0|ae)),0|l(),0|j,0|K)),$^(Ce=0|l()),32)),0|(ee=0|l()),0|q,0|z))^j,(q=0|l())^K,24),j=0|l(),ee=0|Pt((Ce=0|vn(0|(Ce=0|vn(0|_e,0|Ce,0|ue,0|de)),0|l(),0|K,0|j))^$,(_e=0|l())^ee,16),$=0|l(),a[i+120>>2]=ee,a[i+120+4>>2]=$,j=0|Pt((q=0|vn(0|ee,0|$,0|z,0|q))^K,(z=0|l())^j,63),K=0|l(),Y=0|Pt((w=0|vn(0|(H=0|Pt((Be=0|vn(0|(Be=0|vn(0|Ie,0|Be,0|y,0|U)),0|l(),0|k,0|Y))^D,(Ie=0|l())^H,32)),0|(D=0|l()),0|S,0|w))^k,(S=0|l())^Y,24),k=0|l(),k=0|Pt((S=0|vn(0|(D=0|Pt((Ie=0|vn(0|(Ie=0|vn(0|Be,0|Ie,0|G,0|f)),0|l(),0|Y,0|k))^H,(Be=0|l())^D,16)),0|(H=0|l()),0|w,0|S))^Y,(w=0|l())^k,63),Y=0|l(),v=0|Pt((t=0|vn(0|(R=0|Pt((le=0|vn(0|(le=0|vn(0|se,0|le,0|X,0|V)),0|l(),0|Z,0|v))^W,(se=0|l())^R,32)),0|(W=0|l()),0|d,0|t))^Z,(d=0|l())^v,24),Z=0|l(),Z=0|Pt((d=0|vn(0|(W=0|Pt((se=0|vn(0|(se=0|vn(0|le,0|se,0|te,0|ne)),0|l(),0|v,0|Z))^R,(le=0|l())^W,16)),0|(R=0|l()),0|t,0|d))^v,(t=0|l())^Z,63),v=0|l(),Q=0|Pt((b=0|vn(0|(F=0|Pt((ie=0|vn(0|(be=0|vn(0|p,0|Q,0|g,0|ge)),0|l(),0|oe,0|ie))^m,(oe=0|l())^F,32)),0|(m=0|l()),0|h,0|b))^p,(h=0|l())^Q,24),p=0|l(),p=0|Pt((h=0|vn(0|(m=0|Pt((oe=0|vn(0|(oe=0|vn(0|ie,0|oe,0|I,0|Ae)),0|l(),0|Q,0|p))^F,(ie=0|l())^m,16)),0|(F=0|l()),0|b,0|h))^Q,(b=0|l())^p,63),Q=0|l(),Q=0|Pt((t=0|vn(0|(H=0|Pt((_e=0|vn(0|(_e=0|vn(0|Ce,0|_e,0|X,0|V)),0|l(),0|p,0|Q))^D,(Ce=0|l())^H,32)),0|(D=0|l()),0|d,0|t))^p,(d=0|l())^Q,24),p=0|l(),p=0|Pt((d=0|vn(0|(D=0|Pt((Ce=0|vn(0|(Ce=0|vn(0|_e,0|Ce,0|g,0|ge)),0|l(),0|Q,0|p))^H,(_e=0|l())^D,16)),0|(H=0|l()),0|t,0|d))^Q,(t=0|l())^p,63),Q=0|l(),a[i+32>>2]=p,a[i+32+4>>2]=Q,K=0|Pt((b=0|vn(0|(R=0|Pt(W^(Be=0|vn(0|(be=0|vn(0|j,0|K,0|y,0|U)),0|l(),0|Ie,0|Be)),R^(Ie=0|l()),32)),0|(W=0|l()),0|h,0|b))^j,(h=0|l())^K,24),j=0|l(),j=0|Pt((h=0|vn(0|(W=0|Pt((Ie=0|vn(0|(Ie=0|vn(0|Be,0|Ie,0|te,0|ne)),0|l(),0|K,0|j))^R,(Be=0|l())^W,16)),0|(R=0|l()),0|b,0|h))^K,(b=0|l())^j,63),K=0|l(),Y=0|Pt((z=0|vn(0|(F=0|Pt(m^(le=0|vn(0|(be=0|vn(0|k,0|Y,0|s,0|ce)),0|l(),0|se,0|le)),F^(se=0|l()),32)),0|(m=0|l()),0|q,0|z))^k,(q=0|l())^Y,24),k=0|l(),k=0|Pt((q=0|vn(0|(m=0|Pt((se=0|vn(0|(se=0|vn(0|le,0|se,0|u,0|_)),0|l(),0|Y,0|k))^F,(le=0|l())^m,16)),0|(F=0|l()),0|z,0|q))^Y,(z=0|l())^k,63),Y=0|l(),v=0|Pt((w=0|vn(0|($=0|Pt((ie=0|vn(0|(be=0|vn(0|Z,0|v,0|O,0|x)),0|l(),0|oe,0|ie))^ee,(oe=0|l())^$,32)),0|(ee=0|l()),0|S,0|w))^Z,(S=0|l())^v,24),Z=0|l(),Z=0|Pt((S=0|vn(0|(ee=0|Pt((oe=0|vn(0|(oe=0|vn(0|ie,0|oe,0|ue,0|de)),0|l(),0|v,0|Z))^$,(ie=0|l())^ee,16)),0|($=0|l()),0|w,0|S))^v,(w=0|l())^Z,63),v=0|l(),K=0|Pt((z=0|vn(0|($=0|Pt(ee^(_e=0|vn(0|(_e=0|vn(0|Ce,0|_e,0|A,0|B)),0|l(),0|j,0|K)),$^(Ce=0|l()),32)),0|(ee=0|l()),0|q,0|z))^j,(q=0|l())^K,24),j=0|l(),ee=0|Pt((Ce=0|vn(0|(Ce=0|vn(0|_e,0|Ce,0|G,0|f)),0|l(),0|K,0|j))^$,(_e=0|l())^ee,16),$=0|l(),a[i+120>>2]=ee,a[i+120+4>>2]=$,j=0|Pt((q=0|vn(0|ee,0|$,0|z,0|q))^K,(z=0|l())^j,63),K=0|l(),Y=0|Pt((w=0|vn(0|(H=0|Pt((Be=0|vn(0|(Be=0|vn(0|Ie,0|Be,0|c,0|E)),0|l(),0|k,0|Y))^D,(Ie=0|l())^H,32)),0|(D=0|l()),0|S,0|w))^k,(S=0|l())^Y,24),k=0|l(),k=0|Pt((S=0|vn(0|(D=0|Pt((Ie=0|vn(0|(Ie=0|vn(0|Be,0|Ie,0|re,0|ae)),0|l(),0|Y,0|k))^H,(Be=0|l())^D,16)),0|(H=0|l()),0|w,0|S))^Y,(w=0|l())^k,63),Y=0|l(),v=0|Pt((t=0|vn(0|(R=0|Pt((le=0|vn(0|(le=0|vn(0|se,0|le,0|I,0|Ae)),0|l(),0|Z,0|v))^W,(se=0|l())^R,32)),0|(W=0|l()),0|d,0|t))^Z,(d=0|l())^v,24),Z=0|l(),Z=0|Pt((d=0|vn(0|(W=0|Pt((se=0|vn(0|(se=0|vn(0|le,0|se,0|J,0|P)),0|l(),0|v,0|Z))^R,(le=0|l())^W,16)),0|(R=0|l()),0|t,0|d))^v,(t=0|l())^Z,63),v=0|l(),Q=0|Pt((b=0|vn(0|(F=0|Pt((ie=0|vn(0|(be=0|vn(0|p,0|Q,0|T,0|N)),0|l(),0|oe,0|ie))^m,(oe=0|l())^F,32)),0|(m=0|l()),0|h,0|b))^p,(h=0|l())^Q,24),p=0|l(),p=0|Pt((h=0|vn(0|(m=0|Pt((oe=0|vn(0|(oe=0|vn(0|ie,0|oe,0|M,0|L)),0|l(),0|Q,0|p))^F,(ie=0|l())^m,16)),0|(F=0|l()),0|b,0|h))^Q,(b=0|l())^p,63),Q=0|l(),Q=0|Pt((t=0|vn(0|(H=0|Pt((_e=0|vn(0|(_e=0|vn(0|Ce,0|_e,0|g,0|ge)),0|l(),0|p,0|Q))^D,(Ce=0|l())^H,32)),0|(D=0|l()),0|d,0|t))^p,(d=0|l())^Q,24),p=0|l(),p=0|Pt((d=0|vn(0|(D=0|Pt((Ce=0|vn(0|(Ce=0|vn(0|_e,0|Ce,0|J,0|P)),0|l(),0|Q,0|p))^H,(_e=0|l())^D,16)),0|(H=0|l()),0|t,0|d))^Q,(t=0|l())^p,63),Q=0|l(),a[i+32>>2]=p,a[i+32+4>>2]=Q,K=0|Pt((b=0|vn(0|(R=0|Pt(W^(Be=0|vn(0|(be=0|vn(0|j,0|K,0|c,0|E)),0|l(),0|Ie,0|Be)),R^(Ie=0|l()),32)),0|(W=0|l()),0|h,0|b))^j,(h=0|l())^K,24),j=0|l(),j=0|Pt((h=0|vn(0|(W=0|Pt((Ie=0|vn(0|(Ie=0|vn(0|Be,0|Ie,0|X,0|V)),0|l(),0|K,0|j))^R,(Be=0|l())^W,16)),0|(R=0|l()),0|b,0|h))^K,(b=0|l())^j,63),K=0|l(),Y=0|Pt((z=0|vn(0|(F=0|Pt(m^(le=0|vn(0|(be=0|vn(0|k,0|Y,0|A,0|B)),0|l(),0|se,0|le)),F^(se=0|l()),32)),0|(m=0|l()),0|q,0|z))^k,(q=0|l())^Y,24),k=0|l(),k=0|Pt((q=0|vn(0|(m=0|Pt((se=0|vn(0|(se=0|vn(0|le,0|se,0|I,0|Ae)),0|l(),0|Y,0|k))^F,(le=0|l())^m,16)),0|(F=0|l()),0|z,0|q))^Y,(z=0|l())^k,63),Y=0|l(),v=0|Pt((w=0|vn(0|($=0|Pt((ie=0|vn(0|(be=0|vn(0|Z,0|v,0|re,0|ae)),0|l(),0|oe,0|ie))^ee,(oe=0|l())^$,32)),0|(ee=0|l()),0|S,0|w))^Z,(S=0|l())^v,24),Z=0|l(),Z=0|Pt((S=0|vn(0|(ee=0|Pt((oe=0|vn(0|(oe=0|vn(0|ie,0|oe,0|T,0|N)),0|l(),0|v,0|Z))^$,(ie=0|l())^ee,16)),0|($=0|l()),0|w,0|S))^v,(w=0|l())^Z,63),v=0|l(),K=0|Pt((z=0|vn(0|($=0|Pt(ee^(_e=0|vn(0|(_e=0|vn(0|Ce,0|_e,0|ue,0|de)),0|l(),0|j,0|K)),$^(Ce=0|l()),32)),0|(ee=0|l()),0|q,0|z))^j,(q=0|l())^K,24),j=0|l(),ee=0|Pt((Ce=0|vn(0|(Ce=0|vn(0|_e,0|Ce,0|te,0|ne)),0|l(),0|K,0|j))^$,(_e=0|l())^ee,16),$=0|l(),a[i+120>>2]=ee,a[i+120+4>>2]=$,j=0|Pt((q=0|vn(0|ee,0|$,0|z,0|q))^K,(z=0|l())^j,63),K=0|l(),Y=0|Pt((w=0|vn(0|(H=0|Pt((Be=0|vn(0|(Be=0|vn(0|Ie,0|Be,0|O,0|x)),0|l(),0|k,0|Y))^D,(Ie=0|l())^H,32)),0|(D=0|l()),0|S,0|w))^k,(S=0|l())^Y,24),k=0|l(),k=0|Pt((S=0|vn(0|(D=0|Pt((Ie=0|vn(0|(Ie=0|vn(0|Be,0|Ie,0|u,0|_)),0|l(),0|Y,0|k))^H,(Be=0|l())^D,16)),0|(H=0|l()),0|w,0|S))^Y,(w=0|l())^k,63),Y=0|l(),v=0|Pt((t=0|vn(0|(R=0|Pt((le=0|vn(0|(le=0|vn(0|se,0|le,0|G,0|f)),0|l(),0|Z,0|v))^W,(se=0|l())^R,32)),0|(W=0|l()),0|d,0|t))^Z,(d=0|l())^v,24),Z=0|l(),Z=0|Pt((d=0|vn(0|(W=0|Pt((se=0|vn(0|(se=0|vn(0|le,0|se,0|M,0|L)),0|l(),0|v,0|Z))^R,(le=0|l())^W,16)),0|(R=0|l()),0|t,0|d))^v,(t=0|l())^Z,63),v=0|l(),Q=0|Pt((b=0|vn(0|(F=0|Pt((ie=0|vn(0|(be=0|vn(0|p,0|Q,0|y,0|U)),0|l(),0|oe,0|ie))^m,(oe=0|l())^F,32)),0|(m=0|l()),0|h,0|b))^p,(h=0|l())^Q,24),p=0|l(),p=0|Pt((h=0|vn(0|(m=0|Pt((oe=0|vn(0|(oe=0|vn(0|ie,0|oe,0|s,0|ce)),0|l(),0|Q,0|p))^F,(ie=0|l())^m,16)),0|(F=0|l()),0|b,0|h))^Q,(b=0|l())^p,63),Q=0|l(),Q=0|Pt((t=0|vn(0|(H=0|Pt((_e=0|vn(0|(_e=0|vn(0|Ce,0|_e,0|A,0|B)),0|l(),0|p,0|Q))^D,(Ce=0|l())^H,32)),0|(D=0|l()),0|d,0|t))^p,(d=0|l())^Q,24),p=0|l(),p=0|Pt((d=0|vn(0|(D=0|Pt((Ce=0|vn(0|(Ce=0|vn(0|_e,0|Ce,0|u,0|_)),0|l(),0|Q,0|p))^H,(_e=0|l())^D,16)),0|(H=0|l()),0|t,0|d))^Q,(t=0|l())^p,63),Q=0|l(),a[i+32>>2]=p,a[i+32+4>>2]=Q,K=0|Pt((b=0|vn(0|(R=0|Pt(W^(Be=0|vn(0|(be=0|vn(0|j,0|K,0|G,0|f)),0|l(),0|Ie,0|Be)),R^(Ie=0|l()),32)),0|(W=0|l()),0|h,0|b))^j,(h=0|l())^K,24),j=0|l(),j=0|Pt((h=0|vn(0|(W=0|Pt((Ie=0|vn(0|(Ie=0|vn(0|Be,0|Ie,0|re,0|ae)),0|l(),0|K,0|j))^R,(Be=0|l())^W,16)),0|(R=0|l()),0|b,0|h))^K,(b=0|l())^j,63),K=0|l(),Y=0|Pt((z=0|vn(0|(F=0|Pt(m^(le=0|vn(0|(be=0|vn(0|k,0|Y,0|J,0|P)),0|l(),0|se,0|le)),F^(se=0|l()),32)),0|(m=0|l()),0|q,0|z))^k,(q=0|l())^Y,24),k=0|l(),k=0|Pt((q=0|vn(0|(m=0|Pt((se=0|vn(0|(se=0|vn(0|le,0|se,0|O,0|x)),0|l(),0|Y,0|k))^F,(le=0|l())^m,16)),0|(F=0|l()),0|z,0|q))^Y,(z=0|l())^k,63),Y=0|l(),v=0|Pt((w=0|vn(0|($=0|Pt((ie=0|vn(0|(be=0|vn(0|Z,0|v,0|M,0|L)),0|l(),0|oe,0|ie))^ee,(oe=0|l())^$,32)),0|(ee=0|l()),0|S,0|w))^Z,(S=0|l())^v,24),Z=0|l(),Z=0|Pt((S=0|vn(0|(ee=0|Pt((oe=0|vn(0|(oe=0|vn(0|ie,0|oe,0|y,0|U)),0|l(),0|v,0|Z))^$,(ie=0|l())^ee,16)),0|($=0|l()),0|w,0|S))^v,(w=0|l())^Z,63),v=0|l(),K=0|Pt((z=0|vn(0|($=0|Pt(ee^(_e=0|vn(0|(_e=0|vn(0|Ce,0|_e,0|I,0|Ae)),0|l(),0|j,0|K)),$^(Ce=0|l()),32)),0|(ee=0|l()),0|q,0|z))^j,(q=0|l())^K,24),j=0|l(),ee=0|Pt((Ce=0|vn(0|(Ce=0|vn(0|_e,0|Ce,0|s,0|ce)),0|l(),0|K,0|j))^$,(_e=0|l())^ee,16),$=0|l(),a[i+120>>2]=ee,a[i+120+4>>2]=$,j=0|Pt((q=0|vn(0|ee,0|$,0|z,0|q))^K,(z=0|l())^j,63),K=0|l(),Y=0|Pt((w=0|vn(0|(H=0|Pt((Be=0|vn(0|(Be=0|vn(0|Ie,0|Be,0|X,0|V)),0|l(),0|k,0|Y))^D,(Ie=0|l())^H,32)),0|(D=0|l()),0|S,0|w))^k,(S=0|l())^Y,24),k=0|l(),k=0|Pt((S=0|vn(0|(D=0|Pt((Ie=0|vn(0|(Ie=0|vn(0|Be,0|Ie,0|c,0|E)),0|l(),0|Y,0|k))^H,(Be=0|l())^D,16)),0|(H=0|l()),0|w,0|S))^Y,(w=0|l())^k,63),Y=0|l(),v=0|Pt((t=0|vn(0|(R=0|Pt((le=0|vn(0|(le=0|vn(0|se,0|le,0|T,0|N)),0|l(),0|Z,0|v))^W,(se=0|l())^R,32)),0|(W=0|l()),0|d,0|t))^Z,(d=0|l())^v,24),Z=0|l(),Z=0|Pt((d=0|vn(0|(W=0|Pt((se=0|vn(0|(se=0|vn(0|le,0|se,0|ue,0|de)),0|l(),0|v,0|Z))^R,(le=0|l())^W,16)),0|(R=0|l()),0|t,0|d))^v,(t=0|l())^Z,63),v=0|l(),Q=0|Pt((b=0|vn(0|(F=0|Pt((ie=0|vn(0|(be=0|vn(0|p,0|Q,0|te,0|ne)),0|l(),0|oe,0|ie))^m,(oe=0|l())^F,32)),0|(m=0|l()),0|h,0|b))^p,(h=0|l())^Q,24),p=0|l(),p=0|Pt((h=0|vn(0|(m=0|Pt((oe=0|vn(0|(oe=0|vn(0|ie,0|oe,0|g,0|ge)),0|l(),0|Q,0|p))^F,(ie=0|l())^m,16)),0|(F=0|l()),0|b,0|h))^Q,(b=0|l())^p,63),Q=0|l(),Q=0|Pt((t=0|vn(0|(H=0|Pt((_e=0|vn(0|(_e=0|vn(0|Ce,0|_e,0|u,0|_)),0|l(),0|p,0|Q))^D,(Ce=0|l())^H,32)),0|(D=0|l()),0|d,0|t))^p,(d=0|l())^Q,24),p=0|l(),p=0|Pt((d=0|vn(0|(D=0|Pt((Ce=0|vn(0|(Ce=0|vn(0|_e,0|Ce,0|c,0|E)),0|l(),0|Q,0|p))^H,(_e=0|l())^D,16)),0|(H=0|l()),0|t,0|d))^Q,(t=0|l())^p,63),Q=0|l(),a[i+32>>2]=p,a[i+32+4>>2]=Q,K=0|Pt((b=0|vn(0|(R=0|Pt(W^(Be=0|vn(0|(be=0|vn(0|j,0|K,0|te,0|ne)),0|l(),0|Ie,0|Be)),R^(Ie=0|l()),32)),0|(W=0|l()),0|h,0|b))^j,(h=0|l())^K,24),j=0|l(),j=0|Pt((h=0|vn(0|(W=0|Pt((Ie=0|vn(0|(Ie=0|vn(0|Be,0|Ie,0|T,0|N)),0|l(),0|K,0|j))^R,(Be=0|l())^W,16)),0|(R=0|l()),0|b,0|h))^K,(b=0|l())^j,63),K=0|l(),Y=0|Pt((z=0|vn(0|(F=0|Pt(m^(le=0|vn(0|(be=0|vn(0|k,0|Y,0|ue,0|de)),0|l(),0|se,0|le)),F^(se=0|l()),32)),0|(m=0|l()),0|q,0|z))^k,(q=0|l())^Y,24),k=0|l(),k=0|Pt((q=0|vn(0|(m=0|Pt((se=0|vn(0|(se=0|vn(0|le,0|se,0|s,0|ce)),0|l(),0|Y,0|k))^F,(le=0|l())^m,16)),0|(F=0|l()),0|z,0|q))^Y,(z=0|l())^k,63),Y=0|l(),v=0|Pt((w=0|vn(0|($=0|Pt((ie=0|vn(0|(be=0|vn(0|Z,0|v,0|I,0|Ae)),0|l(),0|oe,0|ie))^ee,(oe=0|l())^$,32)),0|(ee=0|l()),0|S,0|w))^Z,(S=0|l())^v,24),Z=0|l(),Z=0|Pt((S=0|vn(0|(ee=0|Pt((oe=0|vn(0|(oe=0|vn(0|ie,0|oe,0|re,0|ae)),0|l(),0|v,0|Z))^$,(ie=0|l())^ee,16)),0|($=0|l()),0|w,0|S))^v,(w=0|l())^Z,63),v=0|l(),K=0|Pt((z=0|vn(0|($=0|Pt(ee^(_e=0|vn(0|(_e=0|vn(0|Ce,0|_e,0|J,0|P)),0|l(),0|j,0|K)),$^(Ce=0|l()),32)),0|(ee=0|l()),0|q,0|z))^j,(q=0|l())^K,24),j=0|l(),ee=0|Pt((Ce=0|vn(0|(Ce=0|vn(0|_e,0|Ce,0|X,0|V)),0|l(),0|K,0|j))^$,(_e=0|l())^ee,16),$=0|l(),a[i+120>>2]=ee,a[i+120+4>>2]=$,j=0|Pt((q=0|vn(0|ee,0|$,0|z,0|q))^K,(z=0|l())^j,63),K=0|l(),Y=0|Pt((w=0|vn(0|(H=0|Pt((Be=0|vn(0|(Be=0|vn(0|Ie,0|Be,0|G,0|f)),0|l(),0|k,0|Y))^D,(Ie=0|l())^H,32)),0|(D=0|l()),0|S,0|w))^k,(S=0|l())^Y,24),k=0|l(),k=0|Pt((S=0|vn(0|(D=0|Pt((Ie=0|vn(0|(Ie=0|vn(0|Be,0|Ie,0|y,0|U)),0|l(),0|Y,0|k))^H,(Be=0|l())^D,16)),0|(H=0|l()),0|w,0|S))^Y,(w=0|l())^k,63),Y=0|l(),v=0|Pt((t=0|vn(0|(R=0|Pt((le=0|vn(0|(le=0|vn(0|se,0|le,0|g,0|ge)),0|l(),0|Z,0|v))^W,(se=0|l())^R,32)),0|(W=0|l()),0|d,0|t))^Z,(d=0|l())^v,24),Z=0|l(),Z=0|Pt((d=0|vn(0|(W=0|Pt((se=0|vn(0|(se=0|vn(0|le,0|se,0|A,0|B)),0|l(),0|v,0|Z))^R,(le=0|l())^W,16)),0|(R=0|l()),0|t,0|d))^v,(t=0|l())^Z,63),v=0|l(),Q=0|Pt((b=0|vn(0|(F=0|Pt((ie=0|vn(0|(be=0|vn(0|p,0|Q,0|M,0|L)),0|l(),0|oe,0|ie))^m,(oe=0|l())^F,32)),0|(m=0|l()),0|h,0|b))^p,(h=0|l())^Q,24),p=0|l(),p=0|Pt((h=0|vn(0|(m=0|Pt((oe=0|vn(0|(oe=0|vn(0|ie,0|oe,0|O,0|x)),0|l(),0|Q,0|p))^F,(ie=0|l())^m,16)),0|(F=0|l()),0|b,0|h))^Q,(b=0|l())^p,63),Q=0|l(),Q=0|Pt((t=0|vn(0|(H=0|Pt((_e=0|vn(0|(_e=0|vn(0|Ce,0|_e,0|s,0|ce)),0|l(),0|p,0|Q))^D,(Ce=0|l())^H,32)),0|(D=0|l()),0|d,0|t))^p,(d=0|l())^Q,24),p=0|l(),p=0|Pt((d=0|vn(0|(D=0|Pt((Ce=0|vn(0|(Ce=0|vn(0|_e,0|Ce,0|O,0|x)),0|l(),0|Q,0|p))^H,(_e=0|l())^D,16)),0|(H=0|l()),0|t,0|d))^Q,(t=0|l())^p,63),Q=0|l(),a[i+32>>2]=p,a[i+32+4>>2]=Q,K=0|Pt((b=0|vn(0|(R=0|Pt(W^(Be=0|vn(0|(be=0|vn(0|j,0|K,0|X,0|V)),0|l(),0|Ie,0|Be)),R^(Ie=0|l()),32)),0|(W=0|l()),0|h,0|b))^j,(h=0|l())^K,24),j=0|l(),j=0|Pt((h=0|vn(0|(W=0|Pt((Ie=0|vn(0|(Ie=0|vn(0|Be,0|Ie,0|ue,0|de)),0|l(),0|K,0|j))^R,(Be=0|l())^W,16)),0|(R=0|l()),0|b,0|h))^K,(b=0|l())^j,63),K=0|l(),Y=0|Pt((z=0|vn(0|(F=0|Pt(m^(le=0|vn(0|(be=0|vn(0|k,0|Y,0|u,0|_)),0|l(),0|se,0|le)),F^(se=0|l()),32)),0|(m=0|l()),0|q,0|z))^k,(q=0|l())^Y,24),k=0|l(),k=0|Pt((q=0|vn(0|(m=0|Pt((se=0|vn(0|(se=0|vn(0|le,0|se,0|te,0|ne)),0|l(),0|Y,0|k))^F,(le=0|l())^m,16)),0|(F=0|l()),0|z,0|q))^Y,(z=0|l())^k,63),Y=0|l(),v=0|Pt((w=0|vn(0|($=0|Pt((ie=0|vn(0|(be=0|vn(0|Z,0|v,0|y,0|U)),0|l(),0|oe,0|ie))^ee,(oe=0|l())^$,32)),0|(ee=0|l()),0|S,0|w))^Z,(S=0|l())^v,24),Z=0|l(),Z=0|Pt((S=0|vn(0|(ee=0|Pt((oe=0|vn(0|(oe=0|vn(0|ie,0|oe,0|g,0|ge)),0|l(),0|v,0|Z))^$,(ie=0|l())^ee,16)),0|($=0|l()),0|w,0|S))^v,(w=0|l())^Z,63),v=0|l(),K=0|Pt((z=0|vn(0|($=0|Pt(ee^(_e=0|vn(0|(_e=0|vn(0|Ce,0|_e,0|c,0|E)),0|l(),0|j,0|K)),$^(Ce=0|l()),32)),0|(ee=0|l()),0|q,0|z))^j,(q=0|l())^K,24),j=0|l(),ee=0|Pt((Ce=0|vn(0|(Ce=0|vn(0|_e,0|Ce,0|J,0|P)),0|l(),0|K,0|j))^$,(_e=0|l())^ee,16),$=0|l(),a[i+120>>2]=ee,a[i+120+4>>2]=$,j=0|Pt((q=0|vn(0|ee,0|$,0|z,0|q))^K,(z=0|l())^j,63),K=0|l(),Y=0|Pt((w=0|vn(0|(H=0|Pt((Be=0|vn(0|(Be=0|vn(0|Ie,0|Be,0|T,0|N)),0|l(),0|k,0|Y))^D,(Ie=0|l())^H,32)),0|(D=0|l()),0|S,0|w))^k,(S=0|l())^Y,24),k=0|l(),k=0|Pt((S=0|vn(0|(D=0|Pt((Ie=0|vn(0|(Ie=0|vn(0|Be,0|Ie,0|I,0|Ae)),0|l(),0|Y,0|k))^H,(Be=0|l())^D,16)),0|(H=0|l()),0|w,0|S))^Y,(w=0|l())^k,63),Y=0|l(),v=0|Pt((t=0|vn(0|(R=0|Pt((le=0|vn(0|(le=0|vn(0|se,0|le,0|M,0|L)),0|l(),0|Z,0|v))^W,(se=0|l())^R,32)),0|(W=0|l()),0|d,0|t))^Z,(d=0|l())^v,24),Z=0|l(),Z=0|Pt((d=0|vn(0|(W=0|Pt((se=0|vn(0|(se=0|vn(0|le,0|se,0|G,0|f)),0|l(),0|v,0|Z))^R,(le=0|l())^W,16)),0|(R=0|l()),0|t,0|d))^v,(t=0|l())^Z,63),v=0|l(),Q=0|Pt((b=0|vn(0|(F=0|Pt((ie=0|vn(0|(be=0|vn(0|p,0|Q,0|A,0|B)),0|l(),0|oe,0|ie))^m,(oe=0|l())^F,32)),0|(m=0|l()),0|h,0|b))^p,(h=0|l())^Q,24),p=0|l(),p=0|Pt((h=0|vn(0|(m=0|Pt((oe=0|vn(0|(oe=0|vn(0|ie,0|oe,0|re,0|ae)),0|l(),0|Q,0|p))^F,(ie=0|l())^m,16)),0|(F=0|l()),0|b,0|h))^Q,(b=0|l())^p,63),Q=0|l(),Q=0|Pt((t=0|vn(0|(H=0|Pt((_e=0|vn(0|(_e=0|vn(0|Ce,0|_e,0|G,0|f)),0|l(),0|p,0|Q))^D,(Ce=0|l())^H,32)),0|(D=0|l()),0|d,0|t))^p,(d=0|l())^Q,24),p=0|l(),p=0|Pt((d=0|vn(0|(D=0|Pt((Ce=0|vn(0|(Ce=0|vn(0|_e,0|Ce,0|T,0|N)),0|l(),0|Q,0|p))^H,(_e=0|l())^D,16)),0|(H=0|l()),0|t,0|d))^Q,(t=0|l())^p,63),Q=0|l(),a[i+32>>2]=p,a[i+32+4>>2]=Q,K=0|Pt((b=0|vn(0|(R=0|Pt(W^(Be=0|vn(0|(be=0|vn(0|j,0|K,0|ue,0|de)),0|l(),0|Ie,0|Be)),R^(Ie=0|l()),32)),0|(W=0|l()),0|h,0|b))^j,(h=0|l())^K,24),j=0|l(),j=0|Pt((h=0|vn(0|(W=0|Pt((Ie=0|vn(0|(Ie=0|vn(0|Be,0|Ie,0|g,0|ge)),0|l(),0|K,0|j))^R,(Be=0|l())^W,16)),0|(R=0|l()),0|b,0|h))^K,(b=0|l())^j,63),K=0|l(),Y=0|Pt((z=0|vn(0|(F=0|Pt(m^(le=0|vn(0|(be=0|vn(0|k,0|Y,0|O,0|x)),0|l(),0|se,0|le)),F^(se=0|l()),32)),0|(m=0|l()),0|q,0|z))^k,(q=0|l())^Y,24),k=0|l(),k=0|Pt((q=0|vn(0|(m=0|Pt((se=0|vn(0|(se=0|vn(0|le,0|se,0|y,0|U)),0|l(),0|Y,0|k))^F,(le=0|l())^m,16)),0|(F=0|l()),0|z,0|q))^Y,(z=0|l())^k,63),Y=0|l(),v=0|Pt((w=0|vn(0|($=0|Pt((ie=0|vn(0|(be=0|vn(0|Z,0|v,0|J,0|P)),0|l(),0|oe,0|ie))^ee,(oe=0|l())^$,32)),0|(ee=0|l()),0|S,0|w))^Z,(S=0|l())^v,24),Z=0|l(),Z=0|Pt((S=0|vn(0|(ee=0|Pt((oe=0|vn(0|(oe=0|vn(0|ie,0|oe,0|M,0|L)),0|l(),0|v,0|Z))^$,(ie=0|l())^ee,16)),0|($=0|l()),0|w,0|S))^v,(w=0|l())^Z,63),v=0|l(),K=0|Pt((z=0|vn(0|($=0|Pt(ee^(_e=0|vn(0|(_e=0|vn(0|Ce,0|_e,0|u,0|_)),0|l(),0|j,0|K)),$^(Ce=0|l()),32)),0|(ee=0|l()),0|q,0|z))^j,(q=0|l())^K,24),j=0|l(),ee=0|Pt((Ce=0|vn(0|(Ce=0|vn(0|_e,0|Ce,0|A,0|B)),0|l(),0|K,0|j))^$,(_e=0|l())^ee,16),$=0|l(),a[i+120>>2]=ee,a[i+120+4>>2]=$,j=0|Pt((q=0|vn(0|ee,0|$,0|z,0|q))^K,(z=0|l())^j,63),K=0|l(),Y=0|Pt((w=0|vn(0|(H=0|Pt((Be=0|vn(0|(Be=0|vn(0|Ie,0|Be,0|s,0|ce)),0|l(),0|k,0|Y))^D,(Ie=0|l())^H,32)),0|(D=0|l()),0|S,0|w))^k,(S=0|l())^Y,24),k=0|l(),k=0|Pt((S=0|vn(0|(D=0|Pt((Ie=0|vn(0|(Ie=0|vn(0|Be,0|Ie,0|X,0|V)),0|l(),0|Y,0|k))^H,(Be=0|l())^D,16)),0|(H=0|l()),0|w,0|S))^Y,(w=0|l())^k,63),Y=0|l(),v=0|Pt((t=0|vn(0|(R=0|Pt((le=0|vn(0|(le=0|vn(0|se,0|le,0|te,0|ne)),0|l(),0|Z,0|v))^W,(se=0|l())^R,32)),0|(W=0|l()),0|d,0|t))^Z,(d=0|l())^v,24),Z=0|l(),Z=0|Pt((d=0|vn(0|(W=0|Pt((se=0|vn(0|(se=0|vn(0|le,0|se,0|I,0|Ae)),0|l(),0|v,0|Z))^R,(le=0|l())^W,16)),0|(R=0|l()),0|t,0|d))^v,(t=0|l())^Z,63),v=0|l(),Q=0|Pt((b=0|vn(0|(F=0|Pt((ie=0|vn(0|(be=0|vn(0|p,0|Q,0|re,0|ae)),0|l(),0|oe,0|ie))^m,(oe=0|l())^F,32)),0|(m=0|l()),0|h,0|b))^p,(h=0|l())^Q,24),p=0|l(),p=0|Pt((h=0|vn(0|(m=0|Pt((oe=0|vn(0|(oe=0|vn(0|ie,0|oe,0|c,0|E)),0|l(),0|Q,0|p))^F,(ie=0|l())^m,16)),0|(F=0|l()),0|b,0|h))^Q,(b=0|l())^p,63),Q=0|l(),Q=0|Pt((t=0|vn(0|(H=0|Pt((_e=0|vn(0|(_e=0|vn(0|Ce,0|_e,0|re,0|ae)),0|l(),0|p,0|Q))^D,(Ce=0|l())^H,32)),0|(D=0|l()),0|d,0|t))^p,(d=0|l())^Q,24),p=0|l(),p=0|Pt((d=0|vn(0|(D=0|Pt((Ce=0|vn(0|(Ce=0|vn(0|_e,0|Ce,0|A,0|B)),0|l(),0|Q,0|p))^H,(_e=0|l())^D,16)),0|(H=0|l()),0|t,0|d))^Q,(t=0|l())^p,63),Q=0|l(),a[i+32>>2]=p,a[i+32+4>>2]=Q,K=0|Pt((b=0|vn(0|(R=0|Pt(W^(Be=0|vn(0|(be=0|vn(0|j,0|K,0|M,0|L)),0|l(),0|Ie,0|Be)),R^(Ie=0|l()),32)),0|(W=0|l()),0|h,0|b))^j,(h=0|l())^K,24),j=0|l(),j=0|Pt((h=0|vn(0|(W=0|Pt((Ie=0|vn(0|(Ie=0|vn(0|Be,0|Ie,0|I,0|Ae)),0|l(),0|K,0|j))^R,(Be=0|l())^W,16)),0|(R=0|l()),0|b,0|h))^K,(b=0|l())^j,63),K=0|l(),Y=0|Pt((z=0|vn(0|(F=0|Pt(m^(le=0|vn(0|(be=0|vn(0|k,0|Y,0|X,0|V)),0|l(),0|se,0|le)),F^(se=0|l()),32)),0|(m=0|l()),0|q,0|z))^k,(q=0|l())^Y,24),k=0|l(),k=0|Pt((q=0|vn(0|(m=0|Pt((se=0|vn(0|(se=0|vn(0|le,0|se,0|G,0|f)),0|l(),0|Y,0|k))^F,(le=0|l())^m,16)),0|(F=0|l()),0|z,0|q))^Y,(z=0|l())^k,63),Y=0|l(),v=0|Pt((w=0|vn(0|($=0|Pt((ie=0|vn(0|(be=0|vn(0|Z,0|v,0|te,0|ne)),0|l(),0|oe,0|ie))^ee,(oe=0|l())^$,32)),0|(ee=0|l()),0|S,0|w))^Z,(S=0|l())^v,24),Z=0|l(),Z=0|Pt((S=0|vn(0|(ee=0|Pt((oe=0|vn(0|(oe=0|vn(0|ie,0|oe,0|c,0|E)),0|l(),0|v,0|Z))^$,(ie=0|l())^ee,16)),0|($=0|l()),0|w,0|S))^v,(w=0|l())^Z,63),v=0|l(),K=0|Pt((z=0|vn(0|($=0|Pt(ee^(_e=0|vn(0|(_e=0|vn(0|Ce,0|_e,0|T,0|N)),0|l(),0|j,0|K)),$^(Ce=0|l()),32)),0|(ee=0|l()),0|q,0|z))^j,(q=0|l())^K,24),j=0|l(),ee=0|Pt((Ce=0|vn(0|(Ce=0|vn(0|_e,0|Ce,0|O,0|x)),0|l(),0|K,0|j))^$,(_e=0|l())^ee,16),$=0|l(),a[i+120>>2]=ee,a[i+120+4>>2]=$,j=0|Pt((q=0|vn(0|ee,0|$,0|z,0|q))^K,(z=0|l())^j,63),K=0|l(),Y=0|Pt((w=0|vn(0|(H=0|Pt((Be=0|vn(0|(Be=0|vn(0|Ie,0|Be,0|g,0|ge)),0|l(),0|k,0|Y))^D,(Ie=0|l())^H,32)),0|(D=0|l()),0|S,0|w))^k,(S=0|l())^Y,24),k=0|l(),k=0|Pt((S=0|vn(0|(D=0|Pt((Ie=0|vn(0|(Ie=0|vn(0|Be,0|Ie,0|ue,0|de)),0|l(),0|Y,0|k))^H,(Be=0|l())^D,16)),0|(H=0|l()),0|w,0|S))^Y,(w=0|l())^k,63),Y=0|l(),v=0|Pt((t=0|vn(0|(R=0|Pt((le=0|vn(0|(le=0|vn(0|se,0|le,0|y,0|U)),0|l(),0|Z,0|v))^W,(se=0|l())^R,32)),0|(W=0|l()),0|d,0|t))^Z,(d=0|l())^v,24),Z=0|l(),Z=0|Pt((d=0|vn(0|(W=0|Pt((se=0|vn(0|(se=0|vn(0|le,0|se,0|u,0|_)),0|l(),0|v,0|Z))^R,(le=0|l())^W,16)),0|(R=0|l()),0|t,0|d))^v,(t=0|l())^Z,63),v=0|l(),Q=0|Pt((b=0|vn(0|(F=0|Pt((ie=0|vn(0|(be=0|vn(0|p,0|Q,0|s,0|ce)),0|l(),0|oe,0|ie))^m,(oe=0|l())^F,32)),0|(m=0|l()),0|h,0|b))^p,(h=0|l())^Q,24),p=0|l(),p=0|Pt((h=0|vn(0|(m=0|Pt((oe=0|vn(0|(oe=0|vn(0|ie,0|oe,0|J,0|P)),0|l(),0|Q,0|p))^F,(ie=0|l())^m,16)),0|(F=0|l()),0|b,0|h))^Q,(b=0|l())^p,63),Q=0|l(),Q=0|Pt((t=0|vn(0|(H=0|Pt((_e=0|vn(0|(_e=0|vn(0|Ce,0|_e,0|J,0|P)),0|l(),0|p,0|Q))^D,(Ce=0|l())^H,32)),0|(D=0|l()),0|d,0|t))^p,(d=0|l())^Q,24),p=0|l(),p=0|Pt((d=0|vn(0|(D=0|Pt((Ce=0|vn(0|(Ce=0|vn(0|_e,0|Ce,0|te,0|ne)),0|l(),0|Q,0|p))^H,(_e=0|l())^D,16)),0|(H=0|l()),0|t,0|d))^Q,(t=0|l())^p,63),Q=0|l(),a[i+32>>2]=p,a[i+32+4>>2]=Q,K=0|Pt((b=0|vn(0|(R=0|Pt(W^(Be=0|vn(0|(be=0|vn(0|j,0|K,0|A,0|B)),0|l(),0|Ie,0|Be)),R^(Ie=0|l()),32)),0|(W=0|l()),0|h,0|b))^j,(h=0|l())^K,24),j=0|l(),j=0|Pt((h=0|vn(0|(W=0|Pt((Ie=0|vn(0|(Ie=0|vn(0|Be,0|Ie,0|y,0|U)),0|l(),0|K,0|j))^R,(Be=0|l())^W,16)),0|(R=0|l()),0|b,0|h))^K,(b=0|l())^j,63),K=0|l(),Y=0|Pt((z=0|vn(0|(F=0|Pt(m^(le=0|vn(0|(be=0|vn(0|k,0|Y,0|I,0|Ae)),0|l(),0|se,0|le)),F^(se=0|l()),32)),0|(m=0|l()),0|q,0|z))^k,(q=0|l())^Y,24),k=0|l(),k=0|Pt((q=0|vn(0|(m=0|Pt((se=0|vn(0|(se=0|vn(0|le,0|se,0|c,0|E)),0|l(),0|Y,0|k))^F,(le=0|l())^m,16)),0|(F=0|l()),0|z,0|q))^Y,(z=0|l())^k,63),Y=0|l(),v=0|Pt((w=0|vn(0|($=0|Pt((ie=0|vn(0|(be=0|vn(0|Z,0|v,0|G,0|f)),0|l(),0|oe,0|ie))^ee,(oe=0|l())^$,32)),0|(ee=0|l()),0|S,0|w))^Z,(S=0|l())^v,24),Z=0|l(),Z=0|Pt((S=0|vn(0|(ee=0|Pt((oe=0|vn(0|(oe=0|vn(0|ie,0|oe,0|X,0|V)),0|l(),0|v,0|Z))^$,(ie=0|l())^ee,16)),0|($=0|l()),0|w,0|S))^v,(w=0|l())^Z,63),v=0|l(),K=0|Pt((z=0|vn(0|($=0|Pt(ee^(_e=0|vn(0|(_e=0|vn(0|Ce,0|_e,0|M,0|L)),0|l(),0|j,0|K)),$^(Ce=0|l()),32)),0|(ee=0|l()),0|q,0|z))^j,(q=0|l())^K,24),j=0|l(),ee=0|Pt((Ce=0|vn(0|(Ce=0|vn(0|_e,0|Ce,0|g,0|ge)),0|l(),0|K,0|j))^$,(_e=0|l())^ee,16),$=0|l(),a[i+120>>2]=ee,a[i+120+4>>2]=$,j=0|Pt((q=0|vn(0|ee,0|$,0|z,0|q))^K,(z=0|l())^j,63),K=0|l(),Y=0|Pt((w=0|vn(0|(H=0|Pt((Be=0|vn(0|(Be=0|vn(0|Ie,0|Be,0|re,0|ae)),0|l(),0|k,0|Y))^D,(Ie=0|l())^H,32)),0|(D=0|l()),0|S,0|w))^k,(S=0|l())^Y,24),k=0|l(),k=0|Pt((S=0|vn(0|(D=0|Pt((Ie=0|vn(0|(Ie=0|vn(0|Be,0|Ie,0|O,0|x)),0|l(),0|Y,0|k))^H,(Be=0|l())^D,16)),0|(H=0|l()),0|w,0|S))^Y,(w=0|l())^k,63),Y=0|l(),v=0|Pt((t=0|vn(0|(R=0|Pt((le=0|vn(0|(le=0|vn(0|se,0|le,0|u,0|_)),0|l(),0|Z,0|v))^W,(se=0|l())^R,32)),0|(W=0|l()),0|d,0|t))^Z,(d=0|l())^v,24),Z=0|l(),Z=0|Pt((d=0|vn(0|(W=0|Pt((se=0|vn(0|(se=0|vn(0|le,0|se,0|s,0|ce)),0|l(),0|v,0|Z))^R,(le=0|l())^W,16)),0|(R=0|l()),0|t,0|d))^v,(t=0|l())^Z,63),v=0|l(),Q=0|Pt((b=0|vn(0|(F=0|Pt((ie=0|vn(0|(be=0|vn(0|p,0|Q,0|ue,0|de)),0|l(),0|oe,0|ie))^m,(oe=0|l())^F,32)),0|(m=0|l()),0|h,0|b))^p,(h=0|l())^Q,24),p=0|l(),p=0|Pt((h=0|vn(0|(m=0|Pt((oe=0|vn(0|(oe=0|vn(0|ie,0|oe,0|T,0|N)),0|l(),0|Q,0|p))^F,(ie=0|l())^m,16)),0|(F=0|l()),0|b,0|h))^Q,(b=0|l())^p,63),Q=0|l(),Q=0|Pt((t=0|vn(0|(H=0|Pt((de=0|vn(0|(de=0|vn(0|Ce,0|_e,0|ue,0|de)),0|l(),0|p,0|Q))^D,(ue=0|l())^H,32)),0|(D=0|l()),0|d,0|t))^p,(d=0|l())^Q,24),p=0|l(),p=0|Pt((d=0|vn(0|(D=0|Pt((ae=0|vn(0|(ae=0|vn(0|de,0|ue,0|re,0|ae)),0|l(),0|Q,0|p))^H,(re=0|l())^D,16)),0|(H=0|l()),0|t,0|d))^Q,(t=0|l())^p,63),Q=0|l(),a[i+32>>2]=p,a[i+32+4>>2]=Q,K=0|Pt((b=0|vn(0|(R=0|Pt(W^(Be=0|vn(0|(Ae=0|vn(0|j,0|K,0|I,0|Ae)),0|l(),0|Ie,0|Be)),R^(Ie=0|l()),32)),0|(W=0|l()),0|h,0|b))^j,(h=0|l())^K,24),j=0|l(),j=0|Pt((h=0|vn(0|(W=0|Pt((L=0|vn(0|(L=0|vn(0|Be,0|Ie,0|M,0|L)),0|l(),0|K,0|j))^R,(M=0|l())^W,16)),0|(R=0|l()),0|b,0|h))^K,(b=0|l())^j,63),K=0|l(),Y=0|Pt((z=0|vn(0|(F=0|Pt(m^(le=0|vn(0|(ge=0|vn(0|k,0|Y,0|g,0|ge)),0|l(),0|se,0|le)),F^(se=0|l()),32)),0|(m=0|l()),0|q,0|z))^k,(q=0|l())^Y,24),k=0|l(),k=0|Pt((q=0|vn(0|(m=0|Pt((N=0|vn(0|(N=0|vn(0|le,0|se,0|T,0|N)),0|l(),0|Y,0|k))^F,(T=0|l())^m,16)),0|(F=0|l()),0|z,0|q))^Y,(z=0|l())^k,63),Y=0|l(),v=0|Pt((w=0|vn(0|($=0|Pt((ie=0|vn(0|(ce=0|vn(0|Z,0|v,0|s,0|ce)),0|l(),0|oe,0|ie))^ee,(oe=0|l())^$,32)),0|(ee=0|l()),0|S,0|w))^Z,(S=0|l())^v,24),Z=0|l(),Z=0|Pt((S=0|vn(0|(ee=0|Pt((f=0|vn(0|(f=0|vn(0|ie,0|oe,0|G,0|f)),0|l(),0|v,0|Z))^$,(G=0|l())^ee,16)),0|($=0|l()),0|w,0|S))^v,(w=0|l())^Z,63),v=0|l(),K=0|Pt((z=0|vn(0|($=0|Pt(ee^(ne=0|vn(0|(ne=0|vn(0|ae,0|re,0|te,0|ne)),0|l(),0|j,0|K)),$^(te=0|l()),32)),0|(ee=0|l()),0|q,0|z))^j,(q=0|l())^K,24),j=0|l(),_=0|vn(0|(_=0|vn(0|ne,0|te,0|u,0|_)),0|l(),0|K,0|j),u=0|l(),a[i>>2]=_,a[i+4>>2]=u,ee=0|Pt(_^$,u^ee,16),$=0|l(),a[i+120>>2]=ee,a[i+120+4>>2]=$,q=0|vn(0|ee,0|$,0|z,0|q),z=0|l(),a[i+80>>2]=q,a[i+80+4>>2]=z,j=0|Pt(q^K,z^j,63),z=0|l(),a[i+40>>2]=j,a[i+40+4>>2]=z,Y=0|Pt((w=0|vn(0|(H=0|Pt((P=0|vn(0|(P=0|vn(0|L,0|M,0|J,0|P)),0|l(),0|k,0|Y))^D,(J=0|l())^H,32)),0|(D=0|l()),0|S,0|w))^k,(S=0|l())^Y,24),k=0|l(),B=0|vn(0|(B=0|vn(0|P,0|J,0|A,0|B)),0|l(),0|Y,0|k),A=0|l(),a[i+8>>2]=B,a[i+8+4>>2]=A,D=0|Pt(B^H,A^D,16),H=0|l(),a[i+96>>2]=D,a[i+96+4>>2]=H,S=0|vn(0|D,0|H,0|w,0|S),w=0|l(),a[i+88>>2]=S,a[i+88+4>>2]=w,k=0|Pt(S^Y,w^k,63),w=0|l(),a[i+48>>2]=k,a[i+48+4>>2]=w,v=0|Pt((t=0|vn(0|(R=0|Pt((x=0|vn(0|(x=0|vn(0|N,0|T,0|O,0|x)),0|l(),0|Z,0|v))^W,(O=0|l())^R,32)),0|(W=0|l()),0|d,0|t))^Z,(d=0|l())^v,24),Z=0|l(),V=0|vn(0|(V=0|vn(0|x,0|O,0|X,0|V)),0|l(),0|v,0|Z),X=0|l(),a[i+16>>2]=V,a[i+16+4>>2]=X,W=0|Pt(V^R,X^W,16),X=0|l(),a[i+104>>2]=W,a[i+104+4>>2]=X,d=0|vn(0|W,0|X,0|t,0|d),t=0|l(),a[i+64>>2]=d,a[i+64+4>>2]=t,Z=0|Pt(d^v,t^Z,63),v=0|l(),a[i+56>>2]=Z,a[i+56+4>>2]=v,Q=0|Pt((b=0|vn(0|(F=0|Pt((G=0|vn(0|(E=0|vn(0|p,0|Q,0|c,0|E)),0|l(),0|f,0|G))^m,(f=0|l())^F,32)),0|(m=0|l()),0|h,0|b))^p,(h=0|l())^Q,24),p=0|l(),U=0|vn(0|(U=0|vn(0|G,0|f,0|y,0|U)),0|l(),0|Q,0|p),y=0|l(),a[i+24>>2]=U,a[i+24+4>>2]=y,m=0|Pt(U^F,y^m,16),y=0|l(),a[i+112>>2]=m,a[i+112+4>>2]=y,h=0|vn(0|m,0|y,0|b,0|h),b=0|l(),a[i+72>>2]=h,a[i+72+4>>2]=b,p=0|Pt(h^Q,b^p,63),b=0|l(),a[i+32>>2]=p,a[i+32+4>>2]=b,d=_^(o[e>>0]|o[e+1>>0]<<8|o[e+2>>0]<<16|o[e+3>>0]<<24)^d,t=u^(o[e+4>>0]|o[e+4+1>>0]<<8|o[e+4+2>>0]<<16|o[e+4+3>>0]<<24)^t,r[e>>0]=d,r[e+1>>0]=d>>8,r[e+2>>0]=d>>16,r[e+3>>0]=d>>24,r[e+4>>0]=t,r[e+4+1>>0]=t>>8,r[e+4+2>>0]=t>>16,r[e+4+3>>0]=t>>24,t=1;Ce=i+(t+8<<3)|0,_e=B^(o[(be=e+(t<<3)|0)>>0]|o[be+1>>0]<<8|o[be+2>>0]<<16|o[be+3>>0]<<24)^a[Ce>>2],Ce=A^(o[be+4>>0]|o[be+4+1>>0]<<8|o[be+4+2>>0]<<16|o[be+4+3>>0]<<24)^a[Ce+4>>2],r[be>>0]=_e,r[be+1>>0]=_e>>8,r[be+2>>0]=_e>>16,r[be+3>>0]=_e>>24,r[be+4>>0]=Ce,r[be+4+1>>0]=Ce>>8,r[be+4+2>>0]=Ce>>16,r[be+4+3>>0]=Ce>>24,8!=(0|(t=t+1|0));)B=0|a[i+(t<<3)>>2],A=0|a[i+(t<<3)+4>>2];C=n}function p(e,t,n,a){e|=0,n|=0,a|=0;var o,i,c,s,g,I,B,A,u,d,_,C,b,p,Q,h,y,m,F,U,f,G=0,E=0,v=0,Z=0,X=0,W=0,R=0,V=0,O=0,x=0,T=0,N=0,w=0,k=0,Y=0,S=0,H=0,D=0,J=0,P=0,M=0,L=0,z=0,j=0,K=0,q=0,$=0,ee=0,te=0,ne=0,re=0,ae=0,oe=0,ie=0,ce=0,se=0,le=0,ge=0,Ie=0,Be=0,Ae=0,ue=0,de=0,_e=0,Ce=0,be=0,pe=0,Qe=0,he=0,ye=0,me=0,Fe=0,Ue=0,fe=0,Ge=0,Ee=0,ve=0,Ze=0,Xe=0,We=0,Re=0,Ve=0,Oe=0,xe=0,Te=0,Ne=0,we=0,ke=0,Ye=0,Se=0,He=0,De=0,Je=0,Pe=0,Me=0,Le=0,ze=0,je=0,Ke=0,qe=0,$e=0,et=0,tt=0,nt=0,rt=0,at=0,ot=0,it=0,ct=0,st=0,lt=0,gt=0,It=0,Bt=0,At=0,ut=0,dt=0,_t=0,Ct=0,bt=0,Qt=0,ht=0,yt=0,mt=0,Ft=0,Ut=0,ft=0,Gt=0,Et=0,vt=0,Zt=0,Xt=0,Wt=0,Rt=0,Vt=0,Ot=0,xt=0,Tt=0,Nt=0,wt=0,kt=0,Yt=0,St=0,Ht=0,Dt=0,Jt=0,Pt=0,Mt=0,Lt=0,zt=0,jt=0,qt=0,en=0,nn=0,rn=0,an=0,on=0,cn=0,ln=0,gn=0,In=0,An=0,un=0,dn=0,_n=0,Cn=0,bn=0,pn=0,Qn=0,hn=0,yn=0,mn=0,Fn=0;_e=0|Kt(0|r[(t|=0)>>0],0|r[t+1>>0],0|r[t+2>>0]),l(),Rt=0|Bn(0|(Rt=0|pt(t+2|0)),0|l(),5),l(),Ft=0|Bn(0|(Ft=0|Kt(0|r[t+5>>0],0|r[t+6>>0],0|r[t+7>>0])),0|l(),2),l(),Wt=0|Bn(0|(Wt=0|pt(t+7|0)),0|l(),7),l(),Ct=0|Bn(0|(Ct=0|pt(t+10|0)),0|l(),4),l(),ae=0|Bn(0|(ae=0|Kt(0|r[t+13>>0],0|r[t+14>>0],0|r[t+15>>0])),0|l(),1),l(),he=0|Bn(0|(he=0|pt(t+15|0)),0|l(),6),l(),G=0|Bn(0|(G=0|Kt(0|r[t+18>>0],0|r[t+19>>0],0|r[t+20>>0])),0|l(),3),l(),oe=0|Kt(0|r[t+21>>0],0|r[t+22>>0],0|r[t+23>>0]),l(),M=0|Bn(0|(M=0|pt(t+23|0)),0|l(),5),l(),Fe=0|Bn(0|(Fe=0|Kt(0|r[t+26>>0],0|r[t+27>>0],0|r[t+28>>0])),0|l(),2),l(),Ee=0|Bn(0|(Ee=0|pt(t+28|0)),0|l(),7),ve=0|l(),Dt=0|Kt(0|r[n>>0],0|r[n+1>>0],0|r[n+2>>0]),l(),Qt=0|Bn(0|(Qt=0|pt(n+2|0)),0|l(),5),l(),nt=0|Bn(0|(nt=0|Kt(0|r[n+5>>0],0|r[n+6>>0],0|r[n+7>>0])),0|l(),2),l(),E=0|Bn(0|(E=0|pt(n+7|0)),0|l(),7),l(),v=0|Bn(0|(v=0|pt(n+10|0)),0|l(),4),l(),S=0|Bn(0|(S=0|Kt(0|r[n+13>>0],0|r[n+14>>0],0|r[n+15>>0])),0|l(),1),l(),ze=0|Bn(0|(ze=0|pt(n+15|0)),0|l(),6),l(),be=0|Bn(0|(be=0|Kt(0|r[n+18>>0],0|r[n+19>>0],0|r[n+20>>0])),0|l(),3),l(),Ne=0|Kt(0|r[n+21>>0],0|r[n+22>>0],0|r[n+23>>0]),l(),te=0|Bn(0|(te=0|pt(n+23|0)),0|l(),5),l(),wt=0|Bn(0|(wt=0|Kt(0|r[n+26>>0],0|r[n+27>>0],0|r[n+28>>0])),0|l(),2),l(),Ae=0|Bn(0|(Ae=0|pt(n+28|0)),0|l(),7),Be=0|l(),Ye=0|Kt(0|r[a>>0],0|r[a+1>>0],0|r[a+2>>0]),l(),re=0|Bn(0|(re=0|pt(a+2|0)),0|l(),5),l(),He=0|Bn(0|(He=0|Kt(0|r[a+5>>0],0|r[a+6>>0],0|r[a+7>>0])),0|l(),2),l(),Oe=0|Bn(0|(Oe=0|pt(a+7|0)),0|l(),7),l(),Te=0|Bn(0|(Te=0|pt(a+10|0)),0|l(),4),l(),je=0|Bn(0|(je=0|Kt(0|r[a+13>>0],0|r[a+14>>0],0|r[a+15>>0])),0|l(),1),l(),Gt=0|Bn(0|(Gt=0|pt(a+15|0)),0|l(),6),l(),R=0|Bn(0|(R=0|Kt(0|r[a+18>>0],0|r[a+19>>0],0|r[a+20>>0])),0|l(),3),l(),gt=0|Kt(0|r[a+21>>0],0|r[a+22>>0],0|r[a+23>>0]),l(),Pe=0|Bn(0|(Pe=0|pt(a+23|0)),0|l(),5),l(),ue=0|Bn(0|(ue=0|Kt(0|r[a+26>>0],0|r[a+27>>0],0|r[a+28>>0])),0|l(),2),l(),yt=0|Bn(0|(yt=0|pt(a+28|0)),0|l(),7),Et=0|l(),ke=0|vn(2097151&Ye|0,0,0|(ke=0|$t(2097151&Dt|0,0,2097151&_e|0,0)),0|l()),Ye=0|l(),h=0|$t(2097151&Qt|0,0,2097151&_e|0,0),Q=0|l(),p=0|$t(2097151&Dt|0,0,2097151&Rt|0,0),$e=0|l(),q=0|$t(2097151&nt|0,0,2097151&_e|0,0),Se=0|l(),He=0|vn(0|(Se=0|vn(0|(Ve=0|vn(0|(K=0|$t(2097151&Qt|0,0,2097151&Rt|0,0)),0|l(),0|(Ve=0|$t(2097151&Dt|0,0,2097151&Ft|0,0)),0|l())),0|l(),0|q,0|Se)),0|l(),2097151&He|0,0),Se=0|l(),q=0|$t(2097151&E|0,0,2097151&_e|0,0),Ve=0|l(),f=0|$t(2097151&nt|0,0,2097151&Rt|0,0),K=0|l(),b=0|$t(2097151&Qt|0,0,2097151&Ft|0,0),C=0|l(),_=0|$t(2097151&Dt|0,0,2097151&Wt|0,0),Fn=0|l(),Ie=0|$t(2097151&v|0,0,2097151&_e|0,0),xe=0|l(),pn=0|$t(2097151&E|0,0,2097151&Rt|0,0),Ke=0|l(),hn=0|$t(2097151&nt|0,0,2097151&Ft|0,0),T=0|l(),Te=0|vn(0|(xe=0|vn(0|(Ke=0|vn(0|(T=0|vn(0|(Qn=0|vn(0|(yn=0|$t(2097151&Qt|0,0,2097151&Wt|0,0)),0|l(),0|(Qn=0|$t(2097151&Dt|0,0,2097151&Ct|0,0)),0|l())),0|l(),0|hn,0|T)),0|l(),0|pn,0|Ke)),0|l(),0|Ie,0|xe)),0|l(),2097151&Te|0,0),xe=0|l(),Ie=0|$t(2097151&S|0,0,2097151&_e|0,0),Ke=0|l(),pn=0|$t(2097151&v|0,0,2097151&Rt|0,0),T=0|l(),hn=0|$t(2097151&E|0,0,2097151&Ft|0,0),Qn=0|l(),U=0|$t(2097151&nt|0,0,2097151&Wt|0,0),yn=0|l(),d=0|$t(2097151&Qt|0,0,2097151&Ct|0,0),u=0|l(),A=0|$t(2097151&Dt|0,0,2097151&ae|0,0),mn=0|l(),t=0|$t(2097151&ze|0,0,2097151&_e|0,0),ht=0|l(),ln=0|$t(2097151&S|0,0,2097151&Rt|0,0),Z=0|l(),In=0|$t(2097151&v|0,0,2097151&Ft|0,0),W=0|l(),un=0|$t(2097151&E|0,0,2097151&Wt|0,0),gn=0|l(),_n=0|$t(2097151&nt|0,0,2097151&Ct|0,0),An=0|l(),Gt=0|vn(0|(ht=0|vn(0|(Z=0|vn(0|(W=0|vn(0|(gn=0|vn(0|(An=0|vn(0|(dn=0|vn(0|(Cn=0|$t(2097151&Qt|0,0,2097151&ae|0,0)),0|l(),0|(dn=0|$t(2097151&Dt|0,0,2097151&he|0,0)),0|l())),0|l(),0|_n,0|An)),0|l(),0|un,0|gn)),0|l(),0|In,0|W)),0|l(),0|ln,0|Z)),0|l(),0|t,0|ht)),0|l(),2097151&Gt|0,0),ht=0|l(),t=0|$t(2097151&be|0,0,2097151&_e|0,0),Z=0|l(),ln=0|$t(2097151&ze|0,0,2097151&Rt|0,0),W=0|l(),In=0|$t(2097151&S|0,0,2097151&Ft|0,0),gn=0|l(),un=0|$t(2097151&v|0,0,2097151&Wt|0,0),An=0|l(),_n=0|$t(2097151&E|0,0,2097151&Ct|0,0),dn=0|l(),F=0|$t(2097151&nt|0,0,2097151&ae|0,0),Cn=0|l(),B=0|$t(2097151&Qt|0,0,2097151&he|0,0),I=0|l(),g=0|$t(2097151&Dt|0,0,2097151&G|0,0),bn=0|l(),Mt=0|$t(2097151&Ne|0,0,2097151&_e|0,0),X=0|l(),P=0|$t(2097151&be|0,0,2097151&Rt|0,0),It=0|l(),Jt=0|$t(2097151&ze|0,0,2097151&Ft|0,0),Pt=0|l(),zt=0|$t(2097151&S|0,0,2097151&Wt|0,0),J=0|l(),qt=0|$t(2097151&v|0,0,2097151&Ct|0,0),Lt=0|l(),nn=0|$t(2097151&E|0,0,2097151&ae|0,0),jt=0|l(),an=0|$t(2097151&nt|0,0,2097151&he|0,0),en=0|l(),gt=0|vn(0|(It=0|vn(0|(X=0|vn(0|(Pt=0|vn(0|(J=0|vn(0|(Lt=0|vn(0|(jt=0|vn(0|(en=0|vn(0|(rn=0|vn(0|(on=0|$t(2097151&Qt|0,0,2097151&G|0,0)),0|l(),0|(rn=0|$t(2097151&Dt|0,0,2097151&oe|0,0)),0|l())),0|l(),0|an,0|en)),0|l(),0|nn,0|jt)),0|l(),0|qt,0|Lt)),0|l(),0|zt,0|J)),0|l(),0|Jt,0|Pt)),0|l(),0|Mt,0|X)),0|l(),0|P,0|It)),0|l(),2097151>|0,0),It=0|l(),P=0|$t(2097151&te|0,0,2097151&_e|0,0),X=0|l(),Mt=0|$t(2097151&Ne|0,0,2097151&Rt|0,0),Pt=0|l(),Jt=0|$t(2097151&be|0,0,2097151&Ft|0,0),J=0|l(),zt=0|$t(2097151&ze|0,0,2097151&Wt|0,0),Lt=0|l(),qt=0|$t(2097151&S|0,0,2097151&Ct|0,0),jt=0|l(),nn=0|$t(2097151&v|0,0,2097151&ae|0,0),en=0|l(),an=0|$t(2097151&E|0,0,2097151&he|0,0),rn=0|l(),m=0|$t(2097151&nt|0,0,2097151&G|0,0),on=0|l(),s=0|$t(2097151&Qt|0,0,2097151&oe|0,0),c=0|l(),i=0|$t(2097151&Dt|0,0,2097151&M|0,0),cn=0|l(),Ce=0|$t(2097151&wt|0,0,2097151&_e|0,0),de=0|l(),j=0|$t(2097151&te|0,0,2097151&Rt|0,0),z=0|l(),ct=0|$t(2097151&Ne|0,0,2097151&Ft|0,0),it=0|l(),xt=0|$t(2097151&be|0,0,2097151&Wt|0,0),Ot=0|l(),ie=0|$t(2097151&ze|0,0,2097151&Ct|0,0),O=0|l(),ft=0|$t(2097151&S|0,0,2097151&ae|0,0),Ut=0|l(),tt=0|$t(2097151&v|0,0,2097151&he|0,0),et=0|l(),At=0|$t(2097151&E|0,0,2097151&G|0,0),Bt=0|l(),L=0|$t(2097151&nt|0,0,2097151&oe|0,0),a=0|l(),ue=0|vn(0|(de=0|vn(0|(z=0|vn(0|(Ot=0|vn(0|(it=0|vn(0|(O=0|vn(0|(Ut=0|vn(0|(et=0|vn(0|(Bt=0|vn(0|(a=0|vn(0|(St=0|vn(0|$t(2097151&Qt|0,0,2097151&M|0,0),0|(Yt=0|l()),0|(St=0|$t(2097151&Dt|0,0,2097151&Fe|0,0)),0|l())),0|l(),0|L,0|a)),0|l(),0|At,0|Bt)),0|l(),0|tt,0|et)),0|l(),0|ft,0|Ut)),0|l(),0|ie,0|O)),0|l(),0|ct,0|it)),0|l(),0|xt,0|Ot)),0|l(),0|j,0|z)),0|l(),0|Ce,0|de)),0|l(),2097151&ue|0,0),de=0|l(),_e=0|$t(0|Ae,0|Be,2097151&_e|0,0),Ce=0|l(),z=0|$t(2097151&wt|0,0,2097151&Rt|0,0),j=0|l(),Ot=0|$t(2097151&te|0,0,2097151&Ft|0,0),xt=0|l(),it=0|$t(2097151&Ne|0,0,2097151&Wt|0,0),ct=0|l(),O=0|$t(2097151&be|0,0,2097151&Ct|0,0),ie=0|l(),Ut=0|$t(2097151&ze|0,0,2097151&ae|0,0),ft=0|l(),et=0|$t(2097151&S|0,0,2097151&he|0,0),tt=0|l(),Bt=0|$t(2097151&v|0,0,2097151&G|0,0),At=0|l(),a=0|$t(2097151&E|0,0,2097151&oe|0,0),L=0|l(),St=0|$t(2097151&nt|0,0,2097151&M|0,0),Yt=0|l(),y=0|$t(2097151&Qt|0,0,2097151&Fe|0,0),o=0|l(),Dt=0|$t(2097151&Dt|0,0,0|Ee,0|ve),Ht=0|l(),Rt=0|$t(0|Ae,0|Be,2097151&Rt|0,0),Vt=0|l(),pe=0|$t(2097151&wt|0,0,2097151&Ft|0,0),mt=0|l(),Tt=0|$t(2097151&te|0,0,2097151&Wt|0,0),w=0|l(),me=0|$t(2097151&Ne|0,0,2097151&Ct|0,0),ge=0|l(),le=0|$t(2097151&be|0,0,2097151&ae|0,0),Nt=0|l(),We=0|$t(2097151&ze|0,0,2097151&he|0,0),Y=0|l(),Ue=0|$t(2097151&S|0,0,2097151&G|0,0),Re=0|l(),dt=0|$t(2097151&v|0,0,2097151&oe|0,0),Ze=0|l(),bt=0|$t(2097151&E|0,0,2097151&M|0,0),ut=0|l(),Vt=0|vn(0|(mt=0|vn(0|(w=0|vn(0|(Nt=0|vn(0|(ge=0|vn(0|(Y=0|vn(0|(Re=0|vn(0|(Ze=0|vn(0|(ut=0|vn(0|(Qt=0|vn(0|(Xt=0|$t(2097151&nt|0,0,2097151&Fe|0,0)),0|(rt=0|l()),0|(Qt=0|$t(2097151&Qt|0,0,0|Ee,0|ve)),0|l())),0|l(),0|bt,0|ut)),0|l(),0|dt,0|Ze)),0|l(),0|Ue,0|Re)),0|l(),0|We,0|Y)),0|l(),0|me,0|ge)),0|l(),0|le,0|Nt)),0|l(),0|Tt,0|w)),0|l(),0|pe,0|mt)),0|l(),0|Rt,0|Vt),Rt=0|l(),Ft=0|$t(0|Ae,0|Be,2097151&Ft|0,0),mt=0|l(),pe=0|$t(2097151&wt|0,0,2097151&Wt|0,0),w=0|l(),Tt=0|$t(2097151&te|0,0,2097151&Ct|0,0),Nt=0|l(),le=0|$t(2097151&Ne|0,0,2097151&ae|0,0),ge=0|l(),me=0|$t(2097151&be|0,0,2097151&he|0,0),Y=0|l(),We=0|$t(2097151&ze|0,0,2097151&G|0,0),Re=0|l(),Ue=0|$t(2097151&S|0,0,2097151&oe|0,0),Ze=0|l(),dt=0|$t(2097151&v|0,0,2097151&M|0,0),ut=0|l(),bt=0|$t(2097151&E|0,0,2097151&Fe|0,0),Qt=0|l(),nt=0|$t(2097151&nt|0,0,0|Ee,0|ve),rt=0|l(),Wt=0|$t(0|Ae,0|Be,2097151&Wt|0,0),Xt=0|l(),vt=0|$t(2097151&wt|0,0,2097151&Ct|0,0),_t=0|l(),H=0|$t(2097151&te|0,0,2097151&ae|0,0),Zt=0|l(),Me=0|$t(2097151&Ne|0,0,2097151&he|0,0),$=0|l(),x=0|$t(2097151&be|0,0,2097151&G|0,0),n=0|l(),V=0|$t(2097151&ze|0,0,2097151&oe|0,0),qe=0|l(),ye=0|$t(2097151&S|0,0,2097151&M|0,0),Qe=0|l(),Xt=0|vn(0|(_t=0|vn(0|(Zt=0|vn(0|(n=0|vn(0|($=0|vn(0|(qe=0|vn(0|(Qe=0|vn(0|(E=0|vn(0|(kt=0|$t(2097151&v|0,0,2097151&Fe|0,0)),0|(k=0|l()),0|(E=0|$t(2097151&E|0,0,0|Ee,0|ve)),0|l())),0|l(),0|ye,0|Qe)),0|l(),0|V,0|qe)),0|l(),0|Me,0|$)),0|l(),0|x,0|n)),0|l(),0|H,0|Zt)),0|l(),0|vt,0|_t)),0|l(),0|Wt,0|Xt),Wt=0|l(),Ct=0|$t(0|Ae,0|Be,2097151&Ct|0,0),_t=0|l(),vt=0|$t(2097151&wt|0,0,2097151&ae|0,0),Zt=0|l(),H=0|$t(2097151&te|0,0,2097151&he|0,0),n=0|l(),x=0|$t(2097151&Ne|0,0,2097151&G|0,0),$=0|l(),Me=0|$t(2097151&be|0,0,2097151&oe|0,0),qe=0|l(),V=0|$t(2097151&ze|0,0,2097151&M|0,0),Qe=0|l(),ye=0|$t(2097151&S|0,0,2097151&Fe|0,0),E=0|l(),v=0|$t(2097151&v|0,0,0|Ee,0|ve),k=0|l(),ae=0|$t(0|Ae,0|Be,2097151&ae|0,0),kt=0|l(),ot=0|$t(2097151&wt|0,0,2097151&he|0,0),ne=0|l(),Ge=0|$t(2097151&te|0,0,2097151&G|0,0),at=0|l(),D=0|$t(2097151&Ne|0,0,2097151&oe|0,0),ce=0|l(),se=0|$t(2097151&be|0,0,2097151&M|0,0),fe=0|l(),kt=0|vn(0|(ne=0|vn(0|(at=0|vn(0|(fe=0|vn(0|(ce=0|vn(0|(S=0|vn(0|(N=0|$t(2097151&ze|0,0,2097151&Fe|0,0)),0|(Le=0|l()),0|(S=0|$t(2097151&S|0,0,0|Ee,0|ve)),0|l())),0|l(),0|D,0|ce)),0|l(),0|se,0|fe)),0|l(),0|Ge,0|at)),0|l(),0|ot,0|ne)),0|l(),0|ae,0|kt),ae=0|l(),he=0|$t(0|Ae,0|Be,2097151&he|0,0),ne=0|l(),ot=0|$t(2097151&wt|0,0,2097151&G|0,0),at=0|l(),Ge=0|$t(2097151&te|0,0,2097151&oe|0,0),fe=0|l(),se=0|$t(2097151&Ne|0,0,2097151&M|0,0),ce=0|l(),D=0|$t(2097151&be|0,0,2097151&Fe|0,0),S=0|l(),ze=0|$t(2097151&ze|0,0,0|Ee,0|ve),Le=0|l(),G=0|$t(0|Ae,0|Be,2097151&G|0,0),N=0|l(),De=0|$t(2097151&wt|0,0,2097151&oe|0,0),ee=0|l(),lt=0|$t(2097151&te|0,0,2097151&M|0,0),Je=0|l(),we=0|$t(2097151&Ne|0,0,2097151&Fe|0,0),st=0|l(),N=0|vn(0|(ee=0|vn(0|(Je=0|vn(0|(st=0|vn(0|(be=0|$t(2097151&be|0,0,0|Ee,0|ve)),0|l(),0|we,0|st)),0|l(),0|lt,0|Je)),0|l(),0|De,0|ee)),0|l(),0|G,0|N),G=0|l(),oe=0|$t(0|Ae,0|Be,2097151&oe|0,0),ee=0|l(),De=0|$t(2097151&wt|0,0,2097151&M|0,0),Je=0|l(),lt=0|$t(2097151&te|0,0,2097151&Fe|0,0),st=0|l(),Ne=0|$t(2097151&Ne|0,0,0|Ee,0|ve),we=0|l(),M=0|$t(0|Ae,0|Be,2097151&M|0,0),be=0|l(),be=0|vn(0|(te=0|vn(0|$t(2097151&wt|0,0,2097151&Fe|0,0),0|(Xe=0|l()),0|(te=0|$t(2097151&te|0,0,0|Ee,0|ve)),0|l())),0|l(),0|M,0|be),M=0|l(),wt=0|vn(0|(Fe=0|$t(0|Ae,0|Be,2097151&Fe|0,0)),0|(te=0|l()),0|(wt=0|$t(2097151&wt|0,0,0|Ee,0|ve)),0|l()),te=0|l(),ve=0|$t(0|Ae,0|Be,0|Ee,0|ve),Ee=0|l(),Fe=0|Bn(0|(Be=0|vn(0|ke,0|Ye,1048576,0)),0|(Ae=0|l()),21),Xe=0|l(),Xe=0|vn(0|(re=0|vn(0|($e=0|vn(0|h,0|Q,0|p,0|$e)),0|l(),2097151&re|0,0)),0|l(),0|Fe,0|Xe),Fe=0|l(),Ae=0|En(0|ke,0|Ye,-2097152&Be|0,4095&Ae|0),Be=0|l(),re=0|Bn(0|(Ye=0|vn(0|He,0|Se,1048576,0)),0|(ke=0|l()),21),$e=0|l(),$e=0|vn(0|(Oe=0|vn(0|(Ve=0|vn(0|(K=0|vn(0|(Fn=0|vn(0|b,0|C,0|_,0|Fn)),0|l(),0|f,0|K)),0|l(),0|q,0|Ve)),0|l(),2097151&Oe|0,0)),0|l(),0|re,0|$e),re=0|l(),q=0|tn(0|(Oe=0|vn(0|Te,0|xe,1048576,0)),0|(Ve=0|l()),21),K=0|l(),K=0|vn(0|(je=0|vn(0|(Ke=0|vn(0|(T=0|vn(0|(Qn=0|vn(0|(yn=0|vn(0|(mn=0|vn(0|d,0|u,0|A,0|mn)),0|l(),0|U,0|yn)),0|l(),0|hn,0|Qn)),0|l(),0|pn,0|T)),0|l(),0|Ie,0|Ke)),0|l(),2097151&je|0,0)),0|l(),0|q,0|K),q=0|l(),Ie=0|tn(0|(je=0|vn(0|Gt,0|ht,1048576,0)),0|(Ke=0|l()),21),T=0|l(),T=0|vn(0|(R=0|vn(0|(Z=0|vn(0|(W=0|vn(0|(gn=0|vn(0|(An=0|vn(0|(dn=0|vn(0|(Cn=0|vn(0|(bn=0|vn(0|B,0|I,0|g,0|bn)),0|l(),0|F,0|Cn)),0|l(),0|_n,0|dn)),0|l(),0|un,0|An)),0|l(),0|In,0|gn)),0|l(),0|ln,0|W)),0|l(),0|t,0|Z)),0|l(),2097151&R|0,0)),0|l(),0|Ie,0|T),Ie=0|l(),t=0|tn(0|(R=0|vn(0|gt,0|It,1048576,0)),0|(Z=0|l()),21),W=0|l(),W=0|vn(0|(Pe=0|vn(0|(X=0|vn(0|(J=0|vn(0|(Pt=0|vn(0|(Lt=0|vn(0|(jt=0|vn(0|(en=0|vn(0|(rn=0|vn(0|(on=0|vn(0|(cn=0|vn(0|s,0|c,0|i,0|cn)),0|l(),0|m,0|on)),0|l(),0|an,0|rn)),0|l(),0|nn,0|en)),0|l(),0|qt,0|jt)),0|l(),0|zt,0|Lt)),0|l(),0|Mt,0|Pt)),0|l(),0|Jt,0|J)),0|l(),0|P,0|X)),0|l(),2097151&Pe|0,0)),0|l(),0|t,0|W),t=0|l(),P=0|tn(0|(Pe=0|vn(0|ue,0|de,1048576,0)),0|(X=0|l()),21),J=0|l(),J=0|vn(0|(Et=0|vn(0|(j=0|vn(0|(Ce=0|vn(0|(xt=0|vn(0|(ie=0|vn(0|(ct=0|vn(0|(ft=0|vn(0|(tt=0|vn(0|(At=0|vn(0|(L=0|vn(0|(Yt=0|vn(0|(Ht=0|vn(0|y,0|o,0|Dt,0|Ht)),0|l(),0|St,0|Yt)),0|l(),0|a,0|L)),0|l(),0|Bt,0|At)),0|l(),0|et,0|tt)),0|l(),0|Ut,0|ft)),0|l(),0|it,0|ct)),0|l(),0|O,0|ie)),0|l(),0|Ot,0|xt)),0|l(),0|_e,0|Ce)),0|l(),0|z,0|j)),0|l(),0|yt,0|Et)),0|l(),0|P,0|J),P=0|l(),j=0|tn(0|(Et=0|vn(0|Vt,0|Rt,1048576,0)),0|(yt=0|l()),21),z=0|l(),z=0|vn(0|(mt=0|vn(0|(w=0|vn(0|(Nt=0|vn(0|(Y=0|vn(0|(ge=0|vn(0|(Re=0|vn(0|(Ze=0|vn(0|(ut=0|vn(0|(rt=0|vn(0|bt,0|Qt,0|nt,0|rt)),0|l(),0|dt,0|ut)),0|l(),0|Ue,0|Ze)),0|l(),0|We,0|Re)),0|l(),0|le,0|ge)),0|l(),0|me,0|Y)),0|l(),0|Tt,0|Nt)),0|l(),0|pe,0|w)),0|l(),0|Ft,0|mt)),0|l(),0|j,0|z),j=0|l(),w=0|tn(0|(mt=0|vn(0|Xt,0|Wt,1048576,0)),0|(Ft=0|l()),21),pe=0|l(),pe=0|vn(0|(_t=0|vn(0|(Zt=0|vn(0|(n=0|vn(0|(qe=0|vn(0|($=0|vn(0|(Qe=0|vn(0|(k=0|vn(0|ye,0|E,0|v,0|k)),0|l(),0|V,0|Qe)),0|l(),0|x,0|$)),0|l(),0|Me,0|qe)),0|l(),0|H,0|n)),0|l(),0|vt,0|Zt)),0|l(),0|Ct,0|_t)),0|l(),0|w,0|pe),w=0|l(),Zt=0|tn(0|(_t=0|vn(0|kt,0|ae,1048576,0)),0|(Ct=0|l()),21),vt=0|l(),vt=0|vn(0|(ne=0|vn(0|(at=0|vn(0|(fe=0|vn(0|(S=0|vn(0|(Le=0|vn(0|se,0|ce,0|ze,0|Le)),0|l(),0|D,0|S)),0|l(),0|Ge,0|fe)),0|l(),0|ot,0|at)),0|l(),0|he,0|ne)),0|l(),0|Zt,0|vt),Zt=0|l(),at=0|tn(0|(ne=0|vn(0|N,0|G,1048576,0)),0|(he=0|l()),21),ot=0|l(),ot=0|vn(0|(ee=0|vn(0|(Je=0|vn(0|(we=0|vn(0|lt,0|st,0|Ne,0|we)),0|l(),0|De,0|Je)),0|l(),0|oe,0|ee)),0|l(),0|at,0|ot),at=0|l(),he=0|En(0|N,0|G,-2097152&ne|0,0|he),ne=0|l(),ee=0|vn(0|wt,0|te,0|(ee=0|tn(0|(G=0|vn(0|be,0|M,1048576,0)),0|(N=0|l()),21)),0|l()),te=0|l(),N=0|En(0|be,0|M,-2097152&G|0,0|N),G=0|l(),wt=0|tn(0|(M=0|vn(0|ve,0|Ee,1048576,0)),0|(be=0|l()),21),oe=0|l(),be=0|En(0|ve,0|Ee,-2097152&M|0,0|be),M=0|l(),Je=0|Bn(0|(Ee=0|vn(0|Xe,0|Fe,1048576,0)),0|(ve=0|l()),21),De=0|l(),ve=0|En(0|Xe,0|Fe,-2097152&Ee|0,0|ve),Ee=0|l(),we=0|tn(0|(Fe=0|vn(0|$e,0|re,1048576,0)),0|(Xe=0|l()),21),Ne=0|l(),Xe=0|En(0|$e,0|re,-2097152&Fe|0,0|Xe),Fe=0|l(),st=0|tn(0|(re=0|vn(0|K,0|q,1048576,0)),0|($e=0|l()),21),lt=0|l(),$e=0|En(0|K,0|q,-2097152&re|0,0|$e),re=0|l(),fe=0|tn(0|(q=0|vn(0|T,0|Ie,1048576,0)),0|(K=0|l()),21),Ge=0|l(),Le=0|tn(0|(S=0|vn(0|W,0|t,1048576,0)),0|(D=0|l()),21),ze=0|l(),n=0|tn(0|(ce=0|vn(0|J,0|P,1048576,0)),0|(se=0|l()),21),H=0|l(),$=0|tn(0|(qe=0|vn(0|z,0|j,1048576,0)),0|(Me=0|l()),21),x=0|l(),k=0|tn(0|(Qe=0|vn(0|pe,0|w,1048576,0)),0|(V=0|l()),21),v=0|l(),ne=0|vn(0|(Nt=0|tn(0|(E=0|vn(0|vt,0|Zt,1048576,0)),0|(ye=0|l()),21)),0|l(),0|he,0|ne),he=0|l(),ye=0|En(0|vt,0|Zt,-2097152&E|0,0|ye),E=0|l(),G=0|vn(0|(Nt=0|tn(0|(Zt=0|vn(0|ot,0|at,1048576,0)),0|(vt=0|l()),21)),0|l(),0|N,0|G),N=0|l(),vt=0|En(0|ot,0|at,-2097152&Zt|0,0|vt),Zt=0|l(),M=0|vn(0|(Nt=0|tn(0|(at=0|vn(0|ee,0|te,1048576,0)),0|(ot=0|l()),21)),0|l(),0|be,0|M),be=0|l(),ot=0|En(0|ee,0|te,-2097152&at|0,0|ot),at=0|l(),te=0|$t(0|wt,0|oe,666643,0),ee=0|l(),Nt=0|$t(0|wt,0|oe,470296,0),Tt=0|l(),Y=0|$t(0|wt,0|oe,654183,0),me=0|l(),ge=0|$t(0|wt,0|oe,-997805,-1),le=0|l(),Re=0|$t(0|wt,0|oe,136657,0),We=0|l(),v=0|vn(0|(Ct=0|En(0|(oe=0|vn(0|kt,0|ae,0|(oe=0|$t(0|wt,0|oe,-683901,-1)),0|l())),0|l(),-2097152&_t|0,0|Ct)),0|l(),0|k,0|v),k=0|l(),Ct=0|$t(0|M,0|be,666643,0),_t=0|l(),oe=0|$t(0|M,0|be,470296,0),ae=0|l(),kt=0|$t(0|M,0|be,654183,0),wt=0|l(),Ze=0|$t(0|M,0|be,-997805,-1),Ue=0|l(),ut=0|$t(0|M,0|be,136657,0),dt=0|l(),be=0|$t(0|M,0|be,-683901,-1),M=0|l(),rt=0|$t(0|ot,0|at,666643,0),nt=0|l(),Qt=0|$t(0|ot,0|at,470296,0),bt=0|l(),Ce=0|$t(0|ot,0|at,654183,0),_e=0|l(),xt=0|$t(0|ot,0|at,-997805,-1),Ot=0|l(),ie=0|$t(0|ot,0|at,136657,0),O=0|l(),at=0|$t(0|ot,0|at,-683901,-1),ot=0|l(),x=0|vn(0|(Ft=0|En(0|(ot=0|vn(0|(dt=0|vn(0|(le=0|vn(0|Xt,0|Wt,0|ge,0|le)),0|l(),0|ut,0|dt)),0|l(),0|at,0|ot)),0|l(),-2097152&mt|0,0|Ft)),0|l(),0|$,0|x),$=0|l(),Ft=0|$t(0|G,0|N,666643,0),mt=0|l(),ot=0|$t(0|G,0|N,470296,0),at=0|l(),dt=0|$t(0|G,0|N,654183,0),ut=0|l(),le=0|$t(0|G,0|N,-997805,-1),ge=0|l(),Wt=0|$t(0|G,0|N,136657,0),Xt=0|l(),N=0|$t(0|G,0|N,-683901,-1),G=0|l(),ct=0|$t(0|vt,0|Zt,666643,0),it=0|l(),ft=0|$t(0|vt,0|Zt,470296,0),Ut=0|l(),tt=0|$t(0|vt,0|Zt,654183,0),et=0|l(),At=0|$t(0|vt,0|Zt,-997805,-1),Bt=0|l(),L=0|$t(0|vt,0|Zt,136657,0),a=0|l(),Zt=0|$t(0|vt,0|Zt,-683901,-1),vt=0|l(),H=0|vn(0|(yt=0|En(0|(vt=0|vn(0|(Xt=0|vn(0|(Rt=0|vn(0|(Ot=0|vn(0|(Tt=0|vn(0|kt,0|wt,0|Nt,0|Tt)),0|l(),0|xt,0|Ot)),0|l(),0|Vt,0|Rt)),0|l(),0|Wt,0|Xt)),0|l(),0|Zt,0|vt)),0|l(),-2097152&Et|0,0|yt)),0|l(),0|n,0|H),n=0|l(),Ke=0|En(0|(lt=0|vn(0|(yt=0|vn(0|Gt,0|ht,0|(yt=0|$t(0|ne,0|he,666643,0)),0|l())),0|l(),0|st,0|lt)),0|l(),-2097152&je|0,0|Ke),je=0|l(),lt=0|$t(0|ne,0|he,470296,0),st=0|l(),yt=0|$t(0|ne,0|he,654183,0),ht=0|l(),Ge=0|vn(0|(Z=0|En(0|(It=0|vn(0|(ht=0|vn(0|(mt=0|vn(0|ft,0|Ut,0|Ft,0|mt)),0|l(),0|yt,0|ht)),0|l(),0|gt,0|It)),0|l(),-2097152&R|0,0|Z)),0|l(),0|fe,0|Ge),fe=0|l(),Z=0|$t(0|ne,0|he,-997805,-1),R=0|l(),It=0|$t(0|ne,0|he,136657,0),gt=0|l(),X=0|En(0|(ze=0|vn(0|(de=0|vn(0|(gt=0|vn(0|(Bt=0|vn(0|(ut=0|vn(0|(_t=0|vn(0|Qt,0|bt,0|Ct,0|_t)),0|l(),0|dt,0|ut)),0|l(),0|At,0|Bt)),0|l(),0|It,0|gt)),0|l(),0|ue,0|de)),0|l(),0|Le,0|ze)),0|l(),-2097152&Pe|0,0|X),Pe=0|l(),he=0|$t(0|ne,0|he,-683901,-1),ne=0|l(),de=0|tn(0|(ze=0|vn(0|Ke,0|je,1048576,0)),0|(Le=0|l()),21),ue=0|l(),ue=0|vn(0|(K=0|En(0|(Ie=0|vn(0|(it=0|vn(0|lt,0|st,0|ct,0|it)),0|l(),0|T,0|Ie)),0|l(),-2097152&q|0,0|K)),0|l(),0|de,0|ue),de=0|l(),Ie=0|tn(0|(K=0|vn(0|Ge,0|fe,1048576,0)),0|(q=0|l()),21),T=0|l(),T=0|vn(0|(D=0|En(0|(t=0|vn(0|(R=0|vn(0|(et=0|vn(0|(nt=0|vn(0|ot,0|at,0|rt,0|nt)),0|l(),0|tt,0|et)),0|l(),0|Z,0|R)),0|l(),0|W,0|t)),0|l(),-2097152&S|0,0|D)),0|l(),0|Ie,0|T),Ie=0|l(),t=0|tn(0|(D=0|vn(0|X,0|Pe,1048576,0)),0|(S=0|l()),21),W=0|l(),W=0|vn(0|(se=0|En(0|(P=0|vn(0|(ne=0|vn(0|(a=0|vn(0|(ge=0|vn(0|(_e=0|vn(0|(ee=0|vn(0|oe,0|ae,0|te,0|ee)),0|l(),0|Ce,0|_e)),0|l(),0|le,0|ge)),0|l(),0|L,0|a)),0|l(),0|he,0|ne)),0|l(),0|J,0|P)),0|l(),-2097152&ce|0,0|se)),0|l(),0|t,0|W),t=0|l(),P=0|tn(0|(se=0|vn(0|H,0|n,1048576,0)),0|(ce=0|l()),21),J=0|l(),J=0|vn(0|(Me=0|En(0|(j=0|vn(0|(G=0|vn(0|(O=0|vn(0|(me=0|vn(0|Ze,0|Ue,0|Y,0|me)),0|l(),0|ie,0|O)),0|l(),0|N,0|G)),0|l(),0|z,0|j)),0|l(),-2097152&qe|0,0|Me)),0|l(),0|P,0|J),P=0|l(),ce=0|En(0|H,0|n,-2097152&se|0,0|ce),se=0|l(),Me=0|tn(0|(n=0|vn(0|x,0|$,1048576,0)),0|(H=0|l()),21),qe=0|l(),qe=0|vn(0|(V=0|En(0|(w=0|vn(0|(We=0|vn(0|be,0|M,0|Re,0|We)),0|l(),0|pe,0|w)),0|l(),-2097152&Qe|0,0|V)),0|l(),0|Me,0|qe),Me=0|l(),H=0|En(0|x,0|$,-2097152&n|0,0|H),n=0|l(),E=0|vn(0|(V=0|tn(0|($=0|vn(0|v,0|k,1048576,0)),0|(x=0|l()),21)),0|l(),0|ye,0|E),ye=0|l(),x=0|En(0|v,0|k,-2097152&$|0,0|x),$=0|l(),V=0|tn(0|(k=0|vn(0|ue,0|de,1048576,0)),0|(v=0|l()),21),Qe=0|l(),We=0|tn(0|(w=0|vn(0|T,0|Ie,1048576,0)),0|(pe=0|l()),21),Re=0|l(),se=0|vn(0|(j=0|tn(0|(M=0|vn(0|W,0|t,1048576,0)),0|(be=0|l()),21)),0|l(),0|ce,0|se),ce=0|l(),be=0|En(0|W,0|t,-2097152&M|0,0|be),M=0|l(),n=0|vn(0|(j=0|tn(0|(t=0|vn(0|J,0|P,1048576,0)),0|(W=0|l()),21)),0|l(),0|H,0|n),H=0|l(),W=0|En(0|J,0|P,-2097152&t|0,0|W),t=0|l(),$=0|vn(0|(j=0|tn(0|(P=0|vn(0|qe,0|Me,1048576,0)),0|(J=0|l()),21)),0|l(),0|x,0|$),x=0|l(),J=0|En(0|qe,0|Me,-2097152&P|0,0|J),P=0|l(),Me=0|vn(0|$e,0|re,0|(Me=0|$t(0|E,0|ye,666643,0)),0|l()),re=0|l(),$e=0|$t(0|E,0|ye,470296,0),qe=0|l(),j=0|$t(0|E,0|ye,654183,0),z=0|l(),G=0|$t(0|E,0|ye,-997805,-1),N=0|l(),O=0|$t(0|E,0|ye,136657,0),ie=0|l(),S=0|En(0|(Re=0|vn(0|(ye=0|vn(0|X,0|Pe,0|(ye=0|$t(0|E,0|ye,-683901,-1)),0|l())),0|l(),0|We,0|Re)),0|l(),-2097152&D|0,0|S),D=0|l(),Re=0|$t(0|$,0|x,666643,0),We=0|l(),ye=0|vn(0|Me,0|re,0|(ye=0|$t(0|$,0|x,470296,0)),0|l()),re=0|l(),Me=0|$t(0|$,0|x,654183,0),Pe=0|l(),X=0|$t(0|$,0|x,-997805,-1),E=0|l(),me=0|$t(0|$,0|x,136657,0),Y=0|l(),x=0|$t(0|$,0|x,-683901,-1),$=0|l(),Ue=0|vn(0|Xe,0|Fe,0|(Ue=0|$t(0|J,0|P,666643,0)),0|l()),Fe=0|l(),Xe=0|$t(0|J,0|P,470296,0),Ze=0|l(),ne=0|vn(0|ye,0|re,0|(ne=0|$t(0|J,0|P,654183,0)),0|l()),re=0|l(),ye=0|$t(0|J,0|P,-997805,-1),he=0|l(),a=0|$t(0|J,0|P,136657,0),L=0|l(),P=0|$t(0|J,0|P,-683901,-1),J=0|l(),J=0|vn(0|(Y=0|vn(0|(q=0|En(0|(Qe=0|vn(0|(N=0|vn(0|Ge,0|fe,0|G,0|N)),0|l(),0|V,0|Qe)),0|l(),-2097152&K|0,0|q)),0|l(),0|me,0|Y)),0|l(),0|P,0|J),P=0|l(),Y=0|$t(0|n,0|H,666643,0),me=0|l(),q=0|$t(0|n,0|H,470296,0),K=0|l(),Qe=0|$t(0|n,0|H,654183,0),V=0|l(),N=0|$t(0|n,0|H,-997805,-1),G=0|l(),fe=0|$t(0|n,0|H,136657,0),Ge=0|l(),H=0|$t(0|n,0|H,-683901,-1),n=0|l(),ge=0|$t(0|W,0|t,666643,0),le=0|l(),_e=0|$t(0|W,0|t,470296,0),Ce=0|l(),ee=0|$t(0|W,0|t,654183,0),te=0|l(),ae=0|$t(0|W,0|t,-997805,-1),oe=0|l(),R=0|$t(0|W,0|t,136657,0),Z=0|l(),t=0|$t(0|W,0|t,-683901,-1),W=0|l(),W=0|vn(0|(Ge=0|vn(0|(he=0|vn(0|(Pe=0|vn(0|(Le=0|En(0|(je=0|vn(0|$e,0|qe,0|Ke,0|je)),0|l(),-2097152&ze|0,0|Le)),0|l(),0|Me,0|Pe)),0|l(),0|ye,0|he)),0|l(),0|fe,0|Ge)),0|l(),0|t,0|W),t=0|l(),Be=0|vn(0|(Ge=0|$t(0|se,0|ce,666643,0)),0|l(),0|Ae,0|Be),Ae=0|l(),Ge=0|$t(0|se,0|ce,470296,0),fe=0|l(),he=0|$t(0|se,0|ce,654183,0),ye=0|l(),Ce=0|vn(0|(me=0|vn(0|(ye=0|vn(0|(ke=0|En(0|(Se=0|vn(0|Je,0|De,0|He,0|Se)),0|l(),-2097152&Ye|0,0|ke)),0|l(),0|he,0|ye)),0|l(),0|Y,0|me)),0|l(),0|_e,0|Ce),_e=0|l(),me=0|$t(0|se,0|ce,-997805,-1),Y=0|l(),ye=0|$t(0|se,0|ce,136657,0),he=0|l(),oe=0|vn(0|(V=0|vn(0|(he=0|vn(0|(Ze=0|vn(0|(We=0|vn(0|(Ve=0|En(0|(xe=0|vn(0|we,0|Ne,0|Te,0|xe)),0|l(),-2097152&Oe|0,0|Ve)),0|l(),0|Re,0|We)),0|l(),0|Xe,0|Ze)),0|l(),0|ye,0|he)),0|l(),0|Qe,0|V)),0|l(),0|ae,0|oe),ae=0|l(),ce=0|$t(0|se,0|ce,-683901,-1),se=0|l(),he=0|tn(0|(V=0|vn(0|Be,0|Ae,1048576,0)),0|(Qe=0|l()),21),ye=0|l(),ye=0|vn(0|(le=0|vn(0|(fe=0|vn(0|ve,0|Ee,0|Ge,0|fe)),0|l(),0|ge,0|le)),0|l(),0|he,0|ye),he=0|l(),Qe=0|En(0|Be,0|Ae,-2097152&V|0,0|Qe),V=0|l(),le=0|tn(0|(Ae=0|vn(0|Ce,0|_e,1048576,0)),0|(Be=0|l()),21),ge=0|l(),ge=0|vn(0|(te=0|vn(0|(K=0|vn(0|(Y=0|vn(0|Ue,0|Fe,0|me,0|Y)),0|l(),0|q,0|K)),0|l(),0|ee,0|te)),0|l(),0|le,0|ge),le=0|l(),K=0|tn(0|(te=0|vn(0|oe,0|ae,1048576,0)),0|(ee=0|l()),21),q=0|l(),q=0|vn(0|(Z=0|vn(0|(G=0|vn(0|(se=0|vn(0|ne,0|re,0|ce,0|se)),0|l(),0|N,0|G)),0|l(),0|R,0|Z)),0|l(),0|K,0|q),K=0|l(),G=0|tn(0|(Z=0|vn(0|W,0|t,1048576,0)),0|(R=0|l()),21),N=0|l(),N=0|vn(0|(n=0|vn(0|(L=0|vn(0|(E=0|vn(0|(v=0|En(0|(z=0|vn(0|ue,0|de,0|j,0|z)),0|l(),-2097152&k|0,0|v)),0|l(),0|X,0|E)),0|l(),0|a,0|L)),0|l(),0|H,0|n)),0|l(),0|G,0|N),G=0|l(),R=0|En(0|W,0|t,-2097152&Z|0,0|R),Z=0|l(),n=0|tn(0|(t=0|vn(0|J,0|P,1048576,0)),0|(W=0|l()),21),H=0|l(),H=0|vn(0|(pe=0|En(0|(Ie=0|vn(0|(ie=0|vn(0|x,0|$,0|O,0|ie)),0|l(),0|T,0|Ie)),0|l(),-2097152&w|0,0|pe)),0|l(),0|n,0|H),n=0|l(),W=0|En(0|J,0|P,-2097152&t|0,0|W),t=0|l(),pe=0|vn(0|be,0|M,0|(pe=0|tn(0|(P=0|vn(0|S,0|D,1048576,0)),0|(J=0|l()),21)),0|l()),M=0|l(),Ie=0|tn(0|(be=0|vn(0|ye,0|he,1048576,0)),0|(w=0|l()),21),T=0|l(),$=0|tn(0|(ie=0|vn(0|ge,0|le,1048576,0)),0|(O=0|l()),21),x=0|l(),E=0|vn(0|R,0|Z,0|(E=0|tn(0|(L=0|vn(0|q,0|K,1048576,0)),0|(a=0|l()),21)),0|l()),Z=0|l(),v=0|vn(0|W,0|t,0|(v=0|tn(0|(R=0|vn(0|N,0|G,1048576,0)),0|(X=0|l()),21)),0|l()),t=0|l(),X=0|En(0|N,0|G,-2097152&R|0,0|X),R=0|l(),W=0|tn(0|(G=0|vn(0|H,0|n,1048576,0)),0|(N=0|l()),21),k=0|l(),N=0|En(0|H,0|n,-2097152&G|0,0|N),G=0|l(),z=0|tn(0|(n=0|vn(0|pe,0|M,1048576,0)),0|(H=0|l()),21),j=0|l(),H=0|En(0|pe,0|M,-2097152&n|0,0|H),n=0|l(),M=0|vn(0|Qe,0|V,0|(M=0|$t(0|z,0|j,666643,0)),0|l()),V=0|l(),Qe=0|$t(0|z,0|j,470296,0),pe=0|l(),de=0|$t(0|z,0|j,654183,0),ue=0|l(),se=0|$t(0|z,0|j,-997805,-1),ce=0|l(),re=0|$t(0|z,0|j,136657,0),ne=0|l(),j=0|$t(0|z,0|j,-683901,-1),z=0|l(),V=0|tn(0|M,0|V,21),Y=0|l(),V=0|tn(0|(Y=0|vn(0|(w=0|En(0|(pe=0|vn(0|ye,0|he,0|Qe,0|pe)),0|l(),-2097152&be|0,0|w)),0|l(),0|V,0|Y)),0|l(),21),w=0|l(),V=0|tn(0|(w=0|vn(0|(T=0|vn(0|(Be=0|En(0|(ue=0|vn(0|Ce,0|_e,0|de,0|ue)),0|l(),-2097152&Ae|0,0|Be)),0|l(),0|Ie,0|T)),0|l(),0|V,0|w)),0|l(),21),T=0|l(),V=0|tn(0|(T=0|vn(0|(O=0|En(0|(ce=0|vn(0|ge,0|le,0|se,0|ce)),0|l(),-2097152&ie|0,0|O)),0|l(),0|V,0|T)),0|l(),21),O=0|l(),V=0|tn(0|(O=0|vn(0|(x=0|vn(0|(ee=0|En(0|(ne=0|vn(0|oe,0|ae,0|re,0|ne)),0|l(),-2097152&te|0,0|ee)),0|l(),0|$,0|x)),0|l(),0|V,0|O)),0|l(),21),x=0|l(),N=0|tn(0|(G=0|vn(0|(t=0|tn(0|(X=0|vn(0|v,0|t,0|(X=0|tn(0|(R=0|vn(0|(Z=0|tn(0|(V=0|vn(0|E,0|Z,0|(V=0|tn(0|(x=0|vn(0|(a=0|En(0|(z=0|vn(0|q,0|K,0|j,0|z)),0|l(),-2097152&L|0,0|a)),0|l(),0|V,0|x)),0|l(),21)),0|l())),0|l(),21)),0|l(),0|X,0|R)),0|l(),21)),0|l())),0|l(),21)),0|l(),0|N,0|G)),0|l(),21),t=0|l(),M=0|vn(0|(J=0|$t(0|(H=0|tn(0|(n=0|vn(0|(N=0|tn(0|(t=0|vn(0|(J=0|En(0|(D=0|vn(0|W,0|k,0|S,0|D)),0|l(),-2097152&P|0,0|J)),0|l(),0|N,0|t)),0|l(),21)),0|l(),0|H,0|n)),0|l(),21)),0|(N=0|l()),666643,0)),0|l(),2097151&M|0,0),J=0|l(),Y=0|vn(0|(P=0|$t(0|H,0|N,470296,0)),0|l(),2097151&Y|0,0),P=0|l(),w=0|vn(0|(D=0|$t(0|H,0|N,654183,0)),0|l(),2097151&w|0,0),D=0|l(),T=0|vn(0|(S=0|$t(0|H,0|N,-997805,-1)),0|l(),2097151&T|0,0),S=0|l(),O=0|vn(0|(k=0|$t(0|H,0|N,136657,0)),0|l(),2097151&O|0,0),k=0|l(),n=0|vn(0|(a=0|tn(0|(t=0|vn(0|(E=0|tn(0|(G=0|vn(0|(Z=0|tn(0|(X=0|vn(0|(v=0|tn(0|(R=0|vn(0|(W=0|tn(0|(V=0|vn(0|(x=0|tn(0|(O=0|vn(0|(x=0|vn(0|(N=0|$t(0|H,0|N,-683901,-1)),0|l(),2097151&x|0,0)),0|(N=0|l()),0|(O=0|tn(0|(T=0|vn(0|O,0|k,0|(T=0|tn(0|(w=0|vn(0|T,0|S,0|(w=0|tn(0|(Y=0|vn(0|w,0|D,0|(Y=0|tn(0|(H=0|vn(0|Y,0|P,0|(H=0|tn(0|M,0|J,21)),0|l())),0|(P=0|l()),21)),0|l())),0|(D=0|l()),21)),0|l())),0|(S=0|l()),21)),0|l())),0|(k=0|l()),21)),0|l())),0|(N=0|l()),21)),0|l(),2097151&V|0,0)),0|(x=0|l()),21)),0|l(),2097151&R|0,0)),0|(W=0|l()),21)),0|l(),2097151&X|0,0)),0|(v=0|l()),21)),0|l(),2097151&G|0,0)),0|(Z=0|l()),21)),0|l(),2097151&t|0,0)),0|(E=0|l()),21)),0|l(),2097151&n|0,0),a=0|l(),r[e>>0]=M,L=0|Bn(0|M,0|J,8),l(),r[e+1>>0]=L,J=0|Bn(0|M,0|J,16),l(),M=0|sn(2097151&H|0,0,5),l(),r[e+2>>0]=M|31&J,J=0|Bn(0|H,0|P,3),l(),r[e+3>>0]=J,P=0|Bn(0|H,0|P,11),l(),r[e+4>>0]=P,H=0|Bn(2097151&H|0,0,19),P=0|l(),J=0|sn(2097151&Y|0,0,2),l(),r[e+5>>0]=J|H,D=0|Bn(0|Y,0|D,6),l(),r[e+6>>0]=D,Y=0|Bn(2097151&Y|0,0,14),D=0|l(),H=0|sn(2097151&w|0,0,7),l(),r[e+7>>0]=H|Y,Y=0|Bn(0|w,0|S,1),l(),r[e+8>>0]=Y,S=0|Bn(0|w,0|S,9),l(),r[e+9>>0]=S,w=0|Bn(2097151&w|0,0,17),S=0|l(),Y=0|sn(2097151&T|0,0,4),l(),r[e+10>>0]=Y|w,w=0|Bn(0|T,0|k,4),l(),r[e+11>>0]=w,k=0|Bn(0|T,0|k,12),l(),r[e+12>>0]=k,T=0|Bn(2097151&T|0,0,20),k=0|l(),w=0|sn(2097151&O|0,0,1),l(),r[e+13>>0]=w|T,N=0|Bn(0|O,0|N,7),l(),r[e+14>>0]=N,O=0|Bn(2097151&O|0,0,15),N=0|l(),T=0|sn(2097151&V|0,0,6),l(),r[e+15>>0]=T|O,O=0|Bn(0|V,0|x,2),l(),r[e+16>>0]=O,x=0|Bn(0|V,0|x,10),l(),r[e+17>>0]=x,V=0|Bn(2097151&V|0,0,18),x=0|l(),O=0|sn(0|R,0|W,3),l(),r[e+18>>0]=O|V,V=0|Bn(0|R,0|W,5),l(),r[e+19>>0]=V,W=0|Bn(0|R,0|W,13),l(),r[e+20>>0]=W,r[e+21>>0]=X,W=0|Bn(0|X,0|v,8),l(),r[e+22>>0]=W,v=0|Bn(0|X,0|v,16),l(),X=0|sn(2097151&G|0,0,5),l(),r[e+23>>0]=X|31&v,v=0|Bn(0|G,0|Z,3),l(),r[e+24>>0]=v,Z=0|Bn(0|G,0|Z,11),l(),r[e+25>>0]=Z,G=0|Bn(2097151&G|0,0,19),Z=0|l(),v=0|sn(2097151&t|0,0,2),l(),r[e+26>>0]=v|G,E=0|Bn(0|t,0|E,6),l(),r[e+27>>0]=E,t=0|Bn(2097151&t|0,0,14),E=0|l(),G=0|sn(0|n,0|a,7),l(),r[e+28>>0]=G|t,t=0|Bn(0|n,0|a,1),l(),r[e+29>>0]=t,t=0|Bn(0|n,0|a,9),l(),r[e+30>>0]=t,a=0|tn(0|n,0|a,17),l(),r[e+31>>0]=a}function Q(e,t,n,r){e|=0,r|=0;var o=0,i=0,c=0,s=0,g=0,I=0,B=0,A=0,u=0,d=0,_=0,C=0,b=0,p=0,Q=0,h=0,y=0,m=0,F=0,U=0,f=0,G=0,E=0,v=0,Z=0,X=0,W=0,R=0,V=0,O=0,x=0,T=0,N=0,w=0,k=0,Y=0,S=0,H=0,D=0;!function(e,t){e|=0,t|=0;var n=0,r=0,o=0,i=0;n=0;do{i=0|Se(t+(n<<3)|0),o=0|l(),a[(r=e+(n<<3)|0)>>2]=i,a[r+4>>2]=o,n=n+1|0}while(16!=(0|n))}(n|=0,t|=0),o=e,i=(t=r)+64|0;do{a[t>>2]=a[o>>2],t=t+4|0,o=o+4|0}while((0|t)<(0|i));t=0|a[n>>2],o=0|a[n+4>>2],Q=0;do{if(C=0|Pt(F=0|a[r+32>>2],s=0|a[r+32+4>>2],14),A=0|l(),E=0|Pt(F,s,18),A=(0|l())^A,Y=0|Pt(F,s,41),A^=0|l(),O=0|a[r+40>>2],c=0|a[r+40+4>>2],p=0|a[r+48>>2],i=0|a[r+48+4>>2],g=0|a[(T=32416+(Q<<3)|0)>>2],T=0|a[T+4>>2],u=0|a[r+56>>2],m=0|a[r+56+4>>2],T=0|vn(0|(m=0|vn(0|(T=0|vn(0|(T=0|vn(0|(A=0|vn(0|t,0|o,E^C^Y|0,0|A)),0|l(),0|g,0|T)),0|l(),(p^O)&F^p|0,(i^c)&s^i|0)),0|l(),0|u,0|m)),0|(u=0|l()),0|a[r+24>>2],0|a[r+24+4>>2]),g=0|l(),a[r+24>>2]=T,a[r+24+4>>2]=g,C=0|Pt(A=0|a[r>>2],Y=0|a[r+4>>2],28),t=0|l(),E=0|Pt(A,Y,34),t=(0|l())^t,R=0|Pt(A,Y,39),t^=0|l(),B=0|a[r+8>>2],k=0|a[r+8+4>>2],I=0|a[r+16>>2],w=0|a[r+16+4>>2],u=0|vn(0|(u=0|vn(E^C^R|0,0|t,0|m,0|u)),0|l(),(I|B)&A|I&B|0,(w|k)&Y|w&k|0),m=0|l(),a[r+56>>2]=u,a[r+56+4>>2]=m,t=0|Pt(T,g,14),R=0|l(),C=0|Pt(T,g,18),R=(0|l())^R,E=0|Pt(T,g,41),R^=0|l(),d=0|a[n+((_=1|Q)<<3)>>2],o=0|a[n+(_<<3)+4>>2],b=0|a[32416+(_<<3)>>2],v=0|a[32416+(_<<3)+4>>2],w=0|vn(0|(v=0|vn(0|(o=0|vn(0|(R=0|vn(0|(i=0|vn(T&(O^F)^O|0,g&(c^s)^c|0,0|p,0|i)),0|l(),C^t^E|0,0|R)),0|l(),0|d,0|o)),0|l(),0|b,0|v)),0|(b=0|l()),0|I,0|w),I=0|l(),a[r+16>>2]=w,a[r+16+4>>2]=I,o=0|Pt(u,m,28),d=0|l(),R=0|Pt(u,m,34),d=(0|l())^d,E=0|Pt(u,m,39),d^=0|l(),d=0|vn(0|(b=0|vn(0|v,0|b,u&(B|A)|B&A|0,m&(k|Y)|k&Y|0)),0|l(),R^o^E|0,0|d),E=0|l(),a[r+48>>2]=d,a[r+48+4>>2]=E,o=0|Pt(w,I,14),R=0|l(),b=0|Pt(w,I,18),R=(0|l())^R,v=0|Pt(w,I,41),R^=0|l(),C=0|a[n+((t=2|Q)<<3)>>2],i=0|a[n+(t<<3)+4>>2],p=0|a[32416+(t<<3)>>2],Z=0|a[32416+(t<<3)+4>>2],k=0|vn(0|(Z=0|vn(0|(i=0|vn(0|(R=0|vn(0|(c=0|vn(w&(T^F)^F|0,I&(g^s)^s|0,0|O,0|c)),0|l(),b^o^v|0,0|R)),0|l(),0|C,0|i)),0|l(),0|p,0|Z)),0|(p=0|l()),0|B,0|k),B=0|l(),a[r+8>>2]=k,a[r+8+4>>2]=B,i=0|Pt(d,E,28),C=0|l(),R=0|Pt(d,E,34),C=(0|l())^C,v=0|Pt(d,E,39),C^=0|l(),C=0|vn(0|(p=0|vn(0|Z,0|p,d&(u|A)|u&A|0,E&(m|Y)|m&Y|0)),0|l(),R^i^v|0,0|C),v=0|l(),a[r+40>>2]=C,a[r+40+4>>2]=v,i=0|Pt(k,B,14),R=0|l(),p=0|Pt(k,B,18),R=(0|l())^R,Z=0|Pt(k,B,41),R^=0|l(),b=0|a[n+((o=3|Q)<<3)>>2],c=0|a[n+(o<<3)+4>>2],O=0|a[32416+(o<<3)>>2],h=0|a[32416+(o<<3)+4>>2],Y=0|vn(0|(h=0|vn(0|(c=0|vn(0|(R=0|vn(0|(s=0|vn(k&(w^T)^T|0,B&(I^g)^g|0,0|F,0|s)),0|l(),p^i^Z|0,0|R)),0|l(),0|b,0|c)),0|l(),0|O,0|h)),0|(O=0|l()),0|A,0|Y),A=0|l(),a[r>>2]=Y,a[r+4>>2]=A,c=0|Pt(C,v,28),b=0|l(),R=0|Pt(C,v,34),b=(0|l())^b,Z=0|Pt(C,v,39),b^=0|l(),b=0|vn(0|(O=0|vn(0|h,0|O,C&(d|u)|d&u|0,v&(E|m)|E&m|0)),0|l(),R^c^Z|0,0|b),Z=0|l(),a[r+32>>2]=b,a[r+32+4>>2]=Z,c=0|Pt(Y,A,14),R=0|l(),O=0|Pt(Y,A,18),R=(0|l())^R,h=0|Pt(Y,A,41),R^=0|l(),p=0|a[n+((i=4|Q)<<3)>>2],s=0|a[n+(i<<3)+4>>2],F=0|a[32416+(i<<3)>>2],x=0|a[32416+(i<<3)+4>>2],m=0|vn(0|(x=0|vn(0|(s=0|vn(0|(R=0|vn(0|(g=0|vn(Y&(k^w)^w|0,A&(B^I)^I|0,0|T,0|g)),0|l(),O^c^h|0,0|R)),0|l(),0|p,0|s)),0|l(),0|F,0|x)),0|(F=0|l()),0|u,0|m),u=0|l(),a[r+56>>2]=m,a[r+56+4>>2]=u,s=0|Pt(b,Z,28),p=0|l(),R=0|Pt(b,Z,34),p=(0|l())^p,h=0|Pt(b,Z,39),p^=0|l(),p=0|vn(0|(F=0|vn(0|x,0|F,b&(C|d)|C&d|0,Z&(v|E)|v&E|0)),0|l(),R^s^h|0,0|p),h=0|l(),a[r+24>>2]=p,a[r+24+4>>2]=h,s=0|Pt(m,u,14),R=0|l(),F=0|Pt(m,u,18),R=(0|l())^R,x=0|Pt(m,u,41),R^=0|l(),O=0|a[n+((c=5|Q)<<3)>>2],g=0|a[n+(c<<3)+4>>2],T=0|a[32416+(c<<3)>>2],X=0|a[32416+(c<<3)+4>>2],E=0|vn(0|(X=0|vn(0|(g=0|vn(0|(R=0|vn(0|(I=0|vn(m&(Y^k)^k|0,u&(A^B)^B|0,0|w,0|I)),0|l(),F^s^x|0,0|R)),0|l(),0|O,0|g)),0|l(),0|T,0|X)),0|(T=0|l()),0|d,0|E),d=0|l(),a[r+48>>2]=E,a[r+48+4>>2]=d,g=0|Pt(p,h,28),O=0|l(),R=0|Pt(p,h,34),O=(0|l())^O,x=0|Pt(p,h,39),O^=0|l(),O=0|vn(0|(T=0|vn(0|X,0|T,p&(b|C)|b&C|0,h&(Z|v)|Z&v|0)),0|l(),R^g^x|0,0|O),x=0|l(),a[r+16>>2]=O,a[r+16+4>>2]=x,g=0|Pt(E,d,14),R=0|l(),T=0|Pt(E,d,18),R=(0|l())^R,X=0|Pt(E,d,41),R^=0|l(),F=0|a[n+((s=6|Q)<<3)>>2],I=0|a[n+(s<<3)+4>>2],w=0|a[32416+(s<<3)>>2],N=0|a[32416+(s<<3)+4>>2],v=0|vn(0|(N=0|vn(0|(I=0|vn(0|(R=0|vn(0|(B=0|vn(E&(m^Y)^Y|0,d&(u^A)^A|0,0|k,0|B)),0|l(),T^g^X|0,0|R)),0|l(),0|F,0|I)),0|l(),0|w,0|N)),0|(w=0|l()),0|C,0|v),C=0|l(),a[r+40>>2]=v,a[r+40+4>>2]=C,I=0|Pt(O,x,28),F=0|l(),R=0|Pt(O,x,34),F=(0|l())^F,X=0|Pt(O,x,39),F^=0|l(),F=0|vn(0|(w=0|vn(0|N,0|w,O&(p|b)|p&b|0,x&(h|Z)|h&Z|0)),0|l(),R^I^X|0,0|F),X=0|l(),a[r+8>>2]=F,a[r+8+4>>2]=X,I=0|Pt(v,C,14),R=0|l(),w=0|Pt(v,C,18),R=(0|l())^R,N=0|Pt(v,C,41),R^=0|l(),T=0|a[n+((g=7|Q)<<3)>>2],B=0|a[n+(g<<3)+4>>2],k=0|a[32416+(g<<3)>>2],S=0|a[32416+(g<<3)+4>>2],Z=0|vn(0|(S=0|vn(0|(B=0|vn(0|(R=0|vn(0|(A=0|vn(v&(E^m)^m|0,C&(d^u)^u|0,0|Y,0|A)),0|l(),w^I^N|0,0|R)),0|l(),0|T,0|B)),0|l(),0|k,0|S)),0|(k=0|l()),0|b,0|Z),b=0|l(),a[r+32>>2]=Z,a[r+32+4>>2]=b,B=0|Pt(F,X,28),T=0|l(),R=0|Pt(F,X,34),T=(0|l())^T,N=0|Pt(F,X,39),T^=0|l(),T=0|vn(0|(k=0|vn(0|S,0|k,F&(O|p)|O&p|0,X&(x|h)|x&h|0)),0|l(),R^B^N|0,0|T),N=0|l(),a[r>>2]=T,a[r+4>>2]=N,B=0|Pt(Z,b,14),R=0|l(),k=0|Pt(Z,b,18),R=(0|l())^R,S=0|Pt(Z,b,41),R^=0|l(),w=0|a[n+((I=8|Q)<<3)>>2],A=0|a[n+(I<<3)+4>>2],Y=0|a[32416+(I<<3)>>2],H=0|a[32416+(I<<3)+4>>2],h=0|vn(0|(H=0|vn(0|(A=0|vn(0|(R=0|vn(0|(u=0|vn(Z&(v^E)^E|0,b&(C^d)^d|0,0|m,0|u)),0|l(),k^B^S|0,0|R)),0|l(),0|w,0|A)),0|l(),0|Y,0|H)),0|(Y=0|l()),0|p,0|h),p=0|l(),a[r+24>>2]=h,a[r+24+4>>2]=p,A=0|Pt(T,N,28),w=0|l(),R=0|Pt(T,N,34),w=(0|l())^w,S=0|Pt(T,N,39),w^=0|l(),w=0|vn(0|(Y=0|vn(0|H,0|Y,T&(F|O)|F&O|0,N&(X|x)|X&x|0)),0|l(),R^A^S|0,0|w),S=0|l(),a[r+56>>2]=w,a[r+56+4>>2]=S,A=0|Pt(h,p,14),R=0|l(),Y=0|Pt(h,p,18),R=(0|l())^R,H=0|Pt(h,p,41),R^=0|l(),k=0|a[n+((B=9|Q)<<3)>>2],u=0|a[n+(B<<3)+4>>2],m=0|a[32416+(B<<3)>>2],D=0|a[32416+(B<<3)+4>>2],x=0|vn(0|(D=0|vn(0|(u=0|vn(0|(R=0|vn(0|(d=0|vn(h&(Z^v)^v|0,p&(b^C)^C|0,0|E,0|d)),0|l(),Y^A^H|0,0|R)),0|l(),0|k,0|u)),0|l(),0|m,0|D)),0|(m=0|l()),0|O,0|x),O=0|l(),a[r+16>>2]=x,a[r+16+4>>2]=O,u=0|Pt(w,S,28),k=0|l(),R=0|Pt(w,S,34),k=(0|l())^k,H=0|Pt(w,S,39),k^=0|l(),k=0|vn(0|(m=0|vn(0|D,0|m,w&(T|F)|T&F|0,S&(N|X)|N&X|0)),0|l(),R^u^H|0,0|k),H=0|l(),a[r+48>>2]=k,a[r+48+4>>2]=H,u=0|Pt(x,O,14),R=0|l(),m=0|Pt(x,O,18),R=(0|l())^R,D=0|Pt(x,O,41),R^=0|l(),Y=0|a[n+((A=10|Q)<<3)>>2],d=0|a[n+(A<<3)+4>>2],E=0|a[32416+(A<<3)>>2],y=0|a[32416+(A<<3)+4>>2],X=0|vn(0|(y=0|vn(0|(d=0|vn(0|(R=0|vn(0|(C=0|vn(x&(h^Z)^Z|0,O&(p^b)^b|0,0|v,0|C)),0|l(),m^u^D|0,0|R)),0|l(),0|Y,0|d)),0|l(),0|E,0|y)),0|(E=0|l()),0|F,0|X),F=0|l(),a[r+8>>2]=X,a[r+8+4>>2]=F,d=0|Pt(k,H,28),Y=0|l(),R=0|Pt(k,H,34),Y=(0|l())^Y,D=0|Pt(k,H,39),Y^=0|l(),Y=0|vn(0|(E=0|vn(0|y,0|E,k&(w|T)|w&T|0,H&(S|N)|S&N|0)),0|l(),R^d^D|0,0|Y),D=0|l(),a[r+40>>2]=Y,a[r+40+4>>2]=D,d=0|Pt(X,F,14),R=0|l(),E=0|Pt(X,F,18),R=(0|l())^R,y=0|Pt(X,F,41),R^=0|l(),m=0|a[n+((u=11|Q)<<3)>>2],C=0|a[n+(u<<3)+4>>2],v=0|a[32416+(u<<3)>>2],U=0|a[32416+(u<<3)+4>>2],N=0|vn(0|(U=0|vn(0|(C=0|vn(0|(R=0|vn(0|(b=0|vn(X&(x^h)^h|0,F&(O^p)^p|0,0|Z,0|b)),0|l(),E^d^y|0,0|R)),0|l(),0|m,0|C)),0|l(),0|v,0|U)),0|(v=0|l()),0|T,0|N),T=0|l(),a[r>>2]=N,a[r+4>>2]=T,C=0|Pt(Y,D,28),m=0|l(),R=0|Pt(Y,D,34),m=(0|l())^m,y=0|Pt(Y,D,39),m^=0|l(),m=0|vn(0|(v=0|vn(0|U,0|v,Y&(k|w)|k&w|0,D&(H|S)|H&S|0)),0|l(),R^C^y|0,0|m),y=0|l(),a[r+32>>2]=m,a[r+32+4>>2]=y,C=0|Pt(N,T,14),R=0|l(),v=0|Pt(N,T,18),R=(0|l())^R,U=0|Pt(N,T,41),R^=0|l(),E=0|a[n+((d=12|Q)<<3)>>2],b=0|a[n+(d<<3)+4>>2],Z=0|a[32416+(d<<3)>>2],f=0|a[32416+(d<<3)+4>>2],S=0|vn(0|(f=0|vn(0|(b=0|vn(0|(R=0|vn(0|(p=0|vn(N&(X^x)^x|0,T&(F^O)^O|0,0|h,0|p)),0|l(),v^C^U|0,0|R)),0|l(),0|E,0|b)),0|l(),0|Z,0|f)),0|(Z=0|l()),0|w,0|S),w=0|l(),a[r+56>>2]=S,a[r+56+4>>2]=w,b=0|Pt(m,y,28),E=0|l(),R=0|Pt(m,y,34),E=(0|l())^E,U=0|Pt(m,y,39),E^=0|l(),E=0|vn(0|(Z=0|vn(0|f,0|Z,m&(Y|k)|Y&k|0,y&(D|H)|D&H|0)),0|l(),R^b^U|0,0|E),U=0|l(),a[r+24>>2]=E,a[r+24+4>>2]=U,b=0|Pt(S,w,14),R=0|l(),Z=0|Pt(S,w,18),R=(0|l())^R,f=0|Pt(S,w,41),R^=0|l(),v=0|a[n+((C=13|Q)<<3)>>2],p=0|a[n+(C<<3)+4>>2],h=0|a[32416+(C<<3)>>2],G=0|a[32416+(C<<3)+4>>2],H=0|vn(0|(G=0|vn(0|(p=0|vn(0|(R=0|vn(0|(O=0|vn(S&(N^X)^X|0,w&(T^F)^F|0,0|x,0|O)),0|l(),Z^b^f|0,0|R)),0|l(),0|v,0|p)),0|l(),0|h,0|G)),0|(h=0|l()),0|k,0|H),k=0|l(),a[r+48>>2]=H,a[r+48+4>>2]=k,p=0|Pt(E,U,28),v=0|l(),R=0|Pt(E,U,34),v=(0|l())^v,f=0|Pt(E,U,39),v^=0|l(),v=0|vn(0|(h=0|vn(0|G,0|h,E&(m|Y)|m&Y|0,U&(y|D)|y&D|0)),0|l(),R^p^f|0,0|v),f=0|l(),a[r+16>>2]=v,a[r+16+4>>2]=f,p=0|Pt(H,k,14),R=0|l(),h=0|Pt(H,k,18),R=(0|l())^R,G=0|Pt(H,k,41),R^=0|l(),Z=0|a[n+((b=14|Q)<<3)>>2],O=0|a[n+(b<<3)+4>>2],x=0|a[32416+(b<<3)>>2],V=0|a[32416+(b<<3)+4>>2],D=0|vn(0|(V=0|vn(0|(O=0|vn(0|(R=0|vn(0|(F=0|vn(H&(S^N)^N|0,k&(w^T)^T|0,0|X,0|F)),0|l(),h^p^G|0,0|R)),0|l(),0|Z,0|O)),0|l(),0|x,0|V)),0|(x=0|l()),0|Y,0|D),Y=0|l(),a[r+40>>2]=D,a[r+40+4>>2]=Y,O=0|Pt(v,f,28),Z=0|l(),R=0|Pt(v,f,34),Z=(0|l())^Z,G=0|Pt(v,f,39),Z^=0|l(),Z=0|vn(0|(x=0|vn(0|V,0|x,v&(E|m)|E&m|0,f&(U|y)|U&y|0)),0|l(),R^O^G|0,0|Z),G=0|l(),a[r+8>>2]=Z,a[r+8+4>>2]=G,O=0|Pt(D,Y,14),R=0|l(),x=0|Pt(D,Y,18),R=(0|l())^R,V=0|Pt(D,Y,41),R^=0|l(),h=0|a[n+((p=15|Q)<<3)>>2],F=0|a[n+(p<<3)+4>>2],X=0|a[32416+(p<<3)>>2],W=0|a[32416+(p<<3)+4>>2],y=0|vn(0|(W=0|vn(0|(F=0|vn(0|(R=0|vn(0|(T=0|vn(D&(H^S)^S|0,Y&(k^w)^w|0,0|N,0|T)),0|l(),x^O^V|0,0|R)),0|l(),0|h,0|F)),0|l(),0|X,0|W)),0|(X=0|l()),0|m,0|y),m=0|l(),a[r+32>>2]=y,a[r+32+4>>2]=m,m=0|Pt(Z,G,28),y=0|l(),F=0|Pt(Z,G,34),y=(0|l())^y,h=0|Pt(Z,G,39),y^=0|l(),y=0|vn(0|(U=0|vn(0|W,0|X,Z&(v|E)|v&E|0,G&(f|U)|f&U|0)),0|l(),F^m^h|0,0|y),h=0|l(),a[r>>2]=y,a[r+4>>2]=h,64==(0|Q))break;v=0|Pt(H=0|a[n+(b<<3)>>2],D=0|a[n+(b<<3)+4>>2],19),w=0|l(),F=0|Pt(H,D,61),U=0|l(),U=0|vn((N=0|Bn(0|H,0|D,6))^v^F|0,0|(U=(0|l())^w^U),0|(w=0|a[n+(B<<3)>>2]),0|(Z=0|a[n+(B<<3)+4>>2])),F=0|l(),O=0|Pt(v=0|a[n+(_<<3)>>2],N=0|a[n+(_<<3)+4>>2],1),y=0|l(),k=0|Pt(v,N,8),T=0|l(),x=0|Bn(0|v,0|N,7),T=(0|l())^y^T,T=0|vn(0|(y=0|vn(0|U,0|F,0|a[(y=n+(Q<<3)|0)>>2],0|a[y+4>>2])),0|l(),x^O^k|0,0|T),k=0|l(),a[(O=n+((Q=Q+16|0)<<3)|0)>>2]=T,a[O+4>>2]=k,y=0|Pt(O=0|a[n+(p<<3)>>2],x=0|a[n+(p<<3)+4>>2],19),F=0|l(),U=0|Pt(O,x,61),f=0|l(),h=0|Bn(0|O,0|x,6),f=(0|l())^F^f,F=0|a[n+(_+9<<3)>>2],Y=0|a[n+(_+9<<3)+4>>2],m=0|Pt(G=0|a[n+(_+1<<3)>>2],X=0|a[n+(_+1<<3)+4>>2],1),R=0|l(),E=0|Pt(G,X,8),W=0|l(),V=0|Bn(0|G,0|X,7),W=(0|l())^R^W,W=0|vn(0|(f=0|vn(0|(N=0|vn(0|F,0|Y,0|v,0|N)),0|l(),h^y^U|0,0|f)),0|l(),V^m^E|0,0|W),E=0|l(),a[n+(_+16<<3)>>2]=W,a[n+(_+16<<3)+4>>2]=E,m=0|Pt(T,k,19),V=0|l(),f=0|Pt(T,k,61),_=0|l(),_=0|vn((k=0|Bn(0|T,0|k,6))^m^f|0,0|(_=(0|l())^V^_),0|(V=0|a[n+(u<<3)>>2]),0|(T=0|a[n+(u<<3)+4>>2])),f=0|l(),U=0|Pt(m=0|a[n+(o<<3)>>2],k=0|a[n+(o<<3)+4>>2],1),y=0|l(),h=0|Pt(m,k,8),N=0|l(),v=0|Bn(0|m,0|k,7),N=(0|l())^y^N,N=0|vn(0|(X=0|vn(0|_,0|f,0|G,0|X)),0|l(),v^U^h|0,0|N),h=0|l(),a[n+(t+16<<3)>>2]=N,a[n+(t+16<<3)+4>>2]=h,U=0|Pt(W,E,19),v=0|l(),X=0|Pt(W,E,61),G=0|l(),E=0|Bn(0|W,0|E,6),G=(0|l())^v^G,v=0|a[n+(o+9<<3)>>2],W=0|a[n+(o+9<<3)+4>>2],_=0|Pt(f=0|a[n+(o+1<<3)>>2],t=0|a[n+(o+1<<3)+4>>2],1),y=0|l(),Y=0|Pt(f,t,8),F=0|l(),R=0|Bn(0|f,0|t,7),F=(0|l())^y^F,F=0|vn(0|(G=0|vn(0|(k=0|vn(0|v,0|W,0|m,0|k)),0|l(),E^U^X|0,0|G)),0|l(),R^_^Y|0,0|F),Y=0|l(),a[n+(o+16<<3)>>2]=F,a[n+(o+16<<3)+4>>2]=Y,_=0|Pt(N,h,19),R=0|l(),G=0|Pt(N,h,61),X=0|l(),X=0|vn((h=0|Bn(0|N,0|h,6))^_^G|0,0|(X=(0|l())^R^X),0|(R=0|a[n+(C<<3)>>2]),0|(N=0|a[n+(C<<3)+4>>2])),G=0|l(),U=0|Pt(_=0|a[n+(c<<3)>>2],h=0|a[n+(c<<3)+4>>2],1),E=0|l(),k=0|Pt(_,h,8),m=0|l(),W=0|Bn(0|_,0|h,7),m=(0|l())^E^m,m=0|vn(0|(t=0|vn(0|X,0|G,0|f,0|t)),0|l(),W^U^k|0,0|m),k=0|l(),a[n+(i+16<<3)>>2]=m,a[n+(i+16<<3)+4>>2]=k,U=0|Pt(F,Y,19),W=0|l(),t=0|Pt(F,Y,61),f=0|l(),Y=0|Bn(0|F,0|Y,6),f=(0|l())^W^f,W=0|a[n+(c+9<<3)>>2],F=0|a[n+(c+9<<3)+4>>2],E=0|Pt(G=0|a[n+(c+1<<3)>>2],X=0|a[n+(c+1<<3)+4>>2],1),v=0|l(),y=0|Pt(G,X,8),S=0|l(),o=0|Bn(0|G,0|X,7),S=(0|l())^v^S,S=0|vn(0|(f=0|vn(0|(h=0|vn(0|W,0|F,0|_,0|h)),0|l(),Y^U^t|0,0|f)),0|l(),o^E^y|0,0|S),y=0|l(),a[n+(c+16<<3)>>2]=S,a[n+(c+16<<3)+4>>2]=y,E=0|Pt(m,k,19),o=0|l(),f=0|Pt(m,k,61),t=0|l(),t=0|vn((k=0|Bn(0|m,0|k,6))^E^f|0,(0|l())^o^t|0,0|O,0|x),o=0|l(),k=0|Pt(f=0|a[n+(g<<3)>>2],E=0|a[n+(g<<3)+4>>2],1),m=0|l(),U=0|Pt(f,E,8),Y=0|l(),h=0|Bn(0|f,0|E,7),Y=(0|l())^m^Y,Y=0|vn(0|(X=0|vn(0|t,0|o,0|G,0|X)),0|l(),h^k^U|0,0|Y),U=0|l(),a[n+(s+16<<3)>>2]=Y,a[n+(s+16<<3)+4>>2]=U,k=0|Pt(S,y,19),h=0|l(),X=0|Pt(S,y,61),G=0|l(),y=0|Bn(0|S,0|y,6),G=(0|l())^h^G,h=0|a[n+(g+9<<3)>>2],S=0|a[n+(g+9<<3)+4>>2],m=0|Pt(o=0|a[n+(g+1<<3)>>2],t=0|a[n+(g+1<<3)+4>>2],1),_=0|l(),F=0|Pt(o,t,8),W=0|l(),v=0|Bn(0|o,0|t,7),W=(0|l())^_^W,W=0|vn(0|(G=0|vn(0|(E=0|vn(0|h,0|S,0|f,0|E)),0|l(),y^k^X|0,0|G)),0|l(),v^m^F|0,0|W),F=0|l(),a[n+(g+16<<3)>>2]=W,a[n+(g+16<<3)+4>>2]=F,m=0|Pt(Y,U,19),v=0|l(),G=0|Pt(Y,U,61),X=0|l(),X=0|vn((U=0|Bn(0|Y,0|U,6))^m^G|0,0|(X=(0|l())^v^X),0|a[n+(I+9<<3)>>2],0|a[n+(I+9<<3)+4>>2]),G=0|l(),m=0|Pt(w,Z,1),U=0|l(),v=0|Pt(w,Z,8),Y=0|l(),k=0|Bn(0|w,0|Z,7),Y=U^(0|l())^Y,Y=0|vn(0|(t=0|vn(0|X,0|G,0|o,0|t)),0|l(),m^k^v|0,0|Y),v=0|l(),a[n+(I+16<<3)>>2]=Y,a[n+(I+16<<3)+4>>2]=v,k=0|Pt(W,F,19),m=0|l(),t=0|Pt(W,F,61),o=0|l(),F=0|Bn(0|W,0|F,6),o=(0|l())^m^o,m=0|a[n+(B+9<<3)>>2],W=0|a[n+(B+9<<3)+4>>2],U=0|Pt(G=0|a[n+(B+1<<3)>>2],X=0|a[n+(B+1<<3)+4>>2],1),y=0|l(),E=0|Pt(G,X,8),f=0|l(),S=0|Bn(0|G,0|X,7),f=(0|l())^y^f,f=0|vn(0|(o=0|vn(0|(Z=0|vn(0|m,0|W,0|w,0|Z)),0|l(),F^k^t|0,0|o)),0|l(),S^U^E|0,0|f),E=0|l(),a[n+(B+16<<3)>>2]=f,a[n+(B+16<<3)+4>>2]=E,U=0|Pt(Y,v,19),S=0|l(),o=0|Pt(Y,v,61),t=0|l(),t=0|vn((v=0|Bn(0|Y,0|v,6))^U^o|0,0|(t=(0|l())^S^t),0|a[n+(A+9<<3)>>2],0|a[n+(A+9<<3)+4>>2]),o=0|l(),U=0|Pt(V,T,1),v=0|l(),S=0|Pt(V,T,8),Y=0|l(),k=0|Bn(0|V,0|T,7),Y=v^(0|l())^Y,Y=0|vn(0|(X=0|vn(0|t,0|o,0|G,0|X)),0|l(),U^k^S|0,0|Y),S=0|l(),a[n+(A+16<<3)>>2]=Y,a[n+(A+16<<3)+4>>2]=S,k=0|Pt(f,E,19),U=0|l(),X=0|Pt(f,E,61),G=0|l(),E=0|Bn(0|f,0|E,6),G=(0|l())^U^G,U=0|a[n+(u+9<<3)>>2],f=0|a[n+(u+9<<3)+4>>2],v=0|Pt(o=0|a[n+(u+1<<3)>>2],t=0|a[n+(u+1<<3)+4>>2],1),F=0|l(),Z=0|Pt(o,t,8),w=0|l(),W=0|Bn(0|o,0|t,7),w=(0|l())^F^w,w=0|vn(0|(G=0|vn(0|(T=0|vn(0|U,0|f,0|V,0|T)),0|l(),E^k^X|0,0|G)),0|l(),W^v^Z|0,0|w),Z=0|l(),a[n+(u+16<<3)>>2]=w,a[n+(u+16<<3)+4>>2]=Z,v=0|Pt(Y,S,19),W=0|l(),G=0|Pt(Y,S,61),X=0|l(),X=0|vn((S=0|Bn(0|Y,0|S,6))^v^G|0,0|(X=(0|l())^W^X),0|a[n+(d+9<<3)>>2],0|a[n+(d+9<<3)+4>>2]),G=0|l(),v=0|Pt(R,N,1),S=0|l(),W=0|Pt(R,N,8),Y=0|l(),k=0|Bn(0|R,0|N,7),Y=S^(0|l())^Y,Y=0|vn(0|(t=0|vn(0|X,0|G,0|o,0|t)),0|l(),v^k^W|0,0|Y),W=0|l(),a[n+(d+16<<3)>>2]=Y,a[n+(d+16<<3)+4>>2]=W,k=0|Pt(w,Z,19),v=0|l(),t=0|Pt(w,Z,61),o=0|l(),Z=0|Bn(0|w,0|Z,6),o=(0|l())^v^o,v=0|a[n+(C+9<<3)>>2],w=0|a[n+(C+9<<3)+4>>2],S=0|Pt(G=0|a[n+(C+1<<3)>>2],X=0|a[n+(C+1<<3)+4>>2],1),E=0|l(),T=0|Pt(G,X,8),V=0|l(),X=0|Bn(0|G,0|X,7),V=(0|l())^E^V,V=0|vn(0|(o=0|vn(0|(N=0|vn(0|v,0|w,0|R,0|N)),0|l(),Z^k^t|0,0|o)),0|l(),X^S^T|0,0|V),T=0|l(),a[n+(C+16<<3)>>2]=V,a[n+(C+16<<3)+4>>2]=T,S=0|Pt(Y,W,19),X=0|l(),o=0|Pt(Y,W,61),t=0|l(),W=0|Bn(0|Y,0|W,6),t=(0|l())^X^t,X=0|a[n+(b+9<<3)>>2],Y=0|a[n+(b+9<<3)+4>>2],k=0|Pt(O,x,1),Z=0|l(),N=0|Pt(O,x,8),R=0|l(),w=0|Bn(0|O,0|x,7),R=Z^(0|l())^R,R=0|vn(0|(t=0|vn(0|(D=0|vn(0|X,0|Y,0|H,0|D)),0|l(),W^S^o|0,0|t)),0|l(),k^w^N|0,0|R),N=0|l(),a[n+(b+16<<3)>>2]=R,a[n+(b+16<<3)+4>>2]=N,N=0|Pt(V,T,19),R=0|l(),w=0|Pt(V,T,61),k=0|l(),T=0|Bn(0|V,0|T,6),k=(0|l())^R^k,R=0|a[n+(p+9<<3)>>2],V=0|a[n+(p+9<<3)+4>>2],S=0|Pt(t=0|a[n+(p+1<<3)>>2],o=0|a[n+(p+1<<3)+4>>2],1),W=0|l(),D=0|Pt(t,o,8),H=0|l(),Y=0|Bn(0|t,0|o,7),H=(0|l())^W^H,H=0|vn(0|(k=0|vn(0|(x=0|vn(0|R,0|V,0|O,0|x)),0|l(),T^N^w|0,0|k)),0|l(),Y^S^D|0,0|H),D=0|l(),a[n+(p+16<<3)>>2]=H,a[n+(p+16<<3)+4>>2]=D}while(Q>>>0<80);t=0;do{S=r+(t<<3)|0,S=0|vn(0|a[(D=e+(t<<3)|0)>>2],0|a[D+4>>2],0|a[S>>2],0|a[S+4>>2]),H=0|l(),a[D>>2]=S,a[D+4>>2]=H,t=t+1|0}while(8!=(0|t))}function h(e){e|=0;var t,n=0,r=0,o=0,i=0,c=0,s=0,l=0,g=0,I=0,B=0,A=0,u=0,d=0,_=0,b=0,p=0,Q=0,h=0,y=0,m=0;t=C,d=C=C+63&-64,C=C+16|0;do{if(e>>>0<245){if(u=e>>>0<11?16:e+11&-8,(B=0|a[8679])>>>(u>>>3)&3|0)return e=0|a[8+(r=34756+((B>>>(u>>>3)&1^1)+(u>>>3)<<1<<2)|0)>>2],(0|(n=0|a[e+8>>2]))==(0|r)?a[8679]=B&~(1<<(B>>>(u>>>3)&1^1)+(u>>>3)):(a[n+12>>2]=r,a[r+8>>2]=n),m=(B>>>(u>>>3)&1^1)+(u>>>3)<<3,a[e+4>>2]=3|m,a[e+m+4>>2]=1|a[e+m+4>>2],C=t,0|e+8;if(u>>>0>(A=0|a[8681])>>>0){if(B>>>(u>>>3)|0)return o=0|a[34756+((i=((o=(((e=B>>>(u>>>3)<<(u>>>3)&(2<<(u>>>3)|0-(2<<(u>>>3))))&0-e)-1|0)>>>(((e&0-e)-1|0)>>>12&16))>>>5&8|((e&0-e)-1|0)>>>12&16|o>>>(o>>>5&8)>>>2&4|(i=o>>>(o>>>5&8)>>>(o>>>(o>>>5&8)>>>2&4))>>>1&2|i>>>(i>>>1&2)>>>1&1)+(i>>>(i>>>1&2)>>>(i>>>(i>>>1&2)>>>1&1))|0)<<1<<2)+8>>2],(0|(e=0|a[o+8>>2]))==(34756+(i<<1<<2)|0)?(a[8679]=B&~(1<<i),e=B&~(1<<i)):(a[e+12>>2]=34756+(i<<1<<2),a[34756+(i<<1<<2)+8>>2]=e,e=B),a[o+4>>2]=3|u,a[o+u+4>>2]=(i<<3)-u|1,a[o+(i<<3)>>2]=(i<<3)-u,0|A&&(r=0|a[8684],e&1<<(A>>>3)?(e=34756+(A>>>3<<1<<2)+8|0,n=0|a[34756+(A>>>3<<1<<2)+8>>2]):(a[8679]=e|1<<(A>>>3),e=34756+(A>>>3<<1<<2)+8|0,n=34756+(A>>>3<<1<<2)|0),a[e>>2]=r,a[n+12>>2]=r,a[r+8>>2]=n,a[r+12>>2]=34756+(A>>>3<<1<<2)),a[8681]=(i<<3)-u,a[8684]=o+u,C=t,0|o+8;if(s=0|a[8680]){for(I=0|a[35020+(((g=((s&0-s)-1|0)>>>(((s&0-s)-1|0)>>>12&16))>>>5&8|((s&0-s)-1|0)>>>12&16|g>>>(g>>>5&8)>>>2&4|(I=g>>>(g>>>5&8)>>>(g>>>(g>>>5&8)>>>2&4))>>>1&2|I>>>(I>>>1&2)>>>1&1)+(I>>>(I>>>1&2)>>>(I>>>(I>>>1&2)>>>1&1))<<2)>>2],g=(-8&a[I+4>>2])-u|0,n=I;(e=0|a[n+16>>2])||(e=0|a[n+20>>2]);)g=(l=(n=(-8&a[e+4>>2])-u|0)>>>0<g>>>0)?n:g,n=e,I=l?e:I;if((l=I+u|0)>>>0>I>>>0){i=0|a[I+24>>2],e=0|a[I+12>>2];do{if((0|e)==(0|I)){if(!(e=0|a[(n=I+20|0)>>2])&&!(e=0|a[(n=I+16|0)>>2])){n=0;break}for(;;)if(r=0|a[(o=e+20|0)>>2])e=r,n=o;else{if(!(r=0|a[(o=e+16|0)>>2]))break;e=r,n=o}a[n>>2]=0,n=e}else n=0|a[I+8>>2],a[n+12>>2]=e,a[e+8>>2]=n,n=e}while(0);do{if(0|i){if(e=0|a[I+28>>2],(0|I)==(0|a[35020+(e<<2)>>2])){if(a[35020+(e<<2)>>2]=n,!n){a[8680]=s&~(1<<e);break}}else if(a[((0|a[i+16>>2])==(0|I)?i+16|0:i+20|0)>>2]=n,!n)break;a[n+24>>2]=i,0|(e=0|a[I+16>>2])&&(a[n+16>>2]=e,a[e+24>>2]=n),0|(e=0|a[I+20>>2])&&(a[n+20>>2]=e,a[e+24>>2]=n)}}while(0);return g>>>0<16?(m=g+u|0,a[I+4>>2]=3|m,a[(m=I+m+4|0)>>2]=1|a[m>>2]):(a[I+4>>2]=3|u,a[l+4>>2]=1|g,a[l+g>>2]=g,0|A&&(r=0|a[8684],1<<(A>>>3)&B?(e=34756+(A>>>3<<1<<2)+8|0,n=0|a[34756+(A>>>3<<1<<2)+8>>2]):(a[8679]=1<<(A>>>3)|B,e=34756+(A>>>3<<1<<2)+8|0,n=34756+(A>>>3<<1<<2)|0),a[e>>2]=r,a[n+12>>2]=r,a[r+8>>2]=n,a[r+12>>2]=34756+(A>>>3<<1<<2)),a[8681]=g,a[8684]=l),C=t,0|I+8}}}}else if(e>>>0<=4294967231){if(u=e+11&-8,o=0|a[8680]){g=(e+11|0)>>>8?u>>>0>16777215?31:u>>>(7+(g=14-((520192+(g=(e+11|0)>>>8<<((1048320+((e+11|0)>>>8)|0)>>>16&8))|0)>>>16&4|(1048320+((e+11|0)>>>8)|0)>>>16&8|(245760+(g<<((g+520192|0)>>>16&4))|0)>>>16&2)+(g<<((g+520192|0)>>>16&4)<<((245760+(g<<((g+520192|0)>>>16&4))|0)>>>16&2)>>>15)|0)|0)&1|g<<1:0,e=0|a[35020+(g<<2)>>2];e:do{if(e)for(r=0-u|0,n=0,l=u<<(31==(0|g)?0:25-(g>>>1)|0),s=0;;){if((i=(-8&a[e+4>>2])-u|0)>>>0<r>>>0){if(!i){r=0,n=e,p=65;break e}r=i,s=e}if(n=0==(0|(p=0|a[e+20>>2]))|(0|p)==(0|(e=0|a[e+16+(l>>>31<<2)>>2]))?n:p,!e){e=s,p=61;break}l<<=1}else r=0-u|0,n=0,e=0,p=61}while(0);if(61==(0|p)){if(0==(0|n)&0==(0|e)){if(!(((e=2<<g)|0-e)&o))break;n=0|a[35020+(((A=((e|0-e)&o&0-((e|0-e)&o))-1|0)>>>(A>>>12&16)>>>5&8|A>>>12&16|(e=A>>>(A>>>12&16)>>>(A>>>(A>>>12&16)>>>5&8))>>>2&4|e>>>(e>>>2&4)>>>1&2|(n=e>>>(e>>>2&4)>>>(e>>>(e>>>2&4)>>>1&2))>>>1&1)+(n>>>(n>>>1&1))<<2)>>2],e=0}n?p=65:(s=r,l=e)}if(65==(0|p))for(;;){if(r=(i=(A=(-8&a[n+4>>2])-u|0)>>>0<r>>>0)?A:r,i=i?n:e,(e=0|a[n+16>>2])||(e=0|a[n+20>>2]),!e){s=r,l=i;break}n=e,e=i}if(0!=(0|l)&&s>>>0<((0|a[8681])-u|0)>>>0&&(I=l+u|0)>>>0>l>>>0){c=0|a[l+24>>2],e=0|a[l+12>>2];do{if((0|e)==(0|l)){if(!(e=0|a[(n=l+20|0)>>2])&&!(e=0|a[(n=l+16|0)>>2])){e=0;break}for(;;)if(r=0|a[(i=e+20|0)>>2])e=r,n=i;else{if(!(r=0|a[(i=e+16|0)>>2]))break;e=r,n=i}a[n>>2]=0}else m=0|a[l+8>>2],a[m+12>>2]=e,a[e+8>>2]=m}while(0);do{if(c){if(n=0|a[l+28>>2],(0|l)==(0|a[35020+(n<<2)>>2])){if(a[35020+(n<<2)>>2]=e,!e){a[8680]=o&~(1<<n),o&=~(1<<n);break}}else if(a[((0|a[c+16>>2])==(0|l)?c+16|0:c+20|0)>>2]=e,!e)break;a[e+24>>2]=c,0|(n=0|a[l+16>>2])&&(a[e+16>>2]=n,a[n+24>>2]=e),(n=0|a[l+20>>2])&&(a[e+20>>2]=n,a[n+24>>2]=e)}}while(0);e:do{if(s>>>0<16)m=s+u|0,a[l+4>>2]=3|m,a[(m=l+m+4|0)>>2]=1|a[m>>2];else{if(a[l+4>>2]=3|u,a[I+4>>2]=1|s,a[I+s>>2]=s,r=s>>>3,s>>>0<256){(e=0|a[8679])&1<<r?(e=34756+(r<<1<<2)+8|0,n=0|a[34756+(r<<1<<2)+8>>2]):(a[8679]=e|1<<r,e=34756+(r<<1<<2)+8|0,n=34756+(r<<1<<2)|0),a[e>>2]=I,a[n+12>>2]=I,a[I+8>>2]=n,a[I+12>>2]=34756+(r<<1<<2);break}if(e=35020+((r=(e=s>>>8)?s>>>0>16777215?31:s>>>(7+(r=14-((520192+(e<<((e+1048320|0)>>>16&8))|0)>>>16&4|(e+1048320|0)>>>16&8|(245760+(r=e<<((e+1048320|0)>>>16&8)<<((520192+(e<<((e+1048320|0)>>>16&8))|0)>>>16&4))|0)>>>16&2)+(r<<((r+245760|0)>>>16&2)>>>15)|0)|0)&1|r<<1:0)<<2)|0,a[I+28>>2]=r,a[I+16+4>>2]=0,a[I+16>>2]=0,!(o&(n=1<<r))){a[8680]=o|n,a[e>>2]=I,a[I+24>>2]=e,a[I+12>>2]=I,a[I+8>>2]=I;break}e=0|a[e>>2];t:do{if((-8&a[e+4>>2]|0)!=(0|s)){for(o=s<<(31==(0|r)?0:25-(r>>>1)|0);n=0|a[(r=e+16+(o>>>31<<2)|0)>>2];){if((-8&a[n+4>>2]|0)==(0|s)){e=n;break t}o<<=1,e=n}a[r>>2]=I,a[I+24>>2]=e,a[I+12>>2]=I,a[I+8>>2]=I;break e}}while(0);m=0|a[(y=e+8|0)>>2],a[m+12>>2]=I,a[y>>2]=I,a[I+8>>2]=m,a[I+12>>2]=e,a[I+24>>2]=0}}while(0);return C=t,0|l+8}}}else u=-1}while(0);if((r=0|a[8681])>>>0>=u>>>0)return n=r-u|0,e=0|a[8684],n>>>0>15?(m=e+u|0,a[8684]=m,a[8681]=n,a[m+4>>2]=1|n,a[e+r>>2]=n,a[e+4>>2]=3|u):(a[8681]=0,a[8684]=0,a[e+4>>2]=3|r,a[e+r+4>>2]=1|a[e+r+4>>2]),C=t,0|e+8;if((i=0|a[8682])>>>0>u>>>0)return h=i-u|0,a[8682]=h,y=(m=0|a[8685])+u|0,a[8685]=y,a[y+4>>2]=1|h,a[m+4>>2]=3|u,C=t,0|m+8;if(0|a[8797]?e=0|a[8799]:(a[8799]=4096,a[8798]=4096,a[8800]=-1,a[8801]=-1,a[8802]=0,a[8790]=0,a[8797]=-16&d^1431655768,e=4096),s=u+48|0,((I=e+(l=u+47|0)|0)&(g=0-e|0))>>>0<=u>>>0)return C=t,0;if(0|(e=0|a[8789])&&(((d=0|a[8787])+(I&g)|0)>>>0<=d>>>0||(d+(I&g)|0)>>>0>e>>>0))return C=t,0;e:do{if(4&a[8790])e=0,p=143;else{n=0|a[8685];t:do{if(n){for(r=35164;!((e=0|a[r>>2])>>>0<=n>>>0&&(e+(0|a[(b=r+4|0)>>2])|0)>>>0>n>>>0);){if(!(e=0|a[r+8>>2])){p=128;break t}r=e}if((I-i&g)>>>0<2147483647)if((0|(e=0|vt(I-i&g)))==((0|a[r>>2])+(0|a[b>>2])|0)){if(-1!=(0|e)){s=e,c=I-i&g,p=145;break e}e=I-i&g}else o=e,r=I-i&g,p=136;else e=0}else p=128}while(0);do{if(128==(0|p))if(-1!=(0|(n=0|vt(0)))&&(c=(0==((c=0|a[8798])-1&n|0)?0:(c+-1+n&0-c)-n|0)+(I&g)|0,_=0|a[8787],c>>>0>u>>>0&c>>>0<2147483647)){if(0|(b=0|a[8789])&&(c+_|0)>>>0<=_>>>0|(c+_|0)>>>0>b>>>0){e=0;break}if((0|(e=0|vt(c)))==(0|n)){s=n,p=145;break e}o=e,r=c,p=136}else e=0}while(0);do{if(136==(0|p)){if(n=0-r|0,!(s>>>0>r>>>0&r>>>0<2147483647&-1!=(0|o))){if(-1==(0|o)){e=0;break}s=o,c=r,p=145;break e}if((e=l-r+(e=0|a[8799])&0-e)>>>0>=2147483647){s=o,c=r,p=145;break e}if(-1==(0|vt(e))){vt(n),e=0;break}s=o,c=e+r|0,p=145;break e}}while(0);a[8790]=4|a[8790],p=143}}while(0);if(143==(0|p)&&(I&g)>>>0<2147483647&&!(-1==(0|(Q=0|vt(I&g)))|1^(y=((h=0|vt(0))-Q|0)>>>0>(u+40|0)>>>0)|Q>>>0<h>>>0&-1!=(0|Q)&-1!=(0|h)^1)&&(s=Q,c=y?h-Q|0:e,p=145),145==(0|p)){e=(0|a[8787])+c|0,a[8787]=e,e>>>0>(0|a[8788])>>>0&&(a[8788]=e),g=0|a[8685];e:do{if(g){for(i=35164;;){if((0|s)==((e=0|a[i>>2])+(n=0|a[(o=i+4|0)>>2])|0)){p=154;break}if(!(r=0|a[i+8>>2]))break;i=r}if(154==(0|p)&&0==(8&a[i+12>>2]|0)&&s>>>0>g>>>0&e>>>0<=g>>>0){a[o>>2]=n+c,m=(0|a[8682])+c|0,y=0==(g+8&7|0)?0:0-(g+8)&7,a[8685]=g+y,a[8682]=m-y,a[g+y+4>>2]=m-y|1,a[g+m+4>>2]=40,a[8686]=a[8801];break}for(s>>>0<(0|a[8683])>>>0&&(a[8683]=s),r=s+c|0,n=35164;;){if((0|a[n>>2])==(0|r)){p=162;break}if(!(e=0|a[n+8>>2]))break;n=e}if(162==(0|p)&&0==(8&a[n+12>>2]|0)){a[n>>2]=s,a[(B=n+4|0)>>2]=(0|a[B>>2])+c,I=(B=s+(0==(7&(B=s+8|0)|0)?0:0-B&7)|0)+u|0,l=(e=r+(0==(r+8&7|0)?0:0-(r+8)&7)|0)-B-u|0,a[B+4>>2]=3|u;t:do{if((0|g)==(0|e))m=(0|a[8682])+l|0,a[8682]=m,a[8685]=I,a[I+4>>2]=1|m;else{if((0|a[8684])==(0|e)){m=(0|a[8681])+l|0,a[8681]=m,a[8684]=I,a[I+4>>2]=1|m,a[I+m>>2]=m;break}if(1==(3&(s=0|a[e+4>>2])|0)){n:do{if(s>>>0<256){if(n=0|a[e+8>>2],(0|(r=0|a[e+12>>2]))==(0|n)){a[8679]=a[8679]&~(1<<(s>>>3));break}a[n+12>>2]=r,a[r+8>>2]=n;break}c=0|a[e+24>>2],n=0|a[e+12>>2];do{if((0|n)==(0|e)){if(n=0|a[e+16+4>>2])r=e+16+4|0;else{if(!(n=0|a[e+16>>2])){n=0;break}r=e+16|0}for(;;)if(o=0|a[(i=n+20|0)>>2])n=o,r=i;else{if(!(o=0|a[(i=n+16|0)>>2]))break;n=o,r=i}a[r>>2]=0}else m=0|a[e+8>>2],a[m+12>>2]=n,a[n+8>>2]=m}while(0);if(!c)break;r=0|a[e+28>>2];do{if((0|a[35020+(r<<2)>>2])==(0|e)){if(a[35020+(r<<2)>>2]=n,0|n)break;a[8680]=a[8680]&~(1<<r);break n}if(a[((0|a[c+16>>2])==(0|e)?c+16|0:c+20|0)>>2]=n,!n)break n}while(0);if(a[n+24>>2]=c,0|(r=0|a[e+16>>2])&&(a[n+16>>2]=r,a[r+24>>2]=n),!(r=0|a[e+16+4>>2]))break;a[n+20>>2]=r,a[r+24>>2]=n}while(0);e=e+(-8&s)|0,i=(-8&s)+l|0}else i=l;if(a[(r=e+4|0)>>2]=-2&a[r>>2],a[I+4>>2]=1|i,a[I+i>>2]=i,r=i>>>3,i>>>0<256){(e=0|a[8679])&1<<r?(e=34756+(r<<1<<2)+8|0,n=0|a[34756+(r<<1<<2)+8>>2]):(a[8679]=e|1<<r,e=34756+(r<<1<<2)+8|0,n=34756+(r<<1<<2)|0),a[e>>2]=I,a[n+12>>2]=I,a[I+8>>2]=n,a[I+12>>2]=34756+(r<<1<<2);break}e=i>>>8;do{if(e){if(i>>>0>16777215){o=31;break}o=i>>>(7+(o=14-((520192+(e<<((e+1048320|0)>>>16&8))|0)>>>16&4|(e+1048320|0)>>>16&8|(245760+(o=e<<((e+1048320|0)>>>16&8)<<((520192+(e<<((e+1048320|0)>>>16&8))|0)>>>16&4))|0)>>>16&2)+(o<<((o+245760|0)>>>16&2)>>>15)|0)|0)&1|o<<1}else o=0}while(0);if(n=35020+(o<<2)|0,a[I+28>>2]=o,a[I+16+4>>2]=0,a[I+16>>2]=0,!((e=0|a[8680])&(r=1<<o))){a[8680]=e|r,a[n>>2]=I,a[I+24>>2]=n,a[I+12>>2]=I,a[I+8>>2]=I;break}e=0|a[n>>2];n:do{if((-8&a[e+4>>2]|0)!=(0|i)){for(o=i<<(31==(0|o)?0:25-(o>>>1)|0);n=0|a[(r=e+16+(o>>>31<<2)|0)>>2];){if((-8&a[n+4>>2]|0)==(0|i)){e=n;break n}o<<=1,e=n}a[r>>2]=I,a[I+24>>2]=e,a[I+12>>2]=I,a[I+8>>2]=I;break t}}while(0);m=0|a[(y=e+8|0)>>2],a[m+12>>2]=I,a[y>>2]=I,a[I+8>>2]=m,a[I+12>>2]=e,a[I+24>>2]=0}}while(0);return C=t,0|B+8}for(n=35164;!((e=0|a[n>>2])>>>0<=g>>>0&&(m=e+(0|a[n+4>>2])|0)>>>0>g>>>0);)n=0|a[n+8>>2];i=(i=m+-47+(0==(m+-47+8&7|0)?0:0-(m+-47+8)&7)|0)>>>0<(g+16|0)>>>0?g:i,e=c+-40|0,y=s+(h=0==(7&(h=s+8|0)|0)?0:0-h&7)|0,a[8685]=y,a[8682]=e-h,a[y+4>>2]=e-h|1,a[s+e+4>>2]=40,a[8686]=a[8801],a[i+4>>2]=27,a[i+8>>2]=a[8791],a[i+8+4>>2]=a[8792],a[i+8+8>>2]=a[8793],a[i+8+12>>2]=a[8794],a[8791]=s,a[8792]=c,a[8794]=0,a[8793]=i+8,e=i+24|0;do{y=e,a[(e=e+4|0)>>2]=7}while((y+8|0)>>>0<m>>>0);if((0|i)!=(0|g)){if(a[i+4>>2]=-2&a[i+4>>2],a[g+4>>2]=i-g|1,a[i>>2]=i-g,(i-g|0)>>>0<256){r=34756+((i-g|0)>>>3<<1<<2)|0,(e=0|a[8679])&1<<((i-g|0)>>>3)?(e=r+8|0,n=0|a[r+8>>2]):(a[8679]=e|1<<((i-g|0)>>>3),e=r+8|0,n=r),a[e>>2]=g,a[n+12>>2]=g,a[g+8>>2]=n,a[g+12>>2]=r;break}if(n=35020+((o=(i-g|0)>>>8?(i-g|0)>>>0>16777215?31:(i-g|0)>>>(7+(o=14-((520192+(o=(i-g|0)>>>8<<((1048320+((i-g|0)>>>8)|0)>>>16&8))|0)>>>16&4|(1048320+((i-g|0)>>>8)|0)>>>16&8|(245760+(o<<((o+520192|0)>>>16&4))|0)>>>16&2)+(o<<((o+520192|0)>>>16&4)<<((245760+(o<<((o+520192|0)>>>16&4))|0)>>>16&2)>>>15)|0)|0)&1|o<<1:0)<<2)|0,a[g+28>>2]=o,a[g+20>>2]=0,a[g+16>>2]=0,!((e=0|a[8680])&(r=1<<o))){a[8680]=e|r,a[n>>2]=g,a[g+24>>2]=n,a[g+12>>2]=g,a[g+8>>2]=g;break}e=0|a[n>>2];t:do{if((-8&a[e+4>>2]|0)!=(i-g|0)){for(o=i-g<<(31==(0|o)?0:25-(o>>>1)|0);n=0|a[(r=e+16+(o>>>31<<2)|0)>>2];){if((-8&a[n+4>>2]|0)==(i-g|0)){e=n;break t}o<<=1,e=n}a[r>>2]=g,a[g+24>>2]=e,a[g+12>>2]=g,a[g+8>>2]=g;break e}}while(0);m=0|a[(y=e+8|0)>>2],a[m+12>>2]=g,a[y>>2]=g,a[g+8>>2]=m,a[g+12>>2]=e,a[g+24>>2]=0}}else 0==(0|(m=0|a[8683]))|s>>>0<m>>>0&&(a[8683]=s),a[8791]=s,a[8792]=c,a[8794]=0,a[8688]=a[8797],a[8687]=-1,a[8692]=34756,a[8691]=34756,a[8694]=34764,a[8693]=34764,a[8696]=34772,a[8695]=34772,a[8698]=34780,a[8697]=34780,a[8700]=34788,a[8699]=34788,a[8702]=34796,a[8701]=34796,a[8704]=34804,a[8703]=34804,a[8706]=34812,a[8705]=34812,a[8708]=34820,a[8707]=34820,a[8710]=34828,a[8709]=34828,a[8712]=34836,a[8711]=34836,a[8714]=34844,a[8713]=34844,a[8716]=34852,a[8715]=34852,a[8718]=34860,a[8717]=34860,a[8720]=34868,a[8719]=34868,a[8722]=34876,a[8721]=34876,a[8724]=34884,a[8723]=34884,a[8726]=34892,a[8725]=34892,a[8728]=34900,a[8727]=34900,a[8730]=34908,a[8729]=34908,a[8732]=34916,a[8731]=34916,a[8734]=34924,a[8733]=34924,a[8736]=34932,a[8735]=34932,a[8738]=34940,a[8737]=34940,a[8740]=34948,a[8739]=34948,a[8742]=34956,a[8741]=34956,a[8744]=34964,a[8743]=34964,a[8746]=34972,a[8745]=34972,a[8748]=34980,a[8747]=34980,a[8750]=34988,a[8749]=34988,a[8752]=34996,a[8751]=34996,a[8754]=35004,a[8753]=35004,m=c+-40|0,y=s+(h=0==(7&(h=s+8|0)|0)?0:0-h&7)|0,a[8685]=y,a[8682]=m-h,a[y+4>>2]=m-h|1,a[s+m+4>>2]=40,a[8686]=a[8801]}while(0);if((e=0|a[8682])>>>0>u>>>0)return h=e-u|0,a[8682]=h,y=(m=0|a[8685])+u|0,a[8685]=y,a[y+4>>2]=1|h,a[m+4>>2]=3|u,C=t,0|m+8}return a[8678]=48,C=t,0}function y(e){var t,n,a,o,i=0,c=0,s=0,g=0,I=0,B=0,A=0,u=0,d=0,_=0,C=0,b=0,p=0,Q=0,h=0,y=0,m=0,F=0,U=0,f=0,G=0,E=0,v=0,Z=0,X=0,W=0,R=0,V=0,O=0,x=0,T=0,N=0,w=0,k=0,Y=0,S=0,H=0,D=0,J=0,P=0,M=0,L=0,z=0,j=0,K=0,q=0,$=0,ee=0,te=0,ne=0,re=0,ae=0,oe=0,ie=0,ce=0,se=0,le=0,ge=0,Ie=0,Be=0,Ae=0,ue=0,de=0,_e=0,Ce=0;J=0|Kt(0|r[(e|=0)>>0],0|r[e+1>>0],0|r[e+2>>0]),l(),L=0|Bn(0|(L=0|pt(e+2|0)),0|l(),5),l(),x=0|Bn(0|(x=0|Kt(0|r[e+5>>0],0|r[e+6>>0],0|r[e+7>>0])),0|l(),2),l(),C=0|Bn(0|(C=0|pt(e+7|0)),0|l(),7),l(),P=0|Bn(0|(P=0|pt(e+10|0)),0|l(),4),l(),q=0|Bn(0|(q=0|Kt(0|r[e+13>>0],0|r[e+14>>0],0|r[e+15>>0])),0|l(),1),l(),f=0|Bn(0|(f=0|pt(e+15|0)),0|l(),6),l(),le=0|Bn(0|(le=0|Kt(0|r[e+18>>0],0|r[e+19>>0],0|r[e+20>>0])),0|l(),3),l(),Ae=0|Kt(0|r[e+21>>0],0|r[e+22>>0],0|r[e+23>>0]),l(),ie=0|Bn(0|(ie=0|pt(e+23|0)),0|l(),5),l(),Be=0|Bn(0|(Be=0|Kt(0|r[e+26>>0],0|r[e+27>>0],0|r[e+28>>0])),0|l(),2),l(),ne=0|Bn(0|(ne=0|pt(e+28|0)),0|l(),7),l(),_e=0|Bn(0|(_e=0|pt(e+31|0)),0|l(),4),l(),Z=0|Bn(0|(Z=0|Kt(0|r[e+34>>0],0|r[e+35>>0],0|r[e+36>>0])),0|l(),1),l(),H=0|Bn(0|(H=0|pt(e+36|0)),0|l(),6),l(),y=0|Bn(0|(y=0|Kt(0|r[e+39>>0],0|r[e+40>>0],0|r[e+41>>0])),0|l(),3),l(),s=0|Kt(0|r[e+42>>0],0|r[e+43>>0],0|r[e+44>>0]),l(),Y=0|Bn(0|(Y=0|pt(e+44|0)),0|l(),5),l(),ae=0|Bn(0|(ae=0|Kt(0|r[e+47>>0],0|r[e+48>>0],0|r[e+49>>0])),0|l(),2),l(),Ce=0|Bn(0|(Ce=0|pt(e+49|0)),0|l(),7),l(),d=0|Bn(0|(d=0|pt(e+52|0)),0|l(),4),l(),E=0|Bn(0|(E=0|Kt(0|r[e+55>>0],0|r[e+56>>0],0|r[e+57>>0])),0|l(),1),l(),R=0|Bn(0|(R=0|pt(e+57|0)),0|l(),6),l(),A=0|$t(0|(M=0|Bn(0|(M=0|pt(e+60|0)),0|l(),3)),0|(g=0|l()),666643,0),h=0|l(),Ie=0|$t(0|M,0|g,470296,0),m=0|l(),X=0|$t(0|M,0|g,654183,0),I=0|l(),G=0|$t(0|M,0|g,-997805,-1),u=0|l(),y=0|vn(0|(i=0|$t(0|M,0|g,136657,0)),0|l(),2097151&y|0,0),i=0|l(),s=0|vn(0|(g=0|$t(0|M,0|g,-683901,-1)),0|l(),2097151&s|0,0),g=0|l(),M=0|$t(2097151&R|0,0,666643,0),S=0|l(),U=0|$t(2097151&R|0,0,470296,0),te=0|l(),V=0|$t(2097151&R|0,0,654183,0),c=0|l(),j=0|$t(2097151&R|0,0,-997805,-1),z=0|l(),D=0|$t(2097151&R|0,0,136657,0),Q=0|l(),R=0|vn(0|y,0|i,0|(R=0|$t(2097151&R|0,0,-683901,-1)),0|l()),i=0|l(),y=0|$t(2097151&E|0,0,666643,0),K=0|l(),v=0|$t(2097151&E|0,0,470296,0),re=0|l(),k=0|$t(2097151&E|0,0,654183,0),B=0|l(),ue=0|$t(2097151&E|0,0,-997805,-1),ge=0|l(),ee=0|$t(2097151&E|0,0,136657,0),O=0|l(),Q=0|vn(0|(u=0|vn(0|(H=0|vn(0|(E=0|$t(2097151&E|0,0,-683901,-1)),0|l(),2097151&H|0,0)),0|l(),0|G,0|u)),0|l(),0|D,0|Q),D=0|l(),u=0|$t(2097151&d|0,0,666643,0),G=0|l(),H=0|$t(2097151&d|0,0,470296,0),E=0|l(),b=0|$t(2097151&d|0,0,654183,0),$=0|l(),T=0|$t(2097151&d|0,0,-997805,-1),N=0|l(),o=0|$t(2097151&d|0,0,136657,0),de=0|l(),d=0|$t(2097151&d|0,0,-683901,-1),_=0|l(),p=0|$t(2097151&Ce|0,0,666643,0),W=0|l(),ce=0|$t(2097151&Ce|0,0,470296,0),se=0|l(),n=0|$t(2097151&Ce|0,0,654183,0),oe=0|l(),a=0|$t(2097151&Ce|0,0,-997805,-1),w=0|l(),t=0|$t(2097151&Ce|0,0,136657,0),F=0|l(),c=0|vn(0|(m=0|vn(0|(ge=0|vn(0|(de=0|vn(0|(_e=0|vn(0|(Ce=0|$t(2097151&Ce|0,0,-683901,-1)),0|l(),2097151&_e|0,0)),0|l(),0|o,0|de)),0|l(),0|ue,0|ge)),0|l(),0|Ie,0|m)),0|l(),0|V,0|c),V=0|l(),f=0|vn(0|(m=0|$t(2097151&ae|0,0,666643,0)),0|l(),2097151&f|0,0),m=0|l(),Ie=0|$t(2097151&ae|0,0,470296,0),ge=0|l(),G=0|vn(0|(se=0|vn(0|(Ae=0|vn(0|(ue=0|$t(2097151&ae|0,0,654183,0)),0|l(),2097151&Ae|0,0)),0|l(),0|ce,0|se)),0|l(),0|u,0|G),u=0|l(),se=0|$t(2097151&ae|0,0,-997805,-1),ce=0|l(),S=0|vn(0|(re=0|vn(0|($=0|vn(0|(w=0|vn(0|(Be=0|vn(0|(Ae=0|$t(2097151&ae|0,0,136657,0)),0|l(),2097151&Be|0,0)),0|l(),0|a,0|w)),0|l(),0|b,0|$)),0|l(),0|v,0|re)),0|l(),0|M,0|S),M=0|l(),ae=0|$t(2097151&ae|0,0,-683901,-1),re=0|l(),b=0|Bn(0|(v=0|vn(0|f,0|m,1048576,0)),0|($=0|l()),21),w=0|l(),w=0|vn(0|(W=0|vn(0|(le=0|vn(0|Ie,0|ge,2097151&le|0,0)),0|l(),0|p,0|W)),0|l(),0|b,0|w),b=0|l(),$=0|En(0|f,0|m,-2097152&v|0,2047&$|0),v=0|l(),W=0|Bn(0|(m=0|vn(0|G,0|u,1048576,0)),0|(f=0|l()),21),p=0|l(),p=0|vn(0|(K=0|vn(0|(E=0|vn(0|(oe=0|vn(0|(ie=0|vn(0|se,0|ce,2097151&ie|0,0)),0|l(),0|n,0|oe)),0|l(),0|H,0|E)),0|l(),0|y,0|K)),0|l(),0|W,0|p),W=0|l(),E=0|tn(0|(K=0|vn(0|S,0|M,1048576,0)),0|(y=0|l()),21),H=0|l(),H=0|vn(0|(te=0|vn(0|(h=0|vn(0|(B=0|vn(0|(N=0|vn(0|(F=0|vn(0|(ne=0|vn(0|ae,0|re,2097151&ne|0,0)),0|l(),0|t,0|F)),0|l(),0|T,0|N)),0|l(),0|k,0|B)),0|l(),0|A,0|h)),0|l(),0|U,0|te)),0|l(),0|E,0|H),E=0|l(),h=0|tn(0|(te=0|vn(0|c,0|V,1048576,0)),0|(U=0|l()),21),A=0|l(),A=0|vn(0|(z=0|vn(0|(I=0|vn(0|(O=0|vn(0|(Z=0|vn(0|d,0|_,2097151&Z|0,0)),0|l(),0|ee,0|O)),0|l(),0|X,0|I)),0|l(),0|j,0|z)),0|l(),0|h,0|A),h=0|l(),U=0|En(0|c,0|V,-2097152&te|0,0|U),te=0|l(),z=0|vn(0|R,0|i,0|(z=0|tn(0|(V=0|vn(0|Q,0|D,1048576,0)),0|(c=0|l()),21)),0|l()),i=0|l(),c=0|En(0|Q,0|D,-2097152&V|0,0|c),V=0|l(),Y=0|vn(0|(R=0|tn(0|(D=0|vn(0|s,0|g,1048576,0)),0|(Q=0|l()),21)),0|l(),2097151&Y|0,0),R=0|l(),Q=0|En(0|s,0|g,-2097152&D|0,0|Q),D=0|l(),j=0|Bn(0|(g=0|vn(0|w,0|b,1048576,0)),0|(s=0|l()),21),I=0|l(),s=0|En(0|w,0|b,-2097152&g|0,0|s),g=0|l(),X=0|tn(0|(b=0|vn(0|p,0|W,1048576,0)),0|(w=0|l()),21),O=0|l(),te=0|vn(0|(_=0|tn(0|(ee=0|vn(0|H,0|E,1048576,0)),0|(Z=0|l()),21)),0|l(),0|U,0|te),U=0|l(),Z=0|En(0|H,0|E,-2097152&ee|0,0|Z),ee=0|l(),V=0|vn(0|(_=0|tn(0|(E=0|vn(0|A,0|h,1048576,0)),0|(H=0|l()),21)),0|l(),0|c,0|V),c=0|l(),H=0|En(0|A,0|h,-2097152&E|0,0|H),E=0|l(),D=0|vn(0|(_=0|tn(0|(h=0|vn(0|z,0|i,1048576,0)),0|(A=0|l()),21)),0|l(),0|Q,0|D),Q=0|l(),A=0|En(0|z,0|i,-2097152&h|0,0|A),h=0|l(),q=0|vn(0|(i=0|$t(0|Y,0|R,666643,0)),0|l(),2097151&q|0,0),i=0|l(),z=0|vn(0|$,0|v,0|(z=0|$t(0|Y,0|R,470296,0)),0|l()),v=0|l(),$=0|vn(0|s,0|g,0|($=0|$t(0|Y,0|R,654183,0)),0|l()),g=0|l(),s=0|$t(0|Y,0|R,-997805,-1),_=0|l(),d=0|$t(0|Y,0|R,136657,0),B=0|l(),y=0|En(0|(O=0|vn(0|(M=0|vn(0|(R=0|$t(0|Y,0|R,-683901,-1)),0|l(),0|S,0|M)),0|l(),0|X,0|O)),0|l(),-2097152&K|0,0|y),K=0|l(),P=0|vn(0|(O=0|$t(0|D,0|Q,666643,0)),0|l(),2097151&P|0,0),O=0|l(),X=0|vn(0|q,0|i,0|(X=0|$t(0|D,0|Q,470296,0)),0|l()),i=0|l(),q=0|vn(0|z,0|v,0|(q=0|$t(0|D,0|Q,654183,0)),0|l()),v=0|l(),z=0|vn(0|$,0|g,0|(z=0|$t(0|D,0|Q,-997805,-1)),0|l()),g=0|l(),$=0|$t(0|D,0|Q,136657,0),M=0|l(),Q=0|$t(0|D,0|Q,-683901,-1),D=0|l(),C=0|vn(0|(S=0|$t(0|A,0|h,666643,0)),0|l(),2097151&C|0,0),S=0|l(),R=0|vn(0|P,0|O,0|(R=0|$t(0|A,0|h,470296,0)),0|l()),O=0|l(),P=0|vn(0|X,0|i,0|(P=0|$t(0|A,0|h,654183,0)),0|l()),i=0|l(),X=0|vn(0|q,0|v,0|(X=0|$t(0|A,0|h,-997805,-1)),0|l()),v=0|l(),q=0|vn(0|z,0|g,0|(q=0|$t(0|A,0|h,136657,0)),0|l()),g=0|l(),h=0|$t(0|A,0|h,-683901,-1),A=0|l(),A=0|vn(0|(M=0|vn(0|(_=0|vn(0|(f=0|En(0|(u=0|vn(0|j,0|I,0|G,0|u)),0|l(),-2097152&m|0,0|f)),0|l(),0|s,0|_)),0|l(),0|$,0|M)),0|l(),0|h,0|A),h=0|l(),x=0|vn(0|(M=0|$t(0|V,0|c,666643,0)),0|l(),2097151&x|0,0),M=0|l(),$=0|vn(0|C,0|S,0|($=0|$t(0|V,0|c,470296,0)),0|l()),S=0|l(),C=0|vn(0|R,0|O,0|(C=0|$t(0|V,0|c,654183,0)),0|l()),O=0|l(),R=0|vn(0|P,0|i,0|(R=0|$t(0|V,0|c,-997805,-1)),0|l()),i=0|l(),P=0|vn(0|X,0|v,0|(P=0|$t(0|V,0|c,136657,0)),0|l()),v=0|l(),c=0|vn(0|q,0|g,0|(c=0|$t(0|V,0|c,-683901,-1)),0|l()),g=0|l(),L=0|vn(0|(q=0|$t(0|H,0|E,666643,0)),0|l(),2097151&L|0,0),q=0|l(),V=0|vn(0|x,0|M,0|(V=0|$t(0|H,0|E,470296,0)),0|l()),M=0|l(),x=0|vn(0|$,0|S,0|(x=0|$t(0|H,0|E,654183,0)),0|l()),S=0|l(),$=0|vn(0|C,0|O,0|($=0|$t(0|H,0|E,-997805,-1)),0|l()),O=0|l(),C=0|vn(0|R,0|i,0|(C=0|$t(0|H,0|E,136657,0)),0|l()),i=0|l(),E=0|vn(0|P,0|v,0|(E=0|$t(0|H,0|E,-683901,-1)),0|l()),v=0|l(),J=0|vn(0|(P=0|$t(0|te,0|U,666643,0)),0|l(),2097151&J|0,0),P=0|l(),H=0|vn(0|L,0|q,0|(H=0|$t(0|te,0|U,470296,0)),0|l()),q=0|l(),L=0|vn(0|V,0|M,0|(L=0|$t(0|te,0|U,654183,0)),0|l()),M=0|l(),V=0|vn(0|x,0|S,0|(V=0|$t(0|te,0|U,-997805,-1)),0|l()),S=0|l(),x=0|vn(0|$,0|O,0|(x=0|$t(0|te,0|U,136657,0)),0|l()),O=0|l(),U=0|vn(0|C,0|i,0|(U=0|$t(0|te,0|U,-683901,-1)),0|l()),i=0|l(),$=0|vn(0|H,0|q,0|($=0|tn(0|(C=0|vn(0|J,0|P,1048576,0)),0|(te=0|l()),21)),0|l()),q=0|l(),te=0|En(0|J,0|P,-2097152&C|0,0|te),C=0|l(),H=0|vn(0|V,0|S,0|(H=0|tn(0|(P=0|vn(0|L,0|M,1048576,0)),0|(J=0|l()),21)),0|l()),S=0|l(),X=0|vn(0|U,0|i,0|(X=0|tn(0|(V=0|vn(0|x,0|O,1048576,0)),0|(R=0|l()),21)),0|l()),i=0|l(),s=0|vn(0|c,0|g,0|(s=0|tn(0|(U=0|vn(0|E,0|v,1048576,0)),0|(_=0|l()),21)),0|l()),g=0|l(),_=0|En(0|E,0|v,-2097152&U|0,0|_),U=0|l(),c=0|tn(0|(v=0|vn(0|A,0|h,1048576,0)),0|(E=0|l()),21),f=0|l(),f=0|vn(0|(D=0|vn(0|(w=0|En(0|(W=0|vn(0|d,0|B,0|p,0|W)),0|l(),-2097152&b|0,0|w)),0|l(),0|Q,0|D)),0|l(),0|c,0|f),c=0|l(),E=0|En(0|A,0|h,-2097152&v|0,0|E),v=0|l(),ee=0|vn(0|(D=0|tn(0|(h=0|vn(0|y,0|K,1048576,0)),0|(A=0|l()),21)),0|l(),0|Z,0|ee),Z=0|l(),A=0|En(0|y,0|K,-2097152&h|0,0|A),h=0|l(),D=0|tn(0|(K=0|vn(0|$,0|q,1048576,0)),0|(y=0|l()),21),Q=0|l(),W=0|tn(0|(w=0|vn(0|H,0|S,1048576,0)),0|(b=0|l()),21),p=0|l(),m=0|vn(0|_,0|U,0|(m=0|tn(0|(B=0|vn(0|X,0|i,1048576,0)),0|(d=0|l()),21)),0|l()),U=0|l(),G=0|vn(0|E,0|v,0|(G=0|tn(0|(_=0|vn(0|s,0|g,1048576,0)),0|(u=0|l()),21)),0|l()),v=0|l(),u=0|En(0|s,0|g,-2097152&_|0,0|u),_=0|l(),E=0|vn(0|A,0|h,0|(E=0|tn(0|(g=0|vn(0|f,0|c,1048576,0)),0|(s=0|l()),21)),0|l()),h=0|l(),s=0|En(0|f,0|c,-2097152&g|0,0|s),g=0|l(),A=0|tn(0|(c=0|vn(0|ee,0|Z,1048576,0)),0|(f=0|l()),21),I=0|l(),f=0|En(0|ee,0|Z,-2097152&c|0,0|f),c=0|l(),Z=0|vn(0|te,0|C,0|(Z=0|$t(0|A,0|I,666643,0)),0|l()),C=0|l(),te=0|$t(0|A,0|I,470296,0),ee=0|l(),j=0|$t(0|A,0|I,654183,0),z=0|l(),Y=0|$t(0|A,0|I,-997805,-1),k=0|l(),N=0|$t(0|A,0|I,136657,0),T=0|l(),I=0|$t(0|A,0|I,-683901,-1),A=0|l(),C=0|tn(0|Z,0|C,21),F=0|l(),C=0|tn(0|(F=0|vn(0|(y=0|En(0|(q=0|vn(0|te,0|ee,0|$,0|q)),0|l(),-2097152&K|0,0|y)),0|l(),0|C,0|F)),0|l(),21),y=0|l(),C=0|tn(0|(y=0|vn(0|(Q=0|vn(0|(J=0|En(0|(M=0|vn(0|j,0|z,0|L,0|M)),0|l(),-2097152&P|0,0|J)),0|l(),0|D,0|Q)),0|l(),0|C,0|y)),0|l(),21),Q=0|l(),C=0|tn(0|(Q=0|vn(0|(b=0|En(0|(k=0|vn(0|H,0|S,0|Y,0|k)),0|l(),-2097152&w|0,0|b)),0|l(),0|C,0|Q)),0|l(),21),b=0|l(),C=0|tn(0|(b=0|vn(0|(p=0|vn(0|(R=0|En(0|(O=0|vn(0|N,0|T,0|x,0|O)),0|l(),-2097152&V|0,0|R)),0|l(),0|W,0|p)),0|l(),0|C,0|b)),0|l(),21),p=0|l(),Z=0|vn(0|(E=0|$t(0|(f=0|tn(0|(c=0|vn(0|(h=0|tn(0|(s=0|vn(0|E,0|h,0|(s=0|tn(0|(g=0|vn(0|(v=0|tn(0|(u=0|vn(0|G,0|v,0|(u=0|tn(0|(_=0|vn(0|(U=0|tn(0|(C=0|vn(0|m,0|U,0|(C=0|tn(0|(p=0|vn(0|(d=0|En(0|(A=0|vn(0|X,0|i,0|I,0|A)),0|l(),-2097152&B|0,0|d)),0|l(),0|C,0|p)),0|l(),21)),0|l())),0|l(),21)),0|l(),0|u,0|_)),0|l(),21)),0|l())),0|l(),21)),0|l(),0|s,0|g)),0|l(),21)),0|l())),0|l(),21)),0|l(),0|f,0|c)),0|l(),21)),0|(h=0|l()),666643,0)),0|l(),2097151&Z|0,0),E=0|l(),F=0|vn(0|(v=0|$t(0|f,0|h,470296,0)),0|l(),2097151&F|0,0),v=0|l(),y=0|vn(0|(G=0|$t(0|f,0|h,654183,0)),0|l(),2097151&y|0,0),G=0|l(),Q=0|vn(0|(U=0|$t(0|f,0|h,-997805,-1)),0|l(),2097151&Q|0,0),U=0|l(),b=0|vn(0|(m=0|$t(0|f,0|h,136657,0)),0|l(),2097151&b|0,0),m=0|l(),c=0|vn(0|(i=0|tn(0|(s=0|vn(0|(I=0|tn(0|(g=0|vn(0|(A=0|tn(0|(u=0|vn(0|(B=0|tn(0|(_=0|vn(0|(d=0|tn(0|(C=0|vn(0|(p=0|tn(0|(b=0|vn(0|(p=0|vn(0|(h=0|$t(0|f,0|h,-683901,-1)),0|l(),2097151&p|0,0)),0|(h=0|l()),0|(b=0|tn(0|(Q=0|vn(0|b,0|m,0|(Q=0|tn(0|(y=0|vn(0|Q,0|U,0|(y=0|tn(0|(F=0|vn(0|y,0|G,0|(F=0|tn(0|(f=0|vn(0|F,0|v,0|(f=0|tn(0|Z,0|E,21)),0|l())),0|(v=0|l()),21)),0|l())),0|(G=0|l()),21)),0|l())),0|(U=0|l()),21)),0|l())),0|(m=0|l()),21)),0|l())),0|(h=0|l()),21)),0|l(),2097151&C|0,0)),0|(p=0|l()),21)),0|l(),2097151&_|0,0)),0|(d=0|l()),21)),0|l(),2097151&u|0,0)),0|(B=0|l()),21)),0|l(),2097151&g|0,0)),0|(A=0|l()),21)),0|l(),2097151&s|0,0)),0|(I=0|l()),21)),0|l(),2097151&c|0,0),i=0|l(),r[e>>0]=Z,X=0|Bn(0|Z,0|E,8),l(),r[e+1>>0]=X,E=0|Bn(0|Z,0|E,16),l(),Z=0|sn(2097151&f|0,0,5),l(),r[e+2>>0]=Z|31&E,E=0|Bn(0|f,0|v,3),l(),r[e+3>>0]=E,v=0|Bn(0|f,0|v,11),l(),r[e+4>>0]=v,f=0|Bn(2097151&f|0,0,19),v=0|l(),E=0|sn(2097151&F|0,0,2),l(),r[e+5>>0]=E|f,G=0|Bn(0|F,0|G,6),l(),r[e+6>>0]=G,F=0|Bn(2097151&F|0,0,14),G=0|l(),f=0|sn(2097151&y|0,0,7),l(),r[e+7>>0]=f|F,F=0|Bn(0|y,0|U,1),l(),r[e+8>>0]=F,U=0|Bn(0|y,0|U,9),l(),r[e+9>>0]=U,y=0|Bn(2097151&y|0,0,17),U=0|l(),F=0|sn(2097151&Q|0,0,4),l(),r[e+10>>0]=F|y,y=0|Bn(0|Q,0|m,4),l(),r[e+11>>0]=y,m=0|Bn(0|Q,0|m,12),l(),r[e+12>>0]=m,Q=0|Bn(2097151&Q|0,0,20),m=0|l(),y=0|sn(2097151&b|0,0,1),l(),r[e+13>>0]=y|Q,h=0|Bn(0|b,0|h,7),l(),r[e+14>>0]=h,b=0|Bn(2097151&b|0,0,15),h=0|l(),Q=0|sn(2097151&C|0,0,6),l(),r[e+15>>0]=Q|b,b=0|Bn(0|C,0|p,2),l(),r[e+16>>0]=b,p=0|Bn(0|C,0|p,10),l(),r[e+17>>0]=p,C=0|Bn(2097151&C|0,0,18),p=0|l(),b=0|sn(0|_,0|d,3),l(),r[e+18>>0]=b|C,C=0|Bn(0|_,0|d,5),l(),r[e+19>>0]=C,d=0|Bn(0|_,0|d,13),l(),r[e+20>>0]=d,r[e+21>>0]=u,d=0|Bn(0|u,0|B,8),l(),r[e+22>>0]=d,B=0|Bn(0|u,0|B,16),l(),u=0|sn(2097151&g|0,0,5),l(),r[e+23>>0]=u|31&B,B=0|Bn(0|g,0|A,3),l(),r[e+24>>0]=B,A=0|Bn(0|g,0|A,11),l(),r[e+25>>0]=A,g=0|Bn(2097151&g|0,0,19),A=0|l(),B=0|sn(2097151&s|0,0,2),l(),r[e+26>>0]=B|g,I=0|Bn(0|s,0|I,6),l(),r[e+27>>0]=I,s=0|Bn(2097151&s|0,0,14),I=0|l(),g=0|sn(0|c,0|i,7),l(),r[e+28>>0]=g|s,s=0|Bn(0|c,0|i,1),l(),r[e+29>>0]=s,s=0|Bn(0|c,0|i,9),l(),r[e+30>>0]=s,i=0|tn(0|c,0|i,17),l(),r[e+31>>0]=i}function m(e,t,n){e|=0,n|=0;var r,o,i,c,s,g,I,B,A,u,d,_,C,b,p,Q,h,y,m,F,U,f,G,E,v,Z,X,W,R,V,O,x,T,N,w,k,Y,S,H,D,J,P,M,L,z,j,K,q,$,ee,te,ne,re,ae,oe,ie,ce,se,le,ge,Ie,Be,Ae,ue,de,_e,Ce,be,pe,Qe,he,ye,me,Fe,Ue,fe,Ge,Ee,ve,Ze,Xe,We,Re,Ve,Oe,xe,Te,Ne,we,ke=0,Ye=0,Se=0,He=0,De=0,Je=0,Pe=0,Me=0,Le=0,ze=0,je=0,Ke=0,qe=0,$e=0,et=0,tt=0,nt=0,rt=0,at=0,ot=0,it=0,ct=0,st=0,lt=0,gt=0,It=0,Bt=0,At=0,ut=0,dt=0,_t=0,Ct=0,bt=0,pt=0,Qt=0,ht=0,yt=0,mt=0,Ft=0,Ut=0,ft=0,Gt=0,Et=0,vt=0,Zt=0,Xt=0,Wt=0,Rt=0,Vt=0,Ot=0,xt=0,Tt=0,Nt=0,wt=0,kt=0,Yt=0,St=0,Ht=0,Dt=0,Jt=0,Pt=0,Mt=0,Lt=0,zt=0,jt=0,Kt=0,qt=0,en=0,nn=0,rn=0,an=0,on=0,cn=0,sn=0,ln=0,gn=0,In=0,An=0,un=0,dn=0,_n=0,Cn=0,bn=0,pn=0,Qn=0,hn=0,yn=0,mn=0,Fn=0,Un=0,fn=0,Gn=0,Zn=0,Xn=0,Wn=0,Rn=0,Vn=0,On=0,xn=0,Tn=0,Nn=0,wn=0,kn=0,Yn=0,Sn=0,Hn=0,Dn=0,Jn=0,Pn=0,Mn=0;et=0|a[(t|=0)>>2],Me=0|a[t+4>>2],Je=0|a[t+8>>2],qe=0|a[t+12>>2],Wt=0|a[t+16>>2],Ke=0|a[t+20>>2],ln=0|a[t+24>>2],ke=0|a[t+28>>2],yt=0|a[t+32>>2],Bt=0|a[t+36>>2],lt=0|a[n>>2],Mn=0|a[n+4>>2],Gn=0|a[n+8>>2],on=0|a[n+12>>2],Nt=0|a[n+16>>2],Rn=0|a[n+20>>2],An=0|a[n+24>>2],Ht=0|a[n+28>>2],mt=0|a[n+32>>2],we=0|a[n+36>>2],Te=0|$t(0|lt,((0|lt)<0)<<31>>31|0,0|et,((0|et)<0)<<31>>31|0),Pn=0|l(),ve=0|$t(0|Mn,((0|Mn)<0)<<31>>31|0,0|et,((0|et)<0)<<31>>31|0),Ee=0|l(),ne=0|$t(0|Gn,((0|Gn)<0)<<31>>31|0,0|et,((0|et)<0)<<31>>31|0),cn=0|l(),T=0|$t(0|on,((0|on)<0)<<31>>31|0,0|et,((0|et)<0)<<31>>31|0),wt=0|l(),ye=0|$t(0|Nt,((0|Nt)<0)<<31>>31|0,0|et,((0|et)<0)<<31>>31|0),On=0|l(),se=0|$t(0|Rn,((0|Rn)<0)<<31>>31|0,0|et,((0|et)<0)<<31>>31|0),dn=0|l(),H=0|$t(0|An,((0|An)<0)<<31>>31|0,0|et,((0|et)<0)<<31>>31|0),Jt=0|l(),F=0|$t(0|Ht,((0|Ht)<0)<<31>>31|0,0|et,((0|et)<0)<<31>>31|0),Ut=0|l(),u=0|$t(0|mt,((0|mt)<0)<<31>>31|0,0|et,((0|et)<0)<<31>>31|0),At=0|l(),et=0|$t(0|we,((0|we)<0)<<31>>31|0,0|et,((0|et)<0)<<31>>31|0),$e=0|l(),Zn=0|$t(0|lt,((0|lt)<0)<<31>>31|0,0|Me,((0|Me)<0)<<31>>31|0),Xn=0|l(),oe=0|$t(0|Mn,((0|Mn)<0)<<31>>31|0,Me<<1|0,((Me<<1|0)<0)<<31>>31|0),ae=0|l(),N=0|$t(0|Gn,((0|Gn)<0)<<31>>31|0,0|Me,((0|Me)<0)<<31>>31|0),kt=0|l(),me=0|$t(0|on,((0|on)<0)<<31>>31|0,Me<<1|0,((Me<<1|0)<0)<<31>>31|0),xn=0|l(),le=0|$t(0|Nt,((0|Nt)<0)<<31>>31|0,0|Me,((0|Me)<0)<<31>>31|0),_n=0|l(),D=0|$t(0|Rn,((0|Rn)<0)<<31>>31|0,Me<<1|0,((Me<<1|0)<0)<<31>>31|0),Pt=0|l(),U=0|$t(0|An,((0|An)<0)<<31>>31|0,0|Me,((0|Me)<0)<<31>>31|0),ft=0|l(),d=0|$t(0|Ht,((0|Ht)<0)<<31>>31|0,Me<<1|0,((Me<<1|0)<0)<<31>>31|0),ut=0|l(),r=0|$t(0|mt,((0|mt)<0)<<31>>31|0,0|Me,((0|Me)<0)<<31>>31|0),tt=0|l(),Me=0|$t(19*we|0,0|(It=((19*we|0)<0)<<31>>31),Me<<1|0,((Me<<1|0)<0)<<31>>31|0),t=0|l(),re=0|$t(0|lt,((0|lt)<0)<<31>>31|0,0|Je,((0|Je)<0)<<31>>31|0),sn=0|l(),Y=0|$t(0|Mn,((0|Mn)<0)<<31>>31|0,0|Je,((0|Je)<0)<<31>>31|0),k=0|l(),Fe=0|$t(0|Gn,((0|Gn)<0)<<31>>31|0,0|Je,((0|Je)<0)<<31>>31|0),Tn=0|l(),ge=0|$t(0|on,((0|on)<0)<<31>>31|0,0|Je,((0|Je)<0)<<31>>31|0),Cn=0|l(),J=0|$t(0|Nt,((0|Nt)<0)<<31>>31|0,0|Je,((0|Je)<0)<<31>>31|0),Mt=0|l(),f=0|$t(0|Rn,((0|Rn)<0)<<31>>31|0,0|Je,((0|Je)<0)<<31>>31|0),Gt=0|l(),_=0|$t(0|An,((0|An)<0)<<31>>31|0,0|Je,((0|Je)<0)<<31>>31|0),dt=0|l(),o=0|$t(0|Ht,((0|Ht)<0)<<31>>31|0,0|Je,((0|Je)<0)<<31>>31|0),nt=0|l(),Ze=0|$t(19*mt|0,0|(Ft=((19*mt|0)<0)<<31>>31),0|Je,((0|Je)<0)<<31>>31|0),wn=0|l(),Je=0|$t(19*we|0,0|It,0|Je,((0|Je)<0)<<31>>31|0),Pe=0|l(),w=0|$t(0|lt,((0|lt)<0)<<31>>31|0,0|qe,((0|qe)<0)<<31>>31|0),Yt=0|l(),Ge=0|$t(0|Mn,((0|Mn)<0)<<31>>31|0,qe<<1|0,((qe<<1|0)<0)<<31>>31|0),fe=0|l(),Ie=0|$t(0|Gn,((0|Gn)<0)<<31>>31|0,0|qe,((0|qe)<0)<<31>>31|0),bn=0|l(),P=0|$t(0|on,((0|on)<0)<<31>>31|0,qe<<1|0,((qe<<1|0)<0)<<31>>31|0),Lt=0|l(),G=0|$t(0|Nt,((0|Nt)<0)<<31>>31|0,0|qe,((0|qe)<0)<<31>>31|0),Et=0|l(),C=0|$t(0|Rn,((0|Rn)<0)<<31>>31|0,qe<<1|0,((qe<<1|0)<0)<<31>>31|0),_t=0|l(),i=0|$t(0|An,((0|An)<0)<<31>>31|0,0|qe,((0|qe)<0)<<31>>31|0),rt=0|l(),Xe=0|$t(19*Ht|0,0|(Dt=((19*Ht|0)<0)<<31>>31),qe<<1|0,((qe<<1|0)<0)<<31>>31|0),kn=0|l(),de=0|$t(19*mt|0,0|Ft,0|qe,((0|qe)<0)<<31>>31|0),Qn=0|l(),qe=0|$t(19*we|0,0|It,qe<<1|0,((qe<<1|0)<0)<<31>>31|0),De=0|l(),Ue=0|$t(0|lt,((0|lt)<0)<<31>>31|0,0|Wt,((0|Wt)<0)<<31>>31|0),Nn=0|l(),ue=0|$t(0|Mn,((0|Mn)<0)<<31>>31|0,0|Wt,((0|Wt)<0)<<31>>31|0),Ae=0|l(),M=0|$t(0|Gn,((0|Gn)<0)<<31>>31|0,0|Wt,((0|Wt)<0)<<31>>31|0),zt=0|l(),E=0|$t(0|on,((0|on)<0)<<31>>31|0,0|Wt,((0|Wt)<0)<<31>>31|0),vt=0|l(),b=0|$t(0|Nt,((0|Nt)<0)<<31>>31|0,0|Wt,((0|Wt)<0)<<31>>31|0),Ct=0|l(),c=0|$t(0|Rn,((0|Rn)<0)<<31>>31|0,0|Wt,((0|Wt)<0)<<31>>31|0),at=0|l(),We=0|$t(19*An|0,0|(un=((19*An|0)<0)<<31>>31),0|Wt,((0|Wt)<0)<<31>>31|0),Yn=0|l(),_e=0|$t(19*Ht|0,0|Dt,0|Wt,((0|Wt)<0)<<31>>31|0),hn=0|l(),K=0|$t(19*mt|0,0|Ft,0|Wt,((0|Wt)<0)<<31>>31|0),Kt=0|l(),Wt=0|$t(19*we|0,0|It,0|Wt,((0|Wt)<0)<<31>>31|0),Se=0|l(),Be=0|$t(0|lt,((0|lt)<0)<<31>>31|0,0|Ke,((0|Ke)<0)<<31>>31|0),pn=0|l(),j=0|$t(0|Mn,((0|Mn)<0)<<31>>31|0,Ke<<1|0,((Ke<<1|0)<0)<<31>>31|0),z=0|l(),v=0|$t(0|Gn,((0|Gn)<0)<<31>>31|0,0|Ke,((0|Ke)<0)<<31>>31|0),Zt=0|l(),p=0|$t(0|on,((0|on)<0)<<31>>31|0,Ke<<1|0,((Ke<<1|0)<0)<<31>>31|0),bt=0|l(),s=0|$t(0|Nt,((0|Nt)<0)<<31>>31|0,0|Ke,((0|Ke)<0)<<31>>31|0),ot=0|l(),Re=0|$t(19*Rn|0,0|(Vn=((19*Rn|0)<0)<<31>>31),Ke<<1|0,((Ke<<1|0)<0)<<31>>31|0),Sn=0|l(),Ce=0|$t(19*An|0,0|un,0|Ke,((0|Ke)<0)<<31>>31|0),yn=0|l(),q=0|$t(19*Ht|0,0|Dt,Ke<<1|0,((Ke<<1|0)<0)<<31>>31|0),qt=0|l(),R=0|$t(19*mt|0,0|Ft,0|Ke,((0|Ke)<0)<<31>>31|0),Rt=0|l(),Ke=0|$t(19*we|0,0|It,Ke<<1|0,((Ke<<1|0)<0)<<31>>31|0),Ye=0|l(),L=0|$t(0|lt,((0|lt)<0)<<31>>31|0,0|ln,((0|ln)<0)<<31>>31|0),jt=0|l(),W=0|$t(0|Mn,((0|Mn)<0)<<31>>31|0,0|ln,((0|ln)<0)<<31>>31|0),X=0|l(),Q=0|$t(0|Gn,((0|Gn)<0)<<31>>31|0,0|ln,((0|ln)<0)<<31>>31|0),pt=0|l(),g=0|$t(0|on,((0|on)<0)<<31>>31|0,0|ln,((0|ln)<0)<<31>>31|0),it=0|l(),Ve=0|$t(19*Nt|0,((19*Nt|0)<0)<<31>>31|0,0|ln,((0|ln)<0)<<31>>31|0),Hn=0|l(),be=0|$t(19*Rn|0,0|Vn,0|ln,((0|ln)<0)<<31>>31|0),mn=0|l(),$=0|$t(19*An|0,0|un,0|ln,((0|ln)<0)<<31>>31|0),en=0|l(),V=0|$t(19*Ht|0,0|Dt,0|ln,((0|ln)<0)<<31>>31|0),Vt=0|l(),Le=0|$t(19*mt|0,0|Ft,0|ln,((0|ln)<0)<<31>>31|0),ze=0|l(),ln=0|$t(19*we|0,0|It,0|ln,((0|ln)<0)<<31>>31|0),He=0|l(),Z=0|$t(0|lt,((0|lt)<0)<<31>>31|0,0|ke,((0|ke)<0)<<31>>31|0),Xt=0|l(),m=0|$t(0|Mn,((0|Mn)<0)<<31>>31|0,ke<<1|0,((ke<<1|0)<0)<<31>>31|0),y=0|l(),I=0|$t(0|Gn,((0|Gn)<0)<<31>>31|0,0|ke,((0|ke)<0)<<31>>31|0),ct=0|l(),Oe=0|$t(19*on|0,((19*on|0)<0)<<31>>31|0,ke<<1|0,((ke<<1|0)<0)<<31>>31|0),Dn=0|l(),pe=0|$t(19*Nt|0,((19*Nt|0)<0)<<31>>31|0,0|ke,((0|ke)<0)<<31>>31|0),Fn=0|l(),ee=0|$t(19*Rn|0,0|Vn,ke<<1|0,((ke<<1|0)<0)<<31>>31|0),nn=0|l(),O=0|$t(19*An|0,0|un,0|ke,((0|ke)<0)<<31>>31|0),Ot=0|l(),gt=0|$t(19*Ht|0,0|Dt,ke<<1|0,((ke<<1|0)<0)<<31>>31|0),je=0|l(),ie=0|$t(19*mt|0,0|Ft,0|ke,((0|ke)<0)<<31>>31|0),gn=0|l(),n=0|$t(19*we|0,0|It,ke<<1|0,((ke<<1|0)<0)<<31>>31|0),ke=0|l(),h=0|$t(0|lt,((0|lt)<0)<<31>>31|0,0|yt,((0|yt)<0)<<31>>31|0),Qt=0|l(),A=0|$t(0|Mn,((0|Mn)<0)<<31>>31|0,0|yt,((0|yt)<0)<<31>>31|0),B=0|l(),xe=0|$t(19*Gn|0,((19*Gn|0)<0)<<31>>31|0,0|yt,((0|yt)<0)<<31>>31|0),Jn=0|l(),Qe=0|$t(19*on|0,((19*on|0)<0)<<31>>31|0,0|yt,((0|yt)<0)<<31>>31|0),Un=0|l(),te=0|$t(19*Nt|0,((19*Nt|0)<0)<<31>>31|0,0|yt,((0|yt)<0)<<31>>31|0),rn=0|l(),x=0|$t(19*Rn|0,0|Vn,0|yt,((0|yt)<0)<<31>>31|0),xt=0|l(),he=0|$t(19*An|0,0|un,0|yt,((0|yt)<0)<<31>>31|0),Wn=0|l(),ce=0|$t(19*Ht|0,0|Dt,0|yt,((0|yt)<0)<<31>>31|0),In=0|l(),S=0|$t(19*mt|0,0|Ft,0|yt,((0|yt)<0)<<31>>31|0),St=0|l(),yt=0|$t(19*we|0,0|It,0|yt,((0|yt)<0)<<31>>31|0),ht=0|l(),lt=0|$t(0|lt,((0|lt)<0)<<31>>31|0,0|Bt,((0|Bt)<0)<<31>>31|0),st=0|l(),Mn=0|$t(19*Mn|0,((19*Mn|0)<0)<<31>>31|0,Bt<<1|0,((Bt<<1|0)<0)<<31>>31|0),Ne=0|l(),Gn=0|$t(19*Gn|0,((19*Gn|0)<0)<<31>>31|0,0|Bt,((0|Bt)<0)<<31>>31|0),fn=0|l(),on=0|$t(19*on|0,((19*on|0)<0)<<31>>31|0,Bt<<1|0,((Bt<<1|0)<0)<<31>>31|0),an=0|l(),Nt=0|$t(19*Nt|0,((19*Nt|0)<0)<<31>>31|0,0|Bt,((0|Bt)<0)<<31>>31|0),Tt=0|l(),Vn=0|$t(19*Rn|0,0|Vn,Bt<<1|0,((Bt<<1|0)<0)<<31>>31|0),Rn=0|l(),un=0|$t(19*An|0,0|un,0|Bt,((0|Bt)<0)<<31>>31|0),An=0|l(),Dt=0|$t(19*Ht|0,0|Dt,Bt<<1|0,((Bt<<1|0)<0)<<31>>31|0),Ht=0|l(),Ft=0|$t(19*mt|0,0|Ft,0|Bt,((0|Bt)<0)<<31>>31|0),mt=0|l(),Bt=0|$t(19*we|0,0|It,Bt<<1|0,((Bt<<1|0)<0)<<31>>31|0),It=0|l(),t=0|vn(0|(wn=0|vn(0|(kn=0|vn(0|(Yn=0|vn(0|(Sn=0|vn(0|(Hn=0|vn(0|(Dn=0|vn(0|(Jn=0|vn(0|(Pn=0|vn(0|Mn,0|Ne,0|Te,0|Pn)),0|l(),0|xe,0|Jn)),0|l(),0|Oe,0|Dn)),0|l(),0|Ve,0|Hn)),0|l(),0|Re,0|Sn)),0|l(),0|We,0|Yn)),0|l(),0|Xe,0|kn)),0|l(),0|Ze,0|wn)),0|l(),0|Me,0|t),Me=0|l(),Xn=0|vn(0|ve,0|Ee,0|Zn,0|Xn),Zn=0|l(),Ye=0|vn(0|(ze=0|vn(0|(je=0|vn(0|(Wn=0|vn(0|(Rn=0|vn(0|(On=0|vn(0|(xn=0|vn(0|(Tn=0|vn(0|(Nn=0|vn(0|Ge,0|fe,0|Ue,0|Nn)),0|l(),0|Fe,0|Tn)),0|l(),0|me,0|xn)),0|l(),0|ye,0|On)),0|l(),0|Vn,0|Rn)),0|l(),0|he,0|Wn)),0|l(),0|gt,0|je)),0|l(),0|Le,0|ze)),0|l(),0|Ke,0|Ye),Ke=0|l(),je=0|tn(0|(ze=0|vn(0|t,0|Me,33554432,0)),0|(Le=0|l()),26),gt=0|l(),gt=0|vn(0|(Pe=0|vn(0|(Qn=0|vn(0|(hn=0|vn(0|(yn=0|vn(0|(mn=0|vn(0|(Fn=0|vn(0|(Un=0|vn(0|(fn=0|vn(0|Xn,0|Zn,0|Gn,0|fn)),0|l(),0|Qe,0|Un)),0|l(),0|pe,0|Fn)),0|l(),0|be,0|mn)),0|l(),0|Ce,0|yn)),0|l(),0|_e,0|hn)),0|l(),0|de,0|Qn)),0|l(),0|Je,0|Pe)),0|l(),0|je,0|gt),je=0|l(),Le=0|En(0|t,0|Me,-67108864&ze|0,0|Le),ze=0|l(),Pe=0|tn(0|(Me=0|vn(0|Ye,0|Ke,33554432,0)),0|(t=0|l()),26),Je=0|l(),Je=0|vn(0|(He=0|vn(0|(gn=0|vn(0|(In=0|vn(0|(An=0|vn(0|(dn=0|vn(0|(_n=0|vn(0|(Cn=0|vn(0|(bn=0|vn(0|(pn=0|vn(0|ue,0|Ae,0|Be,0|pn)),0|l(),0|Ie,0|bn)),0|l(),0|ge,0|Cn)),0|l(),0|le,0|_n)),0|l(),0|se,0|dn)),0|l(),0|un,0|An)),0|l(),0|ce,0|In)),0|l(),0|ie,0|gn)),0|l(),0|ln,0|He)),0|l(),0|Pe,0|Je),Pe=0|l(),t=0|En(0|Ye,0|Ke,-67108864&Me|0,0|t),Me=0|l(),Ye=0|tn(0|(Ke=0|vn(0|gt,0|je,16777216,0)),0|l(),25),He=0|l(),He=0|vn(0|(De=0|vn(0|(Kt=0|vn(0|(qt=0|vn(0|(en=0|vn(0|(nn=0|vn(0|(rn=0|vn(0|(an=0|vn(0|(cn=0|vn(0|(sn=0|vn(0|oe,0|ae,0|re,0|sn)),0|l(),0|ne,0|cn)),0|l(),0|on,0|an)),0|l(),0|te,0|rn)),0|l(),0|ee,0|nn)),0|l(),0|$,0|en)),0|l(),0|q,0|qt)),0|l(),0|K,0|Kt)),0|l(),0|qe,0|De)),0|l(),0|Ye,0|He),Ye=0|l(),Ke=0|En(0|gt,0|je,-33554432&Ke|0,0),je=0|l(),De=0|tn(0|(gt=0|vn(0|Je,0|Pe,16777216,0)),0|l(),25),qe=0|l(),qe=0|vn(0|(ke=0|vn(0|(St=0|vn(0|(Ht=0|vn(0|(Jt=0|vn(0|(Pt=0|vn(0|(Mt=0|vn(0|(Lt=0|vn(0|(zt=0|vn(0|(jt=0|vn(0|j,0|z,0|L,0|jt)),0|l(),0|M,0|zt)),0|l(),0|P,0|Lt)),0|l(),0|J,0|Mt)),0|l(),0|D,0|Pt)),0|l(),0|H,0|Jt)),0|l(),0|Dt,0|Ht)),0|l(),0|S,0|St)),0|l(),0|n,0|ke)),0|l(),0|De,0|qe),De=0|l(),gt=0|En(0|Je,0|Pe,-33554432>|0,0),Pe=0|l(),ke=0|tn(0|(Je=0|vn(0|He,0|Ye,33554432,0)),0|l(),26),n=0|l(),n=0|vn(0|(Se=0|vn(0|(Rt=0|vn(0|(Vt=0|vn(0|(Ot=0|vn(0|(xt=0|vn(0|(Tt=0|vn(0|(wt=0|vn(0|(kt=0|vn(0|(Yt=0|vn(0|Y,0|k,0|w,0|Yt)),0|l(),0|N,0|kt)),0|l(),0|T,0|wt)),0|l(),0|Nt,0|Tt)),0|l(),0|x,0|xt)),0|l(),0|O,0|Ot)),0|l(),0|V,0|Vt)),0|l(),0|R,0|Rt)),0|l(),0|Wt,0|Se)),0|l(),0|ke,0|n),ke=0|l(),Je=0|En(0|He,0|Ye,-67108864&Je|0,0),l(),He=0|tn(0|(Ye=0|vn(0|qe,0|De,33554432,0)),0|l(),26),Se=0|l(),Se=0|vn(0|(ht=0|vn(0|(mt=0|vn(0|(Ut=0|vn(0|(ft=0|vn(0|(Gt=0|vn(0|(Et=0|vn(0|(vt=0|vn(0|(Zt=0|vn(0|(Xt=0|vn(0|W,0|X,0|Z,0|Xt)),0|l(),0|v,0|Zt)),0|l(),0|E,0|vt)),0|l(),0|G,0|Et)),0|l(),0|f,0|Gt)),0|l(),0|U,0|ft)),0|l(),0|F,0|Ut)),0|l(),0|Ft,0|mt)),0|l(),0|yt,0|ht)),0|l(),0|He,0|Se),He=0|l(),Ye=0|En(0|qe,0|De,-67108864&Ye|0,0),l(),Me=0|vn(0|(qe=0|tn(0|(De=0|vn(0|n,0|ke,16777216,0)),0|l(),25)),0|l(),0|t,0|Me),t=0|l(),De=0|En(0|n,0|ke,-33554432&De|0,0),l(),n=0|tn(0|(ke=0|vn(0|Se,0|He,16777216,0)),0|l(),25),qe=0|l(),qe=0|vn(0|(It=0|vn(0|(At=0|vn(0|(ut=0|vn(0|(dt=0|vn(0|(_t=0|vn(0|(Ct=0|vn(0|(bt=0|vn(0|(pt=0|vn(0|(Qt=0|vn(0|m,0|y,0|h,0|Qt)),0|l(),0|Q,0|pt)),0|l(),0|p,0|bt)),0|l(),0|b,0|Ct)),0|l(),0|C,0|_t)),0|l(),0|_,0|dt)),0|l(),0|d,0|ut)),0|l(),0|u,0|At)),0|l(),0|Bt,0|It)),0|l(),0|n,0|qe),n=0|l(),ke=0|En(0|Se,0|He,-33554432&ke|0,0),l(),Se=0|vn(0|gt,0|Pe,0|(Se=0|Bn(0|(He=0|vn(0|Me,0|t,33554432,0)),0|l(),26)),0|l()),l(),He=0|En(0|Me,0|t,-67108864&He|0,0),l(),Me=0|tn(0|(t=0|vn(0|qe,0|n,33554432,0)),0|l(),26),Pe=0|l(),Pe=0|vn(0|($e=0|vn(0|(tt=0|vn(0|(nt=0|vn(0|(rt=0|vn(0|(at=0|vn(0|(ot=0|vn(0|(it=0|vn(0|(ct=0|vn(0|(st=0|vn(0|A,0|B,0|lt,0|st)),0|l(),0|I,0|ct)),0|l(),0|g,0|it)),0|l(),0|s,0|ot)),0|l(),0|c,0|at)),0|l(),0|i,0|rt)),0|l(),0|o,0|nt)),0|l(),0|r,0|tt)),0|l(),0|et,0|$e)),0|l(),0|Me,0|Pe),Me=0|l(),t=0|En(0|qe,0|n,-67108864&t|0,0),l(),ze=0|vn(0|(qe=0|$t(0|(qe=0|tn(0|(n=0|vn(0|Pe,0|Me,16777216,0)),0|l(),25)),0|l(),19,0)),0|l(),0|Le,0|ze),Le=0|l(),n=0|En(0|Pe,0|Me,-33554432&n|0,0),l(),Pe=0|vn(0|Ke,0|je,0|(Pe=0|Bn(0|(Me=0|vn(0|ze,0|Le,33554432,0)),0|l(),26)),0|l()),l(),Me=0|En(0|ze,0|Le,-67108864&Me|0,0),l(),a[e>>2]=Me,a[e+4>>2]=Pe,a[e+8>>2]=Je,a[e+12>>2]=De,a[e+16>>2]=He,a[e+20>>2]=Se,a[e+24>>2]=Ye,a[e+28>>2]=ke,a[e+32>>2]=t,a[e+36>>2]=n}function F(e,t,n){e|=0,n|=0;var r,o,i=0,c=0,s=0,g=0,I=0,B=0,A=0,u=0,d=0,_=0,b=0,p=0,Q=0,h=0,y=0,m=0,F=0,U=0,f=0,G=0,E=0,v=0,Z=0,X=0,W=0,R=0,V=0,O=0,x=0,T=0,N=0,w=0;r=C,o=C=C+63&-64,C=C+2048|0,gr(o+1024|0,t|=0),ft(o+1024|0,e),gr(o,o+1024|0),ft(o,n),e=0;do{c=0|a[o+1024+((4|(t=e<<4))<<3)>>2],s=0|a[o+1024+((4|t)<<3)+4>>2],O=0|Ct(0|a[o+1024+(t<<3)>>2],0|a[o+1024+(t<<3)+4>>2],c,s),w=0|l(),Z=0|Pt(a[o+1024+((12|t)<<3)>>2]^O,a[o+1024+((12|t)<<3)+4>>2]^w,32),F=0|l(),F=0|Pt((w=0|Ct(O,w,s=0|Pt((h=0|Ct(0|a[o+1024+((8|t)<<3)>>2],0|a[o+1024+((8|t)<<3)+4>>2],Z,F))^c,(Q=0|l())^s,24),c=0|l()))^Z,(O=0|l())^F,16),Z=0|l(),a[o+1024+((12|t)<<3)>>2]=F,a[o+1024+((12|t)<<3)+4>>2]=Z,Q=0|Ct(h,Q,F,Z),h=0|l(),a[o+1024+((8|t)<<3)>>2]=Q,a[o+1024+((8|t)<<3)+4>>2]=h,c=0|Pt(Q^s,h^c,63),s=0|l(),a[o+1024+((4|t)<<3)>>2]=c,a[o+1024+((4|t)<<3)+4>>2]=s,R=0|a[o+1024+((5|t)<<3)>>2],V=0|a[o+1024+((5|t)<<3)+4>>2],G=0|Ct(0|a[o+1024+((1|t)<<3)>>2],0|a[o+1024+((1|t)<<3)+4>>2],R,V),X=0|l(),y=0|Pt(a[o+1024+((13|t)<<3)>>2]^G,a[o+1024+((13|t)<<3)+4>>2]^X,32),d=0|l(),I=0|Ct(B=0|Ct(0|a[o+1024+((9|t)<<3)>>2],0|a[o+1024+((9|t)<<3)+4>>2],y,d),I=0|l(),d=0|Pt((X=0|Ct(G,X,V=0|Pt(B^R,I^V,24),R=0|l()))^y,(G=0|l())^d,16),y=0|l()),B=0|l(),a[o+1024+((9|t)<<3)>>2]=I,a[o+1024+((9|t)<<3)+4>>2]=B,R=0|Pt(I^V,B^R,63),V=0|l(),U=0|a[o+1024+((6|t)<<3)>>2],f=0|a[o+1024+((6|t)<<3)+4>>2],p=0|Ct(0|a[o+1024+((2|t)<<3)>>2],0|a[o+1024+((2|t)<<3)+4>>2],U,f),m=0|l(),A=0|Pt(a[o+1024+((14|t)<<3)>>2]^p,a[o+1024+((14|t)<<3)+4>>2]^m,32),i=0|l(),U=0|Pt((x=0|Ct(T=0|Ct(0|a[o+1024+((10|t)<<3)>>2],0|a[o+1024+((10|t)<<3)+4>>2],A,i),x=0|l(),i=0|Pt((m=0|Ct(p,m,f=0|Pt(T^U,x^f,24),U=0|l()))^A,(p=0|l())^i,16),A=0|l()))^f,(T=0|l())^U,63),f=0|l(),_=0|a[o+1024+((7|t)<<3)>>2],b=0|a[o+1024+((7|t)<<3)+4>>2],g=0|Ct(0|a[o+1024+((3|t)<<3)>>2],0|a[o+1024+((3|t)<<3)+4>>2],_,b),u=0|l(),N=0|Pt(a[o+1024+((15|t)<<3)>>2]^g,a[o+1024+((15|t)<<3)+4>>2]^u,32),W=0|l(),_=0|Pt((E=0|Ct(v=0|Ct(0|a[o+1024+((11|t)<<3)>>2],0|a[o+1024+((11|t)<<3)+4>>2],N,W),E=0|l(),W=0|Pt((u=0|Ct(g,u,b=0|Pt(v^_,E^b,24),_=0|l()))^N,(g=0|l())^W,16),N=0|l()))^b,(v=0|l())^_,63),b=0|l(),w=0|Ct(O=0|Ct(w,O,R,V),w=0|l(),V=0|Pt((T=0|Ct(x,T,N=0|Pt(O^W,w^N,32),W=0|l()))^R,(x=0|l())^V,24),R=0|l()),O=0|l(),a[o+1024+(t<<3)>>2]=w,a[o+1024+(t<<3)+4>>2]=O,W=0|Pt(w^N,O^W,16),O=0|l(),a[o+1024+((15|t)<<3)>>2]=W,a[o+1024+((15|t)<<3)+4>>2]=O,O=0|Ct(T,x,W,O),W=0|l(),a[o+1024+((10|t)<<3)>>2]=O,a[o+1024+((10|t)<<3)+4>>2]=W,R=0|Pt(O^V,W^R,63),W=0|l(),a[o+1024+((5|t)<<3)>>2]=R,a[o+1024+((5|t)<<3)+4>>2]=W,X=0|Ct(G=0|Ct(X,G,U,f),X=0|l(),f=0|Pt((v=0|Ct(E,v,Z=0|Pt(G^F,X^Z,32),F=0|l()))^U,(E=0|l())^f,24),U=0|l()),G=0|l(),a[o+1024+((1|t)<<3)>>2]=X,a[o+1024+((1|t)<<3)+4>>2]=G,F=0|Pt(X^Z,G^F,16),G=0|l(),a[o+1024+((12|t)<<3)>>2]=F,a[o+1024+((12|t)<<3)+4>>2]=G,G=0|Ct(v,E,F,G),F=0|l(),a[o+1024+((11|t)<<3)>>2]=G,a[o+1024+((11|t)<<3)+4>>2]=F,U=0|Pt(G^f,F^U,63),F=0|l(),a[o+1024+((6|t)<<3)>>2]=U,a[o+1024+((6|t)<<3)+4>>2]=F,m=0|Ct(p=0|Ct(m,p,_,b),m=0|l(),b=0|Pt((h=0|Ct(Q,h,y=0|Pt(p^d,m^y,32),d=0|l()))^_,(Q=0|l())^b,24),_=0|l()),p=0|l(),a[o+1024+((2|t)<<3)>>2]=m,a[o+1024+((2|t)<<3)+4>>2]=p,d=0|Pt(m^y,p^d,16),p=0|l(),a[o+1024+((13|t)<<3)>>2]=d,a[o+1024+((13|t)<<3)+4>>2]=p,p=0|Ct(h,Q,d,p),d=0|l(),a[o+1024+((8|t)<<3)>>2]=p,a[o+1024+((8|t)<<3)+4>>2]=d,_=0|Pt(p^b,d^_,63),d=0|l(),a[o+1024+((7|t)<<3)>>2]=_,a[o+1024+((7|t)<<3)+4>>2]=d,u=0|Ct(g=0|Ct(u,g,c,s),u=0|l(),s=0|Pt((B=0|Ct(I,B,A=0|Pt(g^i,u^A,32),i=0|l()))^c,(I=0|l())^s,24),c=0|l()),g=0|l(),a[o+1024+((3|t)<<3)>>2]=u,a[o+1024+((3|t)<<3)+4>>2]=g,i=0|Pt(u^A,g^i,16),g=0|l(),a[o+1024+((14|t)<<3)>>2]=i,a[o+1024+((14|t)<<3)+4>>2]=g,g=0|Ct(B,I,i,g),i=0|l(),a[o+1024+((9|t)<<3)>>2]=g,a[o+1024+((9|t)<<3)+4>>2]=i,c=0|Pt(g^s,i^c,63),i=0|l(),a[o+1024+((4|t)<<3)>>2]=c,a[o+1024+((4|t)<<3)+4>>2]=i,e=e+1|0}while(8!=(0|e));e=0;do{T=0|a[(x=o+1024+(32+(w=e<<1)<<3)|0)>>2],x=0|a[x+4>>2],g=0|Ct(0|a[o+1024+(w<<3)>>2],0|a[o+1024+(w<<3)+4>>2],T,x),t=0|l(),d=0|Pt(a[(d=o+1024+(w+96<<3)|0)>>2]^g,a[d+4>>2]^t,32),h=0|l(),h=0|Pt((t=0|Ct(g,t,x=0|Pt((U=0|Ct(0|a[(U=o+1024+(w+64<<3)|0)>>2],0|a[U+4>>2],d,h))^T,(f=0|l())^x,24),T=0|l()))^d,(g=0|l())^h,16),d=0|l(),a[(A=o+1024+(w+96<<3)|0)>>2]=h,a[A+4>>2]=d,f=0|Ct(U,f,h,d),U=0|l(),a[(A=o+1024+(w+64<<3)|0)>>2]=f,a[A+4>>2]=U,T=0|Pt(f^x,U^T,63),x=0|l(),a[(A=o+1024+(w+32<<3)|0)>>2]=T,a[A+4>>2]=x,I=0|a[(A=o+1024+(w+33<<3)|0)>>2],A=0|a[A+4>>2],p=0|Ct(0|a[o+1024+((1|w)<<3)>>2],0|a[o+1024+((1|w)<<3)+4>>2],I,A),u=0|l(),F=0|Pt(a[(F=o+1024+(w+97<<3)|0)>>2]^p,a[F+4>>2]^u,32),v=0|l(),V=0|Ct(R=0|Ct(0|a[(R=o+1024+(w+65<<3)|0)>>2],0|a[R+4>>2],F,v),V=0|l(),v=0|Pt((u=0|Ct(p,u,A=0|Pt(R^I,V^A,24),I=0|l()))^F,(p=0|l())^v,16),F=0|l()),R=0|l(),a[(G=o+1024+(w+65<<3)|0)>>2]=V,a[G+4>>2]=R,I=0|Pt(V^A,R^I,63),A=0|l(),G=o+1024+(w+16<<3)|0,Q=0|a[(y=o+1024+(w+48<<3)|0)>>2],y=0|a[y+4>>2],G=0|Ct(0|a[G>>2],0|a[G+4>>2],Q,y),m=0|l(),W=0|Pt(a[(W=o+1024+(w+112<<3)|0)>>2]^G,a[W+4>>2]^m,32),N=0|l(),Q=0|Pt((s=0|Ct(c=0|Ct(0|a[(c=o+1024+(w+80<<3)|0)>>2],0|a[c+4>>2],W,N),s=0|l(),N=0|Pt((m=0|Ct(G,m,y=0|Pt(c^Q,s^y,24),Q=0|l()))^W,(G=0|l())^N,16),W=0|l()))^y,(c=0|l())^Q,63),y=0|l(),O=o+1024+(w+17<<3)|0,E=0|a[(Z=o+1024+(w+49<<3)|0)>>2],Z=0|a[Z+4>>2],O=0|Ct(0|a[O>>2],0|a[O+4>>2],E,Z),X=0|l(),i=0|Pt(a[(i=o+1024+(w+113<<3)|0)>>2]^O,a[i+4>>2]^X,32),B=0|l(),E=0|Pt((b=0|Ct(_=0|Ct(0|a[(_=o+1024+(w+81<<3)|0)>>2],0|a[_+4>>2],i,B),b=0|l(),B=0|Pt((X=0|Ct(O,X,Z=0|Pt(_^E,b^Z,24),E=0|l()))^i,(O=0|l())^B,16),i=0|l()))^Z,(_=0|l())^E,63),Z=0|l(),t=0|Ct(g=0|Ct(t,g,I,A),t=0|l(),A=0|Pt((c=0|Ct(s,c,i=0|Pt(g^B,t^i,32),B=0|l()))^I,(s=0|l())^A,24),I=0|l()),g=0|l(),a[o+1024+(w<<3)>>2]=t,a[o+1024+(w<<3)+4>>2]=g,B=0|Pt(t^i,g^B,16),g=0|l(),a[(i=o+1024+(w+113<<3)|0)>>2]=B,a[i+4>>2]=g,g=0|Ct(c,s,B,g),B=0|l(),a[(s=o+1024+(w+80<<3)|0)>>2]=g,a[s+4>>2]=B,I=0|Pt(g^A,B^I,63),B=0|l(),a[(A=o+1024+(w+33<<3)|0)>>2]=I,a[A+4>>2]=B,u=0|Ct(p=0|Ct(u,p,Q,y),u=0|l(),y=0|Pt((_=0|Ct(b,_,d=0|Pt(p^h,u^d,32),h=0|l()))^Q,(b=0|l())^y,24),Q=0|l()),p=0|l(),a[o+1024+((1|w)<<3)>>2]=u,a[o+1024+((1|w)<<3)+4>>2]=p,h=0|Pt(u^d,p^h,16),p=0|l(),a[(d=o+1024+(w+96<<3)|0)>>2]=h,a[d+4>>2]=p,p=0|Ct(_,b,h,p),h=0|l(),a[(b=o+1024+(w+81<<3)|0)>>2]=p,a[b+4>>2]=h,Q=0|Pt(p^y,h^Q,63),h=0|l(),a[(y=o+1024+(w+48<<3)|0)>>2]=Q,a[y+4>>2]=h,m=0|Ct(G=0|Ct(m,G,E,Z),m=0|l(),Z=0|Pt((U=0|Ct(f,U,F=0|Pt(G^v,m^F,32),v=0|l()))^E,(f=0|l())^Z,24),E=0|l()),G=0|l(),a[(y=o+1024+(w+16<<3)|0)>>2]=m,a[y+4>>2]=G,v=0|Pt(m^F,G^v,16),G=0|l(),a[(F=o+1024+(w+97<<3)|0)>>2]=v,a[F+4>>2]=G,G=0|Ct(U,f,v,G),v=0|l(),a[(f=o+1024+(w+64<<3)|0)>>2]=G,a[f+4>>2]=v,E=0|Pt(G^Z,v^E,63),v=0|l(),a[(Z=o+1024+(w+49<<3)|0)>>2]=E,a[Z+4>>2]=v,X=0|Ct(O=0|Ct(X,O,T,x),X=0|l(),x=0|Pt((R=0|Ct(V,R,W=0|Pt(O^N,X^W,32),N=0|l()))^T,(V=0|l())^x,24),T=0|l()),O=0|l(),a[(Z=o+1024+(w+17<<3)|0)>>2]=X,a[Z+4>>2]=O,N=0|Pt(X^W,O^N,16),O=0|l(),a[(W=o+1024+(w+112<<3)|0)>>2]=N,a[W+4>>2]=O,O=0|Ct(R,V,N,O),N=0|l(),a[(V=o+1024+(w+65<<3)|0)>>2]=O,a[V+4>>2]=N,T=0|Pt(O^x,N^T,63),N=0|l(),a[(w=o+1024+(w+32<<3)|0)>>2]=T,a[w+4>>2]=N,e=e+1|0}while(8!=(0|e));gr(n,o),ft(n,o+1024|0),C=r}function U(e,t,n){e|=0,n|=0;var r,o,i=0,c=0,s=0,g=0,I=0,B=0,A=0,u=0,d=0,_=0,b=0,p=0,Q=0,h=0,y=0,m=0,F=0,U=0,f=0,G=0,E=0,v=0,Z=0,X=0,W=0,R=0,V=0,O=0,x=0,T=0,N=0,w=0;r=C,o=C=C+63&-64,C=C+2048|0,gr(o+1024|0,t|=0),ft(o+1024|0,e),gr(o,o+1024|0),e=0;do{c=0|a[o+1024+((4|(t=e<<4))<<3)>>2],s=0|a[o+1024+((4|t)<<3)+4>>2],O=0|Ct(0|a[o+1024+(t<<3)>>2],0|a[o+1024+(t<<3)+4>>2],c,s),w=0|l(),Z=0|Pt(a[o+1024+((12|t)<<3)>>2]^O,a[o+1024+((12|t)<<3)+4>>2]^w,32),F=0|l(),F=0|Pt((w=0|Ct(O,w,s=0|Pt((h=0|Ct(0|a[o+1024+((8|t)<<3)>>2],0|a[o+1024+((8|t)<<3)+4>>2],Z,F))^c,(Q=0|l())^s,24),c=0|l()))^Z,(O=0|l())^F,16),Z=0|l(),a[o+1024+((12|t)<<3)>>2]=F,a[o+1024+((12|t)<<3)+4>>2]=Z,Q=0|Ct(h,Q,F,Z),h=0|l(),a[o+1024+((8|t)<<3)>>2]=Q,a[o+1024+((8|t)<<3)+4>>2]=h,c=0|Pt(Q^s,h^c,63),s=0|l(),a[o+1024+((4|t)<<3)>>2]=c,a[o+1024+((4|t)<<3)+4>>2]=s,R=0|a[o+1024+((5|t)<<3)>>2],V=0|a[o+1024+((5|t)<<3)+4>>2],G=0|Ct(0|a[o+1024+((1|t)<<3)>>2],0|a[o+1024+((1|t)<<3)+4>>2],R,V),X=0|l(),y=0|Pt(a[o+1024+((13|t)<<3)>>2]^G,a[o+1024+((13|t)<<3)+4>>2]^X,32),d=0|l(),I=0|Ct(B=0|Ct(0|a[o+1024+((9|t)<<3)>>2],0|a[o+1024+((9|t)<<3)+4>>2],y,d),I=0|l(),d=0|Pt((X=0|Ct(G,X,V=0|Pt(B^R,I^V,24),R=0|l()))^y,(G=0|l())^d,16),y=0|l()),B=0|l(),a[o+1024+((9|t)<<3)>>2]=I,a[o+1024+((9|t)<<3)+4>>2]=B,R=0|Pt(I^V,B^R,63),V=0|l(),U=0|a[o+1024+((6|t)<<3)>>2],f=0|a[o+1024+((6|t)<<3)+4>>2],p=0|Ct(0|a[o+1024+((2|t)<<3)>>2],0|a[o+1024+((2|t)<<3)+4>>2],U,f),m=0|l(),A=0|Pt(a[o+1024+((14|t)<<3)>>2]^p,a[o+1024+((14|t)<<3)+4>>2]^m,32),i=0|l(),U=0|Pt((x=0|Ct(T=0|Ct(0|a[o+1024+((10|t)<<3)>>2],0|a[o+1024+((10|t)<<3)+4>>2],A,i),x=0|l(),i=0|Pt((m=0|Ct(p,m,f=0|Pt(T^U,x^f,24),U=0|l()))^A,(p=0|l())^i,16),A=0|l()))^f,(T=0|l())^U,63),f=0|l(),_=0|a[o+1024+((7|t)<<3)>>2],b=0|a[o+1024+((7|t)<<3)+4>>2],g=0|Ct(0|a[o+1024+((3|t)<<3)>>2],0|a[o+1024+((3|t)<<3)+4>>2],_,b),u=0|l(),N=0|Pt(a[o+1024+((15|t)<<3)>>2]^g,a[o+1024+((15|t)<<3)+4>>2]^u,32),W=0|l(),_=0|Pt((E=0|Ct(v=0|Ct(0|a[o+1024+((11|t)<<3)>>2],0|a[o+1024+((11|t)<<3)+4>>2],N,W),E=0|l(),W=0|Pt((u=0|Ct(g,u,b=0|Pt(v^_,E^b,24),_=0|l()))^N,(g=0|l())^W,16),N=0|l()))^b,(v=0|l())^_,63),b=0|l(),w=0|Ct(O=0|Ct(w,O,R,V),w=0|l(),V=0|Pt((T=0|Ct(x,T,N=0|Pt(O^W,w^N,32),W=0|l()))^R,(x=0|l())^V,24),R=0|l()),O=0|l(),a[o+1024+(t<<3)>>2]=w,a[o+1024+(t<<3)+4>>2]=O,W=0|Pt(w^N,O^W,16),O=0|l(),a[o+1024+((15|t)<<3)>>2]=W,a[o+1024+((15|t)<<3)+4>>2]=O,O=0|Ct(T,x,W,O),W=0|l(),a[o+1024+((10|t)<<3)>>2]=O,a[o+1024+((10|t)<<3)+4>>2]=W,R=0|Pt(O^V,W^R,63),W=0|l(),a[o+1024+((5|t)<<3)>>2]=R,a[o+1024+((5|t)<<3)+4>>2]=W,X=0|Ct(G=0|Ct(X,G,U,f),X=0|l(),f=0|Pt((v=0|Ct(E,v,Z=0|Pt(G^F,X^Z,32),F=0|l()))^U,(E=0|l())^f,24),U=0|l()),G=0|l(),a[o+1024+((1|t)<<3)>>2]=X,a[o+1024+((1|t)<<3)+4>>2]=G,F=0|Pt(X^Z,G^F,16),G=0|l(),a[o+1024+((12|t)<<3)>>2]=F,a[o+1024+((12|t)<<3)+4>>2]=G,G=0|Ct(v,E,F,G),F=0|l(),a[o+1024+((11|t)<<3)>>2]=G,a[o+1024+((11|t)<<3)+4>>2]=F,U=0|Pt(G^f,F^U,63),F=0|l(),a[o+1024+((6|t)<<3)>>2]=U,a[o+1024+((6|t)<<3)+4>>2]=F,m=0|Ct(p=0|Ct(m,p,_,b),m=0|l(),b=0|Pt((h=0|Ct(Q,h,y=0|Pt(p^d,m^y,32),d=0|l()))^_,(Q=0|l())^b,24),_=0|l()),p=0|l(),a[o+1024+((2|t)<<3)>>2]=m,a[o+1024+((2|t)<<3)+4>>2]=p,d=0|Pt(m^y,p^d,16),p=0|l(),a[o+1024+((13|t)<<3)>>2]=d,a[o+1024+((13|t)<<3)+4>>2]=p,p=0|Ct(h,Q,d,p),d=0|l(),a[o+1024+((8|t)<<3)>>2]=p,a[o+1024+((8|t)<<3)+4>>2]=d,_=0|Pt(p^b,d^_,63),d=0|l(),a[o+1024+((7|t)<<3)>>2]=_,a[o+1024+((7|t)<<3)+4>>2]=d,u=0|Ct(g=0|Ct(u,g,c,s),u=0|l(),s=0|Pt((B=0|Ct(I,B,A=0|Pt(g^i,u^A,32),i=0|l()))^c,(I=0|l())^s,24),c=0|l()),g=0|l(),a[o+1024+((3|t)<<3)>>2]=u,a[o+1024+((3|t)<<3)+4>>2]=g,i=0|Pt(u^A,g^i,16),g=0|l(),a[o+1024+((14|t)<<3)>>2]=i,a[o+1024+((14|t)<<3)+4>>2]=g,g=0|Ct(B,I,i,g),i=0|l(),a[o+1024+((9|t)<<3)>>2]=g,a[o+1024+((9|t)<<3)+4>>2]=i,c=0|Pt(g^s,i^c,63),i=0|l(),a[o+1024+((4|t)<<3)>>2]=c,a[o+1024+((4|t)<<3)+4>>2]=i,e=e+1|0}while(8!=(0|e));e=0;do{T=0|a[(x=o+1024+(32+(w=e<<1)<<3)|0)>>2],x=0|a[x+4>>2],g=0|Ct(0|a[o+1024+(w<<3)>>2],0|a[o+1024+(w<<3)+4>>2],T,x),t=0|l(),d=0|Pt(a[(d=o+1024+(w+96<<3)|0)>>2]^g,a[d+4>>2]^t,32),h=0|l(),h=0|Pt((t=0|Ct(g,t,x=0|Pt((U=0|Ct(0|a[(U=o+1024+(w+64<<3)|0)>>2],0|a[U+4>>2],d,h))^T,(f=0|l())^x,24),T=0|l()))^d,(g=0|l())^h,16),d=0|l(),a[(A=o+1024+(w+96<<3)|0)>>2]=h,a[A+4>>2]=d,f=0|Ct(U,f,h,d),U=0|l(),a[(A=o+1024+(w+64<<3)|0)>>2]=f,a[A+4>>2]=U,T=0|Pt(f^x,U^T,63),x=0|l(),a[(A=o+1024+(w+32<<3)|0)>>2]=T,a[A+4>>2]=x,I=0|a[(A=o+1024+(w+33<<3)|0)>>2],A=0|a[A+4>>2],p=0|Ct(0|a[o+1024+((1|w)<<3)>>2],0|a[o+1024+((1|w)<<3)+4>>2],I,A),u=0|l(),F=0|Pt(a[(F=o+1024+(w+97<<3)|0)>>2]^p,a[F+4>>2]^u,32),v=0|l(),V=0|Ct(R=0|Ct(0|a[(R=o+1024+(w+65<<3)|0)>>2],0|a[R+4>>2],F,v),V=0|l(),v=0|Pt((u=0|Ct(p,u,A=0|Pt(R^I,V^A,24),I=0|l()))^F,(p=0|l())^v,16),F=0|l()),R=0|l(),a[(G=o+1024+(w+65<<3)|0)>>2]=V,a[G+4>>2]=R,I=0|Pt(V^A,R^I,63),A=0|l(),G=o+1024+(w+16<<3)|0,Q=0|a[(y=o+1024+(w+48<<3)|0)>>2],y=0|a[y+4>>2],G=0|Ct(0|a[G>>2],0|a[G+4>>2],Q,y),m=0|l(),W=0|Pt(a[(W=o+1024+(w+112<<3)|0)>>2]^G,a[W+4>>2]^m,32),N=0|l(),Q=0|Pt((s=0|Ct(c=0|Ct(0|a[(c=o+1024+(w+80<<3)|0)>>2],0|a[c+4>>2],W,N),s=0|l(),N=0|Pt((m=0|Ct(G,m,y=0|Pt(c^Q,s^y,24),Q=0|l()))^W,(G=0|l())^N,16),W=0|l()))^y,(c=0|l())^Q,63),y=0|l(),O=o+1024+(w+17<<3)|0,E=0|a[(Z=o+1024+(w+49<<3)|0)>>2],Z=0|a[Z+4>>2],O=0|Ct(0|a[O>>2],0|a[O+4>>2],E,Z),X=0|l(),i=0|Pt(a[(i=o+1024+(w+113<<3)|0)>>2]^O,a[i+4>>2]^X,32),B=0|l(),E=0|Pt((b=0|Ct(_=0|Ct(0|a[(_=o+1024+(w+81<<3)|0)>>2],0|a[_+4>>2],i,B),b=0|l(),B=0|Pt((X=0|Ct(O,X,Z=0|Pt(_^E,b^Z,24),E=0|l()))^i,(O=0|l())^B,16),i=0|l()))^Z,(_=0|l())^E,63),Z=0|l(),t=0|Ct(g=0|Ct(t,g,I,A),t=0|l(),A=0|Pt((c=0|Ct(s,c,i=0|Pt(g^B,t^i,32),B=0|l()))^I,(s=0|l())^A,24),I=0|l()),g=0|l(),a[o+1024+(w<<3)>>2]=t,a[o+1024+(w<<3)+4>>2]=g,B=0|Pt(t^i,g^B,16),g=0|l(),a[(i=o+1024+(w+113<<3)|0)>>2]=B,a[i+4>>2]=g,g=0|Ct(c,s,B,g),B=0|l(),a[(s=o+1024+(w+80<<3)|0)>>2]=g,a[s+4>>2]=B,I=0|Pt(g^A,B^I,63),B=0|l(),a[(A=o+1024+(w+33<<3)|0)>>2]=I,a[A+4>>2]=B,u=0|Ct(p=0|Ct(u,p,Q,y),u=0|l(),y=0|Pt((_=0|Ct(b,_,d=0|Pt(p^h,u^d,32),h=0|l()))^Q,(b=0|l())^y,24),Q=0|l()),p=0|l(),a[o+1024+((1|w)<<3)>>2]=u,a[o+1024+((1|w)<<3)+4>>2]=p,h=0|Pt(u^d,p^h,16),p=0|l(),a[(d=o+1024+(w+96<<3)|0)>>2]=h,a[d+4>>2]=p,p=0|Ct(_,b,h,p),h=0|l(),a[(b=o+1024+(w+81<<3)|0)>>2]=p,a[b+4>>2]=h,Q=0|Pt(p^y,h^Q,63),h=0|l(),a[(y=o+1024+(w+48<<3)|0)>>2]=Q,a[y+4>>2]=h,m=0|Ct(G=0|Ct(m,G,E,Z),m=0|l(),Z=0|Pt((U=0|Ct(f,U,F=0|Pt(G^v,m^F,32),v=0|l()))^E,(f=0|l())^Z,24),E=0|l()),G=0|l(),a[(y=o+1024+(w+16<<3)|0)>>2]=m,a[y+4>>2]=G,v=0|Pt(m^F,G^v,16),G=0|l(),a[(F=o+1024+(w+97<<3)|0)>>2]=v,a[F+4>>2]=G,G=0|Ct(U,f,v,G),v=0|l(),a[(f=o+1024+(w+64<<3)|0)>>2]=G,a[f+4>>2]=v,E=0|Pt(G^Z,v^E,63),v=0|l(),a[(Z=o+1024+(w+49<<3)|0)>>2]=E,a[Z+4>>2]=v,X=0|Ct(O=0|Ct(X,O,T,x),X=0|l(),x=0|Pt((R=0|Ct(V,R,W=0|Pt(O^N,X^W,32),N=0|l()))^T,(V=0|l())^x,24),T=0|l()),O=0|l(),a[(Z=o+1024+(w+17<<3)|0)>>2]=X,a[Z+4>>2]=O,N=0|Pt(X^W,O^N,16),O=0|l(),a[(W=o+1024+(w+112<<3)|0)>>2]=N,a[W+4>>2]=O,O=0|Ct(R,V,N,O),N=0|l(),a[(V=o+1024+(w+65<<3)|0)>>2]=O,a[V+4>>2]=N,T=0|Pt(O^x,N^T,63),N=0|l(),a[(w=o+1024+(w+32<<3)|0)>>2]=T,a[w+4>>2]=N,e=e+1|0}while(8!=(0|e));gr(n,o),ft(n,o+1024|0),C=r}function f(e,t){e|=0;var n,r,o,i,c,s,g,I,B,A,u,d,_,C,b,p,Q,h,y,m,F,U,f,G,E,v,Z,X,W,R,V,O,x,T,N,w,k,Y,S,H,D,J,P,M,L,z,j,K,q,$,ee=0,te=0,ne=0,re=0,ae=0,oe=0,ie=0,ce=0,se=0,le=0,ge=0,Ie=0,Be=0,Ae=0,ue=0,de=0,_e=0,Ce=0,be=0,pe=0,Qe=0,he=0,ye=0,me=0,Fe=0,Ue=0,fe=0,Ge=0,Ee=0,ve=0,Ze=0,Xe=0,We=0,Re=0,Ve=0,Oe=0,xe=0,Te=0,Ne=0,we=0,ke=0,Ye=0,Se=0,He=0,De=0,Je=0,Pe=0,Me=0,Le=0,ze=0,je=0,Ke=0,qe=0,$e=0,et=0,tt=0,nt=0,rt=0,at=0;ue=0|a[(t|=0)>>2],ee=0|a[t+4>>2],ie=0|a[t+8>>2],oe=0|a[t+12>>2],Xe=0|a[t+16>>2],Be=0|a[t+20>>2],Pe=0|a[t+24>>2],te=0|a[t+28>>2],Ge=0|a[t+32>>2],he=0|a[t+36>>2],K=0|$t(0|ue,((0|ue)<0)<<31>>31|0,0|ue,((0|ue)<0)<<31>>31|0),at=0|l(),T=0|$t(ue<<1|0,0|(de=((ue<<1|0)<0)<<31>>31),0|ee,((0|ee)<0)<<31>>31|0),qe=0|l(),M=0|$t(0|ie,((0|ie)<0)<<31>>31|0,ue<<1|0,0|de),P=0|l(),J=0|$t(0|oe,((0|oe)<0)<<31>>31|0,ue<<1|0,0|de),D=0|l(),k=0|$t(0|Xe,((0|Xe)<0)<<31>>31|0,ue<<1|0,0|de),$e=0|l(),X=0|$t(0|Be,((0|Be)<0)<<31>>31|0,ue<<1|0,0|de),Le=0|l(),y=0|$t(0|Pe,((0|Pe)<0)<<31>>31|0,ue<<1|0,0|de),Ne=0|l(),d=0|$t(0|te,((0|te)<0)<<31>>31|0,ue<<1|0,0|de),Ee=0|l(),s=0|$t(0|Ge,((0|Ge)<0)<<31>>31|0,ue<<1|0,0|de),ye=0|l(),de=0|$t(0|he,((0|he)<0)<<31>>31|0,ue<<1|0,0|de),ue=0|l(),De=0|$t(ee<<1|0,0|(se=((ee<<1|0)<0)<<31>>31),0|ee,((0|ee)<0)<<31>>31|0),Je=0|l(),Ve=0|$t(ee<<1|0,0|se,0|ie,((0|ie)<0)<<31>>31|0),Oe=0|l(),H=0|$t(oe<<1|0,0|(Ae=((oe<<1|0)<0)<<31>>31),ee<<1|0,0|se),S=0|l(),V=0|$t(0|Xe,((0|Xe)<0)<<31>>31|0,ee<<1|0,0|se),R=0|l(),m=0|$t(Be<<1|0,((Be<<1|0)<0)<<31>>31|0,ee<<1|0,0|se),we=0|l(),_=0|$t(0|Pe,((0|Pe)<0)<<31>>31|0,ee<<1|0,0|se),ve=0|l(),g=0|$t(te<<1|0,((te<<1|0)<0)<<31>>31|0,ee<<1|0,0|se),me=0|l(),n=0|$t(0|Ge,((0|Ge)<0)<<31>>31|0,ee<<1|0,0|se),_e=0|l(),se=0|$t(38*he|0,0|(Qe=((38*he|0)<0)<<31>>31),ee<<1|0,0|se),ee=0|l(),Y=0|$t(0|ie,((0|ie)<0)<<31>>31|0,0|ie,((0|ie)<0)<<31>>31|0),et=0|l(),W=0|$t(ie<<1|0,((ie<<1|0)<0)<<31>>31|0,0|oe,((0|oe)<0)<<31>>31|0),ze=0|l(),F=0|$t(0|Xe,((0|Xe)<0)<<31>>31|0,ie<<1|0,((ie<<1|0)<0)<<31>>31|0),ke=0|l(),p=0|$t(0|Be,((0|Be)<0)<<31>>31|0,ie<<1|0,((ie<<1|0)<0)<<31>>31|0),b=0|l(),u=0|$t(0|Pe,((0|Pe)<0)<<31>>31|0,ie<<1|0,((ie<<1|0)<0)<<31>>31|0),A=0|l(),r=0|$t(0|te,((0|te)<0)<<31>>31|0,ie<<1|0,((ie<<1|0)<0)<<31>>31|0),Ce=0|l(),L=0|$t(19*Ge|0,0|(Te=((19*Ge|0)<0)<<31>>31),ie<<1|0,((ie<<1|0)<0)<<31>>31|0),tt=0|l(),ie=0|$t(38*he|0,0|Qe,0|ie,((0|ie)<0)<<31>>31|0),ce=0|l(),f=0|$t(oe<<1|0,0|Ae,0|oe,((0|oe)<0)<<31>>31|0),U=0|l(),C=0|$t(oe<<1|0,0|Ae,0|Xe,((0|Xe)<0)<<31>>31|0),Ze=0|l(),I=0|$t(Be<<1|0,((Be<<1|0)<0)<<31>>31|0,oe<<1|0,0|Ae),Fe=0|l(),c=0|$t(0|Pe,((0|Pe)<0)<<31>>31|0,oe<<1|0,0|Ae),i=0|l(),z=0|$t(38*te|0,0|(pe=((38*te|0)<0)<<31>>31),oe<<1|0,0|Ae),nt=0|l(),O=0|$t(19*Ge|0,0|Te,oe<<1|0,0|Ae),je=0|l(),Ae=0|$t(38*he|0,0|Qe,oe<<1|0,0|Ae),oe=0|l(),B=0|$t(0|Xe,((0|Xe)<0)<<31>>31|0,0|Xe,((0|Xe)<0)<<31>>31|0),Ue=0|l(),o=0|$t(Xe<<1|0,((Xe<<1|0)<0)<<31>>31|0,0|Be,((0|Be)<0)<<31>>31|0),be=0|l(),j=0|$t(19*Pe|0,((19*Pe|0)<0)<<31>>31|0,Xe<<1|0,((Xe<<1|0)<0)<<31>>31|0),rt=0|l(),x=0|$t(38*te|0,0|pe,0|Xe,((0|Xe)<0)<<31>>31|0),Ke=0|l(),G=0|$t(19*Ge|0,0|Te,Xe<<1|0,((Xe<<1|0)<0)<<31>>31|0),Ye=0|l(),Xe=0|$t(38*he|0,0|Qe,0|Xe,((0|Xe)<0)<<31>>31|0),re=0|l(),$=0|$t(38*Be|0,((38*Be|0)<0)<<31>>31|0,0|Be,((0|Be)<0)<<31>>31|0),q=0|l(),w=0|$t(19*Pe|0,((19*Pe|0)<0)<<31>>31|0,Be<<1|0,((Be<<1|0)<0)<<31>>31|0),N=0|l(),E=0|$t(38*te|0,0|pe,Be<<1|0,((Be<<1|0)<0)<<31>>31|0),Se=0|l(),Q=0|$t(19*Ge|0,0|Te,Be<<1|0,((Be<<1|0)<0)<<31>>31|0),We=0|l(),Be=0|$t(38*he|0,0|Qe,Be<<1|0,((Be<<1|0)<0)<<31>>31|0),ne=0|l(),v=0|$t(19*Pe|0,((19*Pe|0)<0)<<31>>31|0,0|Pe,((0|Pe)<0)<<31>>31|0),He=0|l(),h=0|$t(38*te|0,0|pe,0|Pe,((0|Pe)<0)<<31>>31|0),Re=0|l(),le=0|$t(19*Ge|0,0|Te,Pe<<1|0,((Pe<<1|0)<0)<<31>>31|0),ge=0|l(),Pe=0|$t(38*he|0,0|Qe,0|Pe,((0|Pe)<0)<<31>>31|0),ae=0|l(),pe=0|$t(38*te|0,0|pe,0|te,((0|te)<0)<<31>>31|0),Ie=0|l(),Z=0|$t(19*Ge|0,0|Te,te<<1|0,((te<<1|0)<0)<<31>>31|0),Me=0|l(),t=0|$t(38*he|0,0|Qe,te<<1|0,((te<<1|0)<0)<<31>>31|0),te=0|l(),Te=0|$t(19*Ge|0,0|Te,0|Ge,((0|Ge)<0)<<31>>31|0),xe=0|l(),Ge=0|$t(38*he|0,0|Qe,0|Ge,((0|Ge)<0)<<31>>31|0),fe=0|l(),he=0|$t(38*he|0,0|Qe,0|he,((0|he)<0)<<31>>31|0),Qe=0|l(),ee=0|vn(0|(tt=0|vn(0|(nt=0|vn(0|(rt=0|vn(0|(at=0|vn(0|$,0|q,0|K,0|at)),0|l(),0|j,0|rt)),0|l(),0|z,0|nt)),0|l(),0|L,0|tt)),0|l(),0|se,0|ee),se=0|l(),Je=0|vn(0|M,0|P,0|De,0|Je),De=0|l(),Oe=0|vn(0|J,0|D,0|Ve,0|Oe),Ve=0|l(),ne=0|vn(0|(ge=0|vn(0|(Ie=0|vn(0|($e=0|vn(0|(et=0|vn(0|H,0|S,0|Y,0|et)),0|l(),0|k,0|$e)),0|l(),0|pe,0|Ie)),0|l(),0|le,0|ge)),0|l(),0|Be,0|ne),Be=0|l(),Ie=0|tn(0|(ge=0|vn(0|ee,0|se,33554432,0)),0|(le=0|l()),26),pe=0|l(),pe=0|vn(0|(ce=0|vn(0|(je=0|vn(0|(Ke=0|vn(0|(qe=0|vn(0|w,0|N,0|T,0|qe)),0|l(),0|x,0|Ke)),0|l(),0|O,0|je)),0|l(),0|ie,0|ce)),0|l(),0|Ie,0|pe),Ie=0|l(),le=0|En(0|ee,0|se,-67108864&ge|0,0|le),ge=0|l(),ce=0|tn(0|(se=0|vn(0|ne,0|Be,33554432,0)),0|(ee=0|l()),26),ie=0|l(),ie=0|vn(0|(ae=0|vn(0|(Me=0|vn(0|(Le=0|vn(0|(ze=0|vn(0|V,0|R,0|W,0|ze)),0|l(),0|X,0|Le)),0|l(),0|Z,0|Me)),0|l(),0|Pe,0|ae)),0|l(),0|ce,0|ie),ce=0|l(),ee=0|En(0|ne,0|Be,-67108864&se|0,0|ee),se=0|l(),ne=0|tn(0|(Be=0|vn(0|pe,0|Ie,16777216,0)),0|l(),25),ae=0|l(),ae=0|vn(0|(oe=0|vn(0|(Ye=0|vn(0|(Se=0|vn(0|(He=0|vn(0|Je,0|De,0|v,0|He)),0|l(),0|E,0|Se)),0|l(),0|G,0|Ye)),0|l(),0|Ae,0|oe)),0|l(),0|ne,0|ae),ne=0|l(),Be=0|En(0|pe,0|Ie,-33554432&Be|0,0),Ie=0|l(),oe=0|tn(0|(pe=0|vn(0|ie,0|ce,16777216,0)),0|l(),25),Ae=0|l(),Ae=0|vn(0|(te=0|vn(0|(xe=0|vn(0|(Ne=0|vn(0|(we=0|vn(0|(ke=0|vn(0|f,0|U,0|F,0|ke)),0|l(),0|m,0|we)),0|l(),0|y,0|Ne)),0|l(),0|Te,0|xe)),0|l(),0|t,0|te)),0|l(),0|oe,0|Ae),oe=0|l(),pe=0|En(0|ie,0|ce,-33554432&pe|0,0),ce=0|l(),te=0|tn(0|(ie=0|vn(0|ae,0|ne,33554432,0)),0|l(),26),t=0|l(),t=0|vn(0|(re=0|vn(0|(We=0|vn(0|(Re=0|vn(0|Oe,0|Ve,0|h,0|Re)),0|l(),0|Q,0|We)),0|l(),0|Xe,0|re)),0|l(),0|te,0|t),te=0|l(),ie=0|En(0|ae,0|ne,-67108864&ie|0,0),l(),ae=0|tn(0|(ne=0|vn(0|Ae,0|oe,33554432,0)),0|l(),26),re=0|l(),re=0|vn(0|(fe=0|vn(0|(Ee=0|vn(0|(ve=0|vn(0|(Ze=0|vn(0|p,0|b,0|C,0|Ze)),0|l(),0|_,0|ve)),0|l(),0|d,0|Ee)),0|l(),0|Ge,0|fe)),0|l(),0|ae,0|re),ae=0|l(),ne=0|En(0|Ae,0|oe,-67108864&ne|0,0),l(),se=0|vn(0|(Ae=0|tn(0|(oe=0|vn(0|t,0|te,16777216,0)),0|l(),25)),0|l(),0|ee,0|se),ee=0|l(),oe=0|En(0|t,0|te,-33554432&oe|0,0),l(),t=0|tn(0|(te=0|vn(0|re,0|ae,16777216,0)),0|l(),25),Ae=0|l(),Ae=0|vn(0|(Qe=0|vn(0|(ye=0|vn(0|(me=0|vn(0|(Fe=0|vn(0|(Ue=0|vn(0|u,0|A,0|B,0|Ue)),0|l(),0|I,0|Fe)),0|l(),0|g,0|me)),0|l(),0|s,0|ye)),0|l(),0|he,0|Qe)),0|l(),0|t,0|Ae),t=0|l(),te=0|En(0|re,0|ae,-33554432&te|0,0),l(),re=0|vn(0|pe,0|ce,0|(re=0|Bn(0|(ae=0|vn(0|se,0|ee,33554432,0)),0|l(),26)),0|l()),l(),ae=0|En(0|se,0|ee,-67108864&ae|0,0),l(),se=0|tn(0|(ee=0|vn(0|Ae,0|t,33554432,0)),0|l(),26),ce=0|l(),ce=0|vn(0|(ue=0|vn(0|(_e=0|vn(0|(Ce=0|vn(0|(be=0|vn(0|c,0|i,0|o,0|be)),0|l(),0|r,0|Ce)),0|l(),0|n,0|_e)),0|l(),0|de,0|ue)),0|l(),0|se,0|ce),se=0|l(),ee=0|En(0|Ae,0|t,-67108864&ee|0,0),l(),ge=0|vn(0|(Ae=0|$t(0|(Ae=0|tn(0|(t=0|vn(0|ce,0|se,16777216,0)),0|l(),25)),0|l(),19,0)),0|l(),0|le,0|ge),le=0|l(),t=0|En(0|ce,0|se,-33554432&t|0,0),l(),ce=0|vn(0|Be,0|Ie,0|(ce=0|Bn(0|(se=0|vn(0|ge,0|le,33554432,0)),0|l(),26)),0|l()),l(),se=0|En(0|ge,0|le,-67108864&se|0,0),l(),a[e>>2]=se,a[e+4>>2]=ce,a[e+8>>2]=ie,a[e+12>>2]=oe,a[e+16>>2]=ae,a[e+20>>2]=re,a[e+24>>2]=ne,a[e+28>>2]=te,a[e+32>>2]=ee,a[e+36>>2]=t}function G(e){var t=0,n=0,r=0,o=0,i=0,c=0,s=0,l=0,g=0;if(e|=0){t=0|a[8683],g=e+-8+(-8&(n=0|a[e+-4>>2]))|0;do{if(1&n)s=e+-8|0,l=e+-8|0,e=-8&n;else{if(r=0|a[e+-8>>2],!(3&n))return;if(c=r+(-8&n)|0,(i=e+-8+(0-r)|0)>>>0<t>>>0)return;if((0|a[8684])==(0|i)){if(3!=(3&(e=0|a[g+4>>2])|0)){s=i,l=i,e=c;break}return a[8681]=c,a[g+4>>2]=-2&e,a[i+4>>2]=1|c,void(a[i+c>>2]=c)}if(r>>>0<256){if(e=0|a[i+8>>2],(0|(t=0|a[i+12>>2]))==(0|e)){a[8679]=a[8679]&~(1<<(r>>>3)),s=i,l=i,e=c;break}a[e+12>>2]=t,a[t+8>>2]=e,s=i,l=i,e=c;break}o=0|a[i+24>>2],e=0|a[i+12>>2];do{if((0|e)==(0|i)){if(e=0|a[i+16+4>>2])t=i+16+4|0;else{if(!(e=0|a[i+16>>2])){e=0;break}t=i+16|0}for(;;)if(n=0|a[(r=e+20|0)>>2])e=n,t=r;else{if(!(n=0|a[(r=e+16|0)>>2]))break;e=n,t=r}a[t>>2]=0}else l=0|a[i+8>>2],a[l+12>>2]=e,a[e+8>>2]=l}while(0);if(o){if(t=0|a[i+28>>2],(0|a[35020+(t<<2)>>2])==(0|i)){if(a[35020+(t<<2)>>2]=e,!e){a[8680]=a[8680]&~(1<<t),s=i,l=i,e=c;break}}else if(a[((0|a[o+16>>2])==(0|i)?o+16|0:o+20|0)>>2]=e,!e){s=i,l=i,e=c;break}a[e+24>>2]=o,0|(t=0|a[i+16>>2])&&(a[e+16>>2]=t,a[t+24>>2]=e),(t=0|a[i+16+4>>2])?(a[e+20>>2]=t,a[t+24>>2]=e,s=i,l=i,e=c):(s=i,l=i,e=c)}else s=i,l=i,e=c}}while(0);if(!(s>>>0>=g>>>0)&&1&(n=0|a[g+4>>2])){if(2&n)a[g+4>>2]=-2&n,a[l+4>>2]=1|e,a[s+e>>2]=e,o=e;else{if((0|a[8685])==(0|g)){if(g=(0|a[8682])+e|0,a[8682]=g,a[8685]=l,a[l+4>>2]=1|g,(0|l)!=(0|a[8684]))return;return a[8684]=0,void(a[8681]=0)}if((0|a[8684])==(0|g))return g=(0|a[8681])+e|0,a[8681]=g,a[8684]=s,a[l+4>>2]=1|g,void(a[s+g>>2]=g);o=(-8&n)+e|0;do{if(n>>>0<256){if(t=0|a[g+8>>2],(0|(e=0|a[g+12>>2]))==(0|t)){a[8679]=a[8679]&~(1<<(n>>>3));break}a[t+12>>2]=e,a[e+8>>2]=t;break}i=0|a[g+24>>2],e=0|a[g+12>>2];do{if((0|e)==(0|g)){if(e=0|a[g+16+4>>2])t=g+16+4|0;else{if(!(e=0|a[g+16>>2])){t=0;break}t=g+16|0}for(;;)if(n=0|a[(r=e+20|0)>>2])e=n,t=r;else{if(!(n=0|a[(r=e+16|0)>>2]))break;e=n,t=r}a[t>>2]=0,t=e}else t=0|a[g+8>>2],a[t+12>>2]=e,a[e+8>>2]=t,t=e}while(0);if(0|i){if(e=0|a[g+28>>2],(0|a[35020+(e<<2)>>2])==(0|g)){if(a[35020+(e<<2)>>2]=t,!t){a[8680]=a[8680]&~(1<<e);break}}else if(a[((0|a[i+16>>2])==(0|g)?i+16|0:i+20|0)>>2]=t,!t)break;a[t+24>>2]=i,0|(e=0|a[g+16>>2])&&(a[t+16>>2]=e,a[e+24>>2]=t),0|(e=0|a[g+16+4>>2])&&(a[t+20>>2]=e,a[e+24>>2]=t)}}while(0);if(a[l+4>>2]=1|o,a[s+o>>2]=o,(0|l)==(0|a[8684]))return void(a[8681]=o)}if(n=o>>>3,o>>>0<256)return(e=0|a[8679])&1<<n?(e=34756+(n<<1<<2)+8|0,t=0|a[34756+(n<<1<<2)+8>>2]):(a[8679]=e|1<<n,e=34756+(n<<1<<2)+8|0,t=34756+(n<<1<<2)|0),a[e>>2]=l,a[t+12>>2]=l,a[l+8>>2]=t,void(a[l+12>>2]=34756+(n<<1<<2));t=35020+((r=(e=o>>>8)?o>>>0>16777215?31:o>>>(7+(r=14-((520192+(e<<((e+1048320|0)>>>16&8))|0)>>>16&4|(e+1048320|0)>>>16&8|(245760+(r=e<<((e+1048320|0)>>>16&8)<<((520192+(e<<((e+1048320|0)>>>16&8))|0)>>>16&4))|0)>>>16&2)+(r<<((r+245760|0)>>>16&2)>>>15)|0)|0)&1|r<<1:0)<<2)|0,a[l+28>>2]=r,a[l+20>>2]=0,a[l+16>>2]=0,e=0|a[8680],n=1<<r;e:do{if(e&n){e=0|a[t>>2];t:do{if((-8&a[e+4>>2]|0)!=(0|o)){for(r=o<<(31==(0|r)?0:25-(r>>>1)|0);t=0|a[(n=e+16+(r>>>31<<2)|0)>>2];){if((-8&a[t+4>>2]|0)==(0|o)){e=t;break t}r<<=1,e=t}a[n>>2]=l,a[l+24>>2]=e,a[l+12>>2]=l,a[l+8>>2]=l;break e}}while(0);g=0|a[(s=e+8|0)>>2],a[g+12>>2]=l,a[s>>2]=l,a[l+8>>2]=g,a[l+12>>2]=e,a[l+24>>2]=0}else a[8680]=e|n,a[t>>2]=l,a[l+24>>2]=t,a[l+12>>2]=l,a[l+8>>2]=l}while(0);if(g=(0|a[8687])-1|0,a[8687]=g,!(0|g)){for(e=35172;e=0|a[e>>2];)e=e+8|0;a[8687]=-1}}}}function E(e,t){t|=0;var n=0,r=0,o=0,i=0,c=0,s=0,l=0;n=0|a[4+(e|=0)>>2];do{if(1&n)l=e,n=t;else{if(s=0|a[e>>2],!(3&n))return;if((0|a[8684])==(e+(0-s)|0)){if(3!=(3&(n=0|a[e+t+4>>2])|0)){l=e+(0-s)|0,n=s+t|0;break}return a[8681]=s+t,a[e+t+4>>2]=-2&n,a[e+(0-s)+4>>2]=s+t|1,void(a[e+t>>2]=s+t)}if(s>>>0<256){if(n=0|a[e+(0-s)+8>>2],(0|(r=0|a[e+(0-s)+12>>2]))==(0|n)){a[8679]=a[8679]&~(1<<(s>>>3)),l=e+(0-s)|0,n=s+t|0;break}a[n+12>>2]=r,a[r+8>>2]=n,l=e+(0-s)|0,n=s+t|0;break}c=0|a[e+(0-s)+24>>2],n=0|a[e+(0-s)+12>>2];do{if((0|n)==(e+(0-s)|0)){if(n=0|a[4+(r=e+(0-s)+16|0)>>2])r=r+4|0;else if(!(n=0|a[r>>2])){r=0;break}for(;;)if(o=0|a[(i=n+20|0)>>2])n=o,r=i;else{if(!(o=0|a[(i=n+16|0)>>2]))break;n=o,r=i}a[r>>2]=0,r=n}else r=0|a[e+(0-s)+8>>2],a[r+12>>2]=n,a[n+8>>2]=r,r=n}while(0);if(c){if(n=0|a[e+(0-s)+28>>2],(0|a[35020+(n<<2)>>2])==(e+(0-s)|0)){if(a[35020+(n<<2)>>2]=r,!r){a[8680]=a[8680]&~(1<<n),l=e+(0-s)|0,n=s+t|0;break}}else if(a[((0|a[c+16>>2])==(e+(0-s)|0)?c+16|0:c+20|0)>>2]=r,!r){l=e+(0-s)|0,n=s+t|0;break}a[r+24>>2]=c,0|(n=0|a[e+(0-s)+16>>2])&&(a[r+16>>2]=n,a[n+24>>2]=r),(n=0|a[e+(0-s)+16+4>>2])?(a[r+20>>2]=n,a[n+24>>2]=r,l=e+(0-s)|0,n=s+t|0):(l=e+(0-s)|0,n=s+t|0)}else l=e+(0-s)|0,n=s+t|0}}while(0);if(2&(o=0|a[e+t+4>>2]))a[e+t+4>>2]=-2&o,a[l+4>>2]=1|n,a[l+n>>2]=n,c=n;else{if((0|a[8685])==(e+t|0)){if(t=(0|a[8682])+n|0,a[8682]=t,a[8685]=l,a[l+4>>2]=1|t,(0|l)!=(0|a[8684]))return;return a[8684]=0,void(a[8681]=0)}if((0|a[8684])==(e+t|0))return t=(0|a[8681])+n|0,a[8681]=t,a[8684]=l,a[l+4>>2]=1|t,void(a[l+t>>2]=t);c=(-8&o)+n|0;do{if(o>>>0<256){if(r=0|a[e+t+8>>2],(0|(n=0|a[e+t+12>>2]))==(0|r)){a[8679]=a[8679]&~(1<<(o>>>3));break}a[r+12>>2]=n,a[n+8>>2]=r;break}s=0|a[e+t+24>>2],n=0|a[e+t+12>>2];do{if((0|n)==(e+t|0)){if(n=0|a[e+t+16+4>>2])r=e+t+16+4|0;else{if(!(n=0|a[e+t+16>>2])){r=0;break}r=e+t+16|0}for(;;)if(o=0|a[(i=n+20|0)>>2])n=o,r=i;else{if(!(o=0|a[(i=n+16|0)>>2]))break;n=o,r=i}a[r>>2]=0,r=n}else r=0|a[e+t+8>>2],a[r+12>>2]=n,a[n+8>>2]=r,r=n}while(0);if(0|s){if(n=0|a[e+t+28>>2],(0|a[35020+(n<<2)>>2])==(e+t|0)){if(a[35020+(n<<2)>>2]=r,!r){a[8680]=a[8680]&~(1<<n);break}}else if(a[((0|a[s+16>>2])==(e+t|0)?s+16|0:s+20|0)>>2]=r,!r)break;a[r+24>>2]=s,0|(n=0|a[e+t+16>>2])&&(a[r+16>>2]=n,a[n+24>>2]=r),0|(n=0|a[e+t+16+4>>2])&&(a[r+20>>2]=n,a[n+24>>2]=r)}}while(0);if(a[l+4>>2]=1|c,a[l+c>>2]=c,(0|l)==(0|a[8684]))return void(a[8681]=c)}if(o=c>>>3,c>>>0<256)return(n=0|a[8679])&1<<o?(n=34756+(o<<1<<2)+8|0,r=0|a[34756+(o<<1<<2)+8>>2]):(a[8679]=n|1<<o,n=34756+(o<<1<<2)+8|0,r=34756+(o<<1<<2)|0),a[n>>2]=l,a[r+12>>2]=l,a[l+8>>2]=r,void(a[l+12>>2]=34756+(o<<1<<2));if(r=35020+((i=(n=c>>>8)?c>>>0>16777215?31:c>>>(7+(i=14-((520192+(n<<((n+1048320|0)>>>16&8))|0)>>>16&4|(n+1048320|0)>>>16&8|(245760+(i=n<<((n+1048320|0)>>>16&8)<<((520192+(n<<((n+1048320|0)>>>16&8))|0)>>>16&4))|0)>>>16&2)+(i<<((i+245760|0)>>>16&2)>>>15)|0)|0)&1|i<<1:0)<<2)|0,a[l+28>>2]=i,a[l+20>>2]=0,a[l+16>>2]=0,!((n=0|a[8680])&(o=1<<i)))return a[8680]=n|o,a[r>>2]=l,a[l+24>>2]=r,a[l+12>>2]=l,void(a[l+8>>2]=l);n=0|a[r>>2];e:do{if((-8&a[n+4>>2]|0)!=(0|c)){for(i=c<<(31==(0|i)?0:25-(i>>>1)|0);r=0|a[(o=n+16+(i>>>31<<2)|0)>>2];){if((-8&a[r+4>>2]|0)==(0|c)){n=r;break e}i<<=1,n=r}return a[o>>2]=l,a[l+24>>2]=n,a[l+12>>2]=l,void(a[l+8>>2]=l)}}while(0);t=0|a[(e=n+8|0)>>2],a[t+12>>2]=l,a[e>>2]=l,a[l+8>>2]=t,a[l+12>>2]=n,a[l+24>>2]=0}function v(e,t,n,o,i){e|=0,t|=0,n|=0;var c,s,g=0,I=0,B=0,A=0,u=0,d=0,_=0,b=0,p=0,Q=0,h=0,y=0,m=0,F=0,U=0,f=0,G=0,E=0,v=0,Z=0,X=0,W=0,R=0,V=0,O=0,x=0,T=0,N=0,w=0,k=0,Y=0,S=0,H=0,D=0,J=0,P=0,M=0,L=0,z=0,j=0,K=0,q=0,$=0,ee=0,te=0,ne=0,re=0,ae=0,oe=0,ie=0,ce=0,se=0,le=0,ge=0,Ie=0,Be=0,Ae=0;if(s=C,c=C=C+63&-64,C=C+64|0,!(0==(0|(o|=0))&0==(0|(i|=0)))){for(Y=0|a[e>>2],S=0|a[e+4>>2],H=0|a[e+8>>2],D=0|a[e+12>>2],J=0|a[e+16>>2],W=0|a[e+20>>2],R=0|a[e+24>>2],V=0|a[e+28>>2],O=0|a[e+32>>2],x=0|a[e+36>>2],T=0|a[e+40>>2],N=0|a[e+44>>2],w=0|a[e+56>>2],k=0|a[e+60>>2],I=0,Z=0|a[e+48>>2],X=0|a[e+52>>2],B=t;;){if(v=i>>>0<0|0==(0|i)&o>>>0<64){g=(t=c)+64|0;do{a[t>>2]=0,t=t+4|0}while((0|t)<(0|g));t=0;do{r[c+t>>0]=0|r[B+t>>0],t=t+1|0}while(i>>>0>0|0==(0|i)&o>>>0>t>>>0);E=c,I=n,B=c}else E=n;n=20,t=Y,g=S,A=T,u=N,d=Z,_=X,b=w,p=k,Q=H,h=D,y=J,m=W,F=R,U=V,f=O,G=x;do{j=0|Ir((ee=0|Ir((Be=0|Ir(($=(ee=0|Ir((Ie=t+y|0)^d,16))+f|0)^y,12))+Ie^ee,8))+$^Be,7),Ae=0|Ir((L=0|Ir((se=0|Ir((M=(L=0|Ir((ce=g+m|0)^_,16))+G|0)^m,12))+ce^L,8))+M^se,7),le=0|Ir((z=0|Ir((re=0|Ir((te=(z=0|Ir((ne=Q+F|0)^b,16))+A|0)^F,12))+ne^z,8))+te^re,7),ae=0|Ir((oe=0|Ir((q=0|Ir((P=(oe=0|Ir((K=h+U|0)^p,16))+u|0)^U,12))+K^oe,8))+P^q,7),m=0|Ir((A=(p=0|Ir((t=(ie=0|Ir((ge=0|Ir(oe^Ae+(Be+Ie),16))+(z+te)^Ae,12))+(Ae+(Be+Ie))|0)^ge,8))+(ge+(z+te))|0)^ie,7),F=0|Ir((u=(d=0|Ir((g=(te=0|Ir((ie=0|Ir(le+(se+ce)^ee,16))+(oe+P)^le,12))+(le+(se+ce))|0)^ie,8))+(ie+(oe+P))|0)^te,7),U=0|Ir((f=(_=0|Ir((Q=(P=0|Ir((te=0|Ir(ae+(re+ne)^L,16))+(ee+$)^ae,12))+(ae+(re+ne))|0)^te,8))+(te+(ee+$))|0)^P,7),y=0|Ir((G=(b=0|Ir((h=(P=0|Ir((z=0|Ir(q+K+j^z,16))+(L+M)^j,12))+(q+K+j)|0)^z,8))+(z+(L+M))|0)^P,7),n=n+-2|0}while(0!=(0|n));if(q=(0|Hn(B))^t+Y,$=(0|Hn(B+4|0))^g+S,ee=(0|Hn(B+8|0))^Q+H,te=(0|Hn(B+12|0))^h+D,ne=(0|Hn(B+16|0))^y+J,re=(0|Hn(B+20|0))^m+W,ae=(0|Hn(B+24|0))^F+R,oe=(0|Hn(B+28|0))^U+V,ie=(0|Hn(B+32|0))^f+O,ce=(0|Hn(B+36|0))^G+x,se=(0|Hn(B+40|0))^A+T,le=(0|Hn(B+44|0))^u+N,ge=(0|Hn(B+48|0))^d+Z,Ie=(0|Hn(B+52|0))^_+X,Be=(0|Hn(B+56|0))^b+w,Ae=(0|Hn(B+60|0))^p+k,g=X+(0==(0|(t=Z+1|0))&1)|0,Wn(E,q),Wn(E+4|0,$),Wn(E+8|0,ee),Wn(E+12|0,te),Wn(E+16|0,ne),Wn(E+20|0,re),Wn(E+24|0,ae),Wn(E+28|0,oe),Wn(E+32|0,ie),Wn(E+36|0,ce),Wn(E+40|0,se),Wn(E+44|0,le),Wn(E+48|0,ge),Wn(E+52|0,Ie),Wn(E+56|0,Be),Wn(E+60|0,Ae),i>>>0<0|0==(0|i)&o>>>0<65)break;n=0|vn(0|o,0|i,-64,-1),i=0|l(),o=n,n=E+64|0,Z=t,X=g,B=B+64|0}if(v&&0|o){i=0;do{r[I+i>>0]=0|r[E+i>>0],i=i+1|0}while((0|i)!=(0|o))}a[e+48>>2]=t,a[e+52>>2]=g}C=s}function Z(e,t,n,o){t|=0,n|=0,o|=0;var i,c,s,g,I,B=0,A=0,u=0,d=0,_=0,C=0,b=0,p=0,Q=0,h=0,y=0,m=0,F=0,U=0,f=0;if(I=0==(0|r[80+(e|=0)>>0])?16777216:0,i=0|a[e+4>>2],c=0|a[e+8>>2],s=0|a[e+12>>2],g=0|a[e+16>>2],_=0|a[e+20>>2],d=0|a[e+24>>2],u=0|a[e+28>>2],A=0|a[e+32>>2],B=0|a[e+36>>2],o>>>0>0|0==(0|o)&n>>>0>15)for(Q=0|a[e>>2];;){if(U=(67108863&(0|Hn(t)))+_|0,f=((0|Hn(t+3|0))>>>2&67108863)+d|0,F=((0|Hn(t+6|0))>>>4&67108863)+u|0,m=((0|Hn(t+9|0))>>>6)+A|0,_=((0|Hn(t+12|0))>>>8|I)+B|0,B=0|$t(0|U,0,0|Q,0),C=0|l(),u=0|vn(0|(C=0|vn(0|(u=0|vn(0|(C=0|vn(0|(u=0|$t(0|f,0,5*g|0,0)),0|l(),0|B,0|C)),0|(B=0|l()),0|(u=0|$t(0|F,0,5*s|0,0)),0|l())),0|(B=0|l()),0|(C=0|$t(0|m,0,5*c|0,0)),0|l())),0|(B=0|l()),0|(u=0|$t(0|_,0,5*i|0,0)),0|l()),B=0|l(),C=0|$t(0|U,0,0|i,0),b=0|l(),y=0|vn(0|(b=0|vn(0|(y=0|vn(0|(b=0|vn(0|(y=0|$t(0|f,0,0|Q,0)),0|l(),0|C,0|b)),0|(C=0|l()),0|(y=0|$t(0|F,0,5*g|0,0)),0|l())),0|(C=0|l()),0|(b=0|$t(0|m,0,5*s|0,0)),0|l())),0|(C=0|l()),0|(y=0|$t(0|_,0,5*c|0,0)),0|l()),C=0|l(),b=0|$t(0|U,0,0|c,0),p=0|l(),h=0|vn(0|(p=0|vn(0|(h=0|vn(0|(p=0|vn(0|(h=0|$t(0|f,0,0|i,0)),0|l(),0|b,0|p)),0|(b=0|l()),0|(h=0|$t(0|F,0,0|Q,0)),0|l())),0|(b=0|l()),0|(p=0|$t(0|m,0,5*g|0,0)),0|l())),0|(b=0|l()),0|(h=0|$t(0|_,0,5*s|0,0)),0|l()),b=0|l(),p=0|$t(0|U,0,0|s,0),A=0|l(),d=0|vn(0|(A=0|vn(0|(d=0|vn(0|(A=0|vn(0|(d=0|$t(0|f,0,0|c,0)),0|l(),0|p,0|A)),0|(p=0|l()),0|(d=0|$t(0|F,0,0|i,0)),0|l())),0|(p=0|l()),0|(A=0|$t(0|m,0,0|Q,0)),0|l())),0|(p=0|l()),0|(d=0|$t(0|_,0,5*g|0,0)),0|l()),p=0|l(),A=0|$t(0|U,0,0|g,0),U=0|l(),_=0|vn(0|(m=0|vn(0|(F=0|vn(0|(U=0|vn(0|(f=0|$t(0|f,0,0|s,0)),0|l(),0|A,0|U)),0|(A=0|l()),0|(F=0|$t(0|F,0,0|c,0)),0|l())),0|(A=0|l()),0|(m=0|$t(0|m,0,0|i,0)),0|l())),0|(A=0|l()),0|(_=0|$t(0|_,0,0|Q,0)),0|l()),A=0|l(),B=0|Bn(0|u,0|B,26),l(),C=0|Bn(0|(B=0|vn(0|y,0|C,0|B,0)),0|l(),26),l(),b=0|Bn(0|(C=0|vn(0|h,0|b,0|C,0)),0|l(),26),l(),p=0|Bn(0|(b=0|vn(0|d,0|p,0|b,0)),0|l(),26),l(),A=0|Bn(0|(p=0|vn(0|_,0|A,0|p,0)),0|l(),26),l(),n=0|vn(0|n,0|o,-16,-1),!((o=0|l())>>>0>0|0==(0|o)&n>>>0>15)){n=(5*A|0)+(67108863&u)&67108863,d=(((5*A|0)+(67108863&u)|0)>>>26)+(67108863&B)|0,u=67108863&C,A=67108863&b,B=67108863&p;break}_=(5*A|0)+(67108863&u)&67108863,d=(((5*A|0)+(67108863&u)|0)>>>26)+(67108863&B)|0,u=67108863&C,A=67108863&b,B=67108863&p,t=t+16|0}else n=_;a[e+20>>2]=n,a[e+24>>2]=d,a[e+28>>2]=u,a[e+32>>2]=A,a[e+36>>2]=B}function X(e,t){e|=0;var n=0,o=0,i=0,c=0,s=0,g=0,I=0,B=0,A=0,u=0,d=0,_=0,C=0,b=0,p=0,Q=0,h=0,y=0,m=0,F=0,U=0;I=0|pt(t|=0),g=0|l(),m=0|sn(0|(m=0|Kt(0|r[t+4>>0],0|r[t+5>>0],0|r[t+6>>0])),0|l(),6),F=0|l(),s=0|sn(0|(s=0|Kt(0|r[t+7>>0],0|r[t+8>>0],0|r[t+9>>0])),0|l(),5),c=0|l(),h=0|sn(0|(h=0|Kt(0|r[t+10>>0],0|r[t+11>>0],0|r[t+12>>0])),0|l(),3),y=0|l(),i=0|sn(0|(i=0|Kt(0|r[t+13>>0],0|r[t+14>>0],0|r[t+15>>0])),0|l(),2),o=0|l(),p=0|pt(t+16|0),Q=0|l(),B=0|sn(0|(B=0|Kt(0|r[t+20>>0],0|r[t+21>>0],0|r[t+22>>0])),0|l(),7),n=0|l(),A=0|sn(0|(A=0|Kt(0|r[t+23>>0],0|r[t+24>>0],0|r[t+25>>0])),0|l(),5),b=0|l(),u=0|sn(0|(u=0|Kt(0|r[t+26>>0],0|r[t+27>>0],0|r[t+28>>0])),0|l(),4),d=0|l(),_=0|sn(0|(_=0|Kt(0|r[t+29>>0],0|r[t+30>>0],0|r[t+31>>0])),0|l(),2),l(),U=0|En(0,0,0|(U=0|Bn(0|(C=0|vn(33554428&_|0,0,16777216,0)),0|l(),25)),0|l()),l(),g=0|vn(19&U|0,0,0|I,0|g),I=0|l(),C=0|En(33554428&_|0,0,33554432&C|0,0),_=0|l(),c=0|vn(0|(t=0|tn(0|(U=0|vn(0|m,0|F,16777216,0)),0|l(),25)),0|l(),0|s,0|c),s=0|l(),U=0|En(0|m,0|F,-33554432&U|0,0),F=0|l(),o=0|vn(0|(t=0|tn(0|(m=0|vn(0|h,0|y,16777216,0)),0|l(),25)),0|l(),0|i,0|o),i=0|l(),m=0|En(0|h,0|y,-33554432&m|0,0),y=0|l(),t=0|vn(0|B,0|n,0|(t=0|tn(0|(h=0|vn(0|p,0|Q,16777216,0)),0|l(),25)),0|l()),n=0|l(),h=0|En(0|p,0|Q,-33554432&h|0,0),Q=0|l(),d=0|vn(0|(B=0|tn(0|(p=0|vn(0|A,0|b,16777216,0)),0|l(),25)),0|l(),0|u,0|d),u=0|l(),p=0|En(0|A,0|b,-33554432&p|0,0),b=0|l(),B=0|vn(0|U,0|F,0|(B=0|Bn(0|(A=0|vn(0|g,0|I,33554432,0)),0|l(),26)),0|l()),l(),A=0|En(0|g,0|I,-67108864&A|0,0),l(),g=0|vn(0|m,0|y,0|(g=0|Bn(0|(I=0|vn(0|c,0|s,33554432,0)),0|l(),26)),0|l()),l(),I=0|En(0|c,0|s,-67108864&I|0,0),l(),c=0|vn(0|h,0|Q,0|(c=0|Bn(0|(s=0|vn(0|o,0|i,33554432,0)),0|l(),26)),0|l()),l(),s=0|En(0|o,0|i,-67108864&s|0,0),l(),o=0|vn(0|p,0|b,0|(o=0|Bn(0|(i=0|vn(0|t,0|n,33554432,0)),0|l(),26)),0|l()),l(),i=0|En(0|t,0|n,-67108864&i|0,0),l(),t=0|vn(0|C,0|_,0|(t=0|Bn(0|(n=0|vn(0|d,0|u,33554432,0)),0|l(),26)),0|l()),l(),n=0|En(0|d,0|u,-67108864&n|0,0),l(),a[e>>2]=A,a[e+4>>2]=B,a[e+8>>2]=I,a[e+12>>2]=g,a[e+16>>2]=s,a[e+20>>2]=c,a[e+24>>2]=i,a[e+28>>2]=o,a[e+32>>2]=n,a[e+36>>2]=t}function W(e,t){e|=0;var n=0,r=0,o=0,i=0,c=0,s=0,g=0,I=0,B=0,A=0,u=0,d=0,_=0,C=0,b=0,p=0,Q=0,h=0,y=0,m=0,F=0;g=0|a[(t|=0)>>2],y=0|a[t+4>>2],c=0|a[t+8>>2],Q=0|a[t+12>>2],o=0|a[t+16>>2],b=0|a[t+20>>2],n=0|a[t+24>>2],B=0|a[t+28>>2],A=0|a[t+32>>2],F=0|a[t+36>>2],g=0|$t(0|g,((0|g)<0)<<31>>31|0,121666,0),s=0|l(),y=0|$t(0|y,((0|y)<0)<<31>>31|0,121666,0),m=0|l(),c=0|$t(0|c,((0|c)<0)<<31>>31|0,121666,0),i=0|l(),Q=0|$t(0|Q,((0|Q)<0)<<31>>31|0,121666,0),h=0|l(),o=0|$t(0|o,((0|o)<0)<<31>>31|0,121666,0),r=0|l(),b=0|$t(0|b,((0|b)<0)<<31>>31|0,121666,0),p=0|l(),n=0|$t(0|n,((0|n)<0)<<31>>31|0,121666,0),t=0|l(),B=0|$t(0|B,((0|B)<0)<<31>>31|0,121666,0),C=0|l(),A=0|$t(0|A,((0|A)<0)<<31>>31|0,121666,0),u=0|l(),s=0|vn(0|(I=0|$t(0|(I=0|tn(0|(_=0|vn(0|(F=0|$t(0|F,((0|F)<0)<<31>>31|0,121666,0)),0|(d=0|l()),16777216,0)),0|l(),25)),0|l(),19,0)),0|l(),0|g,0|s),g=0|l(),_=0|En(0|F,0|d,-33554432&_|0,0),d=0|l(),i=0|vn(0|(I=0|tn(0|(F=0|vn(0|y,0|m,16777216,0)),0|l(),25)),0|l(),0|c,0|i),c=0|l(),F=0|En(0|y,0|m,-33554432&F|0,0),m=0|l(),r=0|vn(0|(I=0|tn(0|(y=0|vn(0|Q,0|h,16777216,0)),0|l(),25)),0|l(),0|o,0|r),o=0|l(),y=0|En(0|Q,0|h,-33554432&y|0,0),h=0|l(),t=0|vn(0|(I=0|tn(0|(Q=0|vn(0|b,0|p,16777216,0)),0|l(),25)),0|l(),0|n,0|t),n=0|l(),Q=0|En(0|b,0|p,-33554432&Q|0,0),p=0|l(),u=0|vn(0|(I=0|tn(0|(b=0|vn(0|B,0|C,16777216,0)),0|l(),25)),0|l(),0|A,0|u),A=0|l(),b=0|En(0|B,0|C,-33554432&b|0,0),C=0|l(),I=0|vn(0|F,0|m,0|(I=0|Bn(0|(B=0|vn(0|s,0|g,33554432,0)),0|l(),26)),0|l()),l(),B=0|En(0|s,0|g,-67108864&B|0,0),l(),s=0|vn(0|y,0|h,0|(s=0|Bn(0|(g=0|vn(0|i,0|c,33554432,0)),0|l(),26)),0|l()),l(),g=0|En(0|i,0|c,-67108864&g|0,0),l(),i=0|vn(0|Q,0|p,0|(i=0|Bn(0|(c=0|vn(0|r,0|o,33554432,0)),0|l(),26)),0|l()),l(),c=0|En(0|r,0|o,-67108864&c|0,0),l(),r=0|vn(0|b,0|C,0|(r=0|Bn(0|(o=0|vn(0|t,0|n,33554432,0)),0|l(),26)),0|l()),l(),o=0|En(0|t,0|n,-67108864&o|0,0),l(),t=0|vn(0|_,0|d,0|(t=0|Bn(0|(n=0|vn(0|u,0|A,33554432,0)),0|l(),26)),0|l()),l(),n=0|En(0|u,0|A,-67108864&n|0,0),l(),a[e>>2]=B,a[e+4>>2]=I,a[e+8>>2]=g,a[e+12>>2]=s,a[e+16>>2]=c,a[e+20>>2]=i,a[e+24>>2]=o,a[e+28>>2]=r,a[e+32>>2]=n,a[e+36>>2]=t}function R(e,t,n){e|=0,t|=0;var a,i,c=0,s=0,l=0;if(i=C,a=C=C+63&-64,C=C+64|0,(n|=0)<<24>>24&&(255&n)<=64){if(0|function(e,t){return 1&(0!=(0|(e|=0))|0!=(0|(t|=0)))|0}(o[e+80>>0]|o[e+80+1>>0]<<8|o[e+80+2>>0]<<16|o[e+80+3>>0]<<24,o[e+80+4>>0]|o[e+80+4+1>>0]<<8|o[e+80+4+2>>0]<<16|o[e+80+4+3>>0]<<24))c=-1;else{c=o[e+352>>0]|o[e+352+1>>0]<<8|o[e+352+2>>0]<<16|o[e+352+3>>0]<<24;do{if(c>>>0>128){if(le(e,128,0),b(e,e+96|0),c=(o[e+352>>0]|o[e+352+1>>0]<<8|o[e+352+2>>0]<<16|o[e+352+3>>0]<<24)-128|0,r[e+352>>0]=c,r[e+352+1>>0]=c>>8,r[e+352+2>>0]=c>>16,r[e+352+3>>0]=c>>24,c>>>0<129){te(e+96|0,e+224|0,0|c),s=o[e+352>>0]|o[e+352+1>>0]<<8|o[e+352+2>>0]<<16|o[e+352+3>>0]<<24,l=e+96|0;break}g(33456,33488,306,33533)}else s=c,l=e+96|0}while(0);le(e,s,0),function(e){0|r[356+(e|=0)>>0]&&function(e){r[88+(e|=0)>>0]=-1,r[e+88+1>>0]=-1,r[e+88+2>>0]=-1,r[e+88+3>>0]=-1,r[e+88+4>>0]=-1,r[e+88+4+1>>0]=-1,r[e+88+4+2>>0]=-1,r[e+88+4+3>>0]=-1}(e),r[e+80>>0]=-1,r[e+80+1>>0]=-1,r[e+80+2>>0]=-1,r[e+80+3>>0]=-1,r[e+80+4>>0]=-1,r[e+80+4+1>>0]=-1,r[e+80+4+2>>0]=-1,r[e+80+4+3>>0]=-1}(e),Ge(e+96+(c=o[e+352>>0]|o[e+352+1>>0]<<8|o[e+352+2>>0]<<16|o[e+352+3>>0]<<24)|0,0,256-c|0),b(e,l),Ot(a,o[e>>0]|o[e+1>>0]<<8|o[e+2>>0]<<16|o[e+3>>0]<<24,o[e+4>>0]|o[e+4+1>>0]<<8|o[e+4+2>>0]<<16|o[e+4+3>>0]<<24),Ot(a+8|0,o[e+8>>0]|o[e+8+1>>0]<<8|o[e+8+2>>0]<<16|o[e+8+3>>0]<<24,o[e+8+4>>0]|o[e+8+4+1>>0]<<8|o[e+8+4+2>>0]<<16|o[e+8+4+3>>0]<<24),Ot(a+16|0,o[e+16>>0]|o[e+16+1>>0]<<8|o[e+16+2>>0]<<16|o[e+16+3>>0]<<24,o[e+16+4>>0]|o[e+16+4+1>>0]<<8|o[e+16+4+2>>0]<<16|o[e+16+4+3>>0]<<24),Ot(a+24|0,o[e+24>>0]|o[e+24+1>>0]<<8|o[e+24+2>>0]<<16|o[e+24+3>>0]<<24,o[e+24+4>>0]|o[e+24+4+1>>0]<<8|o[e+24+4+2>>0]<<16|o[e+24+4+3>>0]<<24),Ot(a+32|0,o[e+32>>0]|o[e+32+1>>0]<<8|o[e+32+2>>0]<<16|o[e+32+3>>0]<<24,o[e+32+4>>0]|o[e+32+4+1>>0]<<8|o[e+32+4+2>>0]<<16|o[e+32+4+3>>0]<<24),Ot(a+40|0,o[e+40>>0]|o[e+40+1>>0]<<8|o[e+40+2>>0]<<16|o[e+40+3>>0]<<24,o[e+40+4>>0]|o[e+40+4+1>>0]<<8|o[e+40+4+2>>0]<<16|o[e+40+4+3>>0]<<24),Ot(a+48|0,o[e+48>>0]|o[e+48+1>>0]<<8|o[e+48+2>>0]<<16|o[e+48+3>>0]<<24,o[e+48+4>>0]|o[e+48+4+1>>0]<<8|o[e+48+4+2>>0]<<16|o[e+48+4+3>>0]<<24),Ot(a+56|0,o[e+56>>0]|o[e+56+1>>0]<<8|o[e+56+2>>0]<<16|o[e+56+3>>0]<<24,o[e+56+4>>0]|o[e+56+4+1>>0]<<8|o[e+56+4+2>>0]<<16|o[e+56+4+3>>0]<<24),te(0|t,0|a,255&n|0),Ut(e,64),Ut(l,256),c=0}return C=i,0|c}return Gr(),0}function V(e,t,n,o){e|=0,t|=0,n|=0;var i,c,s=0,l=0,g=0,I=0,B=0,A=0;switch(c=C,i=C=C+63&-64,C=C+16|0,0|(o|=0)){case 2:if(t>>>0<13)o=-31;else{s=33688,l=(o=e)+13|0;do{r[o>>0]=0|r[s>>0],o=o+1|0,s=s+1|0}while((0|o)<(0|l));e=e+12|0,l=t+-12|0,s=6}break;case 1:if(t>>>0<12)o=-31;else{s=33701,l=(o=e)+12|0;do{r[o>>0]=0|r[s>>0],o=o+1|0,s=s+1|0}while((0|o)<(0|l));e=e+11|0,l=t+-11|0,s=6}break;default:o=-31}do{if(6==(0|s)&&!(o=0|ce(n))){if(ot(i,19),s=e+(o=0|Le(i))|0,I=l-o|0,l>>>0<=o>>>0){o=-31;break}if(te(0|e,0|i,o+1|0),I>>>0>=4){if(r[s>>0]=36,r[s+1>>0]=109,r[s+2>>0]=61,r[s+3>>0]=0,ot(i,0|a[n+44>>2]),l=s+3+(e=0|Le(i))|0,(I+-3|0)>>>0<=e>>>0){o=-31;break}if(te(s+3|0,0|i,e+1|0),(I+-3-e|0)>>>0>=4){if(r[l>>0]=44,r[l+1>>0]=116,r[l+2>>0]=61,r[l+3>>0]=0,ot(i,0|a[n+40>>2]),t=l+3+(o=0|Le(i))|0,g=I+-3-e-3-o|0,(I+-3-e-3|0)>>>0<=o>>>0){o=-31;break}if(te(l+3|0,0|i,o+1|0),g>>>0>=4){if(r[t>>0]=44,r[t+1>>0]=112,r[t+2>>0]=61,r[t+3>>0]=0,ot(i,0|a[n+48>>2]),(g+-3|0)>>>0<=(s=0|Le(i))>>>0){o=-31;break}if(te(t+3|0,0|i,s+1|0),o=t+3+s+1|0,(g+-3-s|0)>>>0>=2&&(r[t+3+s>>0]=36,r[t+3+s+1>>0]=0,J(o,g+-3-s-1|0,0|a[n+16>>2],0|a[n+20>>2],3),(A=g+-3-s-1-(B=0|Le(o))|0)>>>0>=2))return r[o+B>>0]=36,r[o+B+1>>0]=0,J(o+B+1|0,A+-1|0,0|a[n>>2],0|a[n+4>>2],3),C=c,0;o=-31}else o=-31}else o=-31}else o=-31}}while(0);return C=c,0|o}function O(e,t,n,o){e|=0,t|=0,n|=0,o|=0;var i,c,s=0,g=0,I=0,B=0,A=0,u=0,d=0,_=0,b=0;c=C,i=C=C+63&-64,C=C+704|0;e:do{if(!(0==(0|n)&0==(0|o))){if(A=0|Bn(0|(b=0|a[e+72>>2]),0|(d=0|a[e+72+4>>2]),3),l(),u=0|sn(0|n,0|o,3),_=0|l(),I=0|Bn(0|n,0|o,61),B=0|l(),d=0|vn(0|b,0|d,0|u,0|_),b=0|l(),a[e+72>>2]=d,a[e+72+4>>2]=b,s=0|a[e+64>>2],g=0|a[e+64+4>>2],b>>>0<_>>>0|(0|b)==(0|_)&d>>>0<u>>>0&&(s=0|vn(0|s,0|g,1,0),g=0|l(),a[e+64>>2]=s,a[e+64+4>>2]=g),s=0|vn(0|s,0|g,0|I,0|B),B=0|l(),a[e+64>>2]=s,a[e+64+4>>2]=B,B=0|En(128,0,127&A|0,0),(s=0|l())>>>0>o>>>0|(0|s)==(0|o)&B>>>0>n>>>0)for(s=0,g=0;;)if(_=0|r[t+s>>0],b=0|vn(0|s,0|g,127&A|0,0),l(),r[e+80+b>>0]=_,s=0|vn(0|s,0|g,1,0),!((g=0|l())>>>0<o>>>0|(0|g)==(0|o)&s>>>0<n>>>0))break e;if(!(0==(0|B)&0==(0|s))){g=0,I=0;do{_=0|r[t+g>>0],b=0|vn(0|g,0|I,127&A|0,0),l(),r[e+80+b>>0]=_,g=0|vn(0|g,0|I,1,0),I=0|l()}while(I>>>0<s>>>0|(0|I)==(0|s)&g>>>0<B>>>0)}if(Q(e,e+80|0,i,i+640|0),s=0|En(0|n,0|o,0|B,0|s),(I=0|l())>>>0>0|0==(0|I)&s>>>0>127){g=t+B|0;do{Q(e,g,i,i+640|0),g=g+128|0,s=0|vn(0|s,0|I,-128,-1),I=0|l()}while(I>>>0>0|0==(0|I)&s>>>0>127)}else g=t+B|0;if(!(0==(0|(B=127&s))&!0)){s=0,I=0;do{r[e+80+s>>0]=0|r[g+s>>0],s=0|vn(0|s,0|I,1,0),I=0|l()}while(I>>>0<0|0==(0|I)&s>>>0<B>>>0)}Ut(i,704)}}while(0);C=c}function x(e,t,n){e|=0,t|=0;var r=0,a=0,o=0,i=0,c=0,s=0,l=0,g=0,I=0,B=0,A=0,u=0,d=0,_=0,C=0,b=0,p=0,Q=0,h=0,y=0,m=0,F=0,U=0,f=0,G=0,E=0,v=0,Z=0,X=0,W=0,R=0,V=0,O=0,x=0,T=0,N=0,w=0;a=0|Hn(n|=0),o=0|Hn(n+4|0),i=0|Hn(n+8|0),c=0|Hn(n+12|0),s=0|Hn(n+16|0),l=0|Hn(n+20|0),A=0|Hn(n+24|0),u=0|Hn(n+28|0),d=0|Hn(t),_=0|Hn(t+4|0),C=0|Hn(t+8|0),g=0,I=1634760805,B=857760878,n=0|Hn(t+12|0),t=2036477234,r=1797285236;do{y=0|Ir((f=0|Ir((N=0|Ir((U=(f=0|Ir(d^(T=a+I|0),16))+s|0)^a,12))+T^f,8))+U^N,7),w=0|Ir((Q=0|Ir((V=0|Ir((p=(Q=0|Ir(_^(R=o+B|0),16))+l|0)^o,12))+R^Q,8))+p^V,7),O=0|Ir((h=0|Ir((v=0|Ir((G=(h=0|Ir(C^(E=i+t|0),16))+A|0)^i,12))+E^h,8))+G^v,7),Z=0|Ir((X=0|Ir((F=0|Ir((b=(X=0|Ir(n^(m=c+r|0),16))+u|0)^c,12))+m^X,8))+b^F,7),o=0|Ir((A=(n=0|Ir((I=(W=0|Ir((x=0|Ir(X^w+(N+T),16))+(h+G)^w,12))+(w+(N+T))|0)^x,8))+(x+(h+G))|0)^W,7),i=0|Ir((u=(d=0|Ir((B=(G=0|Ir((W=0|Ir(O+(V+R)^f,16))+(X+b)^O,12))+(O+(V+R))|0)^W,8))+(W+(X+b))|0)^G,7),c=0|Ir((s=(_=0|Ir((t=(b=0|Ir((G=0|Ir(Z+(v+E)^Q,16))+(f+U)^Z,12))+(Z+(v+E))|0)^G,8))+(G+(f+U))|0)^b,7),a=0|Ir((l=(C=0|Ir((r=(b=0|Ir((h=0|Ir(F+m+y^h,16))+(Q+p)^y,12))+(F+m+y)|0)^h,8))+(h+(Q+p))|0)^b,7),g=g+1|0}while(10!=(0|g));Wn(e,I),Wn(e+4|0,B),Wn(e+8|0,t),Wn(e+12|0,r),Wn(e+16|0,d),Wn(e+20|0,_),Wn(e+24|0,C),Wn(e+28|0,n)}function T(e,t,n,a){e|=0,n|=0,a|=0;var o,i,c=0,s=0;for(o=C,i=C=C+63&-64,C=C+2272|0,de(i+1536|0,t|=0),de(i+1280|0,a),nn(i,n),rn(i+2112|0,n),en(i+1792|0,i+2112|0),qe(i+2112|0,i+1792|0,i),en(i+1952|0,i+2112|0),nn(i+160|0,i+1952|0),qe(i+2112|0,i+1792|0,i+160|0),en(i+1952|0,i+2112|0),nn(i+320|0,i+1952|0),qe(i+2112|0,i+1792|0,i+320|0),en(i+1952|0,i+2112|0),nn(i+480|0,i+1952|0),qe(i+2112|0,i+1792|0,i+480|0),en(i+1952|0,i+2112|0),nn(i+640|0,i+1952|0),qe(i+2112|0,i+1792|0,i+640|0),en(i+1952|0,i+2112|0),nn(i+800|0,i+1952|0),qe(i+2112|0,i+1792|0,i+800|0),en(i+1952|0,i+2112|0),nn(i+960|0,i+1952|0),qe(i+2112|0,i+1792|0,i+960|0),en(i+1952|0,i+2112|0),nn(i+1120|0,i+1952|0),function(e){Nn(e|=0),Gn(e+40|0),Gn(e+80|0)}(e),n=255;;){if(0|r[i+1536+n>>0]){c=n,s=5;break}if(0|r[i+1280+n>>0]){c=n,s=5;break}if(!n)break;n=n+-1|0}if(5==(0|s)&&(0|c)>-1)for(;it(i+2112|0,e),(n=0|r[i+1536+c>>0])<<24>>24<=0?n<<24>>24<0&&(en(i+1952|0,i+2112|0),Ke(i+2112|0,i+1952|0,i+(160*(((n<<24>>24)/-2|0)<<24>>24)|0)|0)):(en(i+1952|0,i+2112|0),qe(i+2112|0,i+1952|0,i+(160*((255&n)>>>1&255)|0)|0)),(n=0|r[i+1280+c>>0])<<24>>24<=0?n<<24>>24<0&&(en(i+1952|0,i+2112|0),$e(i+2112|0,i+1952|0,160+(120*(((n<<24>>24)/-2|0)<<24>>24)|0)|0)):(en(i+1952|0,i+2112|0),et(i+2112|0,i+1952|0,160+(120*((255&n)>>>1&255)|0)|0)),pn(e,i+2112|0),(0|c)>0;)c=c+-1|0;C=o}function N(e,t,n,o,i,c,s,l){e|=0,t|=0,n|=0,o|=0,i|=0,c|=0,s|=0,l|=0;var g,I,B=0,A=0,u=0,d=0,_=0,b=0,p=0;if(I=C,g=C=C+63&-64,C=C+16|0,a[g>>2]=0,tr(l),o){d=0,A=0,u=0,B=0;e:for(;;){for(b=B;B=0|r[n+b>>0],255==(0|(_=4&l?0|Je(B):0|Pe(B)));){if(!i){_=18;break e}if(!(0|Sn(i,B))){_=19;break e}if(!((B=b+1|0)>>>0<o>>>0)){_=17;break e}b=B}if(d=_+(d<<6)|0,(B=A+6|0)>>>0>7){if(A=A+-2|0,u>>>0>=t>>>0){_=13;break}r[e+u>>0]=d>>>A,u=u+1|0}else A=B;if((B=b+1|0)>>>0>=o>>>0){_=16;break}}13==(0|_)?(a[g>>2]=b,a[8678]=68,B=-1):16==(0|_)||17==(0|_)?(a[g>>2]=B,B=0):(18==(0|_)||19==(0|_))&&(a[g>>2]=b,B=0),A>>>0>4?(u=0,B=-1):_=21}else d=0,A=0,u=0,B=0,_=21;do{if(21==(0|_))if((1<<A)-1&d)u=0,B=-1;else if(B|2&l||(B=0|Te(n,o,g,i,A>>>1)),B)u=0;else if(0!=(0|i)&&(p=0|a[g>>2])>>>0<o>>>0){for(B=p;;){if(!(0|Sn(i,0|r[n+B>>0]))){_=31;break}if((B=B+1|0)>>>0>=o>>>0){_=30;break}}if(30==(0|_)){a[g>>2]=B,B=0;break}if(31==(0|_)){a[g>>2]=B,B=0;break}}else B=0}while(0);return A=0|a[g>>2],s?a[s>>2]=n+A:(0|A)!=(0|o)&&(a[8678]=28,B=-1),0|c&&(a[c>>2]=u),C=I,0|B}function w(e,t,n){t|=0,n|=0;var o,i,c,s=0,l=0,g=0;switch(c=C,i=C=C+63&-64,C=C+16|0,g=0|a[20+(e|=0)>>2],o=0|a[e+4>>2],a[e+20>>2]=0,a[e+4>>2]=0,0|n){case 2:0|at(t,33653,9)?t=-32:(t=t+9|0,l=4);break;case 1:0|at(t,33663,8)?t=-32:(t=t+8|0,l=4);break;default:t=-26}do{if(4==(0|l))if(0==(0|at(t,33672,3))&&0!=(0|(s=0|De(t+3|0,i+4|0))))if(19==(0|a[i+4>>2]))if(0|at(s,33676,3))t=-32;else{if(!(t=0|De(s+3|0,i+4|0))){t=-32;break}if(a[e+44>>2]=a[i+4>>2],0|at(t,33680,3))t=-32;else{if(!(t=0|De(t+3|0,i+4|0))){t=-32;break}if(a[e+40>>2]=a[i+4>>2],0|at(t,33684,3))t=-32;else{if(!(t=0|De(t+3|0,i+4|0))){t=-32;break}if(l=0|a[i+4>>2],a[e+48>>2]=l,a[e+52>>2]=l,t=(l=36==(0|r[t>>0]))?t+1|0:t,l){if(a[i+4>>2]=g,0|N(l=0|a[e+16>>2],g,t,0|Le(t),0,i+4|0,i,3)){t=-32;break}if(a[e+20>>2]=a[i+4>>2],t=0|a[i>>2],t=(g=36==(0|r[t>>0]))?t+1|0:t,g){if(a[i+4>>2]=o,0|N(g=0|a[e>>2],o,t,0|Le(t),0,i+4|0,i,3)){t=-32;break}a[e+4>>2]=a[i+4>>2],n=0|a[i>>2],(t=0|ce(e))||(t=0==(0|r[n>>0])?0:-32)}else t=-32}else t=-32}}}else t=-26;else t=-32}while(0);return C=c,0|t}function k(e,t,n){e|=0,t|=0;var r=0,a=0,o=0,i=0,c=0,s=0,l=0,g=0,I=0,B=0,A=0,u=0,d=0,_=0,C=0,b=0,p=0,Q=0,h=0,y=0,m=0,F=0,U=0,f=0,G=0,E=0,v=0,Z=0,X=0,W=0,R=0;o=0|Hn(n|=0),B=0|Hn(n+4|0),A=0|Hn(n+8|0),u=0|Hn(n+12|0),c=0|Hn(n+16|0),s=0|Hn(n+20|0),l=0|Hn(n+24|0),g=0|Hn(n+28|0),_=0|Hn(t),C=0|Hn(t+4|0),b=0|Hn(t+8|0),r=20,a=1634760805,i=2036477234,I=1797285236,d=857760878,n=0|Hn(t+12|0);do{Z=(0|Ir((h=(0|Ir((F=(0|Ir((G=(0|Ir(s+a|0,7))^u)+a|0,9))^b)+G|0,13))^s)+F|0,18))^a,f=(0|Ir((R=(0|Ir((Q=(0|Ir((m=(0|Ir(d+o|0,7))^n)+d|0,9))^l)+m|0,13))^o)+Q|0,18))^d,y=(0|Ir((v=(0|Ir((W=(0|Ir((p=(0|Ir(i+_|0,7))^g)+i|0,9))^B)+p|0,13))^_)+W|0,18))^i,t=(0|Ir((U=(0|Ir((E=(0|Ir((X=(0|Ir(I+c|0,7))^A)+I|0,9))^C)+X|0,13))^c)+E|0,18))^I,a=(0|Ir((A=(0|Ir((B=(0|Ir((o=(0|Ir(X+Z|0,7))^R)+Z|0,9))^W)+o|0,13))^X)+B|0,18))^Z,d=(0|Ir((u=(0|Ir((C=(0|Ir((_=(0|Ir(f+G|0,7))^v)+f|0,9))^E)+_|0,13))^G)+C|0,18))^f,i=(0|Ir((n=(0|Ir((b=(0|Ir((c=(0|Ir(y+m|0,7))^U)+y|0,9))^F)+c|0,13))^m)+b|0,18))^y,I=(0|Ir((g=(0|Ir((l=(0|Ir((s=(0|Ir(t+p|0,7))^h)+t|0,9))^Q)+s|0,13))^p)+l|0,18))^t,r=r+-2|0}while(0!=(0|r));Wn(e,a),Wn(e+4|0,d),Wn(e+8|0,i),Wn(e+12|0,I),Wn(e+16|0,_),Wn(e+20|0,C),Wn(e+24|0,b),Wn(e+28|0,n)}function Y(e,t,n,o){t|=0,n|=0,o|=0;var i=0,c=0,s=0,g=0,I=0,B=0,A=0,u=0;if(0==(0|(c=0|a[56+(e|=0)>>2]))&0==(0|(i=0|a[e+56+4>>2])))A=7;else{if(g=0|En(16,0,0|c,0|i),!(0==(0|(B=(I=0|l())>>>0>o>>>0|(0|I)==(0|o)&g>>>0>n>>>0?n:g))&0==(0|(I=I>>>0>o>>>0|(0|I)==(0|o)&g>>>0>n>>>0?o:I)))){g=0,s=0;do{u=0|r[t+g>>0],c=0|vn(0|c,0|i,0|g,0|s),l(),r[e+64+c>>0]=u,g=0|vn(0|g,0|s,1,0),s=0|l(),c=0|a[e+56>>2],i=0|a[e+56+4>>2]}while(s>>>0<I>>>0|(0|s)==(0|I)&g>>>0<B>>>0)}u=0|vn(0|c,0|i,0|B,0|I),g=0|l(),a[e+56>>2]=u,a[e+56+4>>2]=g,g>>>0<0|0==(0|g)&u>>>0<16||(n=0|En(0|n,0|o,0|B,0|I),o=0|l(),Z(e,e+64|0,16,0),a[e+56>>2]=0,a[e+56+4>>2]=0,t=t+B|0,A=7)}if(7==(0|A)&&(i=-16&n,o>>>0>0|0==(0|o)&n>>>0>15?(c=0|En(0|n,0|o,0|i,0|o),u=0|l(),Z(e,t,i,o),o=u,t=t+i|0):c=n,!(0==(0|c)&0==(0|o)))){i=0,n=0;do{A=0|r[t+i>>0],u=0|vn(0|a[e+56>>2],0|a[e+56+4>>2],0|i,0|n),l(),r[e+64+u>>0]=A,i=0|vn(0|i,0|n,1,0),n=0|l()}while(n>>>0<o>>>0|(0|n)==(0|o)&i>>>0<c>>>0);A=0|vn(0|a[e+56>>2],0|a[e+56+4>>2],0|c,0|o),u=0|l(),a[e+56>>2]=A,a[e+56+4>>2]=u}}function S(e,t){e|=0,t|=0;var n=0,c=0,s=0,g=0,I=0,B=0,A=0,u=0,d=0,_=0,C=0;e:do{if(0|e){do{if(2==(0|a[e+36>>2])){if(0==(0|(n=0|a[t>>2]))&&(0|o[t+8>>0])<=1){c=6;break}u=0|a[e+4>>2],A=0}else c=6}while(0);if(6==(0|c)&&(re(e,t,u=0|a[e+4>>2]),n=0|a[t>>2],A=1),n=0==(0|n)&(s=0|r[t+8>>0])<<24>>24==0?2:0,c=0|a[e+24>>2],I=0|i(c,0|a[t+4>>2]),B=0|a[e+20>>2],s=I+n+(0|i(B,255&s))|0,n>>>0<B>>>0)for(g=c,B=s,c=(0==(0|(s>>>0)%(c>>>0))?c+-1|0:-1)+s|0;;){if(I=1==(0|(B>>>0)%(g>>>0))?B+-1|0:c,c=A?u+(n<<3)|0:(0|a[4+(0|a[e>>2])>>2])+(I<<10)|0,C=0|a[(g=c)>>2],g=0|Lt(0|a[g+4>>2],0,0|a[e+28>>2],0),s=0|l(),d=0|a[t>>2],c=0|r[t+8>>0],_=0|a[t+4>>2],g=0==(0|d)&c<<24>>24==0?_:g,a[t+12>>2]=n,s=0|be(e,d,c,n,C,1&((0|g)==(0|_)?0==(0|(0==(0|d)&c<<24>>24==0?0:s)):0)),s=(c=0|a[4+(0|a[e>>2])>>2])+((0|i(0|a[e+24>>2],g))<<10)+(s<<10)|0,g=c+(B<<10)|0,d?F(c+(I<<10)|0,s,g):U(c+(I<<10)|0,s,g),(n=n+1|0)>>>0>=(0|a[e+20>>2])>>>0)break e;g=0|a[e+24>>2],B=B+1|0,c=I+1|0}}}while(0)}function H(e,t,n){var r,o;n|=0,r=C,o=C=C+63&-64,C=C+400|0,0==(0|(e|=0))|0==(0|(t|=0))||(bt(o,0,0,64),Wn(o+384|0,0|a[t+48>>2]),wn(o,o+384|0,4,0),Wn(o+384|0,0|a[t+4>>2]),wn(o,o+384|0,4,0),Wn(o+384|0,0|a[t+44>>2]),wn(o,o+384|0,4,0),Wn(o+384|0,0|a[t+40>>2]),wn(o,o+384|0,4,0),Wn(o+384|0,19),wn(o,o+384|0,4,0),Wn(o+384|0,n),wn(o,o+384|0,4,0),Wn(o+384|0,0|a[t+12>>2]),wn(o,o+384|0,4,0),0|(n=0|a[t+8>>2])&&(wn(o,n,0|a[t+12>>2],0),1&a[t+56>>2]|0)&&(Ut(0|a[t+8>>2],0|a[t+12>>2]),a[t+12>>2]=0),Wn(o+384|0,0|a[t+20>>2]),wn(o,o+384|0,4,0),0|(n=0|a[t+16>>2])&&wn(o,n,0|a[t+20>>2],0),Wn(o+384|0,0|a[t+28>>2]),wn(o,o+384|0,4,0),0|(n=0|a[t+24>>2])&&(wn(o,n,0|a[t+28>>2],0),2&a[t+56>>2]|0)&&(Ut(0|a[t+24>>2],0|a[t+28>>2]),a[t+28>>2]=0),Wn(o+384|0,0|a[t+36>>2]),wn(o,o+384|0,4,0),0|(n=0|a[t+32>>2])&&wn(o,n,0|a[t+36>>2],0),gn(o,e,64)),C=r}function D(e,t,n,o){e|=0,t|=0,n|=0,o|=0;var i,c,s=0,l=0,g=0;if(i=C,c=C=C+63&-64,C=C+528|0,a[c+512>>2]=0,Wn(c+512|0,t),t>>>0<65)(0|bt(c,0,0,t))>=0&&(wn(c,c+512|0,4,0),wn(c,n,o,0),gn(c,e,t));else e:do{if((0|bt(c,0,0,64))>=0&&(wn(c,c+512|0,4,0),wn(c,n,o,0),(0|gn(c,c+448|0,64))>=0)){l=c+448|0,g=(s=e)+32|0;do{r[s>>0]=0|r[l>>0],s=s+1|0,l=l+1|0}while((0|s)<(0|g));l=c+448|0,g=64+(s=c+384|0)|0;do{a[s>>2]=a[l>>2],s=s+4|0,l=l+4|0}while((0|s)<(0|g));if((t+-32|0)>>>0>64){o=e+32|0,n=t+-32|0;do{if((0|kt(c+448|0,64,c+384|0,64,0,0,0))<0)break e;l=c+448|0,g=(s=o)+32|0;do{r[s>>0]=0|r[l>>0],s=s+1|0,l=l+1|0}while((0|s)<(0|g));n=n+-32|0,o=o+32|0,l=c+448|0,g=64+(s=c+384|0)|0;do{a[s>>2]=a[l>>2],s=s+4|0,l=l+4|0}while((0|s)<(0|g))}while(n>>>0>64)}else o=e+32|0,n=t+-32|0;(0|kt(c+448|0,n,c+384|0,64,0,0,0))>=0&&te(0|o,c+448|0,0|n)}}while(0);Ut(c,384),C=i}function J(e,t,n,a,c){e|=0,t|=0,n|=0,a|=0;var s=0,l=0,I=0,B=0,A=0,u=0;tr(c|=0),l=(0|i((a>>>0)/3|0,-3))+a|0,s=((a>>>0)/3|0)<<2;do{if(l){if(2&c){s=(2|s)+(l>>>1)|0;break}s=s+4|0;break}}while(0);if(s>>>0>=t>>>0&&Gr(),4&c)if(0|a){B=0,c=0,l=0,A=0;do{if(u=A,A=A+1|0,B=B<<8|0|o[n+u>>0],(c=c+8|0)>>>0>5)for(;;){if(u=255&(0|Nt(B>>>(c=c+-6|0)&63)),I=l+1|0,r[e+l>>0]=u,!(c>>>0>5)){l=I;break}l=I}}while((0|A)!=(0|a));c&&(u=255&(0|Nt(B<<6-c&63)),r[e+l>>0]=u,l=l+1|0)}else l=0;else if(0|a){B=0,c=0,l=0,A=0;do{if(I=A,A=A+1|0,B=B<<8|0|o[n+I>>0],(c=c+8|0)>>>0>5)for(;;){if(u=255&(0|wt(B>>>(c=c+-6|0)&63)),I=l+1|0,r[e+l>>0]=u,!(c>>>0>5)){l=I;break}l=I}}while((0|A)!=(0|a));c&&(u=255&(0|wt(B<<6-c&63)),r[e+l>>0]=u,l=l+1|0)}else l=0;return s>>>0<l>>>0&&g(34564,34583,230,34599),s>>>0>l>>>0?Ge(e+l|0,61,s-l|0):s=l,Ge(e+s|0,0,((u=s+1|0)>>>0<t>>>0?t:u)-s|0),0|e}function P(e,t,n,i,c,s,g,I){e|=0,t|=0,c|=0,s|=0,g|=0,I|=0;var B,A,u=0,d=0;if(B=C,A=C=C+63&-64,C=C+112|0,!(0==(0|(n|=0))&0==(0|(i|=0)))){u=(d=A)+32|0;do{r[d>>0]=0|r[I>>0],d=d+1|0,I=I+1|0}while((0|d)<(0|u));I=o[c+4>>0]|o[c+4+1>>0]<<8|o[c+4+2>>0]<<16|o[c+4+3>>0]<<24,a[A+96>>2]=o[c>>0]|o[c+1>>0]<<8|o[c+2>>0]<<16|o[c+3>>0]<<24,a[A+96+4>>2]=I,I=8;do{r[A+96+I>>0]=s,s=0|Bn(0|s,0|g,8),g=0|l(),I=I+1|0}while(16!=(0|I));if(i>>>0>0|0==(0|i)&n>>>0>63)for(s=i;;){nr(A+32|0,A+96|0,A),g=0;do{r[e+g>>0]=r[A+32+g>>0]^r[t+g>>0],g=g+1|0}while(64!=(0|g));for(I=8,g=1;g=g+(0|o[(i=A+96+I|0)>>0])|0,r[i>>0]=g,16!=(0|(I=I+1|0));)g>>>=8;if(g=0|vn(0|n,0|s,-64,-1),e=e+64|0,t=t+64|0,!((I=0|l())>>>0>0|0==(0|I)&g>>>0>63)){s=g;break}n=g,s=I}else s=n,I=i;if(!(0==(0|s)&0==(0|I))&&(nr(A+32|0,A+96|0,A),0|s)){g=0;do{r[e+g>>0]=r[A+32+g>>0]^r[t+g>>0],g=g+1|0}while((0|g)!=(0|s))}Ut(A+32|0,64),Ut(A,32)}C=B}function M(e,t){t|=0;var n,o,i,c,s,g,I=0,B=0,A=0,u=0;0==(0|(B=0|a[56+(e|=0)>>2]))&0==(0|(I=0|a[e+56+4>>2]))||(r[e+64+B>>0]=1,I=0|vn(0|B,0|I,1,0),(A=0|l())>>>0<0|0==(0|A)&I>>>0<16&&Ge(e+64+I|0,0,14-B+1|0),r[e+80>>0]=1,Z(e,e+64|0,16,0)),B=0|a[e+24>>2],u=(i=(-67108864|(o=((u=((A=(0|a[e+28>>2])+(B>>>26)|0)>>>26)+(0|a[e+32>>2])|0)>>>26)+(0|a[e+36>>2])|0))+((((((c=((g=(5*(o>>>26)|0)+(0|a[e+20>>2])|0)>>>26)+(67108863&B)+((5+(67108863&g)|0)>>>26)|0)>>>26)+(67108863&A)|0)>>>26)+(67108863&u)|0)>>>26)|0)>>31&67108863&u|(s=(i>>>31)-1&67108863)&(((c>>>26)+(67108863&A)|0)>>>26)+(67108863&u),n=0|vn(i>>31&67108863&g|s&5+(67108863&g)|(i>>31&(g>>>26)+(67108863&B)|s&c)<<26|0,0,0|a[e+40>>2],0),I=0|l(),I=0|vn(0|(B=0|vn((i>>31&(g>>>26)+(67108863&B)|s&c)>>>6|(i>>31&67108863&A|s&(c>>>26)+(67108863&A))<<20|0,0,0|a[e+44>>2],0)),0|l(),0|I,0),B=0|l(),B=0|vn(0|(A=0|vn((i>>31&67108863&A|s&(c>>>26)+(67108863&A))>>>12|u<<14|0,0,0|a[e+48>>2],0)),0|l(),0|B,0),A=0|l(),A=0|vn(0|(u=0|vn(((i>>>31)-1&i|i>>31&o)<<8|u>>>18|0,0,0|a[e+52>>2],0)),0|l(),0|A,0),l(),Wn(t,n),Wn(t+4|0,I),Wn(t+8|0,B),Wn(t+12|0,A),Ut(e,88)}function L(e,t){var n,r;e|=0,n=C,r=C=C+63&-64,C=C+192|0,f(r+144|0,t|=0),f(r+96|0,r+144|0),f(r+96|0,r+96|0),m(r+96|0,t,r+96|0),m(r+144|0,r+144|0,r+96|0),f(r+48|0,r+144|0),m(r+96|0,r+96|0,r+48|0),f(r+48|0,r+96|0),t=1;do{f(r+48|0,r+48|0),t=t+1|0}while(5!=(0|t));m(r+96|0,r+48|0,r+96|0),f(r+48|0,r+96|0),t=1;do{f(r+48|0,r+48|0),t=t+1|0}while(10!=(0|t));m(r+48|0,r+48|0,r+96|0),f(r,r+48|0),t=1;do{f(r,r),t=t+1|0}while(20!=(0|t));m(r+48|0,r,r+48|0),f(r+48|0,r+48|0),t=1;do{f(r+48|0,r+48|0),t=t+1|0}while(10!=(0|t));m(r+96|0,r+48|0,r+96|0),f(r+48|0,r+96|0),t=1;do{f(r+48|0,r+48|0),t=t+1|0}while(50!=(0|t));m(r+48|0,r+48|0,r+96|0),f(r,r+48|0),t=1;do{f(r,r),t=t+1|0}while(100!=(0|t));m(r+48|0,r,r+48|0),f(r+48|0,r+48|0),t=1;do{f(r+48|0,r+48|0),t=t+1|0}while(50!=(0|t));m(r+96|0,r+48|0,r+96|0),f(r+96|0,r+96|0),t=1;do{f(r+96|0,r+96|0),t=t+1|0}while(5!=(0|t));m(e,r+96|0,r+144|0),C=n}function z(e,t){e|=0;var n,a,o=0;for(n=C,a=C=C+63&-64,C=C+1760|0,nn(a,t|=0),rn(a+1600|0,t),en(a+1280|0,a+1600|0),qe(a+1600|0,a+1280|0,a),en(a+1440|0,a+1600|0),nn(a+160|0,a+1440|0),qe(a+1600|0,a+1280|0,a+160|0),en(a+1440|0,a+1600|0),nn(a+320|0,a+1440|0),qe(a+1600|0,a+1280|0,a+320|0),en(a+1440|0,a+1600|0),nn(a+480|0,a+1440|0),qe(a+1600|0,a+1280|0,a+480|0),en(a+1440|0,a+1600|0),nn(a+640|0,a+1440|0),qe(a+1600|0,a+1280|0,a+640|0),en(a+1440|0,a+1600|0),nn(a+800|0,a+1440|0),qe(a+1600|0,a+1280|0,a+800|0),en(a+1440|0,a+1600|0),nn(a+960|0,a+1440|0),qe(a+1600|0,a+1280|0,a+960|0),en(a+1440|0,a+1600|0),nn(a+1120|0,a+1440|0),Pn(e),o=252;rn(a+1600|0,e),(t=0|r[31840+o>>0])<<24>>24<=0?t<<24>>24<0&&(en(a+1440|0,a+1600|0),Ke(a+1600|0,a+1440|0,a+(160*(((t<<24>>24)/-2|0)<<24>>24)|0)|0)):(en(a+1440|0,a+1600|0),qe(a+1600|0,a+1440|0,a+(160*((255&t)>>>1&255)|0)|0)),en(e,a+1600|0),o;)o=o+-1|0;C=n}function j(e,t,n,r,o,i,c){e|=0,t|=0,n|=0,r|=0,o|=0;var s,g,I=0,B=0;return s=C,g=C=C+63&-64,C=C+352|0,k(g,i|=0,c|=0),e>>>0>n>>>0&&0<o>>>0|0==(0|o)&(e-n|0)>>>0<r>>>0||n>>>0>e>>>0&&0<o>>>0|0==(0|o)&(n-e|0)>>>0<r>>>0?B=5:I=n,5==(0|B)&&(Ft(0|e,0|n,0|r),I=e),a[g+32>>2]=0,a[g+32+4>>2]=0,a[g+32+8>>2]=0,a[g+32+12>>2]=0,a[g+32+16>>2]=0,a[g+32+20>>2]=0,a[g+32+24>>2]=0,a[g+32+28>>2]=0,0==(0|(c=o>>>0>0|0==(0|o)&r>>>0>32?32:r))&0==(0|(n=o>>>0>0|0==(0|o)&r>>>0>32?0:o))||te(g+32+32|0,0|I,-2-(B=~o>>>0>4294967295|-1==(0|~o)&~r>>>0>4294967263?~r:-33)+1|0),Un(g+32|0,g+32|0,B=0|vn(0|c,0|n,32,0),0|l(),i+16|0,g),Kn(g+96|0,g+32|0),0==(0|c)&0==(0|n)||te(0|e,g+32+32|0,-2-(B=~o>>>0>4294967295|-1==(0|~o)&~r>>>0>4294967263?~r:-33)+1|0),Ut(g+32|0,64),o>>>0>0|0==(0|o)&r>>>0>32&&yn(e+c|0,I+c|0,B=0|En(0|r,0|o,0|c,0|n),0|l(),i+16|0,g),Ut(g,32),Zn(g+96|0,e,r,o),jn(g+96|0,t),Ut(g+96|0,256),C=s,0}function K(e,t,n,a){e|=0,t|=0,n|=0,a|=0;var i=0,c=0,s=0,g=0;e:do{if(!(0==(0|n)&0==(0|a))){for(i=o[e+352>>0]|o[e+352+1>>0]<<8|o[e+352+2>>0]<<16|o[e+352+3>>0]<<24,s=t;t=e+96+i|0,a>>>0>0|0==(0|a)&n>>>0>(g=256-i|0)>>>0;){te(0|t,0|s,0|g),t=(o[e+352>>0]|o[e+352+1>>0]<<8|o[e+352+2>>0]<<16|o[e+352+3>>0]<<24)+g|0,r[e+352>>0]=t,r[e+352+1>>0]=t>>8,r[e+352+2>>0]=t>>16,r[e+352+3>>0]=t>>24,le(e,128,0),b(e,e+96|0),i=e+224|0,c=128+(t=e+96|0)|0;do{r[t>>0]=0|r[i>>0],t=t+1|0,i=i+1|0}while((0|t)<(0|c));if(i=(o[e+352>>0]|o[e+352+1>>0]<<8|o[e+352+2>>0]<<16|o[e+352+3>>0]<<24)-128|0,r[e+352>>0]=i,r[e+352+1>>0]=i>>8,r[e+352+2>>0]=i>>16,r[e+352+3>>0]=i>>24,0==(0|(n=0|En(0|n,0|a,0|g,0)))&0==(0|(a=0|l())))break e;s=s+g|0}te(0|t,0|s,0|n),g=(o[e+352>>0]|o[e+352+1>>0]<<8|o[e+352+2>>0]<<16|o[e+352+3>>0]<<24)+n|0,r[e+352>>0]=g,r[e+352+1>>0]=g>>8,r[e+352+2>>0]=g>>16,r[e+352+3>>0]=g>>24}}while(0)}function q(e,t,n){var r,o,i,c,s,l,g,I,B,A,u,d,_,C,b,p,Q,h,y,m;t|=0,n|=0,m=0|a[(e|=0)>>2],h=0|a[e+4>>2],p=0|a[e+8>>2],C=0|a[e+12>>2],d=0|a[e+16>>2],A=0|a[e+20>>2],I=0|a[e+24>>2],l=0|a[e+28>>2],c=0|a[e+32>>2],o=0|a[e+36>>2],y=0|a[t>>2],Q=0|a[t+4>>2],b=0|a[t+8>>2],_=0|a[t+12>>2],u=0|a[t+16>>2],B=0|a[t+20>>2],g=0|a[t+24>>2],s=0|a[t+28>>2],i=0|a[t+32>>2],r=0|a[t+36>>2],a[e>>2]=(y^m)&0-n^m,a[e+4>>2]=(Q^h)&0-n^h,a[e+8>>2]=(b^p)&0-n^p,a[e+12>>2]=(_^C)&0-n^C,a[e+16>>2]=(u^d)&0-n^d,a[e+20>>2]=(B^A)&0-n^A,a[e+24>>2]=(g^I)&0-n^I,a[e+28>>2]=(s^l)&0-n^l,a[e+32>>2]=(i^c)&0-n^c,a[e+36>>2]=(r^o)&0-n^o,a[t>>2]=(y^m)&0-n^y,a[t+4>>2]=(Q^h)&0-n^Q,a[t+8>>2]=(b^p)&0-n^b,a[t+12>>2]=(_^C)&0-n^_,a[t+16>>2]=(u^d)&0-n^u,a[t+20>>2]=(B^A)&0-n^B,a[t+24>>2]=(g^I)&0-n^g,a[t+28>>2]=(s^l)&0-n^s,a[t+32>>2]=(i^c)&0-n^i,a[t+36>>2]=(r^o)&0-n^r}function $(e,t,n,i,c){e|=0,i|=0,c|=0;var s,g,I=0,B=0,A=0,u=0,d=0;if(s=C,g=C=C+63&-64,C=C+112|0,!(0==(0|(t|=0))&0==(0|(n|=0)))){I=(B=g)+32|0;do{r[B>>0]=0|r[c>>0],B=B+1|0,c=c+1|0}while((0|B)<(0|I));if(B=o[i+4>>0]|o[i+4+1>>0]<<8|o[i+4+2>>0]<<16|o[i+4+3>>0]<<24,a[g+96>>2]=o[i>>0]|o[i+1>>0]<<8|o[i+2>>0]<<16|o[i+3>>0]<<24,a[g+96+4>>2]=B,a[g+96+8>>2]=0,a[g+96+8+4>>2]=0,n>>>0>0|0==(0|n)&t>>>0>63){do{for(nr(e,g+96|0,g),I=8,c=1;c=c+(0|o[(B=g+96+I|0)>>0])|0,r[B>>0]=c,16!=(0|(I=I+1|0));)c>>>=8;t=0|vn(0|t,0|n,-64,-1),n=0|l(),e=e+64|0}while(n>>>0>0|0==(0|n)&t>>>0>63);0==(0|t)&0==(0|n)||(u=e,d=t,A=8)}else u=e,d=t,A=8;if(8==(0|A)&&(nr(g+32|0,g+96|0,g),0|d)){c=0;do{r[u+c>>0]=0|r[g+32+c>>0],c=c+1|0}while((0|c)!=(0|d))}Ut(g+32|0,64),Ut(g,32)}C=s}function ee(e,t,n,r,a,o,i){e|=0,t|=0,n|=0,r|=0,a|=0;var c,s,g=0;return s=C,c=C=C+63&-64,C=C+96|0,k(c,o|=0,i|=0),function(e,t,n){$(e|=0,32,0,t|=0,n|=0)}(c+32|0,o+16|0,c),0|function(e,t,n,r,a){return 0|function(e,t,n,r,a){var o,i;return e|=0,o=C,i=C=C+63&-64,C=C+16|0,function(e,t,n,r,a){var o,i;e|=0,t|=0,n|=0,r|=0,o=C,i=C=C+63&-64,C=C+96|0,Ee(i,a|=0),Y(i,t,n,r),M(i,e),C=o}(i,t|=0,n|=0,r|=0,a|=0),a=0|lr(e,i),C=o,0|a}(e|=0,t|=0,n|=0,r|=0,a|=0)}(n,t,r,a,c+32|0)?(Ut(c,32),t=-1):e?(t>>>0>=e>>>0&&0<a>>>0|0==(0|a)&(t-e|0)>>>0<r>>>0||e>>>0>=t>>>0&&0<a>>>0|0==(0|a)&(e-t|0)>>>0<r>>>0?g=8:n=t,8==(0|g)&&(Ft(0|e,0|t,0|r),n=e),0==(0|(t=a>>>0>0|0==(0|a)&r>>>0>32?32:r))&0==(0|(i=a>>>0>0|0==(0|a)&r>>>0>32?0:a))?Un(c+32|0,c+32|0,32,0,o+16|0,c):(te(c+32+32|0,0|n,-2-(g=~a>>>0>4294967295|-1==(0|~a)&~r>>>0>4294967263?~r:-33)+1|0),Un(c+32|0,c+32|0,0|vn(0|t,0|i,32,0),0|l(),o+16|0,c),te(0|e,c+32+32|0,-2-g+1|0)),a>>>0>0|0==(0|a)&r>>>0>32&&yn(e+t|0,n+t|0,0|En(0|r,0|a,0|t,0|i),0|l(),o+16|0,c),Ut(c,32),t=0):t=0,C=s,0|t}function te(e,t,n){e|=0,t|=0;var o,i,c=0;if((0|(n|=0))>=8192)return u(0|e,0|t,0|n),0|e;if(i=0|e,o=e+n|0,(3&e)==(3&t)){for(;3&e;){if(!n)return 0|i;r[e>>0]=0|r[t>>0],e=e+1|0,t=t+1|0,n=n-1|0}for(c=(n=-4&o|0)-64|0;(0|e)<=(0|c);)a[e>>2]=a[t>>2],a[e+4>>2]=a[t+4>>2],a[e+8>>2]=a[t+8>>2],a[e+12>>2]=a[t+12>>2],a[e+16>>2]=a[t+16>>2],a[e+20>>2]=a[t+20>>2],a[e+24>>2]=a[t+24>>2],a[e+28>>2]=a[t+28>>2],a[e+32>>2]=a[t+32>>2],a[e+36>>2]=a[t+36>>2],a[e+40>>2]=a[t+40>>2],a[e+44>>2]=a[t+44>>2],a[e+48>>2]=a[t+48>>2],a[e+52>>2]=a[t+52>>2],a[e+56>>2]=a[t+56>>2],a[e+60>>2]=a[t+60>>2],e=e+64|0,t=t+64|0;for(;(0|e)<(0|n);)a[e>>2]=a[t>>2],e=e+4|0,t=t+4|0}else for(n=o-4|0;(0|e)<(0|n);)r[e>>0]=0|r[t>>0],r[e+1>>0]=0|r[t+1>>0],r[e+2>>0]=0|r[t+2>>0],r[e+3>>0]=0|r[t+3>>0],e=e+4|0,t=t+4|0;for(;(0|e)<(0|o);)r[e>>0]=0|r[t>>0],e=e+1|0,t=t+1|0;return 0|i}function ne(e,t){e|=0;var n,o,i=0;n=C,o=C=C+63&-64,C=C+48|0,function(e,t){var n,r,o,i,c,s,l,g,I,B,A;e|=0,I=0|a[(t|=0)>>2],A=0|a[t+4>>2],l=0|a[t+8>>2],s=0|a[t+12>>2],c=0|a[t+16>>2],B=0|a[t+20>>2],o=0|a[t+24>>2],r=0|a[t+28>>2],n=0|a[t+32>>2],i=(((((g=((19*((((((((((((16777216+(19*(t=0|a[t+36>>2])|0)|0)>>>25)+I>>26)+A>>25)+l>>26)+s>>25)+c>>26)+B>>25)+o>>26)+r>>25)+n>>26)+t>>25)|0)+I>>26)+A|0)>>25)+l>>26)+s>>25)+c>>26)+B|0,a[e>>2]=(19*((((((((((((16777216+(19*t|0)|0)>>>25)+I>>26)+A>>25)+l>>26)+s>>25)+c>>26)+B>>25)+o>>26)+r>>25)+n>>26)+t>>25)|0)+I&67108863,a[e+4>>2]=33554431&g,a[e+8>>2]=(g>>25)+l&67108863,a[e+12>>2]=((g>>25)+l>>26)+s&33554431,a[e+16>>2]=(((g>>25)+l>>26)+s>>25)+c&67108863,a[e+20>>2]=33554431&i,a[e+24>>2]=(i>>25)+o&67108863,a[e+28>>2]=((i>>25)+o>>26)+r&33554431,a[e+32>>2]=(((i>>25)+o>>26)+r>>25)+n&67108863,a[e+36>>2]=((((i>>25)+o>>26)+r>>25)+n>>26)+t&33554431}(o,t|=0),t=0|a[o>>2],r[e>>0]=t,r[e+1>>0]=t>>>8,r[e+2>>0]=t>>>16,i=0|a[o+4>>2],r[e+3>>0]=i<<2|t>>>24,r[e+4>>0]=i>>>6,r[e+5>>0]=i>>>14,t=0|a[o+8>>2],r[e+6>>0]=t<<3|i>>>22,r[e+7>>0]=t>>>5,r[e+8>>0]=t>>>13,i=0|a[o+12>>2],r[e+9>>0]=i<<5|t>>>21,r[e+10>>0]=i>>>3,r[e+11>>0]=i>>>11,t=0|a[o+16>>2],r[e+12>>0]=t<<6|i>>>19,r[e+13>>0]=t>>>2,r[e+14>>0]=t>>>10,r[e+15>>0]=t>>>18,t=0|a[o+20>>2],r[e+16>>0]=t,r[e+17>>0]=t>>>8,r[e+18>>0]=t>>>16,i=0|a[o+24>>2],r[e+19>>0]=i<<1|t>>>24,r[e+20>>0]=i>>>7,r[e+21>>0]=i>>>15,t=0|a[o+28>>2],r[e+22>>0]=t<<3|i>>>23,r[e+23>>0]=t>>>5,r[e+24>>0]=t>>>13,i=0|a[o+32>>2],r[e+25>>0]=i<<4|t>>>21,r[e+26>>0]=i>>>4,r[e+27>>0]=i>>>12,t=0|a[o+36>>2],r[e+28>>0]=t<<6|i>>>20,r[e+29>>0]=t>>>2,r[e+30>>0]=t>>>10,r[e+31>>0]=t>>>18,C=n}function re(e,t,n){e|=0,t|=0,n|=0;var r,i,c=0,s=0,g=0;if(r=C,i=C=C+63&-64,C=C+4096|0,Br(i+3072|0),Br(i+2048|0),0!=(0|e)&0!=(0|t)&&(a[i+2048>>2]=a[t>>2],a[i+2048+4>>2]=0,a[i+2048+8>>2]=a[t+4>>2],a[i+2048+8+4>>2]=0,a[i+2048+16>>2]=o[t+8>>0],a[i+2048+16+4>>2]=0,a[i+2048+24>>2]=a[e+16>>2],a[i+2048+24+4>>2]=0,a[i+2048+32>>2]=a[e+8>>2],a[i+2048+32+4>>2]=0,a[i+2048+40>>2]=a[e+36>>2],a[i+2048+40+4>>2]=0,0|a[e+20>>2])){t=0;do{(c=127&t)||(g=0|vn(0|a[i+2048+48>>2],0|a[i+2048+48+4>>2],1,0),s=0|l(),a[i+2048+48>>2]=g,a[i+2048+48+4>>2]=s,Br(i),Br(i+1024|0),F(i+3072|0,i+2048|0,i),F(i+3072|0,i,i+1024|0)),s=0|a[i+1024+(c<<3)+4>>2],a[(g=n+(t<<3)|0)>>2]=a[i+1024+(c<<3)>>2],a[g+4>>2]=s,t=t+1|0}while(t>>>0<(0|a[e+20>>2])>>>0)}C=r}function ae(e,t,n,r){e|=0,t|=0,n|=0,r|=0;var o,i,c,s,l=0,g=0,I=0;s=C,c=C=C+63&-64,C=C+64|0,g=52+(l=c+8|0)|0;do{a[l>>2]=0,l=l+4|0}while((0|l)<(0|g));l=0|Le(e),a[c+36>>2]=l,a[c+20>>2]=l,a[c+4>>2]=l,g=0|h(l),a[c+32>>2]=g,o=0|h(l),a[c+16>>2]=o,i=0|h(l),a[c>>2]=i;do{if(0==(0|g)|0==(0|o)|0==(0|i))G(g),G(o),G(i),l=-22;else{if(!(I=0|h(l))){G(g),G(o),G(i),l=-22;break}if(0|(l=0|w(c,e,r))){G(0|a[c+32>>2]),G(0|a[c+16>>2]),G(0|a[c>>2]),G(I);break}r=0|ge(0|a[c+40>>2],0|a[c+44>>2],0|a[c+52>>2],t,n,0|a[c+16>>2],0|a[c+20>>2],I,0|a[c+4>>2],0,0,r),G(0|a[c+32>>2]),G(0|a[c+16>>2]),l=0==(0|r)&&0==(0|tt(I,0|a[c>>2],0|a[c+4>>2]))?0:-35,G(I),G(0|a[c>>2])}}while(0);return C=s,0|l}function oe(e,t){e|=0,t|=0;var n,a,i=0,c=0,s=0;n=C,a=C=C+63&-64,C=C+464|0,i=0;do{s=0|r[t+i>>0],r[a+(c=i<<1)>>0]=15&s,r[a+(1|c)>>0]=(255&s)>>>4,i=i+1|0}while(32!=(0|i));t=0,i=0;do{t=134217728+((c=t+(0|o[(s=a+i|0)>>0])|0)<<24)>>28,r[s>>0]=c-(t<<4),i=i+1|0}while(63!=(0|i));r[a+63>>0]=t+(0|o[a+63>>0]),Pn(e),t=1;do{Ln(a+64|0,t>>>1,0|r[a+t>>0]),et(a+304|0,e,a+64|0),en(e,a+304|0),t=t+2|0}while(t>>>0<64);rn(a+304|0,e),pn(a+184|0,a+304|0),it(a+304|0,a+184|0),pn(a+184|0,a+304|0),it(a+304|0,a+184|0),pn(a+184|0,a+304|0),it(a+304|0,a+184|0),en(e,a+304|0),t=0;do{Ln(a+64|0,t>>>1,0|r[a+t>>0]),et(a+304|0,e,a+64|0),en(e,a+304|0),t=t+2|0}while(t>>>0<64);C=n}function ie(e,t,n,r,a,o,i,c,s,g,I){var B;e|=0,t|=0,n|=0,r|=0,a|=0,o|=0,i|=0,c|=0,s|=0,B=C,C=C+352|0,Jt(B+16|0,64,0,g|=0,I|=0),Kn(B+80|0,B+16|0),Ut(B+16|0,64),Zn(B+80|0,i,c,s),t=0|En(0,0,0|c,0|s),l(),Zn(B+80|0,34624,15&t,0),Zn(B+80|0,n,r,a),t=0|En(0,0,0|r,0|a),l(),Zn(B+80|0,34624,15&t,0),Ot(B+336|0,c,s),Zn(B+80|0,B+336|0,8,0),Ot(B+336|0,r,a),Zn(B+80|0,B+336|0,8,0),jn(B+80|0,B),Ut(B+80|0,256),t=0|lr(B,o),Ut(B,16);do{if(e){if(t){Ge(0|e,0,0|r),t=-1;break}st(e,n,r,a,g,1,I),t=0;break}}while(0);return C=B,0|t}function ce(e){e|=0;var t=0,n=0;do{if(e)if(0|a[e>>2])if((0|a[e+4>>2])>>>0>=16){if(0==(0|a[e+8>>2])&&0|a[e+12>>2]){t=-18;break}if(t=0|a[e+20>>2],!(0|a[e+16>>2]))return 0|(0==(0|t)?-6:-19);if(t>>>0>=8){if(0==(0|a[e+24>>2])&&0|a[e+28>>2]){t=-20;break}if(0==(0|a[e+32>>2])&&0|a[e+36>>2]){t=-21;break}if((t=0|a[e+44>>2])>>>0>=8)if(t>>>0<=2097152)if(t>>>0>=(n=0|a[e+48>>2])<<3>>>0)if(0|a[e+40>>2])if(n){if(!(n>>>0>16777215))return 0|(0==(0|(e=0|a[e+52>>2]))?-28:e>>>0>16777215?-29:0);t=-17}else t=-16;else t=-12;else t=-14;else t=-15;else t=-14}else t=-6}else t=-2;else t=-1;else t=-25}while(0);return 0|t}function se(e,t,n,o,i){var c,s;e|=0,n|=0,o|=0,i|=0,c=C,s=C=C+63&-64,C=C+192|0,((t|=0)-1&255)>63&&Gr(),n||Gr(),r[s+128>>0]=t,r[s+128+1>>0]=32,r[s+128+2>>0]=1,r[s+128+3>>0]=1,Jn(s+128+4|0),Ot(s+128+8|0,0,0),a[s+128+16>>2]=0,a[s+128+16+4>>2]=0,a[s+128+16+8>>2]=0,a[s+128+16+12>>2]=0,o?function(e,t){t|=0;var n=0;e=16+(n=32+(e|=0)|0)|0;do{r[n>>0]=0|r[t>>0],n=n+1|0,t=t+1|0}while((0|n)<(0|e))}(s+128|0,o):(a[s+128+32>>2]=0,a[s+128+32+4>>2]=0,a[s+128+32+8>>2]=0,a[s+128+32+12>>2]=0),i?function(e,t){t|=0;var n=0;e=16+(n=48+(e|=0)|0)|0;do{r[n>>0]=0|r[t>>0],n=n+1|0,t=t+1|0}while((0|n)<(0|e))}(s+128|0,i):(a[s+128+48>>2]=0,a[s+128+48+4>>2]=0,a[s+128+48+8>>2]=0,a[s+128+48+12>>2]=0),Ye(e,s+128|0),i=96+(t=s+32|0)|0;do{a[t>>2]=0,t=t+4|0}while((0|t)<(0|i));i=(t=s)+32|0;do{r[t>>0]=0|r[n>>0],t=t+1|0,n=n+1|0}while((0|t)<(0|i));K(e,s,128,0),Ut(s,128),C=c}function le(e,t,n){var a,i;t|=0,n|=0,a=0|vn(o[64+(e|=0)>>0]|o[e+64+1>>0]<<8|o[e+64+2>>0]<<16|o[e+64+3>>0]<<24|0,o[e+64+4>>0]|o[e+64+4+1>>0]<<8|o[e+64+4+2>>0]<<16|o[e+64+4+3>>0]<<24|0,0|t,0|n),i=0|l(),r[e+64>>0]=a,r[e+64+1>>0]=a>>8,r[e+64+2>>0]=a>>16,r[e+64+3>>0]=a>>24,r[e+64+4>>0]=i,r[e+64+4+1>>0]=i>>8,r[e+64+4+2>>0]=i>>16,r[e+64+4+3>>0]=i>>24,t=0|vn(o[e+72>>0]|o[e+72+1>>0]<<8|o[e+72+2>>0]<<16|o[e+72+3>>0]<<24|0,o[e+72+4>>0]|o[e+72+4+1>>0]<<8|o[e+72+4+2>>0]<<16|o[e+72+4+3>>0]<<24|0,1&(i>>>0<n>>>0|(0|i)==(0|n)&a>>>0<t>>>0)|0,0),n=0|l(),r[e+72>>0]=t,r[e+72+1>>0]=t>>8,r[e+72+2>>0]=t>>16,r[e+72+3>>0]=t>>24,r[e+72+4>>0]=n,r[e+72+4+1>>0]=n>>8,r[e+72+4+2>>0]=n>>16,r[e+72+4+3>>0]=n>>24}function ge(e,t,n,r,o,i,c,s,l,g,I,B){var A,u,d;e|=0,t|=0,n|=0,r|=0,o|=0,i|=0,c|=0,s|=0,g|=0,I|=0,B|=0,d=C,u=C=C+63&-64,C=C+64|0,A=0|h(l|=0);do{if(A){if(a[u>>2]=A,a[u+4>>2]=l,a[u+8>>2]=r,a[u+12>>2]=o,a[u+16>>2]=i,a[u+20>>2]=c,a[u+24>>2]=0,a[u+24+4>>2]=0,a[u+24+8>>2]=0,a[u+24+12>>2]=0,a[u+40>>2]=e,a[u+44>>2]=t,a[u+48>>2]=n,a[u+52>>2]=n,a[u+56>>2]=0,0|(t=0|Qe(u,B))){Ut(A,l),G(A);break}if(0|s&&te(0|s,0|A,0|l),0!=(0|g)&0!=(0|I)&&0|V(g,I,u,B)){Ut(A,l),Ut(g,I),G(A),t=-31;break}Ut(A,l),G(A),t=0}else t=-22}while(0);return C=d,0|t}function Ie(e,t){var n,r,a=0;return r=C,n=C=C+63&-64,C=C+288|0,X(40+(e|=0)|0,t|=0),Gn(e+80|0),f(n+240|0,e+40|0),m(n+192|0,n+240|0,16),me(n+240|0,n+240|0,e+80|0),Fe(n+192|0,n+192|0,e+80|0),f(n+144|0,n+192|0),m(n+144|0,n+144|0,n+192|0),f(e,n+144|0),m(e,e,n+192|0),m(e,e,n+240|0),function(e,t){e|=0;var n,r,a=0;n=C,r=C=C+63&-64,C=C+144|0,f(r+96|0,t|=0),f(r+48|0,r+96|0),f(r+48|0,r+48|0),m(r+48|0,t,r+48|0),m(r+96|0,r+96|0,r+48|0),f(r+96|0,r+96|0),m(r+96|0,r+48|0,r+96|0),f(r+48|0,r+96|0),a=1;do{f(r+48|0,r+48|0),a=a+1|0}while(5!=(0|a));m(r+96|0,r+48|0,r+96|0),f(r+48|0,r+96|0),a=1;do{f(r+48|0,r+48|0),a=a+1|0}while(10!=(0|a));m(r+48|0,r+48|0,r+96|0),f(r,r+48|0),a=1;do{f(r,r),a=a+1|0}while(20!=(0|a));m(r+48|0,r,r+48|0),f(r+48|0,r+48|0),a=1;do{f(r+48|0,r+48|0),a=a+1|0}while(10!=(0|a));m(r+96|0,r+48|0,r+96|0),f(r+48|0,r+96|0),a=1;do{f(r+48|0,r+48|0),a=a+1|0}while(50!=(0|a));m(r+48|0,r+48|0,r+96|0),f(r,r+48|0),a=1;do{f(r,r),a=a+1|0}while(100!=(0|a));m(r+48|0,r,r+48|0),f(r+48|0,r+48|0),a=1;do{f(r+48|0,r+48|0),a=a+1|0}while(50!=(0|a));m(r+96|0,r+48|0,r+96|0),f(r+96|0,r+96|0),f(r+96|0,r+96|0),m(e,r+96|0,t),C=n}(e,e),m(e,e,n+144|0),m(e,e,n+240|0),f(n+96|0,e),m(n+96|0,n+96|0,n+192|0),me(n+48|0,n+96|0,n+240|0),0|an(n+48|0)?a=4:(Fe(n,n+96|0,n+240|0),0|an(n)?(m(e,e,64),a=4):e=-1),4==(0|a)&&((0|(a=0|An(e)))==((0|o[t+31>>0])>>>7|0)&&we(e,e),m(e+120|0,e,e+40|0),e=0),C=r,0|e}function Be(e,t,n){var r,o,i,c,s,l,g,I,B,A,u,d,_,C,b,p,Q,h,y;t|=0,n|=0,y=0|a[(e|=0)>>2],Q=0|a[e+4>>2],b=0|a[e+8>>2],_=0|a[e+12>>2],u=0|a[e+16>>2],B=0|a[e+20>>2],g=0|a[e+24>>2],s=0|a[e+28>>2],i=0|a[e+32>>2],r=0|a[e+36>>2],h=(a[t+4>>2]^Q)&0-n,p=(a[t+8>>2]^b)&0-n,C=(a[t+12>>2]^_)&0-n,d=(a[t+16>>2]^u)&0-n,A=(a[t+20>>2]^B)&0-n,I=(a[t+24>>2]^g)&0-n,l=(a[t+28>>2]^s)&0-n,c=(a[t+32>>2]^i)&0-n,o=(a[t+36>>2]^r)&0-n,a[e>>2]=(a[t>>2]^y)&0-n^y,a[e+4>>2]=h^Q,a[e+8>>2]=p^b,a[e+12>>2]=C^_,a[e+16>>2]=d^u,a[e+20>>2]=A^B,a[e+24>>2]=I^g,a[e+28>>2]=l^s,a[e+32>>2]=c^i,a[e+36>>2]=o^r}function Ae(e,t,n,r,o,i,c,s,g,I,B,A){return e|=0,t|=0,n|=0,r|=0,o|=0,i|=0,c|=0,s|=0,g|=0,I|=0,I=C,C=C+336|0,Jt(I,64,0,B|=0,A|=0),Kn(I+64|0,I),Ut(I,64),Zn(I+64|0,c,s,g),c=0|En(0,0,0|s,0|g),l(),Zn(I+64|0,34624,15&c,0),st(e,r,o,i,B,1,A),Zn(I+64|0,e,o,i),B=0|En(0,0,0|o,0|i),l(),Zn(I+64|0,34624,15&B,0),Ot(I+320|0,s,g),Zn(I+64|0,I+320|0,8,0),Ot(I+320|0,o,i),Zn(I+64|0,I+320|0,8,0),jn(I+64|0,t),Ut(I+64|0,256),0|n&&(a[n>>2]=16,a[n+4>>2]=0),C=I,0}function ue(e){var t,n,i=0,c=0,s=0;t=C,n=C=C+63&-64,C=C+48|0,c=e|=0,s=(i=n)+32|0;do{r[i>>0]=0|r[c>>0],i=i+1|0,c=c+1|0}while((0|i)<(0|s));i=o[e+36+4>>0]|o[e+36+4+1>>0]<<8|o[e+36+4+2>>0]<<16|o[e+36+4+3>>0]<<24,a[n+32>>2]=o[e+36>>0]|o[e+36+1>>0]<<8|o[e+36+2>>0]<<16|o[e+36+3>>0]<<24,a[n+32+4>>2]=i,function(e,t,n,r){!function(e,t,n,r){lt(e|=0,t|=0,40,0,n|=0,0,r|=0)}(e|=0,t|=0,n|=0,r|=0)}(n,n,e+32|0,e),c=n,s=(i=e)+32|0;do{r[i>>0]=0|r[c>>0],i=i+1|0,c=c+1|0}while((0|i)<(0|s));c=0|a[n+32>>2],s=0|a[n+32+4>>2],r[e+36>>0]=c,r[e+36+1>>0]=c>>8,r[e+36+2>>0]=c>>16,r[e+36+3>>0]=c>>24,r[e+36+4>>0]=s,r[e+36+4+1>>0]=s>>8,r[e+36+4+2>>0]=s>>16,r[e+36+4+3>>0]=s>>24,fn(e),C=t}function de(e,t){e|=0,t|=0;var n=0,a=0,i=0,c=0,s=0;n=0;do{r[e+n>>0]=(0|o[t+(n>>>3)>>0])>>>(7&n)&1,n=n+1|0}while(256!=(0|n));s=0;do{i=e+s|0;e:do{if(0|r[i>>0]){c=1;do{if((n=c+s|0)>>>0>=256)break e;t=0|r[e+n>>0];t:do{if(t<<24>>24){if(((a=t<<24>>24<<c)+(t=0|r[i>>0])|0)<16){r[i>>0]=a+t,r[e+n>>0]=0;break}if((t-a|0)<-15)break e;for(r[i>>0]=t-a;0|r[(t=e+n|0)>>0];)if(r[t>>0]=0,(n=n+1|0)>>>0>=256)break t;r[t>>0]=1}}while(0);c=c+1|0}while(c>>>0<7)}}while(0);s=s+1|0}while(256!=(0|s))}function _e(e,t,n,r,a,o,i,c,s,l,g){var I;e|=0,t|=0,n|=0,r|=0,a|=0,o|=0,i|=0,c|=0,s|=0,I=C,C=C+352|0,er(I+16|0,l|=0,g|=0),Kn(I+80|0,I+16|0),Ut(I+16|0,64),Zn(I+80|0,i,c,s),Ot(I+336|0,c,s),Zn(I+80|0,I+336|0,8,0),Zn(I+80|0,n,r,a),Ot(I+336|0,r,a),Zn(I+80|0,I+336|0,8,0),jn(I+80|0,I),Ut(I+80|0,256),t=0|lr(I,o),Ut(I,16);do{if(e){if(t){Ge(0|e,0,0|r),t=-1;break}Ht(e,n,r,a,l,g),t=0;break}}while(0);return C=I,0|t}function Ce(e,t,n,r,o,i,c){var s,l;e|=0,t|=0,n|=0,r|=0,o|=0,i|=0,s=C,l=C=C+63&-64,C=C+560|0,Xn(l+192|0,c|=0),Wt(l+128|0,i,32,0),O(l+192|0,l+128+32|0,32,0),O(l+192|0,n,r,o),St(l+192|0,l+64|0),Ft(e+32|0,i+32|0,32),y(l+64|0),oe(l+400|0,l+64|0),Bt(e,l+400|0),Xn(l+192|0,c),O(l+192|0,e,64,0),O(l+192|0,n,r,o),St(l+192|0,l),y(l),Yn(l+128|0),p(e+32|0,l,l+128|0,l+64|0),Ut(l+128|0,64),Ut(l+64|0,64),0|t&&(a[t>>2]=64,a[t+4>>2]=0),C=s}function be(e,t,n,r,o,c){e|=0,t|=0,n|=0,r|=0,o|=0,c|=0;var s=0;do{if(t){if(s=(0|a[e+24>>2])-(0|a[e+20>>2])|0,c){s=r+-1+s|0;break}s=s+((0==(0|r))<<31>>31)|0;break}if(!(n<<24>>24)){s=r+-1|0;break}if(s=0|i(0|a[e+20>>2],255&n),c){s=r+-1+s|0;break}s=s+((0==(0|r))<<31>>31)|0;break}while(0);return $t(0|o,0,0|o,0),$t(0|l(),0,0|s,0),c=0|En(s+-1|0,0,0|l(),0),o=0|l(),0==(0|t)|n<<24>>24==3?(s=0,r=0):(s=0|i(0|a[e+20>>2],1+(255&n)|0),r=0),e=0|Lt(0|(t=0|vn(0|c,0|o,0|s,0|r)),0|(n=0|l()),0|a[e+24>>2],0),l(),0|e}function pe(e,t,n,r,o){r|=0,o|=0;var i,c,s,l=0;if(s=C,c=C=C+63&-64,C=C+64|0,(n|=0)>>>0>0|0==(0|n)&(t|=0)>>>0>4294967295|(i=0|Le(e|=0))>>>0>127)a[8678]=28,n=-1;else{l=(n=c)+60|0;do{a[n>>2]=0,n=n+4|0}while((0|n)<(0|l));(l=0|function(e){var t;return(t=0|h(e|=0))&&3&a[t+-4>>2]?(Ge(0|t,0,0|e),0|t):0|t}(i))?(a[c+16>>2]=l,a[c+8>>2]=l,a[c>>2]=l,a[c+20>>2]=i,a[c+12>>2]=i,a[c+4>>2]=i,a[c+24>>2]=0,a[c+24+4>>2]=0,a[c+24+8>>2]=0,a[c+24+12>>2]=0,0|w(c,e,o)?(a[8678]=28,n=-1):n=(0|a[c+40>>2])==(0|t)?(0|a[c+44>>2])!=(r>>>10|0)&1:1,G(l)):n=-1}return C=s,0|n}function Qe(e,t){t|=0;var n,r,o=0,c=0,s=0;if(r=C,n=C=C+63&-64,C=C+48|0,!(o=0|ce(e|=0)))if((t+-1|0)>>>0<=1){if(c=0|a[e+44>>2],o=0|a[e+48>>2],s=0|i(c=((c>>>0<o<<3>>>0?o<<3:c)>>>0)/(o<<2>>>0)|0,o<<2),a[n>>2]=0,a[n+8>>2]=a[e+40>>2],a[n+12>>2]=-1,a[n+16>>2]=s,a[n+20>>2]=c,a[n+24>>2]=c<<2,a[n+28>>2]=o,a[n+32>>2]=a[e+52>>2],a[n+36>>2]=t,!(o=0|function(e,t){e|=0,t|=0;var n,r,o=0;r=C,n=C=C+63&-64,C=C+80|0;do{if(0==(0|e)|0==(0|t))o=-25;else{if(o=0|h(a[e+20>>2]<<3),a[e+4>>2]=o,o){if(o=0|We(e,0|a[e+16>>2])){bn(e,0|a[t+56>>2]);break}H(n,t,0|a[e+36>>2]),Ut(n+64|0,8),ke(n,e),Ut(n,72),o=0;break}o=-22}}while(0);return C=r,0|o}(n,e))){if(0|a[n+8>>2]){o=0;do{Ze(n,o),o=o+1|0}while(o>>>0<(0|a[n+8>>2])>>>0)}!function(e,t){var n,r,o=0,c=0;if(n=C,r=C=C+63&-64,C=C+2048|0,0!=(0|(e|=0))&0!=(0|(t|=0))){if(gr(r+1024|0,(0|a[4+(0|a[t>>2])>>2])+(a[t+24>>2]<<10)-1024|0),(0|a[t+28>>2])>>>0>1){o=1;do{c=(c=0|a[t+24>>2])-1+(0|i(c,o))|0,ft(r+1024|0,(0|a[4+(0|a[t>>2])>>2])+(c<<10)|0),o=o+1|0}while(o>>>0<(0|a[t+28>>2])>>>0)}!function(e,t){e|=0,t|=0;var n=0,r=0;n=0;do{Ot(e+(n<<3)|0,0|a[(r=t+(n<<3)|0)>>2],0|a[r+4>>2]),n=n+1|0}while(128!=(0|n))}(r,r+1024|0),D(0|a[e>>2],0|a[e+4>>2],r,1024),Ut(r+1024|0,1024),Ut(r,1024),bn(t,0|a[e+56>>2])}C=n}(e,n),o=0}}else o=-26;return C=r,0|o}function he(e,t,n,r,a,o){var i,c;return t|=0,n|=0,r|=0,a|=0,o|=0,c=C,i=C=C+63&-64,C=C+592|0,0!=(0|_t(32+(e|=0)|0))&&0==(0|Ue(e))&&0!=(0|Dt(a))&&0==(0|Ue(a))&&0==(0|Ie(i+424|0,a))?(Xn(i+96|0,o),O(i+96|0,e,32,0),O(i+96|0,a,32,0),O(i+96|0,t,n,r),St(i+96|0,i+32|0),y(i+32|0),T(i+304|0,i+32|0,i+424|0,e+32|0),Bt(i,i+304|0),n=0|sr(i,e),n=0|((0|i)==(0|e)?-1:n)|tt(e,i,32)):n=-1,C=c,0|n}function ye(e,t){t|=0;var n,o=0,i=0;n=C,C=C+192|0,Xt(e|=0),i=128+(o=n+64|0)|0;do{a[o>>2]=909522486,o=o+4|0}while((0|o)<(0|i));r[n+64>>0]=54^r[t>>0],o=1;do{r[(i=n+64+o|0)>>0]=r[i>>0]^r[t+o>>0],o=o+1|0}while(32!=(0|o));O(e,n+64|0,128,0),Xt(e+208|0),i=128+(o=n+64|0)|0;do{a[o>>2]=1549556828,o=o+4|0}while((0|o)<(0|i));r[n+64>>0]=92^r[t>>0],o=1;do{r[(i=n+64+o|0)>>0]=r[i>>0]^r[t+o>>0],o=o+1|0}while(32!=(0|o));O(e+208|0,n+64|0,128,0),Ut(n+64|0,128),Ut(n,64),C=n}function me(e,t,n){var r,o,i,c,s,l,g,I,B;e|=0,n|=0,B=(0|a[4+(t|=0)>>2])-(0|a[n+4>>2])|0,I=(0|a[t+8>>2])-(0|a[n+8>>2])|0,g=(0|a[t+12>>2])-(0|a[n+12>>2])|0,l=(0|a[t+16>>2])-(0|a[n+16>>2])|0,s=(0|a[t+20>>2])-(0|a[n+20>>2])|0,c=(0|a[t+24>>2])-(0|a[n+24>>2])|0,i=(0|a[t+28>>2])-(0|a[n+28>>2])|0,o=(0|a[t+32>>2])-(0|a[n+32>>2])|0,r=(0|a[t+36>>2])-(0|a[n+36>>2])|0,a[e>>2]=(0|a[t>>2])-(0|a[n>>2]),a[e+4>>2]=B,a[e+8>>2]=I,a[e+12>>2]=g,a[e+16>>2]=l,a[e+20>>2]=s,a[e+24>>2]=c,a[e+28>>2]=i,a[e+32>>2]=o,a[e+36>>2]=r}function Fe(e,t,n){var r,o,i,c,s,l,g,I,B;e|=0,t|=0,B=(0|a[4+(n|=0)>>2])+(0|a[t+4>>2])|0,I=(0|a[n+8>>2])+(0|a[t+8>>2])|0,g=(0|a[n+12>>2])+(0|a[t+12>>2])|0,l=(0|a[n+16>>2])+(0|a[t+16>>2])|0,s=(0|a[n+20>>2])+(0|a[t+20>>2])|0,c=(0|a[n+24>>2])+(0|a[t+24>>2])|0,i=(0|a[n+28>>2])+(0|a[t+28>>2])|0,o=(0|a[n+32>>2])+(0|a[t+32>>2])|0,r=(0|a[n+36>>2])+(0|a[t+36>>2])|0,a[e>>2]=(0|a[n>>2])+(0|a[t>>2]),a[e+4>>2]=B,a[e+8>>2]=I,a[e+12>>2]=g,a[e+16>>2]=l,a[e+20>>2]=s,a[e+24>>2]=c,a[e+28>>2]=i,a[e+32>>2]=o,a[e+36>>2]=r}function Ue(e){e|=0;var t,n,a=0,i=0,c=0,s=0;t=C,n=C=C+63&-64,C=C+16|0,r[n>>0]=0,r[n+1>>0]=0,r[n+2>>0]=0,r[n+3>>0]=0,r[n+4>>0]=0,r[n+5>>0]=0,r[n+6>>0]=0,c=0;do{a=0|r[e+c>>0],i=0;do{r[(s=n+i|0)>>0]=r[s>>0]|r[32096+(i<<5)+c>>0]^a,i=i+1|0}while(7!=(0|i));c=c+1|0}while(31!=(0|c));a=127&r[e+31>>0],i=0;do{r[(s=n+i|0)>>0]=r[s>>0]|a^r[32096+(i<<5)+31>>0],i=i+1|0}while(7!=(0|i));a=0,i=0;do{i=(0|o[n+a>>0])-1|i,a=a+1|0}while(7!=(0|a));return C=t,i>>>8&1|0}function fe(e,t,n,r,o,i,c,s,l,g,I,B){return e|=0,t|=0,n|=0,r|=0,o|=0,i|=0,c|=0,s|=0,l|=0,g|=0,g=C,C=C+336|0,er(g,I|=0,B|=0),Kn(g+64|0,g),Ut(g,64),Zn(g+64|0,c,s,l),Ot(g+320|0,s,l),Zn(g+64|0,g+320|0,8,0),Ht(e,r,o,i,I,B),Zn(g+64|0,e,o,i),Ot(g+320|0,o,i),Zn(g+64|0,g+320|0,8,0),jn(g+64|0,t),Ut(g+64|0,256),0|n&&(a[n>>2]=16,a[n+4>>2]=0),C=g,0}function Ge(e,t,n){t|=0;var o,i=0;if(o=(e|=0)+(n|=0)|0,t&=255,(0|n)>=67){for(;3&e;)r[e>>0]=t,e=e+1|0;for(i=t|t<<8|t<<16|t<<24;(0|e)<=((-4&o)-64|0);)a[e>>2]=i,a[e+4>>2]=i,a[e+8>>2]=i,a[e+12>>2]=i,a[e+16>>2]=i,a[e+20>>2]=i,a[e+24>>2]=i,a[e+28>>2]=i,a[e+32>>2]=i,a[e+36>>2]=i,a[e+40>>2]=i,a[e+44>>2]=i,a[e+48>>2]=i,a[e+52>>2]=i,a[e+56>>2]=i,a[e+60>>2]=i,e=e+64|0;for(;(0|e)<(-4&o|0);)a[e>>2]=i,e=e+4|0}for(;(0|e)<(0|o);)r[e>>0]=t,e=e+1|0;return o-n|0}function Ee(e,t){e|=0;var n=0;n=67108863&(0|Hn(t|=0)),a[e>>2]=n,n=(0|Hn(t+3|0))>>>2&67108611,a[e+4>>2]=n,n=(0|Hn(t+6|0))>>>4&67092735,a[e+8>>2]=n,n=(0|Hn(t+9|0))>>>6&66076671,a[e+12>>2]=n,n=(0|Hn(t+12|0))>>>8&1048575,a[e+16>>2]=n,a[e+20>>2]=0,a[e+20+4>>2]=0,a[e+20+8>>2]=0,a[e+20+12>>2]=0,a[e+20+16>>2]=0,n=0|Hn(t+16|0),a[e+40>>2]=n,n=0|Hn(t+20|0),a[e+44>>2]=n,n=0|Hn(t+24|0),a[e+48>>2]=n,t=0|Hn(t+28|0),a[e+52>>2]=t,a[e+56>>2]=0,a[e+56+4>>2]=0,r[e+80>>0]=0}function ve(e,t,n,r,o,i){e|=0,t|=0,n|=0,r|=0,o|=0,i|=0;var c=0,s=0,g=0;do{if(o>>>0<0|0==(0|o)&r>>>0<64||(c=0|vn(0|r,0|o,-64,-1),(s=0|l())>>>0>0|0==(0|s)&c>>>0>4294967231))g=10;else{if(0|Fn(n,n+64|0,c,s,i)){if(!e){g=10;break}Ge(0|e,0,0|c),g=10;break}0|t&&(a[t>>2]=c,a[t+4>>2]=s),e?(Ft(0|e,n+64|0,0|c),r=0):r=0}}while(0);return 10==(0|g)&&(t?(a[t>>2]=0,a[t+4>>2]=0,r=-1):r=-1),0|r}function Ze(e,t){t|=0;var n,o,i=0,c=0;if(n=C,o=C=C+63&-64,C=C+32|0,0|(e|=0)&&0|(i=0|a[e+28>>2])){a[o>>2]=t,c=0;do{if(r[o+8>>0]=c,i){t=0;do{a[o+4>>2]=t,a[o+12>>2]=0,a[o+16>>2]=a[o>>2],a[o+16+4>>2]=a[o+4>>2],a[o+16+8>>2]=a[o+8>>2],a[o+16+12>>2]=a[o+12>>2],S(e,o+16|0),t=t+1|0,i=0|a[e+28>>2]}while(t>>>0<i>>>0)}else i=0;c=c+1|0}while(4!=(0|c))}C=n}function Xe(e,t,n,o){e|=0,n|=0,o|=0;var i,c,s=0;if(i=C,c=C=C+63&-64,C=C+192|0,((t|=0)-1&255)>63&&Gr(),!((o+-1&255)>63|0==(0|n))){r[c+128>>0]=t,r[c+128+1>>0]=o,r[c+128+2>>0]=1,r[c+128+3>>0]=1,Jn(c+128+4|0),Ot(c+128+8|0,0,0),s=48+(t=c+128+16|0)|0;do{a[t>>2]=0,t=t+4|0}while((0|t)<(0|s));return Ye(e,c+128|0),Ge(c+(255&o)|0,0,128-(255&o)|0),te(0|c,0|n,255&o|0),K(e,c,128,0),Ut(c,128),void(C=i)}Gr()}function We(e,t){e|=0,t|=0;var n,r,o=0;r=C,n=C=C+63&-64,C=C+16|0;do{if(0!=(0|e)&&0!=(0|t)&&1024==(0|(t<<10>>>0)/(t>>>0))&&(o=0|h(12),a[e>>2]=o,0!=(0|o))){if(a[o+4>>2]=0,a[o>>2]=0,o=0|In(n,t<<10),a[8678]=o,o)a[n>>2]=0;else if(0|(o=0|a[n>>2])){a[a[e>>2]>>2]=o,a[4+(0|a[e>>2])>>2]=o,a[8+(0|a[e>>2])>>2]=t<<10,o=0;break}G(0|a[e>>2]),a[e>>2]=0,o=-22}else o=-22}while(0);return C=r,0|o}function Re(e,t,n,r,i,c){var s,l,g;return e|=0,t|=0,n|=0,r|=0,c|=0,l=C,s=C=C+63&-64,C=C+32|0,g=o[4+(i|=0)>>0]|o[i+4+1>>0]<<8|o[i+4+2>>0]<<16|o[i+4+3>>0]<<24,a[s+16>>2]=o[i>>0]|o[i+1>>0]<<8|o[i+2>>0]<<16|o[i+3>>0]<<24,a[s+16+4>>2]=g,a[s+16+8>>2]=0,a[s+16+8+4>>2]=0,Ot(s,n,r),a[s+8>>2]=0,a[s+8+4>>2]=0,(t+-16|0)>>>0>48?(a[8678]=28,n=-1):n=0|function(e,t,n,r,a){return n|=0,((t|=0)-1|0)>>>0>63?n=-1:(function(e,t,n,r,a){var o,i;if(t|=0,n|=0,r|=0,a|=0,o=C,i=C=C+63&-64,C=C+368|0,(e|=0)||Gr(),(n+-1&255)>63&&Gr(),t)return se(i,n,t,r,a),K(i,0,0,0),R(i,e,n),void(C=o);Gr()}(e|=0,n,255&t,r|=0,a|=0),n=0),0|n}(e,t,c,s,s+16|0),C=l,0|n}function Ve(e,t,n,r,i,c,s,g,I,B,A){var u;return e|=0,t|=0,n|=0,r|=0,i|=0,c|=0,s|=0,g|=0,I|=0,B|=0,A|=0,u=C,C=C+48|0,a[u+32>>2]=0,x(u,B,A),t=o[B+16+4>>0]|o[B+16+4+1>>0]<<8|o[B+16+4+2>>0]<<16|o[B+16+4+3>>0]<<24,a[u+32+4>>2]=o[B+16>>0]|o[B+16+1>>0]<<8|o[B+16+2>>0]<<16|o[B+16+3>>0]<<24,a[u+32+4+4>>2]=t,t=0|function(e,t,n,r,a,o,i,c,s,g){var I;e|=0,t|=0,n|=0,r|=0,a|=0,o|=0,i|=0,c|=0,I=C,C=C+352|0,jt(I+16|0,64,0,s|=0,g|=0),Kn(I+80|0,I+16|0),Ut(I+16|0,64),Zn(I+80|0,o,i,c),o=0|En(0,0,0|i,0|c),l(),Zn(I+80|0,34640,15&o,0),Zn(I+80|0,t,n,r),o=0|En(0,0,0|n,0|r),l(),Zn(I+80|0,34640,15&o,0),Ot(I+336|0,i,c),Zn(I+80|0,I+336|0,8,0),Ot(I+336|0,n,r),Zn(I+80|0,I+336|0,8,0),jn(I+80|0,I),Ut(I+80|0,256),i=0|lr(I,a),Ut(I,16);do{if(e){if(i){Ge(0|e,0,0|n),i=-1;break}Vt(e,t,n,r,s,1,g),i=0;break}}while(0);return C=I,0|i}(e,n,r,i,c,s,g,I,u+32|0,u),Ut(u,32),C=u,0|t}function Oe(e,t,n,o,i,c,s){t|=0,n|=0,o|=0,i|=0,c|=0,s|=0;var l,g,I,B=0;I=C,l=C=C+63&-64,C=C+16|0,g=128+(B=e|=0)|0;do{r[B>>0]=0,B=B+1|0}while((0|B)<(0|g));do{if(!((c|o)>>>0>0|0==(c|o|0)&(i|n)>>>0>4294967295|s>>>0>2147483648)){if(c>>>0<0|0==(0|c)&i>>>0<3|s>>>0<8192){a[8678]=28,n=-1;break}qt(l,16),n=(0!=(0|mn(i,s>>>10,t,n,l,e)))<<31>>31;break}a[8678]=22,n=-1}while(0);return C=I,0|n}function xe(e,t,n,r,i,c,s,g,I,B,A,u){return e|=0,t|=0,n|=0,r|=0,i|=0,c|=0,s|=0,g|=0,I|=0,B|=0,A|=0,u|=0,B=C,C=C+48|0,a[B+32>>2]=0,x(B,A,u),u=o[A+16+4>>0]|o[A+16+4+1>>0]<<8|o[A+16+4+2>>0]<<16|o[A+16+4+3>>0]<<24,a[B+32+4>>2]=o[A+16>>0]|o[A+16+1>>0]<<8|o[A+16+2>>0]<<16|o[A+16+3>>0]<<24,a[B+32+4+4>>2]=u,function(e,t,n,r,o,i,c,s,g,I,B){var A;e|=0,t|=0,n|=0,r|=0,o|=0,i|=0,c|=0,s|=0,g|=0,A=C,C=C+336|0,jt(A,64,0,I|=0,B|=0),Kn(A+64|0,A),Ut(A,64),Zn(A+64|0,c,s,g),c=0|En(0,0,0|s,0|g),l(),Zn(A+64|0,34640,15&c,0),Vt(e,r,o,i,I,1,B),Zn(A+64|0,e,o,i),I=0|En(0,0,0|o,0|i),l(),Zn(A+64|0,34640,15&I,0),Ot(A+320|0,s,g),Zn(A+64|0,A+320|0,8,0),Ot(A+320|0,o,i),Zn(A+64|0,A+320|0,8,0),jn(A+64|0,t),Ut(A+64|0,256),0|n&&(a[n>>2]=16,a[n+4>>2]=0),C=A}(e,t,n,r,i,c,s,g,I,B+32|0,B),Ut(B,32),C=B,0}function Te(e,t,n,o,i){e|=0,t|=0,n|=0,o|=0,i|=0;var c=0,s=0;e:do{if(i){for(s=0|a[n>>2];;){if(s>>>0>=t>>>0){c=4;break}if((c=0|r[e+s>>0])<<24>>24!=61){if(!o){c=9;break}if(!(0|Sn(o,c<<24>>24))){c=9;break}}else i=i+-1|0;if(s=s+1|0,a[n>>2]=s,!i){i=0;break e}}if(4==(0|c)){a[8678]=68,i=-1;break}if(9==(0|c)){a[8678]=28,i=-1;break}}else i=0}while(0);return 0|i}function Ne(e,t,n,o,i,c,s){t|=0,n|=0,o|=0,i|=0,c|=0,s|=0;var l,g,I,B=0;I=C,l=C=C+63&-64,C=C+16|0,g=128+(B=e|=0)|0;do{r[B>>0]=0,B=B+1|0}while((0|B)<(0|g));do{if(!((c|o)>>>0>0|0==(c|o|0)&(i|n)>>>0>4294967295|s>>>0>2147483648)){if(0==(0|i)&0==(0|c)|s>>>0<8192){a[8678]=28,n=-1;break}qt(l,16),n=(0!=(0|hn(i,s>>>10,t,n,l,e)))<<31>>31;break}a[8678]=22,n=-1}while(0);return C=I,0|n}function we(e,t){var n,r,o,i,c,s,l,g,I;e|=0,I=0-(0|a[4+(t|=0)>>2])|0,g=0-(0|a[t+8>>2])|0,l=0-(0|a[t+12>>2])|0,s=0-(0|a[t+16>>2])|0,c=0-(0|a[t+20>>2])|0,i=0-(0|a[t+24>>2])|0,o=0-(0|a[t+28>>2])|0,r=0-(0|a[t+32>>2])|0,n=0-(0|a[t+36>>2])|0,a[e>>2]=0-(0|a[t>>2]),a[e+4>>2]=I,a[e+8>>2]=g,a[e+12>>2]=l,a[e+16>>2]=s,a[e+20>>2]=c,a[e+24>>2]=i,a[e+28>>2]=o,a[e+32>>2]=r,a[e+36>>2]=n}function ke(e,t){e|=0;var n,r,o=0;if(n=C,r=C=C+63&-64,C=C+1024|0,0|a[28+(t|=0)>>2]){o=0;do{Wn(e+64|0,0),Wn(e+68|0,o),D(r,1024,e,72),xt((0|a[4+(0|a[t>>2])>>2])+((0|i(0|a[t+24>>2],o))<<10)|0,r),Wn(e+64|0,1),D(r,1024,e,72),xt((0|a[4+(0|a[t>>2])>>2])+(1+(0|i(0|a[t+24>>2],o))<<10)|0,r),o=o+1|0}while(o>>>0<(0|a[t+28>>2])>>>0)}Ut(r,1024),C=n}function Ye(e,t){t|=0;var n=0,a=0,i=0,c=0;!function(e){var t,n=0,a=0;a=32352,t=64+(n=e|=0)|0;do{r[n>>0]=0|r[a>>0],n=n+1|0,a=a+1|0}while((0|n)<(0|t));Ge(e+64|0,0,293)}(e|=0),n=0;do{c=0|Yt(t+(n<<3)|0),i=0|l(),c=(o[(a=e+(n<<3)|0)>>0]|o[a+1>>0]<<8|o[a+2>>0]<<16|o[a+3>>0]<<24)^c,i=(o[a+4>>0]|o[a+4+1>>0]<<8|o[a+4+2>>0]<<16|o[a+4+3>>0]<<24)^i,r[a>>0]=c,r[a+1>>0]=c>>8,r[a+2>>0]=c>>16,r[a+3>>0]=c>>24,r[a+4>>0]=i,r[a+4+1>>0]=i>>8,r[a+4+2>>0]=i>>16,r[a+4+3>>0]=i>>24,n=n+1|0}while(8!=(0|n))}function Se(e){var t,n,r,a,i,c,g=0;return i=0|o[7+(e|=0)>>0],c=0|sn(0|o[e+6>>0],0,8),g=0|l(),a=0|sn(0|o[e+5>>0],0,16),g=0|g|l(),r=0|sn(0|o[e+4>>0],0,24),g=0|(g=0|g|l())|o[e+3>>0],n=0|sn(0|o[e+2>>0],0,40),g=0|g|l(),t=0|sn(0|o[e+1>>0],0,48),g=0|g|l(),e=0|sn(0|o[e>>0],0,56),s(0|g|l()|0),c|i|a|r|n|t|e|0}function He(e,t,n,r,o,i){t|=0,o|=0,i|=0;var c,s=0;return c=C,s=C=C+63&-64,C=C+16|0,Ft(64+(e|=0)|0,0|(n|=0),0|(r|=0)),Qn(e,s,e+64|0,r,o,i),64==(0|a[s>>2])&0==(0|a[s+4>>2])?0|t?(s=0|vn(0|r,0|o,64,0),r=0|l(),a[t>>2]=s,a[t+4>>2]=r,r=0):r=0:(0|t&&(a[t>>2]=0,a[t+4>>2]=0),Ge(0|e,0,r+64|0),r=-1),C=c,0|r}function De(e,t){t|=0;var n,o=0,i=0,c=0,s=0;n=0|r[(e|=0)>>0];e:do{if((n+-48&255)<=9){for(i=n,c=0,s=e;;){if(!(c>>>0<429496730&((i=(i<<24>>24)-48|0)>>>0>~(o=10*c|0)>>>0^1))){o=0;break e}if(c=(i>>>0>~o>>>0?0:i)+o|0,((i=0|r[(o=s+1|0)>>0])-48&255)>9)break;s=o}(0|o)!=(0|e)&&(0|s)==(0|e)|n<<24>>24!=48?a[t>>2]=c:o=0}else o=0}while(0);return 0|o}function Je(e){return((0-((0-(95^(e|=0))|0)>>>8&63^63|(0-(45^e)|0)>>>8&62^62|((e+65439|0)>>>8^255)&e+185&((122-e|0)>>>8&255^255)|((e+-65|0)>>>8^255)&e+-65&((90-e|0)>>>8&255^255)|((e+65488|0)>>>8^255)&e+4&((57-e|0)>>>8&255^255))|0)>>>8&255^255)&(0-(65^e)|0)>>>8|(0-(95^e)|0)>>>8&63^63|(0-(45^e)|0)>>>8&62^62|((e+65439|0)>>>8^255)&e+185&((122-e|0)>>>8&255^255)|((e+-65|0)>>>8^255)&e+-65&((90-e|0)>>>8&255^255)|((e+65488|0)>>>8^255)&e+4&((57-e|0)>>>8&255^255)|0}function Pe(e){return((0-((0-(47^(e|=0))|0)>>>8&63^63|(0-(43^e)|0)>>>8&62^62|((e+65439|0)>>>8^255)&e+185&((122-e|0)>>>8&255^255)|((e+-65|0)>>>8^255)&e+-65&((90-e|0)>>>8&255^255)|((e+65488|0)>>>8^255)&e+4&((57-e|0)>>>8&255^255))|0)>>>8&255^255)&(0-(65^e)|0)>>>8|(0-(47^e)|0)>>>8&63^63|(0-(43^e)|0)>>>8&62^62|((e+65439|0)>>>8^255)&e+185&((122-e|0)>>>8&255^255)|((e+-65|0)>>>8^255)&e+-65&((90-e|0)>>>8&255^255)|((e+65488|0)>>>8^255)&e+4&((57-e|0)>>>8&255^255)|0}function Me(e,t){var n,r,o,i,c,s,l,g,I;e|=0,I=0|a[4+(t|=0)>>2],g=0|a[t+8>>2],l=0|a[t+12>>2],s=0|a[t+16>>2],c=0|a[t+20>>2],i=0|a[t+24>>2],o=0|a[t+28>>2],r=0|a[t+32>>2],n=0|a[t+36>>2],a[e>>2]=a[t>>2],a[e+4>>2]=I,a[e+8>>2]=g,a[e+12>>2]=l,a[e+16>>2]=s,a[e+20>>2]=c,a[e+24>>2]=i,a[e+28>>2]=o,a[e+32>>2]=r,a[e+36>>2]=n}function Le(e){e|=0;var t=0,n=0,o=0;e:do{if(3&e)for(t=e,n=e;;){if(!(0|r[n>>0]))break e;if(!(3&(t=n=n+1|0))){t=n,o=5;break}}else t=e,o=5}while(0);if(5==(0|o)){for(;!((-2139062144&(n=0|a[t>>2])^-2139062144)&n+-16843009);)t=t+4|0;if((255&n)<<24>>24)do{t=t+1|0}while(0!=(0|r[t>>0]))}return t-e|0}function ze(e,t){t|=0;var n=0;a[(e|=0)>>2]=1634760805,a[e+4>>2]=857760878,a[e+8>>2]=2036477234,a[e+12>>2]=1797285236,n=0|Hn(t),a[e+16>>2]=n,n=0|Hn(t+4|0),a[e+20>>2]=n,n=0|Hn(t+8|0),a[e+24>>2]=n,n=0|Hn(t+12|0),a[e+28>>2]=n,n=0|Hn(t+16|0),a[e+32>>2]=n,n=0|Hn(t+20|0),a[e+36>>2]=n,n=0|Hn(t+24|0),a[e+40>>2]=n,t=0|Hn(t+28|0),a[e+44>>2]=t}function je(e,t,n){t|=0,n|=0;var a=0;r[7+(e|=0)>>0]=t,a=0|Bn(0|t,0|n,8),l(),r[e+6>>0]=a,a=0|Bn(0|t,0|n,16),l(),r[e+5>>0]=a,a=0|Bn(0|t,0|n,24),l(),r[e+4>>0]=a,r[e+3>>0]=n,a=0|Bn(0|t,0|n,40),l(),r[e+2>>0]=a,a=0|Bn(0|t,0|n,48),l(),r[e+1>>0]=a,n=0|Bn(0|t,0|n,56),l(),r[e>>0]=n}function Ke(e,t,n){var r,a;n|=0,r=C,a=C=C+63&-64,C=C+48|0,Fe(e|=0,40+(t|=0)|0,t),me(e+40|0,t+40|0,t),m(e+80|0,e,n+40|0),m(e+40|0,e+40|0,n),m(e+120|0,n+120|0,t+120|0),m(e,t+80|0,n+80|0),Fe(a,e,e),me(e,e+80|0,e+40|0),Fe(e+40|0,e+80|0,e+40|0),me(e+80|0,a,e+120|0),Fe(e+120|0,a,e+120|0),C=r}function qe(e,t,n){var r,a;n|=0,r=C,a=C=C+63&-64,C=C+48|0,Fe(e|=0,40+(t|=0)|0,t),me(e+40|0,t+40|0,t),m(e+80|0,e,n),m(e+40|0,e+40|0,n+40|0),m(e+120|0,n+120|0,t+120|0),m(e,t+80|0,n+80|0),Fe(a,e,e),me(e,e+80|0,e+40|0),Fe(e+40|0,e+80|0,e+40|0),Fe(e+80|0,a,e+120|0),me(e+120|0,a,e+120|0),C=r}function $e(e,t,n){var r,a;n|=0,r=C,a=C=C+63&-64,C=C+48|0,Fe(e|=0,40+(t|=0)|0,t),me(e+40|0,t+40|0,t),m(e+80|0,e,n+40|0),m(e+40|0,e+40|0,n),m(e+120|0,n+80|0,t+120|0),Fe(a,t+80|0,t+80|0),me(e,e+80|0,e+40|0),Fe(e+40|0,e+80|0,e+40|0),me(e+80|0,a,e+120|0),Fe(e+120|0,a,e+120|0),C=r}function et(e,t,n){var r,a;n|=0,r=C,a=C=C+63&-64,C=C+48|0,Fe(e|=0,40+(t|=0)|0,t),me(e+40|0,t+40|0,t),m(e+80|0,e,n),m(e+40|0,e+40|0,n+40|0),m(e+120|0,n+80|0,t+120|0),Fe(a,t+80|0,t+80|0),me(e,e+80|0,e+40|0),Fe(e+40|0,e+80|0,e+40|0),Fe(e+80|0,a,e+120|0),me(e+120|0,a,e+120|0),C=r}function tt(e,t,n){var i,c;if(e|=0,t|=0,n|=0,i=C,c=C=C+63&-64,C=C+16|0,a[c+4>>2]=e,a[c>>2]=t,r[c+8>>0]=0,0|n){e=0;do{r[c+8>>0]=r[c+8>>0]|r[(0|a[c>>2])+e>>0]^r[(0|a[c+4>>2])+e>>0],e=e+1|0}while((0|e)!=(0|n))}return C=i,((511+(0|o[c+8>>0])|0)>>>8&1)-1|0}function nt(e,t){e|=0;var n,o,i=0;if(n=C,o=C=C+63&-64,C=C+64|0,!(((t|=0)-1&255)>63)){r[o>>0]=t,r[o+1>>0]=0,r[o+2>>0]=1,r[o+3>>0]=1,Jn(o+4|0),Ot(o+8|0,0,0),i=48+(t=o+16|0)|0;do{a[t>>2]=0,t=t+4|0}while((0|t)<(0|i));return Ye(e,o),void(C=n)}Gr()}function rt(e,t,n){var o,i;e|=0,t|=0,n|=0,o=C,i=C=C+63&-64,C=C+16|0,a[i+8>>2]=e,a[i+4>>2]=t,a[i>>2]=0,e=0;do{a[i>>2]=a[i>>2]|255&(r[(0|a[i+4>>2])+e>>0]^r[(0|a[i+8>>2])+e>>0]),e=e+1|0}while((0|e)!=(0|n));return C=o,((511+(0|a[i>>2])|0)>>>8&1)-1|0}function at(e,t,n){t|=0,n|=0;var a=0,i=0;a=0|r[(e|=0)>>0];e:do{if(a<<24>>24)for(;;){if(n=n+-1|0,!(a<<24>>24==(i=0|r[t>>0])<<24>>24&0!=(0|n)&i<<24>>24!=0))break e;if(t=t+1|0,!((a=0|r[(e=e+1|0)>>0])<<24>>24)){a=0;break}}else a=0}while(0);return(255&a)-(0|o[t>>0])|0}function ot(e,t){e|=0,t|=0;var n,a,o=0,c=0,s=0,l=0;for(n=C,a=C=C+63&-64,C=C+16|0,c=10;l=255&((s=t)+(0|i(t=(t>>>0)/10|0,-10))|48),r[a+(o=c+-1|0)>>0]=l,s>>>0>9&0!=(0|o);)c=o;te(0|e,a+o|0,0|(l=11-c|0)),r[e+l>>0]=0,C=n}function it(e,t){var n,r;n=C,r=C=C+63&-64,C=C+48|0,f(e|=0,t|=0),f(e+80|0,t+40|0),function(e,t){e|=0;var n,r,o,i,c,s,g,I,B,A,u,d,_,C,b,p,Q,h,y,m,F,U,f,G,E,v,Z,X,W,R,V,O,x,T,N,w,k,Y,S,H,D,J,P,M,L,z,j,K,q,$,ee,te,ne=0,re=0,ae=0,oe=0,ie=0,ce=0,se=0,le=0,ge=0,Ie=0,Be=0,Ae=0,ue=0,de=0,_e=0,Ce=0,be=0,pe=0,Qe=0,he=0,ye=0,me=0,Fe=0,Ue=0,fe=0,Ge=0,Ee=0,ve=0,Ze=0,Xe=0,We=0,Re=0,Ve=0,Oe=0,xe=0,Te=0,Ne=0,we=0,ke=0,Ye=0,Se=0,He=0,De=0,Je=0,Pe=0,Me=0,Le=0,ze=0,je=0,Ke=0,qe=0,$e=0,et=0,tt=0,nt=0,rt=0,at=0;le=0|a[(t|=0)>>2],_e=0|a[t+4>>2],Ae=0|a[t+8>>2],he=0|a[t+12>>2],re=0|a[t+16>>2],ye=0|a[t+20>>2],Ce=0|a[t+24>>2],ce=0|a[t+28>>2],ie=0|a[t+32>>2],t=0|a[t+36>>2],$=0|$t(0|le,((0|le)<0)<<31>>31|0,0|le,((0|le)<0)<<31>>31|0),at=0|l(),M=0|$t(le<<1|0,0|(ge=((le<<1|0)<0)<<31>>31),0|_e,((0|_e)<0)<<31>>31|0),et=0|l(),D=0|$t(0|Ae,((0|Ae)<0)<<31>>31|0,le<<1|0,0|ge),H=0|l(),N=0|$t(0|he,((0|he)<0)<<31>>31|0,le<<1|0,0|ge),T=0|l(),Z=0|$t(0|re,((0|re)<0)<<31>>31|0,le<<1|0,0|ge),He=0|l(),U=0|$t(0|ye,((0|ye)<0)<<31>>31|0,le<<1|0,0|ge),Ne=0|l(),p=0|$t(0|Ce,((0|Ce)<0)<<31>>31|0,le<<1|0,0|ge),Ve=0|l(),u=0|$t(0|ce,((0|ce)<0)<<31>>31|0,le<<1|0,0|ge),ve=0|l(),c=0|$t(0|ie,((0|ie)<0)<<31>>31|0,le<<1|0,0|ge),Ue=0|l(),ge=0|$t(0|t,((0|t)<0)<<31>>31|0,le<<1|0,0|ge),le=0|l(),S=0|$t(_e<<1|0,0|(ne=((_e<<1|0)<0)<<31>>31),0|_e,((0|_e)<0)<<31>>31|0),Ke=0|l(),x=0|$t(_e<<1|0,0|ne,0|Ae,((0|Ae)<0)<<31>>31|0),Me=0|l(),R=0|$t(he<<1|0,0|(ae=((he<<1|0)<0)<<31>>31),_e<<1|0,0|ne),W=0|l(),E=0|$t(0|re,((0|re)<0)<<31>>31|0,_e<<1|0,0|ne),G=0|l(),Q=0|$t(ye<<1|0,((ye<<1|0)<0)<<31>>31|0,_e<<1|0,0|ne),Oe=0|l(),d=0|$t(0|Ce,((0|Ce)<0)<<31>>31|0,_e<<1|0,0|ne),Ze=0|l(),s=0|$t(ce<<1|0,((ce<<1|0)<0)<<31>>31|0,_e<<1|0,0|ne),fe=0|l(),Ie=0|$t(0|ie,((0|ie)<0)<<31>>31|0,_e<<1|0,0|ne),Be=0|l(),ne=0|$t(38*t|0,0|(de=((38*t|0)<0)<<31>>31),_e<<1|0,0|ne),_e=0|l(),X=0|$t(0|Ae,((0|Ae)<0)<<31>>31|0,0|Ae,((0|Ae)<0)<<31>>31|0),De=0|l(),f=0|$t(Ae<<1|0,((Ae<<1|0)<0)<<31>>31|0,0|he,((0|he)<0)<<31>>31|0),we=0|l(),h=0|$t(0|re,((0|re)<0)<<31>>31|0,Ae<<1|0,((Ae<<1|0)<0)<<31>>31|0),xe=0|l(),b=0|$t(0|ye,((0|ye)<0)<<31>>31|0,Ae<<1|0,((Ae<<1|0)<0)<<31>>31|0),C=0|l(),A=0|$t(0|Ce,((0|Ce)<0)<<31>>31|0,Ae<<1|0,((Ae<<1|0)<0)<<31>>31|0),B=0|l(),n=0|$t(0|ce,((0|ce)<0)<<31>>31|0,Ae<<1|0,((Ae<<1|0)<0)<<31>>31|0),me=0|l(),j=0|$t(19*ie|0,0|(Re=((19*ie|0)<0)<<31>>31),Ae<<1|0,((Ae<<1|0)<0)<<31>>31|0),tt=0|l(),Ae=0|$t(38*t|0,0|de,0|Ae,((0|Ae)<0)<<31>>31|0),be=0|l(),m=0|$t(he<<1|0,0|ae,0|he,((0|he)<0)<<31>>31|0),y=0|l(),_=0|$t(he<<1|0,0|ae,0|re,((0|re)<0)<<31>>31|0),Xe=0|l(),g=0|$t(ye<<1|0,((ye<<1|0)<0)<<31>>31|0,he<<1|0,0|ae),Ge=0|l(),i=0|$t(0|Ce,((0|Ce)<0)<<31>>31|0,he<<1|0,0|ae),o=0|l(),K=0|$t(38*ce|0,0|(Se=((38*ce|0)<0)<<31>>31),he<<1|0,0|ae),nt=0|l(),J=0|$t(19*ie|0,0|Re,he<<1|0,0|ae),qe=0|l(),ae=0|$t(38*t|0,0|de,he<<1|0,0|ae),he=0|l(),I=0|$t(0|re,((0|re)<0)<<31>>31|0,0|re,((0|re)<0)<<31>>31|0),Ee=0|l(),r=0|$t(re<<1|0,((re<<1|0)<0)<<31>>31|0,0|ye,((0|ye)<0)<<31>>31|0),Fe=0|l(),q=0|$t(19*Ce|0,((19*Ce|0)<0)<<31>>31|0,re<<1|0,((re<<1|0)<0)<<31>>31|0),rt=0|l(),P=0|$t(38*ce|0,0|Se,0|re,((0|re)<0)<<31>>31|0),$e=0|l(),w=0|$t(19*ie|0,0|Re,re<<1|0,((re<<1|0)<0)<<31>>31|0),Le=0|l(),re=0|$t(38*t|0,0|de,0|re,((0|re)<0)<<31>>31|0),pe=0|l(),te=0|$t(38*ye|0,((38*ye|0)<0)<<31>>31|0,0|ye,((0|ye)<0)<<31>>31|0),ee=0|l(),z=0|$t(19*Ce|0,((19*Ce|0)<0)<<31>>31|0,ye<<1|0,((ye<<1|0)<0)<<31>>31|0),L=0|l(),k=0|$t(38*ce|0,0|Se,ye<<1|0,((ye<<1|0)<0)<<31>>31|0),ze=0|l(),V=0|$t(19*ie|0,0|Re,ye<<1|0,((ye<<1|0)<0)<<31>>31|0),Je=0|l(),ye=0|$t(38*t|0,0|de,ye<<1|0,((ye<<1|0)<0)<<31>>31|0),ue=0|l(),Y=0|$t(19*Ce|0,((19*Ce|0)<0)<<31>>31|0,0|Ce,((0|Ce)<0)<<31>>31|0),je=0|l(),O=0|$t(38*ce|0,0|Se,0|Ce,((0|Ce)<0)<<31>>31|0),Pe=0|l(),v=0|$t(19*ie|0,0|Re,Ce<<1|0,((Ce<<1|0)<0)<<31>>31|0),ke=0|l(),Ce=0|$t(38*t|0,0|de,0|Ce,((0|Ce)<0)<<31>>31|0),se=0|l(),Se=0|$t(38*ce|0,0|Se,0|ce,((0|ce)<0)<<31>>31|0),Ye=0|l(),F=0|$t(19*ie|0,0|Re,ce<<1|0,((ce<<1|0)<0)<<31>>31|0),Te=0|l(),ce=0|$t(38*t|0,0|de,ce<<1|0,((ce<<1|0)<0)<<31>>31|0),Qe=0|l(),Re=0|$t(19*ie|0,0|Re,0|ie,((0|ie)<0)<<31>>31|0),We=0|l(),ie=0|$t(38*t|0,0|de,0|ie,((0|ie)<0)<<31>>31|0),oe=0|l(),t=0|$t(38*t|0,0|de,0|t,((0|t)<0)<<31>>31|0),de=0|l(),_e=0|vn(0|(tt=0|vn(0|(nt=0|vn(0|(rt=0|vn(0|(at=0|vn(0|te,0|ee,0|$,0|at)),0|l(),0|q,0|rt)),0|l(),0|K,0|nt)),0|l(),0|j,0|tt)),0|l(),0|ne,0|_e),ne=0|l(),be=0|vn(0|(qe=0|vn(0|($e=0|vn(0|(et=0|vn(0|z,0|L,0|M,0|et)),0|l(),0|P,0|$e)),0|l(),0|J,0|qe)),0|l(),0|Ae,0|be),Ae=0|l(),he=0|vn(0|(Le=0|vn(0|(ze=0|vn(0|(je=0|vn(0|(Ke=0|vn(0|D,0|H,0|S,0|Ke)),0|l(),0|Y,0|je)),0|l(),0|k,0|ze)),0|l(),0|w,0|Le)),0|l(),0|ae,0|he),ae=0|l(),pe=0|vn(0|(Je=0|vn(0|(Pe=0|vn(0|(Me=0|vn(0|N,0|T,0|x,0|Me)),0|l(),0|O,0|Pe)),0|l(),0|V,0|Je)),0|l(),0|re,0|pe),re=0|l(),ue=0|vn(0|(ke=0|vn(0|(Ye=0|vn(0|(He=0|vn(0|(De=0|vn(0|R,0|W,0|X,0|De)),0|l(),0|Z,0|He)),0|l(),0|Se,0|Ye)),0|l(),0|v,0|ke)),0|l(),0|ye,0|ue),ye=0|l(),se=0|vn(0|(Te=0|vn(0|(Ne=0|vn(0|(we=0|vn(0|E,0|G,0|f,0|we)),0|l(),0|U,0|Ne)),0|l(),0|F,0|Te)),0|l(),0|Ce,0|se),Ce=0|l(),Qe=0|vn(0|(We=0|vn(0|(Ve=0|vn(0|(Oe=0|vn(0|(xe=0|vn(0|m,0|y,0|h,0|xe)),0|l(),0|Q,0|Oe)),0|l(),0|p,0|Ve)),0|l(),0|Re,0|We)),0|l(),0|ce,0|Qe),ce=0|l(),oe=0|vn(0|(ve=0|vn(0|(Ze=0|vn(0|(Xe=0|vn(0|b,0|C,0|_,0|Xe)),0|l(),0|d,0|Ze)),0|l(),0|u,0|ve)),0|l(),0|ie,0|oe),ie=0|l(),de=0|vn(0|(Ue=0|vn(0|(fe=0|vn(0|(Ge=0|vn(0|(Ee=0|vn(0|A,0|B,0|I,0|Ee)),0|l(),0|g,0|Ge)),0|l(),0|s,0|fe)),0|l(),0|c,0|Ue)),0|l(),0|t,0|de),t=0|l(),le=0|vn(0|(Be=0|vn(0|(me=0|vn(0|(Fe=0|vn(0|i,0|o,0|r,0|Fe)),0|l(),0|n,0|me)),0|l(),0|Ie,0|Be)),0|l(),0|ge,0|le),ge=0|l(),ne=0|sn(0|_e,0|ne,1),_e=0|l(),Ae=0|sn(0|be,0|Ae,1),be=0|l(),ae=0|sn(0|he,0|ae,1),he=0|l(),re=0|sn(0|pe,0|re,1),pe=0|l(),ye=0|sn(0|ue,0|ye,1),ue=0|l(),Ce=0|sn(0|se,0|Ce,1),se=0|l(),ce=0|sn(0|Qe,0|ce,1),Qe=0|l(),ie=0|sn(0|oe,0|ie,1),oe=0|l(),t=0|sn(0|de,0|t,1),de=0|l(),ge=0|sn(0|le,0|ge,1),le=0|l(),be=0|vn(0|(me=0|tn(0|(Be=0|vn(0|ne,0|_e,33554432,0)),0|(Ie=0|l()),26)),0|l(),0|Ae,0|be),Ae=0|l(),Ie=0|En(0|ne,0|_e,-67108864&Be|0,0|Ie),Be=0|l(),se=0|vn(0|(me=0|tn(0|(_e=0|vn(0|ye,0|ue,33554432,0)),0|(ne=0|l()),26)),0|l(),0|Ce,0|se),Ce=0|l(),ne=0|En(0|ye,0|ue,-67108864&_e|0,0|ne),_e=0|l(),he=0|vn(0|(ye=0|tn(0|(ue=0|vn(0|be,0|Ae,16777216,0)),0|l(),25)),0|l(),0|ae,0|he),ae=0|l(),ue=0|En(0|be,0|Ae,-33554432&ue|0,0),Ae=0|l(),Qe=0|vn(0|(ye=0|tn(0|(be=0|vn(0|se,0|Ce,16777216,0)),0|l(),25)),0|l(),0|ce,0|Qe),ce=0|l(),be=0|En(0|se,0|Ce,-33554432&be|0,0),Ce=0|l(),pe=0|vn(0|(ye=0|tn(0|(se=0|vn(0|he,0|ae,33554432,0)),0|l(),26)),0|l(),0|re,0|pe),re=0|l(),se=0|En(0|he,0|ae,-67108864&se|0,0),l(),oe=0|vn(0|(he=0|tn(0|(ae=0|vn(0|Qe,0|ce,33554432,0)),0|l(),26)),0|l(),0|ie,0|oe),ie=0|l(),ae=0|En(0|Qe,0|ce,-67108864&ae|0,0),l(),_e=0|vn(0|(Qe=0|tn(0|(ce=0|vn(0|pe,0|re,16777216,0)),0|l(),25)),0|l(),0|ne,0|_e),ne=0|l(),ce=0|En(0|pe,0|re,-33554432&ce|0,0),l(),de=0|vn(0|(pe=0|tn(0|(re=0|vn(0|oe,0|ie,16777216,0)),0|l(),25)),0|l(),0|t,0|de),t=0|l(),re=0|En(0|oe,0|ie,-33554432&re|0,0),l(),oe=0|vn(0|be,0|Ce,0|(oe=0|Bn(0|(ie=0|vn(0|_e,0|ne,33554432,0)),0|l(),26)),0|l()),l(),ie=0|En(0|_e,0|ne,-67108864&ie|0,0),l(),le=0|vn(0|(_e=0|tn(0|(ne=0|vn(0|de,0|t,33554432,0)),0|l(),26)),0|l(),0|ge,0|le),ge=0|l(),ne=0|En(0|de,0|t,-67108864&ne|0,0),l(),Be=0|vn(0|(de=0|$t(0|(de=0|tn(0|(t=0|vn(0|le,0|ge,16777216,0)),0|l(),25)),0|l(),19,0)),0|l(),0|Ie,0|Be),Ie=0|l(),t=0|En(0|le,0|ge,-33554432&t|0,0),l(),le=0|vn(0|ue,0|Ae,0|(le=0|Bn(0|(ge=0|vn(0|Be,0|Ie,33554432,0)),0|l(),26)),0|l()),l(),ge=0|En(0|Be,0|Ie,-67108864&ge|0,0),l(),a[e>>2]=ge,a[e+4>>2]=le,a[e+8>>2]=se,a[e+12>>2]=ce,a[e+16>>2]=ie,a[e+20>>2]=oe,a[e+24>>2]=ae,a[e+28>>2]=re,a[e+32>>2]=ne,a[e+36>>2]=t}(e+120|0,t+80|0),Fe(e+40|0,t,t+40|0),f(r,e+40|0),Fe(e+40|0,e+80|0,e),me(e+80|0,e+80|0,e),me(e,r,e+40|0),me(e+120|0,e+120|0,e+80|0),C=n}function ct(e,t,n){var a,i;if(e|=0,t|=0,n|=0,i=C,a=C=C+63&-64,C=C+16|0,r[a>>0]=0,0|function(e,t,n){e|=0,t|=0;var a,i,c=0;if(i=C,a=C=C+63&-64,C=C+336|0,0|function(e){e|=0;var t,n,a=0,i=0,c=0,s=0;t=C,n=C=C+63&-64,C=C+16|0,r[n>>0]=0,r[n+1>>0]=0,r[n+2>>0]=0,r[n+3>>0]=0,r[n+4>>0]=0,r[n+5>>0]=0,r[n+6>>0]=0,c=0;do{a=0|r[e+c>>0],i=0;do{r[(s=n+i|0)>>0]=r[s>>0]|r[33184+(i<<5)+c>>0]^a,i=i+1|0}while(7!=(0|i));c=c+1|0}while(31!=(0|c));a=127&r[e+31>>0],i=0;do{r[(s=n+i|0)>>0]=r[s>>0]|a^r[33184+(i<<5)+31>>0],i=i+1|0}while(7!=(0|i));a=0,i=0;do{i=(0|o[n+a>>0])-1|i,a=a+1|0}while(7!=(0|a));return C=t,i>>>8&1|0}(n|=0))c=-1;else{c=0;do{r[e+c>>0]=0|r[t+c>>0],c=c+1|0}while(32!=(0|c));for(r[e>>0]=-8&r[e>>0],r[e+31>>0]=63&r[e+31>>0]|64,X(a+288|0,n),Gn(a+240|0),Nn(a+192|0),Me(a+144|0,a+288|0),Gn(a+96|0),c=254,t=0;n=t,q(a+240|0,a+144|0,n^=t=(0|o[e+(c>>>3)>>0])>>>(7&c)&1),q(a+192|0,a+96|0,n),me(a+48|0,a+144|0,a+96|0),me(a,a+240|0,a+192|0),Fe(a+240|0,a+240|0,a+192|0),Fe(a+192|0,a+144|0,a+96|0),m(a+96|0,a+48|0,a+240|0),m(a+192|0,a+192|0,a),f(a+48|0,a),f(a,a+240|0),Fe(a+144|0,a+96|0,a+192|0),me(a+192|0,a+96|0,a+192|0),m(a+240|0,a,a+48|0),me(a,a,a+48|0),f(a+192|0,a+192|0),W(a+96|0,a),f(a+144|0,a+144|0),Fe(a+48|0,a+48|0,a+96|0),m(a+96|0,a+288|0,a+192|0),m(a+192|0,a,a+48|0),c;)c=c+-1|0;q(a+240|0,a+144|0,t),q(a+192|0,a+96|0,t),L(a+192|0,a+192|0),m(a+240|0,a+240|0,a+192|0),ne(e,a+240|0),c=0}return C=i,0|c}(e,t,n))t=-1;else{t=0;do{r[a>>0]=r[a>>0]|r[e+t>>0],t=t+1|0}while(32!=(0|t));t=0-((511+(0|o[a>>0])|0)>>>8&1)|0}return C=i,0|t}function st(e,t,n,r,a,o,i){e|=0,t|=0,a|=0,o|=0,i|=0;var c,s=0;s=0|En(0,1,0|(s=0|Bn(0|(s=0|vn(0|(n|=0),0|(r|=0),63,0)),0|l(),6)),0|l()),(c=0|l())>>>0<0|0==(0|c)&s>>>0<o>>>0?Gr():Vt(e,t,n,r,a,o,i)}function lt(e,t,n,r,a,o,i){var c,s;e|=0,t|=0,a|=0,i|=0,c=C,s=C=C+63&-64,C=C+80|0,0==(0|(n|=0))&0==(0|(r|=0))||(Wn(s+64|0,o|=0),ze(s,i),Gt(s,a,s+64|0),v(s,t,e,n,r),Ut(s,64)),C=c}function gt(e,t,n){var a,o;e|=0,a=C,o=C=C+63&-64,C=C+160|0,Wt(t|=0,n|=0,32,0),r[t>>0]=-8&r[t>>0],r[t+31>>0]=63&r[t+31>>0]|64,oe(o,t),Bt(e,o),Ft(0|t,0|n,32),Ft(t+32|0,0|e,32),C=a}function It(e,t,n,r){e|=0,t|=0,n|=0,r|=0;e:do{if(r>>>0>0|0==(0|r)&n>>>0>4294967295)a[8678]=22,n=-1;else{switch(0|ar(e,t,n)){case 0:n=0;break e;case-35:a[8678]=28}n=-1}}while(0);return 0|n}function Bt(e,t){var n,a;e|=0,n=C,a=C=C+63&-64,C=C+144|0,L(a+96|0,80+(t|=0)|0),m(a+48|0,t,a+96|0),m(a,t+40|0,a+96|0),ne(e,a),t=(0|An(a+48|0))<<7,r[e+31>>0]=t^(0|o[e+31>>0]),C=n}function At(e,t,n,r){e|=0,t|=0,n|=0,r|=0;e:do{if(r>>>0>0|0==(0|r)&n>>>0>4294967295)a[8678]=22,n=-1;else{switch(0|or(e,t,n)){case 0:n=0;break e;case-35:a[8678]=28}n=-1}}while(0);return 0|n}function ut(e,t,n,r,a,o,i,c){var s;return e|=0,t|=0,n|=0,r|=0,a|=0,o|=0,s=C,C=C+32|0,0|kn(s,i|=0,c|=0)?r=-1:(r=0|cn(e,t,n,r,a,o,s),Ut(s,32)),C=s,0|r}function dt(e,t,n,r,a,o,i,c){var s;return e|=0,t|=0,n|=0,r|=0,a|=0,o|=0,s=C,C=C+32|0,0|kn(s,i|=0,c|=0)?r=-1:(ln(e,t,n,r,a,o,s),Ut(s,32),r=0),C=s,0|r}function _t(e){e|=0;var t=0,n=0,a=0,o=0,i=0;for(o=0,i=32,t=1;o=(255&(n=0|r[e+(i=i+-1|0)>>0]))-(255&(a=0|r[32320+i>>0]))>>8&(t&=255)|255&o,i;)t&=(65535+(255&(a^n))|0)>>>8;return 0!=(0|o)|0}function Ct(e,t,n,r){return r=0|vn(0|vn(0|(n|=0),0|(r|=0),0|(e|=0),0|(t|=0)),0|l(),0|(r=0|$t(-2&(r=0|sn(0|e,0|t,1))|0,1&(0|l())|0,0|n,0)),0|l()),s(0|l()),0|r}function bt(e,t,n,r){e|=0,t|=0,n|=0,r|=0;do{if(!(n>>>0>64|(r+-1|0)>>>0>63)){if(0==(0|t)|0==(0|n)){nt(e,255&r),t=0;break}Xe(e,255&r,t,255&n),t=0;break}t=-1}while(0);return 0|t}function pt(e){var t,n,r,a=0;return n=0|o[(e|=0)>>0],r=0|sn(0|o[e+1>>0],0,8),a=0|l(),t=0|sn(0|o[e+2>>0],0,16),a=0|a|l(),e=0|sn(0|o[e+3>>0],0,24),s(0|a|l()|0),r|n|t|e|0}function Qt(e,t){e|=0,t|=0;var n,a,i=0;n=C,a=C=C+63&-64,C=C+16|0,r[a>>0]=0,i=0;do{r[a>>0]=r[a>>0]|r[e+i>>0],i=i+1|0}while((0|i)!=(0|t));return C=n,(511+(0|o[a>>0])|0)>>>8&1|0}function ht(e,t,n){e|=0,t|=0;var r=0;(n|=0)?(r=0|Hn(n),a[e+48>>2]=r,n=0|Hn(n+4|0)):(a[e+48>>2]=0,n=0),a[e+52>>2]=n,r=0|Hn(t),a[e+56>>2]=r,r=0|Hn(t+4|0),a[e+60>>2]=r}function yt(e,t,n){var r,a;e|=0,t|=0,n|=0,r=C,a=C=C+63&-64,C=C+384|0,xn(a,0,0,24),Rn(a,t,32,0),Rn(a,n,32,0),Dn(a,e,24),C=r}function mt(e,t,n,r,a,o,i){return t|=0,a|=0,o|=0,i|=0,0|((r|=0)>>>0<0|0==(0|r)&(n|=0)>>>0<16?-1:0|ut(e|=0,t+16|0,t,n=0|vn(0|n,0|r,-16,-1),0|l(),a,o,i))}function Ft(e,t,n){var a=0;if((0|(t|=0))<(0|(e|=0))&(0|e)<(t+(n|=0)|0)){for(a=e,t=t+n|0,e=e+n|0;(0|n)>0;)t=t-1|0,n=n-1|0,r[(e=e-1|0)>>0]=0|r[t>>0];e=a}else te(e,t,n);return 0|e}function Ut(e,t){var n,o;if(e|=0,t|=0,n=C,o=C=C+63&-64,C=C+16|0,a[o>>2]=e,0|t){e=0;do{r[(0|a[o>>2])+e>>0]=0,e=e+1|0}while((0|e)!=(0|t))}C=n}function ft(e,t){e|=0,t|=0;var n=0,r=0,o=0,i=0;n=0;do{i=t+(n<<3)|0,o=a[4+(r=e+(n<<3)|0)>>2]^a[i+4>>2],a[r>>2]=a[r>>2]^a[i>>2],a[r+4>>2]=o,n=n+1|0}while(128!=(0|n))}function Gt(e,t,n){e|=0,t|=0,n=(n|=0)?0|Hn(n):0,a[e+48>>2]=n,n=0|Hn(t),a[e+52>>2]=n,n=0|Hn(t+4|0),a[e+56>>2]=n,t=0|Hn(t+8|0),a[e+60>>2]=t}function Et(e,t){var n,a;t|=0,a=C,C=C+64|0,function(e,t){var n;t|=0,n=C,C=C+64|0,St(e|=0,n),O(e+208|0,n,64,0),St(e+208|0,t),Ut(n,64),C=n}(e|=0,a),e=a,n=t+32|0;do{r[t>>0]=0|r[e>>0],t=t+1|0,e=e+1|0}while((0|t)<(0|n));C=a}function vt(e){var t;return e|=0,((t=0|a[8808])+e|0)>>>0>(0|A())>>>0&&0==(0|d(t+e|0))?(a[8678]=48,0|(e=-1)):(a[8808]=t+e,0|(e=t))}function Zt(e,t,n,r,a){var o;e|=0,t|=0,n|=0,r|=0,o=C,C=C+416|0,function(e,t){ye(e|=0,t|=0)}(o,a|=0),function(e,t,n,r){Tn(e|=0,t|=0,n|=0,r|=0)}(o,t,n,r),Et(o,e),C=o}function Xt(e){var t,n=0;a[64+(e|=0)>>2]=0,a[e+64+4>>2]=0,a[e+64+8>>2]=0,a[e+64+12>>2]=0,n=32352,t=e+64|0;do{a[e>>2]=a[n>>2],e=e+4|0,n=n+4|0}while((0|e)<(0|t))}function Wt(e,t,n,r){var a,o;e|=0,t|=0,n|=0,r|=0,a=C,o=C=C+63&-64,C=C+208|0,Xt(o),O(o,t,n,r),St(o,e),C=a}function Rt(e,t,n){e|=0,t|=0;var r=0,o=0;if((n|=0)>>>3|0){r=0;do{je(e+(r<<3)|0,0|a[(o=t+(r<<3)|0)>>2],0|a[o+4>>2]),r=r+1|0}while((0|r)!=(n>>>3|0))}}function Vt(e,t,n,r,a,o,i){e|=0,t|=0,a|=0,o|=0,i|=0,(r|=0)>>>0>0|0==(0|r)&(n|=0)>>>0>4294967295?Gr():lt(e,t,n,r,a,o,i)}function Ot(e,t,n){t|=0,n|=0,r[(e|=0)>>0]=t,r[e+1>>0]=t>>8,r[e+2>>0]=t>>16,r[e+3>>0]=t>>24,r[e+4>>0]=n,r[e+4+1>>0]=n>>8,r[e+4+2>>0]=n>>16,r[e+4+3>>0]=n>>24}function xt(e,t){e|=0,t|=0;var n=0,r=0,o=0,i=0;n=0;do{i=0|Yt(t+(n<<3)|0),o=0|l(),a[(r=e+(n<<3)|0)>>2]=i,a[r+4>>2]=o,n=n+1|0}while(128!=(0|n))}function Tt(e,t,n,r,a,o,i){return e|=0,t|=0,a|=0,o|=0,i|=0,(r|=0)>>>0>0|0==(0|r)&(n|=0)>>>0>4294967279?(Gr(),0):0|dt(e+16|0,e,t,n,r,a,o,i)}function Nt(e){return(0-(62^(e|=0))|0)>>>8&45^45|(e+65510|0)>>>8&255&e+65|(0-(63^e)|0)>>>8&95^95|(e+65484|0)>>>8&e+71&((e+65510|0)>>>8&255^255)|(e+65474|0)>>>8&e+252&((e+65484|0)>>>8&255^255)|0}function wt(e){return(0-(62^(e|=0))|0)>>>8&43^43|(e+65510|0)>>>8&255&e+65|(0-(63^e)|0)>>>8&47^47|(e+65484|0)>>>8&e+71&((e+65510|0)>>>8&255^255)|(e+65474|0)>>>8&e+252&((e+65484|0)>>>8&255^255)|0}function kt(e,t,n,r,a,o,i){return r|=0,((t|=0)-1|0)>>>0>63|(i|=0)>>>0>64?r=-1:(function(e,t,n,r,a,o,i){var c,s;e|=0,n|=0,r|=0,i|=0,c=C,s=C=C+63&-64,C=C+368|0,0==(0|(t|=0))&(0!=(0|(a|=0))|0!=(0|(o|=0)))&&Gr(),e||Gr(),(r+-1&255)>63&&Gr(),0!=(0|n)|i<<24>>24==0||Gr(),(255&i)>64&&Gr(),i<<24>>24?Xe(s,r,n,i):nt(s,r),K(s,t,a,o),R(s,e,r),C=c}(e|=0,n|=0,o|=0,255&t,r,a|=0,255&i),r=0),0|r}function Yt(e){var t;return t=o[(e|=0)>>0]|o[e+1>>0]<<8|o[e+2>>0]<<16|o[e+3>>0]<<24,s(o[e+4>>0]|o[e+4+1>>0]<<8|o[e+4+2>>0]<<16|o[e+4+3>>0]<<24|0),0|t}function St(e,t){var n,r;t|=0,n=C,r=C=C+63&-64,C=C+704|0,function(e,t){t|=0;var n=0,r=0;if(n=0|Bn(0|a[72+(e|=0)>>2],0|a[e+72+4>>2],3),l(),(127&n)>>>0<112)112-(127&n)|0&&te(e+80+(127&n)|0,33056,112-(127&n)|0);else{128-(127&n)|0&&te(e+80+(127&n)|0,33056,128-(127&n)|0),Q(e,e+80|0,t,t+640|0),r=112+(n=e+80|0)|0;do{a[n>>2]=0,n=n+4|0}while((0|n)<(0|r))}Rt(e+192|0,e+64|0,16),Q(e,e+80|0,t,t+640|0)}(e|=0,r),Rt(t,e,64),Ut(r,704),Ut(e,208),C=n}function Ht(e,t,n,r,a,o){e|=0,t|=0,a|=0,o|=0,(r|=0)>>>0>0|0==(0|r)&(n|=0)>>>0>4294967295?Gr():function(e,t,n,r,a,o,i,c){var s,l;e|=0,t|=0,a|=0,c|=0,s=C,l=C=C+63&-64,C=C+80|0,0==(0|(n|=0))&0==(0|(r|=0))||(Wn(l+64|0,1),Wn(l+64+4|0,0),ze(l,c),ht(l,a,l+64|0),v(l,t,e,n,r),Ut(l,64)),C=s}(e,t,n,r,a,0,0,o)}function Dt(e){var t=0,n=0;t=127&r[31+(e|=0)>>0]^127,n=30;do{t|=~r[e+n>>0],n=n+-1|0}while(0!=(0|n));return(236-(0|o[e>>0])&511+(255&t))>>>8&1^1|0}function Jt(e,t,n,r,a){e|=0,r|=0,a|=0,(n|=0)>>>0>0|0==(0|n)&(t|=0)>>>0>4294967295?Gr():jt(e,t,n,r,a)}function Pt(e,t,n){var r,a;return r=0|Bn(0|(e|=0),0|(t|=0),0|(n|=0)),a=0|l(),n=0|sn(0|e,0|t,64-n|0),s(0|l()|a|0),n|r|0}function Mt(e,t,n){var r,a;return r=0|sn(0|(e|=0),0|(t|=0),0|(n|=0)),a=0|l(),n=0|Bn(0|e,0|t,64-n|0),s(0|l()|a|0),n|r|0}function Lt(e,t,n,r){var o;return o=C,C=C+16|0,function(e,t,n,r,o){e|=0,n|=0,r|=0,o|=0;var i=0,g=0,I=0,B=0,A=0,u=0,d=0,_=0,C=0,b=0;if(!(t|=0))return r?o?(a[o>>2]=0|e,a[o+4>>2]=0&t,o=0,0|(s(0|(r=0)),o)):(o=0,0|(s(0|(r=0)),o)):(0|o&&(a[o>>2]=(e>>>0)%(n>>>0),a[o+4>>2]=0),o=(e>>>0)/(n>>>0)>>>0,0|(s(0|(r=0)),o));do{if(n){if(0|r){if((g=(0|c(0|r))-(0|c(0|t))|0)>>>0<=31){_=g+1|0,I=e>>>((g+1|0)>>>0)&g-31>>31|t<<31-g,d=t>>>((g+1|0)>>>0)&g-31>>31,i=0,g=e<<31-g;break}return o?(a[o>>2]=0|e,a[o+4>>2]=t|0&t,o=0,0|(s(0|(r=0)),o)):(o=0,0|(s(0|(r=0)),o))}if(n-1&n|0){_=g=33+(0|c(0|n))-(0|c(0|t))|0,I=32-g-1>>31&t>>>((g-32|0)>>>0)|(t<<32-g|e>>>(g>>>0))&g-32>>31,d=g-32>>31&t>>>(g>>>0),i=e<<64-g&32-g>>31,g=(t<<64-g|e>>>((g-32|0)>>>0))&32-g>>31|e<<32-g&g-33>>31;break}return 0|o&&(a[o>>2]=n-1&e,a[o+4>>2]=0),1==(0|n)?(o=0|e,0|(s(0|(r=t|0&t)),o)):(r=t>>>((o=0|cr(0|n))>>>0)|0,o=t<<32-o|e>>>(o>>>0)|0,0|(s(0|r),o))}if(!r)return 0|o&&(a[o>>2]=(t>>>0)%(n>>>0),a[o+4>>2]=0),o=(t>>>0)/(n>>>0)>>>0,0|(s(0|(r=0)),o);if(!e)return 0|o&&(a[o>>2]=0,a[o+4>>2]=(t>>>0)%(r>>>0)),o=(t>>>0)/(r>>>0)>>>0,0|(s(0|(n=0)),o);if(!(r-1&r))return 0|o&&(a[o>>2]=0|e,a[o+4>>2]=r-1&t|0&t),n=0,o=t>>>((0|cr(0|r))>>>0),0|(s(0|n),o);if((g=(0|c(0|r))-(0|c(0|t))|0)>>>0<=30){_=g+1|0,I=t<<31-g|e>>>((g+1|0)>>>0),d=t>>>((g+1|0)>>>0),i=0,g=e<<31-g;break}return o?(a[o>>2]=0|e,a[o+4>>2]=t|0&t,o=0,0|(s(0|(r=0)),o)):(o=0,0|(s(0|(r=0)),o))}while(0);if(_){A=0|vn(0|n,r|0&r|0,-1,-1),u=0|l(),B=g,t=d,e=_,g=0;do{b=B,B=i>>>31|B<<1,i=g|i<<1,En(0|A,0|u,0|(b=I<<1|b>>>31|0),0|(C=I>>>31|t<<1|0)),g=1&(d=(_=0|l())>>31|((0|_)<0?-1:0)<<1),I=0|En(0|b,0|C,d&(0|n)|0,(((0|_)<0?-1:0)>>31|((0|_)<0?-1:0)<<1)&(r|0&r)|0),t=0|l(),e=e-1|0}while(0!=(0|e));e=0}else B=g,t=d,e=0,g=0;0|o&&(a[o>>2]=I,a[o+4>>2]=t),b=-2&(i<<1|0)|g,s(0|(C=(0|i)>>>31|B<<1|0&(0|i>>>31)|e))}(e|=0,t|=0,n|=0,r|=0,0|o),C=o,0|(s(0|a[o+4>>2]),0|a[o>>2])}function zt(e){e|=0;var t=0,n=0,a=0;for(t=1,n=0;t=t+(0|o[(a=e+n|0)>>0])|0,r[a>>0]=t,4!=(0|(n=n+1|0));)t>>>=8}function jt(e,t,n,r,a){e|=0,r|=0,a|=0,(n|=0)>>>0>0|0==(0|n)&(t|=0)>>>0>4294967295?Gr():function(e,t,n,r,a){var o,i;e|=0,r|=0,o=C,i=C=C+63&-64,C=C+64|0,0==(0|(t|=0))&0==(0|(n|=0))||(ze(i,a|=0),Gt(i,r,0),Ge(0|e,0,0|t),v(i,e,e,t,n),Ut(i,64)),C=o}(e,t,n,r,a)}function Kt(e,t,n){var r;return e|=0,n|=0,t=0|sn(255&(t|=0)|0,0,8),r=0|l(),n=0|sn(255&n|0,0,16),s(0|r|l()|0),t|255&e|n|0}function qt(e,t){e|=0;var n=0,a=0;if(0|(t|=0)){n=0;do{a=255&(0|dr()),r[e+n>>0]=a,n=n+1|0}while((0|n)!=(0|t))}}function $t(e,t,n,r){var a,o;return t|=0,r|=0,a=0|function(e,t){var n,r,a;return a=((n=0|i(65535&(t|=0),65535&(e|=0)))>>>16)+(0|i(65535&t,e>>>16))|0,r=0|i(t>>>16,65535&e),0|(s((a>>>16)+(0|i(t>>>16,e>>>16))+(((65535&a)+r|0)>>>16)|0),a+r<<16|65535&n|0)}(e|=0,n|=0),o=0|l(),0|(s((0|i(t,n))+(0|i(r,e))+o|0&o|0),0|a)}function en(e,t){m(e|=0,t|=0,t+120|0),m(e+40|0,t+40|0,t+80|0),m(e+80|0,t+80|0,t+120|0),m(e+120|0,t,t+40|0)}function tn(e,t,n){return e|=0,t|=0,(0|(n|=0))<32?(s(t>>n|0),e>>>n|(t&(1<<n)-1)<<32-n):(s(0|((0|t)<0?-1:0)),t>>n-32|0)}function nn(e,t){Fe(e|=0,40+(t|=0)|0,t),me(e+40|0,t+40|0,t),Me(e+80|0,t+80|0),m(e+120|0,t+120|0,112)}function rn(e,t){var n,r;e|=0,n=C,r=C=C+63&-64,C=C+128|0,function(e,t){Me(e|=0,t|=0),Me(e+40|0,t+40|0),Me(e+80|0,t+80|0)}(r,t|=0),it(e,r),C=n}function an(e){var t,n;return t=C,n=C=C+63&-64,C=C+32|0,ne(n,e|=0),e=0|Qt(n,32),C=t,0|e}function on(e,t){e|=0,t|=0;var n=0,a=0;n=0;do{r[(a=e+n|0)>>0]=r[a>>0]^r[t+n>>0],n=n+1|0}while(8!=(0|n))}function cn(e,t,n,r,a,o,i){return 0|ee(e|=0,t|=0,n|=0,r|=0,a|=0,o|=0,i|=0)}function sn(e,t,n){return e|=0,(0|(n|=0))<32?(s((t|=0)<<n|(e&(1<<n)-1<<32-n)>>>32-n|0),e<<n):(s(e<<n-32|0),0)}function ln(e,t,n,r,a,o,i){return j(e|=0,t|=0,n|=0,r|=0,a|=0,o|=0,i|=0),0}function gn(e,t,n){return(n|=0)>>>0<256?0|R(e|=0,t|=0,255&n):(g(33547,33567,107,33620),0)}function In(e,t){e|=0;var n=0;return(t|=0)>>>0<=4294967168&&0!=(0|(n=0|function(e){var t,n=0,r=0,o=0,i=0;if((e|=0)>>>0>=4294967168)return a[8678]=48,0;if(!(r=0|h(76+(t=e>>>0<11?16:e+11&-8)|0)))return 0;do{if(63&r){if(n=(o=((r+63&-64)-8-(r+-8)|0)>>>0>15?(r+63&-64)-8|0:56+(r+63&-64)|0)-(r+-8)|0,3&(e=0|a[r+-4>>2])){a[o+4>>2]=(-8&e)-n|1&a[o+4>>2]|2,a[o+((-8&e)-n)+4>>2]=1|a[o+((-8&e)-n)+4>>2],a[r+-4>>2]=n|1&a[r+-4>>2]|2,a[o+4>>2]=1|a[o+4>>2],E(r+-8|0,n),i=o,e=o;break}a[o>>2]=(0|a[r+-8>>2])+n,a[o+4>>2]=(-8&e)-n,i=o,e=o;break}i=r+-8|0,e=r+-8|0}while(0);return 3&(e=0|a[(n=e+4|0)>>2])|0&&(-8&e)>>>0>(t+16|0)>>>0&&(o=i+t|0,a[n>>2]=t|1&e|2,a[o+4>>2]=(-8&e)-t|3,a[(r=i+(-8&e)+4|0)>>2]=1|a[r>>2],E(o,(-8&e)-t|0)),0|i+8}(t)))?(a[e>>2]=n,t=0):t=48,0|t}function Bn(e,t,n){return e|=0,t|=0,(0|(n|=0))<32?(s(t>>>n|0),e>>>n|(t&(1<<n)-1)<<32-n):(s(0),t>>>n-32|0)}function An(e){var t,n;return n=C,t=C=C+63&-64,C=C+32|0,ne(t,e|=0),C=n,1&r[t>>0]|0}function un(e,t,n){Be(e|=0,t|=0,255&(n|=0)),Be(e+40|0,t+40|0,255&n),Be(e+80|0,t+80|0,255&n)}function dn(e,t,n,r,a,o,i){return 0|kt(e|=0,t|=0,n|=0,r|=0,a|=0,o|=0,i|=0)}function _n(e,t,n,r,a,o,i){return 0|ge(e|=0,t|=0,1,n|=0,r|=0,a|=0,16,o|=0,i|=0,0,0,2)}function Cn(e,t,n,r,a,o,i){return 0|ge(e|=0,t|=0,1,n|=0,r|=0,a|=0,16,o|=0,i|=0,0,0,1)}function bn(e,t){(function(e,t){e|=0,0|(t|=0)&&(0|(t=0|a[e>>2])&&Ut(0|a[t+4>>2],a[e+16>>2]<<10),0|(t=0|a[e+4>>2])&&Ut(t,a[e+20>>2]<<3))})(e|=0,4&(t|=0)),G(0|a[e+4>>2]),a[e+4>>2]=0,function(e){var t=0;0|(e|=0)&&0|(t=0|a[e>>2])&&G(t),G(e)}(0|a[e>>2]),a[e>>2]=0}function pn(e,t){m(e|=0,t|=0,t+120|0),m(e+40|0,t+40|0,t+80|0),m(e+80|0,t+80|0,t+120|0)}function Qn(e,t,n,r,a,o){Ce(e|=0,t|=0,n|=0,r|=0,a|=0,o|=0,0)}function hn(e,t,n,r,a,o){return 0|ge(e|=0,t|=0,1,n|=0,r|=0,a|=0,16,0,32,o|=0,128,2)}function yn(e,t,n,r,a,o){P(e|=0,t|=0,n|=0,r|=0,a|=0,1,0,o|=0)}function mn(e,t,n,r,a,o){return 0|ge(e|=0,t|=0,1,n|=0,r|=0,a|=0,16,0,32,o|=0,128,1)}function Fn(e,t,n,r,a){return 0|he(e|=0,t|=0,n|=0,r|=0,a|=0,0)}function Un(e,t,n,r,a,o){P(e|=0,t|=0,n|=0,r|=0,a|=0,0,0,o|=0)}function fn(e){r[32+(e|=0)>>0]=1,r[e+32+1>>0]=0,r[e+32+2>>0]=0,r[e+32+3>>0]=0}function Gn(e){var t;a[(e|=0)>>2]=1,t=36+(e=e+4|0)|0;do{a[e>>2]=0,e=e+4|0}while((0|e)<(0|t))}function En(e,t,n,r){return 0|(s(0|(r=(t|=0)-(r|=0)-((n|=0)>>>0>(e|=0)>>>0|0)>>>0)),e-n>>>0|0)}function vn(e,t,n,r){return 0|(s((t|=0)+(r|=0)+((e|=0)+(n|=0)>>>0>>>0<e>>>0|0)>>>0|0),e+n>>>0|0)}function Zn(e,t,n,r){!function(e,t,n,r){Y(e|=0,t|=0,n|=0,r|=0)}(e|=0,t|=0,n|=0,r|=0)}function Xn(e,t){t|=0,Xt(e|=0),0|t&&O(e,33408,34,0)}function Wn(e,t){t|=0,r[(e|=0)>>0]=t,r[e+1>>0]=t>>8,r[e+2>>0]=t>>16,r[e+3>>0]=t>>24}function Rn(e,t,n,r){return wn(e|=0,t|=0,n|=0,r|=0),0}function Vn(e,t,n,r){return 0|pe(e|=0,t|=0,n|=0,r|=0,2)}function On(e,t,n,r){return 0|pe(e|=0,t|=0,n|=0,r|=0,1)}function xn(e,t,n,r){return 0|bt(e|=0,t|=0,n|=0,r|=0)}function Tn(e,t,n,r){O(e|=0,t|=0,n|=0,r|=0)}function Nn(e){var t;t=40+(e|=0)|0;do{a[e>>2]=0,e=e+4|0}while((0|e)<(0|t))}function wn(e,t,n,r){K(e|=0,t|=0,n|=0,r|=0)}function kn(e,t,n){return 0|function(e,t,n){var r,a;return e|=0,a=C,r=C=C+63&-64,C=C+32|0,0|ct(r,n|=0,t|=0)?e=-1:(k(e,34656,r),e=0),C=a,0|e}(e|=0,t|=0,n|=0)}function Yn(e){r[(e|=0)>>0]=-8&r[e>>0],r[e+31>>0]=63&r[e+31>>0]|64}function Sn(e,t){return e=0|function(e,t){e|=0,t|=0;var n=0,o=0;e:do{if(255&t){if(3&e)do{if((o=0|r[e>>0])<<24>>24==0||o<<24>>24==(255&t)<<24>>24)break e;e=e+1|0}while(0!=(3&e|0));o=0|i(255&t,16843009),n=0|a[e>>2];t:do{if(!((-2139062144&n^-2139062144)&n+-16843009))do{if((-2139062144&(n^=o)^-2139062144)&n+-16843009|0)break t;n=0|a[(e=e+4|0)>>2]}while(!((-2139062144&n^-2139062144)&n+-16843009|0))}while(0);for(;(o=0|r[e>>0])<<24>>24!=0&&o<<24>>24!=(255&t)<<24>>24;)e=e+1|0}else e=e+(0|Le(e))|0}while(0);return 0|e}(e|=0,t|=0),0|((0|r[e>>0])==(255&t)<<24>>24?e:0)}function Hn(e){return o[(e|=0)>>0]|o[e+1>>0]<<8|o[e+2>>0]<<16|o[e+3>>0]<<24|0}function Dn(e,t,n){return 0|gn(e|=0,t|=0,n|=0)}function Jn(e){r[(e|=0)>>0]=0,r[e+1>>0]=0,r[e+2>>0]=0,r[e+3>>0]=0}function Pn(e){Nn(e|=0),Gn(e+40|0),Gn(e+80|0),Nn(e+120|0)}function Mn(e){a[(e|=0)>>2]=0,a[e+4>>2]=0,a[e+8>>2]=0,a[e+12>>2]=0}function Ln(e,t,n){!function(e,t,n){var r,a,o;e|=0,t|=0,r=C,o=C=C+63&-64,C=C+128|0,n=((n|=0)<<24>>24)-((0-(255&(a=0|function(e){return(255&(e|=0))>>>7|0}(n)))&n<<24>>24)<<1)&255,function(e){Gn(e|=0),Gn(e+40|0),Nn(e+80|0)}(e),un(e,t,0|ir(n,1)),un(e,t+120|0,0|ir(n,2)),un(e,t+240|0,0|ir(n,3)),un(e,t+360|0,0|ir(n,4)),un(e,t+480|0,0|ir(n,5)),un(e,t+600|0,0|ir(n,6)),un(e,t+720|0,0|ir(n,7)),un(e,t+840|0,0|ir(n,8)),Me(o,e+40|0),Me(o+40|0,e),we(o+80|0,e+80|0),un(e,o,a),C=r}(e|=0,1120+(960*(t|=0)|0)|0,n|=0)}function zn(e,t){return 0|function(e,t){e|=0,t|=0;var n,a,o=0;n=C,a=C=C+63&-64,C=C+208|0,o=0;do{r[e+o>>0]=0|r[t+o>>0],o=o+1|0}while(32!=(0|o));return r[e>>0]=-8&r[e>>0],r[e+31>>0]=63&r[e+31>>0]|64,oe(a+40|0,e),function(e,t,n){var r,a;e|=0,r=C,a=C=C+63&-64,C=C+96|0,Fe(a+48|0,n|=0,t|=0),me(a,n,t),L(a,a),m(e,a+48|0,a),C=r}(a,a+40+40|0,a+40+80|0),ne(e,a),C=n,0}(e|=0,t|=0)}function jn(e,t){!function(e,t){M(e|=0,t|=0)}(e|=0,t|=0)}function Kn(e,t){!function(e,t){Ee(e|=0,t|=0)}(e|=0,t|=0)}function qn(e,t,n){return 0|ct(e|=0,t|=0,n|=0)}function $n(e,t){return 0|function(e,t){return e|=0,qt(t|=0,32),0|zn(e,t)}(e|=0,t|=0)}function er(e,t,n){!function(e,t,n,r,a){var o,i;e|=0,r|=0,o=C,i=C=C+63&-64,C=C+64|0,0==(0|(t|=0))&0==(0|(n|=0))||(ze(i,a|=0),ht(i,r,0),Ge(0|e,0,64),v(i,e,e,64,0),Ut(i,64)),C=o}(e|=0,64,0,t|=0,n|=0)}function tr(e){1!=(-7&(e|=0)|0)&&Gr()}function nr(e,t,n){!function(e,t,n){e|=0,t|=0;var r,a,o,i,c,s,l,g,I,B,A,u=0,d=0,_=0,C=0,b=0,p=0,Q=0,h=0,y=0,m=0,F=0,U=0,f=0,G=0,E=0,v=0,Z=0,X=0,W=0,R=0,V=0,O=0,x=0,T=0,N=0,w=0,k=0,Y=0,S=0,H=0,D=0,J=0;A=0|Hn(n|=0),c=0|Hn(n+4|0),s=0|Hn(n+8|0),l=0|Hn(n+12|0),g=0|Hn(n+16|0),I=0|Hn(n+20|0),B=0|Hn(n+24|0),r=0|Hn(n+28|0),a=0|Hn(t),o=0|Hn(t+4|0),i=0|Hn(t+8|0),n=0|Hn(t+12|0),t=0,u=1634760805,d=A,_=2036477234,C=g,b=I,p=B,Q=r,h=1797285236,y=c,m=s,F=l,U=857760878,f=a,G=o,E=i,v=n;do{S=(0|Ir((R=(0|Ir((x=(0|Ir((w=(0|Ir(u+b|0,7))^F)+u|0,9))^E)+w|0,13))^b)+x|0,18))^u,N=(0|Ir((J=(0|Ir((W=(0|Ir((O=(0|Ir(d+U|0,7))^v)+U|0,9))^p)+O|0,13))^d)+W|0,18))^U,V=(0|Ir((Y=(0|Ir((D=(0|Ir((X=(0|Ir(f+_|0,7))^Q)+_|0,9))^y)+X|0,13))^f)+D|0,18))^_,Z=(0|Ir((T=(0|Ir((k=(0|Ir((H=(0|Ir(C+h|0,7))^m)+h|0,9))^G)+H|0,13))^C)+k|0,18))^h,u=(0|Ir((m=(0|Ir((y=(0|Ir((d=(0|Ir(H+S|0,7))^J)+S|0,9))^D)+d|0,13))^H)+y|0,18))^S,U=(0|Ir((F=(0|Ir((G=(0|Ir((f=(0|Ir(N+w|0,7))^Y)+N|0,9))^k)+f|0,13))^w)+G|0,18))^N,_=(0|Ir((v=(0|Ir((E=(0|Ir((C=(0|Ir(V+O|0,7))^T)+V|0,9))^x)+C|0,13))^O)+E|0,18))^V,h=(0|Ir((Q=(0|Ir((p=(0|Ir((b=(0|Ir(Z+X|0,7))^R)+Z|0,9))^W)+b|0,13))^X)+p|0,18))^Z,t=t+2|0}while(t>>>0<20);Wn(e,u+1634760805|0),Wn(e+4|0,d+A|0),Wn(e+8|0,y+c|0),Wn(e+12|0,m+s|0),Wn(e+16|0,F+l|0),Wn(e+20|0,U+857760878|0),Wn(e+24|0,f+a|0),Wn(e+28|0,G+o|0),Wn(e+32|0,E+i|0),Wn(e+36|0,v+n|0),Wn(e+40|0,_+2036477234|0),Wn(e+44|0,C+g|0),Wn(e+48|0,b+I|0),Wn(e+52|0,p+B|0),Wn(e+56|0,Q+r|0),Wn(e+60|0,h+1797285236|0)}(e|=0,t|=0,n|=0)}function rr(e,t){return 0|zn(e|=0,t|=0)}function ar(e,t,n){return 0|ae(e|=0,t|=0,n|=0,2)}function or(e,t,n){return 0|ae(e|=0,t|=0,n|=0,1)}function ir(e,t){return((255&((t|=0)^(e|=0)))-1|0)>>>31&255|0}function cr(e){return 0|((e|=0)?31-(0|c(e^e-1))|0:32)}function sr(e,t){return 0|rt(e|=0,t|=0,32)}function lr(e,t){return 0|rt(e|=0,t|=0,16)}function gr(e,t){te(0|(e|=0),0|(t|=0),1024)}function Ir(e,t){return(e|=0)>>>(32-(t|=0)|0)|e<<t|0}function Br(e){Ge(0|(e|=0),0,1024)}function Ar(e){qt(e|=0,32)}function ur(){B(1)}function dr(){return 0|B(0)}function _r(){return-17}function Cr(){return 3}function br(){return 2}function pr(){return-1}function Qr(){return 1}function hr(){return 8}function yr(){return 24}function mr(){return 16}function Fr(){return 64}function Ur(){return 32}function fr(){return 0}function Gr(){I()}return{___errno_location:function(){return 34712},___muldi3:$t,___uremdi3:Lt,_bitshift64Ashr:tn,_bitshift64Lshr:Bn,_bitshift64Shl:sn,_crypto_aead_chacha20poly1305_abytes:mr,_crypto_aead_chacha20poly1305_decrypt:function(e,t,n,r,o,i,c,s,g,I,B){t|=0,n|=0,r|=0,c|=0,s|=0,g|=0,I|=0,B|=0;var A=0,u=0;return(i|=0)>>>0>0|0==(0|i)&(o|=0)>>>0>15?(i=0|_e(e|=0,0,r,n=0|vn(0|o,0|i,-16,-1),A=0|l(),r+o+-16|0,c,s,g,I,B),t&&(o=0==(0|i)?n:0,n=0==(0|i)?A:0,u=4)):t?(o=0,n=0,i=-1,u=4):i=-1,4==(0|u)&&(a[t>>2]=o,a[t+4>>2]=n),0|i},_crypto_aead_chacha20poly1305_decrypt_detached:_e,_crypto_aead_chacha20poly1305_encrypt:function(e,t,n,r,o,i,c,s,g,I,B){return e|=0,t|=0,n|=0,i|=0,c|=0,s|=0,g|=0,I|=0,B|=0,(o|=0)>>>0>0|0==(0|o)&(r|=0)>>>0>4294967279&&Gr(),fe(e,e+r|0,0,n,r,o,i,c,s,0,I,B),0|t&&(I=0|vn(0|r,0|o,16,0),g=0|l(),a[t>>2]=I,a[t+4>>2]=g),0},_crypto_aead_chacha20poly1305_encrypt_detached:fe,_crypto_aead_chacha20poly1305_ietf_abytes:mr,_crypto_aead_chacha20poly1305_ietf_decrypt:function(e,t,n,r,o,i,c,s,g,I,B){t|=0,n|=0,r|=0,c|=0,s|=0,g|=0,I|=0,B|=0;var A=0,u=0;return(i|=0)>>>0>0|0==(0|i)&(o|=0)>>>0>15?(i=0|ie(e|=0,0,r,n=0|vn(0|o,0|i,-16,-1),A=0|l(),r+o+-16|0,c,s,g,I,B),t&&(o=0==(0|i)?n:0,n=0==(0|i)?A:0,u=4)):t?(o=0,n=0,i=-1,u=4):i=-1,4==(0|u)&&(a[t>>2]=o,a[t+4>>2]=n),0|i},_crypto_aead_chacha20poly1305_ietf_decrypt_detached:ie,_crypto_aead_chacha20poly1305_ietf_encrypt:function(e,t,n,r,o,i,c,s,g,I,B){return e|=0,t|=0,n|=0,i|=0,c|=0,s|=0,g|=0,I|=0,B|=0,(o|=0)>>>0>0|0==(0|o)&(r|=0)>>>0>4294967279&&Gr(),Ae(e,e+r|0,0,n,r,o,i,c,s,0,I,B),0|t&&(I=0|vn(0|r,0|o,16,0),g=0|l(),a[t>>2]=I,a[t+4>>2]=g),0},_crypto_aead_chacha20poly1305_ietf_encrypt_detached:Ae,_crypto_aead_chacha20poly1305_ietf_keybytes:Ur,_crypto_aead_chacha20poly1305_ietf_keygen:Ar,_crypto_aead_chacha20poly1305_ietf_messagebytes_max:_r,_crypto_aead_chacha20poly1305_ietf_npubbytes:function(){return 12},_crypto_aead_chacha20poly1305_ietf_nsecbytes:fr,_crypto_aead_chacha20poly1305_keybytes:Ur,_crypto_aead_chacha20poly1305_keygen:Ar,_crypto_aead_chacha20poly1305_messagebytes_max:_r,_crypto_aead_chacha20poly1305_npubbytes:hr,_crypto_aead_chacha20poly1305_nsecbytes:fr,_crypto_aead_xchacha20poly1305_ietf_abytes:mr,_crypto_aead_xchacha20poly1305_ietf_decrypt:function(e,t,n,r,o,i,c,s,g,I,B){t|=0,n|=0,r|=0,c|=0,s|=0,g|=0,I|=0,B|=0;var A=0,u=0;return(i|=0)>>>0>0|0==(0|i)&(o|=0)>>>0>15?(i=0|Ve(e|=0,0,r,n=0|vn(0|o,0|i,-16,-1),A=0|l(),r+o+-16|0,c,s,g,I,B),t&&(o=0==(0|i)?n:0,n=0==(0|i)?A:0,u=4)):t?(o=0,n=0,i=-1,u=4):i=-1,4==(0|u)&&(a[t>>2]=o,a[t+4>>2]=n),0|i},_crypto_aead_xchacha20poly1305_ietf_decrypt_detached:Ve,_crypto_aead_xchacha20poly1305_ietf_encrypt:function(e,t,n,r,o,i,c,s,g,I,B){return e|=0,t|=0,n|=0,i|=0,c|=0,s|=0,g|=0,I|=0,B|=0,(o|=0)>>>0>0|0==(0|o)&(r|=0)>>>0>4294967279&&Gr(),xe(e,e+r|0,0,n,r,o,i,c,s,0,I,B),0|t&&(I=0|vn(0|r,0|o,16,0),g=0|l(),a[t>>2]=I,a[t+4>>2]=g),0},_crypto_aead_xchacha20poly1305_ietf_encrypt_detached:xe,_crypto_aead_xchacha20poly1305_ietf_keybytes:Ur,_crypto_aead_xchacha20poly1305_ietf_keygen:Ar,_crypto_aead_xchacha20poly1305_ietf_messagebytes_max:_r,_crypto_aead_xchacha20poly1305_ietf_npubbytes:yr,_crypto_aead_xchacha20poly1305_ietf_nsecbytes:fr,_crypto_auth:function(e,t,n,r,a){return Zt(e|=0,t|=0,n|=0,r|=0,a|=0),0},_crypto_auth_bytes:Ur,_crypto_auth_keybytes:Ur,_crypto_auth_keygen:Ar,_crypto_auth_verify:function(e,t,n,r,a){return 0|function(e,t,n,r,a){var o;return e|=0,o=C,C=C+32|0,Zt(o,t|=0,n|=0,r|=0,a|=0),a=0|sr(e,o),a=0|((0|o)==(0|e)?-1:a)|tt(o,e,32),C=o,0|a}(e|=0,t|=0,n|=0,r|=0,a|=0)},_crypto_box_beforenm:kn,_crypto_box_beforenmbytes:Ur,_crypto_box_detached:dt,_crypto_box_detached_afternm:ln,_crypto_box_easy:Tt,_crypto_box_easy_afternm:function(e,t,n,r,a,o){return e|=0,t|=0,a|=0,o|=0,(r|=0)>>>0>0|0==(0|r)&(n|=0)>>>0>4294967279?(Gr(),0):(ln(e+16|0,e,t,n,r,a,o),0)},_crypto_box_keypair:$n,_crypto_box_macbytes:mr,_crypto_box_messagebytes_max:_r,_crypto_box_noncebytes:yr,_crypto_box_open_detached:ut,_crypto_box_open_detached_afternm:cn,_crypto_box_open_easy:mt,_crypto_box_open_easy_afternm:function(e,t,n,r,a,o){return t|=0,a|=0,o|=0,0|((r|=0)>>>0<0|0==(0|r)&(n|=0)>>>0<16?-1:0|cn(e|=0,t+16|0,t,n=0|vn(0|n,0|r,-16,-1),0|l(),a,o))},_crypto_box_publickeybytes:Ur,_crypto_box_seal:function(e,t,n,a,o){e|=0,t|=0,n|=0,a|=0,o|=0;var i,c=0,s=0,l=0;if(i=C,C=C+96|0,0|$n(i+32|0,i))n=-1;else{s=i+32|0,l=(c=e)+32|0;do{r[c>>0]=0|r[s>>0],c=c+1|0,s=s+1|0}while((0|c)<(0|l));yt(i+64|0,i+32|0,o),n=0|Tt(e+32|0,t,n,a,i+64|0,o,i),Ut(i,32),Ut(i+32|0,32),Ut(i+64|0,24)}return C=i,0|n},_crypto_box_seal_open:function(e,t,n,r,a,o){var i,c;return e|=0,t|=0,a|=0,o|=0,c=C,i=C=C+63&-64,C=C+32|0,(r|=0)>>>0<0|0==(0|r)&(n|=0)>>>0<48?n=-1:(r=0|vn(0|n,0|r,-32,-1),n=0|l(),yt(i,t,a),n=0|mt(e,t+32|0,r,n,i,t,o)),C=c,0|n},_crypto_box_sealbytes:function(){return 48},_crypto_box_secretkeybytes:Ur,_crypto_box_seed_keypair:function(e,t,n){return 0|function(e,t,n){e|=0,t|=0;var a,o,i=0,c=0;o=C,c=C=C+63&-64,C=C+64|0,Wt(c,n|=0,32,0),i=c,a=(n=t)+32|0;do{r[n>>0]=0|r[i>>0],n=n+1|0,i=i+1|0}while((0|n)<(0|a));return Ut(c,64),c=0|zn(e,t),C=o,0|c}(e|=0,t|=0,n|=0)},_crypto_box_seedbytes:Ur,_crypto_generichash:dn,_crypto_generichash_bytes:Ur,_crypto_generichash_bytes_max:Fr,_crypto_generichash_bytes_min:mr,_crypto_generichash_final:Dn,_crypto_generichash_init:xn,_crypto_generichash_keybytes:Ur,_crypto_generichash_keybytes_max:Fr,_crypto_generichash_keybytes_min:mr,_crypto_generichash_keygen:Ar,_crypto_generichash_statebytes:function(){return 384},_crypto_generichash_update:Rn,_crypto_hash:function(e,t,n,r){return Wt(e|=0,t|=0,n|=0,r|=0),0},_crypto_hash_bytes:Fr,_crypto_kdf_bytes_max:Fr,_crypto_kdf_bytes_min:mr,_crypto_kdf_contextbytes:hr,_crypto_kdf_derive_from_key:function(e,t,n,r,a,o){return 0|Re(e|=0,t|=0,n|=0,r|=0,a|=0,o|=0)},_crypto_kdf_keybytes:Ur,_crypto_kdf_keygen:Ar,_crypto_kx_client_session_keys:function(e,t,n,a,o){var i,c,s;if(t|=0,n|=0,a|=0,o|=0,s=C,c=C=C+63&-64,C=C+480|0,i=0==(0|(e|=0))?t:e,t=0==(0|t)?i:t,i||Gr(),0|qn(c+448|0,a,o))e=-1;else{xn(c,0,0,64),Rn(c,c+448|0,32,0),Ut(c+448|0,32),Rn(c,n,32,0),Rn(c,o,32,0),Dn(c,c+384|0,64),Ut(c,384),e=0;do{r[i+e>>0]=0|r[c+384+e>>0],r[t+e>>0]=0|r[c+384+(e+32)>>0],e=e+1|0}while(32!=(0|e));Ut(c+384|0,64),e=0}return C=s,0|e},_crypto_kx_keypair:function(e,t){return e|=0,qt(t|=0,32),0|rr(e,t)},_crypto_kx_publickeybytes:Ur,_crypto_kx_secretkeybytes:Ur,_crypto_kx_seed_keypair:function(e,t,n){return e|=0,dn(t|=0,32,n|=0,32,0,0,0),0|rr(e,t)},_crypto_kx_seedbytes:Ur,_crypto_kx_server_session_keys:function(e,t,n,a,o){var i,c,s;if(t|=0,n|=0,a|=0,o|=0,s=C,c=C=C+63&-64,C=C+480|0,i=0==(0|(e|=0))?t:e,t=0==(0|t)?i:t,i||Gr(),0|qn(c+448|0,a,o))e=-1;else{xn(c,0,0,64),Rn(c,c+448|0,32,0),Ut(c+448|0,32),Rn(c,o,32,0),Rn(c,n,32,0),Dn(c,c+384|0,64),Ut(c,384),e=0;do{r[t+e>>0]=0|r[c+384+e>>0],r[i+e>>0]=0|r[c+384+(e+32)>>0],e=e+1|0}while(32!=(0|e));Ut(c+384|0,64),e=0}return C=s,0|e},_crypto_kx_sessionkeybytes:Ur,_crypto_pwhash:function(e,t,n,r,o,i,c,s,l,g,I){switch(e|=0,t|=0,n|=0,r|=0,o|=0,i|=0,c|=0,s|=0,l|=0,g|=0,0|(I|=0)){case 1:t=0|function(e,t,n,r,o,i,c,s,l,g){n|=0,r|=0,o|=0,i|=0,c|=0,s|=0,l|=0,g|=0,Ge(0|(e|=0),0,0|(t|=0));do{if(!(n>>>0>0|0==(0|n)&t>>>0>4294967295)){if(n>>>0<0|0==(0|n)&t>>>0<16){a[8678]=28,t=-1;break}if((l|i)>>>0>0|0==(l|i|0)&(s|o)>>>0>4294967295|g>>>0>2147483648){a[8678]=22,t=-1;break}if(l>>>0<0|0==(0|l)&s>>>0<3|g>>>0<8192){a[8678]=28,t=-1;break}t=(0!=(0|Cn(s,g>>>10,r,o,c,e,t)))<<31>>31;break}a[8678]=22,t=-1}while(0);return 0|t}(e,t,n,r,o,i,c,s,l,g);break;case 2:t=0|function(e,t,n,r,o,i,c,s,l,g){n|=0,r|=0,o|=0,i|=0,c|=0,s|=0,l|=0,g|=0,Ge(0|(e|=0),0,0|(t|=0));do{if(!(n>>>0>0|0==(0|n)&t>>>0>4294967295)){if(n>>>0<0|0==(0|n)&t>>>0<16){a[8678]=28,t=-1;break}if((l|i)>>>0>0|0==(l|i|0)&(s|o)>>>0>4294967295|g>>>0>2147483648){a[8678]=22,t=-1;break}if(0==(0|s)&0==(0|l)|g>>>0<8192){a[8678]=28,t=-1;break}t=(0!=(0|_n(s,g>>>10,r,o,c,e,t)))<<31>>31;break}a[8678]=22,t=-1}while(0);return 0|t}(e,t,n,r,o,i,c,s,l,g);break;default:a[8678]=28,t=-1}return 0|t},_crypto_pwhash_alg_argon2i13:Qr,_crypto_pwhash_alg_argon2id13:br,_crypto_pwhash_alg_default:br,_crypto_pwhash_bytes_max:pr,_crypto_pwhash_bytes_min:mr,_crypto_pwhash_memlimit_interactive:function(){return 67108864},_crypto_pwhash_memlimit_max:function(){return-2147483648},_crypto_pwhash_memlimit_min:function(){return 8192},_crypto_pwhash_memlimit_moderate:function(){return 268435456},_crypto_pwhash_memlimit_sensitive:function(){return 1073741824},_crypto_pwhash_opslimit_interactive:br,_crypto_pwhash_opslimit_max:pr,_crypto_pwhash_opslimit_min:Qr,_crypto_pwhash_opslimit_moderate:Cr,_crypto_pwhash_opslimit_sensitive:function(){return 4},_crypto_pwhash_passwd_max:pr,_crypto_pwhash_passwd_min:fr,_crypto_pwhash_saltbytes:mr,_crypto_pwhash_str:function(e,t,n,r,a,o,i){return 0|Ne(e|=0,t|=0,n|=0,r|=0,a|=0,o|=0,i|=0)},_crypto_pwhash_str_alg:function(e,t,n,r,a,o,i,c){e|=0,t|=0,n|=0,r|=0,a|=0,o|=0,i|=0;var s=0;switch(0|(c|=0)){case 1:s=0|Oe(e,t,n,r,a,o,i);break;case 2:s=0|Ne(e,t,n,r,a,o,i);break;default:Gr()}return 0|s},_crypto_pwhash_str_needs_rehash:function(e,t,n,r){e|=0,t|=0,n|=0,r|=0;do{if(0|at(e,33713,10)){if(0|at(e,33724,9)){a[8678]=28,t=-1;break}t=0|On(e,t,n,r);break}t=0|Vn(e,t,n,r)}while(0);return 0|t},_crypto_pwhash_str_verify:function(e,t,n,r){e|=0,t|=0,n|=0,r|=0;do{if(0|at(e,33713,10)){if(0|at(e,33724,9)){a[8678]=28,n=-1;break}n=0|At(e,t,n,r);break}n=0|It(e,t,n,r)}while(0);return 0|n},_crypto_pwhash_strbytes:function(){return 128},_crypto_pwhash_strprefix:function(){return 33713},_crypto_scalarmult:qn,_crypto_scalarmult_base:rr,_crypto_scalarmult_bytes:Ur,_crypto_scalarmult_scalarbytes:Ur,_crypto_secretbox_detached:j,_crypto_secretbox_easy:function(e,t,n,r,a,o){return e|=0,t|=0,a|=0,o|=0,(r|=0)>>>0>0|0==(0|r)&(n|=0)>>>0>4294967279?(Gr(),0):(j(e+16|0,e,t,n,r,a,o),0)},_crypto_secretbox_keybytes:Ur,_crypto_secretbox_keygen:Ar,_crypto_secretbox_macbytes:mr,_crypto_secretbox_messagebytes_max:_r,_crypto_secretbox_noncebytes:yr,_crypto_secretbox_open_detached:ee,_crypto_secretbox_open_easy:function(e,t,n,r,a,o){return t|=0,a|=0,o|=0,0|((r|=0)>>>0<0|0==(0|r)&(n|=0)>>>0<16?-1:0|ee(e|=0,t+16|0,t,n=0|vn(0|n,0|r,-16,-1),0|l(),a,o))},_crypto_secretstream_xchacha20poly1305_abytes:function(){return 17},_crypto_secretstream_xchacha20poly1305_headerbytes:yr,_crypto_secretstream_xchacha20poly1305_init_pull:function(e,t,n){var a;return x(e|=0,t|=0,n|=0),fn(e),a=o[t+16>>0]|o[t+16+1>>0]<<8|o[t+16+2>>0]<<16|o[t+16+3>>0]<<24,n=o[t+16+4>>0]|o[t+16+4+1>>0]<<8|o[t+16+4+2>>0]<<16|o[t+16+4+3>>0]<<24,r[e+36>>0]=a,r[e+36+1>>0]=a>>8,r[e+36+2>>0]=a>>16,r[e+36+3>>0]=a>>24,r[e+36+4>>0]=n,r[e+36+4+1>>0]=n>>8,r[e+36+4+2>>0]=n>>16,r[e+36+4+3>>0]=n>>24,r[e+44>>0]=0,r[e+44+1>>0]=0,r[e+44+2>>0]=0,r[e+44+3>>0]=0,r[e+44+4>>0]=0,r[e+44+4+1>>0]=0,r[e+44+4+2>>0]=0,r[e+44+4+3>>0]=0,0},_crypto_secretstream_xchacha20poly1305_init_push:function(e,t,n){return e|=0,n|=0,qt(t|=0,24),x(e,t,n),fn(e),n=o[t+16>>0]|o[t+16+1>>0]<<8|o[t+16+2>>0]<<16|o[t+16+3>>0]<<24,t=o[t+16+4>>0]|o[t+16+4+1>>0]<<8|o[t+16+4+2>>0]<<16|o[t+16+4+3>>0]<<24,r[e+36>>0]=n,r[e+36+1>>0]=n>>8,r[e+36+2>>0]=n>>16,r[e+36+3>>0]=n>>24,r[e+36+4>>0]=t,r[e+36+4+1>>0]=t>>8,r[e+36+4+2>>0]=t>>16,r[e+36+4+3>>0]=t>>24,r[e+44>>0]=0,r[e+44+1>>0]=0,r[e+44+2>>0]=0,r[e+44+3>>0]=0,r[e+44+4>>0]=0,r[e+44+4+1>>0]=0,r[e+44+4+2>>0]=0,r[e+44+4+3>>0]=0,0},_crypto_secretstream_xchacha20poly1305_keybytes:Ur,_crypto_secretstream_xchacha20poly1305_keygen:Ar,_crypto_secretstream_xchacha20poly1305_messagebytes_max:function(){return-18},_crypto_secretstream_xchacha20poly1305_pull:function(e,t,n,o,i,c,s,g,I,B){e|=0,t|=0,o|=0,i|=0,c|=0,s|=0,g|=0,I|=0,B|=0;var A,u,d=0,_=0,b=0;u=C,A=C=C+63&-64,C=C+352|0,0|(n|=0)&&(a[n>>2]=0,a[n+4>>2]=0),0|o&&(r[o>>0]=-1);do{if(s>>>0<0|0==(0|s)&c>>>0<17)g=-1;else{_=0|vn(0|c,0|s,-17,-1),(b=0|l())>>>0>0|0==(0|b)&_>>>0>4294967278&&Gr(),Jt(A+16|0,64,0,e+32|0,e),Kn(A+80|0,A+16|0),Ut(A+16|0,64),Zn(A+80|0,g,I,B),g=0|En(0,0,0|I,0|B),l(),Zn(A+80|0,34672,15&g,0),d=64+(g=A+16|0)|0;do{a[g>>2]=0,g=g+4|0}while((0|g)<(0|d));if(r[A+16>>0]=0|r[i>>0],st(A+16|0,A+16|0,64,0,e+32|0,1,e),g=0|r[A+16>>0],r[A+16>>0]=0|r[i>>0],Zn(A+80|0,A+16|0,64,0),Zn(A+80|0,i+1|0,_,b),d=0|vn(0|c,0|s,15,0),l(),Zn(A+80|0,34672,15&d,0),Ot(A+336|0,I,B),Zn(A+80|0,A+336|0,8,0),Ot(A+336|0,B=0|vn(0|c,0|s,47,0),0|l()),Zn(A+80|0,A+336|0,8,0),jn(A+80|0,A),Ut(A+80|0,256),0|tt(A,i+1+_|0,16)){Ut(A,16),g=-1;break}st(t,i+1|0,_,b,e+32|0,2,e),on(e+36|0,A),zt(e+32|0),(0!=(2&g)||0|Qt(e+32|0,4))&&ue(e),0|n&&(a[n>>2]=_,a[n+4>>2]=b),0|o?(r[o>>0]=g,g=0):g=0}}while(0);return C=u,0|g},_crypto_secretstream_xchacha20poly1305_push:function(e,t,n,o,i,c,s,g,I,B){e|=0,t|=0,o|=0,i|=0,c|=0,s|=0,g|=0,I|=0,B|=0;var A,u,d=0;u=C,d=C=C+63&-64,C=C+336|0,0|(n|=0)&&(a[n>>2]=0,a[n+4>>2]=0),c>>>0>0|0==(0|c)&i>>>0>4294967278&&Gr(),Jt(d,64,0,e+32|0,e),Kn(d+64|0,d),Ut(d,64),Zn(d+64|0,s,g,I),s=0|En(0,0,0|g,0|I),l(),Zn(d+64|0,34672,15&s,0),A=(s=d)+64|0;do{a[s>>2]=0,s=s+4|0}while((0|s)<(0|A));return r[d>>0]=B,st(d,d,64,0,e+32|0,1,e),Zn(d+64|0,d,64,0),r[t>>0]=0|r[d>>0],st(t+1|0,o,i,c,e+32|0,2,e),Zn(d+64|0,t+1|0,i,c),Zn(d+64|0,34672,15&i,0),Ot(d+320|0,g,I),Zn(d+64|0,d+320|0,8,0),Ot(d+320|0,o=0|vn(0|i,0|c,64,0),0|l()),Zn(d+64|0,d+320|0,8,0),jn(d+64|0,t+1+i|0),Ut(d+64|0,256),on(e+36|0,t+1+i|0),zt(e+32|0),(0!=(2&B)||0|Qt(e+32|0,4))&&ue(e),0|n&&(B=0|vn(0|i,0|c,17,0),d=0|l(),a[n>>2]=B,a[n+4>>2]=d),C=u,0},_crypto_secretstream_xchacha20poly1305_rekey:ue,_crypto_secretstream_xchacha20poly1305_statebytes:function(){return 52},_crypto_secretstream_xchacha20poly1305_tag_final:Cr,_crypto_secretstream_xchacha20poly1305_tag_message:fr,_crypto_secretstream_xchacha20poly1305_tag_push:Qr,_crypto_secretstream_xchacha20poly1305_tag_rekey:br,_crypto_shorthash:function(e,t,n,r,a){return function(e,t,n,r,a){e|=0,t|=0,n|=0,r|=0;var i=0,c=0,s=0,g=0,I=0,B=0,A=0,u=0,d=0,_=0,C=0,b=0,p=0,Q=0,h=0,y=0,m=0;if(B=0|Yt(a|=0),u=0|l(),i=0|Yt(a+8|0),c=0|l(),r=0|sn(0|n,0|r,56),a=0|l(),(t+n+(0-(7&n))|0)==(0|t))C=2037671283^i,s=1952801890^c,_=1886610805^B,A=1936682341^u,I=1852075885^i,g=1685025377^c,h=1852142177^B,i=1819895653^u,c=t;else for(Q=2037671283^i,s=1952801890^c,C=1886610805^B,A=1936682341^u,I=1852075885^i,g=1685025377^c,c=1852142177^B,i=1819895653^u,_=t;;){if(m=(b=0|Yt(_))^Q,s^=p=0|l(),h=0|vn(0|C,0|A,0|I,0|g),Q=0|l(),B=0|Mt(I,g,13),I=(0|l())^Q,g=0|Mt(h,Q,32),Q=0|l(),u=0|vn(0|m,0|s,0|c,0|i),d=0|l(),Q=0|vn((s=0|Mt(m,s,16))^u|0,0|(c=(0|l())^d),0|g,0|Q),g=0|l(),c=0|Mt(s^u,c,21),s=g^(0|l()),d=0|vn(0|u,0|d,B^h|0,0|I),u=0|l(),I=0|Mt(B^h,I,17),i=(0|l())^u,u=0|Mt(d,u,32),h=0|l(),g=0|vn(I^d|0,0|i,0|Q,0|g),B=0|l(),i=0|Mt(I^d,i,13),d=(0|l())^B,B=0|Mt(g,B,32),I=0|l(),h=0|vn(0|u,0|h,Q^c|0,0|s),u=0|l(),I=0|vn((s=0|Mt(Q^c,s,16))^h|0,0|(c=(0|l())^u),0|B,0|I),B=0|l(),c=0|Mt(s^h,c,21),s=B^(0|l()),u=0|vn(i^g|0,0|d,0|h,0|u),h=0|l(),d=0|Mt(i^g,d,17),g=(0|l())^h,h=0|Mt(u,h,32),i=0|l(),(0|(_=_+8|0))==(t+n+(0-(7&n))|0)){C=I^c,_=I^b,A=B^p,I=d^u,c=t+n+(0-(7&n))|0;break}Q=I^c,C=I^b,A=B^p,I=d^u,c=h}switch(7&n){case 7:y=0|sn(0|o[c+6>>0],0,48),a=0|l()|a,r|=y,y=6;break;case 6:y=6;break;case 5:y=7;break;case 4:y=8;break;case 3:y=9;break;case 2:y=10;break;case 1:y=11}6==(0|y)&&(m=0|sn(0|o[c+5>>0],0,40),a=0|l()|a,r|=m,y=7),7==(0|y)&&(a=0|o[c+4>>0]|a,y=8),8==(0|y)&&(r|=m=0|sn(0|o[c+3>>0],0,24),a=0|l()|a,y=9),9==(0|y)&&(r|=m=0|sn(0|o[c+2>>0],0,16),a=0|l()|a,y=10),10==(0|y)&&(r|=m=0|sn(0|o[c+1>>0],0,8),a=0|l()|a,y=11),11==(0|y)&&(r=0|r|o[c>>0]),n=r^C,p=a^s,_=0|vn(0|_,0|A,0|I,0|g),C=0|l(),b=0|Mt(I,g,13),t=(0|l())^C,C=0|Mt(_,C,32),y=0|l(),h=0|vn(0|n,0|p,0|h,0|i),m=0|l(),y=0|vn((p=0|Mt(n,p,16))^h|0,0|(n=(0|l())^m),0|C,0|y),C=0|l(),n=0|Mt(p^h,n,21),p=C^(0|l()),m=0|vn(0|h,0|m,b^_|0,0|t),h=0|l(),t=0|Mt(b^_,t,17),_=(0|l())^h,h=0|Mt(m,h,32),b=0|l(),C=0|vn(t^m|0,0|_,0|y,0|C),Q=0|l(),_=0|Mt(t^m,_,13),m=(0|l())^Q,Q=0|Mt(C,Q,32),t=0|l(),b=0|vn(0|h,0|b,y^n|0,0|p),h=0|l(),t=0|vn((p=0|Mt(y^n,p,16))^b|0,0|(n=(0|l())^h),0|Q,0|t),Q=0|l(),n=0|Mt(p^b,n,21),p=Q^(0|l()),h=0|vn(_^C|0,0|m,0|b,0|h),b=0|l(),m=0|Mt(_^C,m,17),C=(0|l())^b,b=0|Mt(h,b,32),_=0|l(),Q=0|vn(t^r|0,Q^a|0,m^h|0,0|C),y=0|l(),C=0|Mt(m^h,C,13),h=(0|l())^y,y=0|Mt(Q,y,32),m=0|l(),_=0|vn(255^b|0,0|_,t^n|0,0|p),b=0|l(),m=0|vn((p=0|Mt(t^n,p,16))^_|0,0|(n=(0|l())^b),0|y,0|m),y=0|l(),n=0|Mt(p^_,n,21),p=y^(0|l()),b=0|vn(0|_,0|b,C^Q|0,0|h),_=0|l(),h=0|Mt(C^Q,h,17),Q=(0|l())^_,_=0|Mt(b,_,32),C=0|l(),y=0|vn(h^b|0,0|Q,0|m,0|y),t=0|l(),Q=0|Mt(h^b,Q,13),b=(0|l())^t,t=0|Mt(y,t,32),h=0|l(),C=0|vn(0|_,0|C,m^n|0,0|p),_=0|l(),h=0|vn((p=0|Mt(m^n,p,16))^C|0,0|(n=(0|l())^_),0|t,0|h),t=0|l(),n=0|Mt(p^C,n,21),p=t^(0|l()),_=0|vn(Q^y|0,0|b,0|C,0|_),C=0|l(),b=0|Mt(Q^y,b,17),y=(0|l())^C,C=0|Mt(_,C,32),Q=0|l(),t=0|vn(b^_|0,0|y,0|h,0|t),m=0|l(),y=0|Mt(b^_,y,13),_=(0|l())^m,m=0|Mt(t,m,32),b=0|l(),Q=0|vn(0|C,0|Q,h^n|0,0|p),C=0|l(),b=0|vn((p=0|Mt(h^n,p,16))^Q|0,0|(n=(0|l())^C),0|m,0|b),m=0|l(),n=0|Mt(p^Q,n,21),p=m^(0|l()),C=0|vn(y^t|0,0|_,0|Q,0|C),Q=0|l(),_=0|Mt(y^t,_,17),t=(0|l())^Q,Q=0|Mt(C,Q,32),y=0|l(),m=0|vn(_^C|0,0|t,0|b,0|m),h=0|l(),t=0|Mt(_^C,t,13),h=(0|l())^h,y=0|vn(0|Q,0|y,b^n|0,0|p),Q=0|l(),p=0|Mt((p=0|Mt(b^n,p,16))^y,(0|l())^Q,21),n=0|l(),Q=0|vn(t^m|0,0|h,0|y,0|Q),y=0|l(),h=0|Mt(t^m,h,17),m=0|l(),Ot(e,p^Q^h^(t=0|Mt(Q,y,32)),n^y^m^(0|l()))}(e|=0,t|=0,n|=0,r|=0,a|=0),0},_crypto_shorthash_bytes:hr,_crypto_shorthash_keybytes:mr,_crypto_shorthash_keygen:function(e){qt(e|=0,16)},_crypto_sign:function(e,t,n,r,a,o){return 0|He(e|=0,t|=0,n|=0,r|=0,a|=0,o|=0)},_crypto_sign_bytes:Fr,_crypto_sign_detached:function(e,t,n,r,a,o){return Qn(e|=0,t|=0,n|=0,r|=0,a|=0,o|=0),0},_crypto_sign_ed25519_pk_to_curve25519:function(e,t){var n,r;return e|=0,r=C,n=C=C+63&-64,C=C+256|0,0==(0|Ue(t|=0))&&0==(0|Ie(n+88|0,t))&&0!=(0|function(e){var t,n;return t=C,n=C=C+63&-64,C=C+160|0,z(n,e|=0),e=0|an(n),C=t,0|e}(n+88|0))?(Gn(n),me(n,n,n+88+40|0),Gn(n+48|0),Fe(n+48|0,n+48|0,n+88+40|0),L(n,n),m(n+48|0,n+48|0,n),ne(e,n+48|0),e=0):e=-1,C=r,0|e},_crypto_sign_ed25519_sk_to_curve25519:function(e,t){var n,a,o;e|=0,a=C,o=C=C+63&-64,C=C+64|0,Wt(o,t|=0,32,0),r[o>>0]=-8&r[o>>0],r[o+31>>0]=63&r[o+31>>0]|64,t=o,n=e+32|0;do{r[e>>0]=0|r[t>>0],e=e+1|0,t=t+1|0}while((0|e)<(0|n));return Ut(o,64),C=a,0},_crypto_sign_final_create:function(e,t,n,r){return function(e,t,n,r){var a,o;t|=0,n|=0,r|=0,a=C,o=C=C+63&-64,C=C+64|0,St(e|=0,o),Ce(t,n,o,64,0,r,1),C=a}(e|=0,t|=0,n|=0,r|=0),0},_crypto_sign_final_verify:function(e,t,n){return 0|function(e,t,n){var r,a;return t|=0,n|=0,r=C,a=C=C+63&-64,C=C+64|0,St(e|=0,a),e=0|he(t,a,64,0,n,1),C=r,0|e}(e|=0,t|=0,n|=0)},_crypto_sign_init:function(e){return function(e){Xt(e|=0)}(e|=0),0},_crypto_sign_keypair:function(e,t){return function(e,t){var n,r;e|=0,t|=0,n=C,r=C=C+63&-64,C=C+32|0,qt(r,32),gt(e,t,r),Ut(r,32),C=n}(e|=0,t|=0),0},_crypto_sign_messagebytes_max:function(){return-65},_crypto_sign_open:function(e,t,n,r,a,o){return 0|ve(e|=0,t|=0,n|=0,r|=0,a|=0,o|=0)},_crypto_sign_publickeybytes:Ur,_crypto_sign_secretkeybytes:Fr,_crypto_sign_seed_keypair:function(e,t,n){return gt(e|=0,t|=0,n|=0),0},_crypto_sign_seedbytes:Ur,_crypto_sign_statebytes:function(){return 208},_crypto_sign_update:function(e,t,n,r){return Tn(e|=0,t|=0,n|=0,r|=0),0},_crypto_sign_verify_detached:function(e,t,n,r,a){return 0|Fn(e|=0,t|=0,n|=0,r|=0,a|=0)},_emscripten_get_sbrk_ptr:function(){return 35232},_emscripten_replace_memory:function(e){return r=new Int8Array(e),o=new Uint8Array(e),a=new Int32Array(e),n=e,!0},_free:G,_i64Add:vn,_i64Subtract:En,_malloc:h,_memcpy:te,_memmove:Ft,_memset:Ge,_randombytes:function(e,t,n){(n|=0)>>>0<1|1==(0|n)&(t|=0)>>>0<0?qt(e|=0,t):g(34506,34526,197,34552)},_randombytes_buf:qt,_randombytes_buf_deterministic:function(e,t,n){Jt(e|=0,t|=0,0,34494,n|=0)},_randombytes_close:fr,_randombytes_random:dr,_randombytes_seedbytes:Ur,_randombytes_stir:ur,_randombytes_uniform:function(e){var t=0;if((e|=0)>>>0<2)t=0;else{do{t=0|dr()}while(t>>>0<(((0-e|0)>>>0)%(e>>>0)|0)>>>0);t=(t>>>0)%(e>>>0)|0}return 0|t},_sodium_base642bin:N,_sodium_base64_encoded_len:function(e,t){var n;return e|=0,tr(t|=0),(((e>>>0)/3|0)<<2|1)+(4-(3-(n=(0|i((e>>>0)/3|0,-3))+e|0)&0-(t>>>1&1))&0-(1&(n>>>1|n)))|0},_sodium_bin2base64:J,_sodium_bin2hex:function(e,t,n,a){e|=0,n|=0;var i=0,c=0;if((a|=0)>>>0<2147483647&a<<1>>>0<(t|=0)>>>0||Gr(),a){t=0;do{c=0|o[n+t>>0],r[e+(i=t<<1)>>0]=87+(c>>>4)+((65526+(c>>>4)|0)>>>8&217),r[e+(1|i)>>0]=(22272+((15&c)<<8)+(65526+(15&c)&55552)|0)>>>8,t=t+1|0}while((0|t)!=(0|a));t=a<<1}else t=0;return r[e+t>>0]=0,0|e},_sodium_hex2bin:function(e,t,n,i,c,s,l){e|=0,t|=0,n|=0,i|=0,c|=0,s|=0,l|=0;var g=0,I=0,B=0,A=0,u=0,d=0,_=0;e:do{if(i){A=0,d=0,g=0,I=0;t:for(;;){for(;!(255&((u=(65526+(201+(223&(B=0|o[n+g>>0]))&255)^65520+(201+(223&B)&255))>>>8)|(65526+(48^B)|0)>>>8)|0);){if(!(0!=(0|c)&I<<24>>24==0)){B=0;break t}if(!(0|Sn(c,B))){I=A,_=17;break e}if(!((g=g+1|0)>>>0<i>>>0)){I=A,_=17;break e}I=0}if(B=u&201+(223&B)|(65526+(48^B)|0)>>>8&(48^B),A>>>0>=t>>>0){_=9;break}if(I<<24>>24?(r[e+A>>0]=B|255&d,A=A+1|0,B=d):B=B<<4&255,I=~I,!((g=g+1|0)>>>0<i>>>0)){B=0;break}d=B}if(9==(0|_)&&(a[8678]=68,B=-1),I<<24>>24){a[8678]=28,B=0,I=g+-1|0,g=-1;break}if(B){B=0,I=g,g=-1;break}I=A,_=17;break}I=0,g=0,_=17}while(0);return 17==(0|_)&&(B=I,I=g,g=0),l?a[l>>2]=n+I:(0|I)!=(0|i)&&(a[8678]=28,g=-1),0|s&&(a[s>>2]=B),0|g},_sodium_init:function(){var e=0;return 0|a[8676]?e=1:(function(){return e=C,t=C=C+63&-64,C=C+16|0,Mn(t),0|a[t>>2]&&Mn(t),void(C=e);var e,t}(),ur(),function(){var e=0;(0|(e=0|_(30)))>0?a[8677]=e:e=0|a[8677],e>>>0<16?Gr():qt(34688,16)}(),a[8676]=1,e=0),0|e},_sodium_library_minimal:Qr,_sodium_library_version_major:function(){return 10},_sodium_library_version_minor:Cr,_sodium_pad:function(e,t,n,i,c){e|=0,t|=0,n|=0,c|=0;var s,l,g=0,I=0;if(l=C,s=C=C+63&-64,C=C+16|0,i|=0)if((I=i+-1-(g=i+-1&i?(n>>>0)%(i>>>0)|0:i+-1&n)|0)>>>0>=~n>>>0&&Gr(),(I+n|0)>>>0<c>>>0){0|e&&(a[e>>2]=I+n+1),r[s>>0]=0,g=0;do{e=((g^I)-1|0)>>>24,r[(c=t+(I+n)+(0-g)|0)>>0]=128&e|r[s>>0]&r[c>>0]&255,r[s>>0]=0|e|o[s>>0],g=g+1|0}while((0|g)!=(0|i));g=0}else g=-1;else g=-1;return C=l,0|g},_sodium_unpad:function(e,t,n,r){e|=0,t|=0,n|=0,r|=0;var i,c,s=0,l=0,g=0,I=0,B=0;if(c=C,i=C=C+63&-64,C=C+16|0,a[i>>2]=0,(r+-1|0)>>>0<n>>>0){for(s=0,g=0,I=0;s&=255,l=0|o[t+(n+-1)+(0-g)>>0],B=(511+(0|a[i>>2])&s+511&511+(128^l))>>>8&1,a[i>>2]=g&0-B|a[i>>2],I=B|255&I,(0|(g=g+1|0))!=(0|r);)s|=l;a[e>>2]=n+-1-(0|a[i>>2]),s=I+-1|0}else s=-1;return C=c,0|s},_sodium_version_string:function(){return 34617},establishStackSpace:function(e,t){C=e|=0},stackAlloc:function(e){var t;return t=C,C=15+(C=C+(e|=0)|0)&-16,0|t},stackRestore:function(e){C=e|=0},stackSave:function(){return 0|C}}}({Math:Math,Int8Array:Int8Array,Int32Array:Int32Array,Uint8Array:Uint8Array},{a:K,b:function(e){F=e},c:function(){return F},d:function(e,t,n,r){K("Assertion failed: "+O(e)+", at: "+[t?O(t):"unknown filename",n,r?O(r):"unknown function"])},e:le,f:function(){K()},g:function(e){return re[e]()},h:ce,i:function(e,t,n){v.set(v.subarray(t,t+n),e)},j:function(e){var t=ce();if(e>2130706432)return!1;for(var n=Math.max(t,16777216);n<e;)n=n<=536870912?x(2*n,16777216):Math.min(x((3*n+2147483648)/4,16777216),2130706432);return!!se(n)},k:function(e){switch(e){case 30:return 16384;case 85:return 130048;case 132:case 133:case 12:case 137:case 138:case 15:case 235:case 16:case 17:case 18:case 19:case 20:case 149:case 13:case 10:case 236:case 153:case 9:case 21:case 22:case 159:case 154:case 14:case 77:case 78:case 139:case 80:case 81:case 82:case 68:case 67:case 164:case 11:case 29:case 47:case 48:case 95:case 52:case 51:case 46:return 200809;case 79:return 0;case 27:case 246:case 127:case 128:case 23:case 24:case 160:case 161:case 181:case 182:case 242:case 183:case 184:case 243:case 244:case 245:case 165:case 178:case 179:case 49:case 50:case 168:case 169:case 175:case 170:case 171:case 172:case 97:case 76:case 32:case 173:case 35:return-1;case 176:case 177:case 7:case 155:case 8:case 157:case 125:case 126:case 92:case 93:case 129:case 130:case 131:case 94:case 91:return 1;case 74:case 60:case 69:case 70:case 4:return 1024;case 31:case 42:case 72:return 32;case 87:case 26:case 33:return 2147483647;case 34:case 1:return 47839;case 38:case 36:return 99;case 43:case 37:return 2048;case 0:return 2097152;case 3:return 65536;case 28:return 32768;case 44:return 32767;case 75:return 16384;case 39:return 1e3;case 89:return 700;case 71:return 256;case 40:return 255;case 2:return 100;case 180:return 64;case 25:return 20;case 5:return 16;case 6:return 6;case 73:return 4;case 84:return"object"==("undefined"==typeof navigator?"undefined":l(navigator))&&navigator.hardwareConcurrency||1}return le(28),-1},l:function(e){K("OOM")},m:ae,n:oe,o:se,p:ie,q:function(){var e=ie();return r.extraStackTrace&&(e+="\n"+r.extraStackTrace()),oe(e)},r:35408},G),Ce=(r.___errno_location=_e.___errno_location,r.___muldi3=_e.___muldi3,r.___uremdi3=_e.___uremdi3,r._bitshift64Ashr=_e._bitshift64Ashr,r._bitshift64Lshr=_e._bitshift64Lshr,r._bitshift64Shl=_e._bitshift64Shl,r._crypto_aead_chacha20poly1305_abytes=_e._crypto_aead_chacha20poly1305_abytes,r._crypto_aead_chacha20poly1305_decrypt=_e._crypto_aead_chacha20poly1305_decrypt,r._crypto_aead_chacha20poly1305_decrypt_detached=_e._crypto_aead_chacha20poly1305_decrypt_detached,r._crypto_aead_chacha20poly1305_encrypt=_e._crypto_aead_chacha20poly1305_encrypt,r._crypto_aead_chacha20poly1305_encrypt_detached=_e._crypto_aead_chacha20poly1305_encrypt_detached,r._crypto_aead_chacha20poly1305_ietf_abytes=_e._crypto_aead_chacha20poly1305_ietf_abytes,r._crypto_aead_chacha20poly1305_ietf_decrypt=_e._crypto_aead_chacha20poly1305_ietf_decrypt,r._crypto_aead_chacha20poly1305_ietf_decrypt_detached=_e._crypto_aead_chacha20poly1305_ietf_decrypt_detached,r._crypto_aead_chacha20poly1305_ietf_encrypt=_e._crypto_aead_chacha20poly1305_ietf_encrypt,r._crypto_aead_chacha20poly1305_ietf_encrypt_detached=_e._crypto_aead_chacha20poly1305_ietf_encrypt_detached,r._crypto_aead_chacha20poly1305_ietf_keybytes=_e._crypto_aead_chacha20poly1305_ietf_keybytes,r._crypto_aead_chacha20poly1305_ietf_keygen=_e._crypto_aead_chacha20poly1305_ietf_keygen,r._crypto_aead_chacha20poly1305_ietf_messagebytes_max=_e._crypto_aead_chacha20poly1305_ietf_messagebytes_max,r._crypto_aead_chacha20poly1305_ietf_npubbytes=_e._crypto_aead_chacha20poly1305_ietf_npubbytes,r._crypto_aead_chacha20poly1305_ietf_nsecbytes=_e._crypto_aead_chacha20poly1305_ietf_nsecbytes,r._crypto_aead_chacha20poly1305_keybytes=_e._crypto_aead_chacha20poly1305_keybytes,r._crypto_aead_chacha20poly1305_keygen=_e._crypto_aead_chacha20poly1305_keygen,r._crypto_aead_chacha20poly1305_messagebytes_max=_e._crypto_aead_chacha20poly1305_messagebytes_max,r._crypto_aead_chacha20poly1305_npubbytes=_e._crypto_aead_chacha20poly1305_npubbytes,r._crypto_aead_chacha20poly1305_nsecbytes=_e._crypto_aead_chacha20poly1305_nsecbytes,r._crypto_aead_xchacha20poly1305_ietf_abytes=_e._crypto_aead_xchacha20poly1305_ietf_abytes,r._crypto_aead_xchacha20poly1305_ietf_decrypt=_e._crypto_aead_xchacha20poly1305_ietf_decrypt,r._crypto_aead_xchacha20poly1305_ietf_decrypt_detached=_e._crypto_aead_xchacha20poly1305_ietf_decrypt_detached,r._crypto_aead_xchacha20poly1305_ietf_encrypt=_e._crypto_aead_xchacha20poly1305_ietf_encrypt,r._crypto_aead_xchacha20poly1305_ietf_encrypt_detached=_e._crypto_aead_xchacha20poly1305_ietf_encrypt_detached,r._crypto_aead_xchacha20poly1305_ietf_keybytes=_e._crypto_aead_xchacha20poly1305_ietf_keybytes,r._crypto_aead_xchacha20poly1305_ietf_keygen=_e._crypto_aead_xchacha20poly1305_ietf_keygen,r._crypto_aead_xchacha20poly1305_ietf_messagebytes_max=_e._crypto_aead_xchacha20poly1305_ietf_messagebytes_max,r._crypto_aead_xchacha20poly1305_ietf_npubbytes=_e._crypto_aead_xchacha20poly1305_ietf_npubbytes,r._crypto_aead_xchacha20poly1305_ietf_nsecbytes=_e._crypto_aead_xchacha20poly1305_ietf_nsecbytes,r._crypto_auth=_e._crypto_auth,r._crypto_auth_bytes=_e._crypto_auth_bytes,r._crypto_auth_keybytes=_e._crypto_auth_keybytes,r._crypto_auth_keygen=_e._crypto_auth_keygen,r._crypto_auth_verify=_e._crypto_auth_verify,r._crypto_box_beforenm=_e._crypto_box_beforenm,r._crypto_box_beforenmbytes=_e._crypto_box_beforenmbytes,r._crypto_box_detached=_e._crypto_box_detached,r._crypto_box_detached_afternm=_e._crypto_box_detached_afternm,r._crypto_box_easy=_e._crypto_box_easy,r._crypto_box_easy_afternm=_e._crypto_box_easy_afternm,r._crypto_box_keypair=_e._crypto_box_keypair,r._crypto_box_macbytes=_e._crypto_box_macbytes,r._crypto_box_messagebytes_max=_e._crypto_box_messagebytes_max,r._crypto_box_noncebytes=_e._crypto_box_noncebytes,r._crypto_box_open_detached=_e._crypto_box_open_detached,r._crypto_box_open_detached_afternm=_e._crypto_box_open_detached_afternm,r._crypto_box_open_easy=_e._crypto_box_open_easy,r._crypto_box_open_easy_afternm=_e._crypto_box_open_easy_afternm,r._crypto_box_publickeybytes=_e._crypto_box_publickeybytes,r._crypto_box_seal=_e._crypto_box_seal,r._crypto_box_seal_open=_e._crypto_box_seal_open,r._crypto_box_sealbytes=_e._crypto_box_sealbytes,r._crypto_box_secretkeybytes=_e._crypto_box_secretkeybytes,r._crypto_box_seed_keypair=_e._crypto_box_seed_keypair,r._crypto_box_seedbytes=_e._crypto_box_seedbytes,r._crypto_generichash=_e._crypto_generichash,r._crypto_generichash_bytes=_e._crypto_generichash_bytes,r._crypto_generichash_bytes_max=_e._crypto_generichash_bytes_max,r._crypto_generichash_bytes_min=_e._crypto_generichash_bytes_min,r._crypto_generichash_final=_e._crypto_generichash_final,r._crypto_generichash_init=_e._crypto_generichash_init,r._crypto_generichash_keybytes=_e._crypto_generichash_keybytes,r._crypto_generichash_keybytes_max=_e._crypto_generichash_keybytes_max,r._crypto_generichash_keybytes_min=_e._crypto_generichash_keybytes_min,r._crypto_generichash_keygen=_e._crypto_generichash_keygen,r._crypto_generichash_statebytes=_e._crypto_generichash_statebytes,r._crypto_generichash_update=_e._crypto_generichash_update,r._crypto_hash=_e._crypto_hash,r._crypto_hash_bytes=_e._crypto_hash_bytes,r._crypto_kdf_bytes_max=_e._crypto_kdf_bytes_max,r._crypto_kdf_bytes_min=_e._crypto_kdf_bytes_min,r._crypto_kdf_contextbytes=_e._crypto_kdf_contextbytes,r._crypto_kdf_derive_from_key=_e._crypto_kdf_derive_from_key,r._crypto_kdf_keybytes=_e._crypto_kdf_keybytes,r._crypto_kdf_keygen=_e._crypto_kdf_keygen,r._crypto_kx_client_session_keys=_e._crypto_kx_client_session_keys,r._crypto_kx_keypair=_e._crypto_kx_keypair,r._crypto_kx_publickeybytes=_e._crypto_kx_publickeybytes,r._crypto_kx_secretkeybytes=_e._crypto_kx_secretkeybytes,r._crypto_kx_seed_keypair=_e._crypto_kx_seed_keypair,r._crypto_kx_seedbytes=_e._crypto_kx_seedbytes,r._crypto_kx_server_session_keys=_e._crypto_kx_server_session_keys,r._crypto_kx_sessionkeybytes=_e._crypto_kx_sessionkeybytes,r._crypto_pwhash=_e._crypto_pwhash,r._crypto_pwhash_alg_argon2i13=_e._crypto_pwhash_alg_argon2i13,r._crypto_pwhash_alg_argon2id13=_e._crypto_pwhash_alg_argon2id13,r._crypto_pwhash_alg_default=_e._crypto_pwhash_alg_default,r._crypto_pwhash_bytes_max=_e._crypto_pwhash_bytes_max,r._crypto_pwhash_bytes_min=_e._crypto_pwhash_bytes_min,r._crypto_pwhash_memlimit_interactive=_e._crypto_pwhash_memlimit_interactive,r._crypto_pwhash_memlimit_max=_e._crypto_pwhash_memlimit_max,r._crypto_pwhash_memlimit_min=_e._crypto_pwhash_memlimit_min,r._crypto_pwhash_memlimit_moderate=_e._crypto_pwhash_memlimit_moderate,r._crypto_pwhash_memlimit_sensitive=_e._crypto_pwhash_memlimit_sensitive,r._crypto_pwhash_opslimit_interactive=_e._crypto_pwhash_opslimit_interactive,r._crypto_pwhash_opslimit_max=_e._crypto_pwhash_opslimit_max,r._crypto_pwhash_opslimit_min=_e._crypto_pwhash_opslimit_min,r._crypto_pwhash_opslimit_moderate=_e._crypto_pwhash_opslimit_moderate,r._crypto_pwhash_opslimit_sensitive=_e._crypto_pwhash_opslimit_sensitive,r._crypto_pwhash_passwd_max=_e._crypto_pwhash_passwd_max,r._crypto_pwhash_passwd_min=_e._crypto_pwhash_passwd_min,r._crypto_pwhash_saltbytes=_e._crypto_pwhash_saltbytes,r._crypto_pwhash_str=_e._crypto_pwhash_str,r._crypto_pwhash_str_alg=_e._crypto_pwhash_str_alg,r._crypto_pwhash_str_needs_rehash=_e._crypto_pwhash_str_needs_rehash,r._crypto_pwhash_str_verify=_e._crypto_pwhash_str_verify,r._crypto_pwhash_strbytes=_e._crypto_pwhash_strbytes,r._crypto_pwhash_strprefix=_e._crypto_pwhash_strprefix,r._crypto_scalarmult=_e._crypto_scalarmult,r._crypto_scalarmult_base=_e._crypto_scalarmult_base,r._crypto_scalarmult_bytes=_e._crypto_scalarmult_bytes,r._crypto_scalarmult_scalarbytes=_e._crypto_scalarmult_scalarbytes,r._crypto_secretbox_detached=_e._crypto_secretbox_detached,r._crypto_secretbox_easy=_e._crypto_secretbox_easy,r._crypto_secretbox_keybytes=_e._crypto_secretbox_keybytes,r._crypto_secretbox_keygen=_e._crypto_secretbox_keygen,r._crypto_secretbox_macbytes=_e._crypto_secretbox_macbytes,r._crypto_secretbox_messagebytes_max=_e._crypto_secretbox_messagebytes_max,r._crypto_secretbox_noncebytes=_e._crypto_secretbox_noncebytes,r._crypto_secretbox_open_detached=_e._crypto_secretbox_open_detached,r._crypto_secretbox_open_easy=_e._crypto_secretbox_open_easy,r._crypto_secretstream_xchacha20poly1305_abytes=_e._crypto_secretstream_xchacha20poly1305_abytes,r._crypto_secretstream_xchacha20poly1305_headerbytes=_e._crypto_secretstream_xchacha20poly1305_headerbytes,r._crypto_secretstream_xchacha20poly1305_init_pull=_e._crypto_secretstream_xchacha20poly1305_init_pull,r._crypto_secretstream_xchacha20poly1305_init_push=_e._crypto_secretstream_xchacha20poly1305_init_push,r._crypto_secretstream_xchacha20poly1305_keybytes=_e._crypto_secretstream_xchacha20poly1305_keybytes,r._crypto_secretstream_xchacha20poly1305_keygen=_e._crypto_secretstream_xchacha20poly1305_keygen,r._crypto_secretstream_xchacha20poly1305_messagebytes_max=_e._crypto_secretstream_xchacha20poly1305_messagebytes_max,r._crypto_secretstream_xchacha20poly1305_pull=_e._crypto_secretstream_xchacha20poly1305_pull,r._crypto_secretstream_xchacha20poly1305_push=_e._crypto_secretstream_xchacha20poly1305_push,r._crypto_secretstream_xchacha20poly1305_rekey=_e._crypto_secretstream_xchacha20poly1305_rekey,r._crypto_secretstream_xchacha20poly1305_statebytes=_e._crypto_secretstream_xchacha20poly1305_statebytes,r._crypto_secretstream_xchacha20poly1305_tag_final=_e._crypto_secretstream_xchacha20poly1305_tag_final,r._crypto_secretstream_xchacha20poly1305_tag_message=_e._crypto_secretstream_xchacha20poly1305_tag_message,r._crypto_secretstream_xchacha20poly1305_tag_push=_e._crypto_secretstream_xchacha20poly1305_tag_push,r._crypto_secretstream_xchacha20poly1305_tag_rekey=_e._crypto_secretstream_xchacha20poly1305_tag_rekey,r._crypto_shorthash=_e._crypto_shorthash,r._crypto_shorthash_bytes=_e._crypto_shorthash_bytes,r._crypto_shorthash_keybytes=_e._crypto_shorthash_keybytes,r._crypto_shorthash_keygen=_e._crypto_shorthash_keygen,r._crypto_sign=_e._crypto_sign,r._crypto_sign_bytes=_e._crypto_sign_bytes,r._crypto_sign_detached=_e._crypto_sign_detached,r._crypto_sign_ed25519_pk_to_curve25519=_e._crypto_sign_ed25519_pk_to_curve25519,r._crypto_sign_ed25519_sk_to_curve25519=_e._crypto_sign_ed25519_sk_to_curve25519,r._crypto_sign_final_create=_e._crypto_sign_final_create,r._crypto_sign_final_verify=_e._crypto_sign_final_verify,r._crypto_sign_init=_e._crypto_sign_init,r._crypto_sign_keypair=_e._crypto_sign_keypair,r._crypto_sign_messagebytes_max=_e._crypto_sign_messagebytes_max,r._crypto_sign_open=_e._crypto_sign_open,r._crypto_sign_publickeybytes=_e._crypto_sign_publickeybytes,r._crypto_sign_secretkeybytes=_e._crypto_sign_secretkeybytes,r._crypto_sign_seed_keypair=_e._crypto_sign_seed_keypair,r._crypto_sign_seedbytes=_e._crypto_sign_seedbytes,r._crypto_sign_statebytes=_e._crypto_sign_statebytes,r._crypto_sign_update=_e._crypto_sign_update,r._crypto_sign_verify_detached=_e._crypto_sign_verify_detached,r._emscripten_get_sbrk_ptr=_e._emscripten_get_sbrk_ptr,r._emscripten_replace_memory=_e._emscripten_replace_memory);if(r._free=_e._free,r._i64Add=_e._i64Add,r._i64Subtract=_e._i64Subtract,r._malloc=_e._malloc,r._memcpy=_e._memcpy,r._memmove=_e._memmove,r._memset=_e._memset,r._randombytes=_e._randombytes,r._randombytes_buf=_e._randombytes_buf,r._randombytes_buf_deterministic=_e._randombytes_buf_deterministic,r._randombytes_close=_e._randombytes_close,r._randombytes_random=_e._randombytes_random,r._randombytes_seedbytes=_e._randombytes_seedbytes,r._randombytes_stir=_e._randombytes_stir,r._randombytes_uniform=_e._randombytes_uniform,r._sodium_base642bin=_e._sodium_base642bin,r._sodium_base64_encoded_len=_e._sodium_base64_encoded_len,r._sodium_bin2base64=_e._sodium_bin2base64,r._sodium_bin2hex=_e._sodium_bin2hex,r._sodium_hex2bin=_e._sodium_hex2bin,r._sodium_init=_e._sodium_init,r._sodium_library_minimal=_e._sodium_library_minimal,r._sodium_library_version_major=_e._sodium_library_version_major,r._sodium_library_version_minor=_e._sodium_library_version_minor,r._sodium_pad=_e._sodium_pad,r._sodium_unpad=_e._sodium_unpad,r._sodium_version_string=_e._sodium_version_string,r.establishStackSpace=_e.establishStackSpace,r.stackAlloc=_e.stackAlloc,r.stackRestore=_e.stackRestore,r.stackSave=_e.stackSave,r.asm=_e,r.setValue=function(e,t,n,r){switch("*"===(n=n||"i8").charAt(n.length-1)&&(n="i32"),n){case"i1":case"i8":E[e>>0]=t;break;case"i16":Z[e>>1]=t;break;case"i32":X[e>>2]=t;break;case"i64":$=[t>>>0,(q=t,+D(q)>=1?q>0?(0|M(+P(q/4294967296),4294967295))>>>0:~~+J((q-+(~~q>>>0))/4294967296)>>>0:0)],X[e>>2]=$[0],X[e+4>>2]=$[1];break;case"float":W[e>>2]=t;break;case"double":R[e>>3]=t;break;default:K("invalid type for setValue: "+n)}},r.getValue=function(e,t,n){switch("*"===(t=t||"i8").charAt(t.length-1)&&(t="i32"),t){case"i1":case"i8":return E[e>>0];case"i16":return Z[e>>1];case"i32":case"i64":return X[e>>2];case"float":return W[e>>2];case"double":return R[e>>3];default:K("invalid type for getValue: "+t)}return null},r.UTF8ToString=O,ee)if(ne(ee)||(ue=ee,ee=r.locateFile?r.locateFile(ue,h):h+ue),d||A){var be=b(ee);v.set(be,8)}else{L++,r.monitorRunDependencies&&r.monitorRunDependencies(L);var pe=function(e){e.byteLength&&(e=new Uint8Array(e)),v.set(e,8),r.memoryInitializerRequest&&delete r.memoryInitializerRequest.response,function(e){if(L--,r.monitorRunDependencies&&r.monitorRunDependencies(L),0==L&&(null!==z&&(clearInterval(z),z=null),j)){var t=j;j=null,t()}}()},Qe=function(){C(ee,pe,(function(){throw"could not load memory initializer "+ee}))},he=Ae(ee);if(he)pe(he.buffer);else if(r.memoryInitializerRequest){var ye=function(){var e=r.memoryInitializerRequest,t=e.response;if(200!==e.status&&0!==e.status){var n=Ae(r.memoryInitializerRequestURL);if(!n)return void Qe();t=n.buffer}pe(t)};r.memoryInitializerRequest.response?setTimeout(ye,0):r.memoryInitializerRequest.addEventListener("load",ye)}else Qe()}function me(e){function t(){de||(de=!0,U||(w(Y),w(S),r.onRuntimeInitialized&&r.onRuntimeInitialized(),function(){if(r.postRun)for("function"==typeof r.postRun&&(r.postRun=[r.postRun]);r.postRun.length;)e=r.postRun.shift(),H.unshift(e);var e;w(H)}()))}e=e||u,L>0||(function(){if(r.preRun)for("function"==typeof r.preRun&&(r.preRun=[r.preRun]);r.preRun.length;)e=r.preRun.shift(),k.unshift(e);var e;w(k)}(),L>0||(r.setStatus?(r.setStatus("Running..."),setTimeout((function(){setTimeout((function(){r.setStatus("")}),1),t()}),1)):t()))}if(j=function e(){de||me(),de||(j=e)},r.run=me,r.preInit)for("function"==typeof r.preInit&&(r.preInit=[r.preInit]);r.preInit.length>0;)r.preInit.pop()();me(),Object.keys(g).forEach((function(e){"getRandomValue"!==e&&delete g[e]})),Object.keys(r).forEach((function(e){g[e]=r[e]}))};var c,s=void 0!==s?s:{},I={};for(c in s)s.hasOwnProperty(c)&&(I[c]=s[c]);var B,A,u=[],d=!1,_=!1,C=!1;d="object"==("undefined"==typeof window?"undefined":l(window)),_="function"==typeof importScripts,B="object"==(void 0===a?"undefined":l(a))&&"object"==l(a.versions)&&"string"==typeof a.versions.node,C=B&&!d&&!_,A=!d&&!C&&!_;var b,p,Q,h,y="";C?(y=o+"/",b=function(e,t){var r;return(r=ue(e))||(Q||(Q=n(44)),h||(h=n(45)),e=h.normalize(e),r=Q.readFileSync(e)),t?r:r.toString()},p=function(e){var t=b(e,!0);return t.buffer||(t=new Uint8Array(t)),Z(t.buffer),t},a.argv.length>1&&a.argv[1].replace(/\\/g,"/"),u=a.argv.slice(2),e.exports=s,a.on("unhandledRejection",te),s.inspect=function(){return"[Emscripten Module object]"}):A?("undefined"!=typeof read&&(b=function(e){var t=ue(e);return t?Be(t):read(e)}),p=function(e){var t;return(t=ue(e))?t:"function"==typeof readbuffer?new Uint8Array(readbuffer(e)):(Z("object"==l(t=read(e,"binary"))),t)},"undefined"!=typeof scriptArgs?u=scriptArgs:void 0!==arguments&&(u=arguments),"undefined"!=typeof print&&("undefined"==typeof console&&(console={}),console.log=print,console.warn=console.error="undefined"!=typeof printErr?printErr:print)):(d||_)&&(_?y=self.location.href:document.currentScript&&(y=document.currentScript.src),y=0!==y.indexOf("blob:")?y.substr(0,y.lastIndexOf("/")+1):"",b=function(e){try{var t=new XMLHttpRequest;return t.open("GET",e,!1),t.send(null),t.responseText}catch(t){var n=ue(e);if(n)return Be(n);throw t}},_&&(p=function(e){try{var t=new XMLHttpRequest;return t.open("GET",e,!1),t.responseType="arraybuffer",t.send(null),new Uint8Array(t.response)}catch(t){var n=ue(e);if(n)return n;throw t}}));var m=s.print||void 0,F=s.printErr||void 0;for(c in I)I.hasOwnProperty(c)&&(s[c]=I[c]);I=null,s.arguments&&(u=s.arguments),s.thisProgram&&s.thisProgram,s.quit&&s.quit;var U,f,G={"f64-rem":function(e,t){return e%t},debugger:function(){}};new Array(8),s.wasmBinary&&(U=s.wasmBinary),s.noExitRuntime&&s.noExitRuntime,"object"!=("undefined"==typeof WebAssembly?"undefined":l(WebAssembly))&&F("no native wasm support detected");var E=new WebAssembly.Table({initial:0,maximum:0,element:"anyfunc"}),v=!1;function Z(e,t){e||te("Assertion failed: "+t)}var X,W,R,V,O,x,T,N="undefined"!=typeof TextDecoder?new TextDecoder("utf8"):void 0;function w(e,t){return e?function(e,t,n){for(var r=t+n,a=t;e[a]&&!(a>=r);)++a;if(a-t>16&&e.subarray&&N)return N.decode(e.subarray(t,a));for(var o="";t<a;){var i=e[t++];if(128&i){var c=63&e[t++];if(192!=(224&i)){var s=63&e[t++];if((i=224==(240&i)?(15&i)<<12|c<<6|s:(7&i)<<18|c<<12|s<<6|63&e[t++])<65536)o+=String.fromCharCode(i);else{var l=i-65536;o+=String.fromCharCode(55296|l>>10,56320|1023&l)}}else o+=String.fromCharCode((31&i)<<6|c)}else o+=String.fromCharCode(i)}return o}(R,e,t):""}function k(e,t){return e%t>0&&(e+=t-e%t),e}function Y(e){X=e,s.HEAP8=W=new Int8Array(e),s.HEAP16=V=new Int16Array(e),s.HEAP32=O=new Int32Array(e),s.HEAPU8=R=new Uint8Array(e),s.HEAPU16=new Uint16Array(e),s.HEAPU32=new Uint32Array(e),s.HEAPF32=x=new Float32Array(e),s.HEAPF64=T=new Float64Array(e)}"undefined"!=typeof TextDecoder&&new TextDecoder("utf-16le");var S=s.TOTAL_MEMORY||16777216;function H(e){for(;e.length>0;){var t=e.shift();if("function"!=typeof t){var n=t.func;"number"==typeof n?void 0===t.arg?s.dynCall_v(n):s.dynCall_vi(n,t.arg):n(void 0===t.arg?null:t.arg)}else t()}}(f=s.wasmMemory?s.wasmMemory:new WebAssembly.Memory({initial:S/65536}))&&(X=f.buffer),S=X.byteLength,Y(X),O[9312]=5280320;var D=[],J=[],P=[],M=[],L=Math.abs,z=Math.ceil,j=Math.floor,K=Math.min,q=0,$=null,ee=null;function te(e){throw s.onAbort&&s.onAbort(e),m(e+=""),F(e),v=!0,"abort("+e+"). Build with -s ASSERTIONS=1 for more info."}s.preloadedImages={},s.preloadedAudios={};var ne="data:application/octet-stream;base64,";function re(e){return String.prototype.startsWith?e.startsWith(ne):0===e.indexOf(ne)}var ae,oe,ie,ce="data:application/octet-stream;base64,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XQJxYwCIAgJyYwBeAnNjAIoCAnRjAIkCAnVjAIMCAnZjAEgCd2MA/AECeGMAbAJ5YwD/AQJ6YwD+AQJBYwD9AQq20ATgAhMAIABBwAAgAWuthiAAIAGtiIQLEAAgACABdCAAQSAgAWt2cgseACAAIAF8IAFC/////w+DIABCAYZC/v///x+DfnwLUAEDfwJ/IwAhBCMAQT9qQUBxJAAjACECIwBBEGokACACIAA2AgAgAQRAQQAhAANAIAAgAigCAGpBADoAACAAQQFqIgAgAUcNAAsLIAQLJAALCQAgACABNgAAC8UJAg1/KX4gAigCBCIDrCEQIAIoAggiBKwhGCACKAIMIgWsIRsgAigCECIGrCEdIAIoAhQiB6whHyACKAIYIgisISYgAigCHCIJrCEtIAIoAiAiCqwhMCABKAIEIgusISAgASgCDCIMrCEhIAEoAhQiDawhIiABKAIcIg6sISMgASgCJCIPrCEkIA9BAXSsIicgA0ETbKx+IAEoAgCsIhEgAigCAKwiEn58IAEoAiCsIhMgBEETbKwiLn58IA5BAXSsIiggBUETbKwiKX58IAEoAhisIhQgBkETbKwiJX58IA1BAXSsIiogB0ETbKwiHn58IAEoAhCsIhUgCEETbKwiHH58IAxBAXSsIisgCUETbKwiGX58IApBE2ysIhcgASgCCKwiFn58IAtBAXSsIiwgAigCJCIBQRNsrCIafnwhMSAQIBR+IBIgI358IBggIn58IBUgG358IB0gIX58IBYgH358ICAgJn58IBEgLX58IBcgJH58IBMgGn58IBAgKn4gEiAUfnwgFSAYfnwgGyArfnwgFiAdfnwgHyAsfnwgESAmfnwgGSAnfnwgEyAXfnwgGiAofnwgECAVfiASICJ+fCAYICF+fCAWIBt+fCAdICB+fCARIB9+fCAcICR+fCATIBl+fCAXICN+fCAUIBp+fCAQICt+IBIgFX58IBYgGH58IBsgLH58IBEgHX58IB4gJ358IBMgHH58IBkgKH58IBQgF358IBogKn58Ii9CgICAEHwiM0Iah3wiNEKAgIAIfCI1QhmHfCI2QoCAgBB8IjdCGod8ITIgLyAzQoCAgGCDfSASICF+IBAgFn58IBggIH58IBEgG358ICQgJX58IBMgHn58IBwgI358IBQgGX58IBcgIn58IBUgGn58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KAIAIgEEQCAEQQF0IQQgASgCBEF4cSADRg0CIAEhAAwBCwsgBiACNgIAIAIgADYCGCACIAI2AgwgAiACNgIIDAILCyABKAIIIgAgAjYCDCABIAI2AgggAiAANgIIIAIgATYCDCACQQA2AhgLBUGQlwIgBCAGcjYCACAAIAI2AgAgAiAANgIYIAIgAjYCDCACIAI2AggLQayXAkGslwIoAgBBf2oiADYCACAABEAPC0HUmgIhAANAIAAoAgAiAUEIaiEAIAENAAtBrJcCQX82AgALBABBIAvGAwEDfyACQYDAAE4EQCAAIAEgAhAFGiAADwsgACEEIAAgAmohAyAAQQNxIAFBA3FGBEADQCAAQQNxBEAgAkUEQCAEDwsgACABLAAAOgAAIABBAWohACABQQFqIQEgAkEBayECDAELCyADQXxxIgJBQGohBQNAIAAgBUwEQCAAIAEoAgA2AgAgACABKAIENgIEIAAgASgCCDYCCCAAIAEoAgw2AgwgACABKAIQNgIQIAAgASgCFDYCFCAAIAEoAhg2AhggACABKAIcNgIcIAAgASgCIDYCICAAIAEoAiQ2AiQgACABKAIoNgIoIAAgASgCLDYCLCAAIAEoAjA2AjAgACABKAI0NgI0IAAgASgCODYCOCAAIAEoAjw2AjwgAEFAayEAIAFBQGshAQwBCwsDQCAAIAJIBEAgACABKAIANgIAIABBBGohACABQQRqIQEMAQsLBSADQQRrIQIDQCAAIAJIBEAgACABLAAAOgAAIAAgASwAAToAASAAIAEsAAI6AAIgACABLAADOgADIABBBGohACABQQRqIQEMAQsLCwNAIAAgA0gEQCAAIAEsAAA6AAAgAEEBaiEAIAFBAWohAQwBCwsgBAsKACAAIAEgAhA7C5gCAQR/IAAgAmohBCABQf8BcSEDIAJBwwBOBEADQCAAQQNxBEAgACADOgAAIABBAWohAAwBCwsgA0EIdCADciADQRB0ciADQRh0ciEBIARBfHEiBUFAaiEGA0AgACAGTARAIAAgATYCACAAIAE2AgQgACABNgIIIAAgATYCDCAAIAE2AhAgACABNgIUIAAgATYCGCAAIAE2AhwgACABNgIgIAAgATYCJCAAIAE2AiggACABNgIsIAAgATYCMCAAIAE2AjQgACABNgI4IAAgATYCPCAAQUBrIQAM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ACIgQQEQByElIAZBEGpBA3QgAmogHCAhfCAifCAgQQgQByAlICBCB4iFhXwiIjcDACAdQRMQByEhIB1BPRAHICEgHUIGiIWFIRwgGSkDACEhIBQpAwAiHUEBEAchJSATQRBqQQN0IAJqICAgHCAhfHwgHUEIEAcgJSAdQgeIhYV8IiA3AwAgIkETEAchHCAiQT0QByAcICJCBoiFhSEcIAdBCWpBA3QgAmopAwAhJSAHQQFqQQN0IAJqKQMAIiJBARAHISYgB0EQakEDdCACaiAdICV8IBx8ICJBCBAHICYgIkIHiIWFfCIdNwMAICBBExAHIRwgIyAgQT0QByAcICBCBoiFhXwhHCAWKQMAIiBBARAHISUgFUEQakEDdCACaiAcICJ8ICBBCBAHICUgIEIHiIWFfCIiNwMAIB1BExAHIRwgHUE9EAcgHCAdQgaIhYUhHCAIQQlqQQN0IAJqKQMAISUgCEEBakEDdCACaikDACIdQQEQByEmIAhBEGpBA3QgAmogICAlfCAcfCAdQQgQByAmIB1CB4iFhXwiIDcDACAiQRMQByEcICJBPRAHIBwgIkIGiIWFISIgDUEJakEDdCACaikDACAifCEiIB5BARAHIRwgDUEQakEDdCACaiAdICJ8IB5BCBAHIBwgHkIHiIWFfCIdNwMAICBBExAHISIgIEE9EAcgIiAgQgaIhYUhIiAJQQlqQQN0IAJqKQMAIRwgCUEBakEDdCACaikDACIgQQEQByElIAlBEGpBA3QgAmogHCAefCAifCAgQQgQByAlICBCB4iFhXwiHjcDACAdQRMQByEiIB1BPRAHICIgHUIGiIWFIR0gDkEJakEDdCACaikDACAdfCEdIB9BARAHISIgDkEQakEDdCACaiAdICB8IB9BCBAHICIgH0IHiIWFfCIdNwMAIB5BExAHISAgHkE9EAcgICAeQgaIhYUhICAKQQlqQQN0IAJqKQMAISIgCkEBakEDdCACaikDACIeQQEQByEcIApBEGpBA3QgAmogHyAifCAgfCAeQQgQByAcIB5CB4iFhXwiHzcDACAdQRMQByEgIB1BPRAHICAgHUIGiIWFIR0gD0EJakEDdCACaikDACAdfCEdICFBARAHISAgD0EQakEDdCACaiAdIB58ICFBCBAHICAgIUIHiIWFfCIeNwMAIB9BExAHIR0gH0E9EAcgHSAfQgaIhYUhHSALQQlqQQN0IAJqKQMAISAgC0EBakEDdCACaikDACIfQQEQByEiIAtBEGpBA3QgAmogICAhfCAdfCAfQQgQByAiIB9CB4iFhXwiHzcDACAeQRMQByEhIB5BPRAHICEgHkIGiIWFIR4gEEEJakEDdCACaikDACEhICNBARAHIR0gEEEQakEDdCACaiAhICR8IB58ICNBCBAHIB0gI0IHiIWFfDcDACAfQRMQByEeIB9BPRAHIB4gH0IGiIWFIR8gDEEJakEDdCACaikDACEhIAxBAWpBA3QgAmopAwAiHkEBEAchJCAMQRBqQQN0IAJqICEgI3wgH3wgHkEIEAcgJCAeQgeIhYV8NwMAIARB0ABJBEAgBCEBDAILCwtBACEBA0AgAUEDdCAAaiICIAFBA3QgA2opAwAgAikDAHw3AwAgAUEBaiIBQQhHDQALCywAIAJBgAJJBEAgACABIAJB/wFxEHMPBUH7jQJBj44CQesAQcSOAhACC0EAC0IAIANBf2pBP0sgAkHAAEtyBH9BfwUgA0H/AXEhAyACRSABRXIEQCAAIAMQrgEFIAAgAyABIAJB/wFxEK0BC0EACwsKACAAIAEgAhBNCwwAIAAgASACIAMQTgvoBAEUfyACKAAAIQ8CfyACKAAIIRYgAigADCEDQRQhFEHl8MGLBiEEQbLaiMsHIQwgAigAECEQIAIoABQhCSACKAAYIQ0gAigAHCEKQfTKgdkGIQUgAigABCECIBYLIQsgAyEIQe7IgZkDIQYgASgAACEOIAEoAAQhAyABKAAIIQcgASgADCEBA0AgBCAEIAlqQQcQCCAIcyIRakEJEAggB3MiByAHIBFqQQ0QCCAJcyIJakESEAggBHMhBCAGIAYgD2pBBxAIIAFzIhJqQQkQCCANcyIVIBIgFWpBDRAIIA9zIg1qQRIQCCAGcyEGIAwgDCAOakEHEAggCnMiE2pBCRAIIAJzIgIgAiATakENEAggDnMiCGpBEhAIIAxzIQogBSAFIBBqQQcQCCALcyILakEJEAggA3MiAyADIAtqQQ0QCCAQcyIBakESEAggBXMhBSAEIAQgC2pBBxAIIA1zIg9qQQkQCCACcyICIAIgD2pBDRAIIAtzIgtqQRIQCCAEcyEEIAYgBiARakEHEAggCHMiDmpBCRAIIANzIgMgAyAOakENEAggEXMiCGpBEhAIIAZzIQYgCiASakEHEAggAXMiECAKakEJEAggB3MiByAHIBBqQQ0QCCAScyIBakESEAggCnMhDCAFIBNqQQcQCCAJcyIJIAVqQQkQCCAVcyINIAkgDWpBDRAIIBNzIgpqQRIQCCAFcyEFIBRBfmoiFA0ACyAAIAQQCyAAQQRqIAYQCyAAQQhqIAwQCyAAQQxqIAUQCyAAQRBqIA4QCyAAQRRqIAMQCyAAQRhqIAcQCyAAQRxqIAEQCwveEwIIfx9+IAAsAAAgACwAASAAQQJqIgIsAAAQEEL///8AgyETAn4gAhARQgWIQv///wCDIScgACwABSAALAAGIABBB2oiAywAABAQQgKIQv///wCDIR8gAxARQgeIQv///wCDISAgAEEKaiIHEBFCBIhC////AIMhGSAALAANIAAsAA4gAEEPaiIELAAAEBBCAYhC////AIMhISAEEBFCBohC////AIMhFCAALAASIAAsABMgACwAFBAQQgOIQv///wCDIRogACwAFSAALAAWIABBF2oiBSwAABAQQv///wCDIRUgBRARQgWIQv///wCDIRsgACwAGiAALAAbIABBHGoiBiwAABAQQgKIQv///wCDIRYgBhARQgeIQv///wCDIRwgAEEfaiIIEBFCBIhC////AIMhECAALAAiIAAsACMgAEEkaiIBLAAAEBBCAYhC////AIMhESABEBFCBohC////AIMhEgJ+IAAsACcgACwAKCAALAApEBBCA4hC////AIMhJiAALAAqIAAsACsgAEEsaiIBLAAAEBBC////AIMhDCABEBFCBYhC////AIMhHSAALAAvIAAsADAgAEExaiIBLAAAEBBCAohC////AIMhCSABEBFCB4hC////AIMhCiAAQTRqEBFCBIhC////AIMhCyAALAA3IAAsADggAEE5aiIBLAAAEBBCAYhC////AIMhDSABEBFCBohC////AIMhDiAAQTxqEBFCA4giD0KDoVZ+IAx8IQwgC0KDoVZ+IBF8IA1C0asIfnwgD0Ln9id+fCAOQtOMQ358IApCg6FWfiAQfCALQtGrCH58IA1C04xDfnwgD0KY2hx+fCAOQuf2J358Ih5CgIBAfSIiQhWHfCERICYLIA9C0asIfnwgDkKDoVZ+fCANQoOhVn4gEnwgD0LTjEN+fCAOQtGrCH58IiNCgIBAfSIkQhWHfCESIB0gDEKAgEB9IhdCFYd8IRAgHiAiQoCAgH+DfSAJQoOhVn4gHHwgCkLRqwh+fCALQtOMQ358IA1C5/YnfnwgD0KT2Ch+fCAOQpjaHH58IBYgCULRqwh+fCAKQtOMQ358IAtC5/YnfnwgDUKY2hx+fCAOQpPYKH58IhZCgIBAfSIdQhWHfCIcQoCAQH0iJUIVh3whDiAjICRCgICAf4N9IBFCgIBAfSIeQhWHfCEPIAwgF0KAgIB/g30gEkKAgEB9IiJCFYd8IQwgEEKDoVZ+IBZ8IAlC04xDfiAbfCAKQuf2J358IAtCmNocfnwgDUKT2Ch+fCAVIAlC5/YnfnwgCkKY2hx+fCALQpPYKH58IhVCgIBAfSIXQhWIfCIbQoCAQH0iI0IVh3wgHUKAgIB/g30hDSAVIBogCUKY2hx+fCAKQpPYKH58IBQgCUKT2Ch+fCIUQoCAQH0iFUIViHwiGkKAgEB9IhZCFYh8IBdCgICAf4N9IBBC04xDfnwgDELRqwh+fCASICJCgICAf4N9IgtCg6FWfnwhEiAUIBVCgICA////AYN9IBBCmNocfnwgDELn9id+fCALQtOMQ358IA9C0asIfnwgESAeQoCAgH+DfSIJQoOhVn58IREgJwsgCUKT2Ch+fCAOQpjaHH58IBMgDkKT2Ch+fCIYQoCAQH0iFEIVh3wiFUKAgEB9IRMgGCAUQoCAgH+DfSAcICVCgICAf4N9IA1CgIBAfSIXQhWHfCIcQoCAQH0iHUIVhyIKQpPYKH58IRggHCAdQoCAgH+DfSANIBdCgICAf4N9IBsgEELRqwh+fCAjQoCAgH+DfSAMQoOhVn58IBJCgIBAfSIUQhWHfCIbQoCAQH0iHkIVh3wgGyAeQoCAgH+DfSASIBRCgICAf4N9IBogFkKAgIB/g30gEELn9id+fCAMQtOMQ358IAtC0asIfnwgD0KDoVZ+fCARQoCAQH0iDUIVh3wiGkKAgEB9IhZCFYd8IBogFkKAgIB/g30gESANQoCAgH+DfSAhIBBCk9gofnwgDEKY2hx+fCALQuf2J358IA9C04xDfnwgCULRqwh+fCAOQoOhVn58IBkgDEKT2Ch+fCALQpjaHH58IA9C5/YnfnwgCULTjEN+fCAOQtGrCH58IhJCgIBAfSIZQhWHfCIQQoCAQH0iDEIVh3wgCkKDoVZ+IBB8IAxCgICAf4N9IBIgCkLRqwh+fCAZQoCAgH+DfSAgIAtCk9gofnwgD0KY2hx+fCAJQuf2J358IA5C04xDfnwgHyAPQpPYKH58IAlCmNocfnwgDkLn9id+fCINQoCAQH0iEUIVh3wiCUKAgEB9IgtCFYd8IApC04xDfiAJfCALQoCAgH+DfSANIApC5/YnfnwgEUKAgIB/g30gE0IVh3wgFSAKQpjaHH58IBNCgICAf4N9IBhCFYd8Ig1CFYd8Ig5CFYd8Ig9CFYd8IgtCFYd8IhBCFYd8IgxCFYd8IhFCFYd8Ih9CFYd8IiBCFYd8IhlCFYd8IiFCFYciCUKT2Ch+IBhC////AIN8IQogGUL///8AgyAgQv///wCDIB9C////AIMgEUL///8AgyAMQv///wCDIAlCg6FWfiAQQv///wCDfCAJQtGrCH4gC0L///8Ag3wgCULTjEN+IA9C////AIN8IAlC5/YnfiAOQv///wCDfCAJQpjaHH4gDUL///8Ag3wgCkIVh3wiC0IVh3wiEkIVh3wiDUIVh3wiDkIVh3wiE0IVh3wiCUIVh3wiEEIVh3wiD0IVh3wiDEIVh3whESAAIAo8AAAgACAKQgiIPAABIAIgCkIQiEIfgyALQv///wCDIgpCBYaEPAAAIAAgC0IDiDwAAyAAIAtCC4g8AAQgACAKQhOIIBJC////AIMiCkIChoQ8AAUgACASQgaIPAAGIAMgCkIOiCANQv///wCDIgpCB4aEPAAAIAAgDUIBiDwACCAAIA1CCYg8AAkgByAKQhGIIA5C////AIMiCkIEhoQ8AAAgACAOQgSIPAALIAAgDkIMiDwADCAAIApCFIggE0L///8AgyIKQgGGhDwADSAAIBNCB4g8AA4gBCAKQg+IIAlC////AIMiCkIGhoQ8AAAgACAJQgKIPAAQIAAgCUIKiDwAESAAIBBCA4YgCkISiIQ8ABIgACAQQgWIPAATIAAgEEINiDwAFCAAIA88ABUgACAPQgiIPAAWIAUgD0IQiEIfgyAMQv///wCDIglCBYaEPAAAIAAgDEIDiDwAGCAAIAxCC4g8ABkgACAJQhOIIBFC////AIMiCUIChoQ8ABogACARQgaIPAAbIAYgCUIOiCAhQv///wCDIBFCFYd8IglCB4aEPAAAIAAgCUIBiDwAHSAAIAlCCYg8AB4gCCAJQhGHPAAAC/UBAQd/An8jACEHIwBBP2pBQHEkACMAIQIjAEEQaiQAIAJBADYAACACQQA7AAQgAkEAOgAGA0AgACABaiwAACEFQQAhAwNAIAIgA2oiBiAGLAAAIAUgASADQQV0QdCCAmpqLAAAc3I6AAAgA0EBaiIDQQdHDQALIAFBAWoiAUEfRw0ACyAALAAfQf8AcSEBQQAhAANAIAAgAmoiAyADLAAAIAEgAEEFdEHvggJqLAAAc3I6AAAgAEEBaiIAQQdHDQALQQAhAEEAIQEDQCABIAAgAmotAABBf2pyIQEgAEEBaiIAQQdHDQALIAcLJAAgAUEIdkEBcQvhAgEJfwJ/IwAhCiMAQT9qQUBxJAAjACEDIwBB0ANqJAAgA0GwAmohAiADQbgBaiEFIANBQGshBgNAIAMgBEEBdCIHaiABIARqLAAAIghBD3E6AAAgB0EBciADaiAIQf8BcUEEdjoAACAEQQFqIgRBIEcNAAtBACEEQQAhAQNAIAQgASADaiIHLQAAaiIIQRh0QYCAgEBrQRx1IQQgByAIIARBBHRrOgAAIAFBAWoiAUE/Rw0ACyADIAMtAD8gBGo6AD8gABB6QQEhAQNAIAYgAUEBdiABIANqLAAAEHkgAiAAIAYQVSAAIAIQFCABQQJqIgFBwABJDQALIAIgABA9IAUgAhA+IAIgBRA1IAUgAhA+IAIgBRA1IAUgAhA+IAIgBRA1IAAgAhAUQQAhAQNAIAYgAUEBdiABIANqLAAAEHkgAiAAIAYQVSAAIAIQFCABQQJqIgFBwABJDQALIAoLJAALmwEBBn8CfyMAIQgjAEE/akFAcSQAIwAhBSMAQTBqJAAgACABQShqIgMgARATIABBKGoiBCADIAEQFSAAQdAAaiIGIAAgAhAMIAQgBCACQShqEAwgAEH4AGoiAyACQdAAaiABQfgAahAMIAUgAUHQAGoiASABEBMgACAGIAQQFSAEIAYgBBATIAYgBSADEBMgAyAFIAMQFSAICyQAC2kBBX8CfyMAIQYjAEE/akFAcSQAIwAhAiMAQZABaiQAIAJB4ABqIgMgAUHQAGoQPyACQTBqIgUgASADEAwgAiABQShqIAMQDCAAIAIQLiAFEH9BB3QhASAAIAAtAB8gAXM6AB8gBgskAAudAgETf0EAIAJrIgIgACgCBCIDIAEoAgRzcSEEIAIgACgCCCIFIAEoAghzcSEGIAIgACgCDCIHIAEoAgxzcSEIIAIgACgCECIJIAEoAhBzcSEKIAIgACgCFCILIAEoAhRzcSEMIAIgACgCGCINIAEoAhhzcSEOIAIgACgCHCIPIAEoAhxzcSEQIAIgACgCICIRIAEoAiBzcSESIAIgACgCJCITIAEoAiRzcSEUIAAgACgCACIVIAIgFSABKAIAc3FzNgIAIAAgAyAEczYCBCAAIAUgBnM2AgggACAHIAhzNgIMIAAgCSAKczYCECAAIAsgDHM2AhQgACANIA5zNgIYIAAgDyAQczYCHCAAIBEgEnM2AiAgACATIBRzNgIkCzQBA38CfyMAIQMjAEE/akFAcSQAIwAhASMAQSBqJAAgASAAEC4gAUEgEFwhACADCyQAIAALEAAgACABIAIgAyAEIAUQZgsTACAAIAEgAiADIAQgBRBnGkEACwsAIAAgASACEL8BC2ABBH8CfyMAIQUjAEE/akFAcSQAIwAhAiMAQRBqJAAgAkEAOgAAA0AgAiAAIANqLAAAIAIsAAByOgAAIANBAWoiAyABRw0ACyACLQAAQf8DakEIdkEBcSEAIAULJAAgAAvLBAEMfwJ/IwAhEyMAQT9qQUBxJAACfyMAIRIjAEEQaiQAIBILIgtBADYCACAHEF8CQAJAIAMEfyAHQQRxRSEQIARFIRFBACEKAn8CQAJAAkACQANAAkADQAJAIAIgDGosAAAhDSAQBH8gDRCFAgUgDRCGAgsiDkH/AUcNACARDQYgBCANEEBFDQcgDEEBaiIMIANJDQEMBQsLIA4gCEEGdGohCCAJQQZqIg5BB0sEQCAJQX5qIQkgCiABTw0BIAAgCmogCCAJdjoAACAKQQFqIQoFIA4hCQsgDEEBaiIMIANJDQEMAgsLIAsgDDYCAEGIlwJBxAA2AgAgCCEAQX8hCCAJDAQLIAsgDDYCACAIIQBBACEIIAkMAwsgCyAMNgIAIAghAEEAIQggCQwCCyALIAw2AgAgCCEAQQAhCCAJDAELIAsgDDYCACAIIQBBACEIIAkLIgFBBEsEf0EAIQpBfwUgACEJIAghAAwCCwVBACEBQQAhCkEAIQAMAQshAAwBCyAJQQEgAXRBf2pxBEBBACEKQX8hAAUgB0ECcSAAckUEQCACIAMgCyAEIAFBAXYQhAIhAAsgAARAQQAhCgUgBARAIAsoAgAiACADSQRAAkADQCAEIAAgAmosAAAQQEUNASAAQQFqIgAgA0kNAAsgCyAANgIAQQAhAAwFCyALIAA2AgALC0EAIQALCwsgCygCACEBIAYEQCAGIAEgAmo2AgAFIAEgA0cEQEGIlwJBHDYCAEF/IQALCyAFBEAgBSAKNgIACyATCyQAIAALxQMBBX8gBBBfIAMgA0EDbiIHQX1saiEGIAdBAnQhByAHQQJyIAZBAXZqIAdBBGogBEECcRsgByAGGyIHIAFPBEAQAAsgA0EARyEGIAcgBEEEcQR/IAYEf0EAIQQDQCACIAlqLQAAIAhBCHRyIQggBUEIaiIFQQVLBEADfyAEQQFqIQYgACAEaiAIIAVBemoiBXZBP3EQjwE6AAAgBUEFSwR/IAYhBAwBBSAGCwshBAsgCUEBaiIJIANHDQALIAUEfyAAIARqIAhBBiAFa3RBP3EQjwE6AAAgBEEBagUgBAsFQQALBSAGBH9BACEEA0AgAiAJai0AACAIQQh0ciEIIAVBCGoiBUEFSwRAA38gBEEBaiEGIAAgBGogCCAFQXpqIgV2QT9xEI4BOgAAIAVBBUsEfyAGIQQMAQUgBgsLIQQLIAlBAWoiCSADRw0ACyAFBH8gACAEaiAIQQYgBWt0QT9xEI4BOgAAIARBAWoFIAQLBUEACwsiBEkEQEH0lQJBh5YCQeYBQZeWAhACCyAHIARLBEAgACAEakE9IAcgBGsQGhogByEECyAAIARqQQAgASAEQQFqIgIgAiABSRsgBGsQGhogAAsPACAAQXlxQQFHBEAQAAsLEQAgACABIAIgA0IAIAQQiwELIAAgAkL/////D1YEQBAABSAAIAEgAiADIAQgBRCWAQsLHAAgAUL/////D1YEQBAABSAAIAEgAiADEJACCwsVACAAEDogAQRAIABB8IwCQiIQHQsLngEBA38CfyMAIQMjAEE/akFAcSQAIwAhASMAQTBqJAAgASAAKQAANwAAIAEgACkACDcACCABIAApABA3ABAgASAAKQAYNwAYIAEgACkAJDcDICABIAFCKCAAQSBqQQAgABCWASAAIAEpAAA3AAAgACABKQAINwAIIAAgASkAEDcAECAAIAEpABg3ABggACABKQMgNwAkIAAQZSADCyQACwkAIABBATYAIAuWAgIFfwJ+An8jACEKIwBBP2pBQHEkACMAIQYjAEHgAGokACAGIAQgBRBRIAZBIGoiBSAEQRBqIgQgBhD7ASACIAEgAyAFENMCBH8gBkEgEApBfwUgAARAIAEgAE9BACABIABrrSADVBsgACABT0EAIAAgAWutIANUG3IEQCAAIAEgA6cQLBogACEBC0IgIAMgA0IgViICGyILQgBRBEAgBSAFQiAgBCAGEGAFIAVBIGoiCCABQX8gA0J/hSIMQl8gDEJfVhunayIJEBgaIAUgBSALQiB8IAQgBhBgIAAgCCAJEBgaCyACBEAgACALpyICaiABIAJqIAMgC30gBCAGEJMBCyAGQSAQCgtBAAshACAKCyQAIAALxQICB38CfgJ/IwAhDCMAQT9qQUBxJAAjACEHIwBB4AJqJAAgB0EgaiEGIAciCCAEIAUQUSAAIAJLQQAgACIFIAIiCWutIANUGyACIABLQQAgCSAFa60gA1QbcgRAIAAgAiADpxAsGiAAIQILIAZCADcDACAGQgA3AwggBkIANwMQIAZCADcDGEIgIAMgA0IgViIFGyINQgBRIglFBEAgBkEgaiACQX8gA0J/hSIOQl8gDkJfVhunaxAYGgsgBiAGIA1CIHwgBEEQaiILIAgQYCAHQeAAaiIEIAYQJiAJRQRAIAAgBkEgakF/IANCf4UiDkJfIA5CX1Ybp2sQGBoLIAZBwAAQCiAFBEAgACANpyIFaiACIAVqIAMgDX0gCyAIEJMBCyAIQSAQCiAEIAAgAxAPIAQgARAlIARBgAIQCiAMCyQAQQALCQAgACABELECCwsAIAAgASACEKEBCwgAIAAgARBoCwQAQQgLBABBAwsEAEF/C4cEAQZ/An8jACEJIwBBP2pBQHEkACMAIQYjAEGQBGokACAGQcADaiEEIAZBgANqIQUgBkGABGoiB0EANgIAIAcgATYAACABQcEASQRAIAZBAEEAIAEQTkEATgRAIAYgB0IEEBkgBiACIAOtEBkgBiAAIAEQTRoLBSAGQQBBAEHAABBOQQBOBEACQCAGIAdCBBAZIAYgAiADrRAZIAYgBEHAABBNQQBOBEAgACAEKQAANwAAIAAgBCkACDcACCAAIAQpABA3ABAgACAEKQAYNwAYIABBIGohACAFIAQpAwA3AwAgBSAEKQMINwMIIAUgBCkDEDcDECAFIAQpAxg3AxggBSAEKQMgNwMgIAUgBCkDKDcDKCAFIAQpAzA3AzAgBSAEKQM4NwM4IAFBYGoiAUHAAEsEQANAIARBwAAgBULAAEEAQQAQckEASA0DIAAgBCkAADcAACAAIAQpAAg3AAggACAEKQAQNwAQIAAgBCkAGDcAGCAAQSBqIQAgBSAEKQMANwMAIAUgBCkDCDcDCCAFIAQpAxA3AxAgBSAEKQMYNwMYIAUgBCkDIDcDICAFIAQpAyg3AyggBSAEKQMwNwMwIAUgBCkDODcDOCABQWBqIgFBwABLDQALCyAEIAEgBULAAEEAQQAQckEATgRAIAAgBCABEBgaCwsLCwsgBkGAAxAKIAkLJAAL2A4CE38QfgJ/IwAhFSMAQT9qQUBxJAAjACEDIwBBgBBqJAAgA0GACGoiBCABEDAgBCAAEDIgAyIBIAQQMCADIAIQMkEAIQADQCAAQQR0IgNBA3QgBGoiCSkDACADQQRyQQN0IARqIgUpAwAiHRAJIRkgA0EMckEDdCAEaiIGKQMAIBmFQSAQByEWIAYgFiAZIB0gA0EIckEDdCAEaiIHKQMAIBYQCSIWhUEYEAciHRAJIiGFQRAQByIZNwMAIAcgFiAZEAkiFjcDACAFIBYgHYVBPxAHIh03AwAgA0EBckEDdCAEaiIKKQMAIANBBXJBA3QgBGoiCykDACIbEAkhGiADQQ1yQQN0IARqIgwpAwAgGoVBIBAHIhcgGiAbIANBCXJBA3QgBGoiCCkDACAXEAkiG4VBGBAHIhcQCSIjhUEQEAchGiAIIBsgGhAJIhs3AwAgFyAbhUE/EAchFyADQQJyQQN0IARqIg0pAwAgA0EGckEDdCAEaiIOKQMAIhwQCSEfIANBDnJBA3QgBGoiDykDACAfhUEgEAciGCAfIBwgA0EKckEDdCAEaiIQKQMAIBgQCSIchUEYEAciGBAJIiSFQRAQByEfIBggHCAfEAkiIoVBPxAHIRwgA0EDckEDdCAEaiIRKQMAIANBB3JBA3QgBGoiEikDACIeEAkhGCADQQ9yQQN0IARqIhMpAwAgGIVBIBAHIiAgGCAeIANBC3JBA3QgBGoiAykDACAgEAkiHoVBGBAHIiAQCSIlhUEQEAchGCAgIB4gGBAJIiCFQT8QByEeIBcgIiAYICEgFxAJIhiFQSAQByIhEAkiIoVBGBAHIRcgCSAYIBcQCSIYNwMAIBMgGCAhhUEQEAciGDcDACAQICIgGBAJIhg3AwAgCyAXIBiFQT8QBzcDACAcICAgIyAcEAkiFyAZhUEgEAciHBAJIhiFQRgQByEZIAogFyAZEAkiFzcDACAGIBcgHIVBEBAHIhc3AwAgAyAYIBcQCSIXNwMAIA4gFyAZhUE/EAc3AwAgHiAWIBogJCAeEAkiFoVBIBAHIhoQCSIXhUEYEAchGSANIBYgGRAJIhY3AwAgDCAWIBqFQRAQByIWNwMAIAcgFyAWEAkiFjcDACASIBYgGYVBPxAHNwMAIBsgHyAlIB0QCSIWhUEgEAciGhAJIhsgHYVBGBAHIRkgESAWIBkQCSIWNwMAIA8gFiAahUEQEAciFjcDACAIIBsgFhAJIhY3AwAgBSAWIBmFQT8QBzcDACAAQQFqIgBBCEcNAAtBACEAA0AgAEEBdCIDQQN0IARqIgkpAwAgA0EgakEDdCAEaiIFKQMAIh0QCSEZIANB4ABqQQN0IARqIgYpAwAgGYVBIBAHIRYgBiAWIBkgHSADQUBrQQN0IARqIgcpAwAgFhAJIhaFQRgQByIdEAkiIYVBEBAHIhk3AwAgByAWIBkQCSIWNwMAIAUgFiAdhUE/EAciHTcDACADQQFyQQN0IARqIgopAwAgA0EhakEDdCAEaiILKQMAIhsQCSEaIANB4QBqQQN0IARqIgwpAwAgGoVBIBAHIhcgGiAbIANBwQBqQQN0IARqIggpAwAgFxAJIhuFQRgQByIXEAkiI4VBEBAHIRogCCAbIBoQCSIbNwMAIBcgG4VBPxAHIRcgA0EQakEDdCAEaiINKQMAIANBMGpBA3QgBGoiDikDACIcEAkhHyADQfAAakEDdCAEaiIPKQMAIB+FQSAQByIYIB8gHCADQdAAakEDdCAEaiIQKQMAIBgQCSIchUEYEAciGBAJIiSFQRAQByEfIBggHCAfEAkiIoVBPxAHIRwgA0ERakEDdCAEaiIRKQMAIANBMWpBA3QgBGoiEikDACIeEAkhGCADQfEAakEDdCAEaiITKQMAIBiFQSAQByIgIBggHiADQdEAakEDdCAEaiIDKQMAICAQCSIehUEYEAciIBAJIiWFQRAQByEYICAgHiAYEAkiIIVBPxAHIR4gFyAiIBggISAXEAkiGIVBIBAHIiEQCSIihUEYEAchFyAJIBggFxAJIhg3AwAgEyAYICGFQRAQByIYNwMAIBAgIiAYEAkiGDcDACALIBcgGIVBPxAHNwMAIBwgICAjIBwQCSIXIBmFQSAQByIcEAkiGIVBGBAHIRkgCiAXIBkQCSIXNwMAIAYgFyAchUEQEAciFzcDACADIBggFxAJIhc3AwAgDiAXIBmFQT8QBzcDACAeIBYgGiAkIB4QCSIWhUEgEAciGhAJIheFQRgQByEZIA0gFiAZEAkiFjcDACAMIBYgGoVBEBAHIhY3AwAgByAXIBYQCSIWNwMAIBIgFiAZhUE/EAc3AwAgGyAfICUgHRAJIhaFQSAQByIaEAkiGyAdhUEYEAchGSARIBYgGRAJIhY3AwAgDyAWIBqFQRAQByIWNwMAIAggGyAWEAkiFjcDACAFIBYgGYVBPxAHNwMAIABBAWoiAEEIRw0ACyACIAEQMCACIAQQMiAVCyQAC+0BAQF/IAAEfyAAKAIABH8gACgCBEEQSQR/QX4FAn8gACgCCEUEQEFuIAAoAgwNARoLIAAoAhQhASAAKAIQRQRAQW1BeiABGw8LIAFBCEkEf0F6BSAAKAIYRQRAQWwgACgCHA0CGgsgACgCIEUEQEFrIAAoAiQNAhoLIAAoAiwiAUEISQR/QXIFIAFBgICAAUsEf0FxBSABIAAoAjAiAUEDdEkEf0FyBSAAKAIoBH8gAQR/IAFB////B0sEf0FvBUFjQQAgACgCNCIAQf///wdLG0FkIAAbCwVBcAsFQXQLCwsLCwsLBUF/CwVBZwsLtQQCCn8RfkEAQYCAgAggACwAUBshDCAAKAIEIQggACgCCCEJIAAoAgwhCiAAKAIQIQsgACgCFCEEIAAoAhghAyAAKAIcIQUgACgCICEGIAAoAiQhByACQg9WBEAgACgCAK0hDiALQQVsrSEPIApBBWytIRUgCUEFbK0hGCAIQQVsrSEbIAitIRAgCa0hFiAKrSEZIAutIRwDQCABKAAAQf///x9xIARqrSINIA5+IAEoAANBAnZB////H3EgA2qtIhEgD358IAEoAAZBBHZB////H3EgBWqtIhIgFX58IAYgASgACUEGdmqtIhMgGH58IAcgDCABKAAMQQh2cmqtIhQgG358IRogDSAWfiAQIBF+fCAOIBJ+fCAPIBN+fCAUIBV+fCANIBB+IA4gEX58IA8gEn58IBMgFX58IBQgGH58IBpCGohC/////w+DfCIdQhqIQv////8Pg3wiF6dB////H3EhBSANIBl+IBEgFn58IBAgEn58IA4gE358IA8gFH58IBdCGohC/////w+DfCIXp0H///8fcSEGIA0gHH4gESAZfnwgEiAWfnwgECATfnwgDiAUfnwgF0IaiEL/////D4N8Ig2nQf///x9xIQcgDUIaiKdBBWwgGqdB////H3FqIgNB////H3EhBCAdp0H///8fcSADQRp2aiEDIAFBEGohASACQnB8IgJCD1YNAAsLIAAgBDYCFCAAIAM2AhggACAFNgIcIAAgBjYCICAAIAc2AiQLMAAgAUF/akE/SyAFQcAAS3IEf0F/BSAAIAIgBCABQf8BcSADIAVB/wFxEOECQQALC4QDAQd/IwAhByMAQT9qQUBxJAAjACEDIwBBQGskACACQf8BcQRAIAJB/wFxIQggAkH/AXFBwABMBEACfyAAKQBQQgBSBH9BfwUgACgA4AIiAkGAAUsEQCAAQoABEHQgACAAQeAAaiICEHcgACAAKADgAkGAf2oiBTYA4AIgBUGBAUkEQCACIABB4AFqIAUQGBogACgA4AIhBiACIQQFQaCNAkHAjQJBsgJB7Y0CEAILBSACIQYgAEHgAGohBAsgACAGrRB0IAAiAiwA5AIEQCACQn83AFgLIAJCfzcAUCAAKADgAiICIABB4ABqakEAQYACIAJrEBoaIAAgBBB3IAMgACkAABASIANBCGogACkACBASIANBEGogACkAEBASIANBGGogACkAGBASIANBIGogACkAIBASIANBKGogACkAKBASIANBMGogACkAMBASIANBOGogACkAOBASIAEgAyAIEBgaIABBwAAQCiAEQYACEApBAAshCSAHJAAgCQsPCwsQAEEACy0CAX8BfiABIABBQGsiAikAAHwhAyACIAM3AAAgACAAKQBIIAMgAVStfDcASAsJACAAQQA2AAALNgECfyAAEOMCA0AgAkEDdCAAaiIDIAEgAkEDdGopAAAgAykAAIU3AAAgAkEBaiICQQhHDQALC4s2AgV/In4CfyMAIQYjAEE/akFAcSQAIwAhAiMAQYACaiQAIAJBgAFqIQMDQCAEQQN0IANqIAEgBEEDdGopAAA3AwAgBEEBaiIE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EyABLAAUEBBCA4hC////AIMhDSABLAAVIAEsABYgAUEXaiIELAAAEBBC////AIMhCCAEEBFCBYhC////AIMhECABLAAaIAEsABsgAUEcaiIBLAAAEBBCAohC////AIMhDCABEBFCB4ghCSACLAAAIAIsAAEgAkECaiIBLAAAEBBC////AIMhGCABEBFCBYhC////AIMhGSACLAAFIAIsAAYgAkEHaiIBLAAAEBBCAohC////AIMhGyABEBFCB4hC////AIMhHCACQQpqEBFCBIhC////AIMhGiACLAANIAIsAA4gAkEPaiIBLAAAEBBCAYhC////AIMhFSABEBFCBohC////AIMhFiACLAASIAIsABMgAiwAFBAQQgOIQv///wCDIREgAiwAFSACLAAWIAJBF2oiASwAABAQQv///wCDIRMgARARQgWIQv///wCDIRQgAiwAGiACLAAbIAJBHGoiASwAABAQQgKIQv///wCDIRIgARARQgeIIRcgAywAACADLAABIANBAmoiASwAABAQQv///wCDIR0gARARQgWIQv///wCDIR4gAywABSADLAAGIANBB2oiASwAABAQQgKIQv///wCDITEgARARQgeIQv///wCDITIgA0EKahARQgSIQv///wCDITMgAywADSADLAAOIANBD2oiASwAABAQQgGIQv///wCDITQgARARQgaIQv///wCDISogAywAEiADLAATIAMsABQQEEIDiEL///8AgyE1IAMsABUgAywAFiADQRdqIgEsAAAQEEL///8AgyErIAEQEUIFiEL///8AgyEsIBAgGX4gDCAYfnwgCCAbfnwgDSAcfnwgCyAafnwgByAVfnwgCiAWfnwgDiATfnwgDyARfnwgBiAUfnwgBSASfnwgAywAGiADLAAbIANBHGoiASwAABAQQgKIQv///wCDfCItQoCAQH0hJSAMIBR+IAkgE358IBAgEn58IAggF358IAwgE34gCSARfnwgECAUfnwgCCASfnwgDSAXfnwiH0KAgEB9IiZCFYd8ISEgDCAXfiAJIBJ+fCAMIBJ+IAkgFH58IBAgF358IiJCgIBAfSIkQhWHfCEgIAkgF34iJ0KAgEB9IihCFYchIyAFIBl+IAYgGH58IB58IB0gBSAYfnwiNkKAgEB9IjdCFYh8IjhCgIBAfSEwIB8gJkKAgIB/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IAVB////H3E2AgggACAGQf///w9xNgIMIAAgB0H///8fcTYCECAAIAhB////D3E2AhQgACAJQf///x9xNgIYIAAgAUH///8PcTYCHCAAIANB////H3E2AiAgACAKIANBGnVqQf///w9xNgIkC0MBA38CfyMAIQUjAEE/akFAcSQAIwAhAyMAQSBqJAAgAyACIAEQoQEEf0F/BSAAQdCWAiADEFFBAAshACAFCyQAIAALZQEDfwJ/IwAhBSMAQT9qQUBxJAAjACEDIwBBQGskACADIAJCIBA5IAEgAykAADcAACABIAMpAAg3AAggASADKQAQNwAQIAEgAykAGDcAGCADQcAAEAogACABEGghACAFCyQAIAALBABBMAtRAQN/An8jACEHIwBBP2pBQHEkACMAIQUjAEEgaiQAIAJCMFQEf0F/BSAFIAEgAxCDASAAIAFBIGogAkJgfCAFIAEgBBCEAQshACAHCyQAIAALigEBBH8jACEFIwBB4ABqJAAgBUFAayEGIAVBIGoiBCAFIgcQiAEEQEF/IQAFIAAgBCkAADcAACAAIAQpAAg3AAggACAEKQAQNwAQIAAgBCkAGDcAGCAGIAQgAxCDASAAQSBqIAEgAiAGIAMgBxCGASEAIAdBIBAKIARBIBAKIAZBGBAKCyAFJAAgAAshACACQhBUBH9BfwUgACABQRBqIAEgAkJwfCADIAQQWQsLKAAgAkLv////D1YEQBAABSAAQRBqIAAgASACIAMgBBBaGkEADwtBAAszAQF+IAGtIAKtQiCGhCIDQoCAgIAQVARAIAAgA6cQHwVBupUCQc6VAkHFAUHolQIQAgsLFQAgACABIAKtIAOtQiCGhCAEEJsBCxQAIAAgASACrSADrUIghoQQHUEACxcAIAAgASACIAOtIAStQiCGhCAFEJQCCxkAIAAgASACIAOtIAStQiCGhCAFEJkBQQALFwAgACABIAIgA60gBK1CIIaEIAUQkwILFwAgACABIAKtIAOtQiCGhCAEEKICQQALJQAgACABIAIgAyAErSAFrUIghoQgBiAHrSAIrUIghoQgCRCpAgslACAAIAEgAiADIAQgBa0gBq1CIIaEIAcgCK0gCa1CIIaEEKcCCxcAIAAgASACrSADrUIghoQgBCAFEKwCCxgAIAAgASACIAOtIAStQiCGhCAFIAYQZgsXACAAIAEgAq0gA61CIIaEIAQgBRCtAgsYACAAIAEgAiADrSAErUIghoQgBSAGEGcLEwAgACABIAKtIAOtQiCGhBC0AgsTACAAIAGtIAKtQiCGhCADELMCCyEAIAAgASACrSADrUIghoQgBK0gBa1CIIaEIAYgBxC1AgsfACAAIAEgAq0gA61CIIaEIAStIAWtQiCGhCAGEKIBCy0AIAAgAa0gAq1CIIaEIAMgBK0gBa1CIIaEIAYgB60gCK1CIIaEIAkgChC2AgsXACAAIAEgAq0gA61CIIaEIAQgBRDZAgsUACAAIAEgAq0gA61CIIaEEDlBAAsSACAAIAEgAq0gA61CIIaEECcLGQAgACABIAIgA60gBK1CIIaEIAUgBhCvAQsXACAAIAEgAq0gA61CIIaEIAQgBRDCAQsVACAAIAEgAq0gA61CIIaEIAQQwwELFwAgACABIAKtIAOtQiCGhCAEIAUQxAELGQAgACABIAKtIAOtQiCGhCAEIAUgBhCEAQsYACAAIAEgAiADrSAErUIghoQgBSAGEFkLGwAgACABIAIgA60gBK1CIIaEIAUgBiAHEIUBCwsAIAAgASACEMABCxcAIAAgASACrSADrUIghoQgBCAFEMUBCxkAIAAgASACrSADrUIghoQgBCAFIAYQhgELGAAgACABIAIgA60gBK1CIIaEIAUgBhBaCxsAIAAgASACIAOtIAStQiCGhCAFIAYgBxCHAQsVACAAIAEgAq0gA61CIIaEIAQQ7QELFwAgACABIAKtIAOtQiCGhCAEEIkBQQALJwAgACABIAIgAyAErSAFrUIghoQgBiAHrSAIrUIghoQgCiALEKABCyUAIAAgASACIAOtIAStQiCGhCAFIAatIAetQiCGhCAJIAoQnwILJQAgACACIAOtIAStQiCGhCAFIAYgB60gCK1CIIaEIAkgChCdAQslACAAIAEgAyAErSAFrUIghoQgBiAHrSAIrUIghoQgCSAKEI4CCz4BAn8jACEEIwBBIGokACAEIAEgAiADEIkBQX8gACAEEJEBIAAgBEYbIQEgBCAAQSAQQSABciEFIAQkACAFCyYAIAAgASACIAMgBK0gBa1CIIaEIAYgB60gCK1CIIaEIAogCxB7CyUAIAAgASACIAOtIAStQiCGhCAFIAatIAetQiCGhCAJIAoQtQELJQAgACACIAOtIAStQiCGhCAFIAYgB60gCK1CIIaEIAkgChCsAQslACAAIAEgAyAErSAFrUIghoQgBiAHrSAIrUIghoQgCSAKEN0CCycAIAAgASACIAMgBK0gBa1CIIaEIAYgB60gCK1CIIaEIAogCxCCAQslACAAIAEgAiADrSAErUIghoQgBSAGrSAHrUIghoQgCSAKELwBCyUAIAAgAiADrSAErUIghoQgBSAGIAetIAitQiCGhCAJIAoQsAELJQAgACABIAMgBK0gBa1CIIaEIAYgB60gCK1CIIaEIAkgChDkAgvQAgEGfyAAQYB/TwRAQYiXAkEwNgIAQQAPC0EQIABBC2pBeHEgAEELSRsiBEHMAGoQISIARQRAQQAPCyAAQXhqIQEgAEE/cQR/IABBfGoiBSgCACIGQXhxIABBP2pBQHEiAEF4aiICIABBOGogAiABa0EPSxsiACABayICayEDIAZBA3EEQCAAIAAoAgRBAXEgA3JBAnI2AgQgACADaiIDIAMoAgRBAXI2AgQgBSAFKAIAQQFxIAJyQQJyNgIAIAAgACgCBEEBcjYCBCABIAIQigEFIAAgASgCACACajYCACAAIAM2AgQLIAAFIAEiAAshAiAAKAIEIgFBA3EEQCABQXhxIgMgBEEQaksEQCAAIAFBAXEgBHJBAnI2AgQgAiAEaiIAIAMgBGsiAUEDcjYCBCACIANqIgQgBCgCBEEBcjYCBCAAIAEQigELCyACQQhqCy4BAX8gABAhIgFFBEAgAQ8LIAFBfGooAgBBA3FFBEAgAQ8LIAFBACAAEBoaIAEL+gEBA38gAUH/AXEiAgRAAkAgAEEDcQRAIAFB/wFxIQMDQCAALAAAIgQgA0EYdEEYdUYgBEVyDQIgAEEBaiIAQQNxDQALCyACQYGChAhsIQMgACgCACICQYCBgoR4cUGAgYKEeHMgAkH//ft3anFFBEADQCACIANzIgJBgIGChHhxQYCBgoR4cyACQf/9+3dqcUUEQCAAQQRqIgAoAgAiAkGAgYKEeHFBgIGChHhzIAJB//37d2pxRQ0BCwsLIAFB/wFxIQIDQCAAQQFqIQEgACwAACIDIAJBGHRBGHVGIANFckUEQCABIQAMAQsLCwUgABAjIABqIQALIAALQgEBfyMAIQIjAEFAayQAIAAgAhCBAiABIAIpAAA3AAAgASACKQAINwAIIAEgAikAEDcAECABIAIpABg3ABggAiQACwYAQYiXAguhAQEDfwJ/IwAhBSMAQT9qQUBxJAAjACEDIwBB8ABqJAAgAyACKQAANwAAIAMgAikACDcACCADIAIpABA3ABAgAyACKQAYNwAYIANB4ABqIgIgASkAADcDACACQgA3AwggA0EgaiIBIAIgAxB4QQAhAgNAIAAgAmogASACaiwAADoAACACQQFqIgJBIEcNAAsgAUHAABAKIANBIBAKIAULJAALBABBCgsGAEGplgILyAEBCH8CfyMAIQsjAEE/akFAcSQAIwAhBCMAQRBqJAAgBEEANgIAIANBf2ogAkkEfyABIAJBf2oiCGohCUEAIQJBACEBA0AgCSABay0AACIKQYABc0H/A2ogAkH/AXEiAkH/A2ogBCgCAEH/A2pxcUEIdkEBcSEGIAIgCnIhAiAEIAQoAgBBACAGayABcXI2AgAgBiAFQf8BcXIhBSABQQFqIgEgA0cNAAsgACAIIAQoAgBrNgIAIAVBf2oFQX8LIQAgCwskACAAC9YBAQV/An8jACEJIwBBP2pBQHEkACMAIQYjAEEQaiQAIAMEfyADIANBf2oiBXEEfyACIANwBSACIAVxCyEIIAUgCGsiBSACQX9zTwRAEAALIAIgBWoiAiAESQR/IAAEQCAAIAJBAWo2AgALIAEgAmohASAGQQA6AABBACEAA38gASAAayICIAIsAAAgBiwAAHFB/wFxIAAgBXNBf2pBGHYiAkGAAXFyOgAAIAYgBi0AACACcjoAACAAQQFqIgAgA0cNAEEACwVBfwsFQX8LIQAgCQskACAACzYBAX9BHhADIgBBAEoEQEGElwIgADYCAAVBhJcCKAIAIQALIABBEEkEQBAABUHwlgJBEBAfCws1AQF/IwAhAiMAQUBrJAAgACACECogAEHQAWoiACACQsAAEB0gACABECogAkHAABAKIAIkAAs2AQN/An8jACECIwBBP2pBQHEkACMAIQAjAEEQaiQAIAAQjQEgACgCAARAIAAQjQELIAILJAALIwBBgJcCKAIABH9BAQUQggIQkAEQgAJBgJcCQQE2AgBBAAsLgQEBBH8gBAR/An8gA0UhBiACKAIAIQUCQANAIAUgAUkEQCAAIAVqLAAAIgchCCAHQT1GBEAgBEF/aiEEBSAGDQMgAyAIEEBF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BMUAKNUyAdRghP9YirT+5JJ8/7j29wBBdVb//WbS/v55JACJcwP/PBjYAIYSHQA74mEAsI5HAAfRoQC9VDP+m/pIANVU6/8t3uAA7pSP/6oqNf9Op3UAugAo/32xZ/9F4UIA4wdYAUusBgCpLeMBECRG/zICCf+LwRYAj7fn/tpFMgDsOKEB1YMqAIqRLP6I5Sj/MT8j/z2R9f9lwAL+6KdxAJhoJgF5udoAeYvT/nfwIwBBvdn+u7Oi/6C75gA++A7/PE5hAP/3o//hO1v/a0c6//EvIQEydewA27E//vRaswAjwtf/vUMy/xeHgQBovSX/uTnCACM+5//c+GwADOeyAI9QWwGDXWX/kCcCAf/6sgAFEez+iyAuAMy8Jv71czT/v3FJ/r9sRf8WRfUBF8uyAKpjqgBB+G8AJWyZ/0AlRQAAWD7+WZSQ/79E4AHxJzUAKcvt/5F+wv/dKv3/GWOXAGH93wFKczH/Bq9I/zuwywB8t/kB5ORjAIEMz/6owMP/zLAQ/pjqqwBNJVX/IXiH/47C4wEf1joA1bt9/+guPP++dCr+l7IT/zM+7f7M7MEAwug8AKwinf+9ELj+ZwNf/43pJP4pGQv/FcOmAHb1LQBD1ZX/nwwS/7uk4wGgGQUADE7DASvF4QAwjin+xJs8/9/HEgGRiJwA/HWp/pHi7gDvF2sAbbW8/+ZwMf5Jqu3/57fj/1DcFADCa38Bf81lAC40xQHSqyT/WANa/ziXjQBgu///Kk7IAP5GRgH0fagAzESKAXzXRgBmQsj+ETTkAHXcj/7L+HsAOBKu/7qXpP8z6NABoOQr//kdGQFEvj8ADQAAAAD/AAAAAPUAAAAAAAD7AAAAAAAA/QAAAADzAAAAAAcAAAAAAAMAAAAA8wAAAAAFAEGLgQILQAsAAAAAAAsAAAAA8wAAAAAAAP0AAAAAAP8AAAAAAwAAAAD1AAAAAAAAAA8AAAAAAP8AAAAA/wAAAAAHAAAAAAUAQcyCAgsBAQBB8IICCwEBAEGQgwILsAEm6JWPwrInsEXD9Iny75jw1d+sBdPGMzmxOAKIbVP8BccXanA9TdhPujwLdg0QZw8qIFP6LDnMxk7H/XeSrAN67P///////////////////////////////////////3/t////////////////////////////////////////f+7///////////////////////////////////////9/7dP1XBpjEljWnPei3vneFABBz4QCC8IFEAjJvPNn5glqO6fKhIWuZ7sr+JT+cvNuPPE2HV869U+l0YLmrX9SDlEfbD4rjGgFm2u9Qfur2YMfeSF+ExnN4FsirijXmC+KQs1l7yORRDdxLztN7M/7wLW824mBpdu16Ti1SPNbwlY5GdAFtvER8VmbTxmvpII/khiBbdrVXhyrQgIDo5iqB9i+b3BFAVuDEoyy5E6+hTEk4rT/1cN9DFVviXvydF2+crGWFjv+sd6ANRLHJacG3JuUJmnPdPGbwdJK8Z7BaZvk4yVPOIZHvu+11YyLxp3BD2WcrHfMoQwkdQIrWW8s6S2D5KZuqoR0StT7Qb3cqbBctVMRg9qI+Xar32buUlE+mBAytC1txjGoPyH7mMgnA7DkDu++x39Zv8KPqD3zC+DGJacKk0eRp9VvggPgUWPKBnBuDgpnKSkU/C/SRoUKtycmySZcOCEbLu0qxFr8bSxN37OVnRMNOFPeY6+LVHMKZaiydzy7Cmp25q7tRy7JwoE7NYIUhSxykmQD8Uyh6L+iATBCvEtmGqiRl/jQcItLwjC+VAajUWzHGFLv1hnoktEQqWVVJAaZ1iogcVeFNQ70uNG7MnCgahDI0NK4FsGkGVOrQVEIbDcemeuO30x3SCeoSJvhtbywNGNaycWzDBw5y4pB40qq2E5z42N3T8qcW6O4stbzby5o/LLvXe6Cj3RgLxdDb2OleHKr8KEUeMiE7DlkGggCx4woHmMj+v++kOm9gt7rbFCkFXnGsvej+b4rU3Lj8nhxxpxhJurOPifKB8LAIce4htEe6+DN1n3a6njRbu5/T331um8Xcqpn8AammMiixX1jCq4N+b4EmD8RG0ccEzULcRuEfQQj9XfbKJMkx0B7q8oyvL7JFQq+njxMDRCcxGcdQ7ZCPsu+1MVMKn5l/Jwpf1ns+tY6q2/LXxdYR0qMGURsgABBsIsCCwEBAEHQiwILwQHg63p8O0G4rhZW4/rxn8Rq2gmN65wysf2GYgUWX0m4AF+clbyjUIwksdCxVZyD71sERFzEWByOhtgiTt3QnxFX7P///////////////////////////////////////3/t////////////////////////////////////////f+7///////////////////////////////////////9/U2lnRWQyNTUxOSBubyBFZDI1NTE5IGNvbGxpc2lvbnMBAEGgjQILjwlTLT5idWZsZW4gPD0gQkxBS0UyQl9CTE9DS0JZVEVTAGNyeXB0b19nZW5lcmljaGFzaC9ibGFrZTJiL3JlZi9ibGFrZTJiLXJlZi5jAGJsYWtlMmJfZmluYWwAb3V0bGVuIDw9IFVJTlQ4X01BWABjcnlwdG9fZ2VuZXJpY2hhc2gvYmxha2UyYi9yZWYvZ2VuZXJpY2hhc2hfYmxha2UyYi5jAGNyeXB0b19nZW5lcmljaGFzaF9ibGFrZTJiX2ZpbmFsACRhcmdvbjJpZAAkYXJnb24yaQAkdj0AJG09ACx0PQAscD0AJGFyZ29uMmlkJHY9ACRhcmdvbjJpJHY9ACRhcmdvbjJpZCQAJGFyZ29uMmkkACJ7IHJldHVybiBNb2R1bGUuZ2V0UmFuZG9tVmFsdWUoKTsgfSIAeyBpZiAoTW9kdWxlLmdldFJhbmRvbVZhbHVlID09PSB1bmRlZmluZWQpIHsgdHJ5IHsgdmFyIHdpbmRvd18gPSAnb2JqZWN0JyA9PT0gdHlwZW9mIHdpbmRvdyA/IHdpbmRvdyA6IHNlbGY7IHZhciBjcnlwdG9fID0gdHlwZW9mIHdpbmRvd18uY3J5cHRvICE9PSAndW5kZWZpbmVkJyA/IHdpbmRvd18uY3J5cHRvIDogd2luZG93Xy5tc0NyeXB0bzsgdmFyIHJhbmRvbVZhbHVlc1N0YW5kYXJkID0gZnVuY3Rpb24oKSB7IHZhciBidWYgPSBuZXcgVWludDMyQXJyYXkoMSk7IGNyeXB0b18uZ2V0UmFuZG9tVmFsdWVzKGJ1Zik7IHJldHVybiBidWZbMF0gPj4+IDA7IH07IHJhbmRvbVZhbHVlc1N0YW5kYXJkKCk7IE1vZHVsZS5nZXRSYW5kb21WYWx1ZSA9IHJhbmRvbVZhbHVlc1N0YW5kYXJkOyB9IGNhdGNoIChlKSB7IHRyeSB7IHZhciBjcnlwdG8gPSByZXF1aXJlKCdjcnlwdG8nKTsgdmFyIHJhbmRvbVZhbHVlTm9kZUpTID0gZnVuY3Rpb24oKSB7IHZhciBidWYgPSBjcnlwdG9bJ3JhbmRvbUJ5dGVzJ10oNCk7IHJldHVybiAoYnVmWzBdIDw8IDI0IHwgYnVmWzFdIDw8IDE2IHwgYnVmWzJdIDw8IDggfCBidWZbM10pID4+PiAwOyB9OyByYW5kb21WYWx1ZU5vZGVKUygpOyBNb2R1bGUuZ2V0UmFuZG9tVmFsdWUgPSByYW5kb21WYWx1ZU5vZGVKUzsgfSBjYXRjaCAoZSkgeyB0aHJvdyAnTm8gc2VjdXJlIHJhbmRvbSBudW1iZXIgZ2VuZXJhdG9yIGZvdW5kJzsgfSB9IH0gfQBMaWJzb2RpdW1EUkdidWZfbGVuIDw9IFNJWkVfTUFYAHJhbmRvbWJ5dGVzL3JhbmRvbWJ5dGVzLmMAcmFuZG9tYnl0ZXMAYjY0X3BvcyA8PSBiNjRfbGVuAHNvZGl1bS9jb2RlY3MuYwBzb2RpdW1fYmluMmJhc2U2NAAxLjAuMTg=";function se(){try{if(U)return new Uint8Array(U);var e=ue(ce);if(e)return e;if(p)return p(ce);throw"both async and sync fetching of the wasm failed"}catch(e){te(e)}}re(ce)||(ae=ce,ce=s.locateFile?s.locateFile(ae,y):y+ae),s.asm=function(){var e={env:_e,wasi_unstable:_e,global:{NaN:NaN,Infinity:1/0},"global.Math":Math,asm2wasm:G};function t(e,t){var n=e.exports;s.asm=n,function(e){if(q--,s.monitorRunDependencies&&s.monitorRunDependencies(q),0==q&&(null!==$&&(clearInterval($),$=null),ee)){var t=ee;ee=null,t()}}()}function n(e){t(e.instance)}function r(t){return(U||!d&&!_||"function"!=typeof fetch?new Promise((function(e,t){e(se())})):fetch(ce,{credentials:"same-origin"}).then((function(e){if(!e.ok)throw"failed to load wasm binary file at '"+ce+"'";return e.arrayBuffer()})).catch((function(){return se()}))).then((function(t){return WebAssembly.instantiate(t,e)})).then(t,(function(e){F("failed to asynchronously prepare wasm: "+e),te(e)}))}if(q++,s.monitorRunDependencies&&s.monitorRunDependencies(q),s.instantiateWasm)try{return s.instantiateWasm(e,t)}catch(e){return F("Module.instantiateWasm callback failed with error: "+e),!1}return function(){if(U||"function"!=typeof WebAssembly.instantiateStreaming||re(ce)||"function"!=typeof fetch)return r(n);fetch(ce,{credentials:"same-origin"}).then((function(t){return WebAssembly.instantiateStreaming(t,e).then(n,(function(e){F("wasm streaming compile failed: "+e),F("falling back to ArrayBuffer instantiation"),r(n)}))}))}(),{}};var le=[function(){return s.getRandomValue()},function(){if(void 0===s.getRandomValue)try{var e="object"==("undefined"==typeof window?"undefined":l(window))?window:self,t=void 0!==e.crypto?e.crypto:e.msCrypto,r=function(){var e=new Uint32Array(1);return t.getRandomValues(e),e[0]>>>0};r(),s.getRandomValue=r}catch(e){try{var a=n(46),o=function(){var e=a.randomBytes(4);return(e[0]<<24|e[1]<<16|e[2]<<8|e[3])>>>0};o(),s.getRandomValue=o}catch(e){throw"No secure random number generator found"}}}];function ge(){return W.length}var Ie=!1;function Be(e){for(var t=[],n=0;n<e.length;n++){var r=e[n];r>255&&(Ie&&Z(!1,"Character code "+r+" ("+String.fromCharCode(r)+") at offset "+n+" not in 0x00-0xFF."),r&=255),t.push(String.fromCharCode(r))}return t.join("")}var Ae="function"==typeof atob?atob:function(e){var t,n,r,a,o,i,c="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=",s="",l=0;e=e.replace(/[^A-Za-z0-9\+\/\=]/g,"");do{t=c.indexOf(e.charAt(l++))<<2|(a=c.indexOf(e.charAt(l++)))>>4,n=(15&a)<<4|(o=c.indexOf(e.charAt(l++)))>>2,r=(3&o)<<6|(i=c.indexOf(e.charAt(l++))),s+=String.fromCharCode(t),64!==o&&(s+=String.fromCharCode(n)),64!==i&&(s+=String.fromCharCode(r))}while(l<e.length);return s};function ue(e){if(re(e))return function(e){if("boolean"==typeof C&&C){var t;try{t=i.from(e,"base64")}catch(n){t=new i(e,"base64")}return new Uint8Array(t.buffer,t.byteOffset,t.byteLength)}try{for(var n=Ae(e),r=new Uint8Array(n.length),a=0;a<n.length;++a)r[a]=n.charCodeAt(a);return r}catch(e){throw new Error("Converting base64 string to bytes failed.")}}(e.slice(ne.length))}var de,_e={c:function(e,t,n,r){te("Assertion failed: "+w(e)+", at: "+[t?w(t):"unknown filename",n,r?w(r):"unknown function"])},__memory_base:1024,__table_base:0,a:function(){te()},b:function(e){return le[e]()},g:ge,f:function(e,t,n){R.set(R.subarray(t,t+n),e)},e:function(e){var t=ge();if(e>2147418112)return!1;for(var n=Math.max(t,16777216);n<e;)n=n<=536870912?k(2*n,65536):Math.min(k((3*n+2147483648)/4,65536),2147418112);return!!function(e){try{return f.grow(e-X.byteLength+65535>>16),Y(f.buffer),1}catch(e){}}(n)},d:function(e){switch(e){case 30:return 16384;case 85:return 131068;case 132:case 133:case 12:case 137:case 138:case 15:case 235:case 16:case 17:case 18:case 19:case 20:case 149:case 13:case 10:case 236:case 153:case 9:case 21:case 22:case 159:case 154:case 14:case 77:case 78:case 139:case 80:case 81:case 82:case 68:case 67:case 164:case 11:case 29:case 47:case 48:case 95:case 52:case 51:case 46:return 200809;case 79:return 0;case 27:case 246:case 127:case 128:case 23:case 24:case 160:case 161:case 181:case 182:case 242:case 183:case 184:case 243:case 244:case 245:case 165:case 178:case 179:case 49:case 50:case 168:case 169:case 175:case 170:case 171:case 172:case 97:case 76:case 32:case 173:case 35:return-1;case 176:case 177:case 7:case 155:case 8:case 157:case 125:case 126:case 92:case 93:case 129:case 130:case 131:case 94:case 91:return 1;case 74:case 60:case 69:case 70:case 4:return 1024;case 31:case 42:case 72:return 32;case 87:case 26:case 33:return 2147483647;case 34:case 1:return 47839;case 38:case 36:return 99;case 43:case 37:return 2048;case 0:return 2097152;case 3:return 65536;case 28:return 32768;case 44:return 32767;case 75:return 16384;case 39:return 1e3;case 89:return 700;case 71:return 256;case 40:return 255;case 2:return 100;case 180:return 64;case 25:return 20;case 5:return 16;case 6:return 6;case 73:return 4;case 84:return"object"==("undefined"==typeof navigator?"undefined":l(navigator))&&navigator.hardwareConcurrency||1}return s.___errno_location&&(O[s.___errno_location()>>2]=28),-1},memory:f,table:E},Ce=s.asm({},_e,X);function be(e){function t(){de||(de=!0,v||(H(J),H(P),s.onRuntimeInitialized&&s.onRuntimeInitialized(),function(){if(s.postRun)for("function"==typeof s.postRun&&(s.postRun=[s.postRun]);s.postRun.length;)e=s.postRun.shift(),M.unshift(e);var e;H(M)}()))}e=e||u,q>0||(function(){if(s.preRun)for("function"==typeof s.preRun&&(s.preRun=[s.preRun]);s.preRun.length;)e=s.preRun.shift(),D.unshift(e);var e;H(D)}(),q>0||(s.setStatus?(s.setStatus("Running..."),setTimeout((function(){setTimeout((function(){s.setStatus("")}),1),t()}),1)):t()))}if(s.asm=Ce,s.___errno_location=function(){return s.asm.h.apply(null,arguments)},s._crypto_aead_chacha20poly1305_abytes=function(){return s.asm.i.apply(null,arguments)},s._crypto_aead_chacha20poly1305_decrypt=function(){return s.asm.j.apply(null,arguments)},s._crypto_aead_chacha20poly1305_decrypt_detached=function(){return s.asm.k.apply(null,arguments)},s._crypto_aead_chacha20poly1305_encrypt=function(){return s.asm.l.apply(null,arguments)},s._crypto_aead_chacha20poly1305_encrypt_detached=function(){return s.asm.m.apply(null,arguments)},s._crypto_aead_chacha20poly1305_ietf_abytes=function(){return s.asm.n.apply(null,arguments)},s._crypto_aead_chacha20poly1305_ietf_decrypt=function(){return s.asm.o.apply(null,arguments)},s._crypto_aead_chacha20poly1305_ietf_decrypt_detached=function(){return s.asm.p.apply(null,arguments)},s._crypto_aead_chacha20poly1305_ietf_encrypt=function(){return s.asm.q.apply(null,arguments)},s._crypto_aead_chacha20poly1305_ietf_encrypt_detached=function(){return s.asm.r.apply(null,arguments)},s._crypto_aead_chacha20poly1305_ietf_keybytes=function(){return s.asm.s.apply(null,arguments)},s._crypto_aead_chacha20poly1305_ietf_keygen=function(){return s.asm.t.apply(null,arguments)},s._crypto_aead_chacha20poly1305_ietf_messagebytes_max=function(){return s.asm.u.apply(null,arguments)},s._crypto_aead_chacha20poly1305_ietf_npubbytes=function(){return s.asm.v.apply(null,arguments)},s._crypto_aead_chacha20poly1305_ietf_nsecbytes=function(){return s.asm.w.apply(null,arguments)},s._crypto_aead_chacha20poly1305_keybytes=function(){return s.asm.x.apply(null,arguments)},s._crypto_aead_chacha20poly1305_keygen=function(){return s.asm.y.apply(null,arguments)},s._crypto_aead_chacha20poly1305_messagebytes_max=function(){return s.asm.z.apply(null,arguments)},s._crypto_aead_chacha20poly1305_npubbytes=function(){return s.asm.A.apply(null,arguments)},s._crypto_aead_chacha20poly1305_nsecbytes=function(){return s.asm.B.apply(null,arguments)},s._crypto_aead_xchacha20poly1305_ietf_abytes=function(){return s.asm.C.apply(null,arguments)},s._crypto_aead_xchacha20poly1305_ietf_decrypt=function(){return s.asm.D.apply(null,arguments)},s._crypto_aead_xchacha20poly1305_ietf_decrypt_detached=function(){return s.asm.E.apply(null,arguments)},s._crypto_aead_xchacha20poly1305_ietf_encrypt=function(){return s.asm.F.apply(null,arguments)},s._crypto_aead_xchacha20poly1305_ietf_encrypt_detached=function(){return s.asm.G.apply(null,arguments)},s._crypto_aead_xchacha20poly1305_ietf_keybytes=function(){return s.asm.H.apply(null,arguments)},s._crypto_aead_xchacha20poly1305_ietf_keygen=function(){return s.asm.I.apply(null,arguments)},s._crypto_aead_xchacha20poly1305_ietf_messagebytes_max=function(){return s.asm.J.apply(null,arguments)},s._crypto_aead_xchacha20poly1305_ietf_npubbytes=function(){return s.asm.K.apply(null,arguments)},s._crypto_aead_xchacha20poly1305_ietf_nsecbytes=function(){return s.asm.L.apply(null,arguments)},s._crypto_auth=function(){return s.asm.M.apply(null,arguments)},s._crypto_auth_bytes=function(){return s.asm.N.apply(null,arguments)},s._crypto_auth_keybytes=function(){return s.asm.O.apply(null,arguments)},s._crypto_auth_keygen=function(){return s.asm.P.apply(null,arguments)},s._crypto_auth_verify=function(){return s.asm.Q.apply(null,arguments)},s._crypto_box_beforenm=function(){return s.asm.R.apply(null,arguments)},s._crypto_box_beforenmbytes=function(){return s.asm.S.apply(null,arguments)},s._crypto_box_detached=function(){return s.asm.T.apply(null,arguments)},s._crypto_box_detached_afternm=function(){return s.asm.U.apply(null,arguments)},s._crypto_box_easy=function(){return s.asm.V.apply(null,arguments)},s._crypto_box_easy_afternm=function(){return s.asm.W.apply(null,arguments)},s._crypto_box_keypair=function(){return s.asm.X.apply(null,arguments)},s._crypto_box_macbytes=function(){return s.asm.Y.apply(null,arguments)},s._crypto_box_messagebytes_max=function(){return s.asm.Z.apply(null,arguments)},s._crypto_box_noncebytes=function(){return s.asm._.apply(null,arguments)},s._crypto_box_open_detached=function(){return s.asm.$.apply(null,arguments)},s._crypto_box_open_detached_afternm=function(){return s.asm.aa.apply(null,arguments)},s._crypto_box_open_easy=function(){return s.asm.ba.apply(null,arguments)},s._crypto_box_open_easy_afternm=function(){return s.asm.ca.apply(null,arguments)},s._crypto_box_publickeybytes=function(){return s.asm.da.apply(null,arguments)},s._crypto_box_seal=function(){return s.asm.ea.apply(null,arguments)},s._crypto_box_seal_open=function(){return s.asm.fa.apply(null,arguments)},s._crypto_box_sealbytes=function(){return s.asm.ga.apply(null,arguments)},s._crypto_box_secretkeybytes=function(){return s.asm.ha.apply(null,arguments)},s._crypto_box_seed_keypair=function(){return s.asm.ia.apply(null,arguments)},s._crypto_box_seedbytes=function(){return s.asm.ja.apply(null,arguments)},s._crypto_generichash=function(){return s.asm.ka.apply(null,arguments)},s._crypto_generichash_bytes=function(){return s.asm.la.apply(null,arguments)},s._crypto_generichash_bytes_max=function(){return s.asm.ma.apply(null,arguments)},s._crypto_generichash_bytes_min=function(){return s.asm.na.apply(null,arguments)},s._crypto_generichash_final=function(){return s.asm.oa.apply(null,arguments)},s._crypto_generichash_init=function(){return s.asm.pa.apply(null,arguments)},s._crypto_generichash_keybytes=function(){return s.asm.qa.apply(null,arguments)},s._crypto_generichash_keybytes_max=function(){return s.asm.ra.apply(null,arguments)},s._crypto_generichash_keybytes_min=function(){return s.asm.sa.apply(null,arguments)},s._crypto_generichash_keygen=function(){return s.asm.ta.apply(null,arguments)},s._crypto_generichash_statebytes=function(){return s.asm.ua.apply(null,arguments)},s._crypto_generichash_update=function(){return s.asm.va.apply(null,arguments)},s._crypto_hash=function(){return s.asm.wa.apply(null,arguments)},s._crypto_hash_bytes=function(){return s.asm.xa.apply(null,arguments)},s._crypto_kdf_bytes_max=function(){return s.asm.ya.apply(null,arguments)},s._crypto_kdf_bytes_min=function(){return s.asm.za.apply(null,arguments)},s._crypto_kdf_contextbytes=function(){return s.asm.Aa.apply(null,arguments)},s._crypto_kdf_derive_from_key=function(){return s.asm.Ba.apply(null,arguments)},s._crypto_kdf_keybytes=function(){return s.asm.Ca.apply(null,arguments)},s._crypto_kdf_keygen=function(){return s.asm.Da.apply(null,arguments)},s._crypto_kx_client_session_keys=function(){return s.asm.Ea.apply(null,arguments)},s._crypto_kx_keypair=function(){return s.asm.Fa.apply(null,arguments)},s._crypto_kx_publickeybytes=function(){return s.asm.Ga.apply(null,arguments)},s._crypto_kx_secretkeybytes=function(){return s.asm.Ha.apply(null,arguments)},s._crypto_kx_seed_keypair=function(){return s.asm.Ia.apply(null,arguments)},s._crypto_kx_seedbytes=function(){return s.asm.Ja.apply(null,arguments)},s._crypto_kx_server_session_keys=function(){return s.asm.Ka.apply(null,arguments)},s._crypto_kx_sessionkeybytes=function(){return s.asm.La.apply(null,arguments)},s._crypto_pwhash=function(){return s.asm.Ma.apply(null,arguments)},s._crypto_pwhash_alg_argon2i13=function(){return s.asm.Na.apply(null,arguments)},s._crypto_pwhash_alg_argon2id13=function(){return s.asm.Oa.apply(null,arguments)},s._crypto_pwhash_alg_default=function(){return s.asm.Pa.apply(null,arguments)},s._crypto_pwhash_bytes_max=function(){return s.asm.Qa.apply(null,arguments)},s._crypto_pwhash_bytes_min=function(){return s.asm.Ra.apply(null,arguments)},s._crypto_pwhash_memlimit_interactive=function(){return s.asm.Sa.apply(null,arguments)},s._crypto_pwhash_memlimit_max=function(){return s.asm.Ta.apply(null,arguments)},s._crypto_pwhash_memlimit_min=function(){return s.asm.Ua.apply(null,arguments)},s._crypto_pwhash_memlimit_moderate=function(){return s.asm.Va.apply(null,arguments)},s._crypto_pwhash_memlimit_sensitive=function(){return s.asm.Wa.apply(null,arguments)},s._crypto_pwhash_opslimit_interactive=function(){return s.asm.Xa.apply(null,arguments)},s._crypto_pwhash_opslimit_max=function(){return s.asm.Ya.apply(null,arguments)},s._crypto_pwhash_opslimit_min=function(){return s.asm.Za.apply(null,arguments)},s._crypto_pwhash_opslimit_moderate=function(){return s.asm._a.apply(null,arguments)},s._crypto_pwhash_opslimit_sensitive=function(){return s.asm.$a.apply(null,arguments)},s._crypto_pwhash_passwd_max=function(){return s.asm.ab.apply(null,arguments)},s._crypto_pwhash_passwd_min=function(){return s.asm.bb.apply(null,arguments)},s._crypto_pwhash_saltbytes=function(){return s.asm.cb.apply(null,arguments)},s._crypto_pwhash_str=function(){return s.asm.db.apply(null,arguments)},s._crypto_pwhash_str_alg=function(){return s.asm.eb.apply(null,arguments)},s._crypto_pwhash_str_needs_rehash=function(){return s.asm.fb.apply(null,arguments)},s._crypto_pwhash_str_verify=function(){return s.asm.gb.apply(null,arguments)},s._crypto_pwhash_strbytes=function(){return s.asm.hb.apply(null,arguments)},s._crypto_pwhash_strprefix=function(){return s.asm.ib.apply(null,arguments)},s._crypto_scalarmult=function(){return s.asm.jb.apply(null,arguments)},s._crypto_scalarmult_base=function(){return s.asm.kb.apply(null,arguments)},s._crypto_scalarmult_bytes=function(){return s.asm.lb.apply(null,arguments)},s._crypto_scalarmult_scalarbytes=function(){return s.asm.mb.apply(null,arguments)},s._crypto_secretbox_detached=function(){return s.asm.nb.apply(null,arguments)},s._crypto_secretbox_easy=function(){return s.asm.ob.apply(null,arguments)},s._crypto_secretbox_keybytes=function(){return s.asm.pb.apply(null,arguments)},s._crypto_secretbox_keygen=function(){return s.asm.qb.apply(null,arguments)},s._crypto_secretbox_macbytes=function(){return s.asm.rb.apply(null,arguments)},s._crypto_secretbox_messagebytes_max=function(){return s.asm.sb.apply(null,arguments)},s._crypto_secretbox_noncebytes=function(){return s.asm.tb.apply(null,arguments)},s._crypto_secretbox_open_detached=function(){return s.asm.ub.apply(null,arguments)},s._crypto_secretbox_open_easy=function(){return s.asm.vb.apply(null,arguments)},s._crypto_secretstream_xchacha20poly1305_abytes=function(){return s.asm.wb.apply(null,arguments)},s._crypto_secretstream_xchacha20poly1305_headerbytes=function(){return s.asm.xb.apply(null,arguments)},s._crypto_secretstream_xchacha20poly1305_init_pull=function(){return s.asm.yb.apply(null,arguments)},s._crypto_secretstream_xchacha20poly1305_init_push=function(){return s.asm.zb.apply(null,arguments)},s._crypto_secretstream_xchacha20poly1305_keybytes=function(){return s.asm.Ab.apply(null,arguments)},s._crypto_secretstream_xchacha20poly1305_keygen=function(){return s.asm.Bb.apply(null,arguments)},s._crypto_secretstream_xchacha20poly1305_messagebytes_max=function(){return s.asm.Cb.apply(null,arguments)},s._crypto_secretstream_xchacha20poly1305_pull=function(){return s.asm.Db.apply(null,arguments)},s._crypto_secretstream_xchacha20poly1305_push=function(){return s.asm.Eb.apply(null,arguments)},s._crypto_secretstream_xchacha20poly1305_rekey=function(){return s.asm.Fb.apply(null,arguments)},s._crypto_secretstream_xchacha20poly1305_statebytes=function(){return s.asm.Gb.apply(null,arguments)},s._crypto_secretstream_xchacha20poly1305_tag_final=function(){return s.asm.Hb.apply(null,arguments)},s._crypto_secretstream_xchacha20poly1305_tag_message=function(){return s.asm.Ib.apply(null,arguments)},s._crypto_secretstream_xchacha20poly1305_tag_push=function(){return s.asm.Jb.apply(null,arguments)},s._crypto_secretstream_xchacha20poly1305_tag_rekey=function(){return s.asm.Kb.apply(null,arguments)},s._crypto_shorthash=function(){return s.asm.Lb.apply(null,arguments)},s._crypto_shorthash_bytes=function(){return s.asm.Mb.apply(null,arguments)},s._crypto_shorthash_keybytes=function(){return s.asm.Nb.apply(null,arguments)},s._crypto_shorthash_keygen=function(){return s.asm.Ob.apply(null,arguments)},s._crypto_sign=function(){return s.asm.Pb.apply(null,arguments)},s._crypto_sign_bytes=function(){return s.asm.Qb.apply(null,arguments)},s._crypto_sign_detached=function(){return s.asm.Rb.apply(null,arguments)},s._crypto_sign_ed25519_pk_to_curve25519=function(){return s.asm.Sb.apply(null,arguments)},s._crypto_sign_ed25519_sk_to_curve25519=function(){return s.asm.Tb.apply(null,arguments)},s._crypto_sign_final_create=function(){return s.asm.Ub.apply(null,arguments)},s._crypto_sign_final_verify=function(){return s.asm.Vb.apply(null,arguments)},s._crypto_sign_init=function(){return s.asm.Wb.apply(null,arguments)},s._crypto_sign_keypair=function(){return s.asm.Xb.apply(null,arguments)},s._crypto_sign_messagebytes_max=function(){return s.asm.Yb.apply(null,arguments)},s._crypto_sign_open=function(){return s.asm.Zb.apply(null,arguments)},s._crypto_sign_publickeybytes=function(){return s.asm._b.apply(null,arguments)},s._crypto_sign_secretkeybytes=function(){return s.asm.$b.apply(null,arguments)},s._crypto_sign_seed_keypair=function(){return s.asm.ac.apply(null,arguments)},s._crypto_sign_seedbytes=function(){return s.asm.bc.apply(null,arguments)},s._crypto_sign_statebytes=function(){return s.asm.cc.apply(null,arguments)},s._crypto_sign_update=function(){return s.asm.dc.apply(null,arguments)},s._crypto_sign_verify_detached=function(){return s.asm.ec.apply(null,arguments)},s._free=function(){return s.asm.fc.apply(null,arguments)},s._malloc=function(){return s.asm.gc.apply(null,arguments)},s._randombytes=function(){return s.asm.hc.apply(null,arguments)},s._randombytes_buf=function(){return s.asm.ic.apply(null,arguments)},s._randombytes_buf_deterministic=function(){return s.asm.jc.apply(null,arguments)},s._randombytes_close=function(){return s.asm.kc.apply(null,arguments)},s._randombytes_random=function(){return s.asm.lc.apply(null,arguments)},s._randombytes_seedbytes=function(){return s.asm.mc.apply(null,arguments)},s._randombytes_stir=function(){return s.asm.nc.apply(null,arguments)},s._randombytes_uniform=function(){return s.asm.oc.apply(null,arguments)},s._sodium_base642bin=function(){return s.asm.pc.apply(null,arguments)},s._sodium_base64_encoded_len=function(){return s.asm.qc.apply(null,arguments)},s._sodium_bin2base64=function(){return s.asm.rc.apply(null,arguments)},s._sodium_bin2hex=function(){return s.asm.sc.apply(null,arguments)},s._sodium_hex2bin=function(){return s.asm.tc.apply(null,arguments)},s._sodium_init=function(){return s.asm.uc.apply(null,arguments)},s._sodium_library_minimal=function(){return s.asm.vc.apply(null,arguments)},s._sodium_library_version_major=function(){return s.asm.wc.apply(null,arguments)},s._sodium_library_version_minor=function(){return s.asm.xc.apply(null,arguments)},s._sodium_pad=function(){return s.asm.yc.apply(null,arguments)},s._sodium_unpad=function(){return s.asm.zc.apply(null,arguments)},s._sodium_version_string=function(){return s.asm.Ac.apply(null,arguments)},s.asm=Ce,s.setValue=function(e,t,n,r){switch("*"===(n=n||"i8").charAt(n.length-1)&&(n="i32"),n){case"i1":case"i8":W[e>>0]=t;break;case"i16":V[e>>1]=t;break;case"i32":O[e>>2]=t;break;case"i64":ie=[t>>>0,(oe=t,+L(oe)>=1?oe>0?(0|K(+j(oe/4294967296),4294967295))>>>0:~~+z((oe-+(~~oe>>>0))/4294967296)>>>0:0)],O[e>>2]=ie[0],O[e+4>>2]=ie[1];break;case"float":x[e>>2]=t;break;case"double":T[e>>3]=t;break;default:te("invalid type for setValue: "+n)}},s.getValue=function(e,t,n){switch("*"===(t=t||"i8").charAt(t.length-1)&&(t="i32"),t){case"i1":case"i8":return W[e>>0];case"i16":return V[e>>1];case"i32":case"i64":return O[e>>2];case"float":return x[e>>2];case"double":return T[e>>3];default:te("invalid type for getValue: "+t)}return null},s.UTF8ToString=w,ee=function e(){de||be(),de||(ee=e)},s.run=be,s.preInit)for("function"==typeof s.preInit&&(s.preInit=[s.preInit]);s.preInit.length>0;)s.preInit.pop()();be()})).catch((function(){g.useBackupModule()})),"object"==(void 0===a?"undefined":l(a))&&"function"==typeof a.removeAllListeners&&(a.removeAllListeners("uncaughtException"),a.removeAllListeners("unhandledRejection")),c})?c.apply(t,[t]):c)||(e.exports=s)}).call(this,n(8),n(9),"/",n(3).Buffer)},function(e,t,n){"use strict";t.byteLength=function(e){var t=l(e),n=t[0],r=t[1];return 3*(n+r)/4-r},t.toByteArray=function(e){var t,n,r=l(e),i=r[0],c=r[1],s=new o(function(e,t,n){return 3*(t+n)/4-n}(0,i,c)),g=0,I=c>0?i-4:i;for(n=0;n<I;n+=4)t=a[e.charCodeAt(n)]<<18|a[e.charCodeAt(n+1)]<<12|a[e.charCodeAt(n+2)]<<6|a[e.charCodeAt(n+3)],s[g++]=t>>16&255,s[g++]=t>>8&255,s[g++]=255&t;return 2===c&&(t=a[e.charCodeAt(n)]<<2|a[e.charCodeAt(n+1)]>>4,s[g++]=255&t),1===c&&(t=a[e.charCodeAt(n)]<<10|a[e.charCodeAt(n+1)]<<4|a[e.charCodeAt(n+2)]>>2,s[g++]=t>>8&255,s[g++]=255&t),s},t.fromByteArray=function(e){for(var t,n=e.length,a=n%3,o=[],i=0,c=n-a;i<c;i+=16383)o.push(g(e,i,i+16383>c?c:i+16383));return 1===a?(t=e[n-1],o.push(r[t>>2]+r[t<<4&63]+"==")):2===a&&(t=(e[n-2]<<8)+e[n-1],o.push(r[t>>10]+r[t>>4&63]+r[t<<2&63]+"=")),o.join("")};for(var r=[],a=[],o="undefined"!=typeof Uint8Array?Uint8Array:Array,i="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/",c=0,s=i.length;c<s;++c)r[c]=i[c],a[i.charCodeAt(c)]=c;function l(e){var t=e.length;if(t%4>0)throw new Error("Invalid string. Length must be a multiple of 4");var n=e.indexOf("=");return-1===n&&(n=t),[n,n===t?0:4-n%4]}function g(e,t,n){for(var a,o,i=[],c=t;c<n;c+=3)a=(e[c]<<16&16711680)+(e[c+1]<<8&65280)+(255&e[c+2]),i.push(r[(o=a)>>18&63]+r[o>>12&63]+r[o>>6&63]+r[63&o]);return i.join("")}a["-".charCodeAt(0)]=62,a["_".charCodeAt(0)]=63},function(e,t){t.read=function(e,t,n,r,a){var o,i,c=8*a-r-1,s=(1<<c)-1,l=s>>1,g=-7,I=n?a-1:0,B=n?-1:1,A=e[t+I];for(I+=B,o=A&(1<<-g)-1,A>>=-g,g+=c;g>0;o=256*o+e[t+I],I+=B,g-=8);for(i=o&(1<<-g)-1,o>>=-g,g+=r;g>0;i=256*i+e[t+I],I+=B,g-=8);if(0===o)o=1-l;else{if(o===s)return i?NaN:1/0*(A?-1:1);i+=Math.pow(2,r),o-=l}return(A?-1:1)*i*Math.pow(2,o-r)},t.write=function(e,t,n,r,a,o){var i,c,s,l=8*o-a-1,g=(1<<l)-1,I=g>>1,B=23===a?Math.pow(2,-24)-Math.pow(2,-77):0,A=r?0:o-1,u=r?1:-1,d=t<0||0===t&&1/t<0?1:0;for(t=Math.abs(t),isNaN(t)||t===1/0?(c=isNaN(t)?1:0,i=g):(i=Math.floor(Math.log(t)/Math.LN2),t*(s=Math.pow(2,-i))<1&&(i--,s*=2),(t+=i+I>=1?B/s:B*Math.pow(2,1-I))*s>=2&&(i++,s/=2),i+I>=g?(c=0,i=g):i+I>=1?(c=(t*s-1)*Math.pow(2,a),i+=I):(c=t*Math.pow(2,I-1)*Math.pow(2,a),i=0));a>=8;e[n+A]=255&c,A+=u,c/=256,a-=8);for(i=i<<a|c,l+=a;l>0;e[n+A]=255&i,A+=u,i/=256,l-=8);e[n+A-u]|=128*d}},function(e,t){},function(e,t,n){"use strict";var r=n(2).Buffer,a=n(91);e.exports=function(){function e(){!function(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}(this,e),this.head=null,this.tail=null,this.length=0}return e.prototype.push=function(e){var t={data:e,next:null};this.length>0?this.tail.next=t:this.head=t,this.tail=t,++this.length},e.prototype.unshift=function(e){var t={data:e,next:this.head};0===this.length&&(this.tail=t),this.head=t,++this.length},e.prototype.shift=function(){if(0!==this.length){var e=this.head.data;return 1===this.length?this.head=this.tail=null:this.head=this.head.next,--this.length,e}},e.prototype.clear=function(){this.head=this.tail=null,this.length=0},e.prototype.join=function(e){if(0===this.length)return"";for(var t=this.head,n=""+t.data;t=t.next;)n+=e+t.data;return n},e.prototype.concat=function(e){if(0===this.length)return r.alloc(0);if(1===this.length)return this.head.data;for(var t,n,a=r.allocUnsafe(e>>>0),o=this.head,i=0;o;)t=a,n=i,o.data.copy(t,n),i+=o.data.length,o=o.next;return a},e}(),a&&a.inspect&&a.inspect.custom&&(e.exports.prototype[a.inspect.custom]=function(){var e=a.inspect({length:this.length});return this.constructor.name+" "+e})},function(e,t){},function(e,t,n){(function(e){var r=void 0!==e&&e||"undefined"!=typeof self&&self||window,a=Function.prototype.apply;function o(e,t){this._id=e,this._clearFn=t}t.setTimeout=function(){return new o(a.call(setTimeout,r,arguments),clearTimeout)},t.setInterval=function(){return new o(a.call(setInterval,r,arguments),clearInterval)},t.clearTimeout=t.clearInterval=function(e){e&&e.close()},o.prototype.unref=o.prototype.ref=function(){},o.prototype.close=function(){this._clearFn.call(r,this._id)},t.enroll=function(e,t){clearTimeout(e._idleTimeoutId),e._idleTimeout=t},t.unenroll=function(e){clearTimeout(e._idleTimeoutId),e._idleTimeout=-1},t._unrefActive=t.active=function(e){clearTimeout(e._idleTimeoutId);var t=e._idleTimeout;t>=0&&(e._idleTimeoutId=setTimeout((function(){e._onTimeout&&e._onTimeout()}),t))},n(93),t.setImmediate="undefined"!=typeof self&&self.setImmediate||void 0!==e&&e.setImmediate||this&&this.setImmediate,t.clearImmediate="undefined"!=typeof self&&self.clearImmediate||void 0!==e&&e.clearImmediate||this&&this.clearImmediate}).call(this,n(8))},function(e,t,n){(function(e,t){!function(e,n){"use strict";if(!e.setImmediate){var r,a,o,i,c,s=1,l={},g=!1,I=e.document,B=Object.getPrototypeOf&&Object.getPrototypeOf(e);B=B&&B.setTimeout?B:e,"[object process]"==={}.toString.call(e.process)?r=function(e){t.nextTick((function(){u(e)}))}:function(){if(e.postMessage&&!e.importScripts){var t=!0,n=e.onmessage;return e.onmessage=function(){t=!1},e.postMessage("","*"),e.onmessage=n,t}}()?(i="setImmediate$"+Math.random()+"$",c=function(t){t.source===e&&"string"==typeof t.data&&0===t.data.indexOf(i)&&u(+t.data.slice(i.length))},e.addEventListener?e.addEventListener("message",c,!1):e.attachEvent("onmessage",c),r=function(t){e.postMessage(i+t,"*")}):e.MessageChannel?((o=new MessageChannel).port1.onmessage=function(e){u(e.data)},r=function(e){o.port2.postMessage(e)}):I&&"onreadystatechange"in I.createElement("script")?(a=I.documentElement,r=function(e){var t=I.createElement("script");t.onreadystatechange=function(){u(e),t.onreadystatechange=null,a.removeChild(t),t=null},a.appendChild(t)}):r=function(e){setTimeout(u,0,e)},B.setImmediate=function(e){"function"!=typeof e&&(e=new Function(""+e));for(var t=new Array(arguments.length-1),n=0;n<t.length;n++)t[n]=arguments[n+1];var a={callback:e,args:t};return l[s]=a,r(s),s++},B.clearImmediate=A}function A(e){delete l[e]}function u(e){if(g)setTimeout(u,0,e);else{var t=l[e];if(t){g=!0;try{!function(e){var t=e.callback,n=e.args;switch(n.length){case 0:t();break;case 1:t(n[0]);break;case 2:t(n[0],n[1]);break;case 3:t(n[0],n[1],n[2]);break;default:t.apply(void 0,n)}}(t)}finally{A(e),g=!1}}}}}("undefined"==typeof self?void 0===e?this:e:self)}).call(this,n(8),n(9))},function(e,t,n){(function(t){function n(e){try{if(!t.localStorage)return!1}catch(e){return!1}var n=t.localStorage[e];return null!=n&&"true"===String(n).toLowerCase()}e.exports=function(e,t){if(n("noDeprecation"))return e;var r=!1;return function(){if(!r){if(n("throwDeprecation"))throw new Error(t);n("traceDeprecation")?console.trace(t):console.warn(t),r=!0}return e.apply(this,arguments)}}}).call(this,n(8))},function(e,t,n){"use strict";e.exports=o;var r=n(51),a=Object.create(n(16));function o(e){if(!(this instanceof o))return new o(e);r.call(this,e)}a.inherits=n(1),a.inherits(o,r),o.prototype._transform=function(e,t,n){n(null,e)}},function(e,t,n){e.exports=n(30)},function(e,t,n){e.exports=n(12)},function(e,t,n){e.exports=n(29).Transform},function(e,t,n){e.exports=n(29).PassThrough},function(e,t,n){var r=n(1),a=n(14),o=n(2).Buffer,i=[1518500249,1859775393,-1894007588,-899497514],c=new Array(80);function s(){this.init(),this._w=c,a.call(this,64,56)}function l(e){return e<<30|e>>>2}function g(e,t,n,r){return 0===e?t&n|~t&r:2===e?t&n|t&r|n&r:t^n^r}r(s,a),s.prototype.init=function(){return this._a=1732584193,this._b=4023233417,this._c=2562383102,this._d=271733878,this._e=3285377520,this},s.prototype._update=function(e){for(var t,n=this._w,r=0|this._a,a=0|this._b,o=0|this._c,c=0|this._d,s=0|this._e,I=0;I<16;++I)n[I]=e.readInt32BE(4*I);for(;I<80;++I)n[I]=n[I-3]^n[I-8]^n[I-14]^n[I-16];for(var B=0;B<80;++B){var A=~~(B/20),u=0|((t=r)<<5|t>>>27)+g(A,a,o,c)+s+n[B]+i[A];s=c,c=o,o=l(a),a=r,r=u}this._a=r+this._a|0,this._b=a+this._b|0,this._c=o+this._c|0,this._d=c+this._d|0,this._e=s+this._e|0},s.prototype._hash=function(){var e=o.allocUnsafe(20);return e.writeInt32BE(0|this._a,0),e.writeInt32BE(0|this._b,4),e.writeInt32BE(0|this._c,8),e.writeInt32BE(0|this._d,12),e.writeInt32BE(0|this._e,16),e},e.exports=s},function(e,t,n){var r=n(1),a=n(14),o=n(2).Buffer,i=[1518500249,1859775393,-1894007588,-899497514],c=new Array(80);function s(){this.init(),this._w=c,a.call(this,64,56)}function l(e){return e<<5|e>>>27}function g(e){return e<<30|e>>>2}function I(e,t,n,r){return 0===e?t&n|~t&r:2===e?t&n|t&r|n&r:t^n^r}r(s,a),s.prototype.init=function(){return this._a=1732584193,this._b=4023233417,this._c=2562383102,this._d=271733878,this._e=3285377520,this},s.prototype._update=function(e){for(var t,n=this._w,r=0|this._a,a=0|this._b,o=0|this._c,c=0|this._d,s=0|this._e,B=0;B<16;++B)n[B]=e.readInt32BE(4*B);for(;B<80;++B)n[B]=(t=n[B-3]^n[B-8]^n[B-14]^n[B-16])<<1|t>>>31;for(var A=0;A<80;++A){var u=~~(A/20),d=l(r)+I(u,a,o,c)+s+n[A]+i[u]|0;s=c,c=o,o=g(a),a=r,r=d}this._a=r+this._a|0,this._b=a+this._b|0,this._c=o+this._c|0,this._d=c+this._d|0,this._e=s+this._e|0},s.prototype._hash=function(){var e=o.allocUnsafe(20);return e.writeInt32BE(0|this._a,0),e.writeInt32BE(0|this._b,4),e.writeInt32BE(0|this._c,8),e.writeInt32BE(0|this._d,12),e.writeInt32BE(0|this._e,16),e},e.exports=s},function(e,t,n){var r=n(1),a=n(52),o=n(14),i=n(2).Buffer,c=new Array(64);function s(){this.init(),this._w=c,o.call(this,64,56)}r(s,a),s.prototype.init=function(){return this._a=3238371032,this._b=914150663,this._c=812702999,this._d=4144912697,this._e=4290775857,this._f=1750603025,this._g=1694076839,this._h=3204075428,this},s.prototype._hash=function(){var e=i.allocUnsafe(28);return e.writeInt32BE(this._a,0),e.writeInt32BE(this._b,4),e.writeInt32BE(this._c,8),e.writeInt32BE(this._d,12),e.writeInt32BE(this._e,16),e.writeInt32BE(this._f,20),e.writeInt32BE(this._g,24),e},e.exports=s},function(e,t,n){var r=n(1),a=n(53),o=n(14),i=n(2).Buffer,c=new Array(160);function s(){this.init(),this._w=c,o.call(this,128,112)}r(s,a),s.prototype.init=function(){return this._ah=3418070365,this._bh=1654270250,this._ch=2438529370,this._dh=355462360,this._eh=1731405415,this._fh=2394180231,this._gh=3675008525,this._hh=1203062813,this._al=3238371032,this._bl=914150663,this._cl=812702999,this._dl=4144912697,this._el=4290775857,this._fl=1750603025,this._gl=1694076839,this._hl=3204075428,this},s.prototype._hash=function(){var e=i.allocUnsafe(48);function t(t,n,r){e.writeInt32BE(t,r),e.writeInt32BE(n,r+4)}return t(this._ah,this._al,0),t(this._bh,this._bl,8),t(this._ch,this._cl,16),t(this._dh,this._dl,24),t(this._eh,this._el,32),t(this._fh,this._fl,40),e},e.exports=s},function(e,t,n){"use strict";var r=n(1),a=n(2).Buffer,o=n(11),i=a.alloc(128);function c(e,t){o.call(this,"digest"),"string"==typeof t&&(t=a.from(t)),this._alg=e,this._key=t,t.length>64?t=e(t):t.length<64&&(t=a.concat([t,i],64));for(var n=this._ipad=a.allocUnsafe(64),r=this._opad=a.allocUnsafe(64),c=0;c<64;c++)n[c]=54^t[c],r[c]=92^t[c];this._hash=[n]}r(c,o),c.prototype._update=function(e){this._hash.push(e)},c.prototype._final=function(){var e=this._alg(a.concat(this._hash));return this._alg(a.concat([this._opad,e]))},e.exports=c},function(e,t,n){e.exports=n(56)},function(e,t,n){(function(t,r){var a,o=n(58),i=n(59),c=n(60),s=n(2).Buffer,l=t.crypto&&t.crypto.subtle,g={sha:"SHA-1","sha-1":"SHA-1",sha1:"SHA-1",sha256:"SHA-256","sha-256":"SHA-256",sha384:"SHA-384","sha-384":"SHA-384","sha-512":"SHA-512",sha512:"SHA-512"},I=[];function B(e,t,n,r,a){return l.importKey("raw",e,{name:"PBKDF2"},!1,["deriveBits"]).then((function(e){return l.deriveBits({name:"PBKDF2",salt:t,iterations:n,hash:{name:a}},e,r<<3)})).then((function(e){return s.from(e)}))}e.exports=function(e,n,A,u,d,_){"function"==typeof d&&(_=d,d=void 0);var C=g[(d=d||"sha1").toLowerCase()];if(!C||"function"!=typeof t.Promise)return r.nextTick((function(){var t;try{t=c(e,n,A,u,d)}catch(e){return _(e)}_(null,t)}));if(o(e,n,A,u),"function"!=typeof _)throw new Error("No callback provided to pbkdf2");s.isBuffer(e)||(e=s.from(e,i)),s.isBuffer(n)||(n=s.from(n,i)),function(e,t){e.then((function(e){r.nextTick((function(){t(null,e)}))}),(function(e){r.nextTick((function(){t(e)}))}))}(function(e){if(t.process&&!t.process.browser)return Promise.resolve(!1);if(!l||!l.importKey||!l.deriveBits)return Promise.resolve(!1);if(void 0!==I[e])return I[e];var n=B(a=a||s.alloc(8),a,10,128,e).then((function(){return!0})).catch((function(){return!1}));return I[e]=n,n}(C).then((function(t){return t?B(e,n,A,u,C):c(e,n,A,u,d)})),_)}}).call(this,n(8),n(9))},function(e,t,n){var r=n(108),a=n(35),o=n(36),i=n(121),c=n(23);function s(e,t,n){if(e=e.toLowerCase(),o[e])return a.createCipheriv(e,t,n);if(i[e])return new r({key:t,iv:n,mode:e});throw new TypeError("invalid suite type")}function l(e,t,n){if(e=e.toLowerCase(),o[e])return a.createDecipheriv(e,t,n);if(i[e])return new r({key:t,iv:n,mode:e,decrypt:!0});throw new TypeError("invalid suite type")}t.createCipher=t.Cipher=function(e,t){var n,r;if(e=e.toLowerCase(),o[e])n=o[e].key,r=o[e].iv;else{if(!i[e])throw new TypeError("invalid suite type");n=8*i[e].key,r=i[e].iv}var a=c(t,!1,n,r);return s(e,a.key,a.iv)},t.createCipheriv=t.Cipheriv=s,t.createDecipher=t.Decipher=function(e,t){var n,r;if(e=e.toLowerCase(),o[e])n=o[e].key,r=o[e].iv;else{if(!i[e])throw new TypeError("invalid suite type");n=8*i[e].key,r=i[e].iv}var a=c(t,!1,n,r);return l(e,a.key,a.iv)},t.createDecipheriv=t.Decipheriv=l,t.listCiphers=t.getCiphers=function(){return Object.keys(i).concat(a.getCiphers())}},function(e,t,n){var r=n(11),a=n(109),o=n(1),i=n(2).Buffer,c={"des-ede3-cbc":a.CBC.instantiate(a.EDE),"des-ede3":a.EDE,"des-ede-cbc":a.CBC.instantiate(a.EDE),"des-ede":a.EDE,"des-cbc":a.CBC.instantiate(a.DES),"des-ecb":a.DES};function s(e){r.call(this);var t,n=e.mode.toLowerCase(),a=c[n];t=e.decrypt?"decrypt":"encrypt";var o=e.key;i.isBuffer(o)||(o=i.from(o)),"des-ede"!==n&&"des-ede-cbc"!==n||(o=i.concat([o,o.slice(0,8)]));var s=e.iv;i.isBuffer(s)||(s=i.from(s)),this._des=a.create({key:o,iv:s,type:t})}c.des=c["des-cbc"],c.des3=c["des-ede3-cbc"],e.exports=s,o(s,r),s.prototype._update=function(e){return i.from(this._des.update(e))},s.prototype._final=function(){return i.from(this._des.final())}},function(e,t,n){"use strict";t.utils=n(61),t.Cipher=n(34),t.DES=n(62),t.CBC=n(110),t.EDE=n(111)},function(e,t,n){"use strict";var r=n(6),a=n(1),o={};function i(e){r.equal(e.length,8,"Invalid IV length"),this.iv=new Array(8);for(var t=0;t<this.iv.length;t++)this.iv[t]=e[t]}t.instantiate=function(e){function t(t){e.call(this,t),this._cbcInit()}a(t,e);for(var n=Object.keys(o),r=0;r<n.length;r++){var i=n[r];t.prototype[i]=o[i]}return t.create=function(e){return new t(e)},t},o._cbcInit=function(){var e=new i(this.options.iv);this._cbcState=e},o._update=function(e,t,n,r){var a=this._cbcState,o=this.constructor.super_.prototype,i=a.iv;if("encrypt"===this.type){for(var c=0;c<this.blockSize;c++)i[c]^=e[t+c];for(o._update.call(this,i,0,n,r),c=0;c<this.blockSize;c++)i[c]=n[r+c]}else{for(o._update.call(this,e,t,n,r),c=0;c<this.blockSize;c++)n[r+c]^=i[c];for(c=0;c<this.blockSize;c++)i[c]=e[t+c]}}},function(e,t,n){"use strict";var r=n(6),a=n(1),o=n(34),i=n(62);function c(e,t){r.equal(t.length,24,"Invalid key length");var n=t.slice(0,8),a=t.slice(8,16),o=t.slice(16,24);this.ciphers="encrypt"===e?[i.create({type:"encrypt",key:n}),i.create({type:"decrypt",key:a}),i.create({type:"encrypt",key:o})]:[i.create({type:"decrypt",key:o}),i.create({type:"encrypt",key:a}),i.create({type:"decrypt",key:n})]}function s(e){o.call(this,e);var t=new c(this.type,this.options.key);this._edeState=t}a(s,o),e.exports=s,s.create=function(e){return new s(e)},s.prototype._update=function(e,t,n,r){var a=this._edeState;a.ciphers[0]._update(e,t,n,r),a.ciphers[1]._update(n,r,n,r),a.ciphers[2]._update(n,r,n,r)},s.prototype._pad=i.prototype._pad,s.prototype._unpad=i.prototype._unpad},function(e,t,n){var r=n(36),a=n(66),o=n(2).Buffer,i=n(67),c=n(11),s=n(22),l=n(23);function g(e,t,n){c.call(this),this._cache=new B,this._cipher=new s.AES(t),this._prev=o.from(n),this._mode=e,this._autopadding=!0}n(1)(g,c),g.prototype._update=function(e){var t,n;this._cache.add(e);for(var r=[];t=this._cache.get();)n=this._mode.encrypt(this,t),r.push(n);return o.concat(r)};var I=o.alloc(16,16);function B(){this.cache=o.allocUnsafe(0)}function A(e,t,n){var c=r[e.toLowerCase()];if(!c)throw new TypeError("invalid suite type");if("string"==typeof t&&(t=o.from(t)),t.length!==c.key/8)throw new TypeError("invalid key length "+t.length);if("string"==typeof n&&(n=o.from(n)),"GCM"!==c.mode&&n.length!==c.iv)throw new TypeError("invalid iv length "+n.length);return"stream"===c.type?new i(c.module,t,n):"auth"===c.type?new a(c.module,t,n):new g(c.module,t,n)}g.prototype._final=function(){var e=this._cache.flush();if(this._autopadding)return e=this._mode.encrypt(this,e),this._cipher.scrub(),e;if(!e.equals(I))throw this._cipher.scrub(),new Error("data not multiple of block length")},g.prototype.setAutoPadding=function(e){return this._autopadding=!!e,this},B.prototype.add=function(e){this.cache=o.concat([this.cache,e])},B.prototype.get=function(){if(this.cache.length>15){var e=this.cache.slice(0,16);return this.cache=this.cache.slice(16),e}return null},B.prototype.flush=function(){for(var e=16-this.cache.length,t=o.allocUnsafe(e),n=-1;++n<e;)t.writeUInt8(e,n);return o.concat([this.cache,t])},t.createCipheriv=A,t.createCipher=function(e,t){var n=r[e.toLowerCase()];if(!n)throw new TypeError("invalid suite type");var a=l(t,!1,n.key,n.iv);return A(e,a.key,a.iv)}},function(e,t){t.encrypt=function(e,t){return e._cipher.encryptBlock(t)},t.decrypt=function(e,t){return e._cipher.decryptBlock(t)}},function(e,t,n){var r=n(17);t.encrypt=function(e,t){var n=r(t,e._prev);return e._prev=e._cipher.encryptBlock(n),e._prev},t.decrypt=function(e,t){var n=e._prev;e._prev=t;var a=e._cipher.decryptBlock(t);return r(a,n)}},function(e,t,n){var r=n(2).Buffer,a=n(17);function o(e,t,n){var o=t.length,i=a(t,e._cache);return e._cache=e._cache.slice(o),e._prev=r.concat([e._prev,n?t:i]),i}t.encrypt=function(e,t,n){for(var a,i=r.allocUnsafe(0);t.length;){if(0===e._cache.length&&(e._cache=e._cipher.encryptBlock(e._prev),e._prev=r.allocUnsafe(0)),!(e._cache.length<=t.length)){i=r.concat([i,o(e,t,n)]);break}a=e._cache.length,i=r.concat([i,o(e,t.slice(0,a),n)]),t=t.slice(a)}return i}},function(e,t,n){var r=n(2).Buffer;function a(e,t,n){var a=e._cipher.encryptBlock(e._prev)[0]^t;return e._prev=r.concat([e._prev.slice(1),r.from([n?t:a])]),a}t.encrypt=function(e,t,n){for(var o=t.length,i=r.allocUnsafe(o),c=-1;++c<o;)i[c]=a(e,t[c],n);return i}},function(e,t,n){var r=n(2).Buffer;function a(e,t,n){for(var r,a,i=-1,c=0;++i<8;)r=t&1<<7-i?128:0,c+=(128&(a=e._cipher.encryptBlock(e._prev)[0]^r))>>i%8,e._prev=o(e._prev,n?r:a);return c}function o(e,t){var n=e.length,a=-1,o=r.allocUnsafe(e.length);for(e=r.concat([e,r.from([t])]);++a<n;)o[a]=e[a]<<1|e[a+1]>>7;return o}t.encrypt=function(e,t,n){for(var o=t.length,i=r.allocUnsafe(o),c=-1;++c<o;)i[c]=a(e,t[c],n);return i}},function(e,t,n){(function(e){var r=n(17);function a(e){return e._prev=e._cipher.encryptBlock(e._prev),e._prev}t.encrypt=function(t,n){for(;t._cache.length<n.length;)t._cache=e.concat([t._cache,a(t)]);var o=t._cache.slice(0,n.length);return t._cache=t._cache.slice(n.length),r(n,o)}}).call(this,n(3).Buffer)},function(e,t,n){var r=n(2).Buffer,a=r.alloc(16,0);function o(e){var t=r.allocUnsafe(16);return t.writeUInt32BE(e[0]>>>0,0),t.writeUInt32BE(e[1]>>>0,4),t.writeUInt32BE(e[2]>>>0,8),t.writeUInt32BE(e[3]>>>0,12),t}function i(e){this.h=e,this.state=r.alloc(16,0),this.cache=r.allocUnsafe(0)}i.prototype.ghash=function(e){for(var t=-1;++t<e.length;)this.state[t]^=e[t];this._multiply()},i.prototype._multiply=function(){for(var e,t,n,r=[(e=this.h).readUInt32BE(0),e.readUInt32BE(4),e.readUInt32BE(8),e.readUInt32BE(12)],a=[0,0,0,0],i=-1;++i<128;){for(0!=(this.state[~~(i/8)]&1<<7-i%8)&&(a[0]^=r[0],a[1]^=r[1],a[2]^=r[2],a[3]^=r[3]),n=0!=(1&r[3]),t=3;t>0;t--)r[t]=r[t]>>>1|(1&r[t-1])<<31;r[0]=r[0]>>>1,n&&(r[0]=r[0]^225<<24)}this.state=o(a)},i.prototype.update=function(e){var t;for(this.cache=r.concat([this.cache,e]);this.cache.length>=16;)t=this.cache.slice(0,16),this.cache=this.cache.slice(16),this.ghash(t)},i.prototype.final=function(e,t){return this.cache.length&&this.ghash(r.concat([this.cache,a],16)),this.ghash(o([0,e,0,t])),this.state},e.exports=i},function(e,t,n){var r=n(66),a=n(2).Buffer,o=n(36),i=n(67),c=n(11),s=n(22),l=n(23);function g(e,t,n){c.call(this),this._cache=new I,this._last=void 0,this._cipher=new s.AES(t),this._prev=a.from(n),this._mode=e,this._autopadding=!0}function I(){this.cache=a.allocUnsafe(0)}function B(e,t,n){var c=o[e.toLowerCase()];if(!c)throw new TypeError("invalid suite type");if("string"==typeof n&&(n=a.from(n)),"GCM"!==c.mode&&n.length!==c.iv)throw new TypeError("invalid iv length "+n.length);if("string"==typeof t&&(t=a.from(t)),t.length!==c.key/8)throw new TypeError("invalid key length "+t.length);return"stream"===c.type?new i(c.module,t,n,!0):"auth"===c.type?new r(c.module,t,n,!0):new g(c.module,t,n)}n(1)(g,c),g.prototype._update=function(e){var t,n;this._cache.add(e);for(var r=[];t=this._cache.get(this._autopadding);)n=this._mode.decrypt(this,t),r.push(n);return a.concat(r)},g.prototype._final=function(){var e=this._cache.flush();if(this._autopadding)return function(e){var t=e[15];if(t<1||t>16)throw new Error("unable to decrypt data");for(var n=-1;++n<t;)if(e[n+(16-t)]!==t)throw new Error("unable to decrypt data");if(16!==t)return e.slice(0,16-t)}(this._mode.decrypt(this,e));if(e)throw new Error("data not multiple of block length")},g.prototype.setAutoPadding=function(e){return this._autopadding=!!e,this},I.prototype.add=function(e){this.cache=a.concat([this.cache,e])},I.prototype.get=function(e){var t;if(e){if(this.cache.length>16)return t=this.cache.slice(0,16),this.cache=this.cache.slice(16),t}else if(this.cache.length>=16)return t=this.cache.slice(0,16),this.cache=this.cache.slice(16),t;return null},I.prototype.flush=function(){if(this.cache.length)return this.cache},t.createDecipher=function(e,t){var n=o[e.toLowerCase()];if(!n)throw new TypeError("invalid suite type");var r=l(t,!1,n.key,n.iv);return B(e,r.key,r.iv)},t.createDecipheriv=B},function(e,t){t["des-ecb"]={key:8,iv:0},t["des-cbc"]=t.des={key:8,iv:8},t["des-ede3-cbc"]=t.des3={key:24,iv:8},t["des-ede3"]={key:24,iv:0},t["des-ede-cbc"]={key:16,iv:8},t["des-ede"]={key:16,iv:0}},function(e,t,n){(function(e){var r=n(68),a=n(125),o=n(126),i={binary:!0,hex:!0,base64:!0};t.DiffieHellmanGroup=t.createDiffieHellmanGroup=t.getDiffieHellman=function(t){var n=new e(a[t].prime,"hex"),r=new e(a[t].gen,"hex");return new o(n,r)},t.createDiffieHellman=t.DiffieHellman=function t(n,a,c,s){return e.isBuffer(a)||void 0===i[a]?t(n,"binary",a,c):(a=a||"binary",s=s||"binary",c=c||new e([2]),e.isBuffer(c)||(c=new e(c,s)),"number"==typeof n?new o(r(n,c),c,!0):(e.isBuffer(n)||(n=new e(n,a)),new o(n,c,!0)))}}).call(this,n(3).Buffer)},function(e,t){},function(e,t){},function(e){e.exports=JSON.parse('{"modp1":{"gen":"02","prime":"ffffffffffffffffc90fdaa22168c234c4c6628b80dc1cd129024e088a67cc74020bbea63b139b22514a08798e3404ddef9519b3cd3a431b302b0a6df25f14374fe1356d6d51c245e485b576625e7ec6f44c42e9a63a3620ffffffffffffffff"},"modp2":{"gen":"02","prime":"ffffffffffffffffc90fdaa22168c234c4c6628b80dc1cd129024e088a67cc74020bbea63b139b22514a08798e3404ddef9519b3cd3a431b302b0a6df25f14374fe1356d6d51c245e485b576625e7ec6f44c42e9a637ed6b0bff5cb6f406b7edee386bfb5a899fa5ae9f24117c4b1fe649286651ece65381ffffffffffffffff"},"modp5":{"gen":"02","prime":"ffffffffffffffffc90fdaa22168c234c4c6628b80dc1cd129024e088a67cc74020bbea63b139b22514a08798e3404ddef9519b3cd3a431b302b0a6df25f14374fe1356d6d51c245e485b576625e7ec6f44c42e9a637ed6b0bff5cb6f406b7edee386bfb5a899fa5ae9f24117c4b1fe649286651ece45b3dc2007cb8a163bf0598da48361c55d39a69163fa8fd24cf5f83655d23dca3ad961c62f356208552bb9ed529077096966d670c354e4abc9804f1746c08ca237327ffffffffffffffff"},"modp14":{"gen":"02","prime":"ffffffffffffffffc90fdaa22168c234c4c6628b80dc1cd129024e088a67cc74020bbea63b139b22514a08798e3404ddef9519b3cd3a431b302b0a6df25f14374fe1356d6d51c245e485b576625e7ec6f44c42e9a637ed6b0bff5cb6f406b7edee386bfb5a899fa5ae9f24117c4b1fe649286651ece45b3dc2007cb8a163bf0598da48361c55d39a69163fa8fd24cf5f83655d23dca3ad961c62f356208552bb9ed529077096966d670c354e4abc9804f1746c08ca18217c32905e462e36ce3be39e772c180e86039b2783a2ec07a28fb5c55df06f4c52c9de2bcbf6955817183995497cea956ae515d2261898fa051015728e5a8aacaa68ffffffffffffffff"},"modp15":{"gen":"02","prime":"ffffffffffffffffc90fdaa22168c234c4c6628b80dc1cd129024e088a67cc74020bbea63b139b22514a08798e3404ddef9519b3cd3a431b302b0a6df25f14374fe1356d6d51c245e485b576625e7ec6f44c42e9a637ed6b0bff5cb6f406b7edee386bfb5a899fa5ae9f24117c4b1fe649286651ece45b3dc2007cb8a163bf0598da48361c55d39a69163fa8fd24cf5f83655d23dca3ad961c62f356208552bb9ed529077096966d670c354e4abc9804f1746c08ca18217c32905e462e36ce3be39e772c180e86039b2783a2ec07a28fb5c55df06f4c52c9de2bcbf6955817183995497cea956ae515d2261898fa051015728e5a8aaac42dad33170d04507a33a85521abdf1cba64ecfb850458dbef0a8aea71575d060c7db3970f85a6e1e4c7abf5ae8cdb0933d71e8c94e04a25619dcee3d2261ad2ee6bf12ffa06d98a0864d87602733ec86a64521f2b18177b200cbbe117577a615d6c770988c0bad946e208e24fa074e5ab3143db5bfce0fd108e4b82d120a93ad2caffffffffffffffff"},"modp16":{"gen":"02","prime":"ffffffffffffffffc90fdaa22168c234c4c6628b80dc1cd129024e088a67cc74020bbea63b139b22514a08798e3404ddef9519b3cd3a431b302b0a6df25f14374fe1356d6d51c245e485b576625e7ec6f44c42e9a637ed6b0bff5cb6f406b7edee386bfb5a899fa5ae9f24117c4b1fe649286651ece45b3dc2007cb8a163bf0598da48361c55d39a69163fa8fd24cf5f83655d23dca3ad961c62f356208552bb9ed529077096966d670c354e4abc9804f1746c08ca18217c32905e462e36ce3be39e772c180e86039b2783a2ec07a28fb5c55df06f4c52c9de2bcbf6955817183995497cea956ae515d2261898fa051015728e5a8aaac42dad33170d04507a33a85521abdf1cba64ecfb850458dbef0a8aea71575d060c7db3970f85a6e1e4c7abf5ae8cdb0933d71e8c94e04a25619dcee3d2261ad2ee6bf12ffa06d98a0864d87602733ec86a64521f2b18177b200cbbe117577a615d6c770988c0bad946e208e24fa074e5ab3143db5bfce0fd108e4b82d120a92108011a723c12a787e6d788719a10bdba5b2699c327186af4e23c1a946834b6150bda2583e9ca2ad44ce8dbbbc2db04de8ef92e8efc141fbecaa6287c59474e6bc05d99b2964fa090c3a2233ba186515be7ed1f612970cee2d7afb81bdd762170481cd0069127d5b05aa993b4ea988d8fddc186ffb7dc90a6c08f4df435c934063199ffffffffffffffff"},"modp17":{"gen":"02","prime":"ffffffffffffffffc90fdaa22168c234c4c6628b80dc1cd129024e088a67cc74020bbea63b139b22514a08798e3404ddef9519b3cd3a431b302b0a6df25f14374fe1356d6d51c245e485b576625e7ec6f44c42e9a637ed6b0bff5cb6f406b7edee386bfb5a899fa5ae9f24117c4b1fe649286651ece45b3dc2007cb8a163bf0598da48361c55d39a69163fa8fd24cf5f83655d23dca3ad961c62f356208552bb9ed529077096966d670c354e4abc9804f1746c08ca18217c32905e462e36ce3be39e772c180e86039b2783a2ec07a28fb5c55df06f4c52c9de2bcbf6955817183995497cea956ae515d2261898fa051015728e5a8aaac42dad33170d04507a33a85521abdf1cba64ecfb850458dbef0a8aea71575d060c7db3970f85a6e1e4c7abf5ae8cdb0933d71e8c94e04a25619dcee3d2261ad2ee6bf12ffa06d98a0864d87602733ec86a64521f2b18177b200cbbe117577a615d6c770988c0bad946e208e24fa074e5ab3143db5bfce0fd108e4b82d120a92108011a723c12a787e6d788719a10bdba5b2699c327186af4e23c1a946834b6150bda2583e9ca2ad44ce8dbbbc2db04de8ef92e8efc141fbecaa6287c59474e6bc05d99b2964fa090c3a2233ba186515be7ed1f612970cee2d7afb81bdd762170481cd0069127d5b05aa993b4ea988d8fddc186ffb7dc90a6c08f4df435c93402849236c3fab4d27c7026c1d4dcb2602646dec9751e763dba37bdf8ff9406ad9e530ee5db382f413001aeb06a53ed9027d831179727b0865a8918da3edbebcf9b14ed44ce6cbaced4bb1bdb7f1447e6cc254b332051512bd7af426fb8f401378cd2bf5983ca01c64b92ecf032ea15d1721d03f482d7ce6e74fef6d55e702f46980c82b5a84031900b1c9e59e7c97fbec7e8f323a97a7e36cc88be0f1d45b7ff585ac54bd407b22b4154aacc8f6d7ebf48e1d814cc5ed20f8037e0a79715eef29be32806a1d58bb7c5da76f550aa3d8a1fbff0eb19ccb1a313d55cda56c9ec2ef29632387fe8d76e3c0468043e8f663f4860ee12bf2d5b0b7474d6e694f91e6dcc4024ffffffffffffffff"},"modp18":{"gen":"02","prime":"ffffffffffffffffc90fdaa22168c234c4c6628b80dc1cd129024e088a67cc74020bbea63b139b22514a08798e3404ddef9519b3cd3a431b302b0a6df25f14374fe1356d6d51c245e485b576625e7ec6f44c42e9a637ed6b0bff5cb6f406b7edee386bfb5a899fa5ae9f24117c4b1fe649286651ece45b3dc2007cb8a163bf0598da48361c55d39a69163fa8fd24cf5f83655d23dca3ad961c62f356208552bb9ed529077096966d670c354e4abc9804f1746c08ca18217c32905e462e36ce3be39e772c180e86039b2783a2ec07a28fb5c55df06f4c52c9de2bcbf6955817183995497cea956ae515d2261898fa051015728e5a8aaac42dad33170d04507a33a85521abdf1cba64ecfb850458dbef0a8aea71575d060c7db3970f85a6e1e4c7abf5ae8cdb0933d71e8c94e04a25619dcee3d2261ad2ee6bf12ffa06d98a0864d87602733ec86a64521f2b18177b200cbbe117577a615d6c770988c0bad946e208e24fa074e5ab3143db5bfce0fd108e4b82d120a92108011a723c12a787e6d788719a10bdba5b2699c327186af4e23c1a946834b6150bda2583e9ca2ad44ce8dbbbc2db04de8ef92e8efc141fbecaa6287c59474e6bc05d99b2964fa090c3a2233ba186515be7ed1f612970cee2d7afb81bdd762170481cd0069127d5b05aa993b4ea988d8fddc186ffb7dc90a6c08f4df435c93402849236c3fab4d27c7026c1d4dcb2602646dec9751e763dba37bdf8ff9406ad9e530ee5db382f413001aeb06a53ed9027d831179727b0865a8918da3edbebcf9b14ed44ce6cbaced4bb1bdb7f1447e6cc254b332051512bd7af426fb8f401378cd2bf5983ca01c64b92ecf032ea15d1721d03f482d7ce6e74fef6d55e702f46980c82b5a84031900b1c9e59e7c97fbec7e8f323a97a7e36cc88be0f1d45b7ff585ac54bd407b22b4154aacc8f6d7ebf48e1d814cc5ed20f8037e0a79715eef29be32806a1d58bb7c5da76f550aa3d8a1fbff0eb19ccb1a313d55cda56c9ec2ef29632387fe8d76e3c0468043e8f663f4860ee12bf2d5b0b7474d6e694f91e6dbe115974a3926f12fee5e438777cb6a932df8cd8bec4d073b931ba3bc832b68d9dd300741fa7bf8afc47ed2576f6936ba424663aab639c5ae4f5683423b4742bf1c978238f16cbe39d652de3fdb8befc848ad922222e04a4037c0713eb57a81a23f0c73473fc646cea306b4bcbc8862f8385ddfa9d4b7fa2c087e879683303ed5bdd3a062b3cf5b3a278a66d2a13f83f44f82ddf310ee074ab6a364597e899a0255dc164f31cc50846851df9ab48195ded7ea1b1d510bd7ee74d73faf36bc31ecfa268359046f4eb879f924009438b481c6cd7889a002ed5ee382bc9190da6fc026e479558e4475677e9aa9e3050e2765694dfc81f56e880b96e7160c980dd98edd3dfffffffffffffffff"}}')},function(e,t,n){(function(t){var r=n(4),a=new(n(69)),o=new r(24),i=new r(11),c=new r(10),s=new r(3),l=new r(7),g=n(68),I=n(13);function B(e,n){return n=n||"utf8",t.isBuffer(e)||(e=new t(e,n)),this._pub=new r(e),this}function A(e,n){return n=n||"utf8",t.isBuffer(e)||(e=new t(e,n)),this._priv=new r(e),this}e.exports=d;var u={};function d(e,t,n){this.setGenerator(t),this.__prime=new r(e),this._prime=r.mont(this.__prime),this._primeLen=e.length,this._pub=void 0,this._priv=void 0,this._primeCode=void 0,n?(this.setPublicKey=B,this.setPrivateKey=A):this._primeCode=8}function _(e,n){var r=new t(e.toArray());return n?r.toString(n):r}Object.defineProperty(d.prototype,"verifyError",{enumerable:!0,get:function(){return"number"!=typeof this._primeCode&&(this._primeCode=function(e,t){var n=t.toString("hex"),r=[n,e.toString(16)].join("_");if(r in u)return u[r];var I,B=0;if(e.isEven()||!g.simpleSieve||!g.fermatTest(e)||!a.test(e))return B+=1,B+="02"===n||"05"===n?8:4,u[r]=B,B;switch(a.test(e.shrn(1))||(B+=2),n){case"02":e.mod(o).cmp(i)&&(B+=8);break;case"05":(I=e.mod(c)).cmp(s)&&I.cmp(l)&&(B+=8);break;default:B+=4}return u[r]=B,B}(this.__prime,this.__gen)),this._primeCode}}),d.prototype.generateKeys=function(){return this._priv||(this._priv=new r(I(this._primeLen))),this._pub=this._gen.toRed(this._prime).redPow(this._priv).fromRed(),this.getPublicKey()},d.prototype.computeSecret=function(e){var n=(e=(e=new r(e)).toRed(this._prime)).redPow(this._priv).fromRed(),a=new t(n.toArray()),o=this.getPrime();if(a.length<o.length){var i=new t(o.length-a.length);i.fill(0),a=t.concat([i,a])}return a},d.prototype.getPublicKey=function(e){return _(this._pub,e)},d.prototype.getPrivateKey=function(e){return _(this._priv,e)},d.prototype.getPrime=function(e){return _(this.__prime,e)},d.prototype.getGenerator=function(e){return _(this._gen,e)},d.prototype.setGenerator=function(e,n){return n=n||"utf8",t.isBuffer(e)||(e=new t(e,n)),this.__gen=e,this._gen=new r(e),this}}).call(this,n(3).Buffer)},function(e,t,n){(function(t){var r=n(15),a=n(27),o=n(1),i=n(128),c=n(160),s=n(56);function l(e){a.Writable.call(this);var t=s[e];if(!t)throw new Error("Unknown message digest");this._hashType=t.hash,this._hash=r(t.hash),this._tag=t.id,this._signType=t.sign}function g(e){a.Writable.call(this);var t=s[e];if(!t)throw new Error("Unknown message digest");this._hash=r(t.hash),this._tag=t.id,this._signType=t.sign}function I(e){return new l(e)}function B(e){return new g(e)}Object.keys(s).forEach((function(e){s[e].id=new t(s[e].id,"hex"),s[e.toLowerCase()]=s[e]})),o(l,a.Writable),l.prototype._write=function(e,t,n){this._hash.update(e),n()},l.prototype.update=function(e,n){return"string"==typeof e&&(e=new t(e,n)),this._hash.update(e),this},l.prototype.sign=function(e,t){this.end();var n=this._hash.digest(),r=i(n,e,this._hashType,this._signType,this._tag);return t?r.toString(t):r},o(g,a.Writable),g.prototype._write=function(e,t,n){this._hash.update(e),n()},g.prototype.update=function(e,n){return"string"==typeof e&&(e=new t(e,n)),this._hash.update(e),this},g.prototype.verify=function(e,n,r){"string"==typeof n&&(n=new t(n,r)),this.end();var a=this._hash.digest();return c(n,a,e,this._signType,this._tag)},e.exports={Sign:I,Verify:B,createSign:I,createVerify:B}}).call(this,n(3).Buffer)},function(e,t,n){(function(t){var r=n(54),a=n(38),o=n(39).ec,i=n(4),c=n(25),s=n(79);function l(e,n,a,o){if((e=new t(e.toArray())).length<n.byteLength()){var i=new t(n.byteLength()-e.length);i.fill(0),e=t.concat([i,e])}var c=a.length,s=function(e,n){e=(e=g(e,n)).mod(n);var r=new t(e.toArray());if(r.length<n.byteLength()){var a=new t(n.byteLength()-r.length);a.fill(0),r=t.concat([a,r])}return r}(a,n),l=new t(c);l.fill(1);var I=new t(c);return I.fill(0),I=r(o,I).update(l).update(new t([0])).update(e).update(s).digest(),l=r(o,I).update(l).digest(),{k:I=r(o,I).update(l).update(new t([1])).update(e).update(s).digest(),v:l=r(o,I).update(l).digest()}}function g(e,t){var n=new i(e),r=(e.length<<3)-t.bitLength();return r>0&&n.ishrn(r),n}function I(e,n,a){var o,i;do{for(o=new t(0);8*o.length<e.bitLength();)n.v=r(a,n.k).update(n.v).digest(),o=t.concat([o,n.v]);i=g(o,e),n.k=r(a,n.k).update(n.v).update(new t([0])).digest(),n.v=r(a,n.k).update(n.v).digest()}while(-1!==i.cmp(e));return i}function B(e,t,n,r){return e.toRed(i.mont(n)).redPow(t).fromRed().mod(r)}e.exports=function(e,n,r,A,u){var d=c(n);if(d.curve){if("ecdsa"!==A&&"ecdsa/rsa"!==A)throw new Error("wrong private key type");return function(e,n){var r=s[n.curve.join(".")];if(!r)throw new Error("unknown curve "+n.curve.join("."));var a=new o(r).keyFromPrivate(n.privateKey).sign(e);return new t(a.toDER())}(e,d)}if("dsa"===d.type){if("dsa"!==A)throw new Error("wrong private key type");return function(e,n,r){for(var a,o=n.params.priv_key,c=n.params.p,s=n.params.q,A=n.params.g,u=new i(0),d=g(e,s).mod(s),_=!1,C=l(o,s,e,r);!1===_;)u=B(A,a=I(s,C,r),c,s),0===(_=a.invm(s).imul(d.add(o.mul(u))).mod(s)).cmpn(0)&&(_=!1,u=new i(0));return function(e,n){e=e.toArray(),n=n.toArray(),128&e[0]&&(e=[0].concat(e)),128&n[0]&&(n=[0].concat(n));var r=[48,e.length+n.length+4,2,e.length];return r=r.concat(e,[2,n.length],n),new t(r)}(u,_)}(e,d,r)}if("rsa"!==A&&"ecdsa/rsa"!==A)throw new Error("wrong private key type");e=t.concat([u,e]);for(var _=d.modulus.byteLength(),C=[0,1];e.length+C.length+1<_;)C.push(255);C.push(0);for(var b=-1;++b<e.length;)C.push(e[b]);return a(C,d)},e.exports.getKey=l,e.exports.makeKey=I}).call(this,n(3).Buffer)},function(e){e.exports=JSON.parse('{"_args":[["elliptic@6.5.2","/Users/mo/Desktop/sn/dev/sncrypto"]],"_development":true,"_from":"elliptic@6.5.2","_id":"elliptic@6.5.2","_inBundle":false,"_integrity":"sha512-f4x70okzZbIQl/NSRLkI/+tteV/9WqL98zx+SQ69KbXxmVrmjwsNUPn/gYJJ0sHvEak24cZgHIPegRePAtA/xw==","_location":"/elliptic","_phantomChildren":{},"_requested":{"type":"version","registry":true,"raw":"elliptic@6.5.2","name":"elliptic","escapedName":"elliptic","rawSpec":"6.5.2","saveSpec":null,"fetchSpec":"6.5.2"},"_requiredBy":["/browserify-sign","/create-ecdh"],"_resolved":"https://registry.npmjs.org/elliptic/-/elliptic-6.5.2.tgz","_spec":"6.5.2","_where":"/Users/mo/Desktop/sn/dev/sncrypto","author":{"name":"Fedor Indutny","email":"fedor@indutny.com"},"bugs":{"url":"https://github.com/indutny/elliptic/issues"},"dependencies":{"bn.js":"^4.4.0","brorand":"^1.0.1","hash.js":"^1.0.0","hmac-drbg":"^1.0.0","inherits":"^2.0.1","minimalistic-assert":"^1.0.0","minimalistic-crypto-utils":"^1.0.0"},"description":"EC cryptography","devDependencies":{"brfs":"^1.4.3","coveralls":"^3.0.8","grunt":"^1.0.4","grunt-browserify":"^5.0.0","grunt-cli":"^1.2.0","grunt-contrib-connect":"^1.0.0","grunt-contrib-copy":"^1.0.0","grunt-contrib-uglify":"^1.0.1","grunt-mocha-istanbul":"^3.0.1","grunt-saucelabs":"^9.0.1","istanbul":"^0.4.2","jscs":"^3.0.7","jshint":"^2.10.3","mocha":"^6.2.2"},"files":["lib"],"homepage":"https://github.com/indutny/elliptic","keywords":["EC","Elliptic","curve","Cryptography"],"license":"MIT","main":"lib/elliptic.js","name":"elliptic","repository":{"type":"git","url":"git+ssh://git@github.com/indutny/elliptic.git"},"scripts":{"jscs":"jscs benchmarks/*.js lib/*.js lib/**/*.js lib/**/**/*.js test/index.js","jshint":"jscs benchmarks/*.js lib/*.js lib/**/*.js lib/**/**/*.js test/index.js","lint":"npm run jscs && npm run jshint","test":"npm run lint && npm run unit","unit":"istanbul test _mocha --reporter=spec test/index.js","version":"grunt dist && git add dist/"},"version":"6.5.2"}')},function(e,t,n){"use strict";var r=n(7),a=n(4),o=n(1),i=n(24),c=r.assert;function s(e){i.call(this,"short",e),this.a=new a(e.a,16).toRed(this.red),this.b=new a(e.b,16).toRed(this.red),this.tinv=this.two.redInvm(),this.zeroA=0===this.a.fromRed().cmpn(0),this.threeA=0===this.a.fromRed().sub(this.p).cmpn(-3),this.endo=this._getEndomorphism(e),this._endoWnafT1=new Array(4),this._endoWnafT2=new Array(4)}function l(e,t,n,r){i.BasePoint.call(this,e,"affine"),null===t&&null===n?(this.x=null,this.y=null,this.inf=!0):(this.x=new a(t,16),this.y=new a(n,16),r&&(this.x.forceRed(this.curve.red),this.y.forceRed(this.curve.red)),this.x.red||(this.x=this.x.toRed(this.curve.red)),this.y.red||(this.y=this.y.toRed(this.curve.red)),this.inf=!1)}function g(e,t,n,r){i.BasePoint.call(this,e,"jacobian"),null===t&&null===n&&null===r?(this.x=this.curve.one,this.y=this.curve.one,this.z=new a(0)):(this.x=new a(t,16),this.y=new a(n,16),this.z=new a(r,16)),this.x.red||(this.x=this.x.toRed(this.curve.red)),this.y.red||(this.y=this.y.toRed(this.curve.red)),this.z.red||(this.z=this.z.toRed(this.curve.red)),this.zOne=this.z===this.curve.one}o(s,i),e.exports=s,s.prototype._getEndomorphism=function(e){if(this.zeroA&&this.g&&this.n&&1===this.p.modn(3)){var t,n;if(e.beta)t=new a(e.beta,16).toRed(this.red);else{var r=this._getEndoRoots(this.p);t=(t=r[0].cmp(r[1])<0?r[0]:r[1]).toRed(this.red)}if(e.lambda)n=new a(e.lambda,16);else{var o=this._getEndoRoots(this.n);0===this.g.mul(o[0]).x.cmp(this.g.x.redMul(t))?n=o[0]:(n=o[1],c(0===this.g.mul(n).x.cmp(this.g.x.redMul(t))))}return{beta:t,lambda:n,basis:e.basis?e.basis.map((function(e){return{a:new a(e.a,16),b:new a(e.b,16)}})):this._getEndoBasis(n)}}},s.prototype._getEndoRoots=function(e){var t=e===this.p?this.red:a.mont(e),n=new a(2).toRed(t).redInvm(),r=n.redNeg(),o=new a(3).toRed(t).redNeg().redSqrt().redMul(n);return[r.redAdd(o).fromRed(),r.redSub(o).fromRed()]},s.prototype._getEndoBasis=function(e){for(var t,n,r,o,i,c,s,l,g,I=this.n.ushrn(Math.floor(this.n.bitLength()/2)),B=e,A=this.n.clone(),u=new a(1),d=new a(0),_=new a(0),C=new a(1),b=0;0!==B.cmpn(0);){var p=A.div(B);l=A.sub(p.mul(B)),g=_.sub(p.mul(u));var Q=C.sub(p.mul(d));if(!r&&l.cmp(I)<0)t=s.neg(),n=u,r=l.neg(),o=g;else if(r&&2==++b)break;s=l,A=B,B=l,_=u,u=g,C=d,d=Q}i=l.neg(),c=g;var h=r.sqr().add(o.sqr());return i.sqr().add(c.sqr()).cmp(h)>=0&&(i=t,c=n),r.negative&&(r=r.neg(),o=o.neg()),i.negative&&(i=i.neg(),c=c.neg()),[{a:r,b:o},{a:i,b:c}]},s.prototype._endoSplit=function(e){var t=this.endo.basis,n=t[0],r=t[1],a=r.b.mul(e).divRound(this.n),o=n.b.neg().mul(e).divRound(this.n),i=a.mul(n.a),c=o.mul(r.a),s=a.mul(n.b),l=o.mul(r.b);return{k1:e.sub(i).sub(c),k2:s.add(l).neg()}},s.prototype.pointFromX=function(e,t){(e=new a(e,16)).red||(e=e.toRed(this.red));var n=e.redSqr().redMul(e).redIAdd(e.redMul(this.a)).redIAdd(this.b),r=n.redSqrt();if(0!==r.redSqr().redSub(n).cmp(this.zero))throw new Error("invalid point");var o=r.fromRed().isOdd();return(t&&!o||!t&&o)&&(r=r.redNeg()),this.point(e,r)},s.prototype.validate=function(e){if(e.inf)return!0;var t=e.x,n=e.y,r=this.a.redMul(t),a=t.redSqr().redMul(t).redIAdd(r).redIAdd(this.b);return 0===n.redSqr().redISub(a).cmpn(0)},s.prototype._endoWnafMulAdd=function(e,t,n){for(var r=this._endoWnafT1,a=this._endoWnafT2,o=0;o<e.length;o++){var i=this._endoSplit(t[o]),c=e[o],s=c._getBeta();i.k1.negative&&(i.k1.ineg(),c=c.neg(!0)),i.k2.negative&&(i.k2.ineg(),s=s.neg(!0)),r[2*o]=c,r[2*o+1]=s,a[2*o]=i.k1,a[2*o+1]=i.k2}for(var l=this._wnafMulAdd(1,r,a,2*o,n),g=0;g<2*o;g++)r[g]=null,a[g]=null;return l},o(l,i.BasePoint),s.prototype.point=function(e,t,n){return new l(this,e,t,n)},s.prototype.pointFromJSON=function(e,t){return l.fromJSON(this,e,t)},l.prototype._getBeta=function(){if(this.curve.endo){var e=this.precomputed;if(e&&e.beta)return e.beta;var t=this.curve.point(this.x.redMul(this.curve.endo.beta),this.y);if(e){var n=this.curve,r=function(e){return n.point(e.x.redMul(n.endo.beta),e.y)};e.beta=t,t.precomputed={beta:null,naf:e.naf&&{wnd:e.naf.wnd,points:e.naf.points.map(r)},doubles:e.doubles&&{step:e.doubles.step,points:e.doubles.points.map(r)}}}return t}},l.prototype.toJSON=function(){return this.precomputed?[this.x,this.y,this.precomputed&&{doubles:this.precomputed.doubles&&{step:this.precomputed.doubles.step,points:this.precomputed.doubles.points.slice(1)},naf:this.precomputed.naf&&{wnd:this.precomputed.naf.wnd,points:this.precomputed.naf.points.slice(1)}}]:[this.x,this.y]},l.fromJSON=function(e,t,n){"string"==typeof t&&(t=JSON.parse(t));var r=e.point(t[0],t[1],n);if(!t[2])return r;function a(t){return e.point(t[0],t[1],n)}var o=t[2];return r.precomputed={beta:null,doubles:o.doubles&&{step:o.doubles.step,points:[r].concat(o.doubles.points.map(a))},naf:o.naf&&{wnd:o.naf.wnd,points:[r].concat(o.naf.points.map(a))}},r},l.prototype.inspect=function(){return this.isInfinity()?"<EC Point Infinity>":"<EC Point x: "+this.x.fromRed().toString(16,2)+" y: "+this.y.fromRed().toString(16,2)+">"},l.prototype.isInfinity=function(){return this.inf},l.prototype.add=function(e){if(this.inf)return e;if(e.inf)return this;if(this.eq(e))return this.dbl();if(this.neg().eq(e))return this.curve.point(null,null);if(0===this.x.cmp(e.x))return this.curve.point(null,null);var t=this.y.redSub(e.y);0!==t.cmpn(0)&&(t=t.redMul(this.x.redSub(e.x).redInvm()));var n=t.redSqr().redISub(this.x).redISub(e.x),r=t.redMul(this.x.redSub(n)).redISub(this.y);return this.curve.point(n,r)},l.prototype.dbl=function(){if(this.inf)return this;var e=this.y.redAdd(this.y);if(0===e.cmpn(0))return this.curve.point(null,null);var t=this.curve.a,n=this.x.redSqr(),r=e.redInvm(),a=n.redAdd(n).redIAdd(n).redIAdd(t).redMul(r),o=a.redSqr().redISub(this.x.redAdd(this.x)),i=a.redMul(this.x.redSub(o)).redISub(this.y);return this.curve.point(o,i)},l.prototype.getX=function(){return this.x.fromRed()},l.prototype.getY=function(){return this.y.fromRed()},l.prototype.mul=function(e){return e=new a(e,16),this.isInfinity()?this:this._hasDoubles(e)?this.curve._fixedNafMul(this,e):this.curve.endo?this.curve._endoWnafMulAdd([this],[e]):this.curve._wnafMul(this,e)},l.prototype.mulAdd=function(e,t,n){var r=[this,t],a=[e,n];return this.curve.endo?this.curve._endoWnafMulAdd(r,a):this.curve._wnafMulAdd(1,r,a,2)},l.prototype.jmulAdd=function(e,t,n){var r=[this,t],a=[e,n];return this.curve.endo?this.curve._endoWnafMulAdd(r,a,!0):this.curve._wnafMulAdd(1,r,a,2,!0)},l.prototype.eq=function(e){return this===e||this.inf===e.inf&&(this.inf||0===this.x.cmp(e.x)&&0===this.y.cmp(e.y))},l.prototype.neg=function(e){if(this.inf)return this;var t=this.curve.point(this.x,this.y.redNeg());if(e&&this.precomputed){var n=this.precomputed,r=function(e){return e.neg()};t.precomputed={naf:n.naf&&{wnd:n.naf.wnd,points:n.naf.points.map(r)},doubles:n.doubles&&{step:n.doubles.step,points:n.doubles.points.map(r)}}}return t},l.prototype.toJ=function(){return this.inf?this.curve.jpoint(null,null,null):this.curve.jpoint(this.x,this.y,this.curve.one)},o(g,i.BasePoint),s.prototype.jpoint=function(e,t,n){return new g(this,e,t,n)},g.prototype.toP=function(){if(this.isInfinity())return this.curve.point(null,null);var e=this.z.redInvm(),t=e.redSqr(),n=this.x.redMul(t),r=this.y.redMul(t).redMul(e);return this.curve.point(n,r)},g.prototype.neg=function(){return this.curve.jpoint(this.x,this.y.redNeg(),this.z)},g.prototype.add=function(e){if(this.isInfinity())return e;if(e.isInfinity())return this;var t=e.z.redSqr(),n=this.z.redSqr(),r=this.x.redMul(t),a=e.x.redMul(n),o=this.y.redMul(t.redMul(e.z)),i=e.y.redMul(n.redMul(this.z)),c=r.redSub(a),s=o.redSub(i);if(0===c.cmpn(0))return 0!==s.cmpn(0)?this.curve.jpoint(null,null,null):this.dbl();var l=c.redSqr(),g=l.redMul(c),I=r.redMul(l),B=s.redSqr().redIAdd(g).redISub(I).redISub(I),A=s.redMul(I.redISub(B)).redISub(o.redMul(g)),u=this.z.redMul(e.z).redMul(c);return this.curve.jpoint(B,A,u)},g.prototype.mixedAdd=function(e){if(this.isInfinity())return e.toJ();if(e.isInfinity())return this;var t=this.z.redSqr(),n=this.x,r=e.x.redMul(t),a=this.y,o=e.y.redMul(t).redMul(this.z),i=n.redSub(r),c=a.redSub(o);if(0===i.cmpn(0))return 0!==c.cmpn(0)?this.curve.jpoint(null,null,null):this.dbl();var s=i.redSqr(),l=s.redMul(i),g=n.redMul(s),I=c.redSqr().redIAdd(l).redISub(g).redISub(g),B=c.redMul(g.redISub(I)).redISub(a.redMul(l)),A=this.z.redMul(i);return this.curve.jpoint(I,B,A)},g.prototype.dblp=function(e){if(0===e)return this;if(this.isInfinity())return this;if(!e)return this.dbl();if(this.curve.zeroA||this.curve.threeA){for(var t=this,n=0;n<e;n++)t=t.dbl();return t}var r=this.curve.a,a=this.curve.tinv,o=this.x,i=this.y,c=this.z,s=c.redSqr().redSqr(),l=i.redAdd(i);for(n=0;n<e;n++){var g=o.redSqr(),I=l.redSqr(),B=I.redSqr(),A=g.redAdd(g).redIAdd(g).redIAdd(r.redMul(s)),u=o.redMul(I),d=A.redSqr().redISub(u.redAdd(u)),_=u.redISub(d),C=A.redMul(_);C=C.redIAdd(C).redISub(B);var b=l.redMul(c);n+1<e&&(s=s.redMul(B)),o=d,c=b,l=C}return this.curve.jpoint(o,l.redMul(a),c)},g.prototype.dbl=function(){return this.isInfinity()?this:this.curve.zeroA?this._zeroDbl():this.curve.threeA?this._threeDbl():this._dbl()},g.prototype._zeroDbl=function(){var e,t,n;if(this.zOne){var r=this.x.redSqr(),a=this.y.redSqr(),o=a.redSqr(),i=this.x.redAdd(a).redSqr().redISub(r).redISub(o);i=i.redIAdd(i);var c=r.redAdd(r).redIAdd(r),s=c.redSqr().redISub(i).redISub(i),l=o.redIAdd(o);l=(l=l.redIAdd(l)).redIAdd(l),e=s,t=c.redMul(i.redISub(s)).redISub(l),n=this.y.redAdd(this.y)}else{var g=this.x.redSqr(),I=this.y.redSqr(),B=I.redSqr(),A=this.x.redAdd(I).redSqr().redISub(g).redISub(B);A=A.redIAdd(A);var u=g.redAdd(g).redIAdd(g),d=u.redSqr(),_=B.redIAdd(B);_=(_=_.redIAdd(_)).redIAdd(_),e=d.redISub(A).redISub(A),t=u.redMul(A.redISub(e)).redISub(_),n=(n=this.y.redMul(this.z)).redIAdd(n)}return this.curve.jpoint(e,t,n)},g.prototype._threeDbl=function(){var e,t,n;if(this.zOne){var r=this.x.redSqr(),a=this.y.redSqr(),o=a.redSqr(),i=this.x.redAdd(a).redSqr().redISub(r).redISub(o);i=i.redIAdd(i);var c=r.redAdd(r).redIAdd(r).redIAdd(this.curve.a),s=c.redSqr().redISub(i).redISub(i);e=s;var l=o.redIAdd(o);l=(l=l.redIAdd(l)).redIAdd(l),t=c.redMul(i.redISub(s)).redISub(l),n=this.y.redAdd(this.y)}else{var g=this.z.redSqr(),I=this.y.redSqr(),B=this.x.redMul(I),A=this.x.redSub(g).redMul(this.x.redAdd(g));A=A.redAdd(A).redIAdd(A);var u=B.redIAdd(B),d=(u=u.redIAdd(u)).redAdd(u);e=A.redSqr().redISub(d),n=this.y.redAdd(this.z).redSqr().redISub(I).redISub(g);var _=I.redSqr();_=(_=(_=_.redIAdd(_)).redIAdd(_)).redIAdd(_),t=A.redMul(u.redISub(e)).redISub(_)}return this.curve.jpoint(e,t,n)},g.prototype._dbl=function(){var e=this.curve.a,t=this.x,n=this.y,r=this.z,a=r.redSqr().redSqr(),o=t.redSqr(),i=n.redSqr(),c=o.redAdd(o).redIAdd(o).redIAdd(e.redMul(a)),s=t.redAdd(t),l=(s=s.redIAdd(s)).redMul(i),g=c.redSqr().redISub(l.redAdd(l)),I=l.redISub(g),B=i.redSqr();B=(B=(B=B.redIAdd(B)).redIAdd(B)).redIAdd(B);var A=c.redMul(I).redISub(B),u=n.redAdd(n).redMul(r);return this.curve.jpoint(g,A,u)},g.prototype.trpl=function(){if(!this.curve.zeroA)return this.dbl().add(this);var e=this.x.redSqr(),t=this.y.redSqr(),n=this.z.redSqr(),r=t.redSqr(),a=e.redAdd(e).redIAdd(e),o=a.redSqr(),i=this.x.redAdd(t).redSqr().redISub(e).redISub(r),c=(i=(i=(i=i.redIAdd(i)).redAdd(i).redIAdd(i)).redISub(o)).redSqr(),s=r.redIAdd(r);s=(s=(s=s.redIAdd(s)).redIAdd(s)).redIAdd(s);var l=a.redIAdd(i).redSqr().redISub(o).redISub(c).redISub(s),g=t.redMul(l);g=(g=g.redIAdd(g)).redIAdd(g);var I=this.x.redMul(c).redISub(g);I=(I=I.redIAdd(I)).redIAdd(I);var B=this.y.redMul(l.redMul(s.redISub(l)).redISub(i.redMul(c)));B=(B=(B=B.redIAdd(B)).redIAdd(B)).redIAdd(B);var A=this.z.redAdd(i).redSqr().redISub(n).redISub(c);return this.curve.jpoint(I,B,A)},g.prototype.mul=function(e,t){return e=new a(e,t),this.curve._wnafMul(this,e)},g.prototype.eq=function(e){if("affine"===e.type)return this.eq(e.toJ());if(this===e)return!0;var t=this.z.redSqr(),n=e.z.redSqr();if(0!==this.x.redMul(n).redISub(e.x.redMul(t)).cmpn(0))return!1;var r=t.redMul(this.z),a=n.redMul(e.z);return 0===this.y.redMul(a).redISub(e.y.redMul(r)).cmpn(0)},g.prototype.eqXToP=function(e){var t=this.z.redSqr(),n=e.toRed(this.curve.red).redMul(t);if(0===this.x.cmp(n))return!0;for(var r=e.clone(),a=this.curve.redN.redMul(t);;){if(r.iadd(this.curve.n),r.cmp(this.curve.p)>=0)return!1;if(n.redIAdd(a),0===this.x.cmp(n))return!0}},g.prototype.inspect=function(){return this.isInfinity()?"<EC JPoint Infinity>":"<EC JPoint x: "+this.x.toString(16,2)+" y: "+this.y.toString(16,2)+" z: "+this.z.toString(16,2)+">"},g.prototype.isInfinity=function(){return 0===this.z.cmpn(0)}},function(e,t,n){"use strict";var r=n(4),a=n(1),o=n(24),i=n(7);function c(e){o.call(this,"mont",e),this.a=new r(e.a,16).toRed(this.red),this.b=new r(e.b,16).toRed(this.red),this.i4=new r(4).toRed(this.red).redInvm(),this.two=new r(2).toRed(this.red),this.a24=this.i4.redMul(this.a.redAdd(this.two))}function s(e,t,n){o.BasePoint.call(this,e,"projective"),null===t&&null===n?(this.x=this.curve.one,this.z=this.curve.zero):(this.x=new r(t,16),this.z=new r(n,16),this.x.red||(this.x=this.x.toRed(this.curve.red)),this.z.red||(this.z=this.z.toRed(this.curve.red)))}a(c,o),e.exports=c,c.prototype.validate=function(e){var t=e.normalize().x,n=t.redSqr(),r=n.redMul(t).redAdd(n.redMul(this.a)).redAdd(t);return 0===r.redSqrt().redSqr().cmp(r)},a(s,o.BasePoint),c.prototype.decodePoint=function(e,t){return this.point(i.toArray(e,t),1)},c.prototype.point=function(e,t){return new s(this,e,t)},c.prototype.pointFromJSON=function(e){return s.fromJSON(this,e)},s.prototype.precompute=function(){},s.prototype._encode=function(){return this.getX().toArray("be",this.curve.p.byteLength())},s.fromJSON=function(e,t){return new s(e,t[0],t[1]||e.one)},s.prototype.inspect=function(){return this.isInfinity()?"<EC Point Infinity>":"<EC Point x: "+this.x.fromRed().toString(16,2)+" z: "+this.z.fromRed().toString(16,2)+">"},s.prototype.isInfinity=function(){return 0===this.z.cmpn(0)},s.prototype.dbl=function(){var e=this.x.redAdd(this.z).redSqr(),t=this.x.redSub(this.z).redSqr(),n=e.redSub(t),r=e.redMul(t),a=n.redMul(t.redAdd(this.curve.a24.redMul(n)));return this.curve.point(r,a)},s.prototype.add=function(){throw new Error("Not supported on Montgomery curve")},s.prototype.diffAdd=function(e,t){var n=this.x.redAdd(this.z),r=this.x.redSub(this.z),a=e.x.redAdd(e.z),o=e.x.redSub(e.z).redMul(n),i=a.redMul(r),c=t.z.redMul(o.redAdd(i).redSqr()),s=t.x.redMul(o.redISub(i).redSqr());return this.curve.point(c,s)},s.prototype.mul=function(e){for(var t=e.clone(),n=this,r=this.curve.point(null,null),a=[];0!==t.cmpn(0);t.iushrn(1))a.push(t.andln(1));for(var o=a.length-1;o>=0;o--)0===a[o]?(n=n.diffAdd(r,this),r=r.dbl()):(r=n.diffAdd(r,this),n=n.dbl());return r},s.prototype.mulAdd=function(){throw new Error("Not supported on Montgomery curve")},s.prototype.jumlAdd=function(){throw new Error("Not supported on Montgomery curve")},s.prototype.eq=function(e){return 0===this.getX().cmp(e.getX())},s.prototype.normalize=function(){return this.x=this.x.redMul(this.z.redInvm()),this.z=this.curve.one,this},s.prototype.getX=function(){return this.normalize(),this.x.fromRed()}},function(e,t,n){"use strict";var r=n(7),a=n(4),o=n(1),i=n(24),c=r.assert;function s(e){this.twisted=1!=(0|e.a),this.mOneA=this.twisted&&-1==(0|e.a),this.extended=this.mOneA,i.call(this,"edwards",e),this.a=new a(e.a,16).umod(this.red.m),this.a=this.a.toRed(this.red),this.c=new a(e.c,16).toRed(this.red),this.c2=this.c.redSqr(),this.d=new a(e.d,16).toRed(this.red),this.dd=this.d.redAdd(this.d),c(!this.twisted||0===this.c.fromRed().cmpn(1)),this.oneC=1==(0|e.c)}function l(e,t,n,r,o){i.BasePoint.call(this,e,"projective"),null===t&&null===n&&null===r?(this.x=this.curve.zero,this.y=this.curve.one,this.z=this.curve.one,this.t=this.curve.zero,this.zOne=!0):(this.x=new a(t,16),this.y=new a(n,16),this.z=r?new a(r,16):this.curve.one,this.t=o&&new a(o,16),this.x.red||(this.x=this.x.toRed(this.curve.red)),this.y.red||(this.y=this.y.toRed(this.curve.red)),this.z.red||(this.z=this.z.toRed(this.curve.red)),this.t&&!this.t.red&&(this.t=this.t.toRed(this.curve.red)),this.zOne=this.z===this.curve.one,this.curve.extended&&!this.t&&(this.t=this.x.redMul(this.y),this.zOne||(this.t=this.t.redMul(this.z.redInvm()))))}o(s,i),e.exports=s,s.prototype._mulA=function(e){return this.mOneA?e.redNeg():this.a.redMul(e)},s.prototype._mulC=function(e){return this.oneC?e:this.c.redMul(e)},s.prototype.jpoint=function(e,t,n,r){return this.point(e,t,n,r)},s.prototype.pointFromX=function(e,t){(e=new a(e,16)).red||(e=e.toRed(this.red));var n=e.redSqr(),r=this.c2.redSub(this.a.redMul(n)),o=this.one.redSub(this.c2.redMul(this.d).redMul(n)),i=r.redMul(o.redInvm()),c=i.redSqrt();if(0!==c.redSqr().redSub(i).cmp(this.zero))throw new Error("invalid point");var s=c.fromRed().isOdd();return(t&&!s||!t&&s)&&(c=c.redNeg()),this.point(e,c)},s.prototype.pointFromY=function(e,t){(e=new a(e,16)).red||(e=e.toRed(this.red));var n=e.redSqr(),r=n.redSub(this.c2),o=n.redMul(this.d).redMul(this.c2).redSub(this.a),i=r.redMul(o.redInvm());if(0===i.cmp(this.zero)){if(t)throw new Error("invalid point");return this.point(this.zero,e)}var c=i.redSqrt();if(0!==c.redSqr().redSub(i).cmp(this.zero))throw new Error("invalid point");return c.fromRed().isOdd()!==t&&(c=c.redNeg()),this.point(c,e)},s.prototype.validate=function(e){if(e.isInfinity())return!0;e.normalize();var t=e.x.redSqr(),n=e.y.redSqr(),r=t.redMul(this.a).redAdd(n),a=this.c2.redMul(this.one.redAdd(this.d.redMul(t).redMul(n)));return 0===r.cmp(a)},o(l,i.BasePoint),s.prototype.pointFromJSON=function(e){return l.fromJSON(this,e)},s.prototype.point=function(e,t,n,r){return new l(this,e,t,n,r)},l.fromJSON=function(e,t){return new l(e,t[0],t[1],t[2])},l.prototype.inspect=function(){return this.isInfinity()?"<EC Point Infinity>":"<EC Point x: "+this.x.fromRed().toString(16,2)+" y: "+this.y.fromRed().toString(16,2)+" z: "+this.z.fromRed().toString(16,2)+">"},l.prototype.isInfinity=function(){return 0===this.x.cmpn(0)&&(0===this.y.cmp(this.z)||this.zOne&&0===this.y.cmp(this.curve.c))},l.prototype._extDbl=function(){var e=this.x.redSqr(),t=this.y.redSqr(),n=this.z.redSqr();n=n.redIAdd(n);var r=this.curve._mulA(e),a=this.x.redAdd(this.y).redSqr().redISub(e).redISub(t),o=r.redAdd(t),i=o.redSub(n),c=r.redSub(t),s=a.redMul(i),l=o.redMul(c),g=a.redMul(c),I=i.redMul(o);return this.curve.point(s,l,I,g)},l.prototype._projDbl=function(){var e,t,n,r=this.x.redAdd(this.y).redSqr(),a=this.x.redSqr(),o=this.y.redSqr();if(this.curve.twisted){var i=(l=this.curve._mulA(a)).redAdd(o);if(this.zOne)e=r.redSub(a).redSub(o).redMul(i.redSub(this.curve.two)),t=i.redMul(l.redSub(o)),n=i.redSqr().redSub(i).redSub(i);else{var c=this.z.redSqr(),s=i.redSub(c).redISub(c);e=r.redSub(a).redISub(o).redMul(s),t=i.redMul(l.redSub(o)),n=i.redMul(s)}}else{var l=a.redAdd(o);c=this.curve._mulC(this.z).redSqr(),s=l.redSub(c).redSub(c),e=this.curve._mulC(r.redISub(l)).redMul(s),t=this.curve._mulC(l).redMul(a.redISub(o)),n=l.redMul(s)}return this.curve.point(e,t,n)},l.prototype.dbl=function(){return this.isInfinity()?this:this.curve.extended?this._extDbl():this._projDbl()},l.prototype._extAdd=function(e){var t=this.y.redSub(this.x).redMul(e.y.redSub(e.x)),n=this.y.redAdd(this.x).redMul(e.y.redAdd(e.x)),r=this.t.redMul(this.curve.dd).redMul(e.t),a=this.z.redMul(e.z.redAdd(e.z)),o=n.redSub(t),i=a.redSub(r),c=a.redAdd(r),s=n.redAdd(t),l=o.redMul(i),g=c.redMul(s),I=o.redMul(s),B=i.redMul(c);return this.curve.point(l,g,B,I)},l.prototype._projAdd=function(e){var t,n,r=this.z.redMul(e.z),a=r.redSqr(),o=this.x.redMul(e.x),i=this.y.redMul(e.y),c=this.curve.d.redMul(o).redMul(i),s=a.redSub(c),l=a.redAdd(c),g=this.x.redAdd(this.y).redMul(e.x.redAdd(e.y)).redISub(o).redISub(i),I=r.redMul(s).redMul(g);return this.curve.twisted?(t=r.redMul(l).redMul(i.redSub(this.curve._mulA(o))),n=s.redMul(l)):(t=r.redMul(l).redMul(i.redSub(o)),n=this.curve._mulC(s).redMul(l)),this.curve.point(I,t,n)},l.prototype.add=function(e){return this.isInfinity()?e:e.isInfinity()?this:this.curve.extended?this._extAdd(e):this._projAdd(e)},l.prototype.mul=function(e){return this._hasDoubles(e)?this.curve._fixedNafMul(this,e):this.curve._wnafMul(this,e)},l.prototype.mulAdd=function(e,t,n){return this.curve._wnafMulAdd(1,[this,t],[e,n],2,!1)},l.prototype.jmulAdd=function(e,t,n){return this.curve._wnafMulAdd(1,[this,t],[e,n],2,!0)},l.prototype.normalize=function(){if(this.zOne)return this;var e=this.z.redInvm();return this.x=this.x.redMul(e),this.y=this.y.redMul(e),this.t&&(this.t=this.t.redMul(e)),this.z=this.curve.one,this.zOne=!0,this},l.prototype.neg=function(){return this.curve.point(this.x.redNeg(),this.y,this.z,this.t&&this.t.redNeg())},l.prototype.getX=function(){return this.normalize(),this.x.fromRed()},l.prototype.getY=function(){return this.normalize(),this.y.fromRed()},l.prototype.eq=function(e){return this===e||0===this.getX().cmp(e.getX())&&0===this.getY().cmp(e.getY())},l.prototype.eqXToP=function(e){var t=e.toRed(this.curve.red).redMul(this.z);if(0===this.x.cmp(t))return!0;for(var n=e.clone(),r=this.curve.redN.redMul(this.z);;){if(n.iadd(this.curve.n),n.cmp(this.curve.p)>=0)return!1;if(t.redIAdd(r),0===this.x.cmp(t))return!0}},l.prototype.toP=l.prototype.normalize,l.prototype.mixedAdd=l.prototype.add},function(e,t,n){"use strict";t.sha1=n(134),t.sha224=n(135),t.sha256=n(73),t.sha384=n(136),t.sha512=n(74)},function(e,t,n){"use strict";var r=n(10),a=n(18),o=n(72),i=r.rotl32,c=r.sum32,s=r.sum32_5,l=o.ft_1,g=a.BlockHash,I=[1518500249,1859775393,2400959708,3395469782];function B(){if(!(this instanceof B))return new B;g.call(this),this.h=[1732584193,4023233417,2562383102,271733878,3285377520],this.W=new Array(80)}r.inherits(B,g),e.exports=B,B.blockSize=512,B.outSize=160,B.hmacStrength=80,B.padLength=64,B.prototype._update=function(e,t){for(var n=this.W,r=0;r<16;r++)n[r]=e[t+r];for(;r<n.length;r++)n[r]=i(n[r-3]^n[r-8]^n[r-14]^n[r-16],1);var a=this.h[0],o=this.h[1],g=this.h[2],B=this.h[3],A=this.h[4];for(r=0;r<n.length;r++){var u=~~(r/20),d=s(i(a,5),l(u,o,g,B),A,n[r],I[u]);A=B,B=g,g=i(o,30),o=a,a=d}this.h[0]=c(this.h[0],a),this.h[1]=c(this.h[1],o),this.h[2]=c(this.h[2],g),this.h[3]=c(this.h[3],B),this.h[4]=c(this.h[4],A)},B.prototype._digest=function(e){return"hex"===e?r.toHex32(this.h,"big"):r.split32(this.h,"big")}},function(e,t,n){"use strict";var r=n(10),a=n(73);function o(){if(!(this instanceof o))return new o;a.call(this),this.h=[3238371032,914150663,812702999,4144912697,4290775857,1750603025,1694076839,3204075428]}r.inherits(o,a),e.exports=o,o.blockSize=512,o.outSize=224,o.hmacStrength=192,o.padLength=64,o.prototype._digest=function(e){return"hex"===e?r.toHex32(this.h.slice(0,7),"big"):r.split32(this.h.slice(0,7),"big")}},function(e,t,n){"use strict";var r=n(10),a=n(74);function o(){if(!(this instanceof o))return new o;a.call(this),this.h=[3418070365,3238371032,1654270250,914150663,2438529370,812702999,355462360,4144912697,1731405415,4290775857,2394180231,1750603025,3675008525,1694076839,1203062813,3204075428]}r.inherits(o,a),e.exports=o,o.blockSize=1024,o.outSize=384,o.hmacStrength=192,o.padLength=128,o.prototype._digest=function(e){return"hex"===e?r.toHex32(this.h.slice(0,12),"big"):r.split32(this.h.slice(0,12),"big")}},function(e,t,n){"use strict";var r=n(10),a=n(18),o=r.rotl32,i=r.sum32,c=r.sum32_3,s=r.sum32_4,l=a.BlockHash;function g(){if(!(this instanceof g))return new g;l.call(this),this.h=[1732584193,4023233417,2562383102,271733878,3285377520],this.endian="little"}function I(e,t,n,r){return e<=15?t^n^r:e<=31?t&n|~t&r:e<=47?(t|~n)^r:e<=63?t&r|n&~r:t^(n|~r)}function B(e){return e<=15?0:e<=31?1518500249:e<=47?1859775393:e<=63?2400959708:2840853838}function A(e){return e<=15?1352829926:e<=31?1548603684:e<=47?1836072691:e<=63?2053994217:0}r.inherits(g,l),t.ripemd160=g,g.blockSize=512,g.outSize=160,g.hmacStrength=192,g.padLength=64,g.prototype._update=function(e,t){for(var n=this.h[0],r=this.h[1],a=this.h[2],l=this.h[3],g=this.h[4],b=n,p=r,Q=a,h=l,y=g,m=0;m<80;m++){var F=i(o(s(n,I(m,r,a,l),e[u[m]+t],B(m)),_[m]),g);n=g,g=l,l=o(a,10),a=r,r=F,F=i(o(s(b,I(79-m,p,Q,h),e[d[m]+t],A(m)),C[m]),y),b=y,y=h,h=o(Q,10),Q=p,p=F}F=c(this.h[1],a,h),this.h[1]=c(this.h[2],l,y),this.h[2]=c(this.h[3],g,b),this.h[3]=c(this.h[4],n,p),this.h[4]=c(this.h[0],r,Q),this.h[0]=F},g.prototype._digest=function(e){return"hex"===e?r.toHex32(this.h,"little"):r.split32(this.h,"little")};var u=[0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,7,4,13,1,10,6,15,3,12,0,9,5,2,14,11,8,3,10,14,4,9,15,8,1,2,7,0,6,13,11,5,12,1,9,11,10,0,8,12,4,13,3,7,15,14,5,6,2,4,0,5,9,7,12,2,10,14,1,3,8,11,6,15,13],d=[5,14,7,0,9,2,11,4,13,6,15,8,1,10,3,12,6,11,3,7,0,13,5,10,14,15,8,12,4,9,1,2,15,5,1,3,7,14,6,9,11,8,12,2,10,0,4,13,8,6,4,1,3,11,15,0,5,12,2,13,9,7,10,14,12,15,10,4,1,5,8,7,6,2,13,14,0,3,9,11],_=[11,14,15,12,5,8,7,9,11,13,14,15,6,7,9,8,7,6,8,13,11,9,7,15,7,12,15,9,11,7,13,12,11,13,6,7,14,9,13,15,14,8,13,6,5,12,7,5,11,12,14,15,14,15,9,8,9,14,5,6,8,6,5,12,9,15,5,11,6,8,13,12,5,12,13,14,11,8,5,6],C=[8,9,9,11,13,15,15,5,7,7,8,11,14,14,12,6,9,13,15,7,12,8,9,11,7,7,12,7,6,15,13,11,9,7,15,11,8,6,6,14,12,13,5,14,13,13,7,5,15,5,8,11,14,14,6,14,6,9,12,9,12,5,15,8,8,5,12,9,12,5,14,6,8,13,6,5,15,13,11,11]},function(e,t,n){"use strict";var r=n(10),a=n(6);function o(e,t,n){if(!(this instanceof o))return new o(e,t,n);this.Hash=e,this.blockSize=e.blockSize/8,this.outSize=e.outSize/8,this.inner=null,this.outer=null,this._init(r.toArray(t,n))}e.exports=o,o.prototype._init=function(e){e.length>this.blockSize&&(e=(new this.Hash).update(e).digest()),a(e.length<=this.blockSize);for(var t=e.length;t<this.blockSize;t++)e.push(0);for(t=0;t<e.length;t++)e[t]^=54;for(this.inner=(new this.Hash).update(e),t=0;t<e.length;t++)e[t]^=106;this.outer=(new this.Hash).update(e)},o.prototype.update=function(e,t){return this.inner.update(e,t),this},o.prototype.digest=function(e){return this.outer.update(this.inner.digest()),this.outer.digest(e)}},function(e,t){e.exports={doubles:{step:4,points:[["e60fce93b59e9ec53011aabc21c23e97b2a31369b87a5ae9c44ee89e2a6dec0a","f7e3507399e595929db99f34f57937101296891e44d23f0be1f32cce69616821"],["8282263212c609d9ea2a6e3e172de238d8c39cabd5ac1ca10646e23fd5f51508","11f8a8098557dfe45e8256e830b60ace62d613ac2f7b17bed31b6eaff6e26caf"],["175e159f728b865a72f99cc6c6fc846de0b93833fd2222ed73fce5b551e5b739","d3506e0d9e3c79eba4ef97a51ff71f5eacb5955add24345c6efa6ffee9fed695"],["363d90d447b00c9c99ceac05b6262ee053441c7e55552ffe526bad8f83ff4640","4e273adfc732221953b445397f3363145b9a89008199ecb62003c7f3bee9de9"],["8b4b5f165df3c2be8c6244b5b745638843e4a781a15bcd1b69f79a55dffdf80c","4aad0a6f68d308b4b3fbd7813ab0da04f9e336546162ee56b3eff0c65fd4fd36"],["723cbaa6e5db996d6bf771c00bd548c7b700dbffa6c0e77bcb6115925232fcda","96e867b5595cc498a921137488824d6e2660a0653779494801dc069d9eb39f5f"],["eebfa4d493bebf98ba5feec812c2d3b50947961237a919839a533eca0e7dd7fa","5d9a8ca3970ef0f269ee7edaf178089d9ae4cdc3a711f712ddfd4fdae1de8999"],["100f44da696e71672791d0a09b7bde459f1215a29b3c03bfefd7835b39a48db0","cdd9e13192a00b772ec8f3300c090666b7ff4a18ff5195ac0fbd5cd62bc65a09"],["e1031be262c7ed1b1dc9227a4a04c017a77f8d4464f3b3852c8acde6e534fd2d","9d7061928940405e6bb6a4176597535af292dd419e1ced79a44f18f29456a00d"],["feea6cae46d55b530ac2839f143bd7ec5cf8b266a41d6af52d5e688d9094696d","e57c6b6c97dce1bab06e4e12bf3ecd5c981c8957cc41442d3155debf18090088"],["da67a91d91049cdcb367be4be6ffca3cfeed657d808583de33fa978bc1ec6cb1","9bacaa35481642bc41f463f7ec9780e5dec7adc508f740a17e9ea8e27a68be1d"],["53904faa0b334cdda6e000935ef22151ec08d0f7bb11069f57545ccc1a37b7c0","5bc087d0bc80106d88c9eccac20d3c1c13999981e14434699dcb096b022771c8"],["8e7bcd0bd35983a7719cca7764ca906779b53a043a9b8bcaeff959f43ad86047","10b7770b2a3da4b3940310420ca9514579e88e2e47fd68b3ea10047e8460372a"],["385eed34c1cdff21e6d0818689b81bde71a7f4f18397e6690a841e1599c43862","283bebc3e8ea23f56701de19e9ebf4576b304eec2086dc8cc0458fe5542e5453"],["6f9d9b803ecf191637c73a4413dfa180fddf84a5947fbc9c606ed86c3fac3a7","7c80c68e603059ba69b8e2a30e45c4d47ea4dd2f5c281002d86890603a842160"],["3322d401243c4e2582a2147c104d6ecbf774d163db0f5e5313b7e0e742d0e6bd","56e70797e9664ef5bfb019bc4ddaf9b72805f63ea2873af624f3a2e96c28b2a0"],["85672c7d2de0b7da2bd1770d89665868741b3f9af7643397721d74d28134ab83","7c481b9b5b43b2eb6374049bfa62c2e5e77f17fcc5298f44c8e3094f790313a6"],["948bf809b1988a46b06c9f1919413b10f9226c60f668832ffd959af60c82a0a","53a562856dcb6646dc6b74c5d1c3418c6d4dff08c97cd2bed4cb7f88d8c8e589"],["6260ce7f461801c34f067ce0f02873a8f1b0e44dfc69752accecd819f38fd8e8","bc2da82b6fa5b571a7f09049776a1ef7ecd292238051c198c1a84e95b2b4ae17"],["e5037de0afc1d8d43d8348414bbf4103043ec8f575bfdc432953cc8d2037fa2d","4571534baa94d3b5f9f98d09fb990bddbd5f5b03ec481f10e0e5dc841d755bda"],["e06372b0f4a207adf5ea905e8f1771b4e7e8dbd1c6a6c5b725866a0ae4fce725","7a908974bce18cfe12a27bb2ad5a488cd7484a7787104870b27034f94eee31dd"],["213c7a715cd5d45358d0bbf9dc0ce02204b10bdde2a3f58540ad6908d0559754","4b6dad0b5ae462507013ad06245ba190bb4850f5f36a7eeddff2c27534b458f2"],["4e7c272a7af4b34e8dbb9352a5419a87e2838c70adc62cddf0cc3a3b08fbd53c","17749c766c9d0b18e16fd09f6def681b530b9614bff7dd33e0b3941817dcaae6"],["fea74e3dbe778b1b10f238ad61686aa5c76e3db2be43057632427e2840fb27b6","6e0568db9b0b13297cf674deccb6af93126b596b973f7b77701d3db7f23cb96f"],["76e64113f677cf0e10a2570d599968d31544e179b760432952c02a4417bdde39","c90ddf8dee4e95cf577066d70681f0d35e2a33d2b56d2032b4b1752d1901ac01"],["c738c56b03b2abe1e8281baa743f8f9a8f7cc643df26cbee3ab150242bcbb891","893fb578951ad2537f718f2eacbfbbbb82314eef7880cfe917e735d9699a84c3"],["d895626548b65b81e264c7637c972877d1d72e5f3a925014372e9f6588f6c14b","febfaa38f2bc7eae728ec60818c340eb03428d632bb067e179363ed75d7d991f"],["b8da94032a957518eb0f6433571e8761ceffc73693e84edd49150a564f676e03","2804dfa44805a1e4d7c99cc9762808b092cc584d95ff3b511488e4e74efdf6e7"],["e80fea14441fb33a7d8adab9475d7fab2019effb5156a792f1a11778e3c0df5d","eed1de7f638e00771e89768ca3ca94472d155e80af322ea9fcb4291b6ac9ec78"],["a301697bdfcd704313ba48e51d567543f2a182031efd6915ddc07bbcc4e16070","7370f91cfb67e4f5081809fa25d40f9b1735dbf7c0a11a130c0d1a041e177ea1"],["90ad85b389d6b936463f9d0512678de208cc330b11307fffab7ac63e3fb04ed4","e507a3620a38261affdcbd9427222b839aefabe1582894d991d4d48cb6ef150"],["8f68b9d2f63b5f339239c1ad981f162ee88c5678723ea3351b7b444c9ec4c0da","662a9f2dba063986de1d90c2b6be215dbbea2cfe95510bfdf23cbf79501fff82"],["e4f3fb0176af85d65ff99ff9198c36091f48e86503681e3e6686fd5053231e11","1e63633ad0ef4f1c1661a6d0ea02b7286cc7e74ec951d1c9822c38576feb73bc"],["8c00fa9b18ebf331eb961537a45a4266c7034f2f0d4e1d0716fb6eae20eae29e","efa47267fea521a1a9dc343a3736c974c2fadafa81e36c54e7d2a4c66702414b"],["e7a26ce69dd4829f3e10cec0a9e98ed3143d084f308b92c0997fddfc60cb3e41","2a758e300fa7984b471b006a1aafbb18d0a6b2c0420e83e20e8a9421cf2cfd51"],["b6459e0ee3662ec8d23540c223bcbdc571cbcb967d79424f3cf29eb3de6b80ef","67c876d06f3e06de1dadf16e5661db3c4b3ae6d48e35b2ff30bf0b61a71ba45"],["d68a80c8280bb840793234aa118f06231d6f1fc67e73c5a5deda0f5b496943e8","db8ba9fff4b586d00c4b1f9177b0e28b5b0e7b8f7845295a294c84266b133120"],["324aed7df65c804252dc0270907a30b09612aeb973449cea4095980fc28d3d5d","648a365774b61f2ff130c0c35aec1f4f19213b0c7e332843967224af96ab7c84"],["4df9c14919cde61f6d51dfdbe5fee5dceec4143ba8d1ca888e8bd373fd054c96","35ec51092d8728050974c23a1d85d4b5d506cdc288490192ebac06cad10d5d"],["9c3919a84a474870faed8a9c1cc66021523489054d7f0308cbfc99c8ac1f98cd","ddb84f0f4a4ddd57584f044bf260e641905326f76c64c8e6be7e5e03d4fc599d"],["6057170b1dd12fdf8de05f281d8e06bb91e1493a8b91d4cc5a21382120a959e5","9a1af0b26a6a4807add9a2daf71df262465152bc3ee24c65e899be932385a2a8"],["a576df8e23a08411421439a4518da31880cef0fba7d4df12b1a6973eecb94266","40a6bf20e76640b2c92b97afe58cd82c432e10a7f514d9f3ee8be11ae1b28ec8"],["7778a78c28dec3e30a05fe9629de8c38bb30d1f5cf9a3a208f763889be58ad71","34626d9ab5a5b22ff7098e12f2ff580087b38411ff24ac563b513fc1fd9f43ac"],["928955ee637a84463729fd30e7afd2ed5f96274e5ad7e5cb09eda9c06d903ac","c25621003d3f42a827b78a13093a95eeac3d26efa8a8d83fc5180e935bcd091f"],["85d0fef3ec6db109399064f3a0e3b2855645b4a907ad354527aae75163d82751","1f03648413a38c0be29d496e582cf5663e8751e96877331582c237a24eb1f962"],["ff2b0dce97eece97c1c9b6041798b85dfdfb6d8882da20308f5404824526087e","493d13fef524ba188af4c4dc54d07936c7b7ed6fb90e2ceb2c951e01f0c29907"],["827fbbe4b1e880ea9ed2b2e6301b212b57f1ee148cd6dd28780e5e2cf856e241","c60f9c923c727b0b71bef2c67d1d12687ff7a63186903166d605b68baec293ec"],["eaa649f21f51bdbae7be4ae34ce6e5217a58fdce7f47f9aa7f3b58fa2120e2b3","be3279ed5bbbb03ac69a80f89879aa5a01a6b965f13f7e59d47a5305ba5ad93d"],["e4a42d43c5cf169d9391df6decf42ee541b6d8f0c9a137401e23632dda34d24f","4d9f92e716d1c73526fc99ccfb8ad34ce886eedfa8d8e4f13a7f7131deba9414"],["1ec80fef360cbdd954160fadab352b6b92b53576a88fea4947173b9d4300bf19","aeefe93756b5340d2f3a4958a7abbf5e0146e77f6295a07b671cdc1cc107cefd"],["146a778c04670c2f91b00af4680dfa8bce3490717d58ba889ddb5928366642be","b318e0ec3354028add669827f9d4b2870aaa971d2f7e5ed1d0b297483d83efd0"],["fa50c0f61d22e5f07e3acebb1aa07b128d0012209a28b9776d76a8793180eef9","6b84c6922397eba9b72cd2872281a68a5e683293a57a213b38cd8d7d3f4f2811"],["da1d61d0ca721a11b1a5bf6b7d88e8421a288ab5d5bba5220e53d32b5f067ec2","8157f55a7c99306c79c0766161c91e2966a73899d279b48a655fba0f1ad836f1"],["a8e282ff0c9706907215ff98e8fd416615311de0446f1e062a73b0610d064e13","7f97355b8db81c09abfb7f3c5b2515888b679a3e50dd6bd6cef7c73111f4cc0c"],["174a53b9c9a285872d39e56e6913cab15d59b1fa512508c022f382de8319497c","ccc9dc37abfc9c1657b4155f2c47f9e6646b3a1d8cb9854383da13ac079afa73"],["959396981943785c3d3e57edf5018cdbe039e730e4918b3d884fdff09475b7ba","2e7e552888c331dd8ba0386a4b9cd6849c653f64c8709385e9b8abf87524f2fd"],["d2a63a50ae401e56d645a1153b109a8fcca0a43d561fba2dbb51340c9d82b151","e82d86fb6443fcb7565aee58b2948220a70f750af484ca52d4142174dcf89405"],["64587e2335471eb890ee7896d7cfdc866bacbdbd3839317b3436f9b45617e073","d99fcdd5bf6902e2ae96dd6447c299a185b90a39133aeab358299e5e9faf6589"],["8481bde0e4e4d885b3a546d3e549de042f0aa6cea250e7fd358d6c86dd45e458","38ee7b8cba5404dd84a25bf39cecb2ca900a79c42b262e556d64b1b59779057e"],["13464a57a78102aa62b6979ae817f4637ffcfed3c4b1ce30bcd6303f6caf666b","69be159004614580ef7e433453ccb0ca48f300a81d0942e13f495a907f6ecc27"],["bc4a9df5b713fe2e9aef430bcc1dc97a0cd9ccede2f28588cada3a0d2d83f366","d3a81ca6e785c06383937adf4b798caa6e8a9fbfa547b16d758d666581f33c1"],["8c28a97bf8298bc0d23d8c749452a32e694b65e30a9472a3954ab30fe5324caa","40a30463a3305193378fedf31f7cc0eb7ae784f0451cb9459e71dc73cbef9482"],["8ea9666139527a8c1dd94ce4f071fd23c8b350c5a4bb33748c4ba111faccae0","620efabbc8ee2782e24e7c0cfb95c5d735b783be9cf0f8e955af34a30e62b945"],["dd3625faef5ba06074669716bbd3788d89bdde815959968092f76cc4eb9a9787","7a188fa3520e30d461da2501045731ca941461982883395937f68d00c644a573"],["f710d79d9eb962297e4f6232b40e8f7feb2bc63814614d692c12de752408221e","ea98e67232d3b3295d3b535532115ccac8612c721851617526ae47a9c77bfc82"]]},naf:{wnd:7,points:[["f9308a019258c31049344f85f89d5229b531c845836f99b08601f113bce036f9","388f7b0f632de8140fe337e62a37f3566500a99934c2231b6cb9fd7584b8e672"],["2f8bde4d1a07209355b4a7250a5c5128e88b84bddc619ab7cba8d569b240efe4","d8ac222636e5e3d6d4dba9dda6c9c426f788271bab0d6840dca87d3aa6ac62d6"],["5cbdf0646e5db4eaa398f365f2ea7a0e3d419b7e0330e39ce92bddedcac4f9bc","6aebca40ba255960a3178d6d861a54dba813d0b813fde7b5a5082628087264da"],["acd484e2f0c7f65309ad178a9f559abde09796974c57e714c35f110dfc27ccbe","cc338921b0a7d9fd64380971763b61e9add888a4375f8e0f05cc262ac64f9c37"],["774ae7f858a9411e5ef4246b70c65aac5649980be5c17891bbec17895da008cb","d984a032eb6b5e190243dd56d7b7b365372db1e2dff9d6a8301d74c9c953c61b"],["f28773c2d975288bc7d1d205c3748651b075fbc6610e58cddeeddf8f19405aa8","ab0902e8d880a89758212eb65cdaf473a1a06da521fa91f29b5cb52db03ed81"],["d7924d4f7d43ea965a465ae3095ff41131e5946f3c85f79e44adbcf8e27e080e","581e2872a86c72a683842ec228cc6defea40af2bd896d3a5c504dc9ff6a26b58"],["defdea4cdb677750a420fee807eacf21eb9898ae79b9768766e4faa04a2d4a34","4211ab0694635168e997b0ead2a93daeced1f4a04a95c0f6cfb199f69e56eb77"],["2b4ea0a797a443d293ef5cff444f4979f06acfebd7e86d277475656138385b6c","85e89bc037945d93b343083b5a1c86131a01f60c50269763b570c854e5c09b7a"],["352bbf4a4cdd12564f93fa332ce333301d9ad40271f8107181340aef25be59d5","321eb4075348f534d59c18259dda3e1f4a1b3b2e71b1039c67bd3d8bcf81998c"],["2fa2104d6b38d11b0230010559879124e42ab8dfeff5ff29dc9cdadd4ecacc3f","2de1068295dd865b64569335bd5dd80181d70ecfc882648423ba76b532b7d67"],["9248279b09b4d68dab21a9b066edda83263c3d84e09572e269ca0cd7f5453714","73016f7bf234aade5d1aa71bdea2b1ff3fc0de2a887912ffe54a32ce97cb3402"],["daed4f2be3a8bf278e70132fb0beb7522f570e144bf615c07e996d443dee8729","a69dce4a7d6c98e8d4a1aca87ef8d7003f83c230f3afa726ab40e52290be1c55"],["c44d12c7065d812e8acf28d7cbb19f9011ecd9e9fdf281b0e6a3b5e87d22e7db","2119a460ce326cdc76c45926c982fdac0e106e861edf61c5a039063f0e0e6482"],["6a245bf6dc698504c89a20cfded60853152b695336c28063b61c65cbd269e6b4","e022cf42c2bd4a708b3f5126f16a24ad8b33ba48d0423b6efd5e6348100d8a82"],["1697ffa6fd9de627c077e3d2fe541084ce13300b0bec1146f95ae57f0d0bd6a5","b9c398f186806f5d27561506e4557433a2cf15009e498ae7adee9d63d01b2396"],["605bdb019981718b986d0f07e834cb0d9deb8360ffb7f61df982345ef27a7479","2972d2de4f8d20681a78d93ec96fe23c26bfae84fb14db43b01e1e9056b8c49"],["62d14dab4150bf497402fdc45a215e10dcb01c354959b10cfe31c7e9d87ff33d","80fc06bd8cc5b01098088a1950eed0db01aa132967ab472235f5642483b25eaf"],["80c60ad0040f27dade5b4b06c408e56b2c50e9f56b9b8b425e555c2f86308b6f","1c38303f1cc5c30f26e66bad7fe72f70a65eed4cbe7024eb1aa01f56430bd57a"],["7a9375ad6167ad54aa74c6348cc54d344cc5dc9487d847049d5eabb0fa03c8fb","d0e3fa9eca8726909559e0d79269046bdc59ea10c70ce2b02d499ec224dc7f7"],["d528ecd9b696b54c907a9ed045447a79bb408ec39b68df504bb51f459bc3ffc9","eecf41253136e5f99966f21881fd656ebc4345405c520dbc063465b521409933"],["49370a4b5f43412ea25f514e8ecdad05266115e4a7ecb1387231808f8b45963","758f3f41afd6ed428b3081b0512fd62a54c3f3afbb5b6764b653052a12949c9a"],["77f230936ee88cbbd73df930d64702ef881d811e0e1498e2f1c13eb1fc345d74","958ef42a7886b6400a08266e9ba1b37896c95330d97077cbbe8eb3c7671c60d6"],["f2dac991cc4ce4b9ea44887e5c7c0bce58c80074ab9d4dbaeb28531b7739f530","e0dedc9b3b2f8dad4da1f32dec2531df9eb5fbeb0598e4fd1a117dba703a3c37"],["463b3d9f662621fb1b4be8fbbe2520125a216cdfc9dae3debcba4850c690d45b","5ed430d78c296c3543114306dd8622d7c622e27c970a1de31cb377b01af7307e"],["f16f804244e46e2a09232d4aff3b59976b98fac14328a2d1a32496b49998f247","cedabd9b82203f7e13d206fcdf4e33d92a6c53c26e5cce26d6579962c4e31df6"],["caf754272dc84563b0352b7a14311af55d245315ace27c65369e15f7151d41d1","cb474660ef35f5f2a41b643fa5e460575f4fa9b7962232a5c32f908318a04476"],["2600ca4b282cb986f85d0f1709979d8b44a09c07cb86d7c124497bc86f082120","4119b88753c15bd6a693b03fcddbb45d5ac6be74ab5f0ef44b0be9475a7e4b40"],["7635ca72d7e8432c338ec53cd12220bc01c48685e24f7dc8c602a7746998e435","91b649609489d613d1d5e590f78e6d74ecfc061d57048bad9e76f302c5b9c61"],["754e3239f325570cdbbf4a87deee8a66b7f2b33479d468fbc1a50743bf56cc18","673fb86e5bda30fb3cd0ed304ea49a023ee33d0197a695d0c5d98093c536683"],["e3e6bd1071a1e96aff57859c82d570f0330800661d1c952f9fe2694691d9b9e8","59c9e0bba394e76f40c0aa58379a3cb6a5a2283993e90c4167002af4920e37f5"],["186b483d056a033826ae73d88f732985c4ccb1f32ba35f4b4cc47fdcf04aa6eb","3b952d32c67cf77e2e17446e204180ab21fb8090895138b4a4a797f86e80888b"],["df9d70a6b9876ce544c98561f4be4f725442e6d2b737d9c91a8321724ce0963f","55eb2dafd84d6ccd5f862b785dc39d4ab157222720ef9da217b8c45cf2ba2417"],["5edd5cc23c51e87a497ca815d5dce0f8ab52554f849ed8995de64c5f34ce7143","efae9c8dbc14130661e8cec030c89ad0c13c66c0d17a2905cdc706ab7399a868"],["290798c2b6476830da12fe02287e9e777aa3fba1c355b17a722d362f84614fba","e38da76dcd440621988d00bcf79af25d5b29c094db2a23146d003afd41943e7a"],["af3c423a95d9f5b3054754efa150ac39cd29552fe360257362dfdecef4053b45","f98a3fd831eb2b749a93b0e6f35cfb40c8cd5aa667a15581bc2feded498fd9c6"],["766dbb24d134e745cccaa28c99bf274906bb66b26dcf98df8d2fed50d884249a","744b1152eacbe5e38dcc887980da38b897584a65fa06cedd2c924f97cbac5996"],["59dbf46f8c94759ba21277c33784f41645f7b44f6c596a58ce92e666191abe3e","c534ad44175fbc300f4ea6ce648309a042ce739a7919798cd85e216c4a307f6e"],["f13ada95103c4537305e691e74e9a4a8dd647e711a95e73cb62dc6018cfd87b8","e13817b44ee14de663bf4bc808341f326949e21a6a75c2570778419bdaf5733d"],["7754b4fa0e8aced06d4167a2c59cca4cda1869c06ebadfb6488550015a88522c","30e93e864e669d82224b967c3020b8fa8d1e4e350b6cbcc537a48b57841163a2"],["948dcadf5990e048aa3874d46abef9d701858f95de8041d2a6828c99e2262519","e491a42537f6e597d5d28a3224b1bc25df9154efbd2ef1d2cbba2cae5347d57e"],["7962414450c76c1689c7b48f8202ec37fb224cf5ac0bfa1570328a8a3d7c77ab","100b610ec4ffb4760d5c1fc133ef6f6b12507a051f04ac5760afa5b29db83437"],["3514087834964b54b15b160644d915485a16977225b8847bb0dd085137ec47ca","ef0afbb2056205448e1652c48e8127fc6039e77c15c2378b7e7d15a0de293311"],["d3cc30ad6b483e4bc79ce2c9dd8bc54993e947eb8df787b442943d3f7b527eaf","8b378a22d827278d89c5e9be8f9508ae3c2ad46290358630afb34db04eede0a4"],["1624d84780732860ce1c78fcbfefe08b2b29823db913f6493975ba0ff4847610","68651cf9b6da903e0914448c6cd9d4ca896878f5282be4c8cc06e2a404078575"],["733ce80da955a8a26902c95633e62a985192474b5af207da6df7b4fd5fc61cd4","f5435a2bd2badf7d485a4d8b8db9fcce3e1ef8e0201e4578c54673bc1dc5ea1d"],["15d9441254945064cf1a1c33bbd3b49f8966c5092171e699ef258dfab81c045c","d56eb30b69463e7234f5137b73b84177434800bacebfc685fc37bbe9efe4070d"],["a1d0fcf2ec9de675b612136e5ce70d271c21417c9d2b8aaaac138599d0717940","edd77f50bcb5a3cab2e90737309667f2641462a54070f3d519212d39c197a629"],["e22fbe15c0af8ccc5780c0735f84dbe9a790badee8245c06c7ca37331cb36980","a855babad5cd60c88b430a69f53a1a7a38289154964799be43d06d77d31da06"],["311091dd9860e8e20ee13473c1155f5f69635e394704eaa74009452246cfa9b3","66db656f87d1f04fffd1f04788c06830871ec5a64feee685bd80f0b1286d8374"],["34c1fd04d301be89b31c0442d3e6ac24883928b45a9340781867d4232ec2dbdf","9414685e97b1b5954bd46f730174136d57f1ceeb487443dc5321857ba73abee"],["f219ea5d6b54701c1c14de5b557eb42a8d13f3abbcd08affcc2a5e6b049b8d63","4cb95957e83d40b0f73af4544cccf6b1f4b08d3c07b27fb8d8c2962a400766d1"],["d7b8740f74a8fbaab1f683db8f45de26543a5490bca627087236912469a0b448","fa77968128d9c92ee1010f337ad4717eff15db5ed3c049b3411e0315eaa4593b"],["32d31c222f8f6f0ef86f7c98d3a3335ead5bcd32abdd94289fe4d3091aa824bf","5f3032f5892156e39ccd3d7915b9e1da2e6dac9e6f26e961118d14b8462e1661"],["7461f371914ab32671045a155d9831ea8793d77cd59592c4340f86cbc18347b5","8ec0ba238b96bec0cbdddcae0aa442542eee1ff50c986ea6b39847b3cc092ff6"],["ee079adb1df1860074356a25aa38206a6d716b2c3e67453d287698bad7b2b2d6","8dc2412aafe3be5c4c5f37e0ecc5f9f6a446989af04c4e25ebaac479ec1c8c1e"],["16ec93e447ec83f0467b18302ee620f7e65de331874c9dc72bfd8616ba9da6b5","5e4631150e62fb40d0e8c2a7ca5804a39d58186a50e497139626778e25b0674d"],["eaa5f980c245f6f038978290afa70b6bd8855897f98b6aa485b96065d537bd99","f65f5d3e292c2e0819a528391c994624d784869d7e6ea67fb18041024edc07dc"],["78c9407544ac132692ee1910a02439958ae04877151342ea96c4b6b35a49f51","f3e0319169eb9b85d5404795539a5e68fa1fbd583c064d2462b675f194a3ddb4"],["494f4be219a1a77016dcd838431aea0001cdc8ae7a6fc688726578d9702857a5","42242a969283a5f339ba7f075e36ba2af925ce30d767ed6e55f4b031880d562c"],["a598a8030da6d86c6bc7f2f5144ea549d28211ea58faa70ebf4c1e665c1fe9b5","204b5d6f84822c307e4b4a7140737aec23fc63b65b35f86a10026dbd2d864e6b"],["c41916365abb2b5d09192f5f2dbeafec208f020f12570a184dbadc3e58595997","4f14351d0087efa49d245b328984989d5caf9450f34bfc0ed16e96b58fa9913"],["841d6063a586fa475a724604da03bc5b92a2e0d2e0a36acfe4c73a5514742881","73867f59c0659e81904f9a1c7543698e62562d6744c169ce7a36de01a8d6154"],["5e95bb399a6971d376026947f89bde2f282b33810928be4ded112ac4d70e20d5","39f23f366809085beebfc71181313775a99c9aed7d8ba38b161384c746012865"],["36e4641a53948fd476c39f8a99fd974e5ec07564b5315d8bf99471bca0ef2f66","d2424b1b1abe4eb8164227b085c9aa9456ea13493fd563e06fd51cf5694c78fc"],["336581ea7bfbbb290c191a2f507a41cf5643842170e914faeab27c2c579f726","ead12168595fe1be99252129b6e56b3391f7ab1410cd1e0ef3dcdcabd2fda224"],["8ab89816dadfd6b6a1f2634fcf00ec8403781025ed6890c4849742706bd43ede","6fdcef09f2f6d0a044e654aef624136f503d459c3e89845858a47a9129cdd24e"],["1e33f1a746c9c5778133344d9299fcaa20b0938e8acff2544bb40284b8c5fb94","60660257dd11b3aa9c8ed618d24edff2306d320f1d03010e33a7d2057f3b3b6"],["85b7c1dcb3cec1b7ee7f30ded79dd20a0ed1f4cc18cbcfcfa410361fd8f08f31","3d98a9cdd026dd43f39048f25a8847f4fcafad1895d7a633c6fed3c35e999511"],["29df9fbd8d9e46509275f4b125d6d45d7fbe9a3b878a7af872a2800661ac5f51","b4c4fe99c775a606e2d8862179139ffda61dc861c019e55cd2876eb2a27d84b"],["a0b1cae06b0a847a3fea6e671aaf8adfdfe58ca2f768105c8082b2e449fce252","ae434102edde0958ec4b19d917a6a28e6b72da1834aff0e650f049503a296cf2"],["4e8ceafb9b3e9a136dc7ff67e840295b499dfb3b2133e4ba113f2e4c0e121e5","cf2174118c8b6d7a4b48f6d534ce5c79422c086a63460502b827ce62a326683c"],["d24a44e047e19b6f5afb81c7ca2f69080a5076689a010919f42725c2b789a33b","6fb8d5591b466f8fc63db50f1c0f1c69013f996887b8244d2cdec417afea8fa3"],["ea01606a7a6c9cdd249fdfcfacb99584001edd28abbab77b5104e98e8e3b35d4","322af4908c7312b0cfbfe369f7a7b3cdb7d4494bc2823700cfd652188a3ea98d"],["af8addbf2b661c8a6c6328655eb96651252007d8c5ea31be4ad196de8ce2131f","6749e67c029b85f52a034eafd096836b2520818680e26ac8f3dfbcdb71749700"],["e3ae1974566ca06cc516d47e0fb165a674a3dabcfca15e722f0e3450f45889","2aeabe7e4531510116217f07bf4d07300de97e4874f81f533420a72eeb0bd6a4"],["591ee355313d99721cf6993ffed1e3e301993ff3ed258802075ea8ced397e246","b0ea558a113c30bea60fc4775460c7901ff0b053d25ca2bdeee98f1a4be5d196"],["11396d55fda54c49f19aa97318d8da61fa8584e47b084945077cf03255b52984","998c74a8cd45ac01289d5833a7beb4744ff536b01b257be4c5767bea93ea57a4"],["3c5d2a1ba39c5a1790000738c9e0c40b8dcdfd5468754b6405540157e017aa7a","b2284279995a34e2f9d4de7396fc18b80f9b8b9fdd270f6661f79ca4c81bd257"],["cc8704b8a60a0defa3a99a7299f2e9c3fbc395afb04ac078425ef8a1793cc030","bdd46039feed17881d1e0862db347f8cf395b74fc4bcdc4e940b74e3ac1f1b13"],["c533e4f7ea8555aacd9777ac5cad29b97dd4defccc53ee7ea204119b2889b197","6f0a256bc5efdf429a2fb6242f1a43a2d9b925bb4a4b3a26bb8e0f45eb596096"],["c14f8f2ccb27d6f109f6d08d03cc96a69ba8c34eec07bbcf566d48e33da6593","c359d6923bb398f7fd4473e16fe1c28475b740dd098075e6c0e8649113dc3a38"],["a6cbc3046bc6a450bac24789fa17115a4c9739ed75f8f21ce441f72e0b90e6ef","21ae7f4680e889bb130619e2c0f95a360ceb573c70603139862afd617fa9b9f"],["347d6d9a02c48927ebfb86c1359b1caf130a3c0267d11ce6344b39f99d43cc38","60ea7f61a353524d1c987f6ecec92f086d565ab687870cb12689ff1e31c74448"],["da6545d2181db8d983f7dcb375ef5866d47c67b1bf31c8cf855ef7437b72656a","49b96715ab6878a79e78f07ce5680c5d6673051b4935bd897fea824b77dc208a"],["c40747cc9d012cb1a13b8148309c6de7ec25d6945d657146b9d5994b8feb1111","5ca560753be2a12fc6de6caf2cb489565db936156b9514e1bb5e83037e0fa2d4"],["4e42c8ec82c99798ccf3a610be870e78338c7f713348bd34c8203ef4037f3502","7571d74ee5e0fb92a7a8b33a07783341a5492144cc54bcc40a94473693606437"],["3775ab7089bc6af823aba2e1af70b236d251cadb0c86743287522a1b3b0dedea","be52d107bcfa09d8bcb9736a828cfa7fac8db17bf7a76a2c42ad961409018cf7"],["cee31cbf7e34ec379d94fb814d3d775ad954595d1314ba8846959e3e82f74e26","8fd64a14c06b589c26b947ae2bcf6bfa0149ef0be14ed4d80f448a01c43b1c6d"],["b4f9eaea09b6917619f6ea6a4eb5464efddb58fd45b1ebefcdc1a01d08b47986","39e5c9925b5a54b07433a4f18c61726f8bb131c012ca542eb24a8ac07200682a"],["d4263dfc3d2df923a0179a48966d30ce84e2515afc3dccc1b77907792ebcc60e","62dfaf07a0f78feb30e30d6295853ce189e127760ad6cf7fae164e122a208d54"],["48457524820fa65a4f8d35eb6930857c0032acc0a4a2de422233eeda897612c4","25a748ab367979d98733c38a1fa1c2e7dc6cc07db2d60a9ae7a76aaa49bd0f77"],["dfeeef1881101f2cb11644f3a2afdfc2045e19919152923f367a1767c11cceda","ecfb7056cf1de042f9420bab396793c0c390bde74b4bbdff16a83ae09a9a7517"],["6d7ef6b17543f8373c573f44e1f389835d89bcbc6062ced36c82df83b8fae859","cd450ec335438986dfefa10c57fea9bcc521a0959b2d80bbf74b190dca712d10"],["e75605d59102a5a2684500d3b991f2e3f3c88b93225547035af25af66e04541f","f5c54754a8f71ee540b9b48728473e314f729ac5308b06938360990e2bfad125"],["eb98660f4c4dfaa06a2be453d5020bc99a0c2e60abe388457dd43fefb1ed620c","6cb9a8876d9cb8520609af3add26cd20a0a7cd8a9411131ce85f44100099223e"],["13e87b027d8514d35939f2e6892b19922154596941888336dc3563e3b8dba942","fef5a3c68059a6dec5d624114bf1e91aac2b9da568d6abeb2570d55646b8adf1"],["ee163026e9fd6fe017c38f06a5be6fc125424b371ce2708e7bf4491691e5764a","1acb250f255dd61c43d94ccc670d0f58f49ae3fa15b96623e5430da0ad6c62b2"],["b268f5ef9ad51e4d78de3a750c2dc89b1e626d43505867999932e5db33af3d80","5f310d4b3c99b9ebb19f77d41c1dee018cf0d34fd4191614003e945a1216e423"],["ff07f3118a9df035e9fad85eb6c7bfe42b02f01ca99ceea3bf7ffdba93c4750d","438136d603e858a3a5c440c38eccbaddc1d2942114e2eddd4740d098ced1f0d8"],["8d8b9855c7c052a34146fd20ffb658bea4b9f69e0d825ebec16e8c3ce2b526a1","cdb559eedc2d79f926baf44fb84ea4d44bcf50fee51d7ceb30e2e7f463036758"],["52db0b5384dfbf05bfa9d472d7ae26dfe4b851ceca91b1eba54263180da32b63","c3b997d050ee5d423ebaf66a6db9f57b3180c902875679de924b69d84a7b375"],["e62f9490d3d51da6395efd24e80919cc7d0f29c3f3fa48c6fff543becbd43352","6d89ad7ba4876b0b22c2ca280c682862f342c8591f1daf5170e07bfd9ccafa7d"],["7f30ea2476b399b4957509c88f77d0191afa2ff5cb7b14fd6d8e7d65aaab1193","ca5ef7d4b231c94c3b15389a5f6311e9daff7bb67b103e9880ef4bff637acaec"],["5098ff1e1d9f14fb46a210fada6c903fef0fb7b4a1dd1d9ac60a0361800b7a00","9731141d81fc8f8084d37c6e7542006b3ee1b40d60dfe5362a5b132fd17ddc0"],["32b78c7de9ee512a72895be6b9cbefa6e2f3c4ccce445c96b9f2c81e2778ad58","ee1849f513df71e32efc3896ee28260c73bb80547ae2275ba497237794c8753c"],["e2cb74fddc8e9fbcd076eef2a7c72b0ce37d50f08269dfc074b581550547a4f7","d3aa2ed71c9dd2247a62df062736eb0baddea9e36122d2be8641abcb005cc4a4"],["8438447566d4d7bedadc299496ab357426009a35f235cb141be0d99cd10ae3a8","c4e1020916980a4da5d01ac5e6ad330734ef0d7906631c4f2390426b2edd791f"],["4162d488b89402039b584c6fc6c308870587d9c46f660b878ab65c82c711d67e","67163e903236289f776f22c25fb8a3afc1732f2b84b4e95dbda47ae5a0852649"],["3fad3fa84caf0f34f0f89bfd2dcf54fc175d767aec3e50684f3ba4a4bf5f683d","cd1bc7cb6cc407bb2f0ca647c718a730cf71872e7d0d2a53fa20efcdfe61826"],["674f2600a3007a00568c1a7ce05d0816c1fb84bf1370798f1c69532faeb1a86b","299d21f9413f33b3edf43b257004580b70db57da0b182259e09eecc69e0d38a5"],["d32f4da54ade74abb81b815ad1fb3b263d82d6c692714bcff87d29bd5ee9f08f","f9429e738b8e53b968e99016c059707782e14f4535359d582fc416910b3eea87"],["30e4e670435385556e593657135845d36fbb6931f72b08cb1ed954f1e3ce3ff6","462f9bce619898638499350113bbc9b10a878d35da70740dc695a559eb88db7b"],["be2062003c51cc3004682904330e4dee7f3dcd10b01e580bf1971b04d4cad297","62188bc49d61e5428573d48a74e1c655b1c61090905682a0d5558ed72dccb9bc"],["93144423ace3451ed29e0fb9ac2af211cb6e84a601df5993c419859fff5df04a","7c10dfb164c3425f5c71a3f9d7992038f1065224f72bb9d1d902a6d13037b47c"],["b015f8044f5fcbdcf21ca26d6c34fb8197829205c7b7d2a7cb66418c157b112c","ab8c1e086d04e813744a655b2df8d5f83b3cdc6faa3088c1d3aea1454e3a1d5f"],["d5e9e1da649d97d89e4868117a465a3a4f8a18de57a140d36b3f2af341a21b52","4cb04437f391ed73111a13cc1d4dd0db1693465c2240480d8955e8592f27447a"],["d3ae41047dd7ca065dbf8ed77b992439983005cd72e16d6f996a5316d36966bb","bd1aeb21ad22ebb22a10f0303417c6d964f8cdd7df0aca614b10dc14d125ac46"],["463e2763d885f958fc66cdd22800f0a487197d0a82e377b49f80af87c897b065","bfefacdb0e5d0fd7df3a311a94de062b26b80c61fbc97508b79992671ef7ca7f"],["7985fdfd127c0567c6f53ec1bb63ec3158e597c40bfe747c83cddfc910641917","603c12daf3d9862ef2b25fe1de289aed24ed291e0ec6708703a5bd567f32ed03"],["74a1ad6b5f76e39db2dd249410eac7f99e74c59cb83d2d0ed5ff1543da7703e9","cc6157ef18c9c63cd6193d83631bbea0093e0968942e8c33d5737fd790e0db08"],["30682a50703375f602d416664ba19b7fc9bab42c72747463a71d0896b22f6da3","553e04f6b018b4fa6c8f39e7f311d3176290d0e0f19ca73f17714d9977a22ff8"],["9e2158f0d7c0d5f26c3791efefa79597654e7a2b2464f52b1ee6c1347769ef57","712fcdd1b9053f09003a3481fa7762e9ffd7c8ef35a38509e2fbf2629008373"],["176e26989a43c9cfeba4029c202538c28172e566e3c4fce7322857f3be327d66","ed8cc9d04b29eb877d270b4878dc43c19aefd31f4eee09ee7b47834c1fa4b1c3"],["75d46efea3771e6e68abb89a13ad747ecf1892393dfc4f1b7004788c50374da8","9852390a99507679fd0b86fd2b39a868d7efc22151346e1a3ca4726586a6bed8"],["809a20c67d64900ffb698c4c825f6d5f2310fb0451c869345b7319f645605721","9e994980d9917e22b76b061927fa04143d096ccc54963e6a5ebfa5f3f8e286c1"],["1b38903a43f7f114ed4500b4eac7083fdefece1cf29c63528d563446f972c180","4036edc931a60ae889353f77fd53de4a2708b26b6f5da72ad3394119daf408f9"]]}}},function(e,t,n){"use strict";function r(e){return(r="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e})(e)}var a=n(4),o=n(141),i=n(7),c=n(40),s=n(37),l=i.assert,g=n(142),I=n(143);function B(e){if(!(this instanceof B))return new B(e);"string"==typeof e&&(l(c.hasOwnProperty(e),"Unknown curve "+e),e=c[e]),e instanceof c.PresetCurve&&(e={curve:e}),this.curve=e.curve.curve,this.n=this.curve.n,this.nh=this.n.ushrn(1),this.g=this.curve.g,this.g=e.curve.g,this.g.precompute(e.curve.n.bitLength()+1),this.hash=e.hash||e.curve.hash}e.exports=B,B.prototype.keyPair=function(e){return new g(this,e)},B.prototype.keyFromPrivate=function(e,t){return g.fromPrivate(this,e,t)},B.prototype.keyFromPublic=function(e,t){return g.fromPublic(this,e,t)},B.prototype.genKeyPair=function(e){e||(e={});for(var t=new o({hash:this.hash,pers:e.pers,persEnc:e.persEnc||"utf8",entropy:e.entropy||s(this.hash.hmacStrength),entropyEnc:e.entropy&&e.entropyEnc||"utf8",nonce:this.n.toArray()}),n=this.n.byteLength(),r=this.n.sub(new a(2));;){var i=new a(t.generate(n));if(!(i.cmp(r)>0))return i.iaddn(1),this.keyFromPrivate(i)}},B.prototype._truncateToN=function(e,t){var n=8*e.byteLength()-this.n.bitLength();return n>0&&(e=e.ushrn(n)),!t&&e.cmp(this.n)>=0?e.sub(this.n):e},B.prototype.sign=function(e,t,n,i){"object"===r(n)&&(i=n,n=null),i||(i={}),t=this.keyFromPrivate(t,n),e=this._truncateToN(new a(e,16));for(var c=this.n.byteLength(),s=t.getPrivate().toArray("be",c),l=e.toArray("be",c),g=new o({hash:this.hash,entropy:s,nonce:l,pers:i.pers,persEnc:i.persEnc||"utf8"}),B=this.n.sub(new a(1)),A=0;;A++){var u=i.k?i.k(A):new a(g.generate(this.n.byteLength()));if(!((u=this._truncateToN(u,!0)).cmpn(1)<=0||u.cmp(B)>=0)){var d=this.g.mul(u);if(!d.isInfinity()){var _=d.getX(),C=_.umod(this.n);if(0!==C.cmpn(0)){var b=u.invm(this.n).mul(C.mul(t.getPrivate()).iadd(e));if(0!==(b=b.umod(this.n)).cmpn(0)){var p=(d.getY().isOdd()?1:0)|(0!==_.cmp(C)?2:0);return i.canonical&&b.cmp(this.nh)>0&&(b=this.n.sub(b),p^=1),new I({r:C,s:b,recoveryParam:p})}}}}}},B.prototype.verify=function(e,t,n,r){e=this._truncateToN(new a(e,16)),n=this.keyFromPublic(n,r);var o=(t=new I(t,"hex")).r,i=t.s;if(o.cmpn(1)<0||o.cmp(this.n)>=0)return!1;if(i.cmpn(1)<0||i.cmp(this.n)>=0)return!1;var c,s=i.invm(this.n),l=s.mul(e).umod(this.n),g=s.mul(o).umod(this.n);return this.curve._maxwellTrick?!(c=this.g.jmulAdd(l,n.getPublic(),g)).isInfinity()&&c.eqXToP(o):!(c=this.g.mulAdd(l,n.getPublic(),g)).isInfinity()&&0===c.getX().umod(this.n).cmp(o)},B.prototype.recoverPubKey=function(e,t,n,r){l((3&n)===n,"The recovery param is more than two bits"),t=new I(t,r);var o=this.n,i=new a(e),c=t.r,s=t.s,g=1&n,B=n>>1;if(c.cmp(this.curve.p.umod(this.curve.n))>=0&&B)throw new Error("Unable to find sencond key candinate");c=B?this.curve.pointFromX(c.add(this.curve.n),g):this.curve.pointFromX(c,g);var A=t.r.invm(o),u=o.sub(i).mul(A).umod(o),d=s.mul(A).umod(o);return this.g.mulAdd(u,c,d)},B.prototype.getKeyRecoveryParam=function(e,t,n,r){if(null!==(t=new I(t,r)).recoveryParam)return t.recoveryParam;for(var a=0;a<4;a++){var o;try{o=this.recoverPubKey(e,t,a)}catch(e){continue}if(o.eq(n))return a}throw new Error("Unable to find valid recovery factor")}},function(e,t,n){"use strict";var r=n(41),a=n(70),o=n(6);function i(e){if(!(this instanceof i))return new i(e);this.hash=e.hash,this.predResist=!!e.predResist,this.outLen=this.hash.outSize,this.minEntropy=e.minEntropy||this.hash.hmacStrength,this._reseed=null,this.reseedInterval=null,this.K=null,this.V=null;var t=a.toArray(e.entropy,e.entropyEnc||"hex"),n=a.toArray(e.nonce,e.nonceEnc||"hex"),r=a.toArray(e.pers,e.persEnc||"hex");o(t.length>=this.minEntropy/8,"Not enough entropy. Minimum is: "+this.minEntropy+" bits"),this._init(t,n,r)}e.exports=i,i.prototype._init=function(e,t,n){var r=e.concat(t).concat(n);this.K=new Array(this.outLen/8),this.V=new Array(this.outLen/8);for(var a=0;a<this.V.length;a++)this.K[a]=0,this.V[a]=1;this._update(r),this._reseed=1,this.reseedInterval=281474976710656},i.prototype._hmac=function(){return new r.hmac(this.hash,this.K)},i.prototype._update=function(e){var t=this._hmac().update(this.V).update([0]);e&&(t=t.update(e)),this.K=t.digest(),this.V=this._hmac().update(this.V).digest(),e&&(this.K=this._hmac().update(this.V).update([1]).update(e).digest(),this.V=this._hmac().update(this.V).digest())},i.prototype.reseed=function(e,t,n,r){"string"!=typeof t&&(r=n,n=t,t=null),e=a.toArray(e,t),n=a.toArray(n,r),o(e.length>=this.minEntropy/8,"Not enough entropy. Minimum is: "+this.minEntropy+" bits"),this._update(e.concat(n||[])),this._reseed=1},i.prototype.generate=function(e,t,n,r){if(this._reseed>this.reseedInterval)throw new Error("Reseed is required");"string"!=typeof t&&(r=n,n=t,t=null),n&&(n=a.toArray(n,r||"hex"),this._update(n));for(var o=[];o.length<e;)this.V=this._hmac().update(this.V).digest(),o=o.concat(this.V);var i=o.slice(0,e);return this._update(n),this._reseed++,a.encode(i,t)}},function(e,t,n){"use strict";var r=n(4),a=n(7).assert;function o(e,t){this.ec=e,this.priv=null,this.pub=null,t.priv&&this._importPrivate(t.priv,t.privEnc),t.pub&&this._importPublic(t.pub,t.pubEnc)}e.exports=o,o.fromPublic=function(e,t,n){return t instanceof o?t:new o(e,{pub:t,pubEnc:n})},o.fromPrivate=function(e,t,n){return t instanceof o?t:new o(e,{priv:t,privEnc:n})},o.prototype.validate=function(){var e=this.getPublic();return e.isInfinity()?{result:!1,reason:"Invalid public key"}:e.validate()?e.mul(this.ec.curve.n).isInfinity()?{result:!0,reason:null}:{result:!1,reason:"Public key * N != O"}:{result:!1,reason:"Public key is not a point"}},o.prototype.getPublic=function(e,t){return"string"==typeof e&&(t=e,e=null),this.pub||(this.pub=this.ec.g.mul(this.priv)),t?this.pub.encode(t,e):this.pub},o.prototype.getPrivate=function(e){return"hex"===e?this.priv.toString(16,2):this.priv},o.prototype._importPrivate=function(e,t){this.priv=new r(e,t||16),this.priv=this.priv.umod(this.ec.curve.n)},o.prototype._importPublic=function(e,t){if(e.x||e.y)return"mont"===this.ec.curve.type?a(e.x,"Need x coordinate"):"short"!==this.ec.curve.type&&"edwards"!==this.ec.curve.type||a(e.x&&e.y,"Need both x and y coordinate"),void(this.pub=this.ec.curve.point(e.x,e.y));this.pub=this.ec.curve.decodePoint(e,t)},o.prototype.derive=function(e){return e.mul(this.priv).getX()},o.prototype.sign=function(e,t,n){return this.ec.sign(e,this,t,n)},o.prototype.verify=function(e,t){return this.ec.verify(e,t,this)},o.prototype.inspect=function(){return"<Key priv: "+(this.priv&&this.priv.toString(16,2))+" pub: "+(this.pub&&this.pub.inspect())+" >"}},function(e,t,n){"use strict";var r=n(4),a=n(7),o=a.assert;function i(e,t){if(e instanceof i)return e;this._importDER(e,t)||(o(e.r&&e.s,"Signature without r or s"),this.r=new r(e.r,16),this.s=new r(e.s,16),void 0===e.recoveryParam?this.recoveryParam=null:this.recoveryParam=e.recoveryParam)}function c(){this.place=0}function s(e,t){var n=e[t.place++];if(!(128&n))return n;for(var r=15&n,a=0,o=0,i=t.place;o<r;o++,i++)a<<=8,a|=e[i];return t.place=i,a}function l(e){for(var t=0,n=e.length-1;!e[t]&&!(128&e[t+1])&&t<n;)t++;return 0===t?e:e.slice(t)}function g(e,t){if(t<128)e.push(t);else{var n=1+(Math.log(t)/Math.LN2>>>3);for(e.push(128|n);--n;)e.push(t>>>(n<<3)&255);e.push(t)}}e.exports=i,i.prototype._importDER=function(e,t){e=a.toArray(e,t);var n=new c;if(48!==e[n.place++])return!1;if(s(e,n)+n.place!==e.length)return!1;if(2!==e[n.place++])return!1;var o=s(e,n),i=e.slice(n.place,o+n.place);if(n.place+=o,2!==e[n.place++])return!1;var l=s(e,n);if(e.length!==l+n.place)return!1;var g=e.slice(n.place,l+n.place);return 0===i[0]&&128&i[1]&&(i=i.slice(1)),0===g[0]&&128&g[1]&&(g=g.slice(1)),this.r=new r(i),this.s=new r(g),this.recoveryParam=null,!0},i.prototype.toDER=function(e){var t=this.r.toArray(),n=this.s.toArray();for(128&t[0]&&(t=[0].concat(t)),128&n[0]&&(n=[0].concat(n)),t=l(t),n=l(n);!(n[0]||128&n[1]);)n=n.slice(1);var r=[2];g(r,t.length),(r=r.concat(t)).push(2),g(r,n.length);var o=r.concat(n),i=[48];return g(i,o.length),i=i.concat(o),a.encode(i,e)}},function(e,t,n){"use strict";var r=n(41),a=n(40),o=n(7),i=o.assert,c=o.parseBytes,s=n(145),l=n(146);function g(e){if(i("ed25519"===e,"only tested with ed25519 so far"),!(this instanceof g))return new g(e);e=a[e].curve,this.curve=e,this.g=e.g,this.g.precompute(e.n.bitLength()+1),this.pointClass=e.point().constructor,this.encodingLength=Math.ceil(e.n.bitLength()/8),this.hash=r.sha512}e.exports=g,g.prototype.sign=function(e,t){e=c(e);var n=this.keyFromSecret(t),r=this.hashInt(n.messagePrefix(),e),a=this.g.mul(r),o=this.encodePoint(a),i=this.hashInt(o,n.pubBytes(),e).mul(n.priv()),s=r.add(i).umod(this.curve.n);return this.makeSignature({R:a,S:s,Rencoded:o})},g.prototype.verify=function(e,t,n){e=c(e),t=this.makeSignature(t);var r=this.keyFromPublic(n),a=this.hashInt(t.Rencoded(),r.pubBytes(),e),o=this.g.mul(t.S());return t.R().add(r.pub().mul(a)).eq(o)},g.prototype.hashInt=function(){for(var e=this.hash(),t=0;t<arguments.length;t++)e.update(arguments[t]);return o.intFromLE(e.digest()).umod(this.curve.n)},g.prototype.keyFromPublic=function(e){return s.fromPublic(this,e)},g.prototype.keyFromSecret=function(e){return s.fromSecret(this,e)},g.prototype.makeSignature=function(e){return e instanceof l?e:new l(this,e)},g.prototype.encodePoint=function(e){var t=e.getY().toArray("le",this.encodingLength);return t[this.encodingLength-1]|=e.getX().isOdd()?128:0,t},g.prototype.decodePoint=function(e){var t=(e=o.parseBytes(e)).length-1,n=e.slice(0,t).concat(-129&e[t]),r=0!=(128&e[t]),a=o.intFromLE(n);return this.curve.pointFromY(a,r)},g.prototype.encodeInt=function(e){return e.toArray("le",this.encodingLength)},g.prototype.decodeInt=function(e){return o.intFromLE(e)},g.prototype.isPoint=function(e){return e instanceof this.pointClass}},function(e,t,n){"use strict";var r=n(7),a=r.assert,o=r.parseBytes,i=r.cachedProperty;function c(e,t){this.eddsa=e,this._secret=o(t.secret),e.isPoint(t.pub)?this._pub=t.pub:this._pubBytes=o(t.pub)}c.fromPublic=function(e,t){return t instanceof c?t:new c(e,{pub:t})},c.fromSecret=function(e,t){return t instanceof c?t:new c(e,{secret:t})},c.prototype.secret=function(){return this._secret},i(c,"pubBytes",(function(){return this.eddsa.encodePoint(this.pub())})),i(c,"pub",(function(){return this._pubBytes?this.eddsa.decodePoint(this._pubBytes):this.eddsa.g.mul(this.priv())})),i(c,"privBytes",(function(){var e=this.eddsa,t=this.hash(),n=e.encodingLength-1,r=t.slice(0,e.encodingLength);return r[0]&=248,r[n]&=127,r[n]|=64,r})),i(c,"priv",(function(){return this.eddsa.decodeInt(this.privBytes())})),i(c,"hash",(function(){return this.eddsa.hash().update(this.secret()).digest()})),i(c,"messagePrefix",(function(){return this.hash().slice(this.eddsa.encodingLength)})),c.prototype.sign=function(e){return a(this._secret,"KeyPair can only verify"),this.eddsa.sign(e,this)},c.prototype.verify=function(e,t){return this.eddsa.verify(e,t,this)},c.prototype.getSecret=function(e){return a(this._secret,"KeyPair is public only"),r.encode(this.secret(),e)},c.prototype.getPublic=function(e){return r.encode(this.pubBytes(),e)},e.exports=c},function(e,t,n){"use strict";function r(e){return(r="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e})(e)}var a=n(4),o=n(7),i=o.assert,c=o.cachedProperty,s=o.parseBytes;function l(e,t){this.eddsa=e,"object"!==r(t)&&(t=s(t)),Array.isArray(t)&&(t={R:t.slice(0,e.encodingLength),S:t.slice(e.encodingLength)}),i(t.R&&t.S,"Signature without R or S"),e.isPoint(t.R)&&(this._R=t.R),t.S instanceof a&&(this._S=t.S),this._Rencoded=Array.isArray(t.R)?t.R:t.Rencoded,this._Sencoded=Array.isArray(t.S)?t.S:t.Sencoded}c(l,"S",(function(){return this.eddsa.decodeInt(this.Sencoded())})),c(l,"R",(function(){return this.eddsa.decodePoint(this.Rencoded())})),c(l,"Rencoded",(function(){return this.eddsa.encodePoint(this.R())})),c(l,"Sencoded",(function(){return this.eddsa.encodeInt(this.S())})),l.prototype.toBytes=function(){return this.Rencoded().concat(this.Sencoded())},l.prototype.toHex=function(){return o.encode(this.toBytes(),"hex").toUpperCase()},e.exports=l},function(e,t,n){"use strict";var r=n(19);t.certificate=n(157);var a=r.define("RSAPrivateKey",(function(){this.seq().obj(this.key("version").int(),this.key("modulus").int(),this.key("publicExponent").int(),this.key("privateExponent").int(),this.key("prime1").int(),this.key("prime2").int(),this.key("exponent1").int(),this.key("exponent2").int(),this.key("coefficient").int())}));t.RSAPrivateKey=a;var o=r.define("RSAPublicKey",(function(){this.seq().obj(this.key("modulus").int(),this.key("publicExponent").int())}));t.RSAPublicKey=o;var i=r.define("SubjectPublicKeyInfo",(function(){this.seq().obj(this.key("algorithm").use(c),this.key("subjectPublicKey").bitstr())}));t.PublicKey=i;var c=r.define("AlgorithmIdentifier",(function(){this.seq().obj(this.key("algorithm").objid(),this.key("none").null_().optional(),this.key("curve").objid().optional(),this.key("params").seq().obj(this.key("p").int(),this.key("q").int(),this.key("g").int()).optional())})),s=r.define("PrivateKeyInfo",(function(){this.seq().obj(this.key("version").int(),this.key("algorithm").use(c),this.key("subjectPrivateKey").octstr())}));t.PrivateKey=s;var l=r.define("EncryptedPrivateKeyInfo",(function(){this.seq().obj(this.key("algorithm").seq().obj(this.key("id").objid(),this.key("decrypt").seq().obj(this.key("kde").seq().obj(this.key("id").objid(),this.key("kdeparams").seq().obj(this.key("salt").octstr(),this.key("iters").int())),this.key("cipher").seq().obj(this.key("algo").objid(),this.key("iv").octstr()))),this.key("subjectPrivateKey").octstr())}));t.EncryptedPrivateKey=l;var g=r.define("DSAPrivateKey",(function(){this.seq().obj(this.key("version").int(),this.key("p").int(),this.key("q").int(),this.key("g").int(),this.key("pub_key").int(),this.key("priv_key").int())}));t.DSAPrivateKey=g,t.DSAparam=r.define("DSAparam",(function(){this.int()}));var I=r.define("ECPrivateKey",(function(){this.seq().obj(this.key("version").int(),this.key("privateKey").octstr(),this.key("parameters").optional().explicit(0).use(B),this.key("publicKey").optional().explicit(1).bitstr())}));t.ECPrivateKey=I;var B=r.define("ECParameters",(function(){this.choice({namedCurve:this.objid()})}));t.signature=r.define("signature",(function(){this.seq().obj(this.key("r").int(),this.key("s").int())}))},function(e,t,n){var r=n(19),a=n(1);function o(e,t){this.name=e,this.body=t,this.decoders={},this.encoders={}}t.define=function(e,t){return new o(e,t)},o.prototype._createNamed=function(e){var t;try{t=n(149).runInThisContext("(function "+this.name+"(entity) {\n this._initNamed(entity);\n})")}catch(e){t=function(e){this._initNamed(e)}}return a(t,e),t.prototype._initNamed=function(t){e.call(this,t)},new t(this)},o.prototype._getDecoder=function(e){return e=e||"der",this.decoders.hasOwnProperty(e)||(this.decoders[e]=this._createNamed(r.decoders[e])),this.decoders[e]},o.prototype.decode=function(e,t,n){return this._getDecoder(t).decode(e,n)},o.prototype._getEncoder=function(e){return e=e||"der",this.encoders.hasOwnProperty(e)||(this.encoders[e]=this._createNamed(r.encoders[e])),this.encoders[e]},o.prototype.encode=function(e,t,n){return this._getEncoder(t).encode(e,n)}},function(module,exports){function _typeof(e){return(_typeof="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e})(e)}var indexOf=function(e,t){if(e.indexOf)return e.indexOf(t);for(var n=0;n<e.length;n++)if(e[n]===t)return n;return-1},Object_keys=function(e){if(Object.keys)return Object.keys(e);var t=[];for(var n in e)t.push(n);return t},forEach=function(e,t){if(e.forEach)return e.forEach(t);for(var n=0;n<e.length;n++)t(e[n],n,e)},defineProp=function(){try{return Object.defineProperty({},"_",{}),function(e,t,n){Object.defineProperty(e,t,{writable:!0,enumerable:!1,configurable:!0,value:n})}}catch(e){return function(e,t,n){e[t]=n}}}(),globals=["Array","Boolean","Date","Error","EvalError","Function","Infinity","JSON","Math","NaN","Number","Object","RangeError","ReferenceError","RegExp","String","SyntaxError","TypeError","URIError","decodeURI","decodeURIComponent","encodeURI","encodeURIComponent","escape","eval","isFinite","isNaN","parseFloat","parseInt","undefined","unescape"];function Context(){}Context.prototype={};var Script=exports.Script=function(e){if(!(this instanceof Script))return new Script(e);this.code=e};Script.prototype.runInContext=function(e){if(!(e instanceof Context))throw new TypeError("needs a 'context' argument.");var t=document.createElement("iframe");t.style||(t.style={}),t.style.display="none",document.body.appendChild(t);var n=t.contentWindow,r=n.eval,a=n.execScript;!r&&a&&(a.call(n,"null"),r=n.eval),forEach(Object_keys(e),(function(t){n[t]=e[t]})),forEach(globals,(function(t){e[t]&&(n[t]=e[t])}));var o=Object_keys(n),i=r.call(n,this.code);return forEach(Object_keys(n),(function(t){(t in e||-1===indexOf(o,t))&&(e[t]=n[t])})),forEach(globals,(function(t){t in e||defineProp(e,t,n[t])})),document.body.removeChild(t),i},Script.prototype.runInThisContext=function(){return eval(this.code)},Script.prototype.runInNewContext=function(e){var t=Script.createContext(e),n=this.runInContext(t);return e&&forEach(Object_keys(t),(function(n){e[n]=t[n]})),n},forEach(Object_keys(Script.prototype),(function(e){exports[e]=Script[e]=function(t){var n=Script(t);return n[e].apply(n,[].slice.call(arguments,1))}})),exports.isContext=function(e){return e instanceof Context},exports.createScript=function(e){return exports.Script(e)},exports.createContext=Script.createContext=function(e){var t=new Context;return"object"===_typeof(e)&&forEach(Object_keys(e),(function(n){t[n]=e[n]})),t}},function(e,t,n){var r=n(1);function a(e){this._reporterState={obj:null,path:[],options:e||{},errors:[]}}function o(e,t){this.path=e,this.rethrow(t)}t.Reporter=a,a.prototype.isError=function(e){return e instanceof o},a.prototype.save=function(){var e=this._reporterState;return{obj:e.obj,pathLen:e.path.length}},a.prototype.restore=function(e){var t=this._reporterState;t.obj=e.obj,t.path=t.path.slice(0,e.pathLen)},a.prototype.enterKey=function(e){return this._reporterState.path.push(e)},a.prototype.exitKey=function(e){var t=this._reporterState;t.path=t.path.slice(0,e-1)},a.prototype.leaveKey=function(e,t,n){var r=this._reporterState;this.exitKey(e),null!==r.obj&&(r.obj[t]=n)},a.prototype.path=function(){return this._reporterState.path.join("/")},a.prototype.enterObject=function(){var e=this._reporterState,t=e.obj;return e.obj={},t},a.prototype.leaveObject=function(e){var t=this._reporterState,n=t.obj;return t.obj=e,n},a.prototype.error=function(e){var t,n=this._reporterState,r=e instanceof o;if(t=r?e:new o(n.path.map((function(e){return"["+JSON.stringify(e)+"]"})).join(""),e.message||e,e.stack),!n.options.partial)throw t;return r||n.errors.push(t),t},a.prototype.wrapResult=function(e){var t=this._reporterState;return t.options.partial?{result:this.isError(e)?null:e,errors:t.errors}:e},r(o,Error),o.prototype.rethrow=function(e){if(this.message=e+" at: "+(this.path||"(shallow)"),Error.captureStackTrace&&Error.captureStackTrace(this,o),!this.stack)try{throw new Error(this.message)}catch(e){this.stack=e.stack}return this}},function(e,t,n){function r(e){return(r="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e})(e)}var a=n(20).Reporter,o=n(20).EncoderBuffer,i=n(20).DecoderBuffer,c=n(6),s=["seq","seqof","set","setof","objid","bool","gentime","utctime","null_","enum","int","objDesc","bitstr","bmpstr","charstr","genstr","graphstr","ia5str","iso646str","numstr","octstr","printstr","t61str","unistr","utf8str","videostr"],l=["key","obj","use","optional","explicit","implicit","def","choice","any","contains"].concat(s);function g(e,t){var n={};this._baseState=n,n.enc=e,n.parent=t||null,n.children=null,n.tag=null,n.args=null,n.reverseArgs=null,n.choice=null,n.optional=!1,n.any=!1,n.obj=!1,n.use=null,n.useDecoder=null,n.key=null,n.default=null,n.explicit=null,n.implicit=null,n.contains=null,n.parent||(n.children=[],this._wrap())}e.exports=g;var I=["enc","parent","children","tag","args","reverseArgs","choice","optional","any","obj","use","alteredUse","key","default","explicit","implicit","contains"];g.prototype.clone=function(){var e=this._baseState,t={};I.forEach((function(n){t[n]=e[n]}));var n=new this.constructor(t.parent);return n._baseState=t,n},g.prototype._wrap=function(){var e=this._baseState;l.forEach((function(t){this[t]=function(){var n=new this.constructor(this);return e.children.push(n),n[t].apply(n,arguments)}}),this)},g.prototype._init=function(e){var t=this._baseState;c(null===t.parent),e.call(this),t.children=t.children.filter((function(e){return e._baseState.parent===this}),this),c.equal(t.children.length,1,"Root node can have only one child")},g.prototype._useArgs=function(e){var t=this._baseState,n=e.filter((function(e){return e instanceof this.constructor}),this);e=e.filter((function(e){return!(e instanceof this.constructor)}),this),0!==n.length&&(c(null===t.children),t.children=n,n.forEach((function(e){e._baseState.parent=this}),this)),0!==e.length&&(c(null===t.args),t.args=e,t.reverseArgs=e.map((function(e){if("object"!==r(e)||e.constructor!==Object)return e;var t={};return Object.keys(e).forEach((function(n){n==(0|n)&&(n|=0);var r=e[n];t[r]=n})),t})))},["_peekTag","_decodeTag","_use","_decodeStr","_decodeObjid","_decodeTime","_decodeNull","_decodeInt","_decodeBool","_decodeList","_encodeComposite","_encodeStr","_encodeObjid","_encodeTime","_encodeNull","_encodeInt","_encodeBool"].forEach((function(e){g.prototype[e]=function(){var t=this._baseState;throw new Error(e+" not implemented for encoding: "+t.enc)}})),s.forEach((function(e){g.prototype[e]=function(){var t=this._baseState,n=Array.prototype.slice.call(arguments);return c(null===t.tag),t.tag=e,this._useArgs(n),this}})),g.prototype.use=function(e){c(e);var t=this._baseState;return c(null===t.use),t.use=e,this},g.prototype.optional=function(){return this._baseState.optional=!0,this},g.prototype.def=function(e){var t=this._baseState;return c(null===t.default),t.default=e,t.optional=!0,this},g.prototype.explicit=function(e){var t=this._baseState;return c(null===t.explicit&&null===t.implicit),t.explicit=e,this},g.prototype.implicit=function(e){var t=this._baseState;return c(null===t.explicit&&null===t.implicit),t.implicit=e,this},g.prototype.obj=function(){var e=this._baseState,t=Array.prototype.slice.call(arguments);return e.obj=!0,0!==t.length&&this._useArgs(t),this},g.prototype.key=function(e){var t=this._baseState;return c(null===t.key),t.key=e,this},g.prototype.any=function(){return this._baseState.any=!0,this},g.prototype.choice=function(e){var t=this._baseState;return c(null===t.choice),t.choice=e,this._useArgs(Object.keys(e).map((function(t){return e[t]}))),this},g.prototype.contains=function(e){var t=this._baseState;return c(null===t.use),t.contains=e,this},g.prototype._decode=function(e,t){var n=this._baseState;if(null===n.parent)return e.wrapResult(n.children[0]._decode(e,t));var r,a=n.default,o=!0,c=null;if(null!==n.key&&(c=e.enterKey(n.key)),n.optional){var s=null;if(null!==n.explicit?s=n.explicit:null!==n.implicit?s=n.implicit:null!==n.tag&&(s=n.tag),null!==s||n.any){if(o=this._peekTag(e,s,n.any),e.isError(o))return o}else{var l=e.save();try{null===n.choice?this._decodeGeneric(n.tag,e,t):this._decodeChoice(e,t),o=!0}catch(e){o=!1}e.restore(l)}}if(n.obj&&o&&(r=e.enterObject()),o){if(null!==n.explicit){var g=this._decodeTag(e,n.explicit);if(e.isError(g))return g;e=g}var I=e.offset;if(null===n.use&&null===n.choice){n.any&&(l=e.save());var B=this._decodeTag(e,null!==n.implicit?n.implicit:n.tag,n.any);if(e.isError(B))return B;n.any?a=e.raw(l):e=B}if(t&&t.track&&null!==n.tag&&t.track(e.path(),I,e.length,"tagged"),t&&t.track&&null!==n.tag&&t.track(e.path(),e.offset,e.length,"content"),a=n.any?a:null===n.choice?this._decodeGeneric(n.tag,e,t):this._decodeChoice(e,t),e.isError(a))return a;if(n.any||null!==n.choice||null===n.children||n.children.forEach((function(n){n._decode(e,t)})),n.contains&&("octstr"===n.tag||"bitstr"===n.tag)){var A=new i(a);a=this._getUse(n.contains,e._reporterState.obj)._decode(A,t)}}return n.obj&&o&&(a=e.leaveObject(r)),null===n.key||null===a&&!0!==o?null!==c&&e.exitKey(c):e.leaveKey(c,n.key,a),a},g.prototype._decodeGeneric=function(e,t,n){var r=this._baseState;return"seq"===e||"set"===e?null:"seqof"===e||"setof"===e?this._decodeList(t,e,r.args[0],n):/str$/.test(e)?this._decodeStr(t,e,n):"objid"===e&&r.args?this._decodeObjid(t,r.args[0],r.args[1],n):"objid"===e?this._decodeObjid(t,null,null,n):"gentime"===e||"utctime"===e?this._decodeTime(t,e,n):"null_"===e?this._decodeNull(t,n):"bool"===e?this._decodeBool(t,n):"objDesc"===e?this._decodeStr(t,e,n):"int"===e||"enum"===e?this._decodeInt(t,r.args&&r.args[0],n):null!==r.use?this._getUse(r.use,t._reporterState.obj)._decode(t,n):t.error("unknown tag: "+e)},g.prototype._getUse=function(e,t){var n=this._baseState;return n.useDecoder=this._use(e,t),c(null===n.useDecoder._baseState.parent),n.useDecoder=n.useDecoder._baseState.children[0],n.implicit!==n.useDecoder._baseState.implicit&&(n.useDecoder=n.useDecoder.clone(),n.useDecoder._baseState.implicit=n.implicit),n.useDecoder},g.prototype._decodeChoice=function(e,t){var n=this._baseState,r=null,a=!1;return Object.keys(n.choice).some((function(o){var i=e.save(),c=n.choice[o];try{var s=c._decode(e,t);if(e.isError(s))return!1;r={type:o,value:s},a=!0}catch(t){return e.restore(i),!1}return!0}),this),a?r:e.error("Choice not matched")},g.prototype._createEncoderBuffer=function(e){return new o(e,this.reporter)},g.prototype._encode=function(e,t,n){var r=this._baseState;if(null===r.default||r.default!==e){var a=this._encodeValue(e,t,n);if(void 0!==a&&!this._skipDefault(a,t,n))return a}},g.prototype._encodeValue=function(e,t,n){var o=this._baseState;if(null===o.parent)return o.children[0]._encode(e,t||new a);var i=null;if(this.reporter=t,o.optional&&void 0===e){if(null===o.default)return;e=o.default}var c=null,s=!1;if(o.any)i=this._createEncoderBuffer(e);else if(o.choice)i=this._encodeChoice(e,t);else if(o.contains)c=this._getUse(o.contains,n)._encode(e,t),s=!0;else if(o.children)c=o.children.map((function(n){if("null_"===n._baseState.tag)return n._encode(null,t,e);if(null===n._baseState.key)return t.error("Child should have a key");var a=t.enterKey(n._baseState.key);if("object"!==r(e))return t.error("Child expected, but input is not object");var o=n._encode(e[n._baseState.key],t,e);return t.leaveKey(a),o}),this).filter((function(e){return e})),c=this._createEncoderBuffer(c);else if("seqof"===o.tag||"setof"===o.tag){if(!o.args||1!==o.args.length)return t.error("Too many args for : "+o.tag);if(!Array.isArray(e))return t.error("seqof/setof, but data is not Array");var l=this.clone();l._baseState.implicit=null,c=this._createEncoderBuffer(e.map((function(n){var r=this._baseState;return this._getUse(r.args[0],e)._encode(n,t)}),l))}else null!==o.use?i=this._getUse(o.use,n)._encode(e,t):(c=this._encodePrimitive(o.tag,e),s=!0);if(!o.any&&null===o.choice){var g=null!==o.implicit?o.implicit:o.tag,I=null===o.implicit?"universal":"context";null===g?null===o.use&&t.error("Tag could be omitted only for .use()"):null===o.use&&(i=this._encodeComposite(g,s,I,c))}return null!==o.explicit&&(i=this._encodeComposite(o.explicit,!1,"context",i)),i},g.prototype._encodeChoice=function(e,t){var n=this._baseState,r=n.choice[e.type];return r||c(!1,e.type+" not found in "+JSON.stringify(Object.keys(n.choice))),r._encode(e.value,t)},g.prototype._encodePrimitive=function(e,t){var n=this._baseState;if(/str$/.test(e))return this._encodeStr(t,e);if("objid"===e&&n.args)return this._encodeObjid(t,n.reverseArgs[0],n.args[1]);if("objid"===e)return this._encodeObjid(t,null,null);if("gentime"===e||"utctime"===e)return this._encodeTime(t,e);if("null_"===e)return this._encodeNull();if("int"===e||"enum"===e)return this._encodeInt(t,n.args&&n.reverseArgs[0]);if("bool"===e)return this._encodeBool(t);if("objDesc"===e)return this._encodeStr(t,e);throw new Error("Unsupported tag: "+e)},g.prototype._isNumstr=function(e){return/^[0-9 ]*$/.test(e)},g.prototype._isPrintstr=function(e){return/^[A-Za-z0-9 '\(\)\+,\-\.\/:=\?]*$/.test(e)}},function(e,t,n){var r=n(76);t.tagClass={0:"universal",1:"application",2:"context",3:"private"},t.tagClassByName=r._reverse(t.tagClass),t.tag={0:"end",1:"bool",2:"int",3:"bitstr",4:"octstr",5:"null_",6:"objid",7:"objDesc",8:"external",9:"real",10:"enum",11:"embed",12:"utf8str",13:"relativeOid",16:"seq",17:"set",18:"numstr",19:"printstr",20:"t61str",21:"videostr",22:"ia5str",23:"utctime",24:"gentime",25:"graphstr",26:"iso646str",27:"genstr",28:"unistr",29:"charstr",30:"bmpstr"},t.tagByName=r._reverse(t.tag)},function(e,t,n){var r=t;r.der=n(77),r.pem=n(154)},function(e,t,n){var r=n(1),a=n(3).Buffer,o=n(77);function i(e){o.call(this,e),this.enc="pem"}r(i,o),e.exports=i,i.prototype.decode=function(e,t){for(var n=e.toString().split(/[\r\n]+/g),r=t.label.toUpperCase(),i=/^-----(BEGIN|END) ([^-]+)-----$/,c=-1,s=-1,l=0;l<n.length;l++){var g=n[l].match(i);if(null!==g&&g[2]===r){if(-1!==c){if("END"!==g[1])break;s=l;break}if("BEGIN"!==g[1])break;c=l}}if(-1===c||-1===s)throw new Error("PEM section not found for: "+r);var I=n.slice(c+1,s).join("");I.replace(/[^a-z0-9\+\/=]+/gi,"");var B=new a(I,"base64");return o.prototype.decode.call(this,B,t)}},function(e,t,n){var r=t;r.der=n(78),r.pem=n(156)},function(e,t,n){var r=n(1),a=n(78);function o(e){a.call(this,e),this.enc="pem"}r(o,a),e.exports=o,o.prototype.encode=function(e,t){for(var n=a.prototype.encode.call(this,e).toString("base64"),r=["-----BEGIN "+t.label+"-----"],o=0;o<n.length;o+=64)r.push(n.slice(o,o+64));return r.push("-----END "+t.label+"-----"),r.join("\n")}},function(e,t,n){"use strict";var r=n(19),a=r.define("Time",(function(){this.choice({utcTime:this.utctime(),generalTime:this.gentime()})})),o=r.define("AttributeTypeValue",(function(){this.seq().obj(this.key("type").objid(),this.key("value").any())})),i=r.define("AlgorithmIdentifier",(function(){this.seq().obj(this.key("algorithm").objid(),this.key("parameters").optional(),this.key("curve").objid().optional())})),c=r.define("SubjectPublicKeyInfo",(function(){this.seq().obj(this.key("algorithm").use(i),this.key("subjectPublicKey").bitstr())})),s=r.define("RelativeDistinguishedName",(function(){this.setof(o)})),l=r.define("RDNSequence",(function(){this.seqof(s)})),g=r.define("Name",(function(){this.choice({rdnSequence:this.use(l)})})),I=r.define("Validity",(function(){this.seq().obj(this.key("notBefore").use(a),this.key("notAfter").use(a))})),B=r.define("Extension",(function(){this.seq().obj(this.key("extnID").objid(),this.key("critical").bool().def(!1),this.key("extnValue").octstr())})),A=r.define("TBSCertificate",(function(){this.seq().obj(this.key("version").explicit(0).int().optional(),this.key("serialNumber").int(),this.key("signature").use(i),this.key("issuer").use(g),this.key("validity").use(I),this.key("subject").use(g),this.key("subjectPublicKeyInfo").use(c),this.key("issuerUniqueID").implicit(1).bitstr().optional(),this.key("subjectUniqueID").implicit(2).bitstr().optional(),this.key("extensions").explicit(3).seqof(B).optional())})),u=r.define("X509Certificate",(function(){this.seq().obj(this.key("tbsCertificate").use(A),this.key("signatureAlgorithm").use(i),this.key("signatureValue").bitstr())}));e.exports=u},function(e){e.exports=JSON.parse('{"2.16.840.1.101.3.4.1.1":"aes-128-ecb","2.16.840.1.101.3.4.1.2":"aes-128-cbc","2.16.840.1.101.3.4.1.3":"aes-128-ofb","2.16.840.1.101.3.4.1.4":"aes-128-cfb","2.16.840.1.101.3.4.1.21":"aes-192-ecb","2.16.840.1.101.3.4.1.22":"aes-192-cbc","2.16.840.1.101.3.4.1.23":"aes-192-ofb","2.16.840.1.101.3.4.1.24":"aes-192-cfb","2.16.840.1.101.3.4.1.41":"aes-256-ecb","2.16.840.1.101.3.4.1.42":"aes-256-cbc","2.16.840.1.101.3.4.1.43":"aes-256-ofb","2.16.840.1.101.3.4.1.44":"aes-256-cfb"}')},function(e,t,n){var r=/Proc-Type: 4,ENCRYPTED[\n\r]+DEK-Info: AES-((?:128)|(?:192)|(?:256))-CBC,([0-9A-H]+)[\n\r]+([0-9A-z\n\r\+\/\=]+)[\n\r]+/m,a=/^-----BEGIN ((?:.*? KEY)|CERTIFICATE)-----/m,o=/^-----BEGIN ((?:.*? KEY)|CERTIFICATE)-----([0-9A-z\n\r\+\/\=]+)-----END \1-----$/m,i=n(23),c=n(35),s=n(2).Buffer;e.exports=function(e,t){var n,l=e.toString(),g=l.match(r);if(g){var I="aes"+g[1],B=s.from(g[2],"hex"),A=s.from(g[3].replace(/[\r\n]/g,""),"base64"),u=i(t,B.slice(0,8),parseInt(g[1],10)).key,d=[],_=c.createDecipheriv(I,u,B);d.push(_.update(A)),d.push(_.final()),n=s.concat(d)}else{var C=l.match(o);n=new s(C[2].replace(/[\r\n]/g,""),"base64")}return{tag:l.match(a)[1],data:n}}},function(e,t,n){(function(t){var r=n(4),a=n(39).ec,o=n(25),i=n(79);function c(e,t){if(e.cmpn(0)<=0)throw new Error("invalid sig");if(e.cmp(t)>=t)throw new Error("invalid sig")}e.exports=function(e,n,s,l,g){var I=o(s);if("ec"===I.type){if("ecdsa"!==l&&"ecdsa/rsa"!==l)throw new Error("wrong public key type");return function(e,t,n){var r=i[n.data.algorithm.curve.join(".")];if(!r)throw new Error("unknown curve "+n.data.algorithm.curve.join("."));var o=new a(r),c=n.data.subjectPrivateKey.data;return o.verify(t,e,c)}(e,n,I)}if("dsa"===I.type){if("dsa"!==l)throw new Error("wrong public key type");return function(e,t,n){var a=n.data.p,i=n.data.q,s=n.data.g,l=n.data.pub_key,g=o.signature.decode(e,"der"),I=g.s,B=g.r;c(I,i),c(B,i);var A=r.mont(a),u=I.invm(i);return 0===s.toRed(A).redPow(new r(t).mul(u).mod(i)).fromRed().mul(l.toRed(A).redPow(B.mul(u).mod(i)).fromRed()).mod(a).mod(i).cmp(B)}(e,n,I)}if("rsa"!==l&&"ecdsa/rsa"!==l)throw new Error("wrong public key type");n=t.concat([g,n]);for(var B=I.modulus.byteLength(),A=[1],u=0;n.length+A.length+2<B;)A.push(255),u++;A.push(0);for(var d=-1;++d<n.length;)A.push(n[d]);A=new t(A);var _=r.mont(I.modulus);e=(e=new r(e).toRed(_)).redPow(new r(I.publicExponent)),e=new t(e.fromRed().toArray());var C=u<8?1:0;for(B=Math.min(e.length,A.length),e.length!==A.length&&(C=1),d=-1;++d<B;)C|=e[d]^A[d];return 0===C}}).call(this,n(3).Buffer)},function(e,t,n){(function(t){var r=n(39),a=n(4);e.exports=function(e){return new i(e)};var o={secp256k1:{name:"secp256k1",byteLength:32},secp224r1:{name:"p224",byteLength:28},prime256v1:{name:"p256",byteLength:32},prime192v1:{name:"p192",byteLength:24},ed25519:{name:"ed25519",byteLength:32},secp384r1:{name:"p384",byteLength:48},secp521r1:{name:"p521",byteLength:66}};function i(e){this.curveType=o[e],this.curveType||(this.curveType={name:e}),this.curve=new r.ec(this.curveType.name),this.keys=void 0}function c(e,n,r){Array.isArray(e)||(e=e.toArray());var a=new t(e);if(r&&a.length<r){var o=new t(r-a.length);o.fill(0),a=t.concat([o,a])}return n?a.toString(n):a}o.p224=o.secp224r1,o.p256=o.secp256r1=o.prime256v1,o.p192=o.secp192r1=o.prime192v1,o.p384=o.secp384r1,o.p521=o.secp521r1,i.prototype.generateKeys=function(e,t){return this.keys=this.curve.genKeyPair(),this.getPublicKey(e,t)},i.prototype.computeSecret=function(e,n,r){return n=n||"utf8",t.isBuffer(e)||(e=new t(e,n)),c(this.curve.keyFromPublic(e).getPublic().mul(this.keys.getPrivate()).getX(),r,this.curveType.byteLength)},i.prototype.getPublicKey=function(e,t){var n=this.keys.getPublic("compressed"===t,!0);return"hybrid"===t&&(n[n.length-1]%2?n[0]=7:n[0]=6),c(n,e)},i.prototype.getPrivateKey=function(e){return c(this.keys.getPrivate(),e)},i.prototype.setPublicKey=function(e,n){return n=n||"utf8",t.isBuffer(e)||(e=new t(e,n)),this.keys._importPublic(e),this},i.prototype.setPrivateKey=function(e,n){n=n||"utf8",t.isBuffer(e)||(e=new t(e,n));var r=new a(e);return r=r.toString(16),this.keys=this.curve.genKeyPair(),this.keys._importPrivate(r),this}}).call(this,n(3).Buffer)},function(e,t,n){t.publicEncrypt=n(163),t.privateDecrypt=n(164),t.privateEncrypt=function(e,n){return t.publicEncrypt(e,n,!0)},t.publicDecrypt=function(e,n){return t.privateDecrypt(e,n,!0)}},function(e,t,n){var r=n(25),a=n(13),o=n(15),i=n(80),c=n(81),s=n(4),l=n(82),g=n(38),I=n(2).Buffer;e.exports=function(e,t,n){var B;B=e.padding?e.padding:n?1:4;var A,u=r(e);if(4===B)A=function(e,t){var n=e.modulus.byteLength(),r=t.length,l=o("sha1").update(I.alloc(0)).digest(),g=l.length,B=2*g;if(r>n-B-2)throw new Error("message too long");var A=I.alloc(n-r-B-2),u=n-g-1,d=a(g),_=c(I.concat([l,A,I.alloc(1,1),t],u),i(d,u)),C=c(d,i(_,g));return new s(I.concat([I.alloc(1),C,_],n))}(u,t);else if(1===B)A=function(e,t,n){var r,o=t.length,i=e.modulus.byteLength();if(o>i-11)throw new Error("message too long");return r=n?I.alloc(i-o-3,255):function(e){for(var t,n=I.allocUnsafe(e),r=0,o=a(2*e),i=0;r<e;)i===o.length&&(o=a(2*e),i=0),(t=o[i++])&&(n[r++]=t);return n}(i-o-3),new s(I.concat([I.from([0,n?1:2]),r,I.alloc(1),t],i))}(u,t,n);else{if(3!==B)throw new Error("unknown padding");if((A=new s(t)).cmp(u.modulus)>=0)throw new Error("data too long for modulus")}return n?g(A,u):l(A,u)}},function(e,t,n){var r=n(25),a=n(80),o=n(81),i=n(4),c=n(38),s=n(15),l=n(82),g=n(2).Buffer;e.exports=function(e,t,n){var I;I=e.padding?e.padding:n?1:4;var B,A=r(e),u=A.modulus.byteLength();if(t.length>u||new i(t).cmp(A.modulus)>=0)throw new Error("decryption error");B=n?l(new i(t),A):c(t,A);var d=g.alloc(u-B.length);if(B=g.concat([d,B],u),4===I)return function(e,t){var n=e.modulus.byteLength(),r=s("sha1").update(g.alloc(0)).digest(),i=r.length;if(0!==t[0])throw new Error("decryption error");var c=t.slice(1,i+1),l=t.slice(i+1),I=o(c,a(l,i)),B=o(l,a(I,n-i-1));if(function(e,t){e=g.from(e),t=g.from(t);var n=0,r=e.length;e.length!==t.length&&(n++,r=Math.min(e.length,t.length));for(var a=-1;++a<r;)n+=e[a]^t[a];return n}(r,B.slice(0,i)))throw new Error("decryption error");for(var A=i;0===B[A];)A++;if(1!==B[A++])throw new Error("decryption error");return B.slice(A)}(A,B);if(1===I)return function(e,t,n){for(var r=t.slice(0,2),a=2,o=0;0!==t[a++];)if(a>=t.length){o++;break}var i=t.slice(2,a-1);if(("0002"!==r.toString("hex")&&!n||"0001"!==r.toString("hex")&&n)&&o++,i.length<8&&o++,o)throw new Error("decryption error");return t.slice(a)}(0,B,n);if(3===I)return B;throw new Error("unknown padding")}},function(e,t,n){"use strict";(function(e,r){function a(){throw new Error("secure random number generation not supported by this browser\nuse chrome, FireFox or Internet Explorer 11")}var o=n(2),i=n(13),c=o.Buffer,s=o.kMaxLength,l=e.crypto||e.msCrypto,g=Math.pow(2,32)-1;function I(e,t){if("number"!=typeof e||e!=e)throw new TypeError("offset must be a number");if(e>g||e<0)throw new TypeError("offset must be a uint32");if(e>s||e>t)throw new RangeError("offset out of range")}function B(e,t,n){if("number"!=typeof e||e!=e)throw new TypeError("size must be a number");if(e>g||e<0)throw new TypeError("size must be a uint32");if(e+t>n||e>s)throw new RangeError("buffer too small")}function A(e,t,n,a){if(r.browser){var o=e.buffer,c=new Uint8Array(o,t,n);return l.getRandomValues(c),a?void r.nextTick((function(){a(null,e)})):e}if(!a)return i(n).copy(e,t),e;i(n,(function(n,r){if(n)return a(n);r.copy(e,t),a(null,e)}))}l&&l.getRandomValues||!r.browser?(t.randomFill=function(t,n,r,a){if(!(c.isBuffer(t)||t instanceof e.Uint8Array))throw new TypeError('"buf" argument must be a Buffer or Uint8Array');if("function"==typeof n)a=n,n=0,r=t.length;else if("function"==typeof r)a=r,r=t.length-n;else if("function"!=typeof a)throw new TypeError('"cb" argument must be a function');return I(n,t.length),B(r,n,t.length),A(t,n,r,a)},t.randomFillSync=function(t,n,r){if(void 0===n&&(n=0),!(c.isBuffer(t)||t instanceof e.Uint8Array))throw new TypeError('"buf" argument must be a Buffer or Uint8Array');return I(n,t.length),void 0===r&&(r=t.length-n),B(r,n,t.length),A(t,n,r)}):(t.randomFill=a,t.randomFillSync=a)}).call(this,n(8),n(9))},function(e,t){e.exports=a,a.strict=o,a.loose=i;var n=Object.prototype.toString,r={"[object Int8Array]":!0,"[object Int16Array]":!0,"[object Int32Array]":!0,"[object Uint8Array]":!0,"[object Uint8ClampedArray]":!0,"[object Uint16Array]":!0,"[object Uint32Array]":!0,"[object Float32Array]":!0,"[object Float64Array]":!0};function a(e){return o(e)||i(e)}function o(e){return e instanceof Int8Array||e instanceof Int16Array||e instanceof Int32Array||e instanceof Uint8Array||e instanceof Uint8ClampedArray||e instanceof Uint16Array||e instanceof Uint32Array||e instanceof Float32Array||e instanceof Float64Array}function i(e){return r[n.call(e)]}},function(e,t,n){"use strict";n.r(t),n.d(t,"SNWebCrypto",(function(){return J})),n.d(t,"isWebCryptoAvailable",(function(){return u})),n.d(t,"Buffer",(function(){return g.Buffer})),n.d(t,"stringToArrayBuffer",(function(){return C})),n.d(t,"arrayBufferToString",(function(){return p})),n.d(t,"arrayBufferToHexString",(function(){return h})),n.d(t,"hexStringToArrayBuffer",(function(){return m})),n.d(t,"base64ToArrayBuffer",(function(){return U})),n.d(t,"arrayBufferToBase64",(function(){return G})),n.d(t,"hexToBase64",(function(){return v})),n.d(t,"base64ToHex",(function(){return X})),n.d(t,"base64Encode",(function(){return R})),n.d(t,"base64Decode",(function(){return O})),n.d(t,"toBuffer",(function(){return T}));var r={};n.r(r),n.d(r,"ready",(function(){return c.ready})),n.d(r,"crypto_pwhash",(function(){return c.crypto_pwhash})),n.d(r,"crypto_pwhash_ALG_DEFAULT",(function(){return c.crypto_pwhash_ALG_DEFAULT})),n.d(r,"crypto_aead_xchacha20poly1305_ietf_encrypt",(function(){return c.crypto_aead_xchacha20poly1305_ietf_encrypt})),n.d(r,"crypto_aead_xchacha20poly1305_ietf_decrypt",(function(){return c.crypto_aead_xchacha20poly1305_ietf_decrypt})),n.d(r,"to_base64",(function(){return c.to_base64})),n.d(r,"from_base64",(function(){return c.from_base64})),n.d(r,"base64_variants",(function(){return c.base64_variants})),n.d(r,"from_hex",(function(){return c.from_hex})),n.d(r,"to_hex",(function(){return c.to_hex})),n.d(r,"from_string",(function(){return c.from_string})),n.d(r,"to_string",(function(){return c.to_string}));var a,o=n(0),i=n.n(o),c=n(5),s=n(83),l=n.n(s),g=n(3);function I(e,t,n,r,a,o,i){try{var c=e[o](i),s=c.value}catch(e){return void n(e)}c.done?t(s):Promise.resolve(s).then(r,a)}function B(e){return function(){var t=this,n=arguments;return new Promise((function(r,a){var o=e.apply(t,n);function i(e){I(o,r,a,i,c,"next",e)}function c(e){I(o,r,a,i,c,"throw",e)}i(void 0)}))}}function A(){return window}function u(){return!("undefined"!=typeof document&&document.documentMode||/Edge/.test(navigator.userAgent))&&A().crypto&&!!A().crypto.subtle}function d(){var e=A(),t=e.crypto||e.msCrypto;if(t){var n=new Uint32Array(4);t.getRandomValues(n);var r=-1;return"xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx".replace(/[xy]/g,(function(e){r++;var t=n[r>>3]>>r%8*4&15;return("x"===e?t:3&t|8).toString(16)}))}var a=(new Date).getTime();return e.performance&&"function"==typeof e.performance.now&&(a+=performance.now()),"xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx".replace(/[xy]/g,(function(e){var t=(a+16*Math.random())%16|0;return a=Math.floor(a/16),("x"===e?t:3&t|8).toString(16)}))}function _(e){return"string"==typeof e||e instanceof String}function C(e){return b.apply(this,arguments)}function b(){return(b=B(i.a.mark((function e(t){return i.a.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:if(_(t)){e.next=2;break}throw Error("Attempting to convert non-string to arrayBuffer");case 2:return e.next=4,c.ready;case 4:return e.abrupt("return",Object(c.from_string)(t));case 5:case"end":return e.stop()}}),e)})))).apply(this,arguments)}function p(e){return Q.apply(this,arguments)}function Q(){return(Q=B(i.a.mark((function e(t){return i.a.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return e.next=2,c.ready;case 2:return e.abrupt("return",Object(c.to_string)(t));case 3:case"end":return e.stop()}}),e)})))).apply(this,arguments)}function h(e){return y.apply(this,arguments)}function y(){return(y=B(i.a.mark((function e(t){return i.a.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return e.next=2,c.ready;case 2:return e.abrupt("return",Object(c.to_hex)(g.Buffer.from(t)));case 3:case"end":return e.stop()}}),e)})))).apply(this,arguments)}function m(e){return F.apply(this,arguments)}function F(){return(F=B(i.a.mark((function e(t){return i.a.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return e.next=2,c.ready;case 2:return e.abrupt("return",Object(c.from_hex)(t));case 3:case"end":return e.stop()}}),e)})))).apply(this,arguments)}function U(e){return f.apply(this,arguments)}function f(){return(f=B(i.a.mark((function e(t){return i.a.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return e.next=2,c.ready;case 2:return e.abrupt("return",Object(c.from_base64)(t,c.base64_variants.ORIGINAL));case 3:case"end":return e.stop()}}),e)})))).apply(this,arguments)}function G(e){return E.apply(this,arguments)}function E(){return(E=B(i.a.mark((function e(t){return i.a.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return e.next=2,c.ready;case 2:return e.abrupt("return",Object(c.to_base64)(g.Buffer.from(t),c.base64_variants.ORIGINAL));case 3:case"end":return e.stop()}}),e)})))).apply(this,arguments)}function v(e){return Z.apply(this,arguments)}function Z(){return(Z=B(i.a.mark((function e(t){return i.a.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return e.next=2,c.ready;case 2:return e.abrupt("return",Object(c.to_base64)(Object(c.from_hex)(t),c.base64_variants.ORIGINAL));case 3:case"end":return e.stop()}}),e)})))).apply(this,arguments)}function X(e){return W.apply(this,arguments)}function W(){return(W=B(i.a.mark((function e(t){return i.a.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return e.next=2,c.ready;case 2:return e.abrupt("return",Object(c.to_hex)(Object(c.from_base64)(t,c.base64_variants.ORIGINAL)));case 3:case"end":return e.stop()}}),e)})))).apply(this,arguments)}function R(e){return V.apply(this,arguments)}function V(){return(V=B(i.a.mark((function e(t){return i.a.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return e.next=2,c.ready;case 2:return e.abrupt("return",Object(c.to_base64)(t,c.base64_variants.ORIGINAL));case 3:case"end":return e.stop()}}),e)})))).apply(this,arguments)}function O(e){return x.apply(this,arguments)}function x(){return(x=B(i.a.mark((function e(t){return i.a.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return e.next=2,c.ready;case 2:return e.abrupt("return",Object(c.to_string)(Object(c.from_base64)(t,c.base64_variants.ORIGINAL)));case 3:case"end":return e.stop()}}),e)})))).apply(this,arguments)}function T(e){return N.apply(this,arguments)}function N(){return(N=B(i.a.mark((function e(t){var n,r=arguments;return i.a.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:if(n=r.length>1&&void 0!==r[1]?r[1]:a.Binary,!g.Buffer.isBuffer(t)){e.next=5;break}return e.abrupt("return",t);case 5:if(null!==t){e.next=9;break}return e.abrupt("return",null);case 9:if("string"!=typeof t){e.next=13;break}return e.abrupt("return",g.Buffer.from(t,n));case 13:if(!(t instanceof Uint8Array)){e.next=17;break}return e.abrupt("return",l()(t));case 17:throw new TypeError("Invalid type; string or buffer expected");case 18:case"end":return e.stop()}}),e)})))).apply(this,arguments)}function w(e,t,n,r,a,o,i){try{var c=e[o](i),s=c.value}catch(e){return void n(e)}c.done?t(s):Promise.resolve(s).then(r,a)}function k(e){return function(){var t=this,n=arguments;return new Promise((function(r,a){var o=e.apply(t,n);function i(e){w(o,r,a,i,c,"next",e)}function c(e){w(o,r,a,i,c,"throw",e)}i(void 0)}))}}function Y(e,t){for(var n=0;n<t.length;n++){var r=t[n];r.enumerable=r.enumerable||!1,r.configurable=!0,"value"in r&&(r.writable=!0),Object.defineProperty(e,r.key,r)}}!function(e){e.Utf8="utf8",e.Base64="base64",e.Hex="hex",e.Binary="binary"}(a||(a={}));var S,H,D=A().crypto?A().crypto.subtle:null;!function(e){e.AesCbc="AES-CBC",e.Sha512="SHA-512",e.Sha256="SHA-256",e.Pbkdf2="PBKDF2",e.Sha1="SHA-1",e.Hmac="HMAC"}(S||(S={})),function(e){e.DeriveBits="deriveBits",e.Encrypt="encrypt",e.Decrypt="decrypt",e.Sign="sign"}(H||(H={}));var J=function(){function e(){!function(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}(this,e),this.ready=c.ready}var t,n,o,s,l,g,I,B,u,_,b,Q,y,F,f,E,v;return t=e,(n=[{key:"deinit",value:function(){this.ready=null}},{key:"generateUUIDSync",value:function(){return d()}},{key:"generateUUID",value:(v=k(i.a.mark((function e(){return i.a.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return e.abrupt("return",d());case 1:case"end":return e.stop()}}),e)}))),function(){return v.apply(this,arguments)})},{key:"timingSafeEqual",value:function(e,t){return function(e,t){var n=String(e),r=String(t),a=n.length,o=0;a!==r.length&&(r=n,o=1);for(var i=0;i<a;i++)o|=n.charCodeAt(i)^r.charCodeAt(i);return 0===o}(e,t)}},{key:"base64Encode",value:(E=k(i.a.mark((function e(t){return i.a.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return e.abrupt("return",R(t));case 1:case"end":return e.stop()}}),e)}))),function(e){return E.apply(this,arguments)})},{key:"base64Decode",value:(f=k(i.a.mark((function e(t){return i.a.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return e.abrupt("return",O(t));case 1:case"end":return e.stop()}}),e)}))),function(e){return f.apply(this,arguments)})},{key:"pbkdf2",value:(F=k(i.a.mark((function e(t,n,r,a){var o,c;return i.a.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return e.next=2,C(t);case 2:return o=e.sent,e.next=5,this.webCryptoImportKey(o,S.Pbkdf2,[H.DeriveBits]);case 5:if(c=e.sent){e.next=9;break}return console.error("Key is null, unable to continue"),e.abrupt("return",null);case 9:return e.abrupt("return",this.webCryptoDeriveBits(c,n,r,a));case 10:case"end":return e.stop()}}),e,this)}))),function(e,t,n,r){return F.apply(this,arguments)})},{key:"generateRandomKey",value:(y=k(i.a.mark((function e(t){var n,r;return i.a.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return n=t/8,r=A().crypto.getRandomValues(new Uint8Array(n)),e.abrupt("return",h(r));case 3:case"end":return e.stop()}}),e)}))),function(e){return y.apply(this,arguments)})},{key:"aes256CbcEncrypt",value:(Q=k(i.a.mark((function e(t,n,r){var a,o,c,s,l,g,I;return i.a.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return e.next=2,m(r);case 2:return a=e.sent,e.next=5,m(n);case 5:return o=e.sent,c={name:S.AesCbc,iv:o},e.next=9,this.webCryptoImportKey(a,c.name,[H.Encrypt]);case 9:return s=e.sent,e.next=12,C(t);case 12:return l=e.sent,e.next=15,crypto.subtle.encrypt(c,s,l);case 15:return g=e.sent,e.next=18,G(g);case 18:return I=e.sent,e.abrupt("return",I);case 20:case"end":return e.stop()}}),e,this)}))),function(e,t,n){return Q.apply(this,arguments)})},{key:"aes256CbcDecrypt",value:(b=k(i.a.mark((function e(t,n,r){var a,o,c,s,l;return i.a.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return e.next=2,m(r);case 2:return a=e.sent,e.next=5,m(n);case 5:return o=e.sent,c={name:S.AesCbc,iv:o},e.next=9,this.webCryptoImportKey(a,c.name,[H.Decrypt]);case 9:return s=e.sent,e.next=12,U(t);case 12:return l=e.sent,e.abrupt("return",crypto.subtle.decrypt(c,s,l).then(function(){var e=k(i.a.mark((function e(t){return i.a.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return e.abrupt("return",p(t));case 1:case"end":return e.stop()}}),e)})));return function(t){return e.apply(this,arguments)}}(),(function(e){return null})));case 14:case"end":return e.stop()}}),e,this)}))),function(e,t,n){return b.apply(this,arguments)})},{key:"hmac256",value:(_=k(i.a.mark((function e(t,n){var r,a,o,c;return i.a.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return e.next=2,m(n);case 2:return r=e.sent,e.next=5,this.webCryptoImportKey(r,S.Hmac,[H.Sign],{name:S.Sha256});case 5:return a=e.sent,e.next=8,C(t);case 8:return o=e.sent,c={name:S.Hmac},e.abrupt("return",crypto.subtle.sign(c,a,o).then((function(e){return h(e)}),(function(e){return console.error("Error computing HMAC:",e),null})));case 11:case"end":return e.stop()}}),e,this)}))),function(e,t){return _.apply(this,arguments)})},{key:"sha256",value:(u=k(i.a.mark((function e(t){var n,r;return i.a.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return e.next=2,C(t);case 2:return n=e.sent,e.next=5,crypto.subtle.digest(S.Sha256,n);case 5:return r=e.sent,e.abrupt("return",h(r));case 7:case"end":return e.stop()}}),e)}))),function(e){return u.apply(this,arguments)})},{key:"unsafeSha1",value:(B=k(i.a.mark((function e(t){var n,r;return i.a.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return e.next=2,C(t);case 2:return n=e.sent,e.next=5,crypto.subtle.digest(S.Sha1,n);case 5:return r=e.sent,e.abrupt("return",h(r));case 7:case"end":return e.stop()}}),e)}))),function(e){return B.apply(this,arguments)})},{key:"webCryptoImportKey",value:(I=k(i.a.mark((function e(t,n,r,a){return i.a.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return e.abrupt("return",D.importKey("raw",t,{name:n,hash:a},!1,r).then((function(e){return e}),(function(e){return null})));case 1:case"end":return e.stop()}}),e)}))),function(e,t,n,r){return I.apply(this,arguments)})},{key:"webCryptoDeriveBits",value:(g=k(i.a.mark((function e(t,n,r,a){var o;return i.a.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return e.t0=S.Pbkdf2,e.next=3,C(n);case 3:return e.t1=e.sent,e.t2=r,e.t3={name:S.Sha512},o={name:e.t0,salt:e.t1,iterations:e.t2,hash:e.t3},e.abrupt("return",D.deriveBits(o,t,a).then((function(e){return h(new Uint8Array(e))})));case 8:case"end":return e.stop()}}),e)}))),function(e,t,n,r){return g.apply(this,arguments)})},{key:"argon2",value:(l=k(i.a.mark((function e(t,n,o,s,l){var g;return i.a.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return e.next=2,this.ready;case 2:return e.t0=r,e.t1=l,e.next=6,T(t,a.Binary);case 6:return e.t2=e.sent,e.next=9,T(n,a.Hex);case 9:return e.t3=e.sent,e.t4=o,e.t5=s,e.t6=c.crypto_pwhash_ALG_DEFAULT,g=e.t0.crypto_pwhash.call(e.t0,e.t1,e.t2,e.t3,e.t4,e.t5,e.t6,"hex"),e.abrupt("return",g);case 15:case"end":return e.stop()}}),e,this)}))),function(e,t,n,r,a){return l.apply(this,arguments)})},{key:"xchacha20Encrypt",value:(s=k(i.a.mark((function e(t,n,o,c){return i.a.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return e.next=2,this.ready;case 2:if(48===n.length){e.next=4;break}throw"Nonce must be 24 bytes";case 4:return e.t0=r,e.next=7,T(t);case 7:return e.t1=e.sent,e.next=10,T(c);case 10:return e.t2=e.sent,e.next=13,T(n,a.Hex);case 13:return e.t3=e.sent,e.next=16,T(o,a.Hex);case 16:return e.t4=e.sent,e.abrupt("return",e.t0.crypto_aead_xchacha20poly1305_ietf_encrypt.call(e.t0,e.t1,e.t2,null,e.t3,e.t4,"base64"));case 18:case"end":return e.stop()}}),e,this)}))),function(e,t,n,r){return s.apply(this,arguments)})},{key:"xchacha20Decrypt",value:(o=k(i.a.mark((function e(t,n,o,c){return i.a.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return e.next=2,this.ready;case 2:if(48===n.length){e.next=4;break}throw"Nonce must be 24 bytes";case 4:return e.prev=4,e.t0=r,e.next=8,T(t,a.Base64);case 8:return e.t1=e.sent,e.next=11,T(c);case 11:return e.t2=e.sent,e.next=14,T(n,a.Hex);case 14:return e.t3=e.sent,e.next=17,T(o,a.Hex);case 17:return e.t4=e.sent,e.abrupt("return",e.t0.crypto_aead_xchacha20poly1305_ietf_decrypt.call(e.t0,null,e.t1,e.t2,e.t3,e.t4,"text"));case 21:return e.prev=21,e.t5=e.catch(4),e.abrupt("return",null);case 24:case"end":return e.stop()}}),e,this,[[4,21]])}))),function(e,t,n,r){return o.apply(this,arguments)})}])&&Y(t.prototype,n),e}()}])},module.exports=e()},function(e,t,n){var r=n(91)(n(105));e.exports=r},function(e,t,n){var r=n(112);e.exports=(r.default||r).apply(r,[])},function(e,t,n){var r=n(114);e.exports=(r.default||r).apply(r,[])},function(e,t,n){var r=n(115);e.exports=(r.default||r).apply(r,[])},function(e,t,n){var r=n(116)(n(187));e.exports=r},function(e,t,n){var r=n(191);e.exports=(r.default||r).apply(r,[])},function(e,t,n){var r=n(192);e.exports=(r.default||r).apply(r,[])},function(e,t,n){var r=n(193);e.exports=(r.default||r).apply(r,[])},function(e,t,n){var r=n(194);e.exports=(r.default||r).apply(r,[])},function(e,t,n){var r=n(195);e.exports=(r.default||r).apply(r,[])},function(e,t,n){var r=n(196);e.exports=(r.default||r).apply(r,[])},function(e,t,n){var r=n(197);e.exports=(r.default||r).apply(r,[])},function(e,t,n){var r=n(198);e.exports=(r.default||r).apply(r,[])},function(e,t,n){var r=n(199);e.exports=(r.default||r).apply(r,[])},function(e,t,n){var r=n(200);e.exports=(r.default||r).apply(r,[])},function(e,t,n){var r=n(201);e.exports=(r.default||r).apply(r,[])},function(e,t,n){var r=n(202);e.exports=(r.default||r).apply(r,[])},function(e,t,n){var r=n(203);e.exports=(r.default||r).apply(r,[])},function(e,t,n){var r=n(204);e.exports=(r.default||r).apply(r,[])},function(e,t,n){var r=n(205);e.exports=(r.default||r).apply(r,[])},function(e,t,n){var r=n(206);e.exports=(r.default||r).apply(r,[])},function(e,t,n){var r=n(207);e.exports=(r.default||r).apply(r,[])},function(e,t,n){var r=n(208);e.exports=(r.default||r).apply(r,[])},function(e,t,n){var r=n(209);e.exports=(r.default||r).apply(r,[])},function(e,t,n){var r=n(210);e.exports=(r.default||r).apply(r,[])},function(e,t,n){"use strict";n.d(t,"a",(function(){return c}));var r=n(0);function a(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}class o{constructor(e,t,n){a(this,"note",void 0),a(this,"application",void 0),a(this,"_onNoteChange",void 0),a(this,"_onNoteValueChange",void 0),a(this,"removeStreamObserver",void 0),a(this,"isTemplateNote",!1),this.application=e,t?this.note=e.findItem(t):this.reset(n),this.removeStreamObserver=this.application.streamItems(r.ContentType.Note,async(e,t)=>{await this.handleNoteStream(e,t)})}deinit(){this.removeStreamObserver(),this.removeStreamObserver=void 0,this._onNoteChange=void 0,this.application=void 0,this._onNoteChange=void 0,this._onNoteValueChange=void 0}async handleNoteStream(e,t){const n=e.find(e=>e.uuid===this.note.uuid);n&&(this.isTemplateNote=!1,this.note=n,this._onNoteValueChange&&this._onNoteValueChange(n,t))}async insertTemplatedNote(){return this.application.insertItem(this.note)}async reset(e){const t=await this.application.createTemplateItem(r.ContentType.Note,{text:"",title:e||"",references:[]});this.isTemplateNote=!0,this.setNote(t)}onNoteChange(e){this._onNoteChange=e,this.note&&e()}clearNoteChangeListener(){this._onNoteChange=void 0}onNoteValueChange(e){this._onNoteValueChange=e}setNote(e){this.note=e,this._onNoteChange&&this._onNoteChange()}}function i(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}class c{constructor(e){i(this,"editors",[]),i(this,"application",void 0),i(this,"changeObservers",[]),this.application=e}deinit(){this.application=void 0;for(const e of this.editors)this.deleteEditor(e)}createEditor(e,t){const n=new o(this.application,e,t);this.editors.push(n),this.notifyObservers()}deleteEditor(e){e.deinit(),Object(r.removeFromArray)(this.editors,e)}closeEditor(e){this.deleteEditor(e),this.notifyObservers()}closeActiveEditor(){const e=this.activeEditor;e&&this.deleteEditor(e)}closeAllEditors(){for(const e of this.editors)this.deleteEditor(e)}get activeEditor(){return this.editors[0]}addChangeObserver(e){return this.changeObservers.push(e),this.activeEditor&&e(),()=>{Object(r.removeFromArray)(this.changeObservers,e)}}notifyObservers(){for(const e of this.changeObservers)e()}}},function(e,t,n){"use strict";n.d(t,"a",(function(){return i}));var r=n(0);function a(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}class o{constructor(){a(this,"locked",!0),a(this,"alertService",void 0),a(this,"db",void 0)}deinit(){this.alertService=void 0,this.db=void 0}setAlertService(e){this.alertService=e}unlock(){this.locked=!1}async openDatabase(e){if(this.locked)throw Error("Attempting to open locked database");if(this.db)return this.db;const t=window.indexedDB.open("standardnotes",1);return new Promise((n,r)=>{t.onerror=e=>{const t=e.target;t.errorCode?this.showAlert("Offline database issue: "+t.errorCode):this.displayOfflineAlert(),r(new Error("Unable to open db"))},t.onblocked=e=>{r(Error("IndexedDB open request blocked"))},t.onsuccess=e=>{const t=e.target.result;t.onversionchange=()=>{t.close()},t.onerror=e=>{const t=null==e?void 0:e.target;throw Error("Database error: "+t.errorCode)},this.db=t,n(t)},t.onupgradeneeded=t=>{const n=t.target.result;n.onversionchange=()=>{n.close()};const r=n.createObjectStore("items",{keyPath:"uuid"});r.createIndex("uuid","uuid",{unique:!0}),r.transaction.oncomplete=()=>{1===n.version&&e&&e&&e()}}})}async getAllPayloads(){const e=await this.openDatabase();return new Promise(t=>{const n=e.transaction("items").objectStore("items"),r=[];n.openCursor().onsuccess=e=>{const n=e.target.result;n?(r.push(n.value),n.continue()):t(r)}})}async savePayload(e){return this.savePayloads([e])}async savePayloads(e){if(0===e.length)return;const t=(await this.openDatabase()).transaction("items","readwrite");return new Promise((n,r)=>{t.oncomplete=()=>{},t.onerror=e=>{const t=e.target;this.showGenericError(t.error)},t.onabort=e=>{const t=e.target.error;"QuotaExceededError"===t.name?this.showAlert("Unable to save changes locally because your device is out of space. Please free up some disk space and try again, otherwise, your data may end up in an inconsistent state."):this.showGenericError(t),r(t)};const a=t.objectStore("items");this.putItems(a,e).then(n)})}async putItems(e,t){await Promise.all(t.map(t=>new Promise(n=>{const r=e.put(t);r.onerror=n,r.onsuccess=n})))}async deletePayload(e){const t=await this.openDatabase();return new Promise((n,r)=>{const a=t.transaction("items","readwrite").objectStore("items").delete(e);a.onsuccess=()=>{n()},a.onerror=r})}async clearAllPayloads(){const e=window.indexedDB.deleteDatabase("standardnotes");return new Promise((t,n)=>{e.onerror=()=>{n(Error("Error deleting database."))},e.onsuccess=()=>{this.db=void 0,t()},e.onblocked=e=>{this.showAlert("Your browser is blocking Standard Notes from deleting the local database. Make sure there are no other open windows of this app and try again. If the issue persists, please manually delete app data to sign out."),n(Error("Delete request blocked"))}})}showAlert(e){this.alertService.alert(e)}showGenericError(e){const t="Unable to save changes locally due to an unknown system issue. "+`Issue Code: ${e.code} Issue Name: ${e.name}.`;this.showAlert(t)}displayOfflineAlert(){this.alertService.alert("There was an issue loading your offline database. This could happen for two reasons:\n\n1. You're in a private window in your browser. We can't save your data without access to the local database. Please use a non-private window.\n\n2. You have two windows of the app open at the same time. Please close any other app instances and reload the page.")}}class i extends r.DeviceInterface{constructor(e,t){var n,a,i;super(e,t||setTimeout.bind(Object(r.getGlobalScope)()),setInterval.bind(Object(r.getGlobalScope)())),i=void 0,(a="database")in(n=this)?Object.defineProperty(n,a,{value:i,enumerable:!0,configurable:!0,writable:!0}):n[a]=i,this.database=new o}setApplication(e){this.database.setAlertService(e.alertService)}deinit(){super.deinit(),this.database.deinit()}async getRawStorageValue(e){return localStorage.getItem(e)}async getAllRawStorageKeyValues(){const e=[];for(const t of Object.keys(localStorage))e.push({key:t,value:localStorage[t]});return e}async setRawStorageValue(e,t){localStorage.setItem(e,t)}async removeRawStorageValue(e){localStorage.removeItem(e)}async removeAllRawStorageValues(){localStorage.clear()}async openDatabase(){return this.database.unlock(),new Promise((e,t)=>{this.database.openDatabase(()=>{e({isNewDatabase:!0})}).then(()=>{e({isNewDatabase:!1})}).catch(e=>{t(e)})})}getDatabaseKeyPrefix(){return this.namespace?`${this.namespace}-item-`:"item-"}keyForPayloadId(e){return`${this.getDatabaseKeyPrefix()}${e}`}async getAllRawDatabasePayloads(){return this.database.getAllPayloads()}async saveRawDatabasePayload(e){return this.database.savePayload(e)}async saveRawDatabasePayloads(e){return this.database.savePayloads(e)}async removeRawDatabasePayloadWithId(e){return this.database.deletePayload(e)}async removeAllRawDatabasePayloads(){return this.database.clearAllPayloads()}async getKeychainValue(){const e=localStorage.getItem("keychain");if(e)return JSON.parse(e)}async setKeychainValue(e){localStorage.setItem("keychain",JSON.stringify(e))}async clearKeychainValue(){localStorage.removeItem("keychain")}openUrl(e){const t=window.open(e,"_blank");t&&t.focus()}}},function(e,t,n){},function(e,t,n){},function(e,t){
|
||
/**
|
||
* @license AngularJS v1.7.9
|
||
* (c) 2010-2018 Google, Inc. http://angularjs.org
|
||
* License: MIT
|
||
*/
|
||
!function(e){"use strict";var t={objectMaxDepth:5,urlErrorParamsEnabled:!0};function n(e){if(!w(e))return t;N(e.objectMaxDepth)&&(t.objectMaxDepth=r(e.objectMaxDepth)?e.objectMaxDepth:NaN),N(e.urlErrorParamsEnabled)&&j(e.urlErrorParamsEnabled)&&(t.urlErrorParamsEnabled=e.urlErrorParamsEnabled)}function r(e){return S(e)&&e>0}function a(e,n){n=n||Error;var r="https://errors.angularjs.org/1.7.9/",a=r.replace(".","\\.")+"[\\s\\S]*",o=new RegExp(a,"g");return function(){var a,i,c=arguments[0],s=arguments[1],l="["+(e?e+":":"")+c+"] ",g=Ie(arguments,2).map((function(e){return Se(e,t.objectMaxDepth)}));if(l+=s.replace(/\{\d+\}/g,(function(e){var t=+e.slice(1,-1);return t<g.length?g[t].replace(o,""):e})),l+="\n"+r+(e?e+"/":"")+c,t.urlErrorParamsEnabled)for(i=0,a="?";i<g.length;i++,a="&")l+=a+"p"+i+"="+encodeURIComponent(g[i]);return new n(l)}}var o,i,c,s,l=/^\/(.+)\/([a-z]*)$/,g=Object.prototype.hasOwnProperty,I=function(e){return Y(e)?e.toLowerCase():e},B=function(e){return Y(e)?e.toUpperCase():e},A=[].slice,u=[].splice,d=[].push,_=Object.prototype.toString,C=Object.getPrototypeOf,b=a("ng"),p=e.angular||(e.angular={}),Q=0;function h(e){if(null==e||L(e))return!1;if(D(e)||Y(e)||i&&e instanceof i)return!0;var t="length"in Object(e)&&e.length;return S(t)&&(t>=0&&t-1 in e||"function"==typeof e.item)}function y(e,t,n){var r,a;if(e)if(P(e))for(r in e)"prototype"!==r&&"length"!==r&&"name"!==r&&e.hasOwnProperty(r)&&t.call(n,e[r],r,e);else if(D(e)||h(e)){var o="object"!=typeof e;for(r=0,a=e.length;r<a;r++)(o||r in e)&&t.call(n,e[r],r,e)}else if(e.forEach&&e.forEach!==y)e.forEach(t,n,e);else if(k(e))for(r in e)t.call(n,e[r],r,e);else if("function"==typeof e.hasOwnProperty)for(r in e)e.hasOwnProperty(r)&&t.call(n,e[r],r,e);else for(r in e)g.call(e,r)&&t.call(n,e[r],r,e);return e}function m(e,t,n){for(var r=Object.keys(e).sort(),a=0;a<r.length;a++)t.call(n,e[r[a]],r[a]);return r}function F(e){return function(t,n){e(n,t)}}function U(){return++Q}function f(e,t){t?e.$$hashKey=t:delete e.$$hashKey}function G(e,t,n){for(var r=e.$$hashKey,a=0,o=t.length;a<o;++a){var i=t[a];if(w(i)||P(i))for(var c=Object.keys(i),s=0,l=c.length;s<l;s++){var g=c[s],I=i[g];n&&w(I)?H(I)?e[g]=new Date(I.valueOf()):M(I)?e[g]=new RegExp(I):I.nodeName?e[g]=I.cloneNode(!0):te(I)?e[g]=I.clone():"__proto__"!==g&&(w(e[g])||(e[g]=D(I)?[]:{}),G(e[g],[I],!0)):e[g]=I}}return f(e,r),e}function E(e){return G(e,A.call(arguments,1),!1)}function v(e){return G(e,A.call(arguments,1),!0)}function Z(e){return parseInt(e,10)}o=e.document.documentMode;var X=Number.isNaN||function(e){return e!=e};function W(e,t){return E(Object.create(e),t)}function R(){}function V(e){return e}function O(e){return function(){return e}}function x(e){return P(e.toString)&&e.toString!==_}function T(e){return void 0===e}function N(e){return void 0!==e}function w(e){return null!==e&&"object"==typeof e}function k(e){return null!==e&&"object"==typeof e&&!C(e)}function Y(e){return"string"==typeof e}function S(e){return"number"==typeof e}function H(e){return"[object Date]"===_.call(e)}function D(e){return Array.isArray(e)||e instanceof Array}function J(e){switch(_.call(e)){case"[object Error]":case"[object Exception]":case"[object DOMException]":return!0;default:return e instanceof Error}}function P(e){return"function"==typeof e}function M(e){return"[object RegExp]"===_.call(e)}function L(e){return e&&e.window===e}function z(e){return e&&e.$evalAsync&&e.$watch}function j(e){return"boolean"==typeof e}function K(e){return e&&P(e.then)}R.$inject=[],V.$inject=[];var q=/^\[object (?:Uint8|Uint8Clamped|Uint16|Uint32|Int8|Int16|Int32|Float32|Float64)Array]$/;var $=function(e){return Y(e)?e.trim():e},ee=function(e){return e.replace(/([-()[\]{}+?*.$^|,:#<!\\])/g,"\\$1").replace(/\x08/g,"\\x08")};function te(e){return!(!e||!(e.nodeName||e.prop&&e.attr&&e.find))}function ne(e){return I(e.nodeName||e[0]&&e[0].nodeName)}function re(e,t){return-1!==Array.prototype.indexOf.call(e,t)}function ae(e,t){var n=e.indexOf(t);return n>=0&&e.splice(n,1),n}function oe(e,t,n){var a,o,i=[],c=[];if(n=r(n)?n:NaN,t){if((o=t)&&S(o.length)&&q.test(_.call(o))||(a=t,"[object ArrayBuffer]"===_.call(a)))throw b("cpta","Can't copy! TypedArray destination cannot be mutated.");if(e===t)throw b("cpi","Can't copy! Source and destination are identical.");return D(t)?t.length=0:y(t,(function(e,n){"$$hashKey"!==n&&delete t[n]})),i.push(e),c.push(t),s(e,t,n)}return l(e,n);function s(e,t,n){if(--n<0)return"...";var r,a=t.$$hashKey;if(D(e))for(var o=0,i=e.length;o<i;o++)t.push(l(e[o],n));else if(k(e))for(r in e)t[r]=l(e[r],n);else if(e&&"function"==typeof e.hasOwnProperty)for(r in e)e.hasOwnProperty(r)&&(t[r]=l(e[r],n));else for(r in e)g.call(e,r)&&(t[r]=l(e[r],n));return f(t,a),t}function l(e,t){if(!w(e))return e;var n=i.indexOf(e);if(-1!==n)return c[n];if(L(e)||z(e))throw b("cpws","Can't copy! Making copies of Window or Scope instances is not supported.");var r=!1,a=function(e){switch(_.call(e)){case"[object Int8Array]":case"[object Int16Array]":case"[object Int32Array]":case"[object Float32Array]":case"[object Float64Array]":case"[object Uint8Array]":case"[object Uint8ClampedArray]":case"[object Uint16Array]":case"[object Uint32Array]":return new e.constructor(l(e.buffer),e.byteOffset,e.length);case"[object ArrayBuffer]":if(!e.slice){var t=new ArrayBuffer(e.byteLength);return new Uint8Array(t).set(new Uint8Array(e)),t}return e.slice(0);case"[object Boolean]":case"[object Number]":case"[object String]":case"[object Date]":return new e.constructor(e.valueOf());case"[object RegExp]":var n=new RegExp(e.source,e.toString().match(/[^/]*$/)[0]);return n.lastIndex=e.lastIndex,n;case"[object Blob]":return new e.constructor([e],{type:e.type})}if(P(e.cloneNode))return e.cloneNode(!0)}(e);return void 0===a&&(a=D(e)?[]:Object.create(C(e)),r=!0),i.push(e),c.push(a),r?s(e,a,t):a}}function ie(e,t){return e===t||e!=e&&t!=t}function ce(e,t){if(e===t)return!0;if(null===e||null===t)return!1;if(e!=e&&t!=t)return!0;var n,r,a,o=typeof e;if(o===typeof t&&"object"===o){if(!D(e)){if(H(e))return!!H(t)&&ie(e.getTime(),t.getTime());if(M(e))return!!M(t)&&e.toString()===t.toString();if(z(e)||z(t)||L(e)||L(t)||D(t)||H(t)||M(t))return!1;for(r in a=Ne(),e)if("$"!==r.charAt(0)&&!P(e[r])){if(!ce(e[r],t[r]))return!1;a[r]=!0}for(r in t)if(!(r in a)&&"$"!==r.charAt(0)&&N(t[r])&&!P(t[r]))return!1;return!0}if(!D(t))return!1;if((n=e.length)===t.length){for(r=0;r<n;r++)if(!ce(e[r],t[r]))return!1;return!0}}return!1}var se=function(){if(!N(se.rules)){var t=e.document.querySelector("[ng-csp]")||e.document.querySelector("[data-ng-csp]");if(t){var n=t.getAttribute("ng-csp")||t.getAttribute("data-ng-csp");se.rules={noUnsafeEval:!n||-1!==n.indexOf("no-unsafe-eval"),noInlineStyle:!n||-1!==n.indexOf("no-inline-style")}}else se.rules={noUnsafeEval:function(){try{return new Function(""),!1}catch(e){return!0}}(),noInlineStyle:!1}}return se.rules},le=function(){if(N(le.name_))return le.name_;var t,n,r,a,o=Ue.length;for(n=0;n<o;++n)if(r=Ue[n],t=e.document.querySelector("["+r.replace(":","\\:")+"jq]")){a=t.getAttribute(r+"jq");break}return le.name_=a};function ge(e,t,n){return e.concat(A.call(t,n))}function Ie(e,t){return A.call(e,t||0)}function Be(e,t){var n=arguments.length>2?Ie(arguments,2):[];return!P(t)||t instanceof RegExp?t:n.length?function(){return arguments.length?t.apply(e,ge(n,arguments,0)):t.apply(e,n)}:function(){return arguments.length?t.apply(e,arguments):t.call(e)}}function Ae(t,n){var r=n;return"string"==typeof t&&"$"===t.charAt(0)&&"$"===t.charAt(1)?r=void 0:L(n)?r="$WINDOW":n&&e.document===n?r="$DOCUMENT":z(n)&&(r="$SCOPE"),r}function ue(e,t){if(!T(e))return S(t)||(t=t?2:null),JSON.stringify(e,Ae,t)}function de(e){return Y(e)?JSON.parse(e):e}var _e=/:/g;function Ce(e,t){e=e.replace(_e,"");var n=Date.parse("Jan 01, 1970 00:00:00 "+e)/6e4;return X(n)?t:n}function be(e,t){return(e=new Date(e.getTime())).setMinutes(e.getMinutes()+t),e}function pe(e,t,n){n=n?-1:1;var r=e.getTimezoneOffset();return be(e,n*(Ce(t,r)-r))}function Qe(e){e=i(e).clone().empty();var t=i("<div></div>").append(e).html();try{return e[0].nodeType===ke?I(t):t.match(/^(<[^>]+>)/)[1].replace(/^<([\w-]+)/,(function(e,t){return"<"+I(t)}))}catch(e){return I(t)}}function he(e){try{return decodeURIComponent(e)}catch(e){}}function ye(e){var t={};return y((e||"").split("&"),(function(e){var n,r,a;e&&(r=e=e.replace(/\+/g,"%20"),-1!==(n=e.indexOf("="))&&(r=e.substring(0,n),a=e.substring(n+1)),N(r=he(r))&&(a=!N(a)||he(a),g.call(t,r)?D(t[r])?t[r].push(a):t[r]=[t[r],a]:t[r]=a))})),t}function me(e){return Fe(e,!0).replace(/%26/gi,"&").replace(/%3D/gi,"=").replace(/%2B/gi,"+")}function Fe(e,t){return encodeURIComponent(e).replace(/%40/gi,"@").replace(/%3A/gi,":").replace(/%24/g,"$").replace(/%2C/gi,",").replace(/%3B/gi,";").replace(/%20/g,t?"%20":"+")}var Ue=["ng-","data-ng-","ng:","x-ng-"];var fe=function(t){var n=t.currentScript;if(!n)return!0;if(!(n instanceof e.HTMLScriptElement||n instanceof e.SVGScriptElement))return!1;var r=n.attributes;return[r.getNamedItem("src"),r.getNamedItem("href"),r.getNamedItem("xlink:href")].every((function(e){if(!e)return!0;if(!e.value)return!1;var n=t.createElement("a");if(n.href=e.value,t.location.origin===n.origin)return!0;switch(n.protocol){case"http:":case"https:":case"ftp:":case"blob:":case"file:":case"data:":return!0;default:return!1}}))}(e.document);function Ge(t,n){var r,a,o={};if(y(Ue,(function(e){var n=e+"app";!r&&t.hasAttribute&&t.hasAttribute(n)&&(r=t,a=t.getAttribute(n))})),y(Ue,(function(e){var n,o=e+"app";!r&&(n=t.querySelector("["+o.replace(":","\\:")+"]"))&&(r=n,a=n.getAttribute(o))})),r){if(!fe)return void e.console.error("AngularJS: disabling automatic bootstrap. <script> protocol indicates an extension, document.location.href does not match.");o.strictDi=null!==function(e,t){var n,r,a=Ue.length;for(r=0;r<a;++r)if(n=Ue[r]+t,Y(n=e.getAttribute(n)))return n;return null}(r,"strict-di"),n(r,a?[a]:[],o)}}function Ee(t,n,r){w(r)||(r={});r=E({strictDi:!1},r);var a=function(){if((t=i(t)).injector()){var a=t[0]===e.document?"document":Qe(t);throw b("btstrpd","App already bootstrapped with this element '{0}'",a.replace(/</,"<").replace(/>/,">"))}(n=n||[]).unshift(["$provide",function(e){e.value("$rootElement",t)}]),r.debugInfoEnabled&&n.push(["$compileProvider",function(e){e.debugInfoEnabled(!0)}]),n.unshift("ng");var o=Pt(n,r.strictDi);return o.invoke(["$rootScope","$rootElement","$compile","$injector",function(e,t,n,r){e.$apply((function(){t.data("$injector",r),n(t)(e)}))}]),o},o=/^NG_ENABLE_DEBUG_INFO!/,c=/^NG_DEFER_BOOTSTRAP!/;if(e&&o.test(e.name)&&(r.debugInfoEnabled=!0,e.name=e.name.replace(o,"")),e&&!c.test(e.name))return a();e.name=e.name.replace(c,""),p.resumeBootstrap=function(e){return y(e,(function(e){n.push(e)})),a()},P(p.resumeDeferredBootstrap)&&p.resumeDeferredBootstrap()}function ve(){e.name="NG_ENABLE_DEBUG_INFO!"+e.name,e.location.reload()}function Ze(e){var t=p.element(e).injector();if(!t)throw b("test","no injector found for element argument to getTestability");return t.get("$$testability")}var Xe=/[A-Z]/g;function We(e,t){return t=t||"_",e.replace(Xe,(function(e,n){return(n?t:"")+e.toLowerCase()}))}var Re=!1;function Ve(e,t,n){if(!e)throw b("areq","Argument '{0}' is {1}",t||"?",n||"required");return e}function Oe(e,t,n){return n&&D(e)&&(e=e[e.length-1]),Ve(P(e),t,"not a function, got "+(e&&"object"==typeof e?e.constructor.name||"Object":typeof e)),e}function xe(e,t){if("hasOwnProperty"===e)throw b("badname","hasOwnProperty is not a valid {0} name",t)}function Te(e){for(var t,n=e[0],r=e[e.length-1],a=1;n!==r&&(n=n.nextSibling);a++)(t||e[a]!==n)&&(t||(t=i(A.call(e,0,a))),t.push(n));return t||e}function Ne(){return Object.create(null)}function we(e){if(null==e)return"";switch(typeof e){case"string":break;case"number":e=""+e;break;default:e=!x(e)||D(e)||H(e)?ue(e):e.toString()}return e}var ke=3;function Ye(e,t){if(D(e)){t=t||[];for(var n=0,r=e.length;n<r;n++)t[n]=e[n]}else if(w(e))for(var a in t=t||{},e)"$"===a.charAt(0)&&"$"===a.charAt(1)||(t[a]=e[a]);return t||e}function Se(e,t){return"function"==typeof e?e.toString().replace(/ \{[\s\S]*$/,""):T(e)?"undefined":"string"!=typeof e?function(e,t){var n=[];return r(t)&&(e=p.copy(e,null,t)),JSON.stringify(e,(function(e,t){if(w(t=Ae(e,t))){if(n.indexOf(t)>=0)return"...";n.push(t)}return t}))}(e,t):e}var He={full:"1.7.9",major:1,minor:7,dot:9,codeName:"pollution-eradication"};ct.expando="ng339";var De=ct.cache={},Je=1;ct._data=function(e){return this.cache[e[this.expando]]||{}};var Pe=/-([a-z])/g,Me=/^-ms-/,Le={mouseleave:"mouseout",mouseenter:"mouseover"},ze=a("jqLite");function je(e,t){return t.toUpperCase()}function Ke(e){return e.replace(Pe,je)}var qe=/^<([\w-]+)\s*\/?>(?:<\/\1>|)$/,$e=/<|&#?\w+;/,et=/<([\w:-]+)/,tt=/<(?!area|br|col|embed|hr|img|input|link|meta|param)(([\w:-]+)[^>]*)\/>/gi,nt={option:[1,'<select multiple="multiple">',"</select>"],thead:[1,"<table>","</table>"],col:[2,"<table><colgroup>","</colgroup></table>"],tr:[2,"<table><tbody>","</tbody></table>"],td:[3,"<table><tbody><tr>","</tr></tbody></table>"],_default:[0,"",""]};function rt(e){return!$e.test(e)}function at(e){var t=e.nodeType;return 1===t||!t||9===t}function ot(e,t){var n,r,a,o,i=t.createDocumentFragment(),c=[];if(rt(e))c.push(t.createTextNode(e));else{for(n=i.appendChild(t.createElement("div")),r=(et.exec(e)||["",""])[1].toLowerCase(),a=nt[r]||nt._default,n.innerHTML=a[1]+e.replace(tt,"<$1></$2>")+a[2],o=a[0];o--;)n=n.lastChild;c=ge(c,n.childNodes),(n=i.firstChild).textContent=""}return i.textContent="",i.innerHTML="",y(c,(function(e){i.appendChild(e)})),i}nt.optgroup=nt.option,nt.tbody=nt.tfoot=nt.colgroup=nt.caption=nt.thead,nt.th=nt.td;var it=e.Node.prototype.contains||function(e){return!!(16&this.compareDocumentPosition(e))};function ct(t){if(t instanceof ct)return t;var n,r,a,o;if(Y(t)&&(t=$(t),n=!0),!(this instanceof ct)){if(n&&"<"!==t.charAt(0))throw ze("nosel","Looking up elements via selectors is not supported by jqLite! See: http://docs.angularjs.org/api/angular.element");return new ct(t)}n?pt(this,(r=t,a=a||e.document,(o=qe.exec(r))?[a.createElement(o[1])]:(o=ot(r,a))?o.childNodes:[])):P(t)?Ft(t):pt(this,t)}function st(e){return e.cloneNode(!0)}function lt(e,t){!t&&at(e)&&i.cleanData([e]),e.querySelectorAll&&i.cleanData(e.querySelectorAll("*"))}function gt(e){var t;for(t in e)return!1;return!0}function It(e){var t=e.ng339,n=t&&De[t],r=n&&n.events,a=n&&n.data;a&&!gt(a)||r&&!gt(r)||(delete De[t],e.ng339=void 0)}function Bt(e,t,n,r){if(N(r))throw ze("offargs","jqLite#off() does not support the `selector` argument");var a=ut(e),o=a&&a.events,i=a&&a.handle;if(i){if(t){var c=function(t){var r=o[t];N(n)&&ae(r||[],n),N(n)&&r&&r.length>0||(e.removeEventListener(t,i),delete o[t])};y(t.split(" "),(function(e){c(e),Le[e]&&c(Le[e])}))}else for(t in o)"$destroy"!==t&&e.removeEventListener(t,i),delete o[t];It(e)}}function At(e,t){var n=e.ng339,r=n&&De[n];r&&(t?delete r.data[t]:r.data={},It(e))}function ut(e,t){var n=e.ng339,r=n&&De[n];return t&&!r&&(e.ng339=n=++Je,r=De[n]={events:{},data:{},handle:void 0}),r}function dt(e,t,n){if(at(e)){var r,a=N(n),o=!a&&t&&!w(t),i=!t,c=ut(e,!o),s=c&&c.data;if(a)s[Ke(t)]=n;else{if(i)return s;if(o)return s&&s[Ke(t)];for(r in t)s[Ke(r)]=t[r]}}}function _t(e,t){return!!e.getAttribute&&(" "+(e.getAttribute("class")||"")+" ").replace(/[\n\t]/g," ").indexOf(" "+t+" ")>-1}function Ct(e,t){if(t&&e.setAttribute){var n=(" "+(e.getAttribute("class")||"")+" ").replace(/[\n\t]/g," "),r=n;y(t.split(" "),(function(e){e=$(e),r=r.replace(" "+e+" "," ")})),r!==n&&e.setAttribute("class",$(r))}}function bt(e,t){if(t&&e.setAttribute){var n=(" "+(e.getAttribute("class")||"")+" ").replace(/[\n\t]/g," "),r=n;y(t.split(" "),(function(e){e=$(e),-1===r.indexOf(" "+e+" ")&&(r+=e+" ")})),r!==n&&e.setAttribute("class",$(r))}}function pt(e,t){if(t)if(t.nodeType)e[e.length++]=t;else{var n=t.length;if("number"==typeof n&&t.window!==t){if(n)for(var r=0;r<n;r++)e[e.length++]=t[r]}else e[e.length++]=t}}function Qt(e,t){return ht(e,"$"+(t||"ngController")+"Controller")}function ht(e,t,n){9===e.nodeType&&(e=e.documentElement);for(var r=D(t)?t:[t];e;){for(var a=0,o=r.length;a<o;a++)if(N(n=i.data(e,r[a])))return n;e=e.parentNode||11===e.nodeType&&e.host}}function yt(e){for(lt(e,!0);e.firstChild;)e.removeChild(e.firstChild)}function mt(e,t){t||lt(e);var n=e.parentNode;n&&n.removeChild(e)}function Ft(t){function n(){e.document.removeEventListener("DOMContentLoaded",n),e.removeEventListener("load",n),t()}"complete"===e.document.readyState?e.setTimeout(t):(e.document.addEventListener("DOMContentLoaded",n),e.addEventListener("load",n))}var Ut=ct.prototype={ready:Ft,toString:function(){var e=[];return y(this,(function(t){e.push(""+t)})),"["+e.join(", ")+"]"},eq:function(e){return i(e>=0?this[e]:this[this.length+e])},length:0,push:d,sort:[].sort,splice:[].splice},ft={};y("multiple,selected,checked,disabled,readOnly,required,open".split(","),(function(e){ft[I(e)]=e}));var Gt={};y("input,select,option,textarea,button,form,details".split(","),(function(e){Gt[e]=!0}));var Et={ngMinlength:"minlength",ngMaxlength:"maxlength",ngMin:"min",ngMax:"max",ngPattern:"pattern",ngStep:"step"};function vt(e,t){var n=ft[t.toLowerCase()];return n&&Gt[ne(e)]&&n}function Zt(e,t,n){n.call(e,t)}function Xt(e,t,n){var r=t.relatedTarget;r&&(r===e||it.call(e,r))||n.call(e,t)}function Wt(){this.$get=function(){return E(ct,{hasClass:function(e,t){return e.attr&&(e=e[0]),_t(e,t)},addClass:function(e,t){return e.attr&&(e=e[0]),bt(e,t)},removeClass:function(e,t){return e.attr&&(e=e[0]),Ct(e,t)}})}}function Rt(e,t){var n=e&&e.$$hashKey;if(n)return"function"==typeof n&&(n=e.$$hashKey()),n;var r=typeof e;return n="function"===r||"object"===r&&null!==e?e.$$hashKey=r+":"+(t||U)():r+":"+e}y({data:dt,removeData:At,hasData:function(e){for(var t in De[e.ng339])return!0;return!1},cleanData:function(e){for(var t=0,n=e.length;t<n;t++)At(e[t]),Bt(e[t])}},(function(e,t){ct[t]=e})),y({data:dt,inheritedData:ht,scope:function(e){return i.data(e,"$scope")||ht(e.parentNode||e,["$isolateScope","$scope"])},isolateScope:function(e){return i.data(e,"$isolateScope")||i.data(e,"$isolateScopeNoTemplate")},controller:Qt,injector:function(e){return ht(e,"$injector")},removeAttr:function(e,t){e.removeAttribute(t)},hasClass:_t,css:function(e,t,n){if(t=function(e){return Ke(e.replace(Me,"ms-"))}(t),!N(n))return e.style[t];e.style[t]=n},attr:function(e,t,n){var r,a=e.nodeType;if(a!==ke&&2!==a&&8!==a&&e.getAttribute){var o=I(t),i=ft[o];if(!N(n))return r=e.getAttribute(t),i&&null!==r&&(r=o),null===r?void 0:r;null===n||!1===n&&i?e.removeAttribute(t):e.setAttribute(t,i?o:n)}},prop:function(e,t,n){if(!N(n))return e[t];e[t]=n},text:function(){return e.$dv="",e;function e(e,t){if(T(t)){var n=e.nodeType;return 1===n||n===ke?e.textContent:""}e.textContent=t}}(),val:function(e,t){if(T(t)){if(e.multiple&&"select"===ne(e)){var n=[];return y(e.options,(function(e){e.selected&&n.push(e.value||e.text)})),n}return e.value}e.value=t},html:function(e,t){if(T(t))return e.innerHTML;lt(e,!0),e.innerHTML=t},empty:yt},(function(e,t){ct.prototype[t]=function(t,n){var r,a,o=this.length;if(e!==yt&&T(2===e.length&&e!==_t&&e!==Qt?t:n)){if(w(t)){for(r=0;r<o;r++)if(e===dt)e(this[r],t);else for(a in t)e(this[r],a,t[a]);return this}for(var i=e.$dv,c=T(i)?Math.min(o,1):o,s=0;s<c;s++){var l=e(this[s],t,n);i=i?i+l:l}return i}for(r=0;r<o;r++)e(this[r],t,n);return this}})),y({removeData:At,on:function(e,t,n,r){if(N(r))throw ze("onargs","jqLite#on() does not support the `selector` or `eventData` parameters");if(at(e)){var a=ut(e,!0),o=a.events,i=a.handle;i||(i=a.handle=function(e,t){var n=function(n,r){n.isDefaultPrevented=function(){return n.defaultPrevented};var a=t[r||n.type],o=a?a.length:0;if(o){if(T(n.immediatePropagationStopped)){var i=n.stopImmediatePropagation;n.stopImmediatePropagation=function(){n.immediatePropagationStopped=!0,n.stopPropagation&&n.stopPropagation(),i&&i.call(n)}}n.isImmediatePropagationStopped=function(){return!0===n.immediatePropagationStopped};var c=a.specialHandlerWrapper||Zt;o>1&&(a=Ye(a));for(var s=0;s<o;s++)n.isImmediatePropagationStopped()||c(e,n,a[s])}};return n.elem=e,n}(e,o));for(var c=t.indexOf(" ")>=0?t.split(" "):[t],s=c.length,l=function(t,r,a){var c=o[t];c||((c=o[t]=[]).specialHandlerWrapper=r,"$destroy"===t||a||e.addEventListener(t,i)),c.push(n)};s--;)t=c[s],Le[t]?(l(Le[t],Xt),l(t,void 0,!0)):l(t)}},off:Bt,one:function(e,t,n){(e=i(e)).on(t,(function r(){e.off(t,n),e.off(t,r)})),e.on(t,n)},replaceWith:function(e,t){var n,r=e.parentNode;lt(e),y(new ct(t),(function(t){n?r.insertBefore(t,n.nextSibling):r.replaceChild(t,e),n=t}))},children:function(e){var t=[];return y(e.childNodes,(function(e){1===e.nodeType&&t.push(e)})),t},contents:function(e){return e.contentDocument||e.childNodes||[]},append:function(e,t){var n=e.nodeType;if(1===n||11===n)for(var r=0,a=(t=new ct(t)).length;r<a;r++){var o=t[r];e.appendChild(o)}},prepend:function(e,t){if(1===e.nodeType){var n=e.firstChild;y(new ct(t),(function(t){e.insertBefore(t,n)}))}},wrap:function(e,t){var n,r,a;n=e,r=i(t).eq(0).clone()[0],(a=n.parentNode)&&a.replaceChild(r,n),r.appendChild(n)},remove:mt,detach:function(e){mt(e,!0)},after:function(e,t){var n=e,r=e.parentNode;if(r)for(var a=0,o=(t=new ct(t)).length;a<o;a++){var i=t[a];r.insertBefore(i,n.nextSibling),n=i}},addClass:bt,removeClass:Ct,toggleClass:function(e,t,n){t&&y(t.split(" "),(function(t){var r=n;T(r)&&(r=!_t(e,t)),(r?bt:Ct)(e,t)}))},parent:function(e){var t=e.parentNode;return t&&11!==t.nodeType?t:null},next:function(e){return e.nextElementSibling},find:function(e,t){return e.getElementsByTagName?e.getElementsByTagName(t):[]},clone:st,triggerHandler:function(e,t,n){var r,a,o,i=t.type||t,c=ut(e),s=c&&c.events,l=s&&s[i];l&&(r={preventDefault:function(){this.defaultPrevented=!0},isDefaultPrevented:function(){return!0===this.defaultPrevented},stopImmediatePropagation:function(){this.immediatePropagationStopped=!0},isImmediatePropagationStopped:function(){return!0===this.immediatePropagationStopped},stopPropagation:R,type:i,target:e},t.type&&(r=E(r,t)),a=Ye(l),o=n?[r].concat(n):[r],y(a,(function(t){r.isImmediatePropagationStopped()||t.apply(e,o)})))}},(function(e,t){ct.prototype[t]=function(t,n,r){for(var a,o=0,c=this.length;o<c;o++)T(a)?N(a=e(this[o],t,n,r))&&(a=i(a)):pt(a,e(this[o],t,n,r));return N(a)?a:this}})),ct.prototype.bind=ct.prototype.on,ct.prototype.unbind=ct.prototype.off;var Vt=Object.create(null);function Ot(){this._keys=[],this._values=[],this._lastKey=NaN,this._lastIndex=-1}Ot.prototype={_idx:function(e){return e!==this._lastKey&&(this._lastKey=e,this._lastIndex=this._keys.indexOf(e)),this._lastIndex},_transformKey:function(e){return X(e)?Vt:e},get:function(e){e=this._transformKey(e);var t=this._idx(e);if(-1!==t)return this._values[t]},has:function(e){return e=this._transformKey(e),-1!==this._idx(e)},set:function(e,t){e=this._transformKey(e);var n=this._idx(e);-1===n&&(n=this._lastIndex=this._keys.length),this._keys[n]=e,this._values[n]=t},delete:function(e){e=this._transformKey(e);var t=this._idx(e);return-1!==t&&(this._keys.splice(t,1),this._values.splice(t,1),this._lastKey=NaN,this._lastIndex=-1,!0)}};var xt=Ot,Tt=[function(){this.$get=[function(){return xt}]}],Nt=/^([^(]+?)=>/,wt=/^[^(]*\(\s*([^)]*)\)/m,kt=/,/,Yt=/^\s*(_?)(\S+?)\1\s*$/,St=/((\/\/.*$)|(\/\*[\s\S]*?\*\/))/gm,Ht=a("$injector");function Dt(e){return Function.prototype.toString.call(e)}function Jt(e){var t=Dt(e).replace(St,"");return t.match(Nt)||t.match(wt)}function Pt(e,t){t=!0===t;var n={},r=[],a=new xt,i={$provide:{provider:A(u),factory:A(_),service:A((function(e,t){return _(e,["$injector",function(e){return e.instantiate(t)}])})),value:A((function(e,t){return _(e,O(t),!1)})),constant:A((function(e,t){xe(e,"constant"),i[e]=t,l[e]=t})),decorator:function(e,t){var n=c.get(e+"Provider"),r=n.$get;n.$get=function(){var e=I.invoke(r,n);return I.invoke(t,null,{$delegate:e})}}}},c=i.$injector=b(i,(function(e,t){throw p.isString(t)&&r.push(t),Ht("unpr","Unknown provider: {0}",r.join(" <- "))})),l={},g=b(l,(function(e,t){var n=c.get(e+"Provider",t);return I.invoke(n.$get,n,void 0,e)})),I=g;i.$injectorProvider={$get:O(g)},I.modules=c.modules=Ne();var B=C(e);return(I=g.get("$injector")).strictDi=t,y(B,(function(e){e&&I.invoke(e)})),I.loadNewModules=function(e){y(C(e),(function(e){e&&I.invoke(e)}))},I;function A(e){return function(t,n){if(!w(t))return e(t,n);y(t,F(e))}}function u(e,t){if(xe(e,"service"),(P(t)||D(t))&&(t=c.instantiate(t)),!t.$get)throw Ht("pget","Provider '{0}' must define $get factory method.",e);return i[e+"Provider"]=t}function d(e,t){return function(){var n=I.invoke(t,this);if(T(n))throw Ht("undef","Provider '{0}' must return a value from $get factory method.",e);return n}}function _(e,t,n){return u(e,{$get:!1!==n?d(e,t):t})}function C(e){Ve(T(e)||D(e),"modulesToLoad","not an array");var t,n=[];return y(e,(function(e){if(!a.get(e)){a.set(e,!0);try{Y(e)?(t=s(e),I.modules[e]=t,n=n.concat(C(t.requires)).concat(t._runBlocks),r(t._invokeQueue),r(t._configBlocks)):P(e)||D(e)?n.push(c.invoke(e)):Oe(e,"module")}catch(t){throw D(e)&&(e=e[e.length-1]),t.message&&t.stack&&-1===t.stack.indexOf(t.message)&&(t=t.message+"\n"+t.stack),Ht("modulerr","Failed to instantiate module {0} due to:\n{1}",e,t.stack||t.message||t)}}function r(e){var t,n;for(t=0,n=e.length;t<n;t++){var r=e[t],a=c.get(r[0]);a[r[1]].apply(a,r[2])}}})),n}function b(e,a){function c(t,o){if(e.hasOwnProperty(t)){if(e[t]===n)throw Ht("cdep","Circular dependency found: {0}",t+" <- "+r.join(" <- "));return e[t]}try{return r.unshift(t),e[t]=n,e[t]=a(t,o),e[t]}catch(r){throw e[t]===n&&delete e[t],r}finally{r.shift()}}function s(e,n,r){for(var a=[],o=Pt.$$annotate(e,t,r),i=0,s=o.length;i<s;i++){var l=o[i];if("string"!=typeof l)throw Ht("itkn","Incorrect injection token! Expected service name as string, got {0}",l);a.push(n&&n.hasOwnProperty(l)?n[l]:c(l,r))}return a}return{invoke:function(e,t,n,r){"string"==typeof n&&(r=n,n=null);var a=s(e,n,r);return D(e)&&(e=e[e.length-1]),function(e){if(o||"function"!=typeof e)return!1;var t=e.$$ngIsClass;return j(t)||(t=e.$$ngIsClass=/^class\b/.test(Dt(e))),t}(e)?(a.unshift(null),new(Function.prototype.bind.apply(e,a))):e.apply(t,a)},instantiate:function(e,t,n){var r=D(e)?e[e.length-1]:e,a=s(e,t,n);return a.unshift(null),new(Function.prototype.bind.apply(r,a))},get:c,annotate:Pt.$$annotate,has:function(t){return i.hasOwnProperty(t+"Provider")||e.hasOwnProperty(t)}}}}function Mt(){var t=!0;this.disableAutoScrolling=function(){t=!1},this.$get=["$window","$location","$rootScope",function(n,r,a){var o=n.document;function c(e){if(e){e.scrollIntoView();var t=function(){var e=s.yOffset;if(P(e))e=e();else if(te(e)){var t=e[0];e="fixed"!==n.getComputedStyle(t).position?0:t.getBoundingClientRect().bottom}else S(e)||(e=0);return e}();if(t){var r=e.getBoundingClientRect().top;n.scrollBy(0,r-t)}}else n.scrollTo(0,0)}function s(e){var t,n,a;(e=Y(e)?e:S(e)?e.toString():r.hash())?(t=o.getElementById(e))?c(t):(n=o.getElementsByName(e),a=null,Array.prototype.some.call(n,(function(e){if("a"===ne(e))return a=e,!0})),(t=a)?c(t):"top"===e&&c(null)):c(null)}return t&&a.$watch((function(){return r.hash()}),(function(t,n){var r,o;t===n&&""===t||(r=function(){a.$evalAsync(s)},"complete"===(o=o||e).document.readyState?o.setTimeout(r):i(o).on("load",r))})),s}]}Pt.$$annotate=function(e,t,n){var r,a;if("function"==typeof e){if(!(r=e.$inject)){if(r=[],e.length){if(t)throw Y(n)&&n||(n=e.name||function(e){var t=Jt(e);return t?"function("+(t[1]||"").replace(/[\s\r\n]+/," ")+")":"fn"}(e)),Ht("strictdi","{0} is not using explicit annotation and cannot be invoked in strict mode",n);y(Jt(e)[1].split(kt),(function(e){e.replace(Yt,(function(e,t,n){r.push(n)}))}))}e.$inject=r}}else D(e)?(Oe(e[a=e.length-1],"fn"),r=e.slice(0,a)):Oe(e,"fn",!0);return r};var Lt=a("$animate");function zt(e,t){return e||t?e?t?(D(e)&&(e=e.join(" ")),D(t)&&(t=t.join(" ")),e+" "+t):e:t:""}function jt(e){return w(e)?e:{}}var Kt=function(){this.$get=R},qt=function(){var e=new xt,t=[];this.$get=["$$AnimateRunner","$rootScope",function(n,r){return{enabled:R,on:R,off:R,pin:R,push:function(i,c,s,l){l&&l(),(s=s||{}).from&&i.css(s.from),s.to&&i.css(s.to),(s.addClass||s.removeClass)&&function(n,i,c){var s=e.get(n)||{},l=a(s,i,!0),g=a(s,c,!1);(l||g)&&(e.set(n,s),t.push(n),1===t.length&&r.$$postDigest(o))}(i,s.addClass,s.removeClass);var g=new n;return g.complete(),g}};function a(e,t,n){var r=!1;return t&&y(t=Y(t)?t.split(" "):D(t)?t:[],(function(t){t&&(r=!0,e[t]=n)})),r}function o(){y(t,(function(t){var n=e.get(t);if(n){var r=function(e){Y(e)&&(e=e.split(" "));var t=Ne();return y(e,(function(e){e.length&&(t[e]=!0)})),t}(t.attr("class")),a="",o="";y(n,(function(e,t){e!==!!r[t]&&(e?a+=(a.length?" ":"")+t:o+=(o.length?" ":"")+t)})),y(t,(function(e){a&&bt(e,a),o&&Ct(e,o)})),e.delete(t)}})),t.length=0}}]},$t=["$provide",function(e){var t=this,n=null,r=null;this.$$registeredAnimations=Object.create(null),this.register=function(n,r){if(n&&"."!==n.charAt(0))throw Lt("notcsel","Expecting class selector starting with '.' got '{0}'.",n);var a=n+"-animation";t.$$registeredAnimations[n.substr(1)]=a,e.factory(a,r)},this.customFilter=function(e){return 1===arguments.length&&(r=P(e)?e:null),r},this.classNameFilter=function(e){if(1===arguments.length&&(n=e instanceof RegExp?e:null)){var t=new RegExp("[(\\s|\\/)]ng-animate[(\\s|\\/)]");if(t.test(n.toString()))throw n=null,Lt("nongcls",'$animateProvider.classNameFilter(regex) prohibits accepting a regex value which matches/contains the "{0}" CSS class.',"ng-animate")}return n},this.$get=["$$animateQueue",function(e){function t(e,t,n){if(n){var r=function(e){for(var t=0;t<e.length;t++){var n=e[t];if(1===n.nodeType)return n}}(n);!r||r.parentNode||r.previousElementSibling||(n=null)}n?n.after(e):t.prepend(e)}return{on:e.on,off:e.off,pin:e.pin,enabled:e.enabled,cancel:function(e){e.cancel&&e.cancel()},enter:function(n,r,a,o){return r=r&&i(r),a=a&&i(a),t(n,r=r||a.parent(),a),e.push(n,"enter",jt(o))},move:function(n,r,a,o){return r=r&&i(r),a=a&&i(a),t(n,r=r||a.parent(),a),e.push(n,"move",jt(o))},leave:function(t,n){return e.push(t,"leave",jt(n),(function(){t.remove()}))},addClass:function(t,n,r){return(r=jt(r)).addClass=zt(r.addclass,n),e.push(t,"addClass",r)},removeClass:function(t,n,r){return(r=jt(r)).removeClass=zt(r.removeClass,n),e.push(t,"removeClass",r)},setClass:function(t,n,r,a){return(a=jt(a)).addClass=zt(a.addClass,n),a.removeClass=zt(a.removeClass,r),e.push(t,"setClass",a)},animate:function(t,n,r,a,o){return(o=jt(o)).from=o.from?E(o.from,n):n,o.to=o.to?E(o.to,r):r,a=a||"ng-inline-animate",o.tempClasses=zt(o.tempClasses,a),e.push(t,"animate",o)}}}]}],en=function(){this.$get=["$$rAF",function(e){var t=[];function n(n){t.push(n),t.length>1||e((function(){for(var e=0;e<t.length;e++)t[e]();t=[]}))}return function(){var e=!1;return n((function(){e=!0})),function(t){e?t():n(t)}}}]},tn=function(){this.$get=["$q","$sniffer","$$animateAsyncRun","$$isDocumentHidden","$timeout",function(e,t,n,r,a){function o(e){this.setHost(e);var t=n();this._doneCallbacks=[],this._tick=function(e){r()?function(e){a(e,0,!1)}(e):t(e)},this._state=0}return o.chain=function(e,t){var n=0;!function r(){if(n===e.length)return void t(!0);e[n]((function(e){!1!==e?(n++,r()):t(!1)}))}()},o.all=function(e,t){var n=0,r=!0;function a(a){r=r&&a,++n===e.length&&t(r)}y(e,(function(e){e.done(a)}))},o.prototype={setHost:function(e){this.host=e||{}},done:function(e){2===this._state?e():this._doneCallbacks.push(e)},progress:R,getPromise:function(){if(!this.promise){var t=this;this.promise=e((function(e,n){t.done((function(t){!1===t?n():e()}))}))}return this.promise},then:function(e,t){return this.getPromise().then(e,t)},catch:function(e){return this.getPromise().catch(e)},finally:function(e){return this.getPromise().finally(e)},pause:function(){this.host.pause&&this.host.pause()},resume:function(){this.host.resume&&this.host.resume()},end:function(){this.host.end&&this.host.end(),this._resolve(!0)},cancel:function(){this.host.cancel&&this.host.cancel(),this._resolve(!1)},complete:function(e){var t=this;0===t._state&&(t._state=1,t._tick((function(){t._resolve(e)})))},_resolve:function(e){2!==this._state&&(y(this._doneCallbacks,(function(t){t(e)})),this._doneCallbacks.length=0,this._state=2)}},o}]},nn=function(){this.$get=["$$rAF","$q","$$AnimateRunner",function(e,t,n){return function(t,r){var a=r||{};a.$$prepared||(a=oe(a)),a.cleanupStyles&&(a.from=a.to=null),a.from&&(t.css(a.from),a.from=null);var o,i=new n;return{start:c,end:c};function c(){return e((function(){!function(){a.addClass&&(t.addClass(a.addClass),a.addClass=null);a.removeClass&&(t.removeClass(a.removeClass),a.removeClass=null);a.to&&(t.css(a.to),a.to=null)}(),o||i.complete(),o=!0})),i}}}]};function rn(e,t,n,r,a){var o=this,c=e.location,s=e.history,l=e.setTimeout,g=e.clearTimeout,I={},B=a(n);o.isMock=!1,o.$$completeOutstandingRequest=B.completeTask,o.$$incOutstandingRequestCount=B.incTaskCount,o.notifyWhenNoOutstandingRequests=B.notifyWhenNoPendingTasks;var A,u,d=c.href,_=t.find("base"),C=null,b=r.history?function(){try{return s.state}catch(e){}}:R;F(),o.url=function(t,n,a){if(T(a)&&(a=null),c!==e.location&&(c=e.location),s!==e.history&&(s=e.history),t){var i=u===a;if(t=ra(t).href,d===t&&(!r.history||i))return o;var l=d&&nr(d)===nr(t);return d=t,u=a,!r.history||l&&i?(l||(C=t),n?c.replace(t):l?c.hash=function(e){var t=e.indexOf("#");return-1===t?"":e.substr(t)}(t):c.href=t,c.href!==t&&(C=t)):(s[n?"replaceState":"pushState"](a,"",t),F()),C&&(C=t),o}return function(e){return e.replace(/#$/,"")}(C||c.href)},o.state=function(){return A};var p=[],Q=!1;function h(){C=null,U()}var m=null;function F(){ce(A=T(A=b())?null:A,m)&&(A=m),m=A,u=A}function U(){var e=u;F(),d===o.url()&&e===A||(d=o.url(),u=A,y(p,(function(e){e(o.url(),A)})))}o.onUrlChange=function(t){return Q||(r.history&&i(e).on("popstate",h),i(e).on("hashchange",h),Q=!0),p.push(t),t},o.$$applicationDestroyed=function(){i(e).off("hashchange popstate",h)},o.$$checkUrlChange=U,o.baseHref=function(){var e=_.attr("href");return e?e.replace(/^(https?:)?\/\/[^/]*/,""):""},o.defer=function(e,t,n){var r;return t=t||0,n=n||B.DEFAULT_TASK_TYPE,B.incTaskCount(n),r=l((function(){delete I[r],B.completeTask(e,n)}),t),I[r]=n,r},o.defer.cancel=function(e){if(I.hasOwnProperty(e)){var t=I[e];return delete I[e],g(e),B.completeTask(R,t),!0}return!1}}function an(){this.$get=["$window","$log","$sniffer","$document","$$taskTrackerFactory",function(e,t,n,r,a){return new rn(e,r,t,n,a)}]}function on(){this.$get=function(){var e={};function t(t,n){if(t in e)throw a("$cacheFactory")("iid","CacheId '{0}' is already taken!",t);var r=0,o=E({},n,{id:t}),i=Ne(),c=n&&n.capacity||Number.MAX_VALUE,s=Ne(),l=null,g=null;return e[t]={put:function(e,t){if(!T(t)){if(c<Number.MAX_VALUE)I(s[e]||(s[e]={key:e}));return e in i||r++,i[e]=t,r>c&&this.remove(g.key),t}},get:function(e){if(c<Number.MAX_VALUE){var t=s[e];if(!t)return;I(t)}return i[e]},remove:function(e){if(c<Number.MAX_VALUE){var t=s[e];if(!t)return;t===l&&(l=t.p),t===g&&(g=t.n),B(t.n,t.p),delete s[e]}e in i&&(delete i[e],r--)},removeAll:function(){i=Ne(),r=0,s=Ne(),l=g=null},destroy:function(){i=null,o=null,s=null,delete e[t]},info:function(){return E({},o,{size:r})}};function I(e){e!==l&&(g?g===e&&(g=e.n):g=e,B(e.n,e.p),B(e,l),(l=e).n=null)}function B(e,t){e!==t&&(e&&(e.p=t),t&&(t.n=e))}}return t.info=function(){var t={};return y(e,(function(e,n){t[n]=e.info()})),t},t.get=function(t){return e[t]},t}}function cn(){this.$get=["$cacheFactory",function(e){return e("templates")}]}var sn=a("$compile");var ln=new function(){};function gn(t,n){var r={},a=/^\s*directive:\s*([\w-]+)\s+(.*)$/,c=/(([\w-]+)(?::([^;]+))?;?)/,s=function(e){var t,n={},r=e.split(",");for(t=0;t<r.length;t++)n[r[t]]=!0;return n}("ngSrc,ngSrcset,src,srcset"),l=/^(?:(\^\^?)?(\?)?(\^\^?)?)?/,B=/^(on[a-z]+|formaction)$/,A=Ne();function u(e,t,n){var r=/^([@&]|[=<](\*?))(\??)\s*([\w$]*)$/,a=Ne();return y(e,(function(e,o){if((e=e.trim())in A)a[o]=A[e];else{var i=e.match(r);if(!i)throw sn("iscp","Invalid {3} for directive '{0}'. Definition: {... {1}: '{2}' ...}",t,o,e,n?"controller bindings definition":"isolate scope definition");a[o]={mode:i[1][0],collection:"*"===i[2],optional:"?"===i[3],attrName:i[4]||o},i[4]&&(A[e]=a[o])}})),a}function d(e,t){var n={isolateScope:null,bindToController:null};if(w(e.scope)&&(!0===e.bindToController?(n.bindToController=u(e.scope,t,!0),n.isolateScope={}):n.isolateScope=u(e.scope,t,!1)),w(e.bindToController)&&(n.bindToController=u(e.bindToController,t,!0)),n.bindToController&&!e.controller)throw sn("noctrl","Cannot bind to controller without directive '{0}'s controller.",t);return n}this.directive=function e(n,a){return Ve(n,"name"),xe(n,"directive"),Y(n)?(!function(e){var t=e.charAt(0);if(!t||t!==I(t))throw sn("baddir","Directive/Component name '{0}' is invalid. The first character must be a lowercase letter",e);if(e!==e.trim())throw sn("baddir","Directive/Component name '{0}' is invalid. The name should not contain leading or trailing whitespaces",e)}(n),Ve(a,"directiveFactory"),r.hasOwnProperty(n)||(r[n]=[],t.factory(n+"Directive",["$injector","$exceptionHandler",function(e,t){var a=[];return y(r[n],(function(r,o){try{var i=e.invoke(r);P(i)?i={compile:O(i)}:!i.compile&&i.link&&(i.compile=O(i.link)),i.priority=i.priority||0,i.index=o,i.name=i.name||n,i.require=function(e){var t=e.require||e.controller&&e.name;return!D(t)&&w(t)&&y(t,(function(e,n){var r=e.match(l);e.substring(r[0].length)||(t[n]=r[0]+n)})),t}(i),i.restrict=function(e,t){if(e&&(!Y(e)||!/[EACM]/.test(e)))throw sn("badrestrict","Restrict property '{0}' of directive '{1}' is invalid",e,t);return e||"EA"}(i.restrict,n),i.$$moduleName=r.$$moduleName,a.push(i)}catch(e){t(e)}})),a}])),r[n].push(a)):y(n,F(e)),this},this.component=function e(t,n){if(!Y(t))return y(t,F(Be(this,e))),this;var r=n.controller||function(){};function a(e){function t(t){return P(t)||D(t)?function(n,r){return e.invoke(t,this,{$element:n,$attrs:r})}:t}var a=n.template||n.templateUrl?n.template:"",o={controller:r,controllerAs:pn(n.controller)||n.controllerAs||"$ctrl",template:t(a),templateUrl:t(n.templateUrl),transclude:n.transclude,scope:{},bindToController:n.bindings||{},restrict:"E",require:n.require};return y(n,(function(e,t){"$"===t.charAt(0)&&(o[t]=e)})),o}return y(n,(function(e,t){"$"===t.charAt(0)&&(a[t]=e,P(r)&&(r[t]=e))})),a.$inject=["$injector"],this.directive(t,a)},this.aHrefSanitizationWhitelist=function(e){return N(e)?(n.aHrefSanitizationWhitelist(e),this):n.aHrefSanitizationWhitelist()},this.imgSrcSanitizationWhitelist=function(e){return N(e)?(n.imgSrcSanitizationWhitelist(e),this):n.imgSrcSanitizationWhitelist()};var C=!0;this.debugInfoEnabled=function(e){return N(e)?(C=e,this):C};var b=!1;this.strictComponentBindingsEnabled=function(e){return N(e)?(b=e,this):b};var p=10;this.onChangesTtl=function(e){return arguments.length?(p=e,this):p};var Q=!0;this.commentDirectivesEnabled=function(e){return arguments.length?(Q=e,this):Q};var h=!0;this.cssClassDirectivesEnabled=function(e){return arguments.length?(h=e,this):h};var m=Ne();this.addPropertySecurityContext=function(e,t,n){var r=e.toLowerCase()+"|"+t.toLowerCase();if(r in m&&m[r]!==n)throw sn("ctxoverride","Property context '{0}.{1}' already set to '{2}', cannot override to '{3}'.",e,t,m[r],n);return m[r]=n,this},function(){function e(e,t){y(t,(function(t){m[t.toLowerCase()]=e}))}e(wr.HTML,["iframe|srcdoc","*|innerHTML","*|outerHTML"]),e(wr.CSS,["*|style"]),e(wr.URL,["area|href","area|ping","a|href","a|ping","blockquote|cite","body|background","del|cite","input|src","ins|cite","q|cite"]),e(wr.MEDIA_URL,["audio|src","img|src","img|srcset","source|src","source|srcset","track|src","video|src","video|poster"]),e(wr.RESOURCE_URL,["*|formAction","applet|code","applet|codebase","base|href","embed|src","frame|src","form|action","head|profile","html|manifest","iframe|src","link|href","media|src","object|codebase","object|data","script|src"])}(),this.$get=["$injector","$interpolate","$exceptionHandler","$templateRequest","$parse","$controller","$rootScope","$sce","$animate",function(t,n,A,u,F,U,f,G,v){var Z,X=/^\w/,O=e.document.createElement("div"),x=Q,N=h,k=p;function S(){try{if(!--k)throw Z=void 0,sn("infchng","{0} $onChanges() iterations reached. Aborting!\n",p);f.$apply((function(){for(var e=0,t=Z.length;e<t;++e)try{Z[e]()}catch(e){A(e)}Z=void 0}))}finally{k++}}function H(e,t){if(!e)return e;if(!Y(e))throw sn("srcset",'Can\'t pass trusted values to `{0}`: "{1}"',t,e.toString());for(var n="",r=$(e),a=/\s/.test(r)?/(\s+\d+x\s*,|\s+\d+w\s*,|\s+,|,\s+)/:/(,)/,o=r.split(a),i=Math.floor(o.length/2),c=0;c<i;c++){var s=2*c;n+=G.getTrustedMediaUrl($(o[s])),n+=" "+$(o[s+1])}var l=$(o[2*c]).split(/\s/);return n+=G.getTrustedMediaUrl($(l[0])),2===l.length&&(n+=" "+$(l[1])),n}function M(e,t){if(t){var n,r,a,o=Object.keys(t);for(n=0,r=o.length;n<r;n++)this[a=o[n]]=t[a]}else this.$attr={};this.$$element=e}function L(e,t){try{e.addClass(t)}catch(e){}}M.prototype={$normalize:un,$addClass:function(e){e&&e.length>0&&v.addClass(this.$$element,e)},$removeClass:function(e){e&&e.length>0&&v.removeClass(this.$$element,e)},$updateClass:function(e,t){var n=dn(e,t);n&&n.length&&v.addClass(this.$$element,n);var r=dn(t,e);r&&r.length&&v.removeClass(this.$$element,r)},$set:function(e,t,n,r){var a=vt(this.$$element[0],e),o=Et[e],i=e;a?(this.$$element.prop(e,t),r=a):o&&(this[o]=t,i=o),this[e]=t,r?this.$attr[e]=r:(r=this.$attr[e])||(this.$attr[e]=r=We(e,"-")),"img"===ne(this.$$element)&&"srcset"===e&&(this[e]=t=H(t,"$set('srcset', value)")),!1!==n&&(null===t||T(t)?this.$$element.removeAttr(r):X.test(r)?a&&!1===t?this.$$element.removeAttr(r):this.$$element.attr(r,t):function(e,t,n){O.innerHTML="<span "+t+">";var r=O.firstChild.attributes,a=r[0];r.removeNamedItem(a.name),a.value=n,e.attributes.setNamedItem(a)}(this.$$element[0],r,t));var c=this.$$observers;c&&y(c[i],(function(e){try{e(t)}catch(e){A(e)}}))},$observe:function(e,t){var n=this,r=n.$$observers||(n.$$observers=Ne()),a=r[e]||(r[e]=[]);return a.push(t),f.$evalAsync((function(){a.$$inter||!n.hasOwnProperty(e)||T(n[e])||t(n[e])})),function(){ae(a,t)}}};var K=n.startSymbol(),q=n.endSymbol(),ee="{{"===K&&"}}"===q?V:function(e){return e.replace(/\{\{/g,K).replace(/}}/g,q)},te=/^ng(Attr|Prop|On)([A-Z].*)$/,re=/^(.+)Start$/;return oe.$$addBindingInfo=C?function(e,t){var n=e.data("$binding")||[];D(t)?n=n.concat(t):n.push(t),e.data("$binding",n)}:R,oe.$$addBindingClass=C?function(e){L(e,"ng-binding")}:R,oe.$$addScopeInfo=C?function(e,t,n,r){var a=n?r?"$isolateScopeNoTemplate":"$isolateScope":"$scope";e.data(a,t)}:R,oe.$$addScopeClass=C?function(e,t){L(e,t?"ng-isolate-scope":"ng-scope")}:R,oe.$$createComment=function(t,n){var r="";return C&&(r=" "+(t||"")+": ",n&&(r+=n+" ")),e.document.createComment(r)},oe;function oe(e,t,n,r,a){e instanceof i||(e=i(e));var o=se(e,t,e,n,r,a);oe.$$addScopeClass(e);var c=null;return function(t,n,r){if(!e)throw sn("multilink","This element has already been linked.");Ve(t,"scope"),a&&a.needsNewScope&&(t=t.$parent.$new());var s,l,g,I=(r=r||{}).parentBoundTranscludeFn,B=r.transcludeControllers,A=r.futureParentElement;if(I&&I.$$boundTransclude&&(I=I.$$boundTransclude),c||(l=(s=A)&&s[0],c=l&&"foreignobject"!==ne(l)&&_.call(l).match(/SVG/)?"svg":"html"),g="html"!==c?i(Ge(c,i("<div></div>").append(e).html())):n?Ut.clone.call(e):e,B)for(var u in B)g.data("$"+u+"Controller",B[u].instance);return oe.$$addScopeInfo(g,t),n&&n(g,t),o&&o(t,g,g,I),n||(e=o=null),g}}function se(e,t,n,r,a,c){for(var s,l,g,I,B,A,u,d=[],_=D(e)||e instanceof i,C=0;C<e.length;C++)s=new M,11===o&&le(e,C,_),(g=(l=Ae(e[C],[],s,0===C?r:void 0,a)).length?Ce(l,e[C],s,t,n,null,[],[],c):null)&&g.scope&&oe.$$addScopeClass(s.$$element),B=g&&g.terminal||!(I=e[C].childNodes)||!I.length?null:se(I,g?(g.transcludeOnThisElement||!g.templateOnThisElement)&&g.transclude:t),(g||B)&&(d.push(C,g,B),A=!0,u=u||g),c=null;return A?function(e,n,r,a){var o,c,s,l,g,I,B,A,_;if(u){var C=n.length;for(_=new Array(C),g=0;g<d.length;g+=3)B=d[g],_[B]=n[B]}else _=n;for(g=0,I=d.length;g<I;)s=_[d[g++]],o=d[g++],c=d[g++],o?(o.scope?(l=e.$new(),oe.$$addScopeInfo(i(s),l)):l=e,A=o.transcludeOnThisElement?ge(e,o.transclude,a):!o.templateOnThisElement&&a?a:!a&&t?ge(e,t):null,o(c,l,s,r,A)):c&&c(e,s.childNodes,void 0,a)}:null}function le(e,t,n){var r,a=e[t],o=a.parentNode;if(a.nodeType===ke)for(;(r=o?a.nextSibling:e[t+1])&&r.nodeType===ke;)a.nodeValue=a.nodeValue+r.nodeValue,r.parentNode&&r.parentNode.removeChild(r),n&&r===e[t+1]&&e.splice(t+1,1)}function ge(e,t,n){function r(r,a,o,i,c){return r||((r=e.$new(!1,c)).$$transcluded=!0),t(r,a,{parentBoundTranscludeFn:n,transcludeControllers:o,futureParentElement:i})}var a=r.$$slots=Ne();for(var o in t.$$slots)t.$$slots[o]?a[o]=ge(e,t.$$slots[o],n):a[o]=null;return r}function Ae(e,t,r,o,i){var s,l,g,I=e.nodeType,B=r.$attr;switch(I){case 1:he(t,un(l=ne(e)),"E",o,i);for(var A,u,d,_,C,b=e.attributes,p=0,Q=b&&b.length;p<Q;p++){var h,y=!1,m=!1,F=!1,U=!1,f=!1;u=(A=b[p]).name,_=A.value,(C=(d=un(u.toLowerCase())).match(te))?(F="Attr"===C[1],U="Prop"===C[1],f="On"===C[1],u=u.replace(Bn,"").toLowerCase().substr(4+C[1].length).replace(/_(.)/g,(function(e,t){return t.toUpperCase()}))):(h=d.match(re))&&ye(h[1])&&(y=u,m=u.substr(0,u.length-5)+"end",u=u.substr(0,u.length-6)),U||f?(r[d]=_,B[d]=A.name,U?ve(e,t,d,u):Ze(t,d,u)):(B[d=un(u.toLowerCase())]=u,!F&&r.hasOwnProperty(d)||(r[d]=_,vt(e,d)&&(r[d]=!0)),Xe(e,t,_,d,F),he(t,d,"A",o,i,y,m))}if("input"===l&&"hidden"===e.getAttribute("type")&&e.setAttribute("autocomplete","off"),!N)break;if(w(g=e.className)&&(g=g.animVal),Y(g)&&""!==g)for(;s=c.exec(g);)he(t,d=un(s[2]),"C",o,i)&&(r[d]=$(s[3])),g=g.substr(s.index+s[0].length);break;case ke:!function(e,t){var r=n(t,!0);r&&e.push({priority:0,compile:function(e){var t=e.parent(),n=!!t.length;return n&&oe.$$addBindingClass(t),function(e,t){var a=t.parent();n||oe.$$addBindingClass(a),oe.$$addBindingInfo(a,r.expressions),e.$watch(r,(function(e){t[0].nodeValue=e}))}}})}(t,e.nodeValue);break;case 8:if(!x)break;!function(e,t,n,r,o){try{var i=a.exec(e.nodeValue);if(i){var c=un(i[1]);he(t,c,"M",r,o)&&(n[c]=$(i[2]))}}catch(e){}}(e,t,r,o,i)}return t.sort(Ue),t}function ue(e,t,n){var r=[],a=0;if(t&&e.hasAttribute&&e.hasAttribute(t))do{if(!e)throw sn("uterdir","Unterminated attribute, found '{0}' but no matching '{1}' found.",t,n);1===e.nodeType&&(e.hasAttribute(t)&&a++,e.hasAttribute(n)&&a--),r.push(e),e=e.nextSibling}while(a>0);else r.push(e);return i(r)}function de(e,t,n){return function(r,a,o,i,c){return a=ue(a[0],t,n),e(r,a,o,i,c)}}function _e(e,t,n,r,a,o){var i;return e?oe(t,n,r,a,o):function(){return i||(i=oe(t,n,r,a,o),t=n=o=null),i.apply(this,arguments)}}function Ce(t,n,r,a,o,c,s,l,g){g=g||{};for(var I,B,u,d,_,C=-Number.MAX_VALUE,b=g.newScopeDirective,p=g.controllerDirectives,Q=g.newIsolateScopeDirective,h=g.templateDirective,m=g.nonTlbTranscludeDirective,F=!1,f=!1,G=g.hasElementTranscludeDirective,v=r.$$element=i(n),Z=c,X=a,W=!1,R=!1,V=0,O=t.length;V<O;V++){var x=(I=t[V]).$$start,N=I.$$end;if(x&&(v=ue(n,x,N)),u=void 0,C>I.priority)break;if((_=I.scope)&&(I.templateUrl||(w(_)?(fe("new/isolated scope",Q||b,I,v),Q=I):fe("new/isolated scope",Q,I,v)),b=b||I),B=I.name,!W&&(I.replace&&(I.templateUrl||I.template)||I.transclude&&!I.$$tlb)){for(var k,Y=V+1;k=t[Y++];)if(k.transclude&&!k.$$tlb||k.replace&&(k.templateUrl||k.template)){R=!0;break}W=!0}if(!I.templateUrl&&I.controller&&(p=p||Ne(),fe("'"+B+"' controller",p[B],I,v),p[B]=I),_=I.transclude)if(F=!0,I.$$tlb||(fe("transclusion",m,I,v),m=I),"element"===_)G=!0,C=I.priority,u=v,v=r.$$element=i(oe.$$createComment(B,r[B])),n=v[0],Re(o,Ie(u),n),X=_e(R,u,a,C,Z&&Z.name,{nonTlbTranscludeDirective:m});else{var S=Ne();if(w(_)){u=e.document.createDocumentFragment();var H=Ne(),J=Ne();for(var L in y(_,(function(e,t){var n="?"===e.charAt(0);e=n?e.substring(1):e,H[e]=t,S[t]=null,J[t]=n})),y(v.contents(),(function(t){var n=H[un(ne(t))];n?(J[n]=!0,S[n]=S[n]||e.document.createDocumentFragment(),S[n].appendChild(t)):u.appendChild(t)})),y(J,(function(e,t){if(!e)throw sn("reqslot","Required transclusion slot `{0}` was not filled.",t)})),S)if(S[L]){var j=i(S[L].childNodes);S[L]=_e(R,j,a)}u=i(u.childNodes)}else u=i(st(n)).contents();v.empty(),(X=_e(R,u,a,void 0,void 0,{needsNewScope:I.$$isolateScope||I.$$newScope})).$$slots=S}if(I.template)if(f=!0,fe("template",h,I,v),h=I,_=P(I.template)?I.template(v,r):I.template,_=ee(_),I.replace){if(Z=I,u=rt(_)?[]:_n(Ge(I.templateNamespace,$(_))),n=u[0],1!==u.length||1!==n.nodeType)throw sn("tplrt","Template for directive '{0}' must have exactly one root element. {1}",B,"");Re(o,v,n);var K={$attr:{}},q=Ae(n,[],K),te=t.splice(V+1,t.length-(V+1));(Q||b)&&pe(q,Q,b),t=t.concat(q).concat(te),me(r,K),O=t.length}else v.html(_);if(I.templateUrl)f=!0,fe("template",h,I,v),h=I,I.replace&&(Z=I),ie=Fe(t.splice(V,t.length-V),v,r,o,F&&X,s,l,{controllerDirectives:p,newScopeDirective:b!==I&&b,newIsolateScopeDirective:Q,templateDirective:h,nonTlbTranscludeDirective:m}),O=t.length;else if(I.compile)try{d=I.compile(v,r,X);var re=I.$$originalDirective||I;P(d)?ae(null,Be(re,d),x,N):d&&ae(Be(re,d.pre),Be(re,d.post),x,N)}catch(e){A(e,Qe(v))}I.terminal&&(ie.terminal=!0,C=Math.max(C,I.priority))}return ie.scope=b&&!0===b.scope,ie.transcludeOnThisElement=F,ie.templateOnThisElement=f,ie.transclude=X,g.hasElementTranscludeDirective=G,ie;function ae(e,t,n,r){e&&(n&&(e=de(e,n,r)),e.require=I.require,e.directiveName=B,(Q===I||I.$$isolateScope)&&(e=Oe(e,{isolateScope:!0})),s.push(e)),t&&(n&&(t=de(t,n,r)),t.require=I.require,t.directiveName=B,(Q===I||I.$$isolateScope)&&(t=Oe(t,{isolateScope:!0})),l.push(t))}function ie(e,t,a,o,c){var g,I,B,u,d,_,C,m,F,f;for(var v in n===a?(F=r,m=r.$$element):F=new M(m=i(a),r),d=t,Q?u=t.$new(!0):b&&(d=t.$parent),c&&((C=function(e,t,n,r){var a;z(e)||(r=n,n=t,t=e,e=void 0);G&&(a=_);n||(n=G?m.parent():m);if(!r)return c(e,t,a,n,R);var o=c.$$slots[r];if(o)return o(e,t,a,n,R);if(T(o))throw sn("noslot",'No parent directive that requires a transclusion with slot name "{0}". Element: {1}',r,Qe(m))}).$$boundTransclude=c,C.isSlotFilled=function(e){return!!c.$$slots[e]}),p&&(_=function(e,t,n,r,a,o,i){var c=Ne();for(var s in r){var l=r[s],g={$scope:l===i||l.$$isolateScope?a:o,$element:e,$attrs:t,$transclude:n},I=l.controller;"@"===I&&(I=t[l.name]);var B=U(I,g,!0,l.controllerAs);c[l.name]=B,e.data("$"+l.name+"Controller",B.instance)}return c}(m,F,C,p,u,t,Q)),Q&&(oe.$$addScopeInfo(m,u,!0,!(h&&(h===Q||h===Q.$$originalDirective))),oe.$$addScopeClass(m,!0),u.$$isolateBindings=Q.$$isolateBindings,(f=we(t,F,u,u.$$isolateBindings,Q)).removeWatches&&u.$on("$destroy",f.removeWatches)),_){var Z=p[v],X=_[v],W=Z.$$bindings.bindToController;X.instance=X(),m.data("$"+Z.name+"Controller",X.instance),X.bindingInfo=we(d,F,X.instance,W,Z)}for(y(p,(function(e,t){var n=e.require;e.bindToController&&!D(n)&&w(n)&&E(_[t].instance,be(t,n,m,_))})),y(_,(function(e){var t=e.instance;if(P(t.$onChanges))try{t.$onChanges(e.bindingInfo.initialChanges)}catch(e){A(e)}if(P(t.$onInit))try{t.$onInit()}catch(e){A(e)}P(t.$doCheck)&&(d.$watch((function(){t.$doCheck()})),t.$doCheck()),P(t.$onDestroy)&&d.$on("$destroy",(function(){t.$onDestroy()}))})),g=0,I=s.length;g<I;g++)xe(B=s[g],B.isolateScope?u:t,m,F,B.require&&be(B.directiveName,B.require,m,_),C);var R=t;for(Q&&(Q.template||null===Q.templateUrl)&&(R=u),e&&e(R,a.childNodes,void 0,c),g=l.length-1;g>=0;g--)xe(B=l[g],B.isolateScope?u:t,m,F,B.require&&be(B.directiveName,B.require,m,_),C);y(_,(function(e){var t=e.instance;P(t.$postLink)&&t.$postLink()}))}}function be(e,t,n,r){var a;if(Y(t)){var o=t.match(l),i=t.substring(o[0].length),c=o[1]||o[3],s="?"===o[2];if("^^"===c?n=n.parent():a=(a=r&&r[i])&&a.instance,!a){var g="$"+i+"Controller";a="^^"===c&&n[0]&&9===n[0].nodeType?null:c?n.inheritedData(g):n.data(g)}if(!a&&!s)throw sn("ctreq","Controller '{0}', required by directive '{1}', can't be found!",i,e)}else if(D(t)){a=[];for(var I=0,B=t.length;I<B;I++)a[I]=be(e,t[I],n,r)}else w(t)&&(a={},y(t,(function(t,o){a[o]=be(e,t,n,r)})));return a||null}function pe(e,t,n){for(var r=0,a=e.length;r<a;r++)e[r]=W(e[r],{$$isolateScope:t,$$newScope:n})}function he(e,n,a,o,i,c,s){if(n===i)return null;var l=null;if(r.hasOwnProperty(n))for(var g,I=t.get(n+"Directive"),B=0,A=I.length;B<A;B++)if(g=I[B],(T(o)||o>g.priority)&&-1!==g.restrict.indexOf(a)){if(c&&(g=W(g,{$$start:c,$$end:s})),!g.$$bindings){var u=g.$$bindings=d(g,g.name);w(u.isolateScope)&&(g.$$isolateBindings=u.isolateScope)}e.push(g),l=g}return l}function ye(e){if(r.hasOwnProperty(e))for(var n=t.get(e+"Directive"),a=0,o=n.length;a<o;a++)if(n[a].multiElement)return!0;return!1}function me(e,t){var n=t.$attr,r=e.$attr;y(e,(function(r,a){"$"!==a.charAt(0)&&(t[a]&&t[a]!==r&&(r.length?r+=("style"===a?";":" ")+t[a]:r=t[a]),e.$set(a,r,!0,n[a]))})),y(t,(function(t,a){e.hasOwnProperty(a)||"$"===a.charAt(0)||(e[a]=t,"class"!==a&&"style"!==a&&(r[a]=n[a]))}))}function Fe(e,t,n,r,a,o,c,s){var l,g,I=[],B=t[0],d=e.shift(),_=W(d,{templateUrl:null,transclude:null,replace:null,$$originalDirective:d}),C=P(d.templateUrl)?d.templateUrl(t,n):d.templateUrl,b=d.templateNamespace;return t.empty(),u(C).then((function(A){var u,p,Q,h;if(A=ee(A),d.replace){if(Q=rt(A)?[]:_n(Ge(b,$(A))),u=Q[0],1!==Q.length||1!==u.nodeType)throw sn("tplrt","Template for directive '{0}' must have exactly one root element. {1}",d.name,C);p={$attr:{}},Re(r,t,u);var m=Ae(u,[],p);w(d.scope)&&pe(m,!0),e=m.concat(e),me(n,p)}else u=B,t.html(A);for(e.unshift(_),l=Ce(e,u,n,a,t,d,o,c,s),y(r,(function(e,n){e===u&&(r[n]=t[0])})),g=se(t[0].childNodes,a);I.length;){var F=I.shift(),U=I.shift(),f=I.shift(),G=I.shift(),E=t[0];if(!F.$$destroyed){if(U!==B){var v=U.className;s.hasElementTranscludeDirective&&d.replace||(E=st(u)),Re(f,i(U),E),L(i(E),v)}h=l.transcludeOnThisElement?ge(F,l.transclude,G):G,l(g,F,E,r,h)}}I=null})).catch((function(e){J(e)&&A(e)})),function(e,t,n,r,a){var o=a;t.$$destroyed||(I?I.push(t,n,r,o):(l.transcludeOnThisElement&&(o=ge(t,l.transclude,a)),l(g,t,n,r,o)))}}function Ue(e,t){var n=t.priority-e.priority;return 0!==n?n:e.name!==t.name?e.name<t.name?-1:1:e.index-t.index}function fe(e,t,n,r){function a(e){return e?" (module: "+e+")":""}if(t)throw sn("multidir","Multiple directives [{0}{1}, {2}{3}] asking for {4} on: {5}",t.name,a(t.$$moduleName),n.name,a(n.$$moduleName),e,Qe(r))}function Ge(t,n){switch(t=I(t||"html")){case"svg":case"math":var r=e.document.createElement("div");return r.innerHTML="<"+t+">"+n+"</"+t+">",r.childNodes[0].childNodes;default:return n}}function Ee(e){return H(G.valueOf(e),"ng-prop-srcset")}function ve(e,t,n,r){if(B.test(r))throw sn("nodomevents","Property bindings for HTML DOM event properties are disallowed");var a=ne(e),o=function(e,t){var n=t.toLowerCase();return m[e+"|"+n]||m["*|"+n]}(a,r),i=V;"srcset"!==r||"img"!==a&&"source"!==a?o&&(i=G.getTrusted.bind(G,o)):i=Ee,t.push({priority:100,compile:function(e,t){var a=F(t[n]),o=F(t[n],(function(e){return G.valueOf(e)}));return{pre:function(e,t){function n(){var n=a(e);t[0][r]=i(n)}n(),e.$watch(o,n)}}}})}function Ze(e,t,n){e.push(Go(F,f,A,t,n,!1))}function Xe(e,t,r,a,o){var i=ne(e),c=function(e,t){return"srcdoc"===t?G.HTML:"src"===t||"ngSrc"===t?-1===["img","video","audio","source","track"].indexOf(e)?G.RESOURCE_URL:G.MEDIA_URL:"xlinkHref"===t?"image"===e?G.MEDIA_URL:"a"===e?G.URL:G.RESOURCE_URL:"form"===e&&"action"===t||"base"===e&&"href"===t||"link"===e&&"href"===t?G.RESOURCE_URL:"a"!==e||"href"!==t&&"ngHref"!==t?void 0:G.URL}(i,a),l=!o,g=s[a]||o,I=n(r,l,c,g);if(I){if("multiple"===a&&"select"===i)throw sn("selmulti","Binding to the 'multiple' attribute is not supported. Element: {0}",Qe(e));if(B.test(a))throw sn("nodomevents","Interpolations for HTML DOM event attributes are disallowed");t.push({priority:100,compile:function(){return{pre:function(e,t,o){var i=o.$$observers||(o.$$observers=Ne()),s=o[a];s!==r&&(I=s&&n(s,!0,c,g),r=s),I&&(o[a]=I(e),(i[a]||(i[a]=[])).$$inter=!0,(o.$$observers&&o.$$observers[a].$$scope||e).$watch(I,(function(e,t){"class"===a&&e!==t?o.$updateClass(e,t):o.$set(a,e)})))}}}})}}function Re(t,n,r){var a,o,c=n[0],s=n.length,l=c.parentNode;if(t)for(a=0,o=t.length;a<o;a++)if(t[a]===c){t[a++]=r;for(var g=a,I=g+s-1,B=t.length;g<B;g++,I++)I<B?t[g]=t[I]:delete t[g];t.length-=s-1,t.context===c&&(t.context=r);break}l&&l.replaceChild(r,c);var A=e.document.createDocumentFragment();for(a=0;a<s;a++)A.appendChild(n[a]);for(i.hasData(c)&&(i.data(r,i.data(c)),i(c).off("$destroy")),i.cleanData(A.querySelectorAll("*")),a=1;a<s;a++)delete n[a];n[0]=r,n.length=1}function Oe(e,t){return E((function(){return e.apply(null,arguments)}),e,t)}function xe(e,t,n,r,a,o){try{e(t,n,r,a,o)}catch(e){A(e,Qe(n))}}function Te(e,t){if(b)throw sn("missingattr","Attribute '{0}' of '{1}' is non-optional and must be set!",e,t)}function we(e,t,r,a,o){var i,c=[],s={};function l(t,n,a){P(r.$onChanges)&&!ie(n,a)&&(Z||(e.$$postDigest(S),Z=[]),i||(i={},Z.push(I)),i[t]&&(a=i[t].previousValue),i[t]=new In(a,n))}function I(){r.$onChanges(i),i=void 0}return y(a,(function(a,i){var I,B,A,u,d,_=a.attrName,C=a.optional;switch(a.mode){case"@":C||g.call(t,_)||(Te(_,o.name),r[i]=t[_]=void 0),d=t.$observe(_,(function(e){if(Y(e)||j(e)){var t=r[i];l(i,e,t),r[i]=e}})),t.$$observers[_].$$scope=e,Y(I=t[_])?r[i]=n(I)(e):j(I)&&(r[i]=I),s[i]=new In(ln,r[i]),c.push(d);break;case"=":if(!g.call(t,_)){if(C)break;Te(_,o.name),t[_]=void 0}if(C&&!t[_])break;B=F(t[_]),u=B.literal?ce:ie,A=B.assign||function(){throw I=r[i]=B(e),sn("nonassign","Expression '{0}' in attribute '{1}' used with directive '{2}' is non-assignable!",t[_],_,o.name)},I=r[i]=B(e);var b=function(t){return u(t,r[i])||(u(t,I)?A(e,t=r[i]):r[i]=t),I=t};b.$stateful=!0,d=a.collection?e.$watchCollection(t[_],b):e.$watch(F(t[_],b),null,B.literal),c.push(d);break;case"<":if(!g.call(t,_)){if(C)break;Te(_,o.name),t[_]=void 0}if(C&&!t[_])break;var p=(B=F(t[_])).literal,Q=r[i]=B(e);s[i]=new In(ln,r[i]),d=e[a.collection?"$watchCollection":"$watch"](B,(function(e,t){if(t===e){if(t===Q||p&&ce(t,Q))return;t=Q}l(i,e,t),r[i]=e})),c.push(d);break;case"&":if(C||g.call(t,_)||Te(_,o.name),(B=t.hasOwnProperty(_)?F(t[_]):R)===R&&C)break;r[i]=function(t){return B(e,t)}}})),{initialChanges:s,removeWatches:c.length&&function(){for(var e=0,t=c.length;e<t;++e)c[e]()}}}}]}function In(e,t){this.previousValue=e,this.currentValue=t}gn.$inject=["$provide","$$sanitizeUriProvider"],In.prototype.isFirstChange=function(){return this.previousValue===ln};var Bn=/^((?:x|data)[:\-_])/i,An=/[:\-_]+(.)/g;function un(e){return e.replace(Bn,"").replace(An,(function(e,t,n){return n?t.toUpperCase():t}))}function dn(e,t){var n="",r=e.split(/\s+/),a=t.split(/\s+/);e:for(var o=0;o<r.length;o++){for(var i=r[o],c=0;c<a.length;c++)if(i===a[c])continue e;n+=(n.length>0?" ":"")+i}return n}function _n(e){var t=(e=i(e)).length;if(t<=1)return e;for(;t--;){var n=e[t];(8===n.nodeType||n.nodeType===ke&&""===n.nodeValue.trim())&&u.call(e,t,1)}return e}var Cn=a("$controller"),bn=/^(\S+)(\s+as\s+([\w$]+))?$/;function pn(e,t){if(t&&Y(t))return t;if(Y(e)){var n=bn.exec(e);if(n)return n[3]}}function Qn(){var e={};this.has=function(t){return e.hasOwnProperty(t)},this.register=function(t,n){xe(t,"controller"),w(t)?E(e,t):e[t]=n},this.$get=["$injector",function(t){return function(r,a,o,i){var c,s,l,g;if(o=!0===o,i&&Y(i)&&(g=i),Y(r)){if(!(s=r.match(bn)))throw Cn("ctrlfmt","Badly formed controller string '{0}'. Must match `__name__ as __id__` or `__name__`.",r);if(l=s[1],g=g||s[3],!(r=e.hasOwnProperty(l)?e[l]:function(e,t,n){if(!t)return e;for(var r,a=t.split("."),o=e,i=a.length,c=0;c<i;c++)r=a[c],e&&(e=(o=e)[r]);return!n&&P(e)?Be(o,e):e}(a.$scope,l,!0)))throw Cn("ctrlreg","The controller with the name '{0}' is not registered.",l);Oe(r,l,!0)}if(o){var I=(D(r)?r[r.length-1]:r).prototype;return c=Object.create(I||null),g&&n(a,g,c,l||r.name),E((function(){var e=t.invoke(r,c,a,l);return e!==c&&(w(e)||P(e))&&(c=e,g&&n(a,g,c,l||r.name)),c}),{instance:c,identifier:g})}return c=t.instantiate(r,a,l),g&&n(a,g,c,l||r.name),c};function n(e,t,n,r){if(!e||!w(e.$scope))throw a("$controller")("noscp","Cannot export controller '{0}' as '{1}'! No $scope object provided via `locals`.",r,t);e.$scope[t]=n}}]}function hn(){this.$get=["$window",function(e){return i(e.document)}]}function yn(){this.$get=["$document","$rootScope",function(e,t){var n=e[0],r=n&&n.hidden;function a(){r=n.hidden}return e.on("visibilitychange",a),t.$on("$destroy",(function(){e.off("visibilitychange",a)})),function(){return r}}]}function mn(){this.$get=["$log",function(e){return function(t,n){e.error.apply(e,arguments)}}]}var Fn=function(){this.$get=["$document",function(e){return function(t){return t?!t.nodeType&&t instanceof i&&(t=t[0]):t=e[0].body,t.offsetWidth+1}}]},Un={"Content-Type":"application/json;charset=utf-8"},fn=/^\[|^\{(?!\{)/,Gn={"[":/]$/,"{":/}$/},En=/^\)]\}',?\n/,vn=a("$http");function Zn(e){return w(e)?H(e)?e.toISOString():ue(e):e}function Xn(){this.$get=function(){return function(e){if(!e)return"";var t=[];return m(e,(function(e,n){null===e||T(e)||P(e)||(D(e)?y(e,(function(e){t.push(Fe(n)+"="+Fe(Zn(e)))})):t.push(Fe(n)+"="+Fe(Zn(e))))})),t.join("&")}}}function Wn(){this.$get=function(){return function(e){if(!e)return"";var t=[];return function e(n,r,a){D(n)?y(n,(function(t,n){e(t,r+"["+(w(t)?n:"")+"]")})):w(n)&&!H(n)?m(n,(function(t,n){e(t,r+(a?"":"[")+n+(a?"":"]"))})):(P(n)&&(n=n()),t.push(Fe(r)+"="+(null==n?"":Fe(Zn(n)))))}(e,"",!0),t.join("&")}}}function Rn(e,t){if(Y(e)){var n=e.replace(En,"").trim();if(n){var r=t("Content-Type"),a=r&&0===r.indexOf("application/json");if(a||(i=(o=n).match(fn))&&Gn[i[0]].test(o))try{e=de(n)}catch(t){if(!a)return e;throw vn("baddata",'Data must be a valid JSON object. Received: "{0}". Parse error: "{1}"',e,t)}}}var o,i;return e}function Vn(e){var t,n=Ne();function r(e,t){e&&(n[e]=n[e]?n[e]+", "+t:t)}return Y(e)?y(e.split("\n"),(function(e){t=e.indexOf(":"),r(I($(e.substr(0,t))),$(e.substr(t+1)))})):w(e)&&y(e,(function(e,t){r(I(t),$(e))})),n}function On(e){var t;return function(n){if(t||(t=Vn(e)),n){var r=t[I(n)];return void 0===r&&(r=null),r}return t}}function xn(e,t,n,r){return P(r)?r(e,t,n):(y(r,(function(r){e=r(e,t,n)})),e)}function Tn(e){return 200<=e&&e<300}function Nn(){var e=this.defaults={transformResponse:[Rn],transformRequest:[function(e){return!w(e)||(t=e,"[object File]"===_.call(t))||function(e){return"[object Blob]"===_.call(e)}(e)||function(e){return"[object FormData]"===_.call(e)}(e)?e:ue(e);var t}],headers:{common:{Accept:"application/json, text/plain, */*"},post:Ye(Un),put:Ye(Un),patch:Ye(Un)},xsrfCookieName:"XSRF-TOKEN",xsrfHeaderName:"X-XSRF-TOKEN",paramSerializer:"$httpParamSerializer",jsonpCallbackParam:"callback"},t=!1;this.useApplyAsync=function(e){return N(e)?(t=!!e,this):t};var n=this.interceptors=[],r=this.xsrfWhitelistedOrigins=[];this.$get=["$browser","$httpBackend","$$cookieReader","$cacheFactory","$rootScope","$q","$injector","$sce",function(o,i,c,s,l,g,A,u){var d=s("$http");e.paramSerializer=Y(e.paramSerializer)?A.get(e.paramSerializer):e.paramSerializer;var _=[];y(n,(function(e){_.unshift(Y(e)?A.get(e):A.invoke(e))}));var C,b=(C=[ta].concat(r.map(ra)),function(e){var t=ra(e);return C.some(aa.bind(null,t))});function p(n){if(!w(n))throw a("$http")("badreq","Http request configuration must be an object. Received: {0}",n);if(!Y(u.valueOf(n.url)))throw a("$http")("badreq","Http request configuration url must be a string or a $sce trusted object. Received: {0}",n.url);var r=E({method:"get",transformRequest:e.transformRequest,transformResponse:e.transformResponse,paramSerializer:e.paramSerializer,jsonpCallbackParam:e.jsonpCallbackParam},n);r.headers=function(t){var n,r,a,o=e.headers,i=E({},t.headers);o=E({},o.common,o[I(t.method)]);e:for(n in o){for(a in r=I(n),i)if(I(a)===r)continue e;i[n]=o[n]}return function(e,t){var n,r={};return y(e,(function(e,a){P(e)?null!=(n=e(t))&&(r[a]=n):r[a]=e})),r}(i,Ye(t))}(n),r.method=B(r.method),r.paramSerializer=Y(r.paramSerializer)?A.get(r.paramSerializer):r.paramSerializer,o.$$incOutstandingRequestCount("$http");var s=[],C=[],Q=g.resolve(r);return y(_,(function(e){(e.request||e.requestError)&&s.unshift(e.request,e.requestError),(e.response||e.responseError)&&C.push(e.response,e.responseError)})),Q=h(Q,s),Q=(Q=h(Q=Q.then((function(n){var r=n.headers,a=xn(n.data,On(r),void 0,n.transformRequest);T(a)&&y(r,(function(e,t){"content-type"===I(t)&&delete r[t]}));T(n.withCredentials)&&!T(e.withCredentials)&&(n.withCredentials=e.withCredentials);return function(n,r){var a,o,s=g.defer(),B=s.promise,A=n.headers,_="jsonp"===I(n.method),C=n.url;_?C=u.getTrustedResourceUrl(C):Y(C)||(C=u.valueOf(C));C=function(e,t){t.length>0&&(e+=(-1===e.indexOf("?")?"?":"&")+t);return e}(C,n.paramSerializer(n.params)),_&&(C=function(e,t){var n=e.split("?");if(n.length>2)throw vn("badjsonp",'Illegal use more than one "?", in url, "{1}"',e);return y(ye(n[1]),(function(n,r){if("JSON_CALLBACK"===n)throw vn("badjsonp",'Illegal use of JSON_CALLBACK in url, "{0}"',e);if(r===t)throw vn("badjsonp",'Illegal use of callback param, "{0}", in url, "{1}"',t,e)})),e+=(-1===e.indexOf("?")?"?":"&")+t+"=JSON_CALLBACK"}(C,n.jsonpCallbackParam));p.pendingRequests.push(n),B.then(U,U),!n.cache&&!e.cache||!1===n.cache||"GET"!==n.method&&"JSONP"!==n.method||(a=w(n.cache)?n.cache:w(e.cache)?e.cache:d);a&&(N(o=a.get(C))?K(o)?o.then(F,F):D(o)?m(o[1],o[0],Ye(o[2]),o[3],o[4]):m(o,200,{},"OK","complete"):a.put(C,B));if(T(o)){var Q=b(n.url)?c()[n.xsrfCookieName||e.xsrfCookieName]:void 0;Q&&(A[n.xsrfHeaderName||e.xsrfHeaderName]=Q),i(n.method,C,r,(function(e,n,r,o,i){a&&(Tn(e)?a.put(C,[e,n,Vn(r),o,i]):a.remove(C));function c(){m(n,e,r,o,i)}t?l.$applyAsync(c):(c(),l.$$phase||l.$apply())}),A,n.timeout,n.withCredentials,n.responseType,h(n.eventHandlers),h(n.uploadEventHandlers))}return B;function h(e){if(e){var n={};return y(e,(function(e,r){n[r]=function(n){function r(){e(n)}t?l.$applyAsync(r):l.$$phase?r():l.$apply(r)}})),n}}function m(e,t,r,a,o){(Tn(t=t>=-1?t:0)?s.resolve:s.reject)({data:e,status:t,headers:On(r),config:n,statusText:a,xhrStatus:o})}function F(e){m(e.data,e.status,Ye(e.headers()),e.statusText,e.xhrStatus)}function U(){var e=p.pendingRequests.indexOf(n);-1!==e&&p.pendingRequests.splice(e,1)}}(n,a).then(m,m)})),C)).finally((function(){o.$$completeOutstandingRequest(R,"$http")}));function h(e,t){for(var n=0,r=t.length;n<r;){var a=t[n++],o=t[n++];e=e.then(a,o)}return t.length=0,e}function m(e){var t=E({},e);return t.data=xn(e.data,e.headers,e.status,r.transformResponse),Tn(e.status)?t:g.reject(t)}}return p.pendingRequests=[],function(e){y(arguments,(function(e){p[e]=function(t,n){return p(E({},n||{},{method:e,url:t}))}}))}("get","delete","head","jsonp"),function(e){y(arguments,(function(e){p[e]=function(t,n,r){return p(E({},r||{},{method:e,url:t,data:n}))}}))}("post","put","patch"),p.defaults=e,p}]}function wn(){this.$get=function(){return function(){return new e.XMLHttpRequest}}}function kn(){this.$get=["$browser","$jsonpCallbacks","$document","$xhrFactory",function(e,t,n,r){return function(e,t,n,r,a){return function(o,i,c,s,l,g,B,A,u,d){if(i=i||e.url(),"jsonp"===I(o))var _=r.createCallback(i),C=function(e,t,n){e=e.replace("JSON_CALLBACK",t);var o=a.createElement("script"),i=null;return o.type="text/javascript",o.src=e,o.async=!0,i=function(e){o.removeEventListener("load",i),o.removeEventListener("error",i),a.body.removeChild(o),o=null;var c=-1,s="unknown";e&&("load"!==e.type||r.wasCalled(t)||(e={type:"error"}),s=e.type,c="error"===e.type?404:200),n&&n(c,s)},o.addEventListener("load",i),o.addEventListener("error",i),a.body.appendChild(o),i}(i,_,(function(e,t){var n=200===e&&r.getResponse(_);m(s,e,n,"",t,"complete"),r.removeCallback(_)}));else{var b=t(o,i),p=!1;b.open(o,i,!0),y(l,(function(e,t){N(e)&&b.setRequestHeader(t,e)})),b.onload=function(){var e=b.statusText||"",t="response"in b?b.response:b.responseText,n=1223===b.status?204:b.status;0===n&&(n=t?200:"file"===ra(i).protocol?404:0),m(s,n,t,b.getAllResponseHeaders(),e,"complete")};if(b.onerror=function(){m(s,-1,null,null,"","error")},b.ontimeout=function(){m(s,-1,null,null,"","timeout")},b.onabort=function(){m(s,-1,null,null,"",p?"timeout":"abort")},y(u,(function(e,t){b.addEventListener(t,e)})),y(d,(function(e,t){b.upload.addEventListener(t,e)})),B&&(b.withCredentials=!0),A)try{b.responseType=A}catch(e){if("json"!==A)throw e}b.send(T(c)?null:c)}if(g>0)var Q=n((function(){h("timeout")}),g);else K(g)&&g.then((function(){h(N(g.$$timeoutId)?"timeout":"abort")}));function h(e){p="timeout"===e,C&&C(),b&&b.abort()}function m(e,t,r,a,o,i){N(Q)&&n.cancel(Q),C=b=null,e(t,r,a,o,i)}}}(e,r,e.defer,t,n[0])}]}var Yn=p.$interpolateMinErr=a("$interpolate");function Sn(){var e="{{",t="}}";this.startSymbol=function(t){return t?(e=t,this):e},this.endSymbol=function(e){return e?(t=e,this):t},this.$get=["$parse","$exceptionHandler","$sce",function(n,r,a){var o=e.length,i=t.length,c=new RegExp(e.replace(/./g,l),"g"),s=new RegExp(t.replace(/./g,l),"g");function l(e){return"\\\\\\"+e}function g(n){return n.replace(c,e).replace(s,t)}function I(e,t,n,r){var a=e.$watch((function(e){return a(),r(e)}),t,n);return a}function B(c,s,l,B){var A=l===a.URL||l===a.MEDIA_URL;if(!c.length||-1===c.indexOf(e)){if(s)return;var u=g(c);A&&(u=a.getTrusted(l,u));var d=O(u);return d.exp=c,d.expressions=[],d.$$watchDelegate=I,d}B=!!B;for(var _,C,b,p,Q,h=0,y=[],m=c.length,F=[],U=[];h<m;){if(-1===(_=c.indexOf(e,h))||-1===(C=c.indexOf(t,_+o))){h!==m&&F.push(g(c.substring(h)));break}h!==_&&F.push(g(c.substring(h,_))),p=c.substring(_+o,C),y.push(p),h=C+i,U.push(F.length),F.push("")}Q=1===F.length&&1===U.length;var f=A&&Q?void 0:function(e){try{return e=l&&!A?a.getTrusted(l,e):a.valueOf(e),B&&!N(e)?e:we(e)}catch(e){r(Yn.interr(c,e))}};if(b=y.map((function(e){return n(e,f)})),!s||y.length){var G=function(e){for(var t=0,n=y.length;t<n;t++){if(B&&T(e[t]))return;F[U[t]]=e[t]}return A?a.getTrusted(l,Q?F[0]:F.join("")):(l&&F.length>1&&Yn.throwNoconcat(c),F.join(""))};return E((function(e){var t=0,n=y.length,a=new Array(n);try{for(;t<n;t++)a[t]=b[t](e);return G(a)}catch(e){r(Yn.interr(c,e))}}),{exp:c,expressions:y,$$watchDelegate:function(e,t){var n;return e.$watchGroup(b,(function(r,a){var o=G(r);t.call(this,o,r!==a?n:o,e),n=o}))}})}}return B.startSymbol=function(){return e},B.endSymbol=function(){return t},B}]}Yn.throwNoconcat=function(e){throw Yn("noconcat","Error while interpolating: {0}\nStrict Contextual Escaping disallows interpolations that concatenate multiple expressions when a trusted value is required. See http://docs.angularjs.org/api/ng.$sce",e)},Yn.interr=function(e,t){return Yn("interr","Can't interpolate: {0}\n{1}",e,t.toString())};var Hn=a("$interval");function Dn(){this.$get=["$$intervalFactory","$window",function(e,t){var n={},r=function(e){t.clearInterval(e),delete n[e]},a=e((function(e,r,a){var o=t.setInterval(e,r);return n[o]=a,o}),r);return a.cancel=function(e){if(!e)return!1;if(!e.hasOwnProperty("$$intervalId"))throw Hn("badprom","`$interval.cancel()` called with a promise that was not generated by `$interval()`.");if(!n.hasOwnProperty(e.$$intervalId))return!1;var t=e.$$intervalId,a=n[t];return Vr(a.promise),a.reject("canceled"),r(t),!0},a}]}function Jn(){this.$get=["$browser","$q","$$q","$rootScope",function(e,t,n,r){return function(a,o){return function(i,c,s,l){var g=arguments.length>4,I=g?Ie(arguments,4):[],B=0,A=N(l)&&!l,u=(A?n:t).defer(),d=u.promise;function _(){g?i.apply(null,I):i(B)}function C(){A?e.defer(_):r.$evalAsync(_),u.notify(B++),s>0&&B>=s&&(u.resolve(B),o(d.$$intervalId)),A||r.$apply()}return s=N(s)?s:0,d.$$intervalId=a(C,c,u,A),d}}}]}var Pn=function(){this.$get=function(){var e=p.callbacks,t={};return{createCallback:function(n){var r="_"+(e.$$counter++).toString(36),a="angular.callbacks."+r,o=function(e){var t=function(e){t.data=e,t.called=!0};return t.id=e,t}(r);return t[a]=e[r]=o,a},wasCalled:function(e){return t[e].called},getResponse:function(e){return t[e].data},removeCallback:function(n){var r=t[n];delete e[r.id],delete t[n]}}}},Mn=/^([^?#]*)(\?([^#]*))?(#(.*))?$/,Ln={http:80,https:443,ftp:21},zn=a("$location");function jn(e,t,n){var r,a=(r=[],y(t,(function(e,t){D(e)?y(e,(function(e){r.push(Fe(t,!0)+(!0===e?"":"="+Fe(e,!0)))})):r.push(Fe(t,!0)+(!0===e?"":"="+Fe(e,!0)))})),r.length?r.join("&"):""),o=n?"#"+me(n):"";return function(e){for(var t=e.split("/"),n=t.length;n--;)t[n]=me(t[n].replace(/%2F/g,"/"));return t.join("/")}(e)+(a?"?"+a:"")+o}function Kn(e,t){var n=ra(e);t.$$protocol=n.protocol,t.$$host=n.hostname,t.$$port=Z(n.port)||Ln[n.protocol]||null}var qn=/^\s*[\\/]{2,}/;function $n(e,t,n){if(qn.test(e))throw zn("badpath",'Invalid url "{0}".',e);var r="/"!==e.charAt(0);r&&(e="/"+e);var a=ra(e),o=r&&"/"===a.pathname.charAt(0)?a.pathname.substring(1):a.pathname;t.$$path=function(e,t){for(var n=e.split("/"),r=n.length;r--;)n[r]=decodeURIComponent(n[r]),t&&(n[r]=n[r].replace(/\//g,"%2F"));return n.join("/")}(o,n),t.$$search=ye(a.search),t.$$hash=decodeURIComponent(a.hash),t.$$path&&"/"!==t.$$path.charAt(0)&&(t.$$path="/"+t.$$path)}function er(e,t){return e.slice(0,t.length)===t}function tr(e,t){if(er(t,e))return t.substr(e.length)}function nr(e){var t=e.indexOf("#");return-1===t?e:e.substr(0,t)}function rr(e,t,n){this.$$html5=!0,n=n||"",Kn(e,this),this.$$parse=function(e){var n=tr(t,e);if(!Y(n))throw zn("ipthprfx",'Invalid url "{0}", missing path prefix "{1}".',e,t);$n(n,this,!0),this.$$path||(this.$$path="/"),this.$$compose()},this.$$normalizeUrl=function(e){return t+e.substr(1)},this.$$parseLinkUrl=function(r,a){return a&&"#"===a[0]?(this.hash(a.slice(1)),!0):(N(o=tr(e,r))?(i=o,c=n&&N(o=tr(n,o))?t+(tr("/",o)||o):e+i):N(o=tr(t,r))?c=t+o:t===r+"/"&&(c=t),c&&this.$$parse(c),!!c);var o,i,c}}function ar(e,t,n){Kn(e,this),this.$$parse=function(r){var a,o=tr(e,r)||tr(t,r);T(o)||"#"!==o.charAt(0)?this.$$html5?a=o:(a="",T(o)&&(e=r,this.replace())):T(a=tr(n,o))&&(a=o),$n(a,this,!1),this.$$path=function(e,t,n){var r,a=/^\/[A-Z]:(\/.*)/;er(t,n)&&(t=t.replace(n,""));if(a.exec(t))return e;return(r=a.exec(e))?r[1]:e}(this.$$path,a,e),this.$$compose()},this.$$normalizeUrl=function(t){return e+(t?n+t:"")},this.$$parseLinkUrl=function(t,n){return nr(e)===nr(t)&&(this.$$parse(t),!0)}}function or(e,t,n){this.$$html5=!0,ar.apply(this,arguments),this.$$parseLinkUrl=function(r,a){return a&&"#"===a[0]?(this.hash(a.slice(1)),!0):(e===nr(r)?o=r:(i=tr(t,r))?o=e+n+i:t===r+"/"&&(o=t),o&&this.$$parse(o),!!o);var o,i},this.$$normalizeUrl=function(t){return e+n+t}}var ir={$$absUrl:"",$$html5:!1,$$replace:!1,$$compose:function(){this.$$url=jn(this.$$path,this.$$search,this.$$hash),this.$$absUrl=this.$$normalizeUrl(this.$$url),this.$$urlUpdatedByLocation=!0},absUrl:cr("$$absUrl"),url:function(e){if(T(e))return this.$$url;var t=Mn.exec(e);return(t[1]||""===e)&&this.path(decodeURIComponent(t[1])),(t[2]||t[1]||""===e)&&this.search(t[3]||""),this.hash(t[5]||""),this},protocol:cr("$$protocol"),host:cr("$$host"),port:cr("$$port"),path:sr("$$path",(function(e){return"/"===(e=null!==e?e.toString():"").charAt(0)?e:"/"+e})),search:function(e,t){switch(arguments.length){case 0:return this.$$search;case 1:if(Y(e)||S(e))e=e.toString(),this.$$search=ye(e);else{if(!w(e))throw zn("isrcharg","The first argument of the `$location#search()` call must be a string or an object.");y(e=oe(e,{}),(function(t,n){null==t&&delete e[n]})),this.$$search=e}break;default:T(t)||null===t?delete this.$$search[e]:this.$$search[e]=t}return this.$$compose(),this},hash:sr("$$hash",(function(e){return null!==e?e.toString():""})),replace:function(){return this.$$replace=!0,this}};function cr(e){return function(){return this[e]}}function sr(e,t){return function(n){return T(n)?this[e]:(this[e]=t(n),this.$$compose(),this)}}function lr(){var e="!",t={enabled:!1,requireBase:!0,rewriteLinks:!0};this.hashPrefix=function(t){return N(t)?(e=t,this):e},this.html5Mode=function(e){return j(e)?(t.enabled=e,this):w(e)?(j(e.enabled)&&(t.enabled=e.enabled),j(e.requireBase)&&(t.requireBase=e.requireBase),(j(e.rewriteLinks)||Y(e.rewriteLinks))&&(t.rewriteLinks=e.rewriteLinks),this):t},this.$get=["$rootScope","$browser","$sniffer","$rootElement","$window",function(n,r,a,o,c){var s,l,g,I,B=r.baseHref(),A=r.url();if(t.enabled){if(!B&&t.requireBase)throw zn("nobase","$location in HTML5 mode requires a <base> tag to be present!");g=(I=A).substring(0,I.indexOf("/",I.indexOf("//")+2))+(B||"/"),l=a.history?rr:or}else g=nr(A),l=ar;var u=function(e){return e.substr(0,nr(e).lastIndexOf("/")+1)}(g);(s=new l(g,u,"#"+e)).$$parseLinkUrl(A,A),s.$$state=r.state();var d=/^\s*(javascript|mailto):/i;function _(e,t,n){var a=s.url(),o=s.$$state;try{r.url(e,t,n),s.$$state=r.state()}catch(e){throw s.url(a),s.$$state=o,e}}o.on("click",(function(e){var a=t.rewriteLinks;if(a&&!e.ctrlKey&&!e.metaKey&&!e.shiftKey&&2!==e.which&&2!==e.button){for(var c=i(e.target);"a"!==ne(c[0]);)if(c[0]===o[0]||!(c=c.parent())[0])return;if(!Y(a)||!T(c.attr(a))){var l=c.prop("href"),g=c.attr("href")||c.attr("xlink:href");w(l)&&"[object SVGAnimatedString]"===l.toString()&&(l=ra(l.animVal).href),d.test(l)||!l||c.attr("target")||e.isDefaultPrevented()||s.$$parseLinkUrl(l,g)&&(e.preventDefault(),s.absUrl()!==r.url()&&n.$apply())}}})),s.absUrl()!==A&&r.url(s.absUrl(),!0);var C=!0;return r.onUrlChange((function(e,t){er(e,u)?(n.$evalAsync((function(){var r,a=s.absUrl(),o=s.$$state;s.$$parse(e),s.$$state=t,r=n.$broadcast("$locationChangeStart",e,a,t,o).defaultPrevented,s.absUrl()===e&&(r?(s.$$parse(a),s.$$state=o,_(a,!1,o)):(C=!1,b(a,o)))})),n.$$phase||n.$digest()):c.location.href=e})),n.$watch((function(){if(C||s.$$urlUpdatedByLocation){s.$$urlUpdatedByLocation=!1;var e=r.url(),t=s.absUrl(),o=r.state(),i=s.$$replace,c=!((l=e)===(g=t)||ra(l).href===ra(g).href)||s.$$html5&&a.history&&o!==s.$$state;(C||c)&&(C=!1,n.$evalAsync((function(){var t=s.absUrl(),r=n.$broadcast("$locationChangeStart",t,e,s.$$state,o).defaultPrevented;s.absUrl()===t&&(r?(s.$$parse(e),s.$$state=o):(c&&_(t,i,o===s.$$state?null:s.$$state),b(e,o)))})))}var l,g;s.$$replace=!1})),s;function b(e,t){n.$broadcast("$locationChangeSuccess",s.absUrl(),e,s.$$state,t)}}]}function gr(){var e=!0,t=this;this.debugEnabled=function(t){return N(t)?(e=t,this):e},this.$get=["$window",function(n){var r,a=o||/\bEdge\//.test(n.navigator&&n.navigator.userAgent);return{log:c("log"),info:c("info"),warn:c("warn"),error:c("error"),debug:(r=c("debug"),function(){e&&r.apply(t,arguments)})};function i(e){return J(e)&&(e.stack&&a?e=e.message&&-1===e.stack.indexOf(e.message)?"Error: "+e.message+"\n"+e.stack:e.stack:e.sourceURL&&(e=e.message+"\n"+e.sourceURL+":"+e.line)),e}function c(e){var t=n.console||{},r=t[e]||t.log||R;return function(){var e=[];return y(arguments,(function(t){e.push(i(t))})),Function.prototype.apply.call(r,t,e)}}}]}y([or,ar,rr],(function(e){e.prototype=Object.create(ir),e.prototype.state=function(t){if(!arguments.length)return this.$$state;if(e!==rr||!this.$$html5)throw zn("nostate","History API state support is available only in HTML5 mode and only in browsers supporting HTML5 History API");return this.$$state=T(t)?null:t,this.$$urlUpdatedByLocation=!0,this}}));var Ir=a("$parse"),Br={}.constructor.prototype.valueOf;function Ar(e){return e+""}var ur=Ne();y("+ - * / % === !== == != < > <= >= && || ! = |".split(" "),(function(e){ur[e]=!0}));var dr={n:"\n",f:"\f",r:"\r",t:"\t",v:"\v","'":"'",'"':'"'},_r=function(e){this.options=e};_r.prototype={constructor:_r,lex:function(e){for(this.text=e,this.index=0,this.tokens=[];this.index<this.text.length;){var t=this.text.charAt(this.index);if('"'===t||"'"===t)this.readString(t);else if(this.isNumber(t)||"."===t&&this.isNumber(this.peek()))this.readNumber();else if(this.isIdentifierStart(this.peekMultichar()))this.readIdent();else if(this.is(t,"(){}[].,;:?"))this.tokens.push({index:this.index,text:t}),this.index++;else if(this.isWhitespace(t))this.index++;else{var n=t+this.peek(),r=n+this.peek(2),a=ur[t],o=ur[n],i=ur[r];if(a||o||i){var c=i?r:o?n:t;this.tokens.push({index:this.index,text:c,operator:!0}),this.index+=c.length}else this.throwError("Unexpected next character ",this.index,this.index+1)}}return this.tokens},is:function(e,t){return-1!==t.indexOf(e)},peek:function(e){var t=e||1;return this.index+t<this.text.length&&this.text.charAt(this.index+t)},isNumber:function(e){return"0"<=e&&e<="9"&&"string"==typeof e},isWhitespace:function(e){return" "===e||"\r"===e||"\t"===e||"\n"===e||"\v"===e||" "===e},isIdentifierStart:function(e){return this.options.isIdentifierStart?this.options.isIdentifierStart(e,this.codePointAt(e)):this.isValidIdentifierStart(e)},isValidIdentifierStart:function(e){return"a"<=e&&e<="z"||"A"<=e&&e<="Z"||"_"===e||"$"===e},isIdentifierContinue:function(e){return this.options.isIdentifierContinue?this.options.isIdentifierContinue(e,this.codePointAt(e)):this.isValidIdentifierContinue(e)},isValidIdentifierContinue:function(e,t){return this.isValidIdentifierStart(e,t)||this.isNumber(e)},codePointAt:function(e){return 1===e.length?e.charCodeAt(0):(e.charCodeAt(0)<<10)+e.charCodeAt(1)-56613888},peekMultichar:function(){var e=this.text.charAt(this.index),t=this.peek();if(!t)return e;var n=e.charCodeAt(0),r=t.charCodeAt(0);return n>=55296&&n<=56319&&r>=56320&&r<=57343?e+t:e},isExpOperator:function(e){return"-"===e||"+"===e||this.isNumber(e)},throwError:function(e,t,n){n=n||this.index;var r=N(t)?"s "+t+"-"+this.index+" ["+this.text.substring(t,n)+"]":" "+n;throw Ir("lexerr","Lexer Error: {0} at column{1} in expression [{2}].",e,r,this.text)},readNumber:function(){for(var e="",t=this.index;this.index<this.text.length;){var n=I(this.text.charAt(this.index));if("."===n||this.isNumber(n))e+=n;else{var r=this.peek();if("e"===n&&this.isExpOperator(r))e+=n;else if(this.isExpOperator(n)&&r&&this.isNumber(r)&&"e"===e.charAt(e.length-1))e+=n;else{if(!this.isExpOperator(n)||r&&this.isNumber(r)||"e"!==e.charAt(e.length-1))break;this.throwError("Invalid exponent")}}this.index++}this.tokens.push({index:t,text:e,constant:!0,value:Number(e)})},readIdent:function(){var e=this.index;for(this.index+=this.peekMultichar().length;this.index<this.text.length;){var t=this.peekMultichar();if(!this.isIdentifierContinue(t))break;this.index+=t.length}this.tokens.push({index:e,text:this.text.slice(e,this.index),identifier:!0})},readString:function(e){var t=this.index;this.index++;for(var n="",r=e,a=!1;this.index<this.text.length;){var o=this.text.charAt(this.index);if(r+=o,a){if("u"===o){var i=this.text.substring(this.index+1,this.index+5);i.match(/[\da-f]{4}/i)||this.throwError("Invalid unicode escape [\\u"+i+"]"),this.index+=4,n+=String.fromCharCode(parseInt(i,16))}else{n+=dr[o]||o}a=!1}else if("\\"===o)a=!0;else{if(o===e)return this.index++,void this.tokens.push({index:t,text:r,constant:!0,value:n});n+=o}this.index++}this.throwError("Unterminated quote",t)}};var Cr=function(e,t){this.lexer=e,this.options=t};function br(e,t){return void 0!==e?e:t}function pr(e,t){return void 0===e?t:void 0===t?e:e+t}Cr.Program="Program",Cr.ExpressionStatement="ExpressionStatement",Cr.AssignmentExpression="AssignmentExpression",Cr.ConditionalExpression="ConditionalExpression",Cr.LogicalExpression="LogicalExpression",Cr.BinaryExpression="BinaryExpression",Cr.UnaryExpression="UnaryExpression",Cr.CallExpression="CallExpression",Cr.MemberExpression="MemberExpression",Cr.Identifier="Identifier",Cr.Literal="Literal",Cr.ArrayExpression="ArrayExpression",Cr.Property="Property",Cr.ObjectExpression="ObjectExpression",Cr.ThisExpression="ThisExpression",Cr.LocalsExpression="LocalsExpression",Cr.NGValueParameter="NGValueParameter",Cr.prototype={ast:function(e){this.text=e,this.tokens=this.lexer.lex(e);var t=this.program();return 0!==this.tokens.length&&this.throwError("is an unexpected token",this.tokens[0]),t},program:function(){for(var e=[];;)if(this.tokens.length>0&&!this.peek("}",")",";","]")&&e.push(this.expressionStatement()),!this.expect(";"))return{type:Cr.Program,body:e}},expressionStatement:function(){return{type:Cr.ExpressionStatement,expression:this.filterChain()}},filterChain:function(){for(var e=this.expression();this.expect("|");)e=this.filter(e);return e},expression:function(){return this.assignment()},assignment:function(){var e=this.ternary();if(this.expect("=")){if(!yr(e))throw Ir("lval","Trying to assign a value to a non l-value");e={type:Cr.AssignmentExpression,left:e,right:this.assignment(),operator:"="}}return e},ternary:function(){var e,t,n=this.logicalOR();return this.expect("?")&&(e=this.expression(),this.consume(":"))?(t=this.expression(),{type:Cr.ConditionalExpression,test:n,alternate:e,consequent:t}):n},logicalOR:function(){for(var e=this.logicalAND();this.expect("||");)e={type:Cr.LogicalExpression,operator:"||",left:e,right:this.logicalAND()};return e},logicalAND:function(){for(var e=this.equality();this.expect("&&");)e={type:Cr.LogicalExpression,operator:"&&",left:e,right:this.equality()};return e},equality:function(){for(var e,t=this.relational();e=this.expect("==","!=","===","!==");)t={type:Cr.BinaryExpression,operator:e.text,left:t,right:this.relational()};return t},relational:function(){for(var e,t=this.additive();e=this.expect("<",">","<=",">=");)t={type:Cr.BinaryExpression,operator:e.text,left:t,right:this.additive()};return t},additive:function(){for(var e,t=this.multiplicative();e=this.expect("+","-");)t={type:Cr.BinaryExpression,operator:e.text,left:t,right:this.multiplicative()};return t},multiplicative:function(){for(var e,t=this.unary();e=this.expect("*","/","%");)t={type:Cr.BinaryExpression,operator:e.text,left:t,right:this.unary()};return t},unary:function(){var e;return(e=this.expect("+","-","!"))?{type:Cr.UnaryExpression,operator:e.text,prefix:!0,argument:this.unary()}:this.primary()},primary:function(){var e,t;for(this.expect("(")?(e=this.filterChain(),this.consume(")")):this.expect("[")?e=this.arrayDeclaration():this.expect("{")?e=this.object():this.selfReferential.hasOwnProperty(this.peek().text)?e=oe(this.selfReferential[this.consume().text]):this.options.literals.hasOwnProperty(this.peek().text)?e={type:Cr.Literal,value:this.options.literals[this.consume().text]}:this.peek().identifier?e=this.identifier():this.peek().constant?e=this.constant():this.throwError("not a primary expression",this.peek());t=this.expect("(","[",".");)"("===t.text?(e={type:Cr.CallExpression,callee:e,arguments:this.parseArguments()},this.consume(")")):"["===t.text?(e={type:Cr.MemberExpression,object:e,property:this.expression(),computed:!0},this.consume("]")):"."===t.text?e={type:Cr.MemberExpression,object:e,property:this.identifier(),computed:!1}:this.throwError("IMPOSSIBLE");return e},filter:function(e){for(var t=[e],n={type:Cr.CallExpression,callee:this.identifier(),arguments:t,filter:!0};this.expect(":");)t.push(this.expression());return n},parseArguments:function(){var e=[];if(")"!==this.peekToken().text)do{e.push(this.filterChain())}while(this.expect(","));return e},identifier:function(){var e=this.consume();return e.identifier||this.throwError("is not a valid identifier",e),{type:Cr.Identifier,name:e.text}},constant:function(){return{type:Cr.Literal,value:this.consume().value}},arrayDeclaration:function(){var e=[];if("]"!==this.peekToken().text)do{if(this.peek("]"))break;e.push(this.expression())}while(this.expect(","));return this.consume("]"),{type:Cr.ArrayExpression,elements:e}},object:function(){var e,t=[];if("}"!==this.peekToken().text)do{if(this.peek("}"))break;e={type:Cr.Property,kind:"init"},this.peek().constant?(e.key=this.constant(),e.computed=!1,this.consume(":"),e.value=this.expression()):this.peek().identifier?(e.key=this.identifier(),e.computed=!1,this.peek(":")?(this.consume(":"),e.value=this.expression()):e.value=e.key):this.peek("[")?(this.consume("["),e.key=this.expression(),this.consume("]"),e.computed=!0,this.consume(":"),e.value=this.expression()):this.throwError("invalid key",this.peek()),t.push(e)}while(this.expect(","));return this.consume("}"),{type:Cr.ObjectExpression,properties:t}},throwError:function(e,t){throw Ir("syntax","Syntax Error: Token '{0}' {1} at column {2} of the expression [{3}] starting at [{4}].",t.text,e,t.index+1,this.text,this.text.substring(t.index))},consume:function(e){if(0===this.tokens.length)throw Ir("ueoe","Unexpected end of expression: {0}",this.text);var t=this.expect(e);return t||this.throwError("is unexpected, expecting ["+e+"]",this.peek()),t},peekToken:function(){if(0===this.tokens.length)throw Ir("ueoe","Unexpected end of expression: {0}",this.text);return this.tokens[0]},peek:function(e,t,n,r){return this.peekAhead(0,e,t,n,r)},peekAhead:function(e,t,n,r,a){if(this.tokens.length>e){var o=this.tokens[e],i=o.text;if(i===t||i===n||i===r||i===a||!t&&!n&&!r&&!a)return o}return!1},expect:function(e,t,n,r){var a=this.peek(e,t,n,r);return!!a&&(this.tokens.shift(),a)},selfReferential:{this:{type:Cr.ThisExpression},$locals:{type:Cr.LocalsExpression}}};function Qr(e,t,n){var r,a,o,i=e.isPure=function(e,t){switch(e.type){case Cr.MemberExpression:if(e.computed)return!1;break;case Cr.UnaryExpression:return 1;case Cr.BinaryExpression:return"+"!==e.operator&&1;case Cr.CallExpression:return!1}return void 0===t?2:t}(e,n);switch(e.type){case Cr.Program:r=!0,y(e.body,(function(e){Qr(e.expression,t,i),r=r&&e.expression.constant})),e.constant=r;break;case Cr.Literal:e.constant=!0,e.toWatch=[];break;case Cr.UnaryExpression:Qr(e.argument,t,i),e.constant=e.argument.constant,e.toWatch=e.argument.toWatch;break;case Cr.BinaryExpression:Qr(e.left,t,i),Qr(e.right,t,i),e.constant=e.left.constant&&e.right.constant,e.toWatch=e.left.toWatch.concat(e.right.toWatch);break;case Cr.LogicalExpression:Qr(e.left,t,i),Qr(e.right,t,i),e.constant=e.left.constant&&e.right.constant,e.toWatch=e.constant?[]:[e];break;case Cr.ConditionalExpression:Qr(e.test,t,i),Qr(e.alternate,t,i),Qr(e.consequent,t,i),e.constant=e.test.constant&&e.alternate.constant&&e.consequent.constant,e.toWatch=e.constant?[]:[e];break;case Cr.Identifier:e.constant=!1,e.toWatch=[e];break;case Cr.MemberExpression:Qr(e.object,t,i),e.computed&&Qr(e.property,t,i),e.constant=e.object.constant&&(!e.computed||e.property.constant),e.toWatch=e.constant?[]:[e];break;case Cr.CallExpression:o=!!e.filter&&function(e,t){return!e(t).$stateful}(t,e.callee.name),r=o,a=[],y(e.arguments,(function(e){Qr(e,t,i),r=r&&e.constant,a.push.apply(a,e.toWatch)})),e.constant=r,e.toWatch=o?a:[e];break;case Cr.AssignmentExpression:Qr(e.left,t,i),Qr(e.right,t,i),e.constant=e.left.constant&&e.right.constant,e.toWatch=[e];break;case Cr.ArrayExpression:r=!0,a=[],y(e.elements,(function(e){Qr(e,t,i),r=r&&e.constant,a.push.apply(a,e.toWatch)})),e.constant=r,e.toWatch=a;break;case Cr.ObjectExpression:r=!0,a=[],y(e.properties,(function(e){Qr(e.value,t,i),r=r&&e.value.constant,a.push.apply(a,e.value.toWatch),e.computed&&(Qr(e.key,t,!1),r=r&&e.key.constant,a.push.apply(a,e.key.toWatch))})),e.constant=r,e.toWatch=a;break;case Cr.ThisExpression:case Cr.LocalsExpression:e.constant=!1,e.toWatch=[]}}function hr(e){if(1===e.length){var t=e[0].expression,n=t.toWatch;return 1!==n.length||n[0]!==t?n:void 0}}function yr(e){return e.type===Cr.Identifier||e.type===Cr.MemberExpression}function mr(e){if(1===e.body.length&&yr(e.body[0].expression))return{type:Cr.AssignmentExpression,left:e.body[0].expression,right:{type:Cr.NGValueParameter},operator:"="}}function Fr(e){this.$filter=e}function Ur(e){this.$filter=e}function fr(e,t,n){this.ast=new Cr(e,n),this.astCompiler=n.csp?new Ur(t):new Fr(t)}function Gr(e){return P(e.valueOf)?e.valueOf():Br.call(e)}function Er(){var e,t,n=Ne(),r={true:!0,false:!1,null:null,undefined:void 0};this.addLiteral=function(e,t){r[e]=t},this.setIdentifierFns=function(n,r){return e=n,t=r,this},this.$get=["$filter",function(a){var o={csp:se().noUnsafeEval,literals:oe(r),isIdentifierStart:P(e)&&e,isIdentifierContinue:P(t)&&t};return i.$$getAst=function(e){return new fr(new _r(o),a,o).getAst(e).ast},i;function i(e,t){var r,i;switch(typeof e){case"string":if(e=e.trim(),!(r=n[i=e]))r=new fr(new _r(o),a,o).parse(e),n[i]=B(r);return A(r,t);case"function":return A(e,t);default:return A(R,t)}}function c(e,t,n){return null==e||null==t?e===t:!("object"==typeof e&&"object"==typeof(e=Gr(e))&&!n)&&(e===t||e!=e&&t!=t)}function s(e,t,n,r,a){var o,i=r.inputs;if(1===i.length){var s=c;return i=i[0],e.$watch((function(e){var t=i(e);return c(t,s,i.isPure)||(o=r(e,void 0,void 0,[t]),s=t&&Gr(t)),o}),t,n,a)}for(var l=[],g=[],I=0,B=i.length;I<B;I++)l[I]=c,g[I]=null;return e.$watch((function(e){for(var t=!1,n=0,a=i.length;n<a;n++){var s=i[n](e);(t||(t=!c(s,l[n],i[n].isPure)))&&(g[n]=s,l[n]=s&&Gr(s))}return t&&(o=r(e,void 0,void 0,g)),o}),t,n,a)}function l(e,t,n,r,a){var o,i,c=r.literal?g:N,s=r.$$intercepted||r,l=r.$$interceptor||V,I=r.inputs&&!s.inputs;return u.literal=r.literal,u.constant=r.constant,u.inputs=r.inputs,B(u),o=e.$watch(u,t,n,a);function A(){c(i)&&o()}function u(e,t,n,r){return i=I&&r?r[0]:s(e,t,n,r),c(i)&&e.$$postDigest(A),l(i)}}function g(e){var t=!0;return y(e,(function(e){N(e)||(t=!1)})),t}function I(e,t,n,r){var a=e.$watch((function(e){return a(),r(e)}),t,n);return a}function B(e){return e.constant?e.$$watchDelegate=I:e.oneTime?e.$$watchDelegate=l:e.inputs&&(e.$$watchDelegate=s),e}function A(e,t){if(!t)return e;e.$$interceptor&&(t=function(e,t){function n(n){return t(e(n))}return n.$stateful=e.$stateful||t.$stateful,n.$$pure=e.$$pure&&t.$$pure,n}(e.$$interceptor,t),e=e.$$intercepted);var n=!1,r=function(r,a,o,i){var c=n&&i?i[0]:e(r,a,o,i);return t(c)};return r.$$intercepted=e,r.$$interceptor=t,r.literal=e.literal,r.oneTime=e.oneTime,r.constant=e.constant,t.$stateful||(n=!e.inputs,r.inputs=e.inputs?e.inputs:[e],t.$$pure||(r.inputs=r.inputs.map((function(e){return 2===e.isPure?function(t){return e(t)}:e})))),B(r)}}]}function vr(){var e=!0;this.$get=["$rootScope","$exceptionHandler",function(t,n){return Xr((function(e){t.$evalAsync(e)}),n,e)}],this.errorOnUnhandledRejections=function(t){return N(t)?(e=t,this):e}}function Zr(){var e=!0;this.$get=["$browser","$exceptionHandler",function(t,n){return Xr((function(e){t.defer(e)}),n,e)}],this.errorOnUnhandledRejections=function(t){return N(t)?(e=t,this):e}}function Xr(e,t,n){var r=a("$q",TypeError),o=0,i=[];function c(){return new s}function s(){var e=this.promise=new l;this.resolve=function(t){B(e,t)},this.reject=function(t){A(e,t)},this.notify=function(t){d(e,t)}}function l(){this.$$state={status:0}}function g(){for(;!o&&i.length;){var e=i.shift();if(!Wr(e)){Rr(e);var n="Possibly unhandled rejection: "+Se(e.value);J(e.value)?t(e.value,n):t(n)}}}function I(r){!n||r.pending||2!==r.status||Wr(r)||(0===o&&0===i.length&&e(g),i.push(r)),!r.processScheduled&&r.pending&&(r.processScheduled=!0,++o,e((function(){!function(r){var a,i,c;c=r.pending,r.processScheduled=!1,r.pending=void 0;try{for(var s=0,l=c.length;s<l;++s){Rr(r),i=c[s][0],a=c[s][r.status];try{P(a)?B(i,a(r.value)):1===r.status?B(i,r.value):A(i,r.value)}catch(e){A(i,e),e&&!0===e.$$passToExceptionHandler&&t(e)}}}finally{--o,n&&0===o&&e(g)}}(r)})))}function B(e,t){e.$$state.status||(t===e?u(e,r("qcycle","Expected promise to be resolved with value other than itself '{0}'",t)):function e(t,n){var r,a=!1;try{(w(n)||P(n))&&(r=n.then),P(r)?(t.$$state.status=-1,r.call(n,o,i,(function(e){d(t,e)}))):(t.$$state.value=n,t.$$state.status=1,I(t.$$state))}catch(e){i(e)}function o(n){a||(a=!0,e(t,n))}function i(e){a||(a=!0,u(t,e))}}(e,t))}function A(e,t){e.$$state.status||u(e,t)}function u(e,t){e.$$state.value=t,e.$$state.status=2,I(e.$$state)}function d(n,r){var a=n.$$state.pending;n.$$state.status<=0&&a&&a.length&&e((function(){for(var e,n,o=0,i=a.length;o<i;o++){n=a[o][0],e=a[o][3];try{d(n,P(e)?e(r):r)}catch(e){t(e)}}}))}function _(e){var t=new l;return A(t,e),t}function C(e,t,n){var r=null;try{P(n)&&(r=n())}catch(e){return _(e)}return K(r)?r.then((function(){return t(e)}),_):t(e)}function b(e,t,n,r){var a=new l;return B(a,e),a.then(t,n,r)}E(l.prototype,{then:function(e,t,n){if(T(e)&&T(t)&&T(n))return this;var r=new l;return this.$$state.pending=this.$$state.pending||[],this.$$state.pending.push([r,e,t,n]),this.$$state.status>0&&I(this.$$state),r},catch:function(e){return this.then(null,e)},finally:function(e,t){return this.then((function(t){return C(t,p,e)}),(function(t){return C(t,_,e)}),t)}});var p=b;function Q(e){if(!P(e))throw r("norslvr","Expected resolverFn, got '{0}'",e);var t=new l;return e((function(e){B(t,e)}),(function(e){A(t,e)})),t}return Q.prototype=l.prototype,Q.defer=c,Q.reject=_,Q.when=b,Q.resolve=p,Q.all=function(e){var t=new l,n=0,r=D(e)?[]:{};return y(e,(function(e,a){n++,b(e).then((function(e){r[a]=e,--n||B(t,r)}),(function(e){A(t,e)}))})),0===n&&B(t,r),t},Q.race=function(e){var t=c();return y(e,(function(e){b(e).then(t.resolve,t.reject)})),t.promise},Q}function Wr(e){return!!e.pur}function Rr(e){e.pur=!0}function Vr(e){e.$$state&&Rr(e.$$state)}function Or(){this.$get=["$window","$timeout",function(e,t){var n=e.requestAnimationFrame||e.webkitRequestAnimationFrame,r=e.cancelAnimationFrame||e.webkitCancelAnimationFrame||e.webkitCancelRequestAnimationFrame,a=!!n,o=a?function(e){var t=n(e);return function(){r(t)}}:function(e){var n=t(e,16.66,!1);return function(){t.cancel(n)}};return o.supported=a,o}]}function xr(){var e=10,t=a("$rootScope"),n=null,r=null;this.digestTtl=function(t){return arguments.length&&(e=t),e},this.$get=["$exceptionHandler","$parse","$browser",function(a,i,c){function s(e){e.currentScope.$$destroyed=!0}function l(){this.$id=U(),this.$$phase=this.$parent=this.$$watchers=this.$$nextSibling=this.$$prevSibling=this.$$childHead=this.$$childTail=null,this.$root=this,this.$$destroyed=!1,this.$$suspended=!1,this.$$listeners={},this.$$listenerCount={},this.$$watchersCount=0,this.$$isolateBindings=null}l.prototype={constructor:l,$new:function(e,t){var n;return t=t||this,e?(n=new l).$root=this.$root:(this.$$ChildScope||(this.$$ChildScope=function(e){function t(){this.$$watchers=this.$$nextSibling=this.$$childHead=this.$$childTail=null,this.$$listeners={},this.$$listenerCount={},this.$$watchersCount=0,this.$id=U(),this.$$ChildScope=null,this.$$suspended=!1}return t.prototype=e,t}(this)),n=new this.$$ChildScope),n.$parent=t,n.$$prevSibling=t.$$childTail,t.$$childHead?(t.$$childTail.$$nextSibling=n,t.$$childTail=n):t.$$childHead=t.$$childTail=n,(e||t!==this)&&n.$on("$destroy",s),n},$watch:function(e,t,r,a){var o=i(e),c=P(t)?t:R;if(o.$$watchDelegate)return o.$$watchDelegate(this,c,r,o,e);var s=this,l=s.$$watchers,g={fn:c,last:Q,get:o,exp:a||e,eq:!!r};return n=null,l||((l=s.$$watchers=[]).$$digestWatchIndex=-1),l.unshift(g),l.$$digestWatchIndex++,b(this,1),function(){var e=ae(l,g);e>=0&&(b(s,-1),e<l.$$digestWatchIndex&&l.$$digestWatchIndex--),n=null}},$watchGroup:function(e,t){var n=new Array(e.length),r=new Array(e.length),a=[],o=this,i=!1,c=!0;if(!e.length){var s=!0;return o.$evalAsync((function(){s&&t(r,r,o)})),function(){s=!1}}if(1===e.length)return this.$watch(e[0],(function(e,a,o){r[0]=e,n[0]=a,t(r,e===a?r:n,o)}));function l(){i=!1;try{c?(c=!1,t(r,r,o)):t(r,n,o)}finally{for(var a=0;a<e.length;a++)n[a]=r[a]}}return y(e,(function(e,t){var n=o.$watch(e,(function(e){r[t]=e,i||(i=!0,o.$evalAsync(l))}));a.push(n)})),function(){for(;a.length;)a.shift()()}},$watchCollection:function(e,t){d.$$pure=i(e).literal,d.$stateful=!d.$$pure;var n,r,a,o=this,c=t.length>1,s=0,l=i(e,d),I=[],B={},A=!0,u=0;function d(e){var t,a,o,i;if(!T(n=e)){if(w(n))if(h(n)){r!==I&&(u=(r=I).length=0,s++),t=n.length,u!==t&&(s++,r.length=u=t);for(var c=0;c<t;c++)i=r[c],o=n[c],i!=i&&o!=o||i===o||(s++,r[c]=o)}else{for(a in r!==B&&(r=B={},u=0,s++),t=0,n)g.call(n,a)&&(t++,o=n[a],i=r[a],a in r?i!=i&&o!=o||i===o||(s++,r[a]=o):(u++,r[a]=o,s++));if(u>t)for(a in s++,r)g.call(n,a)||(u--,delete r[a])}else r!==n&&(r=n,s++);return s}}return this.$watch(l,(function(){if(A?(A=!1,t(n,n,o)):t(n,a,o),c)if(w(n))if(h(n)){a=new Array(n.length);for(var e=0;e<n.length;e++)a[e]=n[e]}else for(var r in a={},n)g.call(n,r)&&(a[r]=n[r]);else a=n}))},$digest:function(){var o,i,s,l,g,u,b,p,h,y=e,F=B.length?I:this,U=[];_("$digest"),c.$$checkUrlChange(),this===I&&null!==r&&(c.defer.cancel(r),m()),n=null;do{g=!1,b=F;for(var f=0;f<B.length;f++){try{(0,(h=B[f]).fn)(h.scope,h.locals)}catch(e){a(e)}n=null}B.length=0;e:do{if(l=!b.$$suspended&&b.$$watchers)for(l.$$digestWatchIndex=l.length;l.$$digestWatchIndex--;)try{if(o=l[l.$$digestWatchIndex])if((i=(0,o.get)(b))===(s=o.last)||(o.eq?ce(i,s):X(i)&&X(s))){if(o===n){g=!1;break e}}else g=!0,n=o,o.last=o.eq?oe(i,null):i,(0,o.fn)(i,s===Q?i:s,b),y<5&&(U[p=4-y]||(U[p]=[]),U[p].push({msg:P(o.exp)?"fn: "+(o.exp.name||o.exp.toString()):o.exp,newVal:i,oldVal:s}))}catch(e){a(e)}if(!(u=!b.$$suspended&&b.$$watchersCount&&b.$$childHead||b!==F&&b.$$nextSibling))for(;b!==F&&!(u=b.$$nextSibling);)b=b.$parent}while(b=u);if((g||B.length)&&!y--)throw C(),t("infdig","{0} $digest() iterations reached. Aborting!\nWatchers fired in the last 5 iterations: {1}",e,U)}while(g||B.length);for(C();d<A.length;)try{A[d++]()}catch(e){a(e)}A.length=d=0,c.$$checkUrlChange()},$suspend:function(){this.$$suspended=!0},$isSuspended:function(){return this.$$suspended},$resume:function(){this.$$suspended=!1},$destroy:function(){if(!this.$$destroyed){var e=this.$parent;for(var t in this.$broadcast("$destroy"),this.$$destroyed=!0,this===I&&c.$$applicationDestroyed(),b(this,-this.$$watchersCount),this.$$listenerCount)p(this,this.$$listenerCount[t],t);e&&e.$$childHead===this&&(e.$$childHead=this.$$nextSibling),e&&e.$$childTail===this&&(e.$$childTail=this.$$prevSibling),this.$$prevSibling&&(this.$$prevSibling.$$nextSibling=this.$$nextSibling),this.$$nextSibling&&(this.$$nextSibling.$$prevSibling=this.$$prevSibling),this.$destroy=this.$digest=this.$apply=this.$evalAsync=this.$applyAsync=R,this.$on=this.$watch=this.$watchGroup=function(){return R},this.$$listeners={},this.$$nextSibling=null,function e(t){9===o&&(t.$$childHead&&e(t.$$childHead),t.$$nextSibling&&e(t.$$nextSibling)),t.$parent=t.$$nextSibling=t.$$prevSibling=t.$$childHead=t.$$childTail=t.$root=t.$$watchers=null}(this)}},$eval:function(e,t){return i(e)(this,t)},$evalAsync:function(e,t){I.$$phase||B.length||c.defer((function(){B.length&&I.$digest()}),null,"$evalAsync"),B.push({scope:this,fn:i(e),locals:t})},$$postDigest:function(e){A.push(e)},$apply:function(e){try{_("$apply");try{return this.$eval(e)}finally{C()}}catch(e){a(e)}finally{try{I.$digest()}catch(e){throw a(e),e}}},$applyAsync:function(e){var t=this;e&&u.push((function(){t.$eval(e)})),e=i(e),null===r&&(r=c.defer((function(){I.$apply(m)}),null,"$applyAsync"))},$on:function(e,t){var n=this.$$listeners[e];n||(this.$$listeners[e]=n=[]),n.push(t);var r=this;do{r.$$listenerCount[e]||(r.$$listenerCount[e]=0),r.$$listenerCount[e]++}while(r=r.$parent);var a=this;return function(){var r=n.indexOf(t);-1!==r&&(delete n[r],p(a,1,e))}},$emit:function(e,t){var n,r,o,i=[],c=this,s=!1,l={name:e,targetScope:c,stopPropagation:function(){s=!0},preventDefault:function(){l.defaultPrevented=!0},defaultPrevented:!1},g=ge([l],arguments,1);do{for(n=c.$$listeners[e]||i,l.currentScope=c,r=0,o=n.length;r<o;r++)if(n[r])try{n[r].apply(null,g)}catch(e){a(e)}else n.splice(r,1),r--,o--;if(s)break;c=c.$parent}while(c);return l.currentScope=null,l},$broadcast:function(e,t){var n=this,r=n,o=n,i={name:e,targetScope:n,preventDefault:function(){i.defaultPrevented=!0},defaultPrevented:!1};if(!n.$$listenerCount[e])return i;for(var c,s,l,g=ge([i],arguments,1);r=o;){for(i.currentScope=r,s=0,l=(c=r.$$listeners[e]||[]).length;s<l;s++)if(c[s])try{c[s].apply(null,g)}catch(e){a(e)}else c.splice(s,1),s--,l--;if(!(o=r.$$listenerCount[e]&&r.$$childHead||r!==n&&r.$$nextSibling))for(;r!==n&&!(o=r.$$nextSibling);)r=r.$parent}return i.currentScope=null,i}};var I=new l,B=I.$$asyncQueue=[],A=I.$$postDigestQueue=[],u=I.$$applyAsyncQueue=[],d=0;return I;function _(e){if(I.$$phase)throw t("inprog","{0} already in progress",I.$$phase);I.$$phase=e}function C(){I.$$phase=null}function b(e,t){do{e.$$watchersCount+=t}while(e=e.$parent)}function p(e,t,n){do{e.$$listenerCount[n]-=t,0===e.$$listenerCount[n]&&delete e.$$listenerCount[n]}while(e=e.$parent)}function Q(){}function m(){for(;u.length;)try{u.shift()()}catch(e){a(e)}r=null}}]}function Tr(){var e=/^\s*(https?|s?ftp|mailto|tel|file):/,t=/^\s*((https?|ftp|file|blob):|data:image\/)/;this.aHrefSanitizationWhitelist=function(t){return N(t)?(e=t,this):e},this.imgSrcSanitizationWhitelist=function(e){return N(e)?(t=e,this):t},this.$get=function(){return function(n,r){var a=r?t:e,o=ra(n&&n.trim()).href;return""===o||o.match(a)?n:"unsafe:"+o}}}Fr.prototype={compile:function(e){var t=this;this.state={nextId:0,filters:{},fn:{vars:[],body:[],own:{}},assign:{vars:[],body:[],own:{}},inputs:[]},Qr(e,t.$filter);var n,r="";if(this.stage="assign",n=mr(e)){this.state.computing="assign";var a=this.nextId();this.recurse(n,a),this.return_(a),r="fn.assign="+this.generateFunction("assign","s,v,l")}var o=hr(e.body);t.stage="inputs",y(o,(function(e,n){var r="fn"+n;t.state[r]={vars:[],body:[],own:{}},t.state.computing=r;var a=t.nextId();t.recurse(e,a),t.return_(a),t.state.inputs.push({name:r,isPure:e.isPure}),e.watchId=n})),this.state.computing="fn",this.stage="main",this.recurse(e);var i='"'+this.USE+" "+this.STRICT+'";\n'+this.filterPrefix()+"var fn="+this.generateFunction("fn","s,l,a,i")+r+this.watchFns()+"return fn;",c=new Function("$filter","getStringValue","ifDefined","plus",i)(this.$filter,Ar,br,pr);return this.state=this.stage=void 0,c},USE:"use",STRICT:"strict",watchFns:function(){var e=[],t=this.state.inputs,n=this;return y(t,(function(t){e.push("var "+t.name+"="+n.generateFunction(t.name,"s")),t.isPure&&e.push(t.name,".isPure="+JSON.stringify(t.isPure)+";")})),t.length&&e.push("fn.inputs=["+t.map((function(e){return e.name})).join(",")+"];"),e.join("")},generateFunction:function(e,t){return"function("+t+"){"+this.varsPrefix(e)+this.body(e)+"};"},filterPrefix:function(){var e=[],t=this;return y(this.state.filters,(function(n,r){e.push(n+"=$filter("+t.escape(r)+")")})),e.length?"var "+e.join(",")+";":""},varsPrefix:function(e){return this.state[e].vars.length?"var "+this.state[e].vars.join(",")+";":""},body:function(e){return this.state[e].body.join("")},recurse:function(e,t,n,r,a,o){var i,c,s,l,g,I=this;if(r=r||R,!o&&N(e.watchId))return t=t||this.nextId(),void this.if_("i",this.lazyAssign(t,this.computedMember("i",e.watchId)),this.lazyRecurse(e,t,n,r,a,!0));switch(e.type){case Cr.Program:y(e.body,(function(t,n){I.recurse(t.expression,void 0,void 0,(function(e){c=e})),n!==e.body.length-1?I.current().body.push(c,";"):I.return_(c)}));break;case Cr.Literal:l=this.escape(e.value),this.assign(t,l),r(t||l);break;case Cr.UnaryExpression:this.recurse(e.argument,void 0,void 0,(function(e){c=e})),l=e.operator+"("+this.ifDefined(c,0)+")",this.assign(t,l),r(l);break;case Cr.BinaryExpression:this.recurse(e.left,void 0,void 0,(function(e){i=e})),this.recurse(e.right,void 0,void 0,(function(e){c=e})),l="+"===e.operator?this.plus(i,c):"-"===e.operator?this.ifDefined(i,0)+e.operator+this.ifDefined(c,0):"("+i+")"+e.operator+"("+c+")",this.assign(t,l),r(l);break;case Cr.LogicalExpression:t=t||this.nextId(),I.recurse(e.left,t),I.if_("&&"===e.operator?t:I.not(t),I.lazyRecurse(e.right,t)),r(t);break;case Cr.ConditionalExpression:t=t||this.nextId(),I.recurse(e.test,t),I.if_(t,I.lazyRecurse(e.alternate,t),I.lazyRecurse(e.consequent,t)),r(t);break;case Cr.Identifier:t=t||this.nextId(),n&&(n.context="inputs"===I.stage?"s":this.assign(this.nextId(),this.getHasOwnProperty("l",e.name)+"?l:s"),n.computed=!1,n.name=e.name),I.if_("inputs"===I.stage||I.not(I.getHasOwnProperty("l",e.name)),(function(){I.if_("inputs"===I.stage||"s",(function(){a&&1!==a&&I.if_(I.isNull(I.nonComputedMember("s",e.name)),I.lazyAssign(I.nonComputedMember("s",e.name),"{}")),I.assign(t,I.nonComputedMember("s",e.name))}))}),t&&I.lazyAssign(t,I.nonComputedMember("l",e.name))),r(t);break;case Cr.MemberExpression:i=n&&(n.context=this.nextId())||this.nextId(),t=t||this.nextId(),I.recurse(e.object,i,void 0,(function(){I.if_(I.notNull(i),(function(){e.computed?(c=I.nextId(),I.recurse(e.property,c),I.getStringValue(c),a&&1!==a&&I.if_(I.not(I.computedMember(i,c)),I.lazyAssign(I.computedMember(i,c),"{}")),l=I.computedMember(i,c),I.assign(t,l),n&&(n.computed=!0,n.name=c)):(a&&1!==a&&I.if_(I.isNull(I.nonComputedMember(i,e.property.name)),I.lazyAssign(I.nonComputedMember(i,e.property.name),"{}")),l=I.nonComputedMember(i,e.property.name),I.assign(t,l),n&&(n.computed=!1,n.name=e.property.name))}),(function(){I.assign(t,"undefined")})),r(t)}),!!a);break;case Cr.CallExpression:t=t||this.nextId(),e.filter?(c=I.filter(e.callee.name),s=[],y(e.arguments,(function(e){var t=I.nextId();I.recurse(e,t),s.push(t)})),l=c+"("+s.join(",")+")",I.assign(t,l),r(t)):(c=I.nextId(),i={},s=[],I.recurse(e.callee,c,i,(function(){I.if_(I.notNull(c),(function(){y(e.arguments,(function(t){I.recurse(t,e.constant?void 0:I.nextId(),void 0,(function(e){s.push(e)}))})),l=i.name?I.member(i.context,i.name,i.computed)+"("+s.join(",")+")":c+"("+s.join(",")+")",I.assign(t,l)}),(function(){I.assign(t,"undefined")})),r(t)})));break;case Cr.AssignmentExpression:c=this.nextId(),i={},this.recurse(e.left,void 0,i,(function(){I.if_(I.notNull(i.context),(function(){I.recurse(e.right,c),l=I.member(i.context,i.name,i.computed)+e.operator+c,I.assign(t,l),r(t||l)}))}),1);break;case Cr.ArrayExpression:s=[],y(e.elements,(function(t){I.recurse(t,e.constant?void 0:I.nextId(),void 0,(function(e){s.push(e)}))})),l="["+s.join(",")+"]",this.assign(t,l),r(t||l);break;case Cr.ObjectExpression:s=[],g=!1,y(e.properties,(function(e){e.computed&&(g=!0)})),g?(t=t||this.nextId(),this.assign(t,"{}"),y(e.properties,(function(e){e.computed?(i=I.nextId(),I.recurse(e.key,i)):i=e.key.type===Cr.Identifier?e.key.name:""+e.key.value,c=I.nextId(),I.recurse(e.value,c),I.assign(I.member(t,i,e.computed),c)}))):(y(e.properties,(function(t){I.recurse(t.value,e.constant?void 0:I.nextId(),void 0,(function(e){s.push(I.escape(t.key.type===Cr.Identifier?t.key.name:""+t.key.value)+":"+e)}))})),l="{"+s.join(",")+"}",this.assign(t,l)),r(t||l);break;case Cr.ThisExpression:this.assign(t,"s"),r(t||"s");break;case Cr.LocalsExpression:this.assign(t,"l"),r(t||"l");break;case Cr.NGValueParameter:this.assign(t,"v"),r(t||"v")}},getHasOwnProperty:function(e,t){var n=e+"."+t,r=this.current().own;return r.hasOwnProperty(n)||(r[n]=this.nextId(!1,e+"&&("+this.escape(t)+" in "+e+")")),r[n]},assign:function(e,t){if(e)return this.current().body.push(e,"=",t,";"),e},filter:function(e){return this.state.filters.hasOwnProperty(e)||(this.state.filters[e]=this.nextId(!0)),this.state.filters[e]},ifDefined:function(e,t){return"ifDefined("+e+","+this.escape(t)+")"},plus:function(e,t){return"plus("+e+","+t+")"},return_:function(e){this.current().body.push("return ",e,";")},if_:function(e,t,n){if(!0===e)t();else{var r=this.current().body;r.push("if(",e,"){"),t(),r.push("}"),n&&(r.push("else{"),n(),r.push("}"))}},not:function(e){return"!("+e+")"},isNull:function(e){return e+"==null"},notNull:function(e){return e+"!=null"},nonComputedMember:function(e,t){return/^[$_a-zA-Z][$_a-zA-Z0-9]*$/.test(t)?e+"."+t:e+'["'+t.replace(/[^$_a-zA-Z0-9]/g,this.stringEscapeFn)+'"]'},computedMember:function(e,t){return e+"["+t+"]"},member:function(e,t,n){return n?this.computedMember(e,t):this.nonComputedMember(e,t)},getStringValue:function(e){this.assign(e,"getStringValue("+e+")")},lazyRecurse:function(e,t,n,r,a,o){var i=this;return function(){i.recurse(e,t,n,r,a,o)}},lazyAssign:function(e,t){var n=this;return function(){n.assign(e,t)}},stringEscapeRegex:/[^ a-zA-Z0-9]/g,stringEscapeFn:function(e){return"\\u"+("0000"+e.charCodeAt(0).toString(16)).slice(-4)},escape:function(e){if(Y(e))return"'"+e.replace(this.stringEscapeRegex,this.stringEscapeFn)+"'";if(S(e))return e.toString();if(!0===e)return"true";if(!1===e)return"false";if(null===e)return"null";if(void 0===e)return"undefined";throw Ir("esc","IMPOSSIBLE")},nextId:function(e,t){var n="v"+this.state.nextId++;return e||this.current().vars.push(n+(t?"="+t:"")),n},current:function(){return this.state[this.state.computing]}},Ur.prototype={compile:function(e){var t,n,r=this;Qr(e,r.$filter),(t=mr(e))&&(n=this.recurse(t));var a,o=hr(e.body);o&&(a=[],y(o,(function(e,t){var n=r.recurse(e);n.isPure=e.isPure,e.input=n,a.push(n),e.watchId=t})));var i=[];y(e.body,(function(e){i.push(r.recurse(e.expression))}));var c=0===e.body.length?R:1===e.body.length?i[0]:function(e,t){var n;return y(i,(function(r){n=r(e,t)})),n};return n&&(c.assign=function(e,t,r){return n(e,r,t)}),a&&(c.inputs=a),c},recurse:function(e,t,n){var r,a,o,i=this;if(e.input)return this.inputs(e.input,e.watchId);switch(e.type){case Cr.Literal:return this.value(e.value,t);case Cr.UnaryExpression:return a=this.recurse(e.argument),this["unary"+e.operator](a,t);case Cr.BinaryExpression:case Cr.LogicalExpression:return r=this.recurse(e.left),a=this.recurse(e.right),this["binary"+e.operator](r,a,t);case Cr.ConditionalExpression:return this["ternary?:"](this.recurse(e.test),this.recurse(e.alternate),this.recurse(e.consequent),t);case Cr.Identifier:return i.identifier(e.name,t,n);case Cr.MemberExpression:return r=this.recurse(e.object,!1,!!n),e.computed||(a=e.property.name),e.computed&&(a=this.recurse(e.property)),e.computed?this.computedMember(r,a,t,n):this.nonComputedMember(r,a,t,n);case Cr.CallExpression:return o=[],y(e.arguments,(function(e){o.push(i.recurse(e))})),e.filter&&(a=this.$filter(e.callee.name)),e.filter||(a=this.recurse(e.callee,!0)),e.filter?function(e,n,r,i){for(var c=[],s=0;s<o.length;++s)c.push(o[s](e,n,r,i));var l=a.apply(void 0,c,i);return t?{context:void 0,name:void 0,value:l}:l}:function(e,n,r,i){var c,s=a(e,n,r,i);if(null!=s.value){for(var l=[],g=0;g<o.length;++g)l.push(o[g](e,n,r,i));c=s.value.apply(s.context,l)}return t?{value:c}:c};case Cr.AssignmentExpression:return r=this.recurse(e.left,!0,1),a=this.recurse(e.right),function(e,n,o,i){var c=r(e,n,o,i),s=a(e,n,o,i);return c.context[c.name]=s,t?{value:s}:s};case Cr.ArrayExpression:return o=[],y(e.elements,(function(e){o.push(i.recurse(e))})),function(e,n,r,a){for(var i=[],c=0;c<o.length;++c)i.push(o[c](e,n,r,a));return t?{value:i}:i};case Cr.ObjectExpression:return o=[],y(e.properties,(function(e){e.computed?o.push({key:i.recurse(e.key),computed:!0,value:i.recurse(e.value)}):o.push({key:e.key.type===Cr.Identifier?e.key.name:""+e.key.value,computed:!1,value:i.recurse(e.value)})})),function(e,n,r,a){for(var i={},c=0;c<o.length;++c)o[c].computed?i[o[c].key(e,n,r,a)]=o[c].value(e,n,r,a):i[o[c].key]=o[c].value(e,n,r,a);return t?{value:i}:i};case Cr.ThisExpression:return function(e){return t?{value:e}:e};case Cr.LocalsExpression:return function(e,n){return t?{value:n}:n};case Cr.NGValueParameter:return function(e,n,r){return t?{value:r}:r}}},"unary+":function(e,t){return function(n,r,a,o){var i=e(n,r,a,o);return i=N(i)?+i:0,t?{value:i}:i}},"unary-":function(e,t){return function(n,r,a,o){var i=e(n,r,a,o);return i=N(i)?-i:-0,t?{value:i}:i}},"unary!":function(e,t){return function(n,r,a,o){var i=!e(n,r,a,o);return t?{value:i}:i}},"binary+":function(e,t,n){return function(r,a,o,i){var c=pr(e(r,a,o,i),t(r,a,o,i));return n?{value:c}:c}},"binary-":function(e,t,n){return function(r,a,o,i){var c=e(r,a,o,i),s=t(r,a,o,i),l=(N(c)?c:0)-(N(s)?s:0);return n?{value:l}:l}},"binary*":function(e,t,n){return function(r,a,o,i){var c=e(r,a,o,i)*t(r,a,o,i);return n?{value:c}:c}},"binary/":function(e,t,n){return function(r,a,o,i){var c=e(r,a,o,i)/t(r,a,o,i);return n?{value:c}:c}},"binary%":function(e,t,n){return function(r,a,o,i){var c=e(r,a,o,i)%t(r,a,o,i);return n?{value:c}:c}},"binary===":function(e,t,n){return function(r,a,o,i){var c=e(r,a,o,i)===t(r,a,o,i);return n?{value:c}:c}},"binary!==":function(e,t,n){return function(r,a,o,i){var c=e(r,a,o,i)!==t(r,a,o,i);return n?{value:c}:c}},"binary==":function(e,t,n){return function(r,a,o,i){var c=e(r,a,o,i)==t(r,a,o,i);return n?{value:c}:c}},"binary!=":function(e,t,n){return function(r,a,o,i){var c=e(r,a,o,i)!=t(r,a,o,i);return n?{value:c}:c}},"binary<":function(e,t,n){return function(r,a,o,i){var c=e(r,a,o,i)<t(r,a,o,i);return n?{value:c}:c}},"binary>":function(e,t,n){return function(r,a,o,i){var c=e(r,a,o,i)>t(r,a,o,i);return n?{value:c}:c}},"binary<=":function(e,t,n){return function(r,a,o,i){var c=e(r,a,o,i)<=t(r,a,o,i);return n?{value:c}:c}},"binary>=":function(e,t,n){return function(r,a,o,i){var c=e(r,a,o,i)>=t(r,a,o,i);return n?{value:c}:c}},"binary&&":function(e,t,n){return function(r,a,o,i){var c=e(r,a,o,i)&&t(r,a,o,i);return n?{value:c}:c}},"binary||":function(e,t,n){return function(r,a,o,i){var c=e(r,a,o,i)||t(r,a,o,i);return n?{value:c}:c}},"ternary?:":function(e,t,n,r){return function(a,o,i,c){var s=e(a,o,i,c)?t(a,o,i,c):n(a,o,i,c);return r?{value:s}:s}},value:function(e,t){return function(){return t?{context:void 0,name:void 0,value:e}:e}},identifier:function(e,t,n){return function(r,a,o,i){var c=a&&e in a?a:r;n&&1!==n&&c&&null==c[e]&&(c[e]={});var s=c?c[e]:void 0;return t?{context:c,name:e,value:s}:s}},computedMember:function(e,t,n,r){return function(a,o,i,c){var s,l,g=e(a,o,i,c);return null!=g&&(s=Ar(s=t(a,o,i,c)),r&&1!==r&&g&&!g[s]&&(g[s]={}),l=g[s]),n?{context:g,name:s,value:l}:l}},nonComputedMember:function(e,t,n,r){return function(a,o,i,c){var s=e(a,o,i,c);r&&1!==r&&s&&null==s[t]&&(s[t]={});var l=null!=s?s[t]:void 0;return n?{context:s,name:t,value:l}:l}},inputs:function(e,t){return function(n,r,a,o){return o?o[t]:e(n,r,a)}}},fr.prototype={constructor:fr,parse:function(e){var t=this.getAst(e),n=this.astCompiler.compile(t.ast);return n.literal=function(e){return 0===e.body.length||1===e.body.length&&(e.body[0].expression.type===Cr.Literal||e.body[0].expression.type===Cr.ArrayExpression||e.body[0].expression.type===Cr.ObjectExpression)}(t.ast),n.constant=function(e){return e.constant}(t.ast),n.oneTime=t.oneTime,n},getAst:function(e){var t=!1;return":"===(e=e.trim()).charAt(0)&&":"===e.charAt(1)&&(t=!0,e=e.substring(2)),{ast:this.ast.ast(e),oneTime:t}}};var Nr=a("$sce"),wr={HTML:"html",CSS:"css",MEDIA_URL:"mediaUrl",URL:"url",RESOURCE_URL:"resourceUrl",JS:"js"},kr=/_([a-z])/g;function Yr(e){return e.replace(kr,je)}function Sr(e){var t=[];return N(e)&&y(e,(function(e){t.push(function(e){if("self"===e)return e;if(Y(e)){if(e.indexOf("***")>-1)throw Nr("iwcard","Illegal sequence *** in string matcher. String: {0}",e);return e=ee(e).replace(/\\\*\\\*/g,".*").replace(/\\\*/g,"[^:/.?&;]*"),new RegExp("^"+e+"$")}if(M(e))return new RegExp("^"+e.source+"$");throw Nr("imatcher",'Matchers may only be "self", string patterns or RegExp objects')}(e))})),t}function Hr(){this.SCE_CONTEXTS=wr;var t=["self"],n=[];this.resourceUrlWhitelist=function(e){return arguments.length&&(t=Sr(e)),t},this.resourceUrlBlacklist=function(e){return arguments.length&&(n=Sr(e)),n},this.$get=["$injector","$$sanitizeUri",function(r,a){var o=function(e){throw Nr("unsafe","Attempting to use an unsafe value in a safe context.")};function i(t,n){return"self"===t?aa(n,ta)||function(t){return aa(t,function(){if(e.document.baseURI)return e.document.baseURI;$r||(($r=e.document.createElement("a")).href=".",$r=$r.cloneNode(!1));return $r.href}())}(n):!!t.exec(n.href)}function c(e){var t=function(e){this.$$unwrapTrustedValue=function(){return e}};return e&&(t.prototype=new e),t.prototype.valueOf=function(){return this.$$unwrapTrustedValue()},t.prototype.toString=function(){return this.$$unwrapTrustedValue().toString()},t}r.has("$sanitize")&&(o=r.get("$sanitize"));var s=c(),l={};return l[wr.HTML]=c(s),l[wr.CSS]=c(s),l[wr.MEDIA_URL]=c(s),l[wr.URL]=c(l[wr.MEDIA_URL]),l[wr.JS]=c(s),l[wr.RESOURCE_URL]=c(l[wr.URL]),{trustAs:function(e,t){var n=l.hasOwnProperty(e)?l[e]:null;if(!n)throw Nr("icontext","Attempted to trust a value in invalid context. Context: {0}; Value: {1}",e,t);if(null===t||T(t)||""===t)return t;if("string"!=typeof t)throw Nr("itype","Attempted to trust a non-string value in a content requiring a string: Context: {0}",e);return new n(t)},getTrusted:function(e,r){if(null===r||T(r)||""===r)return r;var c=l.hasOwnProperty(e)?l[e]:null;if(c&&r instanceof c)return r.$$unwrapTrustedValue();if(P(r.$$unwrapTrustedValue)&&(r=r.$$unwrapTrustedValue()),e===wr.MEDIA_URL||e===wr.URL)return a(r.toString(),e===wr.MEDIA_URL);if(e===wr.RESOURCE_URL){if(function(e){var r,a,o=ra(e.toString()),c=!1;for(r=0,a=t.length;r<a;r++)if(i(t[r],o)){c=!0;break}if(c)for(r=0,a=n.length;r<a;r++)if(i(n[r],o)){c=!1;break}return c}(r))return r;throw Nr("insecurl","Blocked loading resource from url not allowed by $sceDelegate policy. URL: {0}",r.toString())}if(e===wr.HTML)return o(r);throw Nr("unsafe","Attempting to use an unsafe value in a safe context.")},valueOf:function(e){return e instanceof s?e.$$unwrapTrustedValue():e}}}]}function Dr(){var e=!0;this.enabled=function(t){return arguments.length&&(e=!!t),e},this.$get=["$parse","$sceDelegate",function(t,n){if(e&&o<8)throw Nr("iequirks","Strict Contextual Escaping does not support Internet Explorer version < 11 in quirks mode. You can fix this by adding the text <!doctype html> to the top of your HTML document. See http://docs.angularjs.org/api/ng.$sce for more information.");var r=Ye(wr);r.isEnabled=function(){return e},r.trustAs=n.trustAs,r.getTrusted=n.getTrusted,r.valueOf=n.valueOf,e||(r.trustAs=r.getTrusted=function(e,t){return t},r.valueOf=V),r.parseAs=function(e,n){var a=t(n);return a.literal&&a.constant?a:t(n,(function(t){return r.getTrusted(e,t)}))};var a=r.parseAs,i=r.getTrusted,c=r.trustAs;return y(wr,(function(e,t){var n=I(t);r[Yr("parse_as_"+n)]=function(t){return a(e,t)},r[Yr("get_trusted_"+n)]=function(t){return i(e,t)},r[Yr("trust_as_"+n)]=function(t){return c(e,t)}})),r}]}function Jr(){this.$get=["$window","$document",function(e,t){var n={},r=!(!(e.nw&&e.nw.process)&&e.chrome&&(e.chrome.app&&e.chrome.app.runtime||!e.chrome.app&&e.chrome.runtime&&e.chrome.runtime.id))&&e.history&&e.history.pushState,a=Z((/android (\d+)/.exec(I((e.navigator||{}).userAgent))||[])[1]),i=/Boxee/i.test((e.navigator||{}).userAgent),c=t[0]||{},s=c.body&&c.body.style,l=!1,g=!1;return s&&(l=!!("transition"in s||"webkitTransition"in s),g=!!("animation"in s||"webkitAnimation"in s)),{history:!(!r||a<4||i),hasEvent:function(e){if("input"===e&&o)return!1;if(T(n[e])){var t=c.createElement("div");n[e]="on"+e in t}return n[e]},csp:se(),transitions:l,animations:g,android:a}}]}function Pr(){this.$get=O((function(e){return new Mr(e)}))}function Mr(e){var t={},n=[],r=this.ALL_TASKS_TYPE="$$all$$",a=this.DEFAULT_TASK_TYPE="$$default$$";function o(){var e=n.pop();return e&&e.cb}function i(e){for(var t=n.length-1;t>=0;--t){var r=n[t];if(r.type===e)return n.splice(t,1),r.cb}}this.completeTask=function(n,c){c=c||a;try{n()}finally{!function(e){t[e=e||a]&&(t[e]--,t[r]--)}(c);var s=t[c],l=t[r];if(!l||!s)for(var g,I=l?i:o;g=I(c);)try{g()}catch(t){e.error(t)}}},this.incTaskCount=function(e){t[e=e||a]=(t[e]||0)+1,t[r]=(t[r]||0)+1},this.notifyWhenNoPendingTasks=function(e,a){t[a=a||r]?n.push({type:a,cb:e}):e()}}var Lr=a("$templateRequest");function zr(){var e;this.httpOptions=function(t){return t?(e=t,this):e},this.$get=["$exceptionHandler","$templateCache","$http","$q","$sce",function(t,n,r,a,o){function i(c,s){i.totalPendingRequests++,Y(c)&&!T(n.get(c))||(c=o.getTrustedResourceUrl(c));var l=r.defaults&&r.defaults.transformResponse;return D(l)?l=l.filter((function(e){return e!==Rn})):l===Rn&&(l=null),r.get(c,E({cache:n,transformResponse:l},e)).finally((function(){i.totalPendingRequests--})).then((function(e){return n.put(c,e.data)}),(function(e){s||(e=Lr("tpload","Failed to load template: {0} (HTTP status: {1} {2})",c,e.status,e.statusText),t(e));return a.reject(e)}))}return i.totalPendingRequests=0,i}]}function jr(){this.$get=["$rootScope","$browser","$location",function(e,t,n){var r={findBindings:function(e,t,n){var r=e.getElementsByClassName("ng-binding"),a=[];return y(r,(function(e){var r=p.element(e).data("$binding");r&&y(r,(function(r){n?new RegExp("(^|\\s)"+ee(t)+"(\\s|\\||$)").test(r)&&a.push(e):-1!==r.indexOf(t)&&a.push(e)}))})),a},findModels:function(e,t,n){for(var r=["ng-","data-ng-","ng\\:"],a=0;a<r.length;++a){var o="["+r[a]+"model"+(n?"=":"*=")+'"'+t+'"]',i=e.querySelectorAll(o);if(i.length)return i}},getLocation:function(){return n.url()},setLocation:function(t){t!==n.url()&&(n.url(t),e.$digest())},whenStable:function(e){t.notifyWhenNoOutstandingRequests(e)}};return r}]}var Kr=a("$timeout");function qr(){this.$get=["$rootScope","$browser","$q","$$q","$exceptionHandler",function(e,t,n,r,a){var o={};function i(i,c,s){P(i)||(s=c,c=i,i=R);var l,g=Ie(arguments,3),I=N(s)&&!s,B=(I?r:n).defer(),A=B.promise;return l=t.defer((function(){try{B.resolve(i.apply(null,g))}catch(e){B.reject(e),a(e)}finally{delete o[A.$$timeoutId]}I||e.$apply()}),c,"$timeout"),A.$$timeoutId=l,o[l]=B,A}return i.cancel=function(e){if(!e)return!1;if(!e.hasOwnProperty("$$timeoutId"))throw Kr("badprom","`$timeout.cancel()` called with a promise that was not generated by `$timeout()`.");if(!o.hasOwnProperty(e.$$timeoutId))return!1;var n=e.$$timeoutId,r=o[n];return Vr(r.promise),r.reject("canceled"),delete o[n],t.defer.cancel(n)},i}]}var $r,ea=e.document.createElement("a"),ta=ra(e.location.href);ea.href="http://[::1]";var na="[::1]"===ea.hostname;function ra(e){if(!Y(e))return e;var t=e;o&&(ea.setAttribute("href",t),t=ea.href),ea.setAttribute("href",t);var n=ea.hostname;return!na&&n.indexOf(":")>-1&&(n="["+n+"]"),{href:ea.href,protocol:ea.protocol?ea.protocol.replace(/:$/,""):"",host:ea.host,search:ea.search?ea.search.replace(/^\?/,""):"",hash:ea.hash?ea.hash.replace(/^#/,""):"",hostname:n,port:ea.port,pathname:"/"===ea.pathname.charAt(0)?ea.pathname:"/"+ea.pathname}}function aa(e,t){return e=ra(e),t=ra(t),e.protocol===t.protocol&&e.host===t.host}function oa(){this.$get=O(e)}function ia(e){var t=e[0]||{},n={},r="";function a(e){try{return decodeURIComponent(e)}catch(t){return e}}return function(){var e,o,i,c,s,l=function(e){try{return e.cookie||""}catch(e){return""}}(t);if(l!==r)for(e=(r=l).split("; "),n={},i=0;i<e.length;i++)(c=(o=e[i]).indexOf("="))>0&&(s=a(o.substring(0,c)),T(n[s])&&(n[s]=a(o.substring(c+1))));return n}}function ca(){this.$get=ia}function sa(e){function t(n,r){if(w(n)){var a={};return y(n,(function(e,n){a[n]=t(n,e)})),a}return e.factory(n+"Filter",r)}this.register=t,this.$get=["$injector",function(e){return function(t){return e.get(t+"Filter")}}],t("currency",Ba),t("date",Fa),t("filter",la),t("json",Ua),t("limitTo",Ea),t("lowercase",fa),t("number",Aa),t("orderBy",Za),t("uppercase",Ga)}function la(){return function(e,t,n,r){if(!h(e)){if(null==e)return e;throw a("filter")("notarray","Expected array but received: {0}",e)}var o,i;switch(r=r||"$",Ia(t)){case"function":o=t;break;case"boolean":case"null":case"number":case"string":i=!0;case"object":o=function(e,t,n,r){var a=w(e)&&n in e;!0===t?t=ce:P(t)||(t=function(e,t){return!T(e)&&(null===e||null===t?e===t:!(w(t)||w(e)&&!x(e))&&(e=I(""+e),t=I(""+t),-1!==e.indexOf(t)))});return function(o){return a&&!w(o)?ga(o,e[n],t,n,!1):ga(o,e,t,n,r)}}(t,n,r,i);break;default:return e}return Array.prototype.filter.call(e,o)}}function ga(e,t,n,r,a,o){var i=Ia(e),c=Ia(t);if("string"===c&&"!"===t.charAt(0))return!ga(e,t.substring(1),n,r,a);if(D(e))return e.some((function(e){return ga(e,t,n,r,a)}));switch(i){case"object":var s;if(a){for(s in e)if(s.charAt&&"$"!==s.charAt(0)&&ga(e[s],t,n,r,!0))return!0;return!o&&ga(e,t,n,r,!1)}if("object"===c){for(s in t){var l=t[s];if(!P(l)&&!T(l)){var g=s===r;if(!ga(g?e:e[s],l,n,r,g,g))return!1}}return!0}return n(e,t);case"function":return!1;default:return n(e,t)}}function Ia(e){return null===e?"null":typeof e}ia.$inject=["$document"],sa.$inject=["$provide"];function Ba(e){var t=e.NUMBER_FORMATS;return function(e,n,r){T(n)&&(n=t.CURRENCY_SYM),T(r)&&(r=t.PATTERNS[1].maxFrac);var a=n?/\u00A4/g:/\s*\u00A4\s*/g;return null==e?e:ua(e,t.PATTERNS[1],t.GROUP_SEP,t.DECIMAL_SEP,r).replace(a,n)}}function Aa(e){var t=e.NUMBER_FORMATS;return function(e,n){return null==e?e:ua(e,t.PATTERNS[0],t.GROUP_SEP,t.DECIMAL_SEP,n)}}function ua(e,t,n,r,a){if(!Y(e)&&!S(e)||isNaN(e))return"";var o,i=!isFinite(e),c=!1,s=Math.abs(e)+"",l="";if(i)l="∞";else{(function(e,t,n,r){var a=e.d,o=a.length-e.i,i=(t=T(t)?Math.min(Math.max(n,o),r):+t)+e.i,c=a[i];if(i>0){a.splice(Math.max(e.i,i));for(var s=i;s<a.length;s++)a[s]=0}else{o=Math.max(0,o),e.i=1,a.length=Math.max(1,i=t+1),a[0]=0;for(var l=1;l<i;l++)a[l]=0}if(c>=5)if(i-1<0){for(var g=0;g>i;g--)a.unshift(0),e.i++;a.unshift(1),e.i++}else a[i-1]++;for(;o<Math.max(0,t);o++)a.push(0);var I=a.reduceRight((function(e,t,n,r){return t+=e,r[n]=t%10,Math.floor(t/10)}),0);I&&(a.unshift(I),e.i++)})(o=function(e){var t,n,r,a,o,i=0;for((n=e.indexOf("."))>-1&&(e=e.replace(".","")),(r=e.search(/e/i))>0?(n<0&&(n=r),n+=+e.slice(r+1),e=e.substring(0,r)):n<0&&(n=e.length),r=0;"0"===e.charAt(r);r++);if(r===(o=e.length))t=[0],n=1;else{for(o--;"0"===e.charAt(o);)o--;for(n-=r,t=[],a=0;r<=o;r++,a++)t[a]=+e.charAt(r)}return n>22&&(t=t.splice(0,21),i=n-1,n=1),{d:t,e:i,i:n}}(s),a,t.minFrac,t.maxFrac);var g=o.d,I=o.i,B=o.e,A=[];for(c=g.reduce((function(e,t){return e&&!t}),!0);I<0;)g.unshift(0),I++;I>0?A=g.splice(I,g.length):(A=g,g=[0]);var u=[];for(g.length>=t.lgSize&&u.unshift(g.splice(-t.lgSize,g.length).join(""));g.length>t.gSize;)u.unshift(g.splice(-t.gSize,g.length).join(""));g.length&&u.unshift(g.join("")),l=u.join(n),A.length&&(l+=r+A.join("")),B&&(l+="e+"+B)}return e<0&&!c?t.negPre+l+t.negSuf:t.posPre+l+t.posSuf}function da(e,t,n,r){var a="";for((e<0||r&&e<=0)&&(r?e=1-e:(e=-e,a="-")),e=""+e;e.length<t;)e="0"+e;return n&&(e=e.substr(e.length-t)),a+e}function _a(e,t,n,r,a){return n=n||0,function(o){var i=o["get"+e]();return(n>0||i>-n)&&(i+=n),0===i&&-12===n&&(i=12),da(i,t,r,a)}}function Ca(e,t,n){return function(r,a){var o=r["get"+e]();return a[B((n?"STANDALONE":"")+(t?"SHORT":"")+e)][o]}}function ba(e){var t=new Date(e,0,1).getDay();return new Date(e,0,(t<=4?5:12)-t)}function pa(e){return function(t){var n,r=ba(t.getFullYear()),a=+(n=t,new Date(n.getFullYear(),n.getMonth(),n.getDate()+(4-n.getDay())))-+r;return da(1+Math.round(a/6048e5),e)}}function Qa(e,t){return e.getFullYear()<=0?t.ERAS[0]:t.ERAS[1]}Ba.$inject=["$locale"],Aa.$inject=["$locale"];var ha={yyyy:_a("FullYear",4,0,!1,!0),yy:_a("FullYear",2,0,!0,!0),y:_a("FullYear",1,0,!1,!0),MMMM:Ca("Month"),MMM:Ca("Month",!0),MM:_a("Month",2,1),M:_a("Month",1,1),LLLL:Ca("Month",!1,!0),dd:_a("Date",2),d:_a("Date",1),HH:_a("Hours",2),H:_a("Hours",1),hh:_a("Hours",2,-12),h:_a("Hours",1,-12),mm:_a("Minutes",2),m:_a("Minutes",1),ss:_a("Seconds",2),s:_a("Seconds",1),sss:_a("Milliseconds",3),EEEE:Ca("Day"),EEE:Ca("Day",!0),a:function(e,t){return e.getHours()<12?t.AMPMS[0]:t.AMPMS[1]},Z:function(e,t,n){var r=-1*n,a=r>=0?"+":"";return a+=da(Math[r>0?"floor":"ceil"](r/60),2)+da(Math.abs(r%60),2)},ww:pa(2),w:pa(1),G:Qa,GG:Qa,GGG:Qa,GGGG:function(e,t){return e.getFullYear()<=0?t.ERANAMES[0]:t.ERANAMES[1]}},ya=/((?:[^yMLdHhmsaZEwG']+)|(?:'(?:[^']|'')*')|(?:E+|y+|M+|L+|d+|H+|h+|m+|s+|a|Z|G+|w+))([\s\S]*)/,ma=/^-?\d+$/;function Fa(e){var t=/^(\d{4})-?(\d\d)-?(\d\d)(?:T(\d\d)(?::?(\d\d)(?::?(\d\d)(?:\.(\d+))?)?)?(Z|([+-])(\d\d):?(\d\d))?)?$/;return function(n,r,a){var o,i,c="",s=[];if(r=r||"mediumDate",r=e.DATETIME_FORMATS[r]||r,Y(n)&&(n=ma.test(n)?Z(n):function(e){var n;if(n=e.match(t)){var r=new Date(0),a=0,o=0,i=n[8]?r.setUTCFullYear:r.setFullYear,c=n[8]?r.setUTCHours:r.setHours;n[9]&&(a=Z(n[9]+n[10]),o=Z(n[9]+n[11])),i.call(r,Z(n[1]),Z(n[2])-1,Z(n[3]));var s=Z(n[4]||0)-a,l=Z(n[5]||0)-o,g=Z(n[6]||0),I=Math.round(1e3*parseFloat("0."+(n[7]||0)));return c.call(r,s,l,g,I),r}return e}(n)),S(n)&&(n=new Date(n)),!H(n)||!isFinite(n.getTime()))return n;for(;r;)(i=ya.exec(r))?r=(s=ge(s,i,1)).pop():(s.push(r),r=null);var l=n.getTimezoneOffset();return a&&(l=Ce(a,l),n=pe(n,a,!0)),y(s,(function(t){c+=(o=ha[t])?o(n,e.DATETIME_FORMATS,l):"''"===t?"'":t.replace(/(^'|'$)/g,"").replace(/''/g,"'")})),c}}function Ua(){return function(e,t){return T(t)&&(t=2),ue(e,t)}}Fa.$inject=["$locale"];var fa=O(I),Ga=O(B);function Ea(){return function(e,t,n){return t=Math.abs(Number(t))===1/0?Number(t):Z(t),X(t)?e:(S(e)&&(e=e.toString()),h(e)?(n=(n=!n||isNaN(n)?0:Z(n))<0?Math.max(0,e.length+n):n,t>=0?va(e,n,n+t):0===n?va(e,t,e.length):va(e,Math.max(0,n+t),n)):e)}}function va(e,t,n){return Y(e)?e.slice(t,n):A.call(e,t,n)}function Za(e){return function(r,o,i,c){if(null==r)return r;if(!h(r))throw a("orderBy")("notarray","Expected array but received: {0}",r);D(o)||(o=[o]),0===o.length&&(o=["+"]);var s=o.map((function(t){var n=1,r=V;if(P(t))r=t;else if(Y(t)&&("+"!==t.charAt(0)&&"-"!==t.charAt(0)||(n="-"===t.charAt(0)?-1:1,t=t.substring(1)),""!==t&&(r=e(t)).constant)){var a=r();r=function(e){return e[a]}}return{get:r,descending:n}})),l=i?-1:1,g=P(c)?c:n,I=Array.prototype.map.call(r,(function(e,n){return{value:e,tieBreaker:{value:n,type:"number",index:n},predicateValues:s.map((function(r){return function(e,n){var r=typeof e;null===e?r="null":"object"===r&&(e=function(e){if(P(e.valueOf)&&t(e=e.valueOf()))return e;if(x(e)&&t(e=e.toString()))return e;return e}(e));return{value:e,type:r,index:n}}(r.get(e),n)}))}}));return I.sort((function(e,t){for(var r=0,a=s.length;r<a;r++){var o=g(e.predicateValues[r],t.predicateValues[r]);if(o)return o*s[r].descending*l}return(g(e.tieBreaker,t.tieBreaker)||n(e.tieBreaker,t.tieBreaker))*l})),r=I.map((function(e){return e.value}))};function t(e){switch(typeof e){case"number":case"boolean":case"string":return!0;default:return!1}}function n(e,t){var n=0,r=e.type,a=t.type;if(r===a){var o=e.value,i=t.value;"string"===r?(o=o.toLowerCase(),i=i.toLowerCase()):"object"===r&&(w(o)&&(o=e.index),w(i)&&(i=t.index)),o!==i&&(n=o<i?-1:1)}else n="undefined"===r?1:"undefined"===a?-1:"null"===r?1:"null"===a||r<a?-1:1;return n}}function Xa(e){return P(e)&&(e={link:e}),e.restrict=e.restrict||"AC",O(e)}Za.$inject=["$parse"];var Wa=O({restrict:"E",compile:function(e,t){if(!t.href&&!t.xlinkHref)return function(e,t){if("a"===t[0].nodeName.toLowerCase()){var n="[object SVGAnimatedString]"===_.call(t.prop("href"))?"xlink:href":"href";t.on("click",(function(e){t.attr(n)||e.preventDefault()}))}}}}),Ra={};y(ft,(function(e,t){if("multiple"!==e){var n=un("ng-"+t),r=a;"checked"===e&&(r=function(e,t,r){r.ngModel!==r[n]&&a(e,0,r)}),Ra[n]=function(){return{restrict:"A",priority:100,link:r}}}function a(e,r,a){e.$watch(a[n],(function(e){a.$set(t,!!e)}))}})),y(Et,(function(e,t){Ra[t]=function(){return{priority:100,link:function(e,n,r){if("ngPattern"===t&&"/"===r.ngPattern.charAt(0)){var a=r.ngPattern.match(l);if(a)return void r.$set("ngPattern",new RegExp(a[1],a[2]))}e.$watch(r[t],(function(e){r.$set(t,e)}))}}}})),y(["src","srcset","href"],(function(e){var t=un("ng-"+e);Ra[t]=["$sce",function(n){return{priority:99,link:function(r,a,i){var c=e,s=e;"href"===e&&"[object SVGAnimatedString]"===_.call(a.prop("href"))&&(s="xlinkHref",i.$attr[s]="xlink:href",c=null),i.$set(t,n.getTrustedMediaUrl(i[t])),i.$observe(t,(function(t){t?(i.$set(s,t),o&&c&&a.prop(c,i[s])):"href"===e&&i.$set(s,null)}))}}}]}));var Va={$addControl:R,$getControls:O([]),$$renameControl:function(e,t){e.$name=t},$removeControl:R,$setValidity:R,$setDirty:R,$setPristine:R,$setSubmitted:R,$$setSubmitted:R};function Oa(e,t,n,r,a){this.$$controls=[],this.$error={},this.$$success={},this.$pending=void 0,this.$name=a(t.name||t.ngForm||"")(n),this.$dirty=!1,this.$pristine=!0,this.$valid=!0,this.$invalid=!1,this.$submitted=!1,this.$$parentForm=Va,this.$$element=e,this.$$animate=r,wa(this)}Oa.$inject=["$element","$attrs","$scope","$animate","$interpolate"],Oa.prototype={$rollbackViewValue:function(){y(this.$$controls,(function(e){e.$rollbackViewValue()}))},$commitViewValue:function(){y(this.$$controls,(function(e){e.$commitViewValue()}))},$addControl:function(e){xe(e.$name,"input"),this.$$controls.push(e),e.$name&&(this[e.$name]=e),e.$$parentForm=this},$getControls:function(){return Ye(this.$$controls)},$$renameControl:function(e,t){var n=e.$name;this[n]===e&&delete this[n],this[t]=e,e.$name=t},$removeControl:function(e){e.$name&&this[e.$name]===e&&delete this[e.$name],y(this.$pending,(function(t,n){this.$setValidity(n,null,e)}),this),y(this.$error,(function(t,n){this.$setValidity(n,null,e)}),this),y(this.$$success,(function(t,n){this.$setValidity(n,null,e)}),this),ae(this.$$controls,e),e.$$parentForm=Va},$setDirty:function(){this.$$animate.removeClass(this.$$element,Oo),this.$$animate.addClass(this.$$element,xo),this.$dirty=!0,this.$pristine=!1,this.$$parentForm.$setDirty()},$setPristine:function(){this.$$animate.setClass(this.$$element,Oo,xo+" ng-submitted"),this.$dirty=!1,this.$pristine=!0,this.$submitted=!1,y(this.$$controls,(function(e){e.$setPristine()}))},$setUntouched:function(){y(this.$$controls,(function(e){e.$setUntouched()}))},$setSubmitted:function(){for(var e=this;e.$$parentForm&&e.$$parentForm!==Va;)e=e.$$parentForm;e.$$setSubmitted()},$$setSubmitted:function(){this.$$animate.addClass(this.$$element,"ng-submitted"),this.$submitted=!0,y(this.$$controls,(function(e){e.$$setSubmitted&&e.$$setSubmitted()}))}},ka({clazz:Oa,set:function(e,t,n){var r=e[t];r?-1===r.indexOf(n)&&r.push(n):e[t]=[n]},unset:function(e,t,n){var r=e[t];r&&(ae(r,n),0===r.length&&delete e[t])}});var xa=function(e){return["$timeout","$parse",function(t,n){return{name:"form",restrict:e?"EAC":"E",require:["form","^^?form"],controller:Oa,compile:function(n,a){n.addClass(Oo).addClass(Ro);var o=a.name?"name":!(!e||!a.ngForm)&&"ngForm";return{pre:function(e,n,a,i){var c=i[0];if(!("action"in a)){var s=function(t){e.$apply((function(){c.$commitViewValue(),c.$setSubmitted()})),t.preventDefault()};n[0].addEventListener("submit",s),n.on("$destroy",(function(){t((function(){n[0].removeEventListener("submit",s)}),0,!1)}))}(i[1]||c.$$parentForm).$addControl(c);var l=o?r(c.$name):R;o&&(l(e,c),a.$observe(o,(function(t){c.$name!==t&&(l(e,void 0),c.$$parentForm.$$renameControl(c,t),(l=r(c.$name))(e,c))}))),n.on("$destroy",(function(){c.$$parentForm.$removeControl(c),l(e,void 0),E(c,Va)}))}}}};function r(e){return""===e?n('this[""]').assign:n(e).assign||R}}]},Ta=xa(),Na=xa(!0);function wa(e){e.$$classCache={},e.$$classCache[Vo]=!(e.$$classCache[Ro]=e.$$element.hasClass(Ro))}function ka(e){var t=e.clazz,n=e.set,r=e.unset;function a(e,t,n){n&&!e.$$classCache[t]?(e.$$animate.addClass(e.$$element,t),e.$$classCache[t]=!0):!n&&e.$$classCache[t]&&(e.$$animate.removeClass(e.$$element,t),e.$$classCache[t]=!1)}function o(e,t,n){t=t?"-"+We(t,"-"):"",a(e,Ro+t,!0===n),a(e,Vo+t,!1===n)}t.prototype.$setValidity=function(e,t,i){var c;T(t)?function(e,t,r,a){e[t]||(e[t]={});n(e[t],r,a)}(this,"$pending",e,i):function(e,t,n,a){e[t]&&r(e[t],n,a);Ya(e[t])&&(e[t]=void 0)}(this,"$pending",e,i),j(t)?t?(r(this.$error,e,i),n(this.$$success,e,i)):(n(this.$error,e,i),r(this.$$success,e,i)):(r(this.$error,e,i),r(this.$$success,e,i)),this.$pending?(a(this,"ng-pending",!0),this.$valid=this.$invalid=void 0,o(this,"",null)):(a(this,"ng-pending",!1),this.$valid=Ya(this.$error),this.$invalid=!this.$valid,o(this,"",this.$valid)),o(this,e,c=this.$pending&&this.$pending[e]?void 0:!this.$error[e]&&(!!this.$$success[e]||null)),this.$$parentForm.$setValidity(e,c,this)}}function Ya(e){if(e)for(var t in e)if(e.hasOwnProperty(t))return!1;return!0}var Sa=/^\d{4,}-[01]\d-[0-3]\dT[0-2]\d:[0-5]\d:[0-5]\d\.\d+(?:[+-][0-2]\d:[0-5]\d|Z)$/,Ha=/^[a-z][a-z\d.+-]*:\/*(?:[^:@]+(?::[^@]+)?@)?(?:[^\s:/?#]+|\[[a-f\d:]+])(?::\d+)?(?:\/[^?#]*)?(?:\?[^#]*)?(?:#.*)?$/i,Da=/^(?=.{1,254}$)(?=.{1,64}@)[-!#$%&'*+/0-9=?A-Z^_`a-z{|}~]+(\.[-!#$%&'*+/0-9=?A-Z^_`a-z{|}~]+)*@[A-Za-z0-9]([A-Za-z0-9-]{0,61}[A-Za-z0-9])?(\.[A-Za-z0-9]([A-Za-z0-9-]{0,61}[A-Za-z0-9])?)*$/,Ja=/^\s*(-|\+)?(\d+|(\d*(\.\d*)))([eE][+-]?\d+)?\s*$/,Pa=/^(\d{4,})-(\d{2})-(\d{2})$/,Ma=/^(\d{4,})-(\d\d)-(\d\d)T(\d\d):(\d\d)(?::(\d\d)(\.\d{1,3})?)?$/,La=/^(\d{4,})-W(\d\d)$/,za=/^(\d{4,})-(\d\d)$/,ja=/^(\d\d):(\d\d)(?::(\d\d)(\.\d{1,3})?)?$/,Ka=Ne();y("date,datetime-local,month,time,week".split(","),(function(e){Ka[e]=!0}));var qa={text:function(e,t,n,r,a,o){eo(e,t,n,r,a,o),$a(r)},date:no("date",Pa,to(Pa,["yyyy","MM","dd"]),"yyyy-MM-dd"),"datetime-local":no("datetimelocal",Ma,to(Ma,["yyyy","MM","dd","HH","mm","ss","sss"]),"yyyy-MM-ddTHH:mm:ss.sss"),time:no("time",ja,to(ja,["HH","mm","ss","sss"]),"HH:mm:ss.sss"),week:no("week",La,(function(e,t){if(H(e))return e;if(Y(e)){La.lastIndex=0;var n=La.exec(e);if(n){var r=+n[1],a=+n[2],o=0,i=0,c=0,s=0,l=ba(r),g=7*(a-1);return t&&(o=t.getHours(),i=t.getMinutes(),c=t.getSeconds(),s=t.getMilliseconds()),new Date(r,0,l.getDate()+g,o,i,c,s)}}return NaN}),"yyyy-Www"),month:no("month",za,to(za,["yyyy","MM"]),"yyyy-MM"),number:function(e,t,n,r,a,o,i,c){var s;if(ro(e,t,n,r,"number"),ao(r),eo(e,t,n,r,a,o),N(n.min)||n.ngMin){var l=n.min||c(n.ngMin)(e);s=oo(l),r.$validators.min=function(e,t){return r.$isEmpty(t)||T(s)||t>=s},n.$observe("min",(function(e){e!==l&&(s=oo(e),l=e,r.$validate())}))}if(N(n.max)||n.ngMax){var g=n.max||c(n.ngMax)(e),I=oo(g);r.$validators.max=function(e,t){return r.$isEmpty(t)||T(I)||t<=I},n.$observe("max",(function(e){e!==g&&(I=oo(e),g=e,r.$validate())}))}if(N(n.step)||n.ngStep){var B=n.step||c(n.ngStep)(e),A=oo(B);r.$validators.step=function(e,t){return r.$isEmpty(t)||T(A)||so(t,s||0,A)},n.$observe("step",(function(e){e!==B&&(A=oo(e),B=e,r.$validate())}))}},url:function(e,t,n,r,a,o){eo(e,t,n,r,a,o),$a(r),r.$validators.url=function(e,t){var n=e||t;return r.$isEmpty(n)||Ha.test(n)}},email:function(e,t,n,r,a,o){eo(e,t,n,r,a,o),$a(r),r.$validators.email=function(e,t){var n=e||t;return r.$isEmpty(n)||Da.test(n)}},radio:function(e,t,n,r){var a=!n.ngTrim||"false"!==$(n.ngTrim);T(n.name)&&t.attr("name",U());t.on("change",(function(e){var o;t[0].checked&&(o=n.value,a&&(o=$(o)),r.$setViewValue(o,e&&e.type))})),r.$render=function(){var e=n.value;a&&(e=$(e)),t[0].checked=e===r.$viewValue},n.$observe("value",r.$render)},range:function(e,t,n,r,a,o){ro(e,t,n,r,"range"),ao(r),eo(e,t,n,r,a,o);var i=r.$$hasNativeValidators&&"range"===t[0].type,c=i?0:void 0,s=i?100:void 0,l=i?1:void 0,g=t[0].validity,I=N(n.min),B=N(n.max),A=N(n.step),u=r.$render;r.$render=i&&N(g.rangeUnderflow)&&N(g.rangeOverflow)?function(){u(),r.$setViewValue(t.val())}:u,I&&(c=oo(n.min),r.$validators.min=i?function(){return!0}:function(e,t){return r.$isEmpty(t)||T(c)||t>=c},d("min",(function(e){if(c=oo(e),X(r.$modelValue))return;if(i){var n=t.val();c>n&&(n=c,t.val(n)),r.$setViewValue(n)}else r.$validate()})));B&&(s=oo(n.max),r.$validators.max=i?function(){return!0}:function(e,t){return r.$isEmpty(t)||T(s)||t<=s},d("max",(function(e){if(s=oo(e),X(r.$modelValue))return;if(i){var n=t.val();s<n&&(t.val(s),n=s<c?c:s),r.$setViewValue(n)}else r.$validate()})));A&&(l=oo(n.step),r.$validators.step=i?function(){return!g.stepMismatch}:function(e,t){return r.$isEmpty(t)||T(l)||so(t,c||0,l)},d("step",(function(e){if(l=oo(e),X(r.$modelValue))return;i?r.$viewValue!==t.val()&&r.$setViewValue(t.val()):r.$validate()})));function d(e,r){t.attr(e,n[e]);var a=n[e];n.$observe(e,(function(e){e!==a&&(a=e,r(e))}))}},checkbox:function(e,t,n,r,a,o,i,c){var s=lo(c,e,"ngTrueValue",n.ngTrueValue,!0),l=lo(c,e,"ngFalseValue",n.ngFalseValue,!1);t.on("change",(function(e){r.$setViewValue(t[0].checked,e&&e.type)})),r.$render=function(){t[0].checked=r.$viewValue},r.$isEmpty=function(e){return!1===e},r.$formatters.push((function(e){return ce(e,s)})),r.$parsers.push((function(e){return e?s:l}))},hidden:R,button:R,submit:R,reset:R,file:R};function $a(e){e.$formatters.push((function(t){return e.$isEmpty(t)?t:t.toString()}))}function eo(e,t,n,r,a,o){var i,c=I(t[0].type);if(!a.android){var s=!1;t.on("compositionstart",(function(){s=!0})),t.on("compositionupdate",(function(e){(T(e.data)||""===e.data)&&(s=!1)})),t.on("compositionend",(function(){s=!1,l()}))}var l=function(e){if(i&&(o.defer.cancel(i),i=null),!s){var a=t.val(),l=e&&e.type;"password"===c||n.ngTrim&&"false"===n.ngTrim||(a=$(a)),(r.$viewValue!==a||""===a&&r.$$hasNativeValidators)&&r.$setViewValue(a,l)}};if(a.hasEvent("input"))t.on("input",l);else{var g=function(e,t,n){i||(i=o.defer((function(){i=null,t&&t.value===n||l(e)})))};t.on("keydown",(function(e){var t=e.keyCode;91===t||15<t&&t<19||37<=t&&t<=40||g(e,this,this.value)})),a.hasEvent("paste")&&t.on("paste cut drop",g)}t.on("change",l),Ka[c]&&r.$$hasNativeValidators&&c===n.type&&t.on("keydown wheel mousedown",(function(e){if(!i){var t=this.validity,n=t.badInput,r=t.typeMismatch;i=o.defer((function(){i=null,t.badInput===n&&t.typeMismatch===r||l(e)}))}})),r.$render=function(){var e=r.$isEmpty(r.$viewValue)?"":r.$viewValue;t.val()!==e&&t.val(e)}}function to(e,t){return function(n,r){var a,o;if(H(n))return n;if(Y(n)){if('"'===n.charAt(0)&&'"'===n.charAt(n.length-1)&&(n=n.substring(1,n.length-1)),Sa.test(n))return new Date(n);if(e.lastIndex=0,a=e.exec(n)){a.shift(),o=r?{yyyy:r.getFullYear(),MM:r.getMonth()+1,dd:r.getDate(),HH:r.getHours(),mm:r.getMinutes(),ss:r.getSeconds(),sss:r.getMilliseconds()/1e3}:{yyyy:1970,MM:1,dd:1,HH:0,mm:0,ss:0,sss:0},y(a,(function(e,n){n<t.length&&(o[t[n]]=+e)}));var i=new Date(o.yyyy,o.MM-1,o.dd,o.HH,o.mm,o.ss||0,1e3*o.sss||0);return o.yyyy<100&&i.setFullYear(o.yyyy),i}}return NaN}}function no(e,t,n,r){return function(a,o,i,c,s,l,g,I){ro(a,o,i,c,e),eo(0,o,i,c,s,l);var B,A,u="time"===e||"datetimelocal"===e;if(c.$parsers.push((function(n){return c.$isEmpty(n)?null:t.test(n)?h(n,B):void(c.$$parserName=e)})),c.$formatters.push((function(e){if(e&&!H(e))throw To("datefmt","Expected `{0}` to be a date",e);if(p(e)){B=e;var t=c.$options.getOption("timezone");return t&&(A=t,B=pe(B,t,!0)),function(e,t){var n=r;u&&Y(c.$options.getOption("timeSecondsFormat"))&&(n=r.replace("ss.sss",c.$options.getOption("timeSecondsFormat")).replace(/:$/,""));var a=g("date")(e,n,t);u&&c.$options.getOption("timeStripZeroSeconds")&&(a=a.replace(/(?::00)?(?:\.000)?$/,""));return a}(e,t)}return B=null,A=null,""})),N(i.min)||i.ngMin){var d=i.min||I(i.ngMin)(a),_=Q(d);c.$validators.min=function(e){return!p(e)||T(_)||n(e)>=_},i.$observe("min",(function(e){e!==d&&(_=Q(e),d=e,c.$validate())}))}if(N(i.max)||i.ngMax){var C=i.max||I(i.ngMax)(a),b=Q(C);c.$validators.max=function(e){return!p(e)||T(b)||n(e)<=b},i.$observe("max",(function(e){e!==C&&(b=Q(e),C=e,c.$validate())}))}function p(e){return e&&!(e.getTime&&e.getTime()!=e.getTime())}function Q(e){return N(e)&&!H(e)?h(e)||void 0:e}function h(e,t){var r=c.$options.getOption("timezone");A&&A!==r&&(t=be(t,Ce(A)));var a=n(e,t);return!isNaN(a)&&r&&(a=pe(a,r)),a}}}function ro(e,t,n,r,a){var o=t[0];(r.$$hasNativeValidators=w(o.validity))&&r.$parsers.push((function(e){var n=t.prop("validity")||{};if(!n.badInput&&!n.typeMismatch)return e;r.$$parserName=a}))}function ao(e){e.$parsers.push((function(t){return e.$isEmpty(t)?null:Ja.test(t)?parseFloat(t):void(e.$$parserName="number")})),e.$formatters.push((function(t){if(!e.$isEmpty(t)){if(!S(t))throw To("numfmt","Expected `{0}` to be a number",t);t=t.toString()}return t}))}function oo(e){return N(e)&&!S(e)&&(e=parseFloat(e)),X(e)?void 0:e}function io(e){return(0|e)===e}function co(e){var t=e.toString(),n=t.indexOf(".");if(-1===n){if(-1<e&&e<1){var r=/e-(\d+)$/.exec(t);if(r)return Number(r[1])}return 0}return t.length-n-1}function so(e,t,n){var r=Number(e),a=!io(r),o=!io(t),i=!io(n);if(a||o||i){var c=a?co(r):0,s=o?co(t):0,l=i?co(n):0,g=Math.max(c,s,l),I=Math.pow(10,g);r*=I,t*=I,n*=I,a&&(r=Math.round(r)),o&&(t=Math.round(t)),i&&(n=Math.round(n))}return(r-t)%n==0}function lo(e,t,n,r,a){var o;if(N(r)){if(!(o=e(r)).constant)throw To("constexpr","Expected constant expression for `{0}`, but saw `{1}`.",n,r);return o(t)}return a}var go=["$browser","$sniffer","$filter","$parse",function(e,t,n,r){return{restrict:"E",require:["?ngModel"],link:{pre:function(a,o,i,c){c[0]&&(qa[I(i.type)]||qa.text)(a,o,i,c[0],t,e,n,r)}}}}],Io=function(){var e={configurable:!0,enumerable:!1,get:function(){return this.getAttribute("value")||""},set:function(e){this.setAttribute("value",e)}};return{restrict:"E",priority:200,compile:function(t,n){if("hidden"===I(n.type))return{pre:function(t,n,r,a){var o=n[0];o.parentNode&&o.parentNode.insertBefore(o,o.nextSibling),Object.defineProperty&&Object.defineProperty(o,"value",e)}}}}},Bo=/^(true|false|\d+)$/,Ao=function(){function e(e,t,n){var r=N(n)?n:9===o?"":null;e.prop("value",r),t.$set("value",n)}return{restrict:"A",priority:100,compile:function(t,n){return Bo.test(n.ngValue)?function(t,n,r){e(n,r,t.$eval(r.ngValue))}:function(t,n,r){t.$watch(r.ngValue,(function(t){e(n,r,t)}))}}}},uo=["$compile",function(e){return{restrict:"AC",compile:function(t){return e.$$addBindingClass(t),function(t,n,r){e.$$addBindingInfo(n,r.ngBind),n=n[0],t.$watch(r.ngBind,(function(e){n.textContent=we(e)}))}}}}],_o=["$interpolate","$compile",function(e,t){return{compile:function(n){return t.$$addBindingClass(n),function(n,r,a){var o=e(r.attr(a.$attr.ngBindTemplate));t.$$addBindingInfo(r,o.expressions),r=r[0],a.$observe("ngBindTemplate",(function(e){r.textContent=T(e)?"":e}))}}}}],Co=["$sce","$parse","$compile",function(e,t,n){return{restrict:"A",compile:function(r,a){var o=t(a.ngBindHtml),i=t(a.ngBindHtml,(function(t){return e.valueOf(t)}));return n.$$addBindingClass(r),function(t,r,a){n.$$addBindingInfo(r,a.ngBindHtml),t.$watch(i,(function(){var n=o(t);r.html(e.getTrustedHtml(n)||"")}))}}}}],bo=O({restrict:"A",require:"ngModel",link:function(e,t,n,r){r.$viewChangeListeners.push((function(){e.$eval(n.ngChange)}))}});function po(e,t){var n;return e="ngClass"+e,["$parse",function(i){return{restrict:"AC",link:function(c,s,l){var g,I=s.data("$classCounts"),B=!0;function A(e,t){var n=[];return y(e,(function(e){(t>0||I[e])&&(I[e]=(I[e]||0)+t,I[e]===+(t>0)&&n.push(e))})),n.join(" ")}I||(I=Ne(),s.data("$classCounts",I)),"ngClass"!==e&&(n||(n=i("$index",(function(e){return 1&e}))),c.$watch(n,(function(e){e===t?(n=A(a(n=g),1),l.$addClass(n)):function(e){e=A(a(e),-1),l.$removeClass(e)}(g);var n;B=e}))),c.$watch(i(l[e],o),(function(e){B===t&&function(e,t){var n=a(e),o=a(t),i=r(n,o),c=r(o,n),s=A(i,-1),g=A(c,1);l.$addClass(g),l.$removeClass(s)}(g,e);g=e}))}}}];function r(e,t){if(!e||!e.length)return[];if(!t||!t.length)return e;var n=[];e:for(var r=0;r<e.length;r++){for(var a=e[r],o=0;o<t.length;o++)if(a===t[o])continue e;n.push(a)}return n}function a(e){return e&&e.split(" ")}function o(e){if(!e)return e;var t=e;return D(e)?t=e.map(o).join(" "):w(e)?t=Object.keys(e).filter((function(t){return e[t]})).join(" "):Y(e)||(t=e+""),t}}var Qo=po("",!0),ho=po("Odd",0),yo=po("Even",1),mo=Xa({compile:function(e,t){t.$set("ngCloak",void 0),e.removeClass("ng-cloak")}}),Fo=[function(){return{restrict:"A",scope:!0,controller:"@",priority:500}}],Uo={},fo={blur:!0,focus:!0};function Go(e,t,n,r,a,o){return{restrict:"A",compile:function(i,c){var s=e(c[r]);return function(e,r){r.on(a,(function(r){var a=function(){s(e,{$event:r})};if(t.$$phase)if(o)e.$evalAsync(a);else try{a()}catch(e){n(e)}else e.$apply(a)}))}}}}y("click dblclick mousedown mouseup mouseover mouseout mousemove mouseenter mouseleave keydown keyup keypress submit focus blur copy cut paste".split(" "),(function(e){var t=un("ng-"+e);Uo[t]=["$parse","$rootScope","$exceptionHandler",function(n,r,a){return Go(n,r,a,t,e,fo[e])}]}));var Eo=["$animate","$compile",function(e,t){return{multiElement:!0,transclude:"element",priority:600,terminal:!0,restrict:"A",$$tlb:!0,link:function(n,r,a,o,i){var c,s,l;n.$watch(a.ngIf,(function(n){n?s||i((function(n,o){s=o,n[n.length++]=t.$$createComment("end ngIf",a.ngIf),c={clone:n},e.enter(n,r.parent(),r)})):(l&&(l.remove(),l=null),s&&(s.$destroy(),s=null),c&&(l=Te(c.clone),e.leave(l).done((function(e){!1!==e&&(l=null)})),c=null))}))}}}],vo=["$templateRequest","$anchorScroll","$animate",function(e,t,n){return{restrict:"ECA",priority:400,terminal:!0,transclude:"element",controller:p.noop,compile:function(r,a){var o=a.ngInclude||a.src,i=a.onload||"",c=a.autoscroll;return function(r,a,s,l,g){var I,B,A,u=0,d=function(){B&&(B.remove(),B=null),I&&(I.$destroy(),I=null),A&&(n.leave(A).done((function(e){!1!==e&&(B=null)})),B=A,A=null)};r.$watch(o,(function(o){var s=function(e){!1===e||!N(c)||c&&!r.$eval(c)||t()},B=++u;o?(e(o,!0).then((function(e){if(!r.$$destroyed&&B===u){var t=r.$new();l.template=e;var c=g(t,(function(e){d(),n.enter(e,null,a).done(s)}));A=c,(I=t).$emit("$includeContentLoaded",o),r.$eval(i)}}),(function(){r.$$destroyed||B===u&&(d(),r.$emit("$includeContentError",o))})),r.$emit("$includeContentRequested",o)):(d(),l.template=null)}))}}}}],Zo=["$compile",function(t){return{restrict:"ECA",priority:-400,require:"ngInclude",link:function(n,r,a,o){if(_.call(r[0]).match(/SVG/))return r.empty(),void t(ot(o.template,e.document).childNodes)(n,(function(e){r.append(e)}),{futureParentElement:r});r.html(o.template),t(r.contents())(n)}}}],Xo=Xa({priority:450,compile:function(){return{pre:function(e,t,n){e.$eval(n.ngInit)}}}}),Wo=function(){return{restrict:"A",priority:100,require:"ngModel",link:function(e,t,n,r){var a=n.ngList||", ",o="false"!==n.ngTrim,i=o?$(a):a;r.$parsers.push((function(e){if(!T(e)){var t=[];return e&&y(e.split(i),(function(e){e&&t.push(o?$(e):e)})),t}})),r.$formatters.push((function(e){if(D(e))return e.join(a)})),r.$isEmpty=function(e){return!e||!e.length}}}},Ro="ng-valid",Vo="ng-invalid",Oo="ng-pristine",xo="ng-dirty",To=a("ngModel");function No(e,t,n,r,a,o,i,c,s){var l;this.$viewValue=Number.NaN,this.$modelValue=Number.NaN,this.$$rawModelValue=void 0,this.$validators={},this.$asyncValidators={},this.$parsers=[],this.$formatters=[],this.$viewChangeListeners=[],this.$untouched=!0,this.$touched=!1,this.$pristine=!0,this.$dirty=!1,this.$valid=!0,this.$invalid=!1,this.$error={},this.$$success={},this.$pending=void 0,this.$name=s(n.name||"",!1)(e),this.$$parentForm=Va,this.$options=wo,this.$$updateEvents="",this.$$updateEventHandler=this.$$updateEventHandler.bind(this),this.$$parsedNgModel=a(n.ngModel),this.$$parsedNgModelAssign=this.$$parsedNgModel.assign,this.$$ngModelGet=this.$$parsedNgModel,this.$$ngModelSet=this.$$parsedNgModelAssign,this.$$pendingDebounce=null,this.$$parserValid=void 0,this.$$parserName="parse",this.$$currentValidationRunId=0,this.$$scope=e,this.$$rootScope=e.$root,this.$$attr=n,this.$$element=r,this.$$animate=o,this.$$timeout=i,this.$$parse=a,this.$$q=c,this.$$exceptionHandler=t,wa(this),(l=this).$$scope.$watch((function(e){var t=l.$$ngModelGet(e);return t===l.$modelValue||l.$modelValue!=l.$modelValue&&t!=t||l.$$setModelValue(t),t}))}No.$inject=["$scope","$exceptionHandler","$attrs","$element","$parse","$animate","$timeout","$q","$interpolate"],No.prototype={$$initGetterSetters:function(){if(this.$options.getOption("getterSetter")){var e=this.$$parse(this.$$attr.ngModel+"()"),t=this.$$parse(this.$$attr.ngModel+"($$$p)");this.$$ngModelGet=function(t){var n=this.$$parsedNgModel(t);return P(n)&&(n=e(t)),n},this.$$ngModelSet=function(e,n){P(this.$$parsedNgModel(e))?t(e,{$$$p:n}):this.$$parsedNgModelAssign(e,n)}}else if(!this.$$parsedNgModel.assign)throw To("nonassign","Expression '{0}' is non-assignable. Element: {1}",this.$$attr.ngModel,Qe(this.$$element))},$render:R,$isEmpty:function(e){return T(e)||""===e||null===e||e!=e},$$updateEmptyClasses:function(e){this.$isEmpty(e)?(this.$$animate.removeClass(this.$$element,"ng-not-empty"),this.$$animate.addClass(this.$$element,"ng-empty")):(this.$$animate.removeClass(this.$$element,"ng-empty"),this.$$animate.addClass(this.$$element,"ng-not-empty"))},$setPristine:function(){this.$dirty=!1,this.$pristine=!0,this.$$animate.removeClass(this.$$element,xo),this.$$animate.addClass(this.$$element,Oo)},$setDirty:function(){this.$dirty=!0,this.$pristine=!1,this.$$animate.removeClass(this.$$element,Oo),this.$$animate.addClass(this.$$element,xo),this.$$parentForm.$setDirty()},$setUntouched:function(){this.$touched=!1,this.$untouched=!0,this.$$animate.setClass(this.$$element,"ng-untouched","ng-touched")},$setTouched:function(){this.$touched=!0,this.$untouched=!1,this.$$animate.setClass(this.$$element,"ng-touched","ng-untouched")},$rollbackViewValue:function(){this.$$timeout.cancel(this.$$pendingDebounce),this.$viewValue=this.$$lastCommittedViewValue,this.$render()},$validate:function(){if(!X(this.$modelValue)){var e=this.$$lastCommittedViewValue,t=this.$$rawModelValue,n=this.$valid,r=this.$modelValue,a=this.$options.getOption("allowInvalid"),o=this;this.$$runValidators(t,e,(function(e){a||n===e||(o.$modelValue=e?t:void 0,o.$modelValue!==r&&o.$$writeModelToScope())}))}},$$runValidators:function(e,t,n){this.$$currentValidationRunId++;var r,a,o=this.$$currentValidationRunId,i=this;(function(){var e=i.$$parserName;if(!T(i.$$parserValid))return i.$$parserValid||(y(i.$validators,(function(e,t){c(t,null)})),y(i.$asyncValidators,(function(e,t){c(t,null)}))),c(e,i.$$parserValid),i.$$parserValid;c(e,null);return!0})()?!function(){var n=!0;if(y(i.$validators,(function(r,a){var o=Boolean(r(e,t));n=n&&o,c(a,o)})),!n)return y(i.$asyncValidators,(function(e,t){c(t,null)})),!1;return!0}()?s(!1):(r=[],a=!0,y(i.$asyncValidators,(function(n,o){var i=n(e,t);if(!K(i))throw To("nopromise","Expected asynchronous validator to return a promise but got '{0}' instead.",i);c(o,void 0),r.push(i.then((function(){c(o,!0)}),(function(){a=!1,c(o,!1)})))})),r.length?i.$$q.all(r).then((function(){s(a)}),R):s(!0)):s(!1);function c(e,t){o===i.$$currentValidationRunId&&i.$setValidity(e,t)}function s(e){o===i.$$currentValidationRunId&&n(e)}},$commitViewValue:function(){var e=this.$viewValue;this.$$timeout.cancel(this.$$pendingDebounce),(this.$$lastCommittedViewValue!==e||""===e&&this.$$hasNativeValidators)&&(this.$$updateEmptyClasses(e),this.$$lastCommittedViewValue=e,this.$pristine&&this.$setDirty(),this.$$parseAndValidate())},$$parseAndValidate:function(){var e=this.$$lastCommittedViewValue,t=this;if(this.$$parserValid=!T(e)||void 0,this.$setValidity(this.$$parserName,null),this.$$parserName="parse",this.$$parserValid)for(var n=0;n<this.$parsers.length;n++)if(T(e=this.$parsers[n](e))){this.$$parserValid=!1;break}X(this.$modelValue)&&(this.$modelValue=this.$$ngModelGet(this.$$scope));var r=this.$modelValue,a=this.$options.getOption("allowInvalid");function o(){t.$modelValue!==r&&t.$$writeModelToScope()}this.$$rawModelValue=e,a&&(this.$modelValue=e,o()),this.$$runValidators(e,this.$$lastCommittedViewValue,(function(n){a||(t.$modelValue=n?e:void 0,o())}))},$$writeModelToScope:function(){this.$$ngModelSet(this.$$scope,this.$modelValue),y(this.$viewChangeListeners,(function(e){try{e()}catch(e){this.$$exceptionHandler(e)}}),this)},$setViewValue:function(e,t){this.$viewValue=e,this.$options.getOption("updateOnDefault")&&this.$$debounceViewValueCommit(t)},$$debounceViewValueCommit:function(e){var t=this.$options.getOption("debounce");S(t[e])?t=t[e]:S(t.default)&&-1===this.$options.getOption("updateOn").indexOf(e)?t=t.default:S(t["*"])&&(t=t["*"]),this.$$timeout.cancel(this.$$pendingDebounce);var n=this;t>0?this.$$pendingDebounce=this.$$timeout((function(){n.$commitViewValue()}),t):this.$$rootScope.$$phase?this.$commitViewValue():this.$$scope.$apply((function(){n.$commitViewValue()}))},$overrideModelOptions:function(e){this.$options=this.$options.createChild(e),this.$$setUpdateOnEvents()},$processModelValue:function(){var e=this.$$format();this.$viewValue!==e&&(this.$$updateEmptyClasses(e),this.$viewValue=this.$$lastCommittedViewValue=e,this.$render(),this.$$runValidators(this.$modelValue,this.$viewValue,R))},$$format:function(){for(var e=this.$formatters,t=e.length,n=this.$modelValue;t--;)n=e[t](n);return n},$$setModelValue:function(e){this.$modelValue=this.$$rawModelValue=e,this.$$parserValid=void 0,this.$processModelValue()},$$setUpdateOnEvents:function(){this.$$updateEvents&&this.$$element.off(this.$$updateEvents,this.$$updateEventHandler),this.$$updateEvents=this.$options.getOption("updateOn"),this.$$updateEvents&&this.$$element.on(this.$$updateEvents,this.$$updateEventHandler)},$$updateEventHandler:function(e){this.$$debounceViewValueCommit(e&&e.type)}},ka({clazz:No,set:function(e,t){e[t]=!0},unset:function(e,t){delete e[t]}});var wo,ko=["$rootScope",function(e){return{restrict:"A",require:["ngModel","^?form","^?ngModelOptions"],controller:No,priority:1,compile:function(t){return t.addClass(Oo).addClass("ng-untouched").addClass(Ro),{pre:function(e,t,n,r){var a=r[0],o=r[1]||a.$$parentForm,i=r[2];i&&(a.$options=i.$options),a.$$initGetterSetters(),o.$addControl(a),n.$observe("name",(function(e){a.$name!==e&&a.$$parentForm.$$renameControl(a,e)})),e.$on("$destroy",(function(){a.$$parentForm.$removeControl(a)}))},post:function(t,n,r,a){var o=a[0];function i(){o.$setTouched()}o.$$setUpdateOnEvents(),n.on("blur",(function(){o.$touched||(e.$$phase?t.$evalAsync(i):t.$apply(i))}))}}}}}],Yo=/(\s+|^)default(\s+|$)/;function So(e){this.$$options=e}So.prototype={getOption:function(e){return this.$$options[e]},createChild:function(e){var t=!1;return y(e=E({},e),(function(n,r){"$inherit"===n?"*"===r?t=!0:(e[r]=this.$$options[r],"updateOn"===r&&(e.updateOnDefault=this.$$options.updateOnDefault)):"updateOn"===r&&(e.updateOnDefault=!1,e[r]=$(n.replace(Yo,(function(){return e.updateOnDefault=!0," "}))))}),this),t&&(delete e["*"],Do(e,this.$$options)),Do(e,wo.$$options),new So(e)}},wo=new So({updateOn:"",updateOnDefault:!0,debounce:0,getterSetter:!1,allowInvalid:!1,timezone:null});var Ho=function(){function e(e,t){this.$$attrs=e,this.$$scope=t}return e.$inject=["$attrs","$scope"],e.prototype={$onInit:function(){var e=this.parentCtrl?this.parentCtrl.$options:wo,t=this.$$scope.$eval(this.$$attrs.ngModelOptions);this.$options=e.createChild(t)}},{restrict:"A",priority:10,require:{parentCtrl:"?^^ngModelOptions"},bindToController:!0,controller:e}};function Do(e,t){y(t,(function(t,n){N(e[n])||(e[n]=t)}))}var Jo=Xa({terminal:!0,priority:1e3}),Po=a("ngOptions"),Mo=/^\s*([\s\S]+?)(?:\s+as\s+([\s\S]+?))?(?:\s+group\s+by\s+([\s\S]+?))?(?:\s+disable\s+when\s+([\s\S]+?))?\s+for\s+(?:([$\w][$\w]*)|(?:\(\s*([$\w][$\w]*)\s*,\s*([$\w][$\w]*)\s*\)))\s+in\s+([\s\S]+?)(?:\s+track\s+by\s+([\s\S]+?))?$/,Lo=["$compile","$document","$parse",function(t,n,r){var a=e.document.createElement("option"),o=e.document.createElement("optgroup");return{restrict:"A",terminal:!0,require:["select","ngModel"],link:{pre:function(e,t,n,r){r[0].registerOption=R},post:function(e,c,s,l){for(var g=l[0],I=l[1],B=s.multiple,A=0,u=c.children(),d=u.length;A<d;A++)if(""===u[A].value){g.hasEmptyOption=!0,g.emptyOption=u.eq(A);break}c.empty();var _,C=!!g.emptyOption;i(a.cloneNode(!1)).val("?");var b=function(e,t,n){var a=e.match(Mo);if(!a)throw Po("iexp","Expected expression in form of '_select_ (as _label_)? for (_key_,)?_value_ in _collection_' but got '{0}'. Element: {1}",e,Qe(t));var o=a[5]||a[7],i=a[6],c=/ as /.test(a[0])&&a[1],s=a[9],l=r(a[2]?a[1]:o),g=c&&r(c)||l,I=s&&r(s),B=s?function(e,t){return I(n,t)}:function(e){return Rt(e)},A=function(e,t){return B(e,p(e,t))},u=r(a[2]||a[1]),d=r(a[3]||""),_=r(a[4]||""),C=r(a[8]),b={},p=i?function(e,t){return b[i]=t,b[o]=e,b}:function(e){return b[o]=e,b};function Q(e,t,n,r,a){this.selectValue=e,this.viewValue=t,this.label=n,this.group=r,this.disabled=a}function y(e){var t;if(!i&&h(e))t=e;else for(var n in t=[],e)e.hasOwnProperty(n)&&"$"!==n.charAt(0)&&t.push(n);return t}return{trackBy:s,getTrackByValue:A,getWatchables:r(C,(function(e){for(var t=[],r=y(e=e||[]),o=r.length,i=0;i<o;i++){var c=e===r?i:r[i],s=e[c],l=p(s,c),g=B(s,l);if(t.push(g),a[2]||a[1]){var I=u(n,l);t.push(I)}if(a[4]){var A=_(n,l);t.push(A)}}return t})),getOptions:function(){for(var e=[],t={},r=C(n)||[],a=y(r),o=a.length,i=0;i<o;i++){var c=r===a?i:a[i],l=r[c],I=p(l,c),b=g(n,I),h=B(b,I),m=new Q(h,b,u(n,I),d(n,I),_(n,I));e.push(m),t[h]=m}return{items:e,selectValueMap:t,getOptionFromViewValue:function(e){return t[A(e)]},getViewValueFromOption:function(e){return s?oe(e.viewValue):e.viewValue}}}}}(s.ngOptions,c,e),p=n[0].createDocumentFragment();function Q(e,t){var n=a.cloneNode(!1);t.appendChild(n),function(e,t){e.element=t,t.disabled=e.disabled,e.label!==t.label&&(t.label=e.label,t.textContent=e.label);t.value=e.selectValue}(e,n)}function m(e){var t=_.getOptionFromViewValue(e),n=t&&t.element;return n&&!n.selected&&(n.selected=!0),t}g.generateUnknownOptionValue=function(e){return"?"},B?(g.writeValue=function(e){if(_){var t=e&&e.map(m)||[];_.items.forEach((function(e){e.element.selected&&!re(t,e)&&(e.element.selected=!1)}))}},g.readValue=function(){var e=c.val()||[],t=[];return y(e,(function(e){var n=_.selectValueMap[e];n&&!n.disabled&&t.push(_.getViewValueFromOption(n))})),t},b.trackBy&&e.$watchCollection((function(){if(D(I.$viewValue))return I.$viewValue.map((function(e){return b.getTrackByValue(e)}))}),(function(){I.$render()}))):(g.writeValue=function(e){if(_){var t=c[0].options[c[0].selectedIndex],n=_.getOptionFromViewValue(e);t&&t.removeAttribute("selected"),n?(c[0].value!==n.selectValue&&(g.removeUnknownOption(),c[0].value=n.selectValue,n.element.selected=!0),n.element.setAttribute("selected","selected")):g.selectUnknownOrEmptyOption(e)}},g.readValue=function(){var e=_.selectValueMap[c.val()];return e&&!e.disabled?(g.unselectEmptyOption(),g.removeUnknownOption(),_.getViewValueFromOption(e)):null},b.trackBy&&e.$watch((function(){return b.getTrackByValue(I.$viewValue)}),(function(){I.$render()}))),C&&(t(g.emptyOption)(e),c.prepend(g.emptyOption),8===g.emptyOption[0].nodeType?(g.hasEmptyOption=!1,g.registerOption=function(e,t){""===t.val()&&(g.hasEmptyOption=!0,g.emptyOption=t,g.emptyOption.removeClass("ng-scope"),I.$render(),t.on("$destroy",(function(){var e=g.$isEmptyOptionSelected();g.hasEmptyOption=!1,g.emptyOption=void 0,e&&I.$render()})))}):g.emptyOption.removeClass("ng-scope")),e.$watchCollection(b.getWatchables,(function(){var e=_&&g.readValue();if(_)for(var t=_.items.length-1;t>=0;t--){var n=_.items[t];N(n.group)?mt(n.element.parentNode):mt(n.element)}_=b.getOptions();var r={};if(_.items.forEach((function(e){var t;N(e.group)?((t=r[e.group])||(t=o.cloneNode(!1),p.appendChild(t),t.label=null===e.group?"null":e.group,r[e.group]=t),Q(e,t)):Q(e,p)})),c[0].appendChild(p),I.$render(),!I.$isEmpty(e)){var a=g.readValue();(b.trackBy||B?ce(e,a):e===a)||(I.$setViewValue(a),I.$render())}}))}}}}],zo=["$locale","$interpolate","$log",function(e,t,n){var r=/{}/g,a=/^when(Minus)?(.+)$/;return{link:function(o,i,c){var s,l=c.count,g=c.$attr.when&&i.attr(c.$attr.when),B=c.offset||0,A=o.$eval(g)||{},u={},d=t.startSymbol(),_=t.endSymbol(),C=d+l+"-"+B+_,b=p.noop;function Q(e){i.text(e||"")}y(c,(function(e,t){var n=a.exec(t);if(n){var r=(n[1]?"-":"")+I(n[2]);A[r]=i.attr(c.$attr[t])}})),y(A,(function(e,n){u[n]=t(e.replace(r,C))})),o.$watch(l,(function(t){var r=parseFloat(t),a=X(r);if(a||r in A||(r=e.pluralCat(r-B)),!(r===s||a&&X(s))){b();var i=u[r];T(i)?(null!=t&&n.debug("ngPluralize: no rule defined for '"+r+"' in "+g),b=R,Q()):b=o.$watch(i,Q),s=r}}))}}}],jo=a("ngRef"),Ko=["$parse",function(e){return{priority:-1,restrict:"A",compile:function(t,n){var r=un(ne(t)),a=e(n.ngRef),o=a.assign||function(){throw jo("nonassign",'Expression in ngRef="{0}" is non-assignable!',n.ngRef)};return function(e,t,i){var c;if(i.hasOwnProperty("ngRefRead")){if("$element"===i.ngRefRead)c=t;else if(!(c=t.data("$"+i.ngRefRead+"Controller")))throw jo("noctrl",'The controller for ngRefRead="{0}" could not be found on ngRef="{1}"',i.ngRefRead,n.ngRef)}else c=t.data("$"+r+"Controller");o(e,c=c||t),t.on("$destroy",(function(){a(e)===c&&o(e,null)}))}}}}],qo=["$parse","$animate","$compile",function(e,t,n){var r=a("ngRepeat"),o=function(e,t,n,r,a,o,i){e[n]=r,a&&(e[a]=o),e.$index=t,e.$first=0===t,e.$last=t===i-1,e.$middle=!(e.$first||e.$last),e.$odd=!(e.$even=0==(1&t))},i=function(e){return e.clone[0]},c=function(e){return e.clone[e.clone.length-1]},s=function(e,t,n){return Rt(n)},l=function(e,t){return t};return{restrict:"A",multiElement:!0,transclude:"element",priority:1e3,terminal:!0,$$tlb:!0,compile:function(a,I){var B=I.ngRepeat,A=n.$$createComment("end ngRepeat",B),u=B.match(/^\s*([\s\S]+?)\s+in\s+([\s\S]+?)(?:\s+as\s+([\s\S]+?))?(?:\s+track\s+by\s+([\s\S]+?))?\s*$/);if(!u)throw r("iexp","Expected expression in form of '_item_ in _collection_[ track by _id_]' but got '{0}'.",B);var d=u[1],_=u[2],C=u[3],b=u[4];if(!(u=d.match(/^(?:(\s*[$\w]+)|\(\s*([$\w]+)\s*,\s*([$\w]+)\s*\))$/)))throw r("iidexp","'_item_' in '_item_ in _collection_' should be an identifier or '(_key_, _value_)' expression, but got '{0}'.",d);var p,Q=u[3]||u[1],m=u[2];if(C&&(!/^[$a-zA-Z_][$a-zA-Z0-9_]*$/.test(C)||/^(null|undefined|this|\$index|\$first|\$middle|\$last|\$even|\$odd|\$parent|\$root|\$id)$/.test(C)))throw r("badident","alias '{0}' is invalid --- must be a valid JS identifier which is not a reserved name.",C);if(b){var F={$id:Rt},U=e(b);p=function(e,t,n,r){return m&&(F[m]=t),F[Q]=n,F.$index=r,U(e,F)}}return function(e,n,a,I,u){var d=Ne();e.$watchCollection(_,(function(a){var I,_,b,U,f,G,E,v,Z,X,W,R,V=n[0],O=Ne();if(C&&(e[C]=a),h(a))Z=a,v=p||s;else for(var x in v=p||l,Z=[],a)g.call(a,x)&&"$"!==x.charAt(0)&&Z.push(x);for(U=Z.length,W=new Array(U),I=0;I<U;I++)if(f=a===Z?I:Z[I],G=a[f],E=v(e,f,G,I),d[E])X=d[E],delete d[E],O[E]=X,W[I]=X;else{if(O[E])throw y(W,(function(e){e&&e.scope&&(d[e.id]=e)})),r("dupes","Duplicates in a repeater are not allowed. Use 'track by' expression to specify unique keys. Repeater: {0}, Duplicate key: {1}, Duplicate value: {2}",B,E,G);W[I]={id:E,scope:void 0,clone:void 0},O[E]=!0}for(var T in F&&(F[Q]=void 0),d){if(R=Te((X=d[T]).clone),t.leave(R),R[0].parentNode)for(I=0,_=R.length;I<_;I++)R[I].$$NG_REMOVED=!0;X.scope.$destroy()}for(I=0;I<U;I++)if(f=a===Z?I:Z[I],G=a[f],(X=W[I]).scope){b=V;do{b=b.nextSibling}while(b&&b.$$NG_REMOVED);i(X)!==b&&t.move(Te(X.clone),null,V),V=c(X),o(X.scope,I,Q,G,m,f,U)}else u((function(e,n){X.scope=n;var r=A.cloneNode(!1);e[e.length++]=r,t.enter(e,null,V),V=r,X.clone=e,O[X.id]=X,o(X.scope,I,Q,G,m,f,U)}));d=O}))}}}}],$o=["$animate",function(e){return{restrict:"A",multiElement:!0,link:function(t,n,r){t.$watch(r.ngShow,(function(t){e[t?"removeClass":"addClass"](n,"ng-hide",{tempClasses:"ng-hide-animate"})}))}}}],ei=["$animate",function(e){return{restrict:"A",multiElement:!0,link:function(t,n,r){t.$watch(r.ngHide,(function(t){e[t?"addClass":"removeClass"](n,"ng-hide",{tempClasses:"ng-hide-animate"})}))}}}],ti=Xa((function(e,t,n){e.$watchCollection(n.ngStyle,(function(e,n){n&&e!==n&&y(n,(function(e,n){t.css(n,"")})),e&&t.css(e)}))})),ni=["$animate","$compile",function(e,t){return{require:"ngSwitch",controller:["$scope",function(){this.cases={}}],link:function(n,r,a,o){var i=a.ngSwitch||a.on,c=[],s=[],l=[],g=[],I=function(e,t){return function(n){!1!==n&&e.splice(t,1)}};n.$watch(i,(function(n){for(var r,a;l.length;)e.cancel(l.pop());for(r=0,a=g.length;r<a;++r){var i=Te(s[r].clone);g[r].$destroy(),(l[r]=e.leave(i)).done(I(l,r))}s.length=0,g.length=0,(c=o.cases["!"+n]||o.cases["?"])&&y(c,(function(n){n.transclude((function(r,a){g.push(a);var o=n.element;r[r.length++]=t.$$createComment("end ngSwitchWhen");var i={clone:r};s.push(i),e.enter(r,o.parent(),o)}))}))}))}}}],ri=Xa({transclude:"element",priority:1200,require:"^ngSwitch",multiElement:!0,link:function(e,t,n,r,a){y(n.ngSwitchWhen.split(n.ngSwitchWhenSeparator).sort().filter((function(e,t,n){return n[t-1]!==e})),(function(e){r.cases["!"+e]=r.cases["!"+e]||[],r.cases["!"+e].push({transclude:a,element:t})}))}}),ai=Xa({transclude:"element",priority:1200,require:"^ngSwitch",multiElement:!0,link:function(e,t,n,r,a){r.cases["?"]=r.cases["?"]||[],r.cases["?"].push({transclude:a,element:t})}}),oi=a("ngTransclude"),ii=["$compile",function(e){return{restrict:"EAC",compile:function(t){var n=e(t.contents());return t.empty(),function(e,t,r,a,o){if(!o)throw oi("orphan","Illegal use of ngTransclude directive in the template! No parent directive that requires a transclusion found. Element: {0}",Qe(t));r.ngTransclude===r.$attr.ngTransclude&&(r.ngTransclude="");var i=r.ngTransclude||r.ngTranscludeSlot;function c(){n(e,(function(e){t.append(e)}))}o((function(e,n){e.length&&function(e){for(var t=0,n=e.length;t<n;t++){var r=e[t];if(r.nodeType!==ke||r.nodeValue.trim())return!0}}(e)?t.append(e):(c(),n.$destroy())}),null,i),i&&!o.isSlotFilled(i)&&c()}}}}],ci=["$templateCache",function(e){return{restrict:"E",terminal:!0,compile:function(t,n){if("text/ng-template"===n.type){var r=n.id,a=t[0].text;e.put(r,a)}}}}],si={$setViewValue:R,$render:R};function li(e,t){e.prop("selected",t),e.attr("selected",t)}var gi=["$element","$scope",function(t,n){var r=this,a=new xt;r.selectValueMap={},r.ngModelCtrl=si,r.multiple=!1,r.unknownOption=i(e.document.createElement("option")),r.hasEmptyOption=!1,r.emptyOption=void 0,r.renderUnknownOption=function(e){var n=r.generateUnknownOptionValue(e);r.unknownOption.val(n),t.prepend(r.unknownOption),li(r.unknownOption,!0),t.val(n)},r.updateUnknownOption=function(e){var n=r.generateUnknownOptionValue(e);r.unknownOption.val(n),li(r.unknownOption,!0),t.val(n)},r.generateUnknownOptionValue=function(e){return"? "+Rt(e)+" ?"},r.removeUnknownOption=function(){r.unknownOption.parent()&&r.unknownOption.remove()},r.selectEmptyOption=function(){r.emptyOption&&(t.val(""),li(r.emptyOption,!0))},r.unselectEmptyOption=function(){r.hasEmptyOption&&li(r.emptyOption,!1)},n.$on("$destroy",(function(){r.renderUnknownOption=R})),r.readValue=function(){var e=t.val(),n=e in r.selectValueMap?r.selectValueMap[e]:e;return r.hasOption(n)?n:null},r.writeValue=function(e){var n=t[0].options[t[0].selectedIndex];if(n&&li(i(n),!1),r.hasOption(e)){r.removeUnknownOption();var a=Rt(e);t.val(a in r.selectValueMap?a:e);var o=t[0].options[t[0].selectedIndex];li(i(o),!0)}else r.selectUnknownOrEmptyOption(e)},r.addOption=function(e,t){if(8!==t[0].nodeType){xe(e,'"option value"'),""===e&&(r.hasEmptyOption=!0,r.emptyOption=t);var n=a.get(e)||0;a.set(e,n+1),c()}},r.removeOption=function(e){var t=a.get(e);t&&(1===t?(a.delete(e),""===e&&(r.hasEmptyOption=!1,r.emptyOption=void 0)):a.set(e,t-1))},r.hasOption=function(e){return!!a.get(e)},r.$hasEmptyOption=function(){return r.hasEmptyOption},r.$isUnknownOptionSelected=function(){return t[0].options[0]===r.unknownOption[0]},r.$isEmptyOptionSelected=function(){return r.hasEmptyOption&&t[0].options[t[0].selectedIndex]===r.emptyOption[0]},r.selectUnknownOrEmptyOption=function(e){null==e&&r.emptyOption?(r.removeUnknownOption(),r.selectEmptyOption()):r.unknownOption.parent().length?r.updateUnknownOption(e):r.renderUnknownOption(e)};var o=!1;function c(){o||(o=!0,n.$$postDigest((function(){o=!1,r.ngModelCtrl.$render()})))}var s=!1;function l(e){s||(s=!0,n.$$postDigest((function(){n.$$destroyed||(s=!1,r.ngModelCtrl.$setViewValue(r.readValue()),e&&r.ngModelCtrl.$render())})))}r.registerOption=function(e,t,n,a,o){var i,s;n.$attr.ngValue?n.$observe("value",(function(e){var n,a=t.prop("selected");N(s)&&(r.removeOption(i),delete r.selectValueMap[s],n=!0),s=Rt(e),i=e,r.selectValueMap[s]=e,r.addOption(e,t),t.attr("value",s),n&&a&&l()})):a?n.$observe("value",(function(e){var n;r.readValue();var a=t.prop("selected");N(i)&&(r.removeOption(i),n=!0),i=e,r.addOption(e,t),n&&a&&l()})):o?e.$watch(o,(function(e,a){n.$set("value",e);var o=t.prop("selected");a!==e&&r.removeOption(a),r.addOption(e,t),a&&o&&l()})):r.addOption(n.value,t);n.$observe("disabled",(function(e){("true"===e||e&&t.prop("selected"))&&(r.multiple?l(!0):(r.ngModelCtrl.$setViewValue(null),r.ngModelCtrl.$render()))})),t.on("$destroy",(function(){var e=r.readValue(),t=n.value;r.removeOption(t),c(),(r.multiple&&e&&-1!==e.indexOf(t)||e===t)&&l(!0)}))}}],Ii=function(){return{restrict:"E",require:["select","?ngModel"],controller:gi,priority:1,link:{pre:function(e,t,n,r){var a=r[0],o=r[1];if(!o)return void(a.registerOption=R);if(a.ngModelCtrl=o,t.on("change",(function(){a.removeUnknownOption(),e.$apply((function(){o.$setViewValue(a.readValue())}))})),n.multiple){a.multiple=!0,a.readValue=function(){var e=[];return y(t.find("option"),(function(t){if(t.selected&&!t.disabled){var n=t.value;e.push(n in a.selectValueMap?a.selectValueMap[n]:n)}})),e},a.writeValue=function(e){y(t.find("option"),(function(t){var n=!!e&&(re(e,t.value)||re(e,a.selectValueMap[t.value]));n!==t.selected&&li(i(t),n)}))};var c,s=NaN;e.$watch((function(){s!==o.$viewValue||ce(c,o.$viewValue)||(c=Ye(o.$viewValue),o.$render()),s=o.$viewValue})),o.$isEmpty=function(e){return!e||0===e.length}}},post:function(e,t,n,r){var a=r[1];if(!a)return;var o=r[0];a.$render=function(){o.writeValue(a.$viewValue)}}}}},Bi=["$interpolate",function(e){return{restrict:"E",priority:100,compile:function(t,n){var r,a;return N(n.ngValue)||(N(n.value)?r=e(n.value,!0):(a=e(t.text(),!0))||n.$set("value",t.text())),function(e,t,n){var o=t.parent(),i=o.data("$selectController")||o.parent().data("$selectController");i&&i.registerOption(e,t,n,r,a)}}}}],Ai=["$parse",function(e){return{restrict:"A",require:"?ngModel",link:function(t,n,r,a){if(a){var o=r.hasOwnProperty("required")||e(r.ngRequired)(t);r.ngRequired||(r.required=!0),a.$validators.required=function(e,t){return!o||!a.$isEmpty(t)},r.$observe("required",(function(e){o!==e&&(o=e,a.$validate())}))}}}}],ui=["$parse",function(e){return{restrict:"A",require:"?ngModel",compile:function(t,n){var r,a;return n.ngPattern&&(r=n.ngPattern,a="/"===n.ngPattern.charAt(0)&&l.test(n.ngPattern)?function(){return n.ngPattern}:e(n.ngPattern)),function(e,t,n,o){if(o){var i=n.pattern;n.ngPattern?i=a(e):r=n.pattern;var c=Ci(i,r,t);n.$observe("pattern",(function(e){var n=c;c=Ci(e,r,t),(n&&n.toString())!==(c&&c.toString())&&o.$validate()})),o.$validators.pattern=function(e,t){return o.$isEmpty(t)||T(c)||c.test(t)}}}}}}],di=["$parse",function(e){return{restrict:"A",require:"?ngModel",link:function(t,n,r,a){if(a){var o=r.maxlength||e(r.ngMaxlength)(t),i=bi(o);r.$observe("maxlength",(function(e){o!==e&&(i=bi(e),o=e,a.$validate())})),a.$validators.maxlength=function(e,t){return i<0||a.$isEmpty(t)||t.length<=i}}}}}],_i=["$parse",function(e){return{restrict:"A",require:"?ngModel",link:function(t,n,r,a){if(a){var o=r.minlength||e(r.ngMinlength)(t),i=bi(o)||-1;r.$observe("minlength",(function(e){o!==e&&(i=bi(e)||-1,o=e,a.$validate())})),a.$validators.minlength=function(e,t){return a.$isEmpty(t)||t.length>=i}}}}}];function Ci(e,t,n){if(e){if(Y(e)&&(e=new RegExp("^"+e+"$")),!e.test)throw a("ngPattern")("noregexp","Expected {0} to be a RegExp but was {1}. Element: {2}",t,e,Qe(n));return e}}function bi(e){var t=Z(e);return X(t)?-1:t}e.angular.bootstrap?e.console&&console.log("WARNING: Tried to load AngularJS more than once."):(!function(){var t;if(!Re){var n=le();(c=T(n)?e.jQuery:n?e[n]:void 0)&&c.fn.on?(i=c,E(c.fn,{scope:Ut.scope,isolateScope:Ut.isolateScope,controller:Ut.controller,injector:Ut.injector,inheritedData:Ut.inheritedData})):i=ct,t=i.cleanData,i.cleanData=function(e){for(var n,r,a=0;null!=(r=e[a]);a++)(n=(i._data(r)||{}).events)&&n.$destroy&&i(r).triggerHandler("$destroy");t(e)},p.element=i,Re=!0}}(),function(t){E(t,{errorHandlingConfig:n,bootstrap:Ee,copy:oe,extend:E,merge:v,equals:ce,element:i,forEach:y,injector:Pt,noop:R,bind:Be,toJson:ue,fromJson:de,identity:V,isUndefined:T,isDefined:N,isString:Y,isFunction:P,isObject:w,isNumber:S,isElement:te,isArray:D,version:He,isDate:H,callbacks:{$$counter:0},getTestability:Ze,reloadWithDebugInfo:ve,$$minErr:a,$$csp:se,$$encodeUriSegment:me,$$encodeUriQuery:Fe,$$lowercase:I,$$stringify:we,$$uppercase:B}),(s=function(e){var t=a("$injector"),n=a("ng");function r(e,t,n){return e[t]||(e[t]=n())}var o=r(e,"angular",Object);return o.$$minErr=o.$$minErr||a,r(o,"module",(function(){var e={};return function(a,o,i){var c={};return function(e,t){if("hasOwnProperty"===e)throw n("badname","hasOwnProperty is not a valid {0} name",t)}(a,"module"),o&&e.hasOwnProperty(a)&&(e[a]=null),r(e,a,(function(){if(!o)throw t("nomod","Module '{0}' is not available! You either misspelled the module name or forgot to load it. If registering a module ensure that you specify the dependencies as the second argument.",a);var e=[],r=[],s=[],l=I("$injector","invoke","push",r),g={_invokeQueue:e,_configBlocks:r,_runBlocks:s,info:function(e){if(N(e)){if(!w(e))throw n("aobj","Argument '{0}' must be an object","value");return c=e,this}return c},requires:o,name:a,provider:B("$provide","provider"),factory:B("$provide","factory"),service:B("$provide","service"),value:I("$provide","value"),constant:I("$provide","constant","unshift"),decorator:B("$provide","decorator",r),animation:B("$animateProvider","register"),filter:B("$filterProvider","register"),controller:B("$controllerProvider","register"),directive:B("$compileProvider","directive"),component:B("$compileProvider","component"),config:l,run:function(e){return s.push(e),this}};return i&&l(i),g;function I(t,n,r,a){return a||(a=e),function(){return a[r||"push"]([t,n,arguments]),g}}function B(t,n,r){return r||(r=e),function(e,o){return o&&P(o)&&(o.$$moduleName=a),r.push([t,n,arguments]),g}}}))}}))}(e))("ng",["ngLocale"],["$provide",function(e){e.provider({$$sanitizeUri:Tr}),e.provider("$compile",gn).directive({a:Wa,input:go,textarea:go,form:Ta,script:ci,select:Ii,option:Bi,ngBind:uo,ngBindHtml:Co,ngBindTemplate:_o,ngClass:Qo,ngClassEven:yo,ngClassOdd:ho,ngCloak:mo,ngController:Fo,ngForm:Na,ngHide:ei,ngIf:Eo,ngInclude:vo,ngInit:Xo,ngNonBindable:Jo,ngPluralize:zo,ngRef:Ko,ngRepeat:qo,ngShow:$o,ngStyle:ti,ngSwitch:ni,ngSwitchWhen:ri,ngSwitchDefault:ai,ngOptions:Lo,ngTransclude:ii,ngModel:ko,ngList:Wo,ngChange:bo,pattern:ui,ngPattern:ui,required:Ai,ngRequired:Ai,minlength:_i,ngMinlength:_i,maxlength:di,ngMaxlength:di,ngValue:Ao,ngModelOptions:Ho}).directive({ngInclude:Zo,input:Io}).directive(Ra).directive(Uo),e.provider({$anchorScroll:Mt,$animate:$t,$animateCss:nn,$$animateJs:Kt,$$animateQueue:qt,$$AnimateRunner:tn,$$animateAsyncRun:en,$browser:an,$cacheFactory:on,$controller:Qn,$document:hn,$$isDocumentHidden:yn,$exceptionHandler:mn,$filter:sa,$$forceReflow:Fn,$interpolate:Sn,$interval:Dn,$$intervalFactory:Jn,$http:Nn,$httpParamSerializer:Xn,$httpParamSerializerJQLike:Wn,$httpBackend:kn,$xhrFactory:wn,$jsonpCallbacks:Pn,$location:lr,$log:gr,$parse:Er,$rootScope:xr,$q:vr,$$q:Zr,$sce:Dr,$sceDelegate:Hr,$sniffer:Jr,$$taskTrackerFactory:Pr,$templateCache:cn,$templateRequest:zr,$$testability:jr,$timeout:qr,$window:oa,$$rAF:Or,$$jqLite:Wt,$$Map:Tt,$$cookieReader:ca})}]).info({angularVersion:"1.7.9"})}(p),p.module("ngLocale",[],["$provide",function(e){var t="one",n="other";e.value("$locale",{DATETIME_FORMATS:{AMPMS:["AM","PM"],DAY:["Sunday","Monday","Tuesday","Wednesday","Thursday","Friday","Saturday"],ERANAMES:["Before Christ","Anno Domini"],ERAS:["BC","AD"],FIRSTDAYOFWEEK:6,MONTH:["January","February","March","April","May","June","July","August","September","October","November","December"],SHORTDAY:["Sun","Mon","Tue","Wed","Thu","Fri","Sat"],SHORTMONTH:["Jan","Feb","Mar","Apr","May","Jun","Jul","Aug","Sep","Oct","Nov","Dec"],STANDALONEMONTH:["January","February","March","April","May","June","July","August","September","October","November","December"],WEEKENDRANGE:[5,6],fullDate:"EEEE, MMMM d, y",longDate:"MMMM d, y",medium:"MMM d, y h:mm:ss a",mediumDate:"MMM d, y",mediumTime:"h:mm:ss a",short:"M/d/yy h:mm a",shortDate:"M/d/yy",shortTime:"h:mm a"},NUMBER_FORMATS:{CURRENCY_SYM:"$",DECIMAL_SEP:".",GROUP_SEP:",",PATTERNS:[{gSize:3,lgSize:3,maxFrac:3,minFrac:0,minInt:1,negPre:"-",negSuf:"",posPre:"",posSuf:""},{gSize:3,lgSize:3,maxFrac:2,minFrac:2,minInt:1,negPre:"-¤",negSuf:"",posPre:"¤",posSuf:""}]},id:"en-us",localeID:"en_US",pluralCat:function(e,r){var a=0|e,o=function(e,t){var n=t;void 0===n&&(n=Math.min(function(e){var t=(e+="").indexOf(".");return-1==t?0:e.length-t-1}(e),3));var r=Math.pow(10,n);return{v:n,f:(e*r|0)%r}}(e,r);return 1==a&&0==o.v?t:n}})}]),i((function(){Ge(e.document,Ee)})))}(window),!window.angular.$$csp().noInlineStyle&&window.angular.element(document.head).prepend('<style type="text/css">@charset "UTF-8";[ng\\:cloak],[ng-cloak],[data-ng-cloak],[x-ng-cloak],.ng-cloak,.x-ng-cloak,.ng-hide:not(.ng-hide-animate){display:none !important;}ng\\:form{display:block;}.ng-animate-shim{visibility:hidden;}.ng-anchor{position:absolute;}</style>')},function(e,t,n){"use strict";var r,a,o,i,c,s,l,g,I,B=angular.$$minErr("$sanitize");angular.module("ngSanitize",[]).provider("$sanitize",(function(){var e=!1,t=!1;this.$get=["$$sanitizeUri",function(n){return e=!0,t&&a(y,Q),function(e){var t=[];return g(e,I(t,(function(e,t){return!/^unsafe:/.test(n(e,t))}))),t.join("")}}],this.enableSvg=function(e){return c(e)?(t=e,this):t},this.addValidElements=function(t){return e||(i(t)&&(t={htmlElements:t}),v(Q,t.svgElements),v(u,t.htmlVoidElements),v(y,t.htmlVoidElements),v(y,t.htmlElements)),this},this.addValidAttrs=function(t){return e||a(f,E(t,!0)),this},r=angular.bind,a=angular.extend,o=angular.forEach,i=angular.isArray,c=angular.isDefined,s=angular.$$lowercase,angular.noop,g=function(e,t){null==e?e="":"string"!=typeof e&&(e=""+e);var n=Z(e);if(!n)return"";var r=5;do{if(0===r)throw B("uinput","Failed to sanitize html because the input is unstable");r--,e=n.innerHTML,n=Z(e)}while(e!==n.innerHTML);var a=n.firstChild;for(;a;){switch(a.nodeType){case 1:t.start(a.nodeName.toLowerCase(),X(a.attributes));break;case 3:t.chars(a.textContent)}var o;if(!((o=a.firstChild)||(1===a.nodeType&&t.end(a.nodeName.toLowerCase()),o=V("nextSibling",a))))for(;null==o&&(a=V("parentNode",a))!==n;)o=V("nextSibling",a),1===a.nodeType&&t.end(a.nodeName.toLowerCase());a=o}for(;a=n.firstChild;)n.removeChild(a)},I=function(e,t){var n=!1,a=r(e,e.push);return{start:function(e,r){e=s(e),!n&&h[e]&&(n=e),n||!0!==y[e]||(a("<"),a(e),o(r,(function(n,r){var o=s(r),i="img"===e&&"src"===o||"background"===o;!0!==f[o]||!0===m[o]&&!t(n,i)||(a(" "),a(r),a('="'),a(W(n)),a('"'))})),a(">"))},end:function(e){e=s(e),n||!0!==y[e]||!0===u[e]||(a("</"),a(e),a(">")),e==n&&(n=!1)},chars:function(e){n||a(W(e))}}},l=window.Node.prototype.contains||function(e){return!!(16&this.compareDocumentPosition(e))};var n=/[\uD800-\uDBFF][\uDC00-\uDFFF]/g,A=/([^#-~ |!])/g,u=G("area,br,col,hr,img,wbr"),d=G("colgroup,dd,dt,li,p,tbody,td,tfoot,th,thead,tr"),_=G("rp,rt"),C=a({},_,d),b=a({},d,G("address,article,aside,blockquote,caption,center,del,dir,div,dl,figure,figcaption,footer,h1,h2,h3,h4,h5,h6,header,hgroup,hr,ins,map,menu,nav,ol,pre,section,table,ul,progress")),p=a({},_,G("a,abbr,acronym,b,bdi,bdo,big,br,cite,code,del,dfn,em,font,i,img,ins,kbd,label,map,mark,q,ruby,rp,rt,s,samp,small,span,strike,strong,sub,sup,time,tt,u,var")),Q=G("circle,defs,desc,ellipse,font-face,font-face-name,font-face-src,g,glyph,hkern,image,linearGradient,line,marker,metadata,missing-glyph,mpath,path,polygon,polyline,radialGradient,rect,stop,svg,switch,text,title,tspan"),h=G("script,style"),y=a({},u,b,p,C),m=G("background,cite,href,longdesc,src,xlink:href,xml:base"),F=G("abbr,align,alt,axis,bgcolor,border,cellpadding,cellspacing,class,clear,color,cols,colspan,compact,coords,dir,face,headers,height,hreflang,hspace,ismap,lang,language,nohref,nowrap,rel,rev,rows,rowspan,rules,scope,scrolling,shape,size,span,start,summary,tabindex,target,title,type,valign,value,vspace,width,style"),U=G("accent-height,accumulate,additive,alphabetic,arabic-form,ascent,baseProfile,bbox,begin,by,calcMode,cap-height,class,color,color-rendering,content,cx,cy,d,dx,dy,descent,display,dur,end,fill,fill-rule,font-family,font-size,font-stretch,font-style,font-variant,font-weight,from,fx,fy,g1,g2,glyph-name,gradientUnits,hanging,height,horiz-adv-x,horiz-origin-x,ideographic,k,keyPoints,keySplines,keyTimes,lang,marker-end,marker-mid,marker-start,markerHeight,markerUnits,markerWidth,mathematical,max,min,offset,opacity,orient,origin,overline-position,overline-thickness,panose-1,path,pathLength,points,preserveAspectRatio,r,refX,refY,repeatCount,repeatDur,requiredExtensions,requiredFeatures,restart,rotate,rx,ry,slope,stemh,stemv,stop-color,stop-opacity,strikethrough-position,strikethrough-thickness,stroke,stroke-dasharray,stroke-dashoffset,stroke-linecap,stroke-linejoin,stroke-miterlimit,stroke-opacity,stroke-width,systemLanguage,target,text-anchor,to,transform,type,u1,u2,underline-position,underline-thickness,unicode,unicode-range,units-per-em,values,version,viewBox,visibility,width,widths,x,x-height,x1,x2,xlink:actuate,xlink:arcrole,xlink:role,xlink:show,xlink:title,xlink:type,xml:base,xml:lang,xml:space,xmlns,xmlns:xlink,y,y1,y2,zoomAndPan",!0),f=a({},m,U,F);function G(e,t){return E(e.split(","),t)}function E(e,t){var n,r={};for(n=0;n<e.length;n++)r[t?s(e[n]):e[n]]=!0;return r}function v(e,t){t&&t.length&&a(e,E(t))}var Z=function(e,t){var n;if(!t||!t.implementation)throw B("noinert","Can't create an inert html document");var r=((n=t.implementation.createHTMLDocument("inert")).documentElement||n.getDocumentElement()).querySelector("body");return r.innerHTML='<svg><g onload="this.parentNode.remove()"></g></svg>',r.querySelector("svg")?(r.innerHTML='<svg><p><style><img src="</style><img src=x onerror=alert(1)//">',r.querySelector("svg img")?function(t){t="<remove></remove>"+t;try{var n=(new e.DOMParser).parseFromString(t,"text/html").body;return n.firstChild.remove(),n}catch(e){return}}:function(e){r.innerHTML=e,t.documentMode&&R(r);return r}):function(t){t="<remove></remove>"+t;try{t=encodeURI(t)}catch(e){return}var n=new e.XMLHttpRequest;n.responseType="document",n.open("GET","data:text/html;charset=utf-8,"+t,!1),n.send(null);var r=n.response.body;return r.firstChild.remove(),r}}(window,window.document);function X(e){for(var t={},n=0,r=e.length;n<r;n++){var a=e[n];t[a.name]=a.value}return t}function W(e){return e.replace(/&/g,"&").replace(n,(function(e){return"&#"+(1024*(e.charCodeAt(0)-55296)+(e.charCodeAt(1)-56320)+65536)+";"})).replace(A,(function(e){return"&#"+e.charCodeAt(0)+";"})).replace(/</g,"<").replace(/>/g,">")}function R(e){for(;e;){if(e.nodeType===window.Node.ELEMENT_NODE)for(var t=e.attributes,n=0,r=t.length;n<r;n++){var a=t[n],o=a.name.toLowerCase();"xmlns:ns1"!==o&&0!==o.lastIndexOf("ns1:",0)||(e.removeAttributeNode(a),n--,r--)}var i=e.firstChild;i&&R(i),e=V("nextSibling",e)}}function V(e,t){var n=t[e];if(n&&l.call(t,n))throw B("elclob","Failed to sanitize html because the element is clobbered: {0}",t.outerHTML||t.outerText);return n}})).info({angularVersion:'"NG_VERSION_FULL"'})},function(e,t){!function(e){"use strict";var t=[0,1,2,3,4,4,5,5,6,6,6,6,7,7,7,7,8,8,8,8,8,8,8,8,9,9,9,9,9,9,9,9,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,0,0,16,17,18,18,19,19,20,20,20,20,21,21,21,21,22,22,22,22,22,22,22,22,23,23,23,23,23,23,23,23,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,25,25,25,25,25,25,25,25,25,25,25,25,25,25,25,25,26,26,26,26,26,26,26,26,26,26,26,26,26,26,26,26,26,26,26,26,26,26,26,26,26,26,26,26,26,26,26,26,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,28,28,28,28,28,28,28,28,28,28,28,28,28,28,28,28,28,28,28,28,28,28,28,28,28,28,28,28,28,28,28,28,28,28,28,28,28,28,28,28,28,28,28,28,28,28,28,28,28,28,28,28,28,28,28,28,28,28,28,28,28,28,28,28,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29];function n(){var e=this;function t(e,t){var n=0;do{n|=1&e,e>>>=1,n<<=1}while(--t>0);return n>>>1}e.build_tree=function(n){var r,a,o,i=e.dyn_tree,c=e.stat_desc.static_tree,s=e.stat_desc.elems,l=-1;for(n.heap_len=0,n.heap_max=573,r=0;r<s;r++)0!==i[2*r]?(n.heap[++n.heap_len]=l=r,n.depth[r]=0):i[2*r+1]=0;for(;n.heap_len<2;)i[2*(o=n.heap[++n.heap_len]=l<2?++l:0)]=1,n.depth[o]=0,n.opt_len--,c&&(n.static_len-=c[2*o+1]);for(e.max_code=l,r=Math.floor(n.heap_len/2);r>=1;r--)n.pqdownheap(i,r);o=s;do{r=n.heap[1],n.heap[1]=n.heap[n.heap_len--],n.pqdownheap(i,1),a=n.heap[1],n.heap[--n.heap_max]=r,n.heap[--n.heap_max]=a,i[2*o]=i[2*r]+i[2*a],n.depth[o]=Math.max(n.depth[r],n.depth[a])+1,i[2*r+1]=i[2*a+1]=o,n.heap[1]=o++,n.pqdownheap(i,1)}while(n.heap_len>=2);n.heap[--n.heap_max]=n.heap[1],function(t){var n,r,a,o,i,c,s=e.dyn_tree,l=e.stat_desc.static_tree,g=e.stat_desc.extra_bits,I=e.stat_desc.extra_base,B=e.stat_desc.max_length,A=0;for(o=0;o<=15;o++)t.bl_count[o]=0;for(s[2*t.heap[t.heap_max]+1]=0,n=t.heap_max+1;n<573;n++)(o=s[2*s[2*(r=t.heap[n])+1]+1]+1)>B&&(o=B,A++),s[2*r+1]=o,r>e.max_code||(t.bl_count[o]++,i=0,r>=I&&(i=g[r-I]),c=s[2*r],t.opt_len+=c*(o+i),l&&(t.static_len+=c*(l[2*r+1]+i)));if(0!==A){do{for(o=B-1;0===t.bl_count[o];)o--;t.bl_count[o]--,t.bl_count[o+1]+=2,t.bl_count[B]--,A-=2}while(A>0);for(o=B;0!==o;o--)for(r=t.bl_count[o];0!==r;)(a=t.heap[--n])>e.max_code||(s[2*a+1]!=o&&(t.opt_len+=(o-s[2*a+1])*s[2*a],s[2*a+1]=o),r--)}}(n),function(e,n,r){var a,o,i,c=[],s=0;for(a=1;a<=15;a++)c[a]=s=s+r[a-1]<<1;for(o=0;o<=n;o++)0!==(i=e[2*o+1])&&(e[2*o]=t(c[i]++,i))}(i,e.max_code,n.bl_count)}}function r(e,t,n,r,a){this.static_tree=e,this.extra_bits=t,this.extra_base=n,this.elems=r,this.max_length=a}n._length_code=[0,1,2,3,4,5,6,7,8,8,9,9,10,10,11,11,12,12,12,12,13,13,13,13,14,14,14,14,15,15,15,15,16,16,16,16,16,16,16,16,17,17,17,17,17,17,17,17,18,18,18,18,18,18,18,18,19,19,19,19,19,19,19,19,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,23,23,23,23,23,23,23,23,23,23,23,23,23,23,23,23,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,25,25,25,25,25,25,25,25,25,25,25,25,25,25,25,25,25,25,25,25,25,25,25,25,25,25,25,25,25,25,25,25,26,26,26,26,26,26,26,26,26,26,26,26,26,26,26,26,26,26,26,26,26,26,26,26,26,26,26,26,26,26,26,26,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,28],n.base_length=[0,1,2,3,4,5,6,7,8,10,12,14,16,20,24,28,32,40,48,56,64,80,96,112,128,160,192,224,0],n.base_dist=[0,1,2,3,4,6,8,12,16,24,32,48,64,96,128,192,256,384,512,768,1024,1536,2048,3072,4096,6144,8192,12288,16384,24576],n.d_code=function(e){return e<256?t[e]:t[256+(e>>>7)]},n.extra_lbits=[0,0,0,0,0,0,0,0,1,1,1,1,2,2,2,2,3,3,3,3,4,4,4,4,5,5,5,5,0],n.extra_dbits=[0,0,0,0,1,1,2,2,3,3,4,4,5,5,6,6,7,7,8,8,9,9,10,10,11,11,12,12,13,13],n.extra_blbits=[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,3,7],n.bl_order=[16,17,18,0,8,7,9,6,10,5,11,4,12,3,13,2,14,1,15],r.static_ltree=[12,8,140,8,76,8,204,8,44,8,172,8,108,8,236,8,28,8,156,8,92,8,220,8,60,8,188,8,124,8,252,8,2,8,130,8,66,8,194,8,34,8,162,8,98,8,226,8,18,8,146,8,82,8,210,8,50,8,178,8,114,8,242,8,10,8,138,8,74,8,202,8,42,8,170,8,106,8,234,8,26,8,154,8,90,8,218,8,58,8,186,8,122,8,250,8,6,8,134,8,70,8,198,8,38,8,166,8,102,8,230,8,22,8,150,8,86,8,214,8,54,8,182,8,118,8,246,8,14,8,142,8,78,8,206,8,46,8,174,8,110,8,238,8,30,8,158,8,94,8,222,8,62,8,190,8,126,8,254,8,1,8,129,8,65,8,193,8,33,8,161,8,97,8,225,8,17,8,145,8,81,8,209,8,49,8,177,8,113,8,241,8,9,8,137,8,73,8,201,8,41,8,169,8,105,8,233,8,25,8,153,8,89,8,217,8,57,8,185,8,121,8,249,8,5,8,133,8,69,8,197,8,37,8,165,8,101,8,229,8,21,8,149,8,85,8,213,8,53,8,181,8,117,8,245,8,13,8,141,8,77,8,205,8,45,8,173,8,109,8,237,8,29,8,157,8,93,8,221,8,61,8,189,8,125,8,253,8,19,9,275,9,147,9,403,9,83,9,339,9,211,9,467,9,51,9,307,9,179,9,435,9,115,9,371,9,243,9,499,9,11,9,267,9,139,9,395,9,75,9,331,9,203,9,459,9,43,9,299,9,171,9,427,9,107,9,363,9,235,9,491,9,27,9,283,9,155,9,411,9,91,9,347,9,219,9,475,9,59,9,315,9,187,9,443,9,123,9,379,9,251,9,507,9,7,9,263,9,135,9,391,9,71,9,327,9,199,9,455,9,39,9,295,9,167,9,423,9,103,9,359,9,231,9,487,9,23,9,279,9,151,9,407,9,87,9,343,9,215,9,471,9,55,9,311,9,183,9,439,9,119,9,375,9,247,9,503,9,15,9,271,9,143,9,399,9,79,9,335,9,207,9,463,9,47,9,303,9,175,9,431,9,111,9,367,9,239,9,495,9,31,9,287,9,159,9,415,9,95,9,351,9,223,9,479,9,63,9,319,9,191,9,447,9,127,9,383,9,255,9,511,9,0,7,64,7,32,7,96,7,16,7,80,7,48,7,112,7,8,7,72,7,40,7,104,7,24,7,88,7,56,7,120,7,4,7,68,7,36,7,100,7,20,7,84,7,52,7,116,7,3,8,131,8,67,8,195,8,35,8,163,8,99,8,227,8],r.static_dtree=[0,5,16,5,8,5,24,5,4,5,20,5,12,5,28,5,2,5,18,5,10,5,26,5,6,5,22,5,14,5,30,5,1,5,17,5,9,5,25,5,5,5,21,5,13,5,29,5,3,5,19,5,11,5,27,5,7,5,23,5],r.static_l_desc=new r(r.static_ltree,n.extra_lbits,257,286,15),r.static_d_desc=new r(r.static_dtree,n.extra_dbits,0,30,15),r.static_bl_desc=new r(null,n.extra_blbits,0,19,7);function a(e,t,n,r,a){this.good_length=e,this.max_lazy=t,this.nice_length=n,this.max_chain=r,this.func=a}var o=[new a(0,0,0,0,0),new a(4,4,8,4,1),new a(4,5,16,8,1),new a(4,6,32,32,1),new a(4,4,16,16,2),new a(8,16,32,32,2),new a(8,16,128,128,2),new a(8,32,128,256,2),new a(32,128,258,1024,2),new a(32,258,258,4096,2)],i=["need dictionary","stream end","","","stream error","data error","","buffer error","",""];function c(e,t,n,r){var a=e[2*t],o=e[2*n];return a<o||a==o&&r[t]<=r[n]}function s(){var e,t,a,s,l,g,I,B,A,u,d,_,C,b,p,Q,h,y,m,F,U,f,G,E,v,Z,X,W,R,V,O,x,T,N,w,k,Y,S,H,D,J,P=this,M=new n,L=new n,z=new n;function j(){var e;for(e=0;e<286;e++)O[2*e]=0;for(e=0;e<30;e++)x[2*e]=0;for(e=0;e<19;e++)T[2*e]=0;O[512]=1,P.opt_len=P.static_len=0,k=S=0}function K(e,t){var n,r,a=-1,o=e[1],i=0,c=7,s=4;for(0===o&&(c=138,s=3),e[2*(t+1)+1]=65535,n=0;n<=t;n++)r=o,o=e[2*(n+1)+1],++i<c&&r==o||(i<s?T[2*r]+=i:0!==r?(r!=a&&T[2*r]++,T[32]++):i<=10?T[34]++:T[36]++,i=0,a=r,0===o?(c=138,s=3):r==o?(c=6,s=3):(c=7,s=4))}function q(e){P.pending_buf[P.pending++]=e}function $(e){q(255&e),q(e>>>8&255)}function ee(e,t){var n,r=t;J>16-r?($(D|=(n=e)<<J&65535),D=n>>>16-J,J+=r-16):(D|=e<<J&65535,J+=r)}function te(e,t){var n=2*e;ee(65535&t[n],65535&t[n+1])}function ne(e,t){var n,r,a=-1,o=e[1],i=0,c=7,s=4;for(0===o&&(c=138,s=3),n=0;n<=t;n++)if(r=o,o=e[2*(n+1)+1],!(++i<c&&r==o)){if(i<s)do{te(r,T)}while(0!=--i);else 0!==r?(r!=a&&(te(r,T),i--),te(16,T),ee(i-3,2)):i<=10?(te(17,T),ee(i-3,3)):(te(18,T),ee(i-11,7));i=0,a=r,0===o?(c=138,s=3):r==o?(c=6,s=3):(c=7,s=4)}}function re(){16==J?($(D),D=0,J=0):J>=8&&(q(255&D),D>>>=8,J-=8)}function ae(e,t){var r,a,o;if(P.pending_buf[Y+2*k]=e>>>8&255,P.pending_buf[Y+2*k+1]=255&e,P.pending_buf[N+k]=255&t,k++,0===e?O[2*t]++:(S++,e--,O[2*(n._length_code[t]+256+1)]++,x[2*n.d_code(e)]++),0==(8191&k)&&X>2){for(r=8*k,a=U-h,o=0;o<30;o++)r+=x[2*o]*(5+n.extra_dbits[o]);if(r>>>=3,S<Math.floor(k/2)&&r<Math.floor(a/2))return!0}return k==w-1}function oe(e,t){var r,a,o,i,c=0;if(0!==k)do{r=P.pending_buf[Y+2*c]<<8&65280|255&P.pending_buf[Y+2*c+1],a=255&P.pending_buf[N+c],c++,0===r?te(a,e):(te((o=n._length_code[a])+256+1,e),0!==(i=n.extra_lbits[o])&&ee(a-=n.base_length[o],i),r--,te(o=n.d_code(r),t),0!==(i=n.extra_dbits[o])&&ee(r-=n.base_dist[o],i))}while(c<k);te(256,e),H=e[513]}function ie(){J>8?$(D):J>0&&q(255&D),D=0,J=0}function ce(e,t,n){ee(0+(n?1:0),3),function(e,t,n){ie(),H=8,n&&($(t),$(~t)),P.pending_buf.set(B.subarray(e,e+t),P.pending),P.pending+=t}(e,t,!0)}function se(e,t,a){var o,i,c=0;X>0?(M.build_tree(P),L.build_tree(P),c=function(){var e;for(K(O,M.max_code),K(x,L.max_code),z.build_tree(P),e=18;e>=3&&0===T[2*n.bl_order[e]+1];e--);return P.opt_len+=3*(e+1)+5+5+4,e}(),o=P.opt_len+3+7>>>3,(i=P.static_len+3+7>>>3)<=o&&(o=i)):o=i=t+5,t+4<=o&&-1!=e?ce(e,t,a):i==o?(ee(2+(a?1:0),3),oe(r.static_ltree,r.static_dtree)):(ee(4+(a?1:0),3),function(e,t,r){var a;for(ee(e-257,5),ee(t-1,5),ee(r-4,4),a=0;a<r;a++)ee(T[2*n.bl_order[a]+1],3);ne(O,e-1),ne(x,t-1)}(M.max_code+1,L.max_code+1,c+1),oe(O,x)),j(),a&&ie()}function le(t){se(h>=0?h:-1,U-h,t),h=U,e.flush_pending()}function ge(){var t,n,r,a;do{if(0===(a=A-G-U)&&0===U&&0===G)a=l;else if(-1==a)a--;else if(U>=l+l-262){B.set(B.subarray(l,l+l),0),f-=l,U-=l,h-=l,r=t=C;do{n=65535&d[--r],d[r]=n>=l?n-l:0}while(0!=--t);r=t=l;do{n=65535&u[--r],u[r]=n>=l?n-l:0}while(0!=--t);a+=l}if(0===e.avail_in)return;t=e.read_buf(B,U+G,a),(G+=t)>=3&&(_=((_=255&B[U])<<Q^255&B[U+1])&p)}while(G<262&&0!==e.avail_in)}function Ie(e){var t,n,r=v,a=U,o=E,i=U>l-262?U-(l-262):0,c=V,s=I,g=U+258,A=B[a+o-1],d=B[a+o];E>=R&&(r>>=2),c>G&&(c=G);do{if(B[(t=e)+o]==d&&B[t+o-1]==A&&B[t]==B[a]&&B[++t]==B[a+1]){a+=2,t++;do{}while(B[++a]==B[++t]&&B[++a]==B[++t]&&B[++a]==B[++t]&&B[++a]==B[++t]&&B[++a]==B[++t]&&B[++a]==B[++t]&&B[++a]==B[++t]&&B[++a]==B[++t]&&a<g);if(n=258-(g-a),a=g-258,n>o){if(f=e,o=n,n>=c)break;A=B[a+o-1],d=B[a+o]}}}while((e=65535&u[e&s])>i&&0!=--r);return o<=G?o:G}function Be(e){return e.total_in=e.total_out=0,e.msg=null,P.pending=0,P.pending_out=0,t=113,s=0,M.dyn_tree=O,M.stat_desc=r.static_l_desc,L.dyn_tree=x,L.stat_desc=r.static_d_desc,z.dyn_tree=T,z.stat_desc=r.static_bl_desc,D=0,J=0,H=8,j(),function(){var e;for(A=2*l,d[C-1]=0,e=0;e<C-1;e++)d[e]=0;Z=o[X].max_lazy,R=o[X].good_length,V=o[X].nice_length,v=o[X].max_chain,U=0,h=0,G=0,y=E=2,F=0,_=0}(),0}P.depth=[],P.bl_count=[],P.heap=[],O=[],x=[],T=[],P.pqdownheap=function(e,t){for(var n=P.heap,r=n[t],a=t<<1;a<=P.heap_len&&(a<P.heap_len&&c(e,n[a+1],n[a],P.depth)&&a++,!c(e,r,n[a],P.depth));)n[t]=n[a],t=a,a<<=1;n[t]=r},P.deflateInit=function(e,t,n,r,o,i){return r||(r=8),o||(o=8),i||(i=0),e.msg=null,-1==t&&(t=6),o<1||o>9||8!=r||n<9||n>15||t<0||t>9||i<0||i>2?-2:(e.dstate=P,I=(l=1<<(g=n))-1,p=(C=1<<(b=o+7))-1,Q=Math.floor((b+3-1)/3),B=new Uint8Array(2*l),u=[],d=[],w=1<<o+6,P.pending_buf=new Uint8Array(4*w),a=4*w,Y=Math.floor(w/2),N=3*w,X=t,W=i,255&r,Be(e))},P.deflateEnd=function(){return 42!=t&&113!=t&&666!=t?-2:(P.pending_buf=null,d=null,u=null,B=null,P.dstate=null,113==t?-3:0)},P.deflateParams=function(e,t,n){var r=0;return-1==t&&(t=6),t<0||t>9||n<0||n>2?-2:(o[X].func!=o[t].func&&0!==e.total_in&&(r=e.deflate(1)),X!=t&&(Z=o[X=t].max_lazy,R=o[X].good_length,V=o[X].nice_length,v=o[X].max_chain),W=n,r)},P.deflateSetDictionary=function(e,n,r){var a,o=r,i=0;if(!n||42!=t)return-2;if(o<3)return 0;for(o>l-262&&(i=r-(o=l-262)),B.set(n.subarray(i,i+o),0),U=o,h=o,_=((_=255&B[0])<<Q^255&B[1])&p,a=0;a<=o-3;a++)_=(_<<Q^255&B[a+2])&p,u[a&I]=d[_],d[_]=a;return 0},P.deflate=function(n,c){var A,b,v,R,V,O;if(c>4||c<0)return-2;if(!n.next_out||!n.next_in&&0!==n.avail_in||666==t&&4!=c)return n.msg=i[4],-2;if(0===n.avail_out)return n.msg=i[7],-5;if(e=n,R=s,s=c,42==t&&(b=8+(g-8<<4)<<8,(v=(X-1&255)>>1)>3&&(v=3),b|=v<<6,0!==U&&(b|=32),t=113,q((O=b+=31-b%31)>>8&255),q(255&O)),0!==P.pending){if(e.flush_pending(),0===e.avail_out)return s=-1,0}else if(0===e.avail_in&&c<=R&&4!=c)return e.msg=i[7],-5;if(666==t&&0!==e.avail_in)return n.msg=i[7],-5;if(0!==e.avail_in||0!==G||0!=c&&666!=t){switch(V=-1,o[X].func){case 0:V=function(t){var n,r=65535;for(r>a-5&&(r=a-5);;){if(G<=1){if(ge(),0===G&&0==t)return 0;if(0===G)break}if(U+=G,G=0,n=h+r,(0===U||U>=n)&&(G=U-n,U=n,le(!1),0===e.avail_out))return 0;if(U-h>=l-262&&(le(!1),0===e.avail_out))return 0}return le(4==t),0===e.avail_out?4==t?2:0:4==t?3:1}(c);break;case 1:V=function(t){for(var n,r=0;;){if(G<262){if(ge(),G<262&&0==t)return 0;if(0===G)break}if(G>=3&&(_=(_<<Q^255&B[U+2])&p,r=65535&d[_],u[U&I]=d[_],d[_]=U),0!==r&&(U-r&65535)<=l-262&&2!=W&&(y=Ie(r)),y>=3)if(n=ae(U-f,y-3),G-=y,y<=Z&&G>=3){y--;do{U++,_=(_<<Q^255&B[U+2])&p,r=65535&d[_],u[U&I]=d[_],d[_]=U}while(0!=--y);U++}else U+=y,y=0,_=((_=255&B[U])<<Q^255&B[U+1])&p;else n=ae(0,255&B[U]),G--,U++;if(n&&(le(!1),0===e.avail_out))return 0}return le(4==t),0===e.avail_out?4==t?2:0:4==t?3:1}(c);break;case 2:V=function(t){for(var n,r,a=0;;){if(G<262){if(ge(),G<262&&0==t)return 0;if(0===G)break}if(G>=3&&(_=(_<<Q^255&B[U+2])&p,a=65535&d[_],u[U&I]=d[_],d[_]=U),E=y,m=f,y=2,0!==a&&E<Z&&(U-a&65535)<=l-262&&(2!=W&&(y=Ie(a)),y<=5&&(1==W||3==y&&U-f>4096)&&(y=2)),E>=3&&y<=E){r=U+G-3,n=ae(U-1-m,E-3),G-=E-1,E-=2;do{++U<=r&&(_=(_<<Q^255&B[U+2])&p,a=65535&d[_],u[U&I]=d[_],d[_]=U)}while(0!=--E);if(F=0,y=2,U++,n&&(le(!1),0===e.avail_out))return 0}else if(0!==F){if((n=ae(0,255&B[U-1]))&&le(!1),U++,G--,0===e.avail_out)return 0}else F=1,U++,G--}return 0!==F&&(n=ae(0,255&B[U-1]),F=0),le(4==t),0===e.avail_out?4==t?2:0:4==t?3:1}(c)}if(2!=V&&3!=V||(t=666),0==V||2==V)return 0===e.avail_out&&(s=-1),0;if(1==V){if(1==c)ee(2,3),te(256,r.static_ltree),re(),1+H+10-J<9&&(ee(2,3),te(256,r.static_ltree),re()),H=7;else if(ce(0,0,!1),3==c)for(A=0;A<C;A++)d[A]=0;if(e.flush_pending(),0===e.avail_out)return s=-1,0}}return 4!=c?0:1}}function l(){this.next_in_index=0,this.next_out_index=0,this.avail_in=0,this.total_in=0,this.avail_out=0,this.total_out=0}l.prototype={deflateInit:function(e,t){return this.dstate=new s,t||(t=15),this.dstate.deflateInit(this,e,t)},deflate:function(e){return this.dstate?this.dstate.deflate(this,e):-2},deflateEnd:function(){if(!this.dstate)return-2;var e=this.dstate.deflateEnd();return this.dstate=null,e},deflateParams:function(e,t){return this.dstate?this.dstate.deflateParams(this,e,t):-2},deflateSetDictionary:function(e,t){return this.dstate?this.dstate.deflateSetDictionary(this,e,t):-2},read_buf:function(e,t,n){var r=this.avail_in;return r>n&&(r=n),0===r?0:(this.avail_in-=r,e.set(this.next_in.subarray(this.next_in_index,this.next_in_index+r),t),this.next_in_index+=r,this.total_in+=r,r)},flush_pending:function(){var e=this.dstate.pending;e>this.avail_out&&(e=this.avail_out),0!==e&&(this.next_out.set(this.dstate.pending_buf.subarray(this.dstate.pending_out,this.dstate.pending_out+e),this.next_out_index),this.next_out_index+=e,this.dstate.pending_out+=e,this.total_out+=e,this.avail_out-=e,this.dstate.pending-=e,0===this.dstate.pending&&(this.dstate.pending_out=0))}};var g=e.zip||e;g.Deflater=g._jzlib_Deflater=function(e){var t=new l,n=new Uint8Array(512),r=e?e.level:-1;void 0===r&&(r=-1),t.deflateInit(r),t.next_out=n,this.append=function(e,r){var a,o=[],i=0,c=0,s=0;if(e.length){t.next_in_index=0,t.next_in=e,t.avail_in=e.length;do{if(t.next_out_index=0,t.avail_out=512,0!=t.deflate(0))throw new Error("deflating: "+t.msg);t.next_out_index&&(512==t.next_out_index?o.push(new Uint8Array(n)):o.push(new Uint8Array(n.subarray(0,t.next_out_index)))),s+=t.next_out_index,r&&t.next_in_index>0&&t.next_in_index!=i&&(r(t.next_in_index),i=t.next_in_index)}while(t.avail_in>0||0===t.avail_out);return a=new Uint8Array(s),o.forEach((function(e){a.set(e,c),c+=e.length})),a}},this.flush=function(){var e,r,a=[],o=0,i=0;do{if(t.next_out_index=0,t.avail_out=512,1!=(e=t.deflate(4))&&0!=e)throw new Error("deflating: "+t.msg);512-t.avail_out>0&&a.push(new Uint8Array(n.subarray(0,t.next_out_index))),i+=t.next_out_index}while(t.avail_in>0||0===t.avail_out);return t.deflateEnd(),r=new Uint8Array(i),a.forEach((function(e){r.set(e,o),o+=e.length})),r}}}(this)},function(e,t){!function(e){"use strict";var t=[0,1,3,7,15,31,63,127,255,511,1023,2047,4095,8191,16383,32767,65535],n=[96,7,256,0,8,80,0,8,16,84,8,115,82,7,31,0,8,112,0,8,48,0,9,192,80,7,10,0,8,96,0,8,32,0,9,160,0,8,0,0,8,128,0,8,64,0,9,224,80,7,6,0,8,88,0,8,24,0,9,144,83,7,59,0,8,120,0,8,56,0,9,208,81,7,17,0,8,104,0,8,40,0,9,176,0,8,8,0,8,136,0,8,72,0,9,240,80,7,4,0,8,84,0,8,20,85,8,227,83,7,43,0,8,116,0,8,52,0,9,200,81,7,13,0,8,100,0,8,36,0,9,168,0,8,4,0,8,132,0,8,68,0,9,232,80,7,8,0,8,92,0,8,28,0,9,152,84,7,83,0,8,124,0,8,60,0,9,216,82,7,23,0,8,108,0,8,44,0,9,184,0,8,12,0,8,140,0,8,76,0,9,248,80,7,3,0,8,82,0,8,18,85,8,163,83,7,35,0,8,114,0,8,50,0,9,196,81,7,11,0,8,98,0,8,34,0,9,164,0,8,2,0,8,130,0,8,66,0,9,228,80,7,7,0,8,90,0,8,26,0,9,148,84,7,67,0,8,122,0,8,58,0,9,212,82,7,19,0,8,106,0,8,42,0,9,180,0,8,10,0,8,138,0,8,74,0,9,244,80,7,5,0,8,86,0,8,22,192,8,0,83,7,51,0,8,118,0,8,54,0,9,204,81,7,15,0,8,102,0,8,38,0,9,172,0,8,6,0,8,134,0,8,70,0,9,236,80,7,9,0,8,94,0,8,30,0,9,156,84,7,99,0,8,126,0,8,62,0,9,220,82,7,27,0,8,110,0,8,46,0,9,188,0,8,14,0,8,142,0,8,78,0,9,252,96,7,256,0,8,81,0,8,17,85,8,131,82,7,31,0,8,113,0,8,49,0,9,194,80,7,10,0,8,97,0,8,33,0,9,162,0,8,1,0,8,129,0,8,65,0,9,226,80,7,6,0,8,89,0,8,25,0,9,146,83,7,59,0,8,121,0,8,57,0,9,210,81,7,17,0,8,105,0,8,41,0,9,178,0,8,9,0,8,137,0,8,73,0,9,242,80,7,4,0,8,85,0,8,21,80,8,258,83,7,43,0,8,117,0,8,53,0,9,202,81,7,13,0,8,101,0,8,37,0,9,170,0,8,5,0,8,133,0,8,69,0,9,234,80,7,8,0,8,93,0,8,29,0,9,154,84,7,83,0,8,125,0,8,61,0,9,218,82,7,23,0,8,109,0,8,45,0,9,186,0,8,13,0,8,141,0,8,77,0,9,250,80,7,3,0,8,83,0,8,19,85,8,195,83,7,35,0,8,115,0,8,51,0,9,198,81,7,11,0,8,99,0,8,35,0,9,166,0,8,3,0,8,131,0,8,67,0,9,230,80,7,7,0,8,91,0,8,27,0,9,150,84,7,67,0,8,123,0,8,59,0,9,214,82,7,19,0,8,107,0,8,43,0,9,182,0,8,11,0,8,139,0,8,75,0,9,246,80,7,5,0,8,87,0,8,23,192,8,0,83,7,51,0,8,119,0,8,55,0,9,206,81,7,15,0,8,103,0,8,39,0,9,174,0,8,7,0,8,135,0,8,71,0,9,238,80,7,9,0,8,95,0,8,31,0,9,158,84,7,99,0,8,127,0,8,63,0,9,222,82,7,27,0,8,111,0,8,47,0,9,190,0,8,15,0,8,143,0,8,79,0,9,254,96,7,256,0,8,80,0,8,16,84,8,115,82,7,31,0,8,112,0,8,48,0,9,193,80,7,10,0,8,96,0,8,32,0,9,161,0,8,0,0,8,128,0,8,64,0,9,225,80,7,6,0,8,88,0,8,24,0,9,145,83,7,59,0,8,120,0,8,56,0,9,209,81,7,17,0,8,104,0,8,40,0,9,177,0,8,8,0,8,136,0,8,72,0,9,241,80,7,4,0,8,84,0,8,20,85,8,227,83,7,43,0,8,116,0,8,52,0,9,201,81,7,13,0,8,100,0,8,36,0,9,169,0,8,4,0,8,132,0,8,68,0,9,233,80,7,8,0,8,92,0,8,28,0,9,153,84,7,83,0,8,124,0,8,60,0,9,217,82,7,23,0,8,108,0,8,44,0,9,185,0,8,12,0,8,140,0,8,76,0,9,249,80,7,3,0,8,82,0,8,18,85,8,163,83,7,35,0,8,114,0,8,50,0,9,197,81,7,11,0,8,98,0,8,34,0,9,165,0,8,2,0,8,130,0,8,66,0,9,229,80,7,7,0,8,90,0,8,26,0,9,149,84,7,67,0,8,122,0,8,58,0,9,213,82,7,19,0,8,106,0,8,42,0,9,181,0,8,10,0,8,138,0,8,74,0,9,245,80,7,5,0,8,86,0,8,22,192,8,0,83,7,51,0,8,118,0,8,54,0,9,205,81,7,15,0,8,102,0,8,38,0,9,173,0,8,6,0,8,134,0,8,70,0,9,237,80,7,9,0,8,94,0,8,30,0,9,157,84,7,99,0,8,126,0,8,62,0,9,221,82,7,27,0,8,110,0,8,46,0,9,189,0,8,14,0,8,142,0,8,78,0,9,253,96,7,256,0,8,81,0,8,17,85,8,131,82,7,31,0,8,113,0,8,49,0,9,195,80,7,10,0,8,97,0,8,33,0,9,163,0,8,1,0,8,129,0,8,65,0,9,227,80,7,6,0,8,89,0,8,25,0,9,147,83,7,59,0,8,121,0,8,57,0,9,211,81,7,17,0,8,105,0,8,41,0,9,179,0,8,9,0,8,137,0,8,73,0,9,243,80,7,4,0,8,85,0,8,21,80,8,258,83,7,43,0,8,117,0,8,53,0,9,203,81,7,13,0,8,101,0,8,37,0,9,171,0,8,5,0,8,133,0,8,69,0,9,235,80,7,8,0,8,93,0,8,29,0,9,155,84,7,83,0,8,125,0,8,61,0,9,219,82,7,23,0,8,109,0,8,45,0,9,187,0,8,13,0,8,141,0,8,77,0,9,251,80,7,3,0,8,83,0,8,19,85,8,195,83,7,35,0,8,115,0,8,51,0,9,199,81,7,11,0,8,99,0,8,35,0,9,167,0,8,3,0,8,131,0,8,67,0,9,231,80,7,7,0,8,91,0,8,27,0,9,151,84,7,67,0,8,123,0,8,59,0,9,215,82,7,19,0,8,107,0,8,43,0,9,183,0,8,11,0,8,139,0,8,75,0,9,247,80,7,5,0,8,87,0,8,23,192,8,0,83,7,51,0,8,119,0,8,55,0,9,207,81,7,15,0,8,103,0,8,39,0,9,175,0,8,7,0,8,135,0,8,71,0,9,239,80,7,9,0,8,95,0,8,31,0,9,159,84,7,99,0,8,127,0,8,63,0,9,223,82,7,27,0,8,111,0,8,47,0,9,191,0,8,15,0,8,143,0,8,79,0,9,255],r=[80,5,1,87,5,257,83,5,17,91,5,4097,81,5,5,89,5,1025,85,5,65,93,5,16385,80,5,3,88,5,513,84,5,33,92,5,8193,82,5,9,90,5,2049,86,5,129,192,5,24577,80,5,2,87,5,385,83,5,25,91,5,6145,81,5,7,89,5,1537,85,5,97,93,5,24577,80,5,4,88,5,769,84,5,49,92,5,12289,82,5,13,90,5,3073,86,5,193,192,5,24577],a=[3,4,5,6,7,8,9,10,11,13,15,17,19,23,27,31,35,43,51,59,67,83,99,115,131,163,195,227,258,0,0],o=[0,0,0,0,0,0,0,0,1,1,1,1,2,2,2,2,3,3,3,3,4,4,4,4,5,5,5,5,0,112,112],i=[1,2,3,4,5,7,9,13,17,25,33,49,65,97,129,193,257,385,513,769,1025,1537,2049,3073,4097,6145,8193,12289,16385,24577],c=[0,0,0,0,1,1,2,2,3,3,4,4,5,5,6,6,7,7,8,8,9,9,10,10,11,11,12,12,13,13];function s(){var e,t,n,r,s,l;function g(e,t,a,o,i,c,g,I,B,A,u){var d,_,C,b,p,Q,h,y,m,F,U,f,G,E,v;F=0,p=a;do{n[e[t+F]]++,F++,p--}while(0!==p);if(n[0]==a)return g[0]=-1,I[0]=0,0;for(y=I[0],Q=1;Q<=15&&0===n[Q];Q++);for(h=Q,y<Q&&(y=Q),p=15;0!==p&&0===n[p];p--);for(C=p,y>p&&(y=p),I[0]=y,E=1<<Q;Q<p;Q++,E<<=1)if((E-=n[Q])<0)return-3;if((E-=n[p])<0)return-3;for(n[p]+=E,l[1]=Q=0,F=1,G=2;0!=--p;)l[G]=Q+=n[F],G++,F++;p=0,F=0;do{0!==(Q=e[t+F])&&(u[l[Q]++]=p),F++}while(++p<a);for(a=l[C],l[0]=p=0,F=0,b=-1,f=-y,s[0]=0,U=0,v=0;h<=C;h++)for(d=n[h];0!=d--;){for(;h>f+y;){if(b++,v=(v=C-(f+=y))>y?y:v,(_=1<<(Q=h-f))>d+1&&(_-=d+1,G=h,Q<v))for(;++Q<v&&!((_<<=1)<=n[++G]);)_-=n[G];if(v=1<<Q,A[0]+v>1440)return-3;s[b]=U=A[0],A[0]+=v,0!==b?(l[b]=p,r[0]=Q,r[1]=y,Q=p>>>f-y,r[2]=U-s[b-1]-Q,B.set(r,3*(s[b-1]+Q))):g[0]=U}for(r[1]=h-f,F>=a?r[0]=192:u[F]<o?(r[0]=u[F]<256?0:96,r[2]=u[F++]):(r[0]=c[u[F]-o]+16+64,r[2]=i[u[F++]-o]),_=1<<h-f,Q=p>>>f;Q<v;Q+=_)B.set(r,3*(U+Q));for(Q=1<<h-1;0!=(p&Q);Q>>>=1)p^=Q;for(p^=Q,m=(1<<f)-1;(p&m)!=l[b];)b--,m=(1<<(f-=y))-1}return 0!==E&&1!=C?-5:0}function I(a){var o;for(e||(e=[],t=[],n=new Int32Array(16),r=[],s=new Int32Array(15),l=new Int32Array(16)),t.length<a&&(t=[]),o=0;o<a;o++)t[o]=0;for(o=0;o<16;o++)n[o]=0;for(o=0;o<3;o++)r[o]=0;s.set(n.subarray(0,15),0),l.set(n.subarray(0,16),0)}this.inflate_trees_bits=function(n,r,a,o,i){var c;return I(19),e[0]=0,-3==(c=g(n,0,19,19,null,null,a,r,o,e,t))?i.msg="oversubscribed dynamic bit lengths tree":-5!=c&&0!==r[0]||(i.msg="incomplete dynamic bit lengths tree",c=-3),c},this.inflate_trees_dynamic=function(n,r,s,l,B,A,u,d,_){var C;return I(288),e[0]=0,0!=(C=g(s,0,n,257,a,o,A,l,d,e,t))||0===l[0]?(-3==C?_.msg="oversubscribed literal/length tree":-4!=C&&(_.msg="incomplete literal/length tree",C=-3),C):(I(288),0!=(C=g(s,n,r,0,i,c,u,B,d,e,t))||0===B[0]&&n>257?(-3==C?_.msg="oversubscribed distance tree":-5==C?(_.msg="incomplete distance tree",C=-3):-4!=C&&(_.msg="empty distance tree with lengths",C=-3),C):0)}}s.inflate_trees_fixed=function(e,t,a,o){return e[0]=9,t[0]=5,a[0]=n,o[0]=r,0};function l(){var e,n,r,a,o=0,i=0,c=0,s=0,l=0,g=0,I=0,B=0,A=0,u=0;function d(e,n,r,a,o,i,c,s){var l,g,I,B,A,u,d,_,C,b,p,Q,h,y,m,F;d=s.next_in_index,_=s.avail_in,A=c.bitb,u=c.bitk,b=(C=c.write)<c.read?c.read-C-1:c.end-C,p=t[e],Q=t[n];do{for(;u<20;)_--,A|=(255&s.read_byte(d++))<<u,u+=8;if(0!==(B=(g=r)[F=3*((I=a)+(l=A&p))]))for(;;){if(A>>=g[F+1],u-=g[F+1],0!=(16&B)){for(B&=15,h=g[F+2]+(A&t[B]),A>>=B,u-=B;u<15;)_--,A|=(255&s.read_byte(d++))<<u,u+=8;for(B=(g=o)[F=3*((I=i)+(l=A&Q))];;){if(A>>=g[F+1],u-=g[F+1],0!=(16&B)){for(B&=15;u<B;)_--,A|=(255&s.read_byte(d++))<<u,u+=8;if(y=g[F+2]+(A&t[B]),A>>=B,u-=B,b-=h,C>=y)C-(m=C-y)>0&&2>C-m?(c.window[C++]=c.window[m++],c.window[C++]=c.window[m++],h-=2):(c.window.set(c.window.subarray(m,m+2),C),C+=2,m+=2,h-=2);else{m=C-y;do{m+=c.end}while(m<0);if(h>(B=c.end-m)){if(h-=B,C-m>0&&B>C-m)do{c.window[C++]=c.window[m++]}while(0!=--B);else c.window.set(c.window.subarray(m,m+B),C),C+=B,m+=B,B=0;m=0}}if(C-m>0&&h>C-m)do{c.window[C++]=c.window[m++]}while(0!=--h);else c.window.set(c.window.subarray(m,m+h),C),C+=h,m+=h,h=0;break}if(0!=(64&B))return s.msg="invalid distance code",_+=h=u>>3<(h=s.avail_in-_)?u>>3:h,d-=h,u-=h<<3,c.bitb=A,c.bitk=u,s.avail_in=_,s.total_in+=d-s.next_in_index,s.next_in_index=d,c.write=C,-3;l+=g[F+2],B=g[F=3*(I+(l+=A&t[B]))]}break}if(0!=(64&B))return 0!=(32&B)?(_+=h=u>>3<(h=s.avail_in-_)?u>>3:h,d-=h,u-=h<<3,c.bitb=A,c.bitk=u,s.avail_in=_,s.total_in+=d-s.next_in_index,s.next_in_index=d,c.write=C,1):(s.msg="invalid literal/length code",_+=h=u>>3<(h=s.avail_in-_)?u>>3:h,d-=h,u-=h<<3,c.bitb=A,c.bitk=u,s.avail_in=_,s.total_in+=d-s.next_in_index,s.next_in_index=d,c.write=C,-3);if(l+=g[F+2],0===(B=g[F=3*(I+(l+=A&t[B]))])){A>>=g[F+1],u-=g[F+1],c.window[C++]=g[F+2],b--;break}}else A>>=g[F+1],u-=g[F+1],c.window[C++]=g[F+2],b--}while(b>=258&&_>=10);return _+=h=u>>3<(h=s.avail_in-_)?u>>3:h,d-=h,u-=h<<3,c.bitb=A,c.bitk=u,s.avail_in=_,s.total_in+=d-s.next_in_index,s.next_in_index=d,c.write=C,0}this.init=function(t,o,i,c,s,l){e=0,I=t,B=o,r=i,A=c,a=s,u=l,n=null},this.proc=function(_,C,b){var p,Q,h,y,m,F,U,f=0,G=0,E=0;for(E=C.next_in_index,y=C.avail_in,f=_.bitb,G=_.bitk,F=(m=_.write)<_.read?_.read-m-1:_.end-m;;)switch(e){case 0:if(F>=258&&y>=10&&(_.bitb=f,_.bitk=G,C.avail_in=y,C.total_in+=E-C.next_in_index,C.next_in_index=E,_.write=m,b=d(I,B,r,A,a,u,_,C),E=C.next_in_index,y=C.avail_in,f=_.bitb,G=_.bitk,F=(m=_.write)<_.read?_.read-m-1:_.end-m,0!=b)){e=1==b?7:9;break}c=I,n=r,i=A,e=1;case 1:for(p=c;G<p;){if(0===y)return _.bitb=f,_.bitk=G,C.avail_in=y,C.total_in+=E-C.next_in_index,C.next_in_index=E,_.write=m,_.inflate_flush(C,b);b=0,y--,f|=(255&C.read_byte(E++))<<G,G+=8}if(f>>>=n[(Q=3*(i+(f&t[p])))+1],G-=n[Q+1],0===(h=n[Q])){s=n[Q+2],e=6;break}if(0!=(16&h)){l=15&h,o=n[Q+2],e=2;break}if(0==(64&h)){c=h,i=Q/3+n[Q+2];break}if(0!=(32&h)){e=7;break}return e=9,C.msg="invalid literal/length code",b=-3,_.bitb=f,_.bitk=G,C.avail_in=y,C.total_in+=E-C.next_in_index,C.next_in_index=E,_.write=m,_.inflate_flush(C,b);case 2:for(p=l;G<p;){if(0===y)return _.bitb=f,_.bitk=G,C.avail_in=y,C.total_in+=E-C.next_in_index,C.next_in_index=E,_.write=m,_.inflate_flush(C,b);b=0,y--,f|=(255&C.read_byte(E++))<<G,G+=8}o+=f&t[p],f>>=p,G-=p,c=B,n=a,i=u,e=3;case 3:for(p=c;G<p;){if(0===y)return _.bitb=f,_.bitk=G,C.avail_in=y,C.total_in+=E-C.next_in_index,C.next_in_index=E,_.write=m,_.inflate_flush(C,b);b=0,y--,f|=(255&C.read_byte(E++))<<G,G+=8}if(f>>=n[(Q=3*(i+(f&t[p])))+1],G-=n[Q+1],0!=(16&(h=n[Q]))){l=15&h,g=n[Q+2],e=4;break}if(0==(64&h)){c=h,i=Q/3+n[Q+2];break}return e=9,C.msg="invalid distance code",b=-3,_.bitb=f,_.bitk=G,C.avail_in=y,C.total_in+=E-C.next_in_index,C.next_in_index=E,_.write=m,_.inflate_flush(C,b);case 4:for(p=l;G<p;){if(0===y)return _.bitb=f,_.bitk=G,C.avail_in=y,C.total_in+=E-C.next_in_index,C.next_in_index=E,_.write=m,_.inflate_flush(C,b);b=0,y--,f|=(255&C.read_byte(E++))<<G,G+=8}g+=f&t[p],f>>=p,G-=p,e=5;case 5:for(U=m-g;U<0;)U+=_.end;for(;0!==o;){if(0===F&&(m==_.end&&0!==_.read&&(F=(m=0)<_.read?_.read-m-1:_.end-m),0===F&&(_.write=m,b=_.inflate_flush(C,b),F=(m=_.write)<_.read?_.read-m-1:_.end-m,m==_.end&&0!==_.read&&(F=(m=0)<_.read?_.read-m-1:_.end-m),0===F)))return _.bitb=f,_.bitk=G,C.avail_in=y,C.total_in+=E-C.next_in_index,C.next_in_index=E,_.write=m,_.inflate_flush(C,b);_.window[m++]=_.window[U++],F--,U==_.end&&(U=0),o--}e=0;break;case 6:if(0===F&&(m==_.end&&0!==_.read&&(F=(m=0)<_.read?_.read-m-1:_.end-m),0===F&&(_.write=m,b=_.inflate_flush(C,b),F=(m=_.write)<_.read?_.read-m-1:_.end-m,m==_.end&&0!==_.read&&(F=(m=0)<_.read?_.read-m-1:_.end-m),0===F)))return _.bitb=f,_.bitk=G,C.avail_in=y,C.total_in+=E-C.next_in_index,C.next_in_index=E,_.write=m,_.inflate_flush(C,b);b=0,_.window[m++]=s,F--,e=0;break;case 7:if(G>7&&(G-=8,y++,E--),_.write=m,b=_.inflate_flush(C,b),F=(m=_.write)<_.read?_.read-m-1:_.end-m,_.read!=_.write)return _.bitb=f,_.bitk=G,C.avail_in=y,C.total_in+=E-C.next_in_index,C.next_in_index=E,_.write=m,_.inflate_flush(C,b);e=8;case 8:return b=1,_.bitb=f,_.bitk=G,C.avail_in=y,C.total_in+=E-C.next_in_index,C.next_in_index=E,_.write=m,_.inflate_flush(C,b);case 9:return b=-3,_.bitb=f,_.bitk=G,C.avail_in=y,C.total_in+=E-C.next_in_index,C.next_in_index=E,_.write=m,_.inflate_flush(C,b);default:return b=-2,_.bitb=f,_.bitk=G,C.avail_in=y,C.total_in+=E-C.next_in_index,C.next_in_index=E,_.write=m,_.inflate_flush(C,b)}},this.free=function(){}}var g=[16,17,18,0,8,7,9,6,10,5,11,4,12,3,13,2,14,1,15];function I(e,n){var r,a=this,o=0,i=0,c=0,I=0,B=[0],A=[0],u=new l,d=0,_=new Int32Array(4320),C=new s;a.bitk=0,a.bitb=0,a.window=new Uint8Array(n),a.end=n,a.read=0,a.write=0,a.reset=function(e,t){t&&(t[0]=0),6==o&&u.free(e),o=0,a.bitk=0,a.bitb=0,a.read=a.write=0},a.reset(e,null),a.inflate_flush=function(e,t){var n,r,o;return r=e.next_out_index,(n=((o=a.read)<=a.write?a.write:a.end)-o)>e.avail_out&&(n=e.avail_out),0!==n&&-5==t&&(t=0),e.avail_out-=n,e.total_out+=n,e.next_out.set(a.window.subarray(o,o+n),r),r+=n,(o+=n)==a.end&&(o=0,a.write==a.end&&(a.write=0),(n=a.write-o)>e.avail_out&&(n=e.avail_out),0!==n&&-5==t&&(t=0),e.avail_out-=n,e.total_out+=n,e.next_out.set(a.window.subarray(o,o+n),r),r+=n,o+=n),e.next_out_index=r,a.read=o,t},a.proc=function(e,n){var l,b,p,Q,h,y,m,F;for(Q=e.next_in_index,h=e.avail_in,b=a.bitb,p=a.bitk,m=(y=a.write)<a.read?a.read-y-1:a.end-y;;)switch(o){case 0:for(;p<3;){if(0===h)return a.bitb=b,a.bitk=p,e.avail_in=h,e.total_in+=Q-e.next_in_index,e.next_in_index=Q,a.write=y,a.inflate_flush(e,n);n=0,h--,b|=(255&e.read_byte(Q++))<<p,p+=8}switch(d=1&(l=7&b),l>>>1){case 0:b>>>=3,b>>>=l=7&(p-=3),p-=l,o=1;break;case 1:var U=[],f=[],G=[[]],E=[[]];s.inflate_trees_fixed(U,f,G,E),u.init(U[0],f[0],G[0],0,E[0],0),b>>>=3,p-=3,o=6;break;case 2:b>>>=3,p-=3,o=3;break;case 3:return b>>>=3,p-=3,o=9,e.msg="invalid block type",n=-3,a.bitb=b,a.bitk=p,e.avail_in=h,e.total_in+=Q-e.next_in_index,e.next_in_index=Q,a.write=y,a.inflate_flush(e,n)}break;case 1:for(;p<32;){if(0===h)return a.bitb=b,a.bitk=p,e.avail_in=h,e.total_in+=Q-e.next_in_index,e.next_in_index=Q,a.write=y,a.inflate_flush(e,n);n=0,h--,b|=(255&e.read_byte(Q++))<<p,p+=8}if((~b>>>16&65535)!=(65535&b))return o=9,e.msg="invalid stored block lengths",n=-3,a.bitb=b,a.bitk=p,e.avail_in=h,e.total_in+=Q-e.next_in_index,e.next_in_index=Q,a.write=y,a.inflate_flush(e,n);i=65535&b,b=p=0,o=0!==i?2:0!==d?7:0;break;case 2:if(0===h)return a.bitb=b,a.bitk=p,e.avail_in=h,e.total_in+=Q-e.next_in_index,e.next_in_index=Q,a.write=y,a.inflate_flush(e,n);if(0===m&&(y==a.end&&0!==a.read&&(m=(y=0)<a.read?a.read-y-1:a.end-y),0===m&&(a.write=y,n=a.inflate_flush(e,n),m=(y=a.write)<a.read?a.read-y-1:a.end-y,y==a.end&&0!==a.read&&(m=(y=0)<a.read?a.read-y-1:a.end-y),0===m)))return a.bitb=b,a.bitk=p,e.avail_in=h,e.total_in+=Q-e.next_in_index,e.next_in_index=Q,a.write=y,a.inflate_flush(e,n);if(n=0,(l=i)>h&&(l=h),l>m&&(l=m),a.window.set(e.read_buf(Q,l),y),Q+=l,h-=l,y+=l,m-=l,0!=(i-=l))break;o=0!==d?7:0;break;case 3:for(;p<14;){if(0===h)return a.bitb=b,a.bitk=p,e.avail_in=h,e.total_in+=Q-e.next_in_index,e.next_in_index=Q,a.write=y,a.inflate_flush(e,n);n=0,h--,b|=(255&e.read_byte(Q++))<<p,p+=8}if(c=l=16383&b,(31&l)>29||(l>>5&31)>29)return o=9,e.msg="too many length or distance symbols",n=-3,a.bitb=b,a.bitk=p,e.avail_in=h,e.total_in+=Q-e.next_in_index,e.next_in_index=Q,a.write=y,a.inflate_flush(e,n);if(l=258+(31&l)+(l>>5&31),!r||r.length<l)r=[];else for(F=0;F<l;F++)r[F]=0;b>>>=14,p-=14,I=0,o=4;case 4:for(;I<4+(c>>>10);){for(;p<3;){if(0===h)return a.bitb=b,a.bitk=p,e.avail_in=h,e.total_in+=Q-e.next_in_index,e.next_in_index=Q,a.write=y,a.inflate_flush(e,n);n=0,h--,b|=(255&e.read_byte(Q++))<<p,p+=8}r[g[I++]]=7&b,b>>>=3,p-=3}for(;I<19;)r[g[I++]]=0;if(B[0]=7,0!=(l=C.inflate_trees_bits(r,B,A,_,e)))return-3==(n=l)&&(r=null,o=9),a.bitb=b,a.bitk=p,e.avail_in=h,e.total_in+=Q-e.next_in_index,e.next_in_index=Q,a.write=y,a.inflate_flush(e,n);I=0,o=5;case 5:for(;!(I>=258+(31&(l=c))+(l>>5&31));){var v,Z;for(l=B[0];p<l;){if(0===h)return a.bitb=b,a.bitk=p,e.avail_in=h,e.total_in+=Q-e.next_in_index,e.next_in_index=Q,a.write=y,a.inflate_flush(e,n);n=0,h--,b|=(255&e.read_byte(Q++))<<p,p+=8}if(l=_[3*(A[0]+(b&t[l]))+1],(Z=_[3*(A[0]+(b&t[l]))+2])<16)b>>>=l,p-=l,r[I++]=Z;else{for(F=18==Z?7:Z-14,v=18==Z?11:3;p<l+F;){if(0===h)return a.bitb=b,a.bitk=p,e.avail_in=h,e.total_in+=Q-e.next_in_index,e.next_in_index=Q,a.write=y,a.inflate_flush(e,n);n=0,h--,b|=(255&e.read_byte(Q++))<<p,p+=8}if(p-=l,v+=(b>>>=l)&t[F],b>>>=F,p-=F,(F=I)+v>258+(31&(l=c))+(l>>5&31)||16==Z&&F<1)return r=null,o=9,e.msg="invalid bit length repeat",n=-3,a.bitb=b,a.bitk=p,e.avail_in=h,e.total_in+=Q-e.next_in_index,e.next_in_index=Q,a.write=y,a.inflate_flush(e,n);Z=16==Z?r[F-1]:0;do{r[F++]=Z}while(0!=--v);I=F}}A[0]=-1;var X=[],W=[],R=[],V=[];if(X[0]=9,W[0]=6,l=c,0!=(l=C.inflate_trees_dynamic(257+(31&l),1+(l>>5&31),r,X,W,R,V,_,e)))return-3==l&&(r=null,o=9),n=l,a.bitb=b,a.bitk=p,e.avail_in=h,e.total_in+=Q-e.next_in_index,e.next_in_index=Q,a.write=y,a.inflate_flush(e,n);u.init(X[0],W[0],_,R[0],_,V[0]),o=6;case 6:if(a.bitb=b,a.bitk=p,e.avail_in=h,e.total_in+=Q-e.next_in_index,e.next_in_index=Q,a.write=y,1!=(n=u.proc(a,e,n)))return a.inflate_flush(e,n);if(n=0,u.free(e),Q=e.next_in_index,h=e.avail_in,b=a.bitb,p=a.bitk,m=(y=a.write)<a.read?a.read-y-1:a.end-y,0===d){o=0;break}o=7;case 7:if(a.write=y,n=a.inflate_flush(e,n),m=(y=a.write)<a.read?a.read-y-1:a.end-y,a.read!=a.write)return a.bitb=b,a.bitk=p,e.avail_in=h,e.total_in+=Q-e.next_in_index,e.next_in_index=Q,a.write=y,a.inflate_flush(e,n);o=8;case 8:return n=1,a.bitb=b,a.bitk=p,e.avail_in=h,e.total_in+=Q-e.next_in_index,e.next_in_index=Q,a.write=y,a.inflate_flush(e,n);case 9:return n=-3,a.bitb=b,a.bitk=p,e.avail_in=h,e.total_in+=Q-e.next_in_index,e.next_in_index=Q,a.write=y,a.inflate_flush(e,n);default:return n=-2,a.bitb=b,a.bitk=p,e.avail_in=h,e.total_in+=Q-e.next_in_index,e.next_in_index=Q,a.write=y,a.inflate_flush(e,n)}},a.free=function(e){a.reset(e,null),a.window=null,_=null},a.set_dictionary=function(e,t,n){a.window.set(e.subarray(t,t+n),0),a.read=a.write=n},a.sync_point=function(){return 1==o?1:0}}var B=[0,0,255,255];function A(){var e=this;function t(e){return e&&e.istate?(e.total_in=e.total_out=0,e.msg=null,e.istate.mode=7,e.istate.blocks.reset(e,null),0):-2}e.mode=0,e.method=0,e.was=[0],e.need=0,e.marker=0,e.wbits=0,e.inflateEnd=function(t){return e.blocks&&e.blocks.free(t),e.blocks=null,0},e.inflateInit=function(n,r){return n.msg=null,e.blocks=null,r<8||r>15?(e.inflateEnd(n),-2):(e.wbits=r,n.istate.blocks=new I(n,1<<r),t(n),0)},e.inflate=function(e,t){var n,r;if(!e||!e.istate||!e.next_in)return-2;for(t=4==t?-5:0,n=-5;;)switch(e.istate.mode){case 0:if(0===e.avail_in)return n;if(n=t,e.avail_in--,e.total_in++,8!=(15&(e.istate.method=e.read_byte(e.next_in_index++)))){e.istate.mode=13,e.msg="unknown compression method",e.istate.marker=5;break}if(8+(e.istate.method>>4)>e.istate.wbits){e.istate.mode=13,e.msg="invalid window size",e.istate.marker=5;break}e.istate.mode=1;case 1:if(0===e.avail_in)return n;if(n=t,e.avail_in--,e.total_in++,r=255&e.read_byte(e.next_in_index++),((e.istate.method<<8)+r)%31!=0){e.istate.mode=13,e.msg="incorrect header check",e.istate.marker=5;break}if(0==(32&r)){e.istate.mode=7;break}e.istate.mode=2;case 2:if(0===e.avail_in)return n;n=t,e.avail_in--,e.total_in++,e.istate.need=(255&e.read_byte(e.next_in_index++))<<24&4278190080,e.istate.mode=3;case 3:if(0===e.avail_in)return n;n=t,e.avail_in--,e.total_in++,e.istate.need+=(255&e.read_byte(e.next_in_index++))<<16&16711680,e.istate.mode=4;case 4:if(0===e.avail_in)return n;n=t,e.avail_in--,e.total_in++,e.istate.need+=(255&e.read_byte(e.next_in_index++))<<8&65280,e.istate.mode=5;case 5:return 0===e.avail_in?n:(n=t,e.avail_in--,e.total_in++,e.istate.need+=255&e.read_byte(e.next_in_index++),e.istate.mode=6,2);case 6:return e.istate.mode=13,e.msg="need dictionary",e.istate.marker=0,-2;case 7:if(-3==(n=e.istate.blocks.proc(e,n))){e.istate.mode=13,e.istate.marker=0;break}if(0==n&&(n=t),1!=n)return n;n=t,e.istate.blocks.reset(e,e.istate.was),e.istate.mode=12;case 12:return 1;case 13:return-3;default:return-2}},e.inflateSetDictionary=function(e,t,n){var r=0,a=n;return e&&e.istate&&6==e.istate.mode?(a>=1<<e.istate.wbits&&(r=n-(a=(1<<e.istate.wbits)-1)),e.istate.blocks.set_dictionary(t,r,a),e.istate.mode=7,0):-2},e.inflateSync=function(e){var n,r,a,o,i;if(!e||!e.istate)return-2;if(13!=e.istate.mode&&(e.istate.mode=13,e.istate.marker=0),0===(n=e.avail_in))return-5;for(r=e.next_in_index,a=e.istate.marker;0!==n&&a<4;)e.read_byte(r)==B[a]?a++:a=0!==e.read_byte(r)?0:4-a,r++,n--;return e.total_in+=r-e.next_in_index,e.next_in_index=r,e.avail_in=n,e.istate.marker=a,4!=a?-3:(o=e.total_in,i=e.total_out,t(e),e.total_in=o,e.total_out=i,e.istate.mode=7,0)},e.inflateSyncPoint=function(e){return e&&e.istate&&e.istate.blocks?e.istate.blocks.sync_point():-2}}function u(){}u.prototype={inflateInit:function(e){return this.istate=new A,e||(e=15),this.istate.inflateInit(this,e)},inflate:function(e){return this.istate?this.istate.inflate(this,e):-2},inflateEnd:function(){if(!this.istate)return-2;var e=this.istate.inflateEnd(this);return this.istate=null,e},inflateSync:function(){return this.istate?this.istate.inflateSync(this):-2},inflateSetDictionary:function(e,t){return this.istate?this.istate.inflateSetDictionary(this,e,t):-2},read_byte:function(e){return this.next_in.subarray(e,e+1)[0]},read_buf:function(e,t){return this.next_in.subarray(e,e+t)}};var d=e.zip||e;d.Inflater=d._jzlib_Inflater=function(){var e=new u,t=new Uint8Array(512),n=!1;e.inflateInit(),e.next_out=t,this.append=function(r,a){var o,i,c=[],s=0,l=0,g=0;if(0!==r.length){e.next_in_index=0,e.next_in=r,e.avail_in=r.length;do{if(e.next_out_index=0,e.avail_out=512,0!==e.avail_in||n||(e.next_in_index=0,n=!0),o=e.inflate(0),n&&-5===o){if(0!==e.avail_in)throw new Error("inflating: bad input")}else if(0!==o&&1!==o)throw new Error("inflating: "+e.msg);if((n||1===o)&&e.avail_in===r.length)throw new Error("inflating: bad input");e.next_out_index&&(512===e.next_out_index?c.push(new Uint8Array(t)):c.push(new Uint8Array(t.subarray(0,e.next_out_index)))),g+=e.next_out_index,a&&e.next_in_index>0&&e.next_in_index!=s&&(a(e.next_in_index),s=e.next_in_index)}while(e.avail_in>0||0===e.avail_out);return i=new Uint8Array(g),c.forEach((function(e){i.set(e,l),l+=e.length})),i}},this.flush=function(){e.inflateEnd()}}}(this)},function(e,t){!function(e){"use strict";var t,n="File format is not recognized.",r="Error while reading zip file.";try{t=0===new Blob([new DataView(new ArrayBuffer(0))]).size}catch(e){}function a(){this.crc=-1}function o(){}function i(e,t){var n,r;return n=new ArrayBuffer(e),r=new Uint8Array(n),t&&r.set(t,0),{buffer:n,array:r,view:new DataView(n)}}function c(){}function s(e){var t,n=this;n.size=0,n.init=function(r,a){var o=new Blob([e],{type:"text/plain"});(t=new g(o)).init((function(){n.size=t.size,r()}),a)},n.readUint8Array=function(e,n,r,a){t.readUint8Array(e,n,r,a)}}function l(t){var n,r=this;r.size=0,r.init=function(e){for(var a=t.length;"="==t.charAt(a-1);)a--;n=t.indexOf(",")+1,r.size=Math.floor(.75*(a-n)),e()},r.readUint8Array=function(r,a,o){var c,s=i(a),l=4*Math.floor(r/3),g=4*Math.ceil((r+a)/3),I=e.atob(t.substring(l+n,g+n)),B=r-3*Math.floor(l/4);for(c=B;c<B+a;c++)s.array[c-B]=I.charCodeAt(c);o(s.array)}}function g(e){var t=this;t.size=0,t.init=function(n){t.size=e.size,n()},t.readUint8Array=function(t,n,r,a){var o=new FileReader;o.onload=function(e){r(new Uint8Array(e.target.result))},o.onerror=a;try{o.readAsArrayBuffer(function(e,t,n){if(t<0||n<0||t+n>e.size)throw new RangeError("offset:"+t+", length:"+n+", size:"+e.size);return e.slice?e.slice(t,t+n):e.webkitSlice?e.webkitSlice(t,t+n):e.mozSlice?e.mozSlice(t,t+n):e.msSlice?e.msSlice(t,t+n):void 0}(e,t,n))}catch(e){a(e)}}}function I(){}function B(e){var n;this.init=function(e){n=new Blob([],{type:"text/plain"}),e()},this.writeUint8Array=function(e,r){n=new Blob([n,t?e:e.buffer],{type:"text/plain"}),r()},this.getData=function(t,r){var a=new FileReader;a.onload=function(e){t(e.target.result)},a.onerror=r,a.readAsText(n,e)}}function A(t){var n="",r="";this.init=function(e){n+="data:"+(t||"")+";base64,",e()},this.writeUint8Array=function(t,a){var o,i=r.length,c=r;for(r="",o=0;o<3*Math.floor((i+t.length)/3)-i;o++)c+=String.fromCharCode(t[o]);for(;o<t.length;o++)r+=String.fromCharCode(t[o]);c.length>2?n+=e.btoa(c):r=c,a()},this.getData=function(t){t(n+e.btoa(r))}}function u(e){var n;this.init=function(t){n=new Blob([],{type:e}),t()},this.writeUint8Array=function(r,a){n=new Blob([n,t?r:r.buffer],{type:e}),a()},this.getData=function(e){e(n)}}function d(e,t,n,r,a,o,i,c,s,l){var g,I,B,A=0,u=t.sn;function d(){e.removeEventListener("message",_,!1),c(I,B)}function _(t){var n=t.data,a=n.data,c=n.error;if(c)return c.toString=function(){return"Error: "+this.message},void s(c);if(n.sn===u)switch("number"==typeof n.codecTime&&(e.codecTime+=n.codecTime),"number"==typeof n.crcTime&&(e.crcTime+=n.crcTime),n.type){case"append":a?(I+=a.length,r.writeUint8Array(a,(function(){C()}),l)):C();break;case"flush":B=n.crc,a?(I+=a.length,r.writeUint8Array(a,(function(){d()}),l)):d();break;case"progress":i&&i(g+n.loaded,o);break;case"importScripts":case"newTask":case"echo":break;default:console.warn("zip.js:launchWorkerProcess: unknown message: ",n)}}function C(){(g=524288*A)<=o?n.readUint8Array(a+g,Math.min(524288,o-g),(function(n){i&&i(g,o);var r=0===g?t:{sn:u};r.type="append",r.data=n;try{e.postMessage(r,[n.buffer])}catch(t){e.postMessage(r)}A++}),s):e.postMessage({sn:u,type:"flush"})}I=0,e.addEventListener("message",_,!1),C()}function _(e,t,n,r,o,i,c,s,l,g){var I,B=0,A=0,u="input"===i,d="output"===i,_=new a;!function a(){var i;if((I=524288*B)<o)t.readUint8Array(r+I,Math.min(524288,o-I),(function(t){var r;try{r=e.append(t,(function(e){c&&c(I+e,o)}))}catch(e){return void l(e)}r?(A+=r.length,n.writeUint8Array(r,(function(){B++,setTimeout(a,1)}),g),d&&_.append(r)):(B++,setTimeout(a,1)),u&&_.append(t),c&&c(I,o)}),l);else{try{i=e.flush()}catch(e){return void l(e)}i?(d&&_.append(i),A+=i.length,n.writeUint8Array(i,(function(){s(A,_.get())}),g)):s(A,_.get())}}()}function C(t,n,r,a,i,c,s,l,g,I,B){e.zip.useWebWorkers&&s?d(t,{sn:n,codecClass:"NOOP",crcType:"input"},r,a,i,c,g,l,I,B):_(new o,r,a,i,c,"input",g,l,I,B)}function b(e){var t,n,r="",a=["Ç","ü","é","â","ä","à","å","ç","ê","ë","è","ï","î","ì","Ä","Å","É","æ","Æ","ô","ö","ò","û","ù","ÿ","Ö","Ü","ø","£","Ø","×","ƒ","á","í","ó","ú","ñ","Ñ","ª","º","¿","®","¬","½","¼","¡","«","»","_","_","_","¦","¦","Á","Â","À","©","¦","¦","+","+","¢","¥","+","+","-","-","+","-","+","ã","Ã","+","+","-","-","¦","-","+","¤","ð","Ð","Ê","Ë","È","i","Í","Î","Ï","+","+","_","_","¦","Ì","_","Ó","ß","Ô","Ò","õ","Õ","µ","þ","Þ","Ú","Û","Ù","ý","Ý","¯","´","","±","_","¾","¶","§","÷","¸","°","¨","·","¹","³","²","_"," "];for(t=0;t<e.length;t++)r+=(n=255&e.charCodeAt(t))>127?a[n-128]:String.fromCharCode(n);return r}function p(e){return decodeURIComponent(escape(e))}function Q(e){var t,n="";for(t=0;t<e.length;t++)n+=String.fromCharCode(e[t]);return n}function h(e,t,n,r,a){e.version=t.view.getUint16(n,!0),e.bitFlag=t.view.getUint16(n+2,!0),e.compressionMethod=t.view.getUint16(n+4,!0),e.lastModDateRaw=t.view.getUint32(n+6,!0),e.lastModDate=function(e){var t=(4294901760&e)>>16,n=65535&e;try{return new Date(1980+((65024&t)>>9),((480&t)>>5)-1,31&t,(63488&n)>>11,(2016&n)>>5,2*(31&n),0)}catch(e){}}(e.lastModDateRaw),1!=(1&e.bitFlag)?((r||8!=(8&e.bitFlag))&&(e.crc32=t.view.getUint32(n+10,!0),e.compressedSize=t.view.getUint32(n+14,!0),e.uncompressedSize=t.view.getUint32(n+18,!0)),4294967295!==e.compressedSize&&4294967295!==e.uncompressedSize?(e.filenameLength=t.view.getUint16(n+22,!0),e.extraFieldLength=t.view.getUint16(n+24,!0)):a("File is using Zip64 (4gb+ file size).")):a("File contains encrypted entry.")}function y(t,a,o){var c=0;function s(){}s.prototype.getData=function(r,a,s,l){var g=this;function I(e,t){l&&!function(e){var t=i(4);return t.view.setUint32(0,e),g.crc32==t.view.getUint32(0)}(t)?o("CRC failed."):r.getData((function(e){a(e)}))}function B(e){o(e||"Error while reading file data.")}function A(e){o(e||"Error while writing file data.")}t.readUint8Array(g.offset,30,(function(a){var u,b=i(a.length,a);1347093252==b.view.getUint32(0)?(h(g,b,4,!1,o),u=g.offset+30+g.filenameLength+g.extraFieldLength,r.init((function(){0===g.compressionMethod?C(g._worker,c++,t,r,u,g.compressedSize,l,I,s,B,A):function(t,n,r,a,o,i,c,s,l,g,I){var B=c?"output":"none";e.zip.useWebWorkers?d(t,{sn:n,codecClass:"Inflater",crcType:B},r,a,o,i,l,s,g,I):_(new e.zip.Inflater,r,a,o,i,B,l,s,g,I)}(g._worker,c++,t,r,u,g.compressedSize,l,I,s,B,A)}),A)):o(n)}),B)};var l={getEntries:function(e){var a=this._worker;!function(e){if(t.size<22)o(n);else{a(22,(function(){a(Math.min(65558,t.size),(function(){o(n)}))}))}function a(n,a){t.readUint8Array(t.size-n,n,(function(t){for(var n=t.length-22;n>=0;n--)if(80===t[n]&&75===t[n+1]&&5===t[n+2]&&6===t[n+3])return void e(new DataView(t.buffer,n,22));a()}),(function(){o(r)}))}}((function(c){var l,g;l=c.getUint32(16,!0),g=c.getUint16(8,!0),l<0||l>=t.size?o(n):t.readUint8Array(l,t.size-l,(function(t){var r,c,l,I,B=0,A=[],u=i(t.length,t);for(r=0;r<g;r++){if((c=new s)._worker=a,1347092738!=u.view.getUint32(B))return void o(n);h(c,u,B+6,!0,o),c.commentLength=u.view.getUint16(B+32,!0),c.directory=16==(16&u.view.getUint8(B+38)),c.offset=u.view.getUint32(B+42,!0),l=Q(u.array.subarray(B+46,B+46+c.filenameLength)),c.filename=2048==(2048&c.bitFlag)?p(l):b(l),c.directory||"/"!=c.filename.charAt(c.filename.length-1)||(c.directory=!0),I=Q(u.array.subarray(B+46+c.filenameLength+c.extraFieldLength,B+46+c.filenameLength+c.extraFieldLength+c.commentLength)),c.comment=2048==(2048&c.bitFlag)?p(I):b(I),A.push(c),B+=46+c.filenameLength+c.extraFieldLength+c.commentLength}e(A)}),(function(){o(r)}))}))},close:function(e){this._worker&&(this._worker.terminate(),this._worker=null),e&&e()},_worker:null};e.zip.useWebWorkers?G("inflater",(function(e){l._worker=e,a(l)}),(function(e){o(e)})):a(l)}function m(e){return unescape(encodeURIComponent(e))}function F(e){var t,n=[];for(t=0;t<e.length;t++)n.push(e.charCodeAt(t));return n}function U(t,n,r,a){var o={},c=[],s=0,l=0;function g(e){r(e||"Error while writing zip file.")}function I(e){r(e||"Error while reading file data.")}var B={add:function(n,B,A,u,b){var p,Q,h,y=this._worker;function U(e,n){var r=i(16);s+=e||0,r.view.setUint32(0,1347094280),void 0!==n&&(p.view.setUint32(10,n,!0),r.view.setUint32(4,n,!0)),B&&(r.view.setUint32(8,e,!0),p.view.setUint32(14,e,!0),r.view.setUint32(12,B.size,!0),p.view.setUint32(18,B.size,!0)),t.writeUint8Array(r.array,(function(){s+=16,A()}),g)}function f(){b=b||{},n=n.trim(),b.directory&&"/"!=n.charAt(n.length-1)&&(n+="/"),o.hasOwnProperty(n)?r("File already exists."):(Q=F(m(n)),c.push(n),function(e){var r;h=b.lastModDate||new Date,p=i(26),o[n]={headerArray:p.array,directory:b.directory,filename:Q,offset:s,comment:F(m(b.comment||""))},p.view.setUint32(0,335546376),b.version&&p.view.setUint8(0,b.version),a||0===b.level||b.directory||p.view.setUint16(4,2048),p.view.setUint16(6,(h.getHours()<<6|h.getMinutes())<<5|h.getSeconds()/2,!0),p.view.setUint16(8,(h.getFullYear()-1980<<4|h.getMonth()+1)<<5|h.getDate(),!0),p.view.setUint16(22,Q.length,!0),(r=i(30+Q.length)).view.setUint32(0,1347093252),r.array.set(p.array,4),r.array.set(Q,30),s+=r.array.length,t.writeUint8Array(r.array,e,g)}((function(){B?a||0===b.level?C(y,l++,B,t,0,B.size,!0,U,u,I,g):function(t,n,r,a,o,i,c,s,l){e.zip.useWebWorkers?d(t,{sn:n,options:{level:o},codecClass:"Deflater",crcType:"input"},r,a,0,r.size,c,i,s,l):_(new e.zip.Deflater,r,a,0,r.size,"input",c,i,s,l)}(y,l++,B,t,b.level,U,u,I,g):U()})))}B?B.init(f,I):f()},close:function(e){this._worker&&(this._worker.terminate(),this._worker=null);var n,r,a,l=0,I=0;for(r=0;r<c.length;r++)l+=46+(a=o[c[r]]).filename.length+a.comment.length;for(n=i(l+22),r=0;r<c.length;r++)a=o[c[r]],n.view.setUint32(I,1347092738),n.view.setUint16(I+4,5120),n.array.set(a.headerArray,I+6),n.view.setUint16(I+32,a.comment.length,!0),a.directory&&n.view.setUint8(I+38,16),n.view.setUint32(I+42,a.offset,!0),n.array.set(a.filename,I+46),n.array.set(a.comment,I+46+a.filename.length),I+=46+a.filename.length+a.comment.length;n.view.setUint32(I,1347093766),n.view.setUint16(I+8,c.length,!0),n.view.setUint16(I+10,c.length,!0),n.view.setUint32(I+12,l,!0),n.view.setUint32(I+16,s,!0),t.writeUint8Array(n.array,(function(){t.getData(e)}),g)},_worker:null};e.zip.useWebWorkers?G("deflater",(function(e){B._worker=e,n(B)}),(function(e){r(e)})):n(B)}a.prototype.append=function(e){for(var t=0|this.crc,n=this.table,r=0,a=0|e.length;r<a;r++)t=t>>>8^n[255&(t^e[r])];this.crc=t},a.prototype.get=function(){return~this.crc},a.prototype.table=function(){var e,t,n,r=[];for(e=0;e<256;e++){for(n=e,t=0;t<8;t++)1&n?n=n>>>1^3988292384:n>>>=1;r[e]=n}return r}(),o.prototype.append=function(e,t){return e},o.prototype.flush=function(){},s.prototype=new c,s.prototype.constructor=s,l.prototype=new c,l.prototype.constructor=l,g.prototype=new c,g.prototype.constructor=g,I.prototype.getData=function(e){e(this.data)},B.prototype=new I,B.prototype.constructor=B,A.prototype=new I,A.prototype.constructor=A,u.prototype=new I,u.prototype.constructor=u;var f={deflater:["z-worker.js","deflate.js"],inflater:["z-worker.js","inflate.js"]};function G(t,n,r){if(null===e.zip.workerScripts||null===e.zip.workerScriptsPath){var a,o,i;if(e.zip.workerScripts){if(a=e.zip.workerScripts[t],!Array.isArray(a))return void r(new Error("zip.workerScripts."+t+" is not an array!"));o=a,i=document.createElement("a"),a=o.map((function(e){return i.href=e,i.href}))}else(a=f[t].slice(0))[0]=(e.zip.workerScriptsPath||"")+a[0];var c=new Worker(a[0]);c.codecTime=c.crcTime=0,c.postMessage({type:"importScripts",scripts:a.slice(1)}),c.addEventListener("message",(function e(t){var a=t.data;if(a.error)return c.terminate(),void r(a.error);"importScripts"===a.type&&(c.removeEventListener("message",e),c.removeEventListener("error",s),n(c))})),c.addEventListener("error",s)}else r(new Error("Either zip.workerScripts or zip.workerScriptsPath may be set, not both."));function s(e){c.terminate(),r(e)}}function E(e){console.error(e)}e.zip={Reader:c,Writer:I,BlobReader:g,Data64URIReader:l,TextReader:s,BlobWriter:u,Data64URIWriter:A,TextWriter:B,createReader:function(e,t,n){n=n||E,e.init((function(){y(e,t,n)}),n)},createWriter:function(e,t,n,r){n=n||E,r=!!r,e.init((function(){U(e,t,n,r)}),n)},useWebWorkers:!0,workerScriptsPath:null,workerScripts:null}}(this)},function(e,t){!function(e){"use strict";if(e.zWorkerInitialized)throw new Error("z-worker.js should be run only once");e.zWorkerInitialized=!0,addEventListener("message",(function(e){var n=e.data,r=n.type,a=n.sn,o=t[r];if(o)try{o(n)}catch(e){!function(e,t,n){var r={type:e,sn:t,error:i(n)};postMessage(r)}(r,a,e)}}));var t={importScripts:function(e){e.scripts&&e.scripts.length>0&&importScripts.apply(void 0,e.scripts);postMessage({type:"importScripts"})},newTask:r,append:o,flush:o},n={};function r(t){var r=e[t.codecClass],a=t.sn;if(n[a])throw Error("duplicated sn");n[a]={codec:new r(t.options),crcInput:"input"===t.crcType,crcOutput:"output"===t.crcType,crc:new c},postMessage({type:"newTask",sn:a})}var a=e.performance?e.performance.now.bind(e.performance):Date.now;function o(e){var t=e.sn,o=e.type,i=e.data,c=n[t];!c&&e.codecClass&&(r(e),c=n[t]);var s,l="append"===o,g=a();if(l)try{s=c.codec.append(i,(function(e){postMessage({type:"progress",sn:t,loaded:e})}))}catch(e){throw delete n[t],e}else delete n[t],s=c.codec.flush();var I=a()-g;g=a(),i&&c.crcInput&&c.crc.append(i),s&&c.crcOutput&&c.crc.append(s);var B=a()-g,A={type:o,sn:t,codecTime:I,crcTime:B},u=[];s&&(A.data=s,u.push(s.buffer)),l||!c.crcInput&&!c.crcOutput||(A.crc=c.crc.get());try{postMessage(A,u)}catch(e){postMessage(A)}}function i(e){return{message:e.message,stack:e.stack}}function c(){this.crc=-1}function s(){}c.prototype.append=function(e){for(var t=0|this.crc,n=this.table,r=0,a=0|e.length;r<a;r++)t=t>>>8^n[255&(t^e[r])];this.crc=t},c.prototype.get=function(){return~this.crc},c.prototype.table=function(){var e,t,n,r=[];for(e=0;e<256;e++){for(n=e,t=0;t<8;t++)1&n?n=n>>>1^3988292384:n>>>=1;r[e]=n}return r}(),e.NOOP=s,s.prototype.append=function(e,t){return e},s.prototype.flush=function(){}}(this)},function(e,t,n){(function(e,t){!function(e,n){"use strict";if(!e.setImmediate){var r,a,o,i,c,s=1,l={},g=!1,I=e.document,B=Object.getPrototypeOf&&Object.getPrototypeOf(e);B=B&&B.setTimeout?B:e,"[object process]"==={}.toString.call(e.process)?r=function(e){t.nextTick((function(){u(e)}))}:!function(){if(e.postMessage&&!e.importScripts){var t=!0,n=e.onmessage;return e.onmessage=function(){t=!1},e.postMessage("","*"),e.onmessage=n,t}}()?e.MessageChannel?((o=new MessageChannel).port1.onmessage=function(e){u(e.data)},r=function(e){o.port2.postMessage(e)}):I&&"onreadystatechange"in I.createElement("script")?(a=I.documentElement,r=function(e){var t=I.createElement("script");t.onreadystatechange=function(){u(e),t.onreadystatechange=null,a.removeChild(t),t=null},a.appendChild(t)}):r=function(e){setTimeout(u,0,e)}:(i="setImmediate$"+Math.random()+"$",c=function(t){t.source===e&&"string"==typeof t.data&&0===t.data.indexOf(i)&&u(+t.data.slice(i.length))},e.addEventListener?e.addEventListener("message",c,!1):e.attachEvent("onmessage",c),r=function(t){e.postMessage(i+t,"*")}),B.setImmediate=function(e){"function"!=typeof e&&(e=new Function(""+e));for(var t=new Array(arguments.length-1),n=0;n<t.length;n++)t[n]=arguments[n+1];var a={callback:e,args:t};return l[s]=a,r(s),s++},B.clearImmediate=A}function A(e){delete l[e]}function u(e){if(g)setTimeout(u,0,e);else{var t=l[e];if(t){g=!0;try{!function(e){var t=e.callback,n=e.args;switch(n.length){case 0:t();break;case 1:t(n[0]);break;case 2:t(n[0],n[1]);break;case 3:t(n[0],n[1],n[2]);break;default:t.apply(void 0,n)}}(t)}finally{A(e),g=!1}}}}}("undefined"==typeof self?void 0===e?this:e:self)}).call(this,n(21),n(90))},function(e,t){var n,r,a=e.exports={};function o(){throw new Error("setTimeout has not been defined")}function i(){throw new Error("clearTimeout has not been defined")}function c(e){if(n===setTimeout)return setTimeout(e,0);if((n===o||!n)&&setTimeout)return n=setTimeout,setTimeout(e,0);try{return n(e,0)}catch(t){try{return n.call(null,e,0)}catch(t){return n.call(this,e,0)}}}!function(){try{n="function"==typeof setTimeout?setTimeout:o}catch(e){n=o}try{r="function"==typeof clearTimeout?clearTimeout:i}catch(e){r=i}}();var s,l=[],g=!1,I=-1;function B(){g&&s&&(g=!1,s.length?l=s.concat(l):I=-1,l.length&&A())}function A(){if(!g){var e=c(B);g=!0;for(var t=l.length;t;){for(s=l,l=[];++I<t;)s&&s[I].run();I=-1,t=l.length}s=null,g=!1,function(e){if(r===clearTimeout)return clearTimeout(e);if((r===i||!r)&&clearTimeout)return r=clearTimeout,clearTimeout(e);try{r(e)}catch(t){try{return r.call(null,e)}catch(t){return r.call(this,e)}}}(e)}}function u(e,t){this.fun=e,this.array=t}function d(){}a.nextTick=function(e){var t=new Array(arguments.length-1);if(arguments.length>1)for(var n=1;n<arguments.length;n++)t[n-1]=arguments[n];l.push(new u(e,t)),1!==l.length||g||c(A)},u.prototype.run=function(){this.fun.apply(null,this.array)},a.title="browser",a.browser=!0,a.env={},a.argv=[],a.version="",a.versions={},a.on=d,a.addListener=d,a.once=d,a.off=d,a.removeListener=d,a.removeAllListeners=d,a.emit=d,a.prependListener=d,a.prependOnceListener=d,a.listeners=function(e){return[]},a.binding=function(e){throw new Error("process.binding is not supported")},a.cwd=function(){return"/"},a.chdir=function(e){throw new Error("process.chdir is not supported")},a.umask=function(){return 0}},function(e,t,n){var r=n(22),a=n(92),o=n(94);e.exports=function(e,t){return o(a(e,t,r),e+"")}},function(e,t,n){var r=n(93),a=Math.max;e.exports=function(e,t,n){return t=a(void 0===t?e.length-1:t,0),function(){for(var o=arguments,i=-1,c=a(o.length-t,0),s=Array(c);++i<c;)s[i]=o[t+i];i=-1;for(var l=Array(t+1);++i<t;)l[i]=o[i];return l[t]=n(s),r(e,this,l)}}},function(e,t){e.exports=function(e,t,n){switch(n.length){case 0:return e.call(t);case 1:return e.call(t,n[0]);case 2:return e.call(t,n[0],n[1]);case 3:return e.call(t,n[0],n[1],n[2])}return e.apply(t,n)}},function(e,t,n){var r=n(95),a=n(104)(r);e.exports=a},function(e,t,n){var r=n(96),a=n(97),o=n(22),i=a?function(e,t){return a(e,"toString",{configurable:!0,enumerable:!1,value:r(t),writable:!0})}:o;e.exports=i},function(e,t){e.exports=function(e){return function(){return e}}},function(e,t,n){var r=n(8),a=function(){try{var e=r(Object,"defineProperty");return e({},"",{}),e}catch(e){}}();e.exports=a},function(e,t,n){var r=n(29),a=n(101),o=n(12),i=n(31),c=/^\[object .+?Constructor\]$/,s=Function.prototype,l=Object.prototype,g=s.toString,I=l.hasOwnProperty,B=RegExp("^"+g.call(I).replace(/[\\^$.*+?()[\]{}|]/g,"\\$&").replace(/hasOwnProperty|(function).*?(?=\\\()| for .+?(?=\\\])/g,"$1.*?")+"$");e.exports=function(e){return!(!o(e)||a(e))&&(r(e)?B:c).test(i(e))}},function(e,t,n){var r=n(11),a=Object.prototype,o=a.hasOwnProperty,i=a.toString,c=r?r.toStringTag:void 0;e.exports=function(e){var t=o.call(e,c),n=e[c];try{e[c]=void 0;var r=!0}catch(e){}var a=i.call(e);return r&&(t?e[c]=n:delete e[c]),a}},function(e,t){var n=Object.prototype.toString;e.exports=function(e){return n.call(e)}},function(e,t,n){var r,a=n(102),o=(r=/[^.]+$/.exec(a&&a.keys&&a.keys.IE_PROTO||""))?"Symbol(src)_1."+r:"";e.exports=function(e){return!!o&&o in e}},function(e,t,n){var r=n(6)["__core-js_shared__"];e.exports=r},function(e,t){e.exports=function(e,t){return null==e?void 0:e[t]}},function(e,t){var n=Date.now;e.exports=function(e){var t=0,r=0;return function(){var a=n(),o=16-(a-r);if(r=a,o>0){if(++t>=800)return arguments[0]}else t=0;return e.apply(void 0,arguments)}}},function(e,t,n){var r=n(106);e.exports=function(e,t){return e&&e.length&&t&&t.length?r(e,t):e}},function(e,t,n){var r=n(32),a=n(107),o=n(110),i=n(34),c=n(111),s=Array.prototype.splice;e.exports=function(e,t,n,l){var g=l?o:a,I=-1,B=t.length,A=e;for(e===t&&(t=c(t)),n&&(A=r(e,i(n)));++I<B;)for(var u=0,d=t[I],_=n?n(d):d;(u=g(A,_,u,l))>-1;)A!==e&&s.call(A,u,1),s.call(e,u,1);return e}},function(e,t,n){var r=n(33),a=n(108),o=n(109);e.exports=function(e,t,n){return t==t?o(e,t,n):r(e,a,n)}},function(e,t){e.exports=function(e){return e!=e}},function(e,t){e.exports=function(e,t,n){for(var r=n-1,a=e.length;++r<a;)if(e[r]===t)return r;return-1}},function(e,t){e.exports=function(e,t,n,r){for(var a=n-1,o=e.length;++a<o;)if(r(e[a],t))return a;return-1}},function(e,t){e.exports=function(e,t){var n=-1,r=e.length;for(t||(t=Array(r));++n<r;)t[n]=e[n];return t}},function(e,t,n){n(4);e.exports=function(e){var t="";return t+='<application-view ng-repeat="application in self.applications" application="application"></application-view>'}},function(e,t){},function(e,t,n){n(4);e.exports=function(e){var t="";return t+='<div class="main-ui-view" ng-class="self.platformString"><div class="app" id="app" ng-class="self.state.appClass" ng-if="!self.state.needsUnlock && self.state.ready"><tags-view application="self.application"></tags-view><notes-view application="self.application"></notes-view><editor-group-view application="self.application"></editor-group-view></div><footer-view ng-if="!self.state.needsUnlock && self.state.ready" application="self.application"></footer-view></div>'}},function(e,t,n){n(4);e.exports=function(e){var t="";return t+='<editor-view ng-repeat="editor in self.editors" application="self.application" editor="editor"></editor-view>'}},function(e,t,n){var r=n(35),a=n(45),o=n(25);e.exports=function(e){return function(t,n,i){var c=Object(t);if(!a(t)){var s=r(n,3);t=o(t),n=function(e){return s(c[e],e,c)}}var l=e(t,n,i);return l>-1?c[s?t[l]:l]:void 0}}},function(e,t,n){var r=n(118),a=n(173),o=n(47);e.exports=function(e){var t=a(e);return 1==t.length&&t[0][2]?o(t[0][0],t[0][1]):function(n){return n===e||r(n,e,t)}}},function(e,t,n){var r=n(36),a=n(38);e.exports=function(e,t,n,o){var i=n.length,c=i,s=!o;if(null==e)return!c;for(e=Object(e);i--;){var l=n[i];if(s&&l[2]?l[1]!==e[l[0]]:!(l[0]in e))return!1}for(;++i<c;){var g=(l=n[i])[0],I=e[g],B=l[1];if(s&&l[2]){if(void 0===I&&!(g in e))return!1}else{var A=new r;if(o)var u=o(I,B,g,e,t,A);if(!(void 0===u?a(B,I,3,o,A):u))return!1}}return!0}},function(e,t){e.exports=function(){this.__data__=[],this.size=0}},function(e,t,n){var r=n(14),a=Array.prototype.splice;e.exports=function(e){var t=this.__data__,n=r(t,e);return!(n<0)&&(n==t.length-1?t.pop():a.call(t,n,1),--this.size,!0)}},function(e,t,n){var r=n(14);e.exports=function(e){var t=this.__data__,n=r(t,e);return n<0?void 0:t[n][1]}},function(e,t,n){var r=n(14);e.exports=function(e){return r(this.__data__,e)>-1}},function(e,t,n){var r=n(14);e.exports=function(e,t){var n=this.__data__,a=r(n,e);return a<0?(++this.size,n.push([e,t])):n[a][1]=t,this}},function(e,t,n){var r=n(13);e.exports=function(){this.__data__=new r,this.size=0}},function(e,t){e.exports=function(e){var t=this.__data__,n=t.delete(e);return this.size=t.size,n}},function(e,t){e.exports=function(e){return this.__data__.get(e)}},function(e,t){e.exports=function(e){return this.__data__.has(e)}},function(e,t,n){var r=n(13),a=n(23),o=n(24);e.exports=function(e,t){var n=this.__data__;if(n instanceof r){var i=n.__data__;if(!a||i.length<199)return i.push([e,t]),this.size=++n.size,this;n=this.__data__=new o(i)}return n.set(e,t),this.size=n.size,this}},function(e,t,n){var r=n(130),a=n(13),o=n(23);e.exports=function(){this.size=0,this.__data__={hash:new r,map:new(o||a),string:new r}}},function(e,t,n){var r=n(131),a=n(132),o=n(133),i=n(134),c=n(135);function s(e){var t=-1,n=null==e?0:e.length;for(this.clear();++t<n;){var r=e[t];this.set(r[0],r[1])}}s.prototype.clear=r,s.prototype.delete=a,s.prototype.get=o,s.prototype.has=i,s.prototype.set=c,e.exports=s},function(e,t,n){var r=n(15);e.exports=function(){this.__data__=r?r(null):{},this.size=0}},function(e,t){e.exports=function(e){var t=this.has(e)&&delete this.__data__[e];return this.size-=t?1:0,t}},function(e,t,n){var r=n(15),a=Object.prototype.hasOwnProperty;e.exports=function(e){var t=this.__data__;if(r){var n=t[e];return"__lodash_hash_undefined__"===n?void 0:n}return a.call(t,e)?t[e]:void 0}},function(e,t,n){var r=n(15),a=Object.prototype.hasOwnProperty;e.exports=function(e){var t=this.__data__;return r?void 0!==t[e]:a.call(t,e)}},function(e,t,n){var r=n(15);e.exports=function(e,t){var n=this.__data__;return this.size+=this.has(e)?0:1,n[e]=r&&void 0===t?"__lodash_hash_undefined__":t,this}},function(e,t,n){var r=n(16);e.exports=function(e){var t=r(this,e).delete(e);return this.size-=t?1:0,t}},function(e,t){e.exports=function(e){var t=typeof e;return"string"==t||"number"==t||"symbol"==t||"boolean"==t?"__proto__"!==e:null===e}},function(e,t,n){var r=n(16);e.exports=function(e){return r(this,e).get(e)}},function(e,t,n){var r=n(16);e.exports=function(e){return r(this,e).has(e)}},function(e,t,n){var r=n(16);e.exports=function(e,t){var n=r(this,e),a=n.size;return n.set(e,t),this.size+=n.size==a?0:1,this}},function(e,t,n){var r=n(36),a=n(39),o=n(147),i=n(151),c=n(168),s=n(7),l=n(41),g=n(44),I="[object Object]",B=Object.prototype.hasOwnProperty;e.exports=function(e,t,n,A,u,d){var _=s(e),C=s(t),b=_?"[object Array]":c(e),p=C?"[object Array]":c(t),Q=(b="[object Arguments]"==b?I:b)==I,h=(p="[object Arguments]"==p?I:p)==I,y=b==p;if(y&&l(e)){if(!l(t))return!1;_=!0,Q=!1}if(y&&!Q)return d||(d=new r),_||g(e)?a(e,t,n,A,u,d):o(e,t,b,n,A,u,d);if(!(1&n)){var m=Q&&B.call(e,"__wrapped__"),F=h&&B.call(t,"__wrapped__");if(m||F){var U=m?e.value():e,f=F?t.value():t;return d||(d=new r),u(U,f,n,A,d)}}return!!y&&(d||(d=new r),i(e,t,n,A,u,d))}},function(e,t,n){var r=n(24),a=n(143),o=n(144);function i(e){var t=-1,n=null==e?0:e.length;for(this.__data__=new r;++t<n;)this.add(e[t])}i.prototype.add=i.prototype.push=a,i.prototype.has=o,e.exports=i},function(e,t){e.exports=function(e){return this.__data__.set(e,"__lodash_hash_undefined__"),this}},function(e,t){e.exports=function(e){return this.__data__.has(e)}},function(e,t){e.exports=function(e,t){for(var n=-1,r=null==e?0:e.length;++n<r;)if(t(e[n],n,e))return!0;return!1}},function(e,t){e.exports=function(e,t){return e.has(t)}},function(e,t,n){var r=n(11),a=n(148),o=n(37),i=n(39),c=n(149),s=n(150),l=r?r.prototype:void 0,g=l?l.valueOf:void 0;e.exports=function(e,t,n,r,l,I,B){switch(n){case"[object DataView]":if(e.byteLength!=t.byteLength||e.byteOffset!=t.byteOffset)return!1;e=e.buffer,t=t.buffer;case"[object ArrayBuffer]":return!(e.byteLength!=t.byteLength||!I(new a(e),new a(t)));case"[object Boolean]":case"[object Date]":case"[object Number]":return o(+e,+t);case"[object Error]":return e.name==t.name&&e.message==t.message;case"[object RegExp]":case"[object String]":return e==t+"";case"[object Map]":var A=c;case"[object Set]":var u=1&r;if(A||(A=s),e.size!=t.size&&!u)return!1;var d=B.get(e);if(d)return d==t;r|=2,B.set(e,t);var _=i(A(e),A(t),r,l,I,B);return B.delete(e),_;case"[object Symbol]":if(g)return g.call(e)==g.call(t)}return!1}},function(e,t,n){var r=n(6).Uint8Array;e.exports=r},function(e,t){e.exports=function(e){var t=-1,n=Array(e.size);return e.forEach((function(e,r){n[++t]=[r,e]})),n}},function(e,t){e.exports=function(e){var t=-1,n=Array(e.size);return e.forEach((function(e){n[++t]=e})),n}},function(e,t,n){var r=n(152),a=Object.prototype.hasOwnProperty;e.exports=function(e,t,n,o,i,c){var s=1&n,l=r(e),g=l.length;if(g!=r(t).length&&!s)return!1;for(var I=g;I--;){var B=l[I];if(!(s?B in t:a.call(t,B)))return!1}var A=c.get(e);if(A&&c.get(t))return A==t;var u=!0;c.set(e,t),c.set(t,e);for(var d=s;++I<g;){var _=e[B=l[I]],C=t[B];if(o)var b=s?o(C,_,B,t,e,c):o(_,C,B,e,t,c);if(!(void 0===b?_===C||i(_,C,n,o,c):b)){u=!1;break}d||(d="constructor"==B)}if(u&&!d){var p=e.constructor,Q=t.constructor;p!=Q&&"constructor"in e&&"constructor"in t&&!("function"==typeof p&&p instanceof p&&"function"==typeof Q&&Q instanceof Q)&&(u=!1)}return c.delete(e),c.delete(t),u}},function(e,t,n){var r=n(153),a=n(155),o=n(25);e.exports=function(e){return r(e,o,a)}},function(e,t,n){var r=n(154),a=n(7);e.exports=function(e,t,n){var o=t(e);return a(e)?o:r(o,n(e))}},function(e,t){e.exports=function(e,t){for(var n=-1,r=t.length,a=e.length;++n<r;)e[a+n]=t[n];return e}},function(e,t,n){var r=n(156),a=n(157),o=Object.prototype.propertyIsEnumerable,i=Object.getOwnPropertySymbols,c=i?function(e){return null==e?[]:(e=Object(e),r(i(e),(function(t){return o.call(e,t)})))}:a;e.exports=c},function(e,t){e.exports=function(e,t){for(var n=-1,r=null==e?0:e.length,a=0,o=[];++n<r;){var i=e[n];t(i,n,e)&&(o[a++]=i)}return o}},function(e,t){e.exports=function(){return[]}},function(e,t,n){var r=n(159),a=n(40),o=n(7),i=n(41),c=n(43),s=n(44),l=Object.prototype.hasOwnProperty;e.exports=function(e,t){var n=o(e),g=!n&&a(e),I=!n&&!g&&i(e),B=!n&&!g&&!I&&s(e),A=n||g||I||B,u=A?r(e.length,String):[],d=u.length;for(var _ in e)!t&&!l.call(e,_)||A&&("length"==_||I&&("offset"==_||"parent"==_)||B&&("buffer"==_||"byteLength"==_||"byteOffset"==_)||c(_,d))||u.push(_);return u}},function(e,t){e.exports=function(e,t){for(var n=-1,r=Array(e);++n<e;)r[n]=t(n);return r}},function(e,t,n){var r=n(9),a=n(10);e.exports=function(e){return a(e)&&"[object Arguments]"==r(e)}},function(e,t){e.exports=function(){return!1}},function(e,t,n){var r=n(9),a=n(26),o=n(10),i={};i["[object Float32Array]"]=i["[object Float64Array]"]=i["[object Int8Array]"]=i["[object Int16Array]"]=i["[object Int32Array]"]=i["[object Uint8Array]"]=i["[object Uint8ClampedArray]"]=i["[object Uint16Array]"]=i["[object Uint32Array]"]=!0,i["[object Arguments]"]=i["[object Array]"]=i["[object ArrayBuffer]"]=i["[object Boolean]"]=i["[object DataView]"]=i["[object Date]"]=i["[object Error]"]=i["[object Function]"]=i["[object Map]"]=i["[object Number]"]=i["[object Object]"]=i["[object RegExp]"]=i["[object Set]"]=i["[object String]"]=i["[object WeakMap]"]=!1,e.exports=function(e){return o(e)&&a(e.length)&&!!i[r(e)]}},function(e,t,n){(function(e){var r=n(30),a=t&&!t.nodeType&&t,o=a&&"object"==typeof e&&e&&!e.nodeType&&e,i=o&&o.exports===a&&r.process,c=function(){try{var e=o&&o.require&&o.require("util").types;return e||i&&i.binding&&i.binding("util")}catch(e){}}();e.exports=c}).call(this,n(42)(e))},function(e,t,n){var r=n(165),a=n(166),o=Object.prototype.hasOwnProperty;e.exports=function(e){if(!r(e))return a(e);var t=[];for(var n in Object(e))o.call(e,n)&&"constructor"!=n&&t.push(n);return t}},function(e,t){var n=Object.prototype;e.exports=function(e){var t=e&&e.constructor;return e===("function"==typeof t&&t.prototype||n)}},function(e,t,n){var r=n(167)(Object.keys,Object);e.exports=r},function(e,t){e.exports=function(e,t){return function(n){return e(t(n))}}},function(e,t,n){var r=n(169),a=n(23),o=n(170),i=n(171),c=n(172),s=n(9),l=n(31),g=l(r),I=l(a),B=l(o),A=l(i),u=l(c),d=s;(r&&"[object DataView]"!=d(new r(new ArrayBuffer(1)))||a&&"[object Map]"!=d(new a)||o&&"[object Promise]"!=d(o.resolve())||i&&"[object Set]"!=d(new i)||c&&"[object WeakMap]"!=d(new c))&&(d=function(e){var t=s(e),n="[object Object]"==t?e.constructor:void 0,r=n?l(n):"";if(r)switch(r){case g:return"[object DataView]";case I:return"[object Map]";case B:return"[object Promise]";case A:return"[object Set]";case u:return"[object WeakMap]"}return t}),e.exports=d},function(e,t,n){var r=n(8)(n(6),"DataView");e.exports=r},function(e,t,n){var r=n(8)(n(6),"Promise");e.exports=r},function(e,t,n){var r=n(8)(n(6),"Set");e.exports=r},function(e,t,n){var r=n(8)(n(6),"WeakMap");e.exports=r},function(e,t,n){var r=n(46),a=n(25);e.exports=function(e){for(var t=a(e),n=t.length;n--;){var o=t[n],i=e[o];t[n]=[o,i,r(i)]}return t}},function(e,t,n){var r=n(38),a=n(175),o=n(181),i=n(27),c=n(46),s=n(47),l=n(18);e.exports=function(e,t){return i(e)&&c(t)?s(l(e),t):function(n){var i=a(n,e);return void 0===i&&i===t?o(n,e):r(t,i,3)}}},function(e,t,n){var r=n(48);e.exports=function(e,t,n){var a=null==e?void 0:r(e,t);return void 0===a?n:a}},function(e,t,n){var r=n(177),a=/[^.[\]]+|\[(?:(-?\d+(?:\.\d+)?)|(["'])((?:(?!\2)[^\\]|\\.)*?)\2)\]|(?=(?:\.|\[\])(?:\.|\[\]|$))/g,o=/\\(\\)?/g,i=r((function(e){var t=[];return 46===e.charCodeAt(0)&&t.push(""),e.replace(a,(function(e,n,r,a){t.push(r?a.replace(o,"$1"):n||e)})),t}));e.exports=i},function(e,t,n){var r=n(178);e.exports=function(e){var t=r(e,(function(e){return 500===n.size&&n.clear(),e})),n=t.cache;return t}},function(e,t,n){var r=n(24);function a(e,t){if("function"!=typeof e||null!=t&&"function"!=typeof t)throw new TypeError("Expected a function");var n=function(){var r=arguments,a=t?t.apply(this,r):r[0],o=n.cache;if(o.has(a))return o.get(a);var i=e.apply(this,r);return n.cache=o.set(a,i)||o,i};return n.cache=new(a.Cache||r),n}a.Cache=r,e.exports=a},function(e,t,n){var r=n(180);e.exports=function(e){return null==e?"":r(e)}},function(e,t,n){var r=n(11),a=n(32),o=n(7),i=n(17),c=r?r.prototype:void 0,s=c?c.toString:void 0;e.exports=function e(t){if("string"==typeof t)return t;if(o(t))return a(t,e)+"";if(i(t))return s?s.call(t):"";var n=t+"";return"0"==n&&1/t==-1/0?"-0":n}},function(e,t,n){var r=n(182),a=n(183);e.exports=function(e,t){return null!=e&&a(e,t,r)}},function(e,t){e.exports=function(e,t){return null!=e&&t in Object(e)}},function(e,t,n){var r=n(49),a=n(40),o=n(7),i=n(43),c=n(26),s=n(18);e.exports=function(e,t,n){for(var l=-1,g=(t=r(t,e)).length,I=!1;++l<g;){var B=s(t[l]);if(!(I=null!=e&&n(e,B)))break;e=e[B]}return I||++l!=g?I:!!(g=null==e?0:e.length)&&c(g)&&i(B,g)&&(o(e)||a(e))}},function(e,t,n){var r=n(185),a=n(186),o=n(27),i=n(18);e.exports=function(e){return o(e)?r(i(e)):a(e)}},function(e,t){e.exports=function(e){return function(t){return null==t?void 0:t[e]}}},function(e,t,n){var r=n(48);e.exports=function(e){return function(t){return r(t,e)}}},function(e,t,n){var r=n(33),a=n(35),o=n(188),i=Math.max;e.exports=function(e,t,n){var c=null==e?0:e.length;if(!c)return-1;var s=null==n?0:o(n);return s<0&&(s=i(c+s,0)),r(e,a(t,3),s)}},function(e,t,n){var r=n(189);e.exports=function(e){var t=r(e),n=t%1;return t==t?n?t-n:t:0}},function(e,t,n){var r=n(190);e.exports=function(e){return e?(e=r(e))===1/0||e===-1/0?17976931348623157e292*(e<0?-1:1):e==e?e:0:0===e?e:0}},function(e,t,n){var r=n(12),a=n(17),o=/^\s+|\s+$/g,i=/^[-+]0x[0-9a-f]+$/i,c=/^0b[01]+$/i,s=/^0o[0-7]+$/i,l=parseInt;e.exports=function(e){if("number"==typeof e)return e;if(a(e))return NaN;if(r(e)){var t="function"==typeof e.valueOf?e.valueOf():e;e=r(t)?t+"":t}if("string"!=typeof e)return 0===e?e:+e;e=e.replace(o,"");var n=c.test(e);return n||s.test(e)?l(e.slice(2),n?2:8):i.test(e)?NaN:+e}},function(e,t,n){n(4);e.exports=function(e){var t="";return t+='<div class="section editor sn-component" id="editor-column" aria-label="Note"><div class="sn-component"><div class="sk-app-bar no-edges" ng-if="self.noteLocked" ng-init="self.lockText = \'Note Locked\'" ng-mouseleave="self.lockText = \'Note Locked\'" ng-mouseover="self.lockText = \'Unlock\'"><div class="left"><div class="sk-app-bar-item" ng-click="self.toggleLockNote()"><div class="sk-label warning"><i class="icon ion-locked"></i>{{self.lockText}}</div></div></div></div></div><div class="section-title-bar" id="editor-title-bar" ng-class="{\'locked\' : self.noteLocked}" ng-show="self.note && !self.note.errorDecrypting"><div class="title"><input class="input" id="note-title-editor" ng-blur="self.onTitleBlur()" ng-change="self.onTitleChange()" ng-disabled="self.noteLocked" ng-focus="self.onTitleFocus()" ng-keyup="$event.keyCode == 13 && self.onTitleEnter($event)" ng-model="self.editorValues.title" select-on-focus="true" spellcheck="false"></div><div id="save-status"><div class="message" ng-class="{\'warning sk-bold\': self.state.syncTakingTooLong, \'danger sk-bold\': self.state.saveError}">{{self.state.noteStatus.message}}</div><div class="desc" ng-show="self.state.noteStatus.desc">{{self.state.noteStatus.desc}}</div></div><div class="editor-tags"><div id="note-tags-component-container" ng-if="self.activeTagsComponent"><component-view class="component-view" component-uuid="self.activeTagsComponent.uuid" ng-class="{\'locked\' : self.noteLocked}" ng-style="self.noteLocked && {\'pointer-events\' : \'none\'}" application="self.application"></component-view></div><input class="tags-input" ng-blur="self.onTagsInputBlur()" ng-disabled="self.noteLocked" ng-if="!self.activeTagsComponent" ng-keyup="$event.keyCode == 13 && $event.target.blur();" ng-model="self.editorValues.tagsInputValue" placeholder="#tags" spellcheck="false" type="text"></div></div><div class="sn-component" ng-if="self.note"><div class="sk-app-bar no-edges" id="editor-menu-bar"><div class="left"><div class="sk-app-bar-item" click-outside="self.setMenuState(\'showOptionsMenu\', false)" is-open="self.state.showOptionsMenu" ng-class="{\'selected\' : self.state.showOptionsMenu}" ng-click="self.toggleMenu(\'showOptionsMenu\')"><div class="sk-label">Options</div><div class="sk-menu-panel dropdown-menu" ng-if="self.state.showOptionsMenu"><div class="sk-menu-panel-section"><div class="sk-menu-panel-header"><div class="sk-menu-panel-header-title">Note Options</div></div><menu-row action="self.selectedMenuItem(true); self.togglePin()" desc="\'Pin or unpin a note from the top of your list\'" label="self.note.pinned ? \'Unpin\' : \'Pin\'"></menu-row><menu-row action="self.selectedMenuItem(true); self.toggleArchiveNote()" desc="\'Archive or unarchive a note from your Archived system tag\'" label="self.note.archived ? \'Unarchive\' : \'Archive\'"></menu-row><menu-row action="self.selectedMenuItem(true); self.toggleLockNote()" desc="\'Locking notes prevents unintentional editing\'" label="self.noteLocked ? \'Unlock\' : \'Lock\'"></menu-row><menu-row action="self.selectedMenuItem(true); self.toggleProtectNote()" desc="\'Protecting a note will require credentials to view\n it (Manage Privileges via Account menu)\'" label="self.note.protected ? \'Unprotect\' : \'Protect\'"></menu-row><menu-row action="self.selectedMenuItem(true); self.toggleNotePreview()" circle="self.note.hidePreview ? \'danger\' : \'success\'" circle-align="\'right\'" desc="\'Hide or unhide the note preview from the list of notes\'" label="\'Preview\'"></menu-row><menu-row action="self.selectedMenuItem(); self.deleteNote()" desc="\'Send this note to the trash\'" label="\'Move to Trash\'" ng-show="!self.state.altKeyDown && !self.note.trashed && !self.note.errorDecrypting" stylekit-class="\'warning\'"></menu-row><menu-row action="self.selectedMenuItem(); self.deleteNotePermanantely()" desc="\'Delete this note permanently from all your devices\'" label="\'Delete Permanently\'" ng-show="!self.note.trashed && self.note.errorDecrypting" stylekit-class="\'danger\'"></menu-row></div><div ng-if="self.note.trashed || self.state.altKeyDown"><menu-row action="self.selectedMenuItem(true); self.restoreTrashedNote()" desc="\'Undelete this note and restore it back into your notes\'" label="\'Restore\'" ng-show="self.note.trashed" stylekit-class="\'info\'"></menu-row><menu-row action="self.selectedMenuItem(true); self.deleteNotePermanantely()" desc="\'Delete this note permanently from all your devices\'" label="\'Delete Permanently\'" stylekit-class="\'danger\'"></menu-row><menu-row action="self.selectedMenuItem(true); self.emptyTrash()" desc="\'Permanently delete all notes in the trash\'" label="\'Empty Trash\'" ng-show="self.note.trashed || !self.state.altKeyDown" stylekit-class="\'danger\'" subtitle="self.getTrashCount() + \' notes in trash\'"></menu-row></div><div class="sk-menu-panel-section"><div class="sk-menu-panel-header"><div class="sk-menu-panel-header-title">Global Display</div></div><menu-row action="self.selectedMenuItem(true); self.toggleWebPrefKey(self.prefKeyMonospace)" circle="self.state.monospaceFont ? \'success\' : \'neutral\'" desc="\'Toggles the font style for the default editor\'" disabled="self.activeEditorComponent" label="\'Monospace Font\'" subtitle="self.activeEditorComponent ? \'Not available with editor extensions\' : null"></menu-row><menu-row action="self.selectedMenuItem(true); self.toggleWebPrefKey(self.prefKeySpellcheck)" circle="self.state.spellcheck ? \'success\' : \'neutral\'" desc="\'Toggles spellcheck for the default editor\'" disabled="self.activeEditorComponent" label="\'Spellcheck\'" subtitle="\n self.activeEditorComponent\n ? \'Not available with editor extensions\'\n : (self.state.isDesktop ? \'May degrade editor performance\' : null)\n "></menu-row><menu-row action="self.selectedMenuItem(true); self.toggleWebPrefKey(self.prefKeyMarginResizers)" circle="self.state.marginResizersEnabled ? \'success\' : \'neutral\'" desc="\'Allows for editor left and right margins to be resized\'" faded="!self.state.marginResizersEnabled" label="\'Margin Resizers\'"></menu-row></div></div></div><div class="sk-app-bar-item" click-outside="self.setMenuState(\'showEditorMenu\', false)" is-open="self.state.showEditorMenu" ng-class="{\'selected\' : self.state.showEditorMenu}" ng-click="self.toggleMenu(\'showEditorMenu\')"><div class="sk-label">Editor</div><editor-menu callback="self.editorMenuOnSelect" current-item="self.note" ng-if="self.state.showEditorMenu" selected-editor-uuid="self.activeEditorComponent && self.activeEditorComponent.uuid" application="self.application"></editor-menu></div><div class="sk-app-bar-item" click-outside="self.setMenuState(\'showExtensions\', false)" is-open="self.state.showExtensions" ng-class="{\'selected\' : self.state.showExtensions}" ng-click="self.toggleMenu(\'showExtensions\')"><div class="sk-label">Actions</div><actions-menu item="self.note" ng-if="self.state.showExtensions" application="self.application"></actions-menu></div><div class="sk-app-bar-item" click-outside="self.setMenuState(\'showSessionHistory\', false)" is-open="self.state.showSessionHistory" ng-click="self.toggleMenu(\'showSessionHistory\')"><div class="sk-label">Session History</div><session-history-menu item="self.note" ng-if="self.state.showSessionHistory" application="self.application"></session-history-menu></div></div></div></div><div class="editor-content" id="editor-content" ng-if="!self.note.errorDecrypting"><panel-resizer class="left" control="self.leftPanelPuppet" hoverable="true" min-width="300" ng-if="self.state.marginResizersEnabled" on-resize-finish="self.onPanelResizeFinish" panel-id="\'editor-content\'" property="\'left\'"></panel-resizer><component-view class="component-view" component-uuid="self.activeEditorComponent.uuid" ng-if="self.activeEditorComponent && !self.state.editorComponentUnloading" on-load="self.onEditorLoad" application="self.application"></component-view><textarea class="editable" id="note-text-editor" dir="auto" ng-attr-spellcheck="{{self.state.spellcheck}}" ng-change="self.contentChanged()" ng-click="self.clickedTextArea()" ng-focus="self.onContentFocus()" ng-if="!self.activeEditorComponent && !self.state.textareaUnloading" ng-model="self.editorValues.text" ng-model-options="{ debounce: self.state.editorDebounce}" ng-readonly="self.noteLocked" ng-trim="false">{{self.onSystemEditorLoad()}}</textarea><panel-resizer control="self.rightPanelPuppet" hoverable="true" min-width="300" ng-if="self.state.marginResizersEnabled" on-resize-finish="self.onPanelResizeFinish" panel-id="\'editor-content\'" property="\'right\'"></panel-resizer></div><div class="section" ng-show="self.note.errorDecrypting"><p class="medium-padding" style="padding-top: 0 !important;">There was an error decrypting this item. Ensure you are running the\nlatest version of this app, then sign out and sign back in to try again.</p></div><div id="editor-pane-component-stack" ng-show="self.note"><div class="sk-app-bar no-edges" id="component-stack-menu-bar" ng-if="self.state.stackComponents.length"><div class="left"><div class="sk-app-bar-item" ng-repeat="component in self.state.stackComponents track by component.uuid" ng-click="self.toggleStackComponentForCurrentItem(component)"><div class="sk-app-bar-item-column"><div class="sk-circle small" ng-class="{\'info\' : !self.stackComponentHidden(component) && component.active, \'neutral\' : self.stackComponentHidden(component) || !component.active}"></div></div><div class="sk-app-bar-item-column"><div class="sk-label">{{component.name}}</div></div></div></div></div><div class="sn-component"><component-view class="component-view component-stack-item" ng-repeat="component in self.state.stackComponents track by component.uuid" component-uuid="component.uuid" manual-dealloc="true" ng-show="!self.stackComponentHidden(component)" application="self.application"></component-view></div></div></div>'}},function(e,t,n){n(4);e.exports=function(e){var t="";return t+='<div class="sn-component"><div class="sk-app-bar no-edges no-bottom-edge" id="footer-bar"><div class="left"><div class="sk-app-bar-item" click-outside="ctrl.clickOutsideAccountMenu()" is-open="ctrl.showAccountMenu" ng-click="ctrl.accountMenuPressed()"><div class="sk-app-bar-item-column"><div class="sk-circle small" ng-class="ctrl.hasError ? \'danger\' : (ctrl.user ? \'info\' : \'neutral\')"></div></div><div class="sk-app-bar-item-column"><div class="sk-label title" ng-class="{red: ctrl.hasError}">Account</div></div><account-menu close-function="ctrl.closeAccountMenu()" ng-click="$event.stopPropagation()" ng-if="ctrl.showAccountMenu" application="ctrl.application"></account-menu></div><div class="sk-app-bar-item"><a class="no-decoration sk-label title" href="https://standardnotes.org/help" rel="noopener" target="_blank">Help</a></div><div class="sk-app-bar-item border"></div><div class="sk-app-bar-item" ng-repeat="room in ctrl.rooms track by room.uuid"><div class="sk-app-bar-item-column" ng-click="ctrl.selectRoom(room)"><div class="sk-label">{{room.name}}</div></div><component-modal component-uuid="room.uuid" ng-if="ctrl.roomShowState[room.uuid]" on-dismiss="ctrl.onRoomDismiss(room)" application="ctrl.application"></component-modal></div></div><div class="center"><div class="sk-app-bar-item" ng-if="ctrl.arbitraryStatusMessage"><div class="sk-app-bar-item-column"><span class="neutral sk-label">{{ctrl.arbitraryStatusMessage}}</span></div></div></div><div class="right"><div class="sk-app-bar-item" ng-click="ctrl.openSecurityUpdate()" ng-if="ctrl.state.dataUpgradeAvailable"><span class="success sk-label">Encryption upgrade available.</span></div><div class="sk-app-bar-item" ng-click="ctrl.clickedNewUpdateAnnouncement()" ng-if="ctrl.newUpdateAvailable == true"><span class="info sk-label">New update available.</span></div><div class="sk-app-bar-item no-pointer" ng-if="ctrl.lastSyncDate && !ctrl.isRefreshing"><div class="sk-label subtle">Last refreshed {{ctrl.lastSyncDate}}</div></div><div class="sk-app-bar-item" ng-click="ctrl.toggleSyncResolutionMenu()" ng-if="(ctrl.state.outOfSync && !ctrl.isRefreshing) || ctrl.showSyncResolution"><div class="sk-label warning" ng-if="ctrl.state.outOfSync">Potentially Out of Sync</div><sync-resolution-menu close-function="ctrl.toggleSyncResolutionMenu()" ng-click="$event.stopPropagation();" ng-if="ctrl.showSyncResolution" application="ctrl.application"></sync-resolution-menu></div><div class="sk-app-bar-item" ng-if="ctrl.lastSyncDate && ctrl.isRefreshing"><div class="sk-spinner small"></div></div><div class="sk-app-bar-item" ng-if="ctrl.offline"><div class="sk-label">Offline</div></div><div class="sk-app-bar-item" ng-click="ctrl.refreshData()" ng-if="!ctrl.offline"><div class="sk-label">Refresh</div></div><div class="sk-app-bar-item border" ng-if="ctrl.dockShortcuts.length > 0"></div><div class="sk-app-bar-item dock-shortcut" ng-repeat="shortcut in ctrl.dockShortcuts"><div class="sk-app-bar-item-column" ng-class="{\'underline\': shortcut.component.active}" ng-click="ctrl.selectShortcut(shortcut)"><div class="div" ng-if="shortcut.icon.type == \'circle\'" title="{{shortcut.name}}"><div class="sk-circle small" ng-style="{\'background-color\': shortcut.icon.background_color, \'border-color\': shortcut.icon.border_color}"></div></div><div class="div" ng-if="shortcut.icon.type == \'svg\'" title="{{shortcut.name}}"><div class="svg-item" elem-ready="ctrl.initSvgForShortcut(shortcut)" ng-attr-id="dock-svg-{{shortcut.component.uuid}}"></div></div></div></div><div class="sk-app-bar-item border" ng-if="ctrl.state.hasPasscode"></div><div class="sk-app-bar-item" id="lock-item" ng-click="ctrl.lockApp()" ng-if="ctrl.state.hasPasscode" title="Locks application and wipes unencrypted data from memory."><div class="sk-label"><i class="icon ion-locked" id="footer-lock-icon"></i></div></div></div></div></div>'}},function(e,t,n){n(4);e.exports=function(e){var t="";return t+='<div class="sn-component section notes" id="notes-column" aria-label="Notes"><div class="content"><div class="section-title-bar" id="notes-title-bar"><div class="padded"><div class="section-title-bar-header"><div class="title">{{self.state.panelTitle}}</div><div class="sk-button contrast wide" ng-click="self.createNewNote()" title="Create a new note in the selected tag"><div class="sk-label"><i class="icon ion-plus add-button"></i></div></div></div><div class="filter-section" role="search"><input class="filter-bar" id="search-bar" ng-blur="self.onFilterEnter()" ng-change="self.filterTextChanged()" ng-keyup="$event.keyCode == 13 && self.onFilterEnter();" ng-model="self.state.noteFilter.text" placeholder="Search" select-on-focus="true" title="Searches notes in the currently selected tag"><div id="search-clear-button" ng-click="self.clearFilterText();" ng-show="self.state.noteFilter.text">✕</div></div></div><div class="sn-component" id="notes-menu-bar"><div class="sk-app-bar no-edges"><div class="left"><div class="sk-app-bar-item" ng-class="{\'selected\' : self.state.mutable.showMenu}" ng-click="self.state.mutable.showMenu = !self.state.mutable.showMenu"><div class="sk-app-bar-item-column"><div class="sk-label">Options</div></div><div class="sk-app-bar-item-column"><div class="sk-sublabel">{{self.optionsSubtitle()}}</div></div></div><div class="sk-menu-panel dropdown-menu" id="notes-options-menu" ng-show="self.state.mutable.showMenu"><div class="sk-menu-panel-header"><div class="sk-menu-panel-header-title">Sort By</div><a class="info sk-h5" ng-click="self.toggleReverseSort()">{{self.state.sortReverse === true ? \'Disable Reverse Sort\' : \'Enable Reverse Sort\'}}</a></div><menu-row action="self.selectedMenuItem(); self.selectedSortByCreated()" circle="self.state.sortBy == \'created_at\' && \'success\'" desc="\'Sort notes by newest first\'" label="\'Date Added\'"></menu-row><menu-row action="self.selectedMenuItem(); self.selectedSortByUpdated()" circle="self.state.sortBy == \'userModifiedDate\' && \'success\'" desc="\'Sort notes with the most recently updated first\'" label="\'Date Modified\'"></menu-row><menu-row action="self.selectedMenuItem(); self.selectedSortByTitle()" circle="self.state.sortBy == \'title\' && \'success\'" desc="\'Sort notes alphabetically by their title\'" label="\'Title\'"></menu-row><div class="sk-menu-panel-section"><div class="sk-menu-panel-header"><div class="sk-menu-panel-header-title">Display</div></div><menu-row action="self.selectedMenuItem(); self.toggleWebPrefKey(\'showArchived\')" circle="self.state.showArchived ? \'success\' : \'danger\'" desc="\'Archived notes are usually hidden.\n You can explicitly show them with this option.\'" faded="!self.state.showArchived" label="\'Archived Notes\'"></menu-row><menu-row action="self.selectedMenuItem(); self.toggleWebPrefKey(\'hidePinned\')" circle="self.state.hidePinned ? \'danger\' : \'success\'" desc="\'Pinned notes always appear on top. You can hide them temporarily\n with this option so you can focus on other notes in the list.\'" faded="self.state.hidePinned" label="\'Pinned Notes\'"></menu-row><menu-row action="self.selectedMenuItem(); self.toggleWebPrefKey(\'hideNotePreview\')" circle="self.state.hideNotePreview ? \'danger\' : \'success\'" desc="\'Hide the note preview for a more condensed list of notes\'" faded="self.state.hideNotePreview" label="\'Note Preview\'"></menu-row><menu-row action="self.selectedMenuItem(); self.toggleWebPrefKey(\'hideDate\')" circle="self.state.hideDate ? \'danger\' : \'success\'" desc="\'Hide the date displayed in each row\'" faded="self.state.hideDate" label="\'Date\'"></menu-row></div></div></div></div></div></div><div class="scrollable"><div class="infinite-scroll" id="notes-scrollable" can-load="true" infinite-scroll="self.paginate()" threshold="200"><div class="note" ng-repeat="note in self.state.renderedNotes track by note.uuid" ng-class="{\'selected\' : self.activeEditorNote.uuid == note.uuid}" ng-click="self.selectNote(note)"><div class="note-flags" ng-show="self.noteFlags[note.uuid].length > 0"><div class="flag" ng-class="flag.class" ng-repeat="flag in self.noteFlags[note.uuid]"><div class="label">{{flag.text}}</div></div></div><div class="name" ng-show="note.title">{{note.title}}</div><div class="note-preview" ng-if="\n !self.state.hideNotePreview &&\n !note.hidePreview &&\n !note.protected"><div class="html-preview" ng-bind-html="note.preview_html" ng-show="note.preview_html"></div><div class="plain-preview" ng-show="!note.preview_html && note.preview_plain">{{note.preview_plain}}</div><div class="default-preview" ng-show="!note.preview_html && !note.preview_plain">{{note.text}}</div></div><div class="date faded" ng-show="!self.state.hideDate"><span ng-show="self.state.sortBy == \'userModifiedDate\'">Modified {{note.updatedAtString || \'Now\'}}</span><span ng-show="self.state.sortBy != \'userModifiedDate\'">{{note.createdAtString || \'Now\'}}</span></div></div></div></div></div><panel-resizer collapsable="true" control="self.panelPuppet" default-width="300" hoverable="true" on-resize-finish="self.onPanelResize" panel-id="\'notes-column\'"></panel-resizer></div>'}},function(e,t,n){n(4);e.exports=function(e){var t="";return t+='<div class="sn-component section tags" id="tags-column" aria-label="Tags"><div class="component-view-container" ng-if="self.component.active"><component-view class="component-view" component-uuid="self.component.uuid" application="self.application"></component-view></div><div class="content" id="tags-content" ng-if="!(self.component && self.component.active)"><div class="tags-title-section section-title-bar"><div class="section-title-bar-header"><div class="sk-h3 title"><span class="sk-bold">Views</span></div><div class="sk-button sk-secondary-contrast wide" ng-click="self.clickedAddNewTag()" title="Create a new tag"><div class="sk-label"><i class="icon ion-plus add-button"></i></div></div></div></div><div class="scrollable"><div class="infinite-scroll"><div class="tag" ng-class="{\'selected\' : self.state.selectedTag == tag, \'faded\' : !tag.isAllTag}" ng-click="self.selectTag(tag)" ng-repeat="tag in self.state.smartTags track by tag.uuid"><div class="tag-info"><input class="title" ng-disabled="true" ng-change="self.onTagTitleChange(tag)" ng-model="tag.title"><div class="count" ng-show="tag.isAllTag">{{self.state.noteCounts[tag.uuid]}}</div></div></div><div class="tags-title-section section-title-bar"><div class="section-title-bar-header"><div class="sk-h3 title"><span class="sk-bold">Tags</span></div></div></div><div class="tag" ng-class="{\'selected\' : self.state.selectedTag == tag}" ng-click="self.selectTag(tag)" ng-repeat="tag in self.state.tags track by tag.uuid"><div class="tag-info"><div class="tag-icon">#</div><input class="title" ng-attr-id="tag-{{tag.uuid}}" ng-blur="self.saveTag($event, tag)" ng-change="self.onTagTitleChange(tag)" ng-model="self.titles[tag.uuid]" ng-class="{\'editing\' : self.state.editingTag == tag}" ng-click="self.selectTag(tag)" ng-keyup="$event.keyCode == 13 && $event.target.blur()" should-focus="self.state.templateTag || self.state.editingTag == tag" sn-autofocus="true" spellcheck="false"><div class="count">{{self.state.noteCounts[tag.uuid]}}</div></div><div class="danger small-text bold" ng-show="tag.conflictOf">Conflicted Copy</div><div class="danger small-text bold" ng-show="tag.errorDecrypting && !tag.waitingForKey">Missing Keys</div><div class="info small-text bold" ng-show="tag.errorDecrypting && tag.waitingForKey">Waiting For Keys</div><div class="menu" ng-show="self.state.selectedTag == tag"><a class="item" ng-click="self.selectedRenameTag(tag)" ng-show="!self.state.editingTag">Rename</a><a class="item" ng-click="self.saveTag($event, tag)" ng-show="self.state.editingTag">Save</a><a class="item" ng-click="self.selectedDeleteTag(tag)">Delete</a></div></div><div class="no-tags-placeholder" ng-show="self.state.tags.length == 0">No tags. Create one using the add button above.</div></div></div></div><panel-resizer collapsable="true" control="self.panelPuppet" default-width="150" hoverable="true" on-resize-finish="self.onPanelResize" panel-id="\'tags-column\'"></panel-resizer></div>'}},function(e,t,n){n(4);e.exports=function(e){var t="";return t+='<div class="sk-modal-background" ng-click="ctrl.cancel()"></div><div class="sk-modal-content" id="privileges-modal"><div class="sn-component"><div class="sk-panel"><div class="sk-panel-header"><div class="sk-panel-header-title">{{ctrl.title}}</div></div><div class="sk-panel-content"><div class="sk-panel-section"><div ng-repeat="type in ctrl.state.types"><div class="sk-p sk-bold sk-panel-row centered"><strong>{{ctrl.promptForChallenge(type)}}</strong></div><div class="sk-panel-row"><input class="sk-input contrast" ng-model="ctrl.state.values[type].value" should-focus="$index == 0" sn-autofocus="true" sn-enter="ctrl.submit()" ng-change="ctrl.onTextValueChange(type)" type="password"></div><div class="sk-panel-row centered"><label class="sk-label danger" ng-if="ctrl.state.values[type].invalid">Invalid authentication. Please try again.</label></div></div></div></div><div class="sk-panel-footer extra-padding"><div class="sk-button info big block bold" ng-click="ctrl.submit()" ng-class="{\'info\' : !ctrl.state.processing, \'neutral\': ctrl.state.processing}" ng-disabled="ctrl.state.processing"><div class="sk-label">{{ctrl.state.processing ? \'Generating Keys...\' : \'Submit\'}}</div></div><div class="sk-panel-row" ng-if="ctrl.cancelable"></div><a class="sk-panel-row sk-a info centered" ng-if="ctrl.cancelable" ng-click="ctrl.cancel()">Cancel</a></div><div class="sk-panel-footer" ng-if="ctrl.state.showForgotPasscodeLink"><a class="sk-panel-row sk-a info centered" ng-if="!ctrl.state.forgotPasscode" ng-click="ctrl.onForgotPasscodeClick()">Forgot your passcode?</a><p class="sk-panel-row sk-p" ng-if="ctrl.state.forgotPasscode">{{\n ctrl.state.hasAccount\n ? "If you forgot your local passcode, your only option is to clear\n your local data from this device and sign back in to your account."\n : "If you forgot your local passcode, your only option is\n to delete your data."\n}}</p><a class="sk-panel-row sk-a danger centered" ng-if="ctrl.state.forgotPasscode" ng-click="ctrl.destroyLocalData()">Delete Local Data</a><div class="sk-panel-row"></div></div></div></div></div>'}},function(e,t,n){n(4);e.exports=function(e){var t="";return t+='<div class="sn-component"><div class="sk-panel" id="account-panel"><div class="sk-panel-header"><div class="sk-panel-header-title">Account</div><a class="sk-a info close-button" ng-click="self.close()">Close</a></div><div class="sk-panel-content"><div class="sk-panel-section sk-panel-hero" ng-if="\n !self.state.user && \n !self.state.formData.showLogin && \n !self.state.formData.showRegister && \n !self.state.formData.mfa"><div class="sk-panel-row"><div class="sk-h1">Sign in or register to enable sync and end-to-end encryption.</div></div><div class="sk-panel-row"><div class="sk-button-group stretch"><div class="sk-button info featured" ng-click="self.state.formData.showLogin = true"><div class="sk-label">Sign In</div></div><div class="sk-button info featured" ng-click="self.state.formData.showRegister = true"><div class="sk-label">Register</div></div></div></div><div class="sk-panel-row sk-p">Standard Notes is free on every platform, and comes \nstandard with sync and encryption.</div></div><div class="sk-panel-section" ng-if="\n self.state.formData.showLogin || \n self.state.formData.showRegister"><div class="sk-panel-section-title">{{self.state.formData.showLogin ? "Sign In" : "Register"}}</div><form class="sk-panel-form" ng-submit="self.submitAuthForm()"><div class="sk-panel-section"><input class="sk-input contrast" name="email" ng-model="self.state.formData.email" ng-model-options="{allowInvalid: true}" placeholder="Email" required="" should-focus="true" sn-autofocus="true" spellcheck="false" type="email"><input class="sk-input contrast" name="password" ng-model="self.state.formData.user_password" placeholder="Password" required="" sn-enter="self.submitAuthForm()" type="password"><input class="sk-input contrast" name="password_conf" ng-if="self.state.formData.showRegister" ng-model="self.state.formData.password_conf" placeholder="Confirm Password" required="" sn-enter="self.submitAuthForm()" type="password"><div class="sk-panel-row"></div><a class="sk-panel-row sk-bold" ng-click="\n self.state.formData.showAdvanced = !self.state.formData.showAdvanced\n ">Advanced Options</a></div><div class="sk-notification unpadded contrast advanced-options sk-panel-row" ng-if="self.state.formData.showAdvanced"><div class="sk-panel-column stretch"><div class="sk-notification-title sk-panel-row padded-row">Advanced Options</div><div class="bordered-row padded-row"><label class="sk-label">Sync Server Domain</label><input class="sk-input mt-5 sk-base" name="server" ng-model="self.state.formData.url" ng-change="self.onHostInputChange()" placeholder="Server URL" required="" type="text"></div><label class="sk-label padded-row sk-panel-row justify-left" ng-if="self.state.formData.showLogin"><div class="sk-horizontal-group tight"><input class="sk-input" ng-model="self.state.formData.strictSignin" type="checkbox"><p class="sk-p">Use strict sign in</p><span><a class="info" href="https://standardnotes.org/help/security" rel="noopener" target="_blank">(Learn more)</a></span></div></label></div></div><div class="sk-panel-section form-submit" ng-if="!self.state.formData.authenticating"><div class="sk-button-group stretch"><div class="sk-button info featured" ng-click="self.submitAuthForm()" ng-disabled="self.state.formData.authenticating"><div class="sk-label">{{self.state.formData.showLogin ? "Sign In" : "Register"}}</div></div></div></div><div class="sk-notification neutral" ng-if="self.state.formData.showRegister"><div class="sk-notification-title">No Password Reset.</div><div class="sk-notification-text">Because your notes are encrypted using your password, \nStandard Notes does not have a password reset option. \nYou cannot forget your password.</div></div><div class="sk-panel-section no-bottom-pad" ng-if="self.state.formData.status"><div class="sk-horizontal-group"><div class="sk-spinner small neutral"></div><div class="sk-label">{{self.state.formData.status}}</div></div></div><div class="sk-panel-section no-bottom-pad" ng-if="!self.state.formData.authenticating"><label class="sk-panel-row justify-left"><div class="sk-horizontal-group tight"><input ng-false-value="true" ng-model="self.state.formData.ephemeral" ng-true-value="false" type="checkbox"><p class="sk-p">Stay signed in</p></div></label><label class="sk-panel-row justify-left" ng-if="self.notesAndTagsCount() > 0"><div class="sk-horizontal-group tight"><input ng-bind="true" ng-change="self.mergeLocalChanged()" ng-model="self.state.formData.mergeLocal" type="checkbox"><p class="sk-p">Merge local data ({{self.notesAndTagsCount()}} notes and tags)</p></div></label></div></form></div><div class="sk-panel-section" ng-if="self.state.formData.mfa"><form class="sk-panel-form" ng-submit="self.submitMfaForm()"><div class="sk-p sk-panel-row">{{self.state.formData.mfa.message}}</div><div class="sk-panel-row"><input class="sk-input contrast" autofocus="true" name="mfa" ng-model="self.state.formData.userMfaCode" placeholder="Enter Code" required="" should-focus="true" sn-autofocus="true"></div><div class="sk-button-group stretch sk-panel-row form-submit" ng-if="!self.state.formData.status"><button class="sk-button info featured" type="submit"><div class="sk-label">Sign In</div></button></div></form><div class="sk-panel-section no-bottom-pad" ng-if="self.state.formData.status"><div class="sk-panel-row"></div><div class="sk-panel-row"></div><div class="sk-horizontal-group"><div class="sk-spinner small neutral"></div><div class="sk-label">{{self.state.formData.status}}</div></div></div></div><div ng-if="\n !self.state.formData.showLogin && \n !self.state.formData.showRegister && \n !self.state.formData.mfa"><div class="sk-panel-section" ng-if="self.state.user"><div class="sk-notification danger" ng-if="self.syncStatus.error"><div class="sk-notification-title">Sync Unreachable</div><div class="sk-notification-text">Hmm...we can\'t seem to sync your account. \nThe reason: {{self.syncStatus.error.message}}</div><a class="sk-a info-contrast sk-bold sk-panel-row" href="https://standardnotes.org/help" rel="noopener" target="_blank">Need help?</a></div><div class="sk-panel-row"><div class="sk-panel-column"><div class="sk-h1 sk-bold wrap">{{self.state.user.email}}</div><div class="sk-subtitle subtle normal">{{self.state.server}}</div></div><div class="sk-horizontal-group" delay="1000" delay-hide="true" show="self.syncStatus.syncOpInProgress || self.syncStatus.needsMoreSync"><div class="sk-spinner small info"></div><div class="sk-sublabel">{{"Syncing" + (self.syncStatus.total > 0 ? ":" : "")}}<span ng-if="self.syncStatus.total > 0">{{self.syncStatus.current}}/{{self.syncStatus.total}}</span></div></div></div><div class="sk-panel-row"></div><a class="sk-a info sk-panel-row condensed" ng-click="self.openPasswordWizard()">Change Password</a><a class="sk-a info sk-panel-row condensed" ng-click="self.openPrivilegesModal(\'\')" ng-show="self.state.user">Manage Privileges</a></div><div class="sk-panel-section"><div class="sk-panel-section-title">Encryption</div><div class="sk-panel-section-subtitle info" ng-if="self.state.encryptionEnabled">{{self.encryptionStatusForNotes()}}</div><p class="sk-p">{{self.state.encryptionStatusString}}</p></div><div class="sk-panel-section"><div class="sk-panel-section-title">Passcode Lock</div><div ng-if="!self.state.hasPasscode"><div ng-if="self.state.canAddPasscode"><div class="sk-panel-row" ng-if="!self.state.formData.showPasscodeForm"><div class="sk-button info" ng-click="self.addPasscodeClicked(); $event.stopPropagation();"><div class="sk-label">Add Passcode</div></div></div><p class="sk-p"> Add a passcode to lock the application and \nencrypt on-device key storage.</p></div><div ng-if="!self.state.canAddPasscode"><p class="sk-p">Adding a passcode is not supported in temporary sessions. Please sign \nout, then sign back in with the "Stay signed in" option checked.</p></div></div><form class="sk-panel-form" ng-if="self.state.formData.showPasscodeForm" ng-submit="self.submitPasscodeForm()"><div class="sk-panel-row"></div><input class="sk-input contrast" ng-model="self.state.formData.passcode" placeholder="Passcode" should-focus="true" sn-autofocus="true" type="password"><input class="sk-input contrast" ng-model="self.state.formData.confirmPasscode" placeholder="Confirm Passcode" type="password"><div class="sk-button-group stretch sk-panel-row form-submit"><button class="sk-button info" type="submit"><div class="sk-label">Set Passcode</div></button></div><a class="neutral sk-a sk-panel-row" ng-click="self.state.formData.showPasscodeForm = false">Cancel</a></form><div ng-if="self.state.hasPasscode && !self.state.formData.showPasscodeForm"><div class="sk-p">Passcode lock is enabled.</div><div class="sk-notification contrast"><div class="sk-notification-title">Options</div><div class="sk-notification-text"><div class="sk-panel-row"><div class="sk-horizontal-group"><div class="sk-h4 sk-bold">Autolock</div><a class="sk-a info" ng-class="{\n \'boxed\' : option.value == self.state.selectedAutoLockInterval\n }" ng-click="self.selectAutoLockInterval(option.value)" ng-repeat="option in self.state.passcodeAutoLockOptions">{{option.label}}</a></div></div><div class="sk-p">The autolock timer begins when the window or tab loses focus.</div><div class="sk-panel-row"></div><a class="sk-a info sk-panel-row condensed" ng-click="self.openPrivilegesModal(\'\')" ng-show="!self.state.user">Manage Privileges</a><a class="sk-a info sk-panel-row condensed" ng-click="self.changePasscodePressed()">Change Passcode</a><a class="sk-a danger sk-panel-row condensed" ng-click="self.removePasscodePressed()">Remove Passcode</a></div></div></div></div><div class="sk-panel-section" ng-if="!self.state.importData.loading"><div class="sk-panel-section-title">Data Backups</div><div class="sk-p">Download a backup of all your data.</div><div class="sk-panel-row"></div><form class="sk-panel-form sk-panel-row" ng-if="self.state.encryptionEnabled"><div class="sk-input-group"><label class="sk-horizontal-group tight"><input ng-change="self.state.mutable.backupEncrypted = true" ng-model="self.state.mutable.backupEncrypted" ng-value="true" type="radio"><p class="sk-p">Encrypted</p></label><label class="sk-horizontal-group tight"><input ng-change="self.state.mutable.backupEncrypted = false" ng-model="self.state.mutable.backupEncrypted" ng-value="false" type="radio"><p class="sk-p">Decrypted</p></label></div></form><div class="sk-panel-row"></div><div class="sk-button-group sk-panel-row justify-left"><div class="sk-button info" ng-click="self.downloadDataArchive()"><div class="sk-label">Download Backup</div></div><label class="sk-button info"><input file-change="->" handler="self.importFileSelected(files)" style="display: none;" type="file"><div class="sk-label">Import Backup</div></label></div><span ng-if="self.isDesktopApplication()">Backups are automatically created on desktop and can be managed \nvia the "Backups" top-level menu.</span><div id="import-password-request" ng-if="self.state.importData.requestPassword"><form class="sk-panel-form stretch" ng-submit="self.submitImportPassword()"><p>Enter the account password associated with the import file.</p><input class="sk-input contrast mt-5" autofocus="true" ng-model="self.state.importData.password" placeholder="Enter File Account Password" type="password"><div class="sk-button-group stretch sk-panel-row form-submit"><button class="sk-button info" type="submit"><div class="sk-label">Decrypt & Import</div></button></div><p>Importing from backup will not overwrite existing data, \nbut instead create a duplicate of any differing data.</p><p>If you\'d like to import only a selection of items instead of \nthe whole file, please use the Batch Manager extension.</p></form></div><div class="sk-panel-row"><div class="sk-spinner small info" ng-if="self.state.importData.loading"></div></div></div></div></div><div class="sk-panel-footer"><div class="sk-panel-row"><div class="sk-p left neutral faded">{{self.state.appVersion}}</div><a class="sk-a right" ng-click="self.hidePasswordForm()" ng-if="self.state.formData.showLogin || self.state.formData.showRegister">Cancel</a><a class="sk-a right danger" ng-click="self.destroyLocalData()" ng-if="\n !self.state.formData.showLogin && \n !self.state.formData.showRegister">{{ self.state.user ? "Sign out and clear local data" : "Clear all local data" }}</a></div></div></div></div>'}},function(e,t,n){n(4);e.exports=function(e){var t="";return t+='<div class="sn-component"><div class="sk-menu-panel dropdown-menu"><a class="no-decoration" href="https://standardnotes.org/extensions" ng-if="self.state.extensions.length == 0" rel="noopener" target="blank"><menu-row label="\'Download Actions\'"></menu-row></a><div ng-if="self.loadingExtensions"><div class="sk-menu-panel-header"><div class="sk-menu-panel-column"><div class="sk-menu-panel-header-title">Loading...</div><div class="sk-spinner small loading"></div></div></div></div><div ng-repeat="extension in self.state.extensions track by extension.uuid; self.loadingExtensions = false"><div class="sk-menu-panel-header" ng-click="self.updateExtension(extension, { hidden: !extension.hidden }); $event.stopPropagation();"><div class="sk-menu-panel-column"><div class="sk-menu-panel-header-title">{{extension.name}}</div><div ng-if="extension.hidden">…</div></div></div><menu-row action="self.executeAction(action, extension)" label="action.label" ng-if="!extension.hidden" ng-repeat="action in extension.actionsWithContextForItem(self.props.item) track by $index" disabled="action.running" spinner-class="action.running ? \'info\' : null" sub-rows="action.subrows" subtitle="action.desc"><div class="sk-sublabel" ng-if="action.access_type">Uses <strong>{{action.access_type}}</strong> access to this note.</div></menu-row><menu-row faded="true" label="\'No Actions Available\'" ng-if="extension.actionsWithContextForItem(self.props.item).length == 0"></menu-row></div></div></div>'}},function(e,t,n){n(4);e.exports=function(e){var t="";return t+='<div class="sk-modal-background" ng-click="ctrl.dismiss()"></div><div class="sk-modal-content" ng-attr-id="component-content-outer-{{ctrl.component.uuid}}"><div class="sn-component"><div class="sk-panel" ng-attr-id="component-content-inner-{{ctrl.component.uuid}}"><div class="sk-panel-header"><div class="sk-panel-header-title">{{ctrl.component.name}}</div><a class="sk-a info close-button" ng-click="ctrl.dismiss()">Close</a></div><component-view class="component-view" ng-if="ctrl.component.active" component-uuid="ctrl.component.uuid" application="ctrl.application"></component-view></div></div></div>'}},function(e,t,n){n(4);e.exports=function(e){var t="";return t+='<div class="sn-component" ng-if="ctrl.issueLoading"><div class="sk-app-bar no-edges no-top-edge dynamic-height"><div class="left"><div class="sk-app-bar-item"><div class="sk-label warning">There was an issue loading {{ctrl.component.name}}.</div></div></div><div class="right"><div class="sk-app-bar-item" ng-click="ctrl.reloadIframe()"><div class="sk-button info"><div class="sk-label">Reload</div></div></div></div></div></div><div class="sn-component" ng-if="ctrl.expired"><div class="sk-app-bar no-edges no-top-edge dynamic-height"><div class="left"><div class="sk-app-bar-item"><div class="sk-app-bar-item-column"><div class="sk-circle danger small"></div></div><div class="sk-app-bar-item-column"><div><a class="sk-label sk-base" href="https://dashboard.standardnotes.org" rel="noopener" target="_blank">Your Extended subscription expired on \n{{ctrl.component.dateToLocalizedString(ctrl.component.valid_until)}}.</a><div class="sk-p">Extensions are in a read-only state.</div></div></div></div></div><div class="right"><div class="sk-app-bar-item" ng-click="ctrl.reloadComponent()"><div class="sk-button info"><div class="sk-label">Reload</div></div></div><div class="sk-app-bar-item"><div class="sk-app-bar-item-column"><div class="sk-button warning"><a class="sk-label" href="https://standardnotes.org/help/41/expired" rel="noopener" target="_blank">Help</a></div></div></div></div></div></div><div class="sn-component" ng-if="ctrl.error == \'offline-restricted\'"><div class="sk-panel static"><div class="sk-panel-content"><div class="sk-panel-section stretch"><div class="sk-panel-column"></div><div class="sk-h1 sk-bold">You have restricted this extension to be used offline only.</div><div class="sk-subtitle">Offline extensions are not available in the Web app.</div><div class="sk-panel-row"></div><div class="sk-panel-row"><div class="sk-panel-column"><div class="sk-p">You can either:</div><ul><li class="sk-p"><strong>Enable the Hosted option</strong> for this extension by opening the \'Extensions\' menu and \ntoggling \'Use hosted when local is unavailable\' under this \nextension\'s options. Then press Reload below.</li><li class="sk-p"><strong>Use the Desktop application.</strong></li></ul></div></div><div class="sk-panel-row"><div class="sk-button info" ng-click="ctrl.reloadStatus()" ng-if="!ctrl.reloading"><div class="sk-label">Reload</div></div><div class="sk-spinner info small" ng-if="ctrl.reloading"></div></div></div></div></div></div><div class="sn-component" ng-if="ctrl.error == \'url-missing\'"><div class="sk-panel static"><div class="sk-panel-content"><div class="sk-panel-section stretch"><div class="sk-panel-section-title">This extension is not installed correctly.</div><p>Please uninstall {{ctrl.component.name}}, then re-install it.</p><p>This issue can occur if you access Standard Notes using an older \nversion of the app.\nEnsure you are running at least version 2.1 on all platforms.</p></div></div></div></div><iframe data-component-id="{{ctrl.componentUuid}}" frameborder="0" ng-init="ctrl.onIframeInit()" ng-attr-id="component-iframe-{{ctrl.componentUuid}}" ng-if="ctrl.componentUuid && !ctrl.reloading && ctrl.componentValid" ng-src="{{ctrl.getUrl() | trusted}}" sandbox="allow-scripts allow-top-navigation-by-user-activation allow-popups allow-popups-to-escape-sandbox allow-same-origin allow-modals allow-forms allow-downloads">Loading</iframe><div class="loading-overlay" ng-if="ctrl.loading"></div>'}},function(e,t,n){n(4);e.exports=function(e){var t="";return t+='<div class="sn-component"><div class="sk-menu-panel dropdown-menu"><div class="sk-menu-panel-section"><div class="sk-menu-panel-header"><div class="sk-menu-panel-header-title">Note Editor</div></div><menu-row action="self.selectComponent(null)" circle="!self.selectedEditorUuid && \'success\'" label="\'Plain Editor\'"></menu-row><menu-row ng-repeat="editor in self.state.editors track by editor.uuid" action="self.selectComponent(editor)" button-action="self.toggleDefaultForEditor(editor)" button-class="self.isEditorSelected(editor) ? \'warning\' : \'info\'" button-text="self.isEditorDefault(editor) ? \'Undefault\' : \'Set Default\'" circle="self.isEditorSelected(editor) && \'success\'" has-button="self.isEditorSelected(editor) || isEditorDefault(editor)" label="editor.name"><div class="sk-menu-panel-column" ng-if="editor.conflictOf"><div class="info" ng-if="editor.conflictOf">Conflicted copy</div></div></menu-row><a class="no-decoration" href="https://standardnotes.org/extensions" ng-if="self.state.editors.length == 0" rel="noopener" target="blank"><menu-row label="\'Download More Editors\'"></menu-row></a></div></div></div>'}},function(e,t,n){n(4);e.exports=function(e){var t="";return t+='<div class="sn-component"><div class="sk-modal small auto-height"><div class="sk-modal-background"></div><div class="sk-modal-content"><div class="sn-component"><div class="sk-panel"><div class="sk-panel-header"><div class="sk-h1 sk-panel-header-title">{{ctrl.title}}</div><a class="sk-a info close-button" ng-click="ctrl.dismiss()">Close</a></div><div class="sk-panel-content"><div class="sk-panel-section"><div class="sk-p sk-panel-row">{{ctrl.message}}</div><div class="sk-panel-row"><div class="sk-panel-column stretch"><form ng-submit="ctrl.submit()"><input class="sk-input contrast" ng-model="ctrl.formData.input" should-focus="true" sn-autofocus="true" type="{{ctrl.type}}"></form></div></div></div></div><div class="sk-panel-footer"><a class="sk-a info right" ng-click="ctrl.submit()">Submit</a></div></div></div></div></div></div>'}},function(e,t,n){n(4);e.exports=function(e){var t="";return t+='<div class="sk-menu-panel-row row" ng-attr-title="{{ctrl.desc}}" ng-click="ctrl.onClick($event)"><div class="sk-menu-panel-column"><div class="left"><div class="sk-menu-panel-column" ng-if="\n ctrl.circle && \n (!ctrl.circleAlign || ctrl.circleAlign == \'left\')\n "><div class="sk-circle small" ng-class="ctrl.circle"></div></div><div class="sk-menu-panel-column" ng-class="{\'faded\' : ctrl.faded || ctrl.disabled}"><div class="sk-label" ng-class="ctrl.stylekitClass">{{ctrl.label}}</div><div class="sk-sublabel" ng-if="ctrl.subtitle">{{ctrl.subtitle}}</div><ng-transclude></ng-transclude></div></div><div class="sk-menu-panel-subrows" ng-if="ctrl.subRows && ctrl.subRows.length > 0"><menu-row ng-repeat="row in ctrl.subRows" action="row.onClick()" label="row.label" spinner-class="row.spinnerClass" subtitle="row.subtitle"></menu-row></div></div><div class="sk-menu-panel-column" ng-if="ctrl.circle && ctrl.circleAlign == \'right\'"><div class="sk-circle small" ng-class="ctrl.circle"></div></div><div class="sk-menu-panel-column" ng-if="ctrl.hasButton"><div class="sk-button" ng-class="ctrl.buttonClass" ng-click="ctrl.clickAccessoryButton($event)"><div class="sk-label">{{ctrl.buttonText}}</div></div></div><div class="sk-menu-panel-column" ng-if="ctrl.spinnerClass"><div class="sk-spinner small" ng-class="ctrl.spinnerClass"></div></div></div>'}},function(e,t,n){n(4);e.exports=function(e){var t="";return t+='<div class="panel-resizer-column"></div>'}},function(e,t,n){n(4);e.exports=function(e){var t="";return t+='<div class="sn-component"><div class="sk-modal small auto-height" id="password-wizard"><div class="sk-modal-background"></div><div class="sk-modal-content"><div class="sn-component"><div class="sk-panel"><div class="sk-panel-header"><div class="sk-panel-header-title">{{ctrl.state.title}}</div><a class="sk-a info close-button" ng-click="ctrl.dismiss()">Close</a></div><div class="sk-panel-content"><div class="sk-panel-section" ng-if="ctrl.state.step == 1"><div class="sk-panel-row"><div class="sk-panel-column stretch"><form class="sk-panel-form"><input class="sk-input contrast" ng-model="ctrl.state.formData.currentPassword" placeholder="Current Password" should-focus="true" sn-autofocus="true" type="password"><input class="sk-input contrast" ng-if="ctrl.props.changePassword" ng-model="ctrl.state.formData.newPassword" placeholder="New Password" type="password"><input class="sk-input contrast" ng-if="ctrl.props.changePassword" ng-model="ctrl.state.formData.newPasswordConfirmation" placeholder="Confirm New Password" type="password"></form></div></div></div><div class="sk-panel-section" ng-if="ctrl.state.step == 2"><div ng-if="ctrl.props.changePassword"><p class="sk-p sk-panel-row info-i">Your password has been successfully changed.</p></div><div ng-if="ctrl.props.securityUpdate"><p class="sk-p sk-panel-row info-i">The account update has been successfully applied to your account.</p></div><p class="sk-p sk-panel-row">Please ensure you are running the latest version of Standard Notes \non all platforms to ensure maximum compatibility.</p></div></div><div class="sk-panel-footer"><div class="empty"></div><a class="sk-a info right" ng-click="ctrl.nextStep()" ng-disabled="ctrl.state.lockContinue"><div class="sk-spinner small inline info mr-5" ng-if="ctrl.state.showSpinner"></div>{{ctrl.state.continueTitle}}</a></div></div></div></div></div></div>'}},function(e,t,n){n(4);e.exports=function(e){var t="";return t+='<div class="sk-modal-background" ng-click="ctrl.deny()"></div><div class="sk-modal-content" id="permissions-modal"><div class="sn-component"><div class="sk-panel"><div class="sk-panel-header"><div class="sk-panel-header-title">Activate Extension</div><a class="sk-a info close-button" ng-click="ctrl.deny()">Cancel</a></div><div class="sk-panel-content"><div class="sk-panel-section"><div class="sk-panel-row"><div class="sk-h2"><strong>{{ctrl.component.name}}</strong> would like to interact with your\n {{ctrl.permissionsString}}</div></div><div class="sk-panel-row"><p class="sk-p">Extensions use an offline messaging system to communicate. Learn more at <a class="sk-a info" href="https://standardnotes.org/permissions" rel="noopener" target="_blank">https://standardnotes.org/permissions.</a></p></div></div></div><div class="sk-panel-footer"><div class="sk-button info big block bold" ng-click="ctrl.accept()"><div class="sk-label">Continue</div></div></div></div></div></div>'}},function(e,t,n){n(4);e.exports=function(e){var t="";return t+='<div class="sk-modal-background" ng-click="ctrl.cancel()"></div><div class="sk-modal-content" id="privileges-modal"><div class="sn-component"><div class="sk-panel"><div class="sk-panel-header"><div class="sk-panel-header-title">Authentication Required</div><a class="close-button info" ng-click="ctrl.cancel()">Cancel</a></div><div class="sk-panel-content"><div class="sk-panel-section"><div ng-repeat="credential in ctrl.requiredCredentials"><div class="sk-p sk-bold sk-panel-row"><strong>{{ctrl.promptForCredential(credential)}}</strong></div><div class="sk-panel-row"><input class="sk-input contrast" ng-model="ctrl.authParameters[credential]" should-focus="$index == 0" sn-autofocus="true" sn-enter="ctrl.submit()" type="password"></div><div class="sk-panel-row"><label class="sk-label danger" ng-if="ctrl.isCredentialInFailureState(credential)">Invalid authentication. Please try again.</label></div></div><div class="sk-panel-row"></div><div class="sk-panel-row"><div class="sk-horizontal-group"><div class="sk-p sk-bold">Remember For</div><a class="sk-a info" ng-repeat="option in ctrl.sessionLengthOptions" ng-class="{\'boxed\' : option.value == ctrl.selectedSessionLength}" ng-click="ctrl.selectSessionLength(option.value)">{{option.label}}</a></div></div></div></div><div class="sk-panel-footer extra-padding"><div class="sk-button info big block bold" ng-click="ctrl.submit()"><div class="sk-label">Submit</div></div></div></div></div></div>'}},function(e,t,n){n(4);e.exports=function(e){var t="";return t+='<div class="sk-modal-background" ng-click="ctrl.cancel()"></div><div class="sk-modal-content" id="privileges-modal"><div class="sn-component"><div class="sk-panel"><div class="sk-panel-header"><div class="sk-panel-header-title">Manage Privileges</div><a class="sk-a close-button info" ng-click="ctrl.cancel()">Done</a></div><div class="sk-panel-content"><div class="sk-panel-section"><table class="sk-table"><thead><tr><th></th><th ng-repeat="cred in ctrl.availableCredentials"><div class="priv-header"><strong>{{ctrl.credentialDisplayInfo[cred].label}}</strong><div class="sk-p font-small" ng-show="!ctrl.credentialDisplayInfo[cred].availability" style="margin-top: 2px">Not Configured</div></div></th></tr></thead><tbody><tr ng-repeat="action in ctrl.availableActions"><td><div class="sk-p">{{ctrl.displayInfoForAction(action)}}</div></td><th ng-repeat="credential in ctrl.availableCredentials"><input ng-checked="ctrl.isCredentialRequiredForAction(action, credential)" ng-click="ctrl.checkboxValueChanged(action, credential)" ng-disabled="!ctrl.credentialDisplayInfo[credential].availability" type="checkbox"></th></tr></tbody></table></div><div class="sk-panel-section" ng-if="ctrl.sessionExpirey && !ctrl.sessionExpired"><div class="sk-p sk-panel-row"> You will not be asked to authenticate until {{ctrl.sessionExpirey}}.</div><a class="sk-a sk-panel-row info" ng-click="ctrl.clearSession()">Clear Session</a></div></div><div class="sk-panel-footer"><div class="sk-h2 sk-bold">About Privileges</div><div class="sk-panel-section no-bottom-pad"><div class="sk-panel-row"><div class="text-content"><div class="sk-p">Privileges represent interface level authentication for accessing \ncertain items and features. Note that when your application is unlocked,\nyour data exists in temporary memory in an unencrypted state.\nPrivileges are meant to protect against unwanted access in the event of\nan unlocked application, but do not affect data encryption state.</div><p class="sk-p">Privileges sync across your other devices; however, note that if you \nrequire an "Application Passcode" privilege, and another device does not have \nan application passcode set up, the application passcode requirement will be ignored \non that device.</p></div></div></div></div></div></div></div>'}},function(e,t,n){n(4);e.exports=function(e){var t="";return t+='<div class="sn-component"><div class="sk-modal medium" id="item-preview-modal"><div class="sk-modal-background"></div><div class="sk-modal-content"><div class="sn-component"><div class="sk-panel"><div class="sk-panel-header"><div class="sk-panel-header-title">Preview</div><div class="sk-horizontal-group"><a class="sk-a info close-button" ng-click="ctrl.restore(false)">Restore</a><a class="sk-a info close-button" ng-click="ctrl.restore(true)">Restore as copy</a><a class="sk-a info close-button" ng-click="ctrl.dismiss(); $event.stopPropagation()">Close</a></div></div><div class="sk-panel-content selectable" ng-if="!ctrl.editor"><div class="sk-h2">{{ctrl.content.title}}</div><p class="normal sk-p" style="white-space: pre-wrap; font-size: 16px;">{{ctrl.content.text}}</p></div><component-view class="component-view" component-uuid="ctrl.editor.uuid" ng-if="ctrl.editor" application="ctrl.application"></component-view></div></div></div></div></div>'}},function(e,t,n){n(4);e.exports=function(e){var t="";return t+='<div class="sn-component" id="session-history-menu"><div class="sk-menu-panel dropdown-menu"><div class="sk-menu-panel-header"><div class="sk-menu-panel-header-title">{{ctrl.history.entries.length || \'No\'}} revisions</div><a class="sk-a info sk-h5" ng-click="ctrl.showOptions = !ctrl.showOptions; $event.stopPropagation();">Options</a></div><div ng-if="ctrl.showOptions"><menu-row action="ctrl.clearItemHistory()" label="\'Clear note local history\'"></menu-row><menu-row action="ctrl.clearAllHistory()" label="\'Clear all local history\'"></menu-row><menu-row action="ctrl.toggleAutoOptimize()" label="(ctrl.autoOptimize ? \'Disable\' : \'Enable\') + \' auto cleanup\'"><div class="sk-sublabel">Automatically cleans up small revisions to conserve space.</div></menu-row><menu-row action="ctrl.toggleDiskSaving()" label="(ctrl.diskEnabled ? \'Disable\' : \'Enable\') + \' saving history to disk\'"><div class="sk-sublabel">Saving to disk is not recommended. Decreases performance and increases app \nloading time and memory footprint.</div></menu-row></div><menu-row ng-repeat="revision in ctrl.entries" action="ctrl.openRevision(revision);" label="revision.previewTitle()"><div class="sk-sublabel opaque" ng-class="ctrl.classForRevision(revision)">{{revision.previewSubTitle()}}</div></menu-row></div></div>'}},function(e,t,n){n(4);e.exports=function(e){var t="";return t+='<div class="sn-component"><div class="sk-panel sk-panel-right" id="sync-resolution-menu"><div class="sk-panel-header"><div class="sk-panel-header-title">Out of Sync</div><a class="sk-a info close-button" ng-click="ctrl.close()">Close</a></div><div class="sk-panel-content"><div class="sk-panel-section"><div class="sk-panel-row sk-p">We\'ve detected that the data on the server may not match \nthe data in the current application session.</div><div class="sk-p sk-panel-row"><div class="sk-panel-column"><strong class="sk-panel-row">Option 1 — Restart App:</strong><div class="sk-p"> Quit the application and re-open it. \nSometimes, this may resolve the issue.</div></div></div><div class="sk-p sk-panel-row"><div class="sk-panel-column"><strong class="sk-panel-row">Option 2 (recommended) — Sign Out:</strong><div class="sk-p">Sign out of your account, then sign back in. \nThis will ensure your data is consistent with the server.</div>Be sure to download a backup of your data before doing so.</div></div><div class="sk-p sk-panel-row"><div class="sk-panel-column"><strong class="sk-panel-row">Option 3 — Sync Resolution:</strong><div class="sk-p">We can attempt to reconcile changes by downloading all data from the \nserver. No existing data will be overwritten. If the local contents of \nan item differ from what the server has, a conflicted copy will be created.</div></div></div><div ng-if="!ctrl.status.backupFinished"><div class="sk-p sk-panel-row">Please download a backup before we attempt to \nperform a full account sync resolution.</div><div class="sk-panel-row"><div class="sk-button-group"><div class="sk-button info" ng-click="ctrl.downloadBackup(true)"><div class="sk-label">Encrypted</div></div><div class="sk-button info" ng-click="ctrl.downloadBackup(false)"><div class="sk-label">Decrypted</div></div><div class="sk-button danger" ng-click="ctrl.skipBackup()"><div class="sk-label">Skip</div></div></div></div></div><div ng-if="ctrl.status.backupFinished"><div class="sk-panel-row" ng-if="!ctrl.status.resolving && !ctrl.status.attemptedResolution"><div class="sk-button info" ng-click="ctrl.performSyncResolution()"><div class="sk-label">Perform Sync Resolution</div></div></div><div class="sk-panel-row justify-left" ng-if="ctrl.status.resolving"><div class="sk-horizontal-group"><div class="sk-spinner small info"></div><div class="sk-label">Attempting sync resolution...</div></div></div><div class="sk-panel-column" ng-if="ctrl.status.fail"><div class="sk-panel-row sk-label danger">Sync Resolution Failed</div><div class="sk-p sk-panel-row">We attempted to reconcile local content and server content, but were \nunable to do so. At this point, we recommend signing out of your account \nand signing back in. You may wish to download a data backup before doing so.</div></div><div class="sk-panel-column" ng-if="ctrl.status.success"><div class="sk-panel-row sk-label success">Sync Resolution Success</div><div class="sk-p sk-panel-row">Your local data is now in sync with the server. You may close this window.</div></div></div></div></div></div></div>'}},function(e,t,n){"use strict";n.r(t);n(81),n(82);var r=n(3),a=n.n(r),o=(n(84),n(85),n(86),n(87),n(88),n(1));function i(e){Object(o.d)()?e.html5Mode(!1):window.history&&window.history.pushState&&e.html5Mode({enabled:!0,requireBase:!1})}i.$inject=["$locationProvider"];var c=n(51),s=n(0),l=n(5);function g(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}function I(e,t=""){const n=t+".txt";return e.replace(/\//g,"").replace(/\\+/g,"").replace(/:/g," ").replace(/\./g," ").slice(0,255-n.length)+n}class B{constructor(e){g(this,"application",void 0),g(this,"textFile",void 0),this.application=e}async downloadBackup(e){const t=this.application.allItems(),n=async()=>{const n=e?s.EncryptionIntent.FileEncrypted:s.EncryptionIntent.FileDecrypted,r=await this.itemsData(t,n);if(e)this.downloadData(r,`Standard Notes Encrypted Backup - ${this.formattedDate()}.txt`);else{const e=await this.application.createBackupFile(t,n);e&&this.downloadZippedItems(t,(t,n)=>new Promise(r=>{const a=new Blob([e],{type:"text/plain"}),o=I(`Standard Notes Decrypted Backup - ${this.formattedDate()}`);t.add(o,new n.BlobReader(a),r)}))}};await this.application.privilegesService.actionRequiresPrivilege(s.ProtectedAction.ManageBackups)?this.application.presentPrivilegesModal(s.ProtectedAction.ManageBackups,()=>{n()}):n()}formattedDate(){const e=`${new Date}`,t=e.match(/^(.*?) \(/);return t&&t.length>=2?t[1]:e}async itemsData(e,t){const n=await this.application.createBackupFile(e,t);if(n)return new Blob([n],{type:"text/json"})}get zip(){return window.zip}async loadZip(){if(this.zip)return;const e=document.createElement("script");return e.src="/assets/zip/zip.js",e.async=!1,document.getElementsByTagName("head")[0].appendChild(e),new Promise(t=>{e.onload=()=>{this.zip.workerScriptsPath="assets/zip/",t()}})}async downloadZippedItems(e,t){await this.loadZip(),this.zip.createWriter(new this.zip.BlobWriter("application/zip"),async n=>{await t(n,this.zip);let r=0;const a=()=>{const t=e[r];let o,i;if(t.content_type===s.ContentType.Note){const e=t;o=e.title,i=e.text}else o=t.content_type,i=JSON.stringify(t.content,null,2);o||(o="");const c=new Blob([i],{type:"text/plain"}),l=t.content_type+"/"+I(o,`-${t.uuid.split("-")[0]}`);n.add(l,new this.zip.BlobReader(c),()=>{r++,r<e.length?a():n.close(e=>{this.downloadData(e,`Standard Notes Backup - ${this.formattedDate()}.zip`),n=null})})};a()},onerror)}hrefForData(e){return this.textFile&&window.URL.revokeObjectURL(this.textFile),this.textFile=window.URL.createObjectURL(e),this.textFile}downloadData(e,t){const n=document.createElement("a");n.setAttribute("download",t),n.href=this.hrefForData(e),document.body.appendChild(n),n.click(),n.remove()}}function A(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}class u extends s.ApplicationService{constructor(e,t,n){super(n),A(this,"$rootScope",void 0),A(this,"$timeout",void 0),A(this,"componentActivationObservers",[]),A(this,"updateObservers",[]),A(this,"isDesktop",Object(o.d)()),A(this,"dataLoaded",!1),A(this,"dataLoadHandler",void 0),A(this,"majorDataChangeHandler",void 0),A(this,"extServerHost",void 0),A(this,"installationSyncHandler",void 0),A(this,"installComponentHandler",void 0),A(this,"lastSearchedText",void 0),A(this,"searchHandler",void 0),this.$rootScope=e,this.$timeout=t}get webApplication(){return this.application}deinit(){this.componentActivationObservers.length=0,this.updateObservers.length=0,super.deinit()}async onAppEvent(e){super.onAppEvent(e),e===s.ApplicationEvent.LocalDataLoaded?(this.dataLoaded=!0,this.dataLoadHandler&&this.dataLoadHandler()):e===s.ApplicationEvent.MajorDataChange&&this.majorDataChangeHandler&&this.majorDataChangeHandler()}saveBackup(){this.majorDataChangeHandler&&this.majorDataChangeHandler()}getExtServerHost(){return console.assert(this.extServerHost,"extServerHost is null"),this.extServerHost}async convertComponentForTransmission(e){return this.application.protocolService.payloadByEncryptingPayload(e.payloadRepresentation(),s.EncryptionIntent.FileDecrypted)}syncComponentsInstallation(e){this.isDesktop&&Promise.all(e.map(e=>this.convertComponentForTransmission(e))).then(e=>{this.installationSyncHandler(e)})}async installComponent(e){this.installComponentHandler(await this.convertComponentForTransmission(e))}registerUpdateObserver(e){const t={callback:e};return this.updateObservers.push(t),()=>{Object(s.removeFromArray)(this.updateObservers,t)}}searchText(e){this.isDesktop&&(this.lastSearchedText=e,this.searchHandler&&this.searchHandler(e))}redoSearch(){this.lastSearchedText&&this.searchText(this.lastSearchedText)}desktop_setSearchHandler(e){this.searchHandler=e}desktop_windowGainedFocus(){this.$rootScope.$broadcast("window-gained-focus")}desktop_windowLostFocus(){this.$rootScope.$broadcast("window-lost-focus")}async desktop_onComponentInstallationComplete(e,t){const n=this.application.findItem(e.uuid);if(!n)return;const r=await this.application.changeAndSaveItem(n.uuid,n=>{const r=n;t?r.setAppDataItem(s.AppDataField.ComponentInstallError,t):(r.local_url=e.content.local_url,r.package_info=e.content.package_info,r.setAppDataItem(s.AppDataField.ComponentInstallError,void 0))});this.$timeout(()=>{for(const e of this.updateObservers)e.callback(r)})}desktop_registerComponentActivationObserver(e){const t={id:`${Math.random}`,callback:e};return this.componentActivationObservers.push(t),t}desktop_deregisterComponentActivationObserver(e){Object(s.removeFromArray)(this.componentActivationObservers,e)}async notifyComponentActivation(e){const t=await this.convertComponentForTransmission(e);this.$timeout(()=>{for(const e of this.componentActivationObservers)e.callback(t)})}desktop_setExtServerHost(e){this.extServerHost=e,this.webApplication.getAppState().desktopExtensionsReady()}desktop_setComponentInstallationSyncHandler(e){this.installationSyncHandler=e}desktop_setInstallComponentHandler(e){this.installComponentHandler=e}desktop_setInitialDataLoadHandler(e){this.dataLoadHandler=e,this.dataLoaded&&this.dataLoadHandler()}async desktop_requestBackupFile(e){e(await this.application.createBackupFile(void 0,void 0,!0))}desktop_setMajorDataChangeHandler(e){this.majorDataChangeHandler=e}desktop_didBeginBackup(){this.webApplication.getAppState().beganBackupDownload()}desktop_didFinishBackup(e){this.webApplication.getAppState().endedBackupDownload(e)}}function d(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}let _,C;var b;!function(e){e.Tab="Tab",e.Backspace="Backspace",e.Up="ArrowUp",e.Down="ArrowDown"}(_||(_={})),function(e){e.Shift="Shift",e.Ctrl="Control",e.Meta="Meta",e.Alt="Alt"}(C||(C={})),function(e){e.Down="KeyEventDown",e.Up="KeyEventUp"}(b||(b={}));class p{constructor(){d(this,"observers",[]),d(this,"handleKeyDown",void 0),d(this,"handleKeyUp",void 0),this.handleKeyDown=e=>{this.notifyObserver(e,b.Down)},this.handleKeyUp=e=>{this.notifyObserver(e,b.Up)},window.addEventListener("keydown",this.handleKeyDown),window.addEventListener("keyup",this.handleKeyUp)}deinit(){this.observers.length=0,window.removeEventListener("keydown",this.handleKeyDown),window.removeEventListener("keyup",this.handleKeyUp),this.handleKeyDown=void 0,this.handleKeyUp=void 0}modifiersForEvent(e){return Object.values(C).filter(t=>(e.ctrlKey||e.key===C.Ctrl)&&t===C.Ctrl||(e.metaKey||e.key===C.Meta)&&t===C.Meta||(e.altKey||e.key===C.Alt)&&t===C.Alt||(e.shiftKey||e.key===C.Shift)&&t===C.Shift)}eventMatchesKeyAndModifiers(e,t,n=[]){const r=this.modifiersForEvent(e);if(r.length!==n.length)return!1;for(const e of n)if(!r.includes(e))return!1;return!t||t.toLowerCase()===e.key.toLowerCase()}notifyObserver(e,t){const n=e.target;for(const r of this.observers)if((!r.element||e.target===r.element)&&(!r.elements||r.elements.includes(n))&&(!r.notElement||r.notElement!==e.target)&&(!r.notElementIds||!r.notElementIds.includes(n.id))&&this.eventMatchesKeyAndModifiers(e,r.key,r.modifiers)){const n=t===b.Down?r.onKeyDown:r.onKeyUp;n&&n(e)}}addKeyObserver(e){return this.observers.push(e),()=>{Object(s.removeFromArray)(this.observers,e)}}}var Q=n(28);function h(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}class y extends s.ApplicationService{constructor(...e){super(...e),h(this,"extManagerId","org.standardnotes.extensions-manager"),h(this,"batchManagerId","org.standardnotes.batch-manager")}async onAppLaunch(){super.onAppLaunch(),this.reload()}get extManagerPred(){return s.SNPredicate.CompoundPredicate([new s.SNPredicate("content_type","=",s.ContentType.Component),new s.SNPredicate("package_info.identifier","=","org.standardnotes.extensions-manager")])}get batchManagerPred(){return s.SNPredicate.CompoundPredicate([new s.SNPredicate("content_type","=",s.ContentType.Component),new s.SNPredicate("package_info.identifier","=","org.standardnotes.batch-manager")])}get extMgrUrl(){return window._extensions_manager_location}get batchMgrUrl(){return window._batch_manager_location}reload(){this.application.singletonManager.registerPredicate(this.extManagerPred),this.application.singletonManager.registerPredicate(this.batchManagerPred),this.resolveExtensionsManager(),this.resolveBatchManager()}async resolveExtensionsManager(){const e=await this.application.singletonManager.findOrCreateSingleton(this.extManagerPred,s.ContentType.Component,this.extensionsManagerTemplateContent());let t=!1;Object(o.d)()?e.local_url||(await this.application.changeItem(e.uuid,e=>{e.local_url=this.extMgrUrl}),t=!0):e.hosted_url||(await this.application.changeItem(e.uuid,e=>{e.hosted_url=this.extMgrUrl}),t=!0);const n=Object(s.Copy)(e.permissions),r=n.find(e=>e.name===s.ComponentAction.StreamItems);r&&!r.content_types.includes(s.ContentType.ExtensionRepo)&&(r.content_types.push(s.ContentType.ExtensionRepo),await this.application.changeItem(e.uuid,e=>{e.permissions=n}),t=!0),t&&this.application.saveItem(e.uuid)}extensionsManagerTemplateContent(){if(!this.extMgrUrl)throw Error("this.extMgrUrl must be set.");const e={name:"Extensions",identifier:this.extManagerId},t=Object(s.FillItemContent)({name:e.name,area:"rooms",package_info:e,permissions:[{name:s.ComponentAction.StreamItems,content_types:[s.ContentType.Component,s.ContentType.Theme,s.ContentType.ServerExtension,s.ContentType.ActionsExtension,s.ContentType.Mfa,s.ContentType.Editor,s.ContentType.ExtensionRepo]}]});return Object(o.d)()?t.local_url=this.extMgrUrl:t.hosted_url=this.extMgrUrl,t}async resolveBatchManager(){const e=await this.application.singletonManager.findOrCreateSingleton(this.batchManagerPred,s.ContentType.Component,this.batchManagerTemplateContent());let t=!1;Object(o.d)()?e.local_url||(await this.application.changeItem(e.uuid,e=>{e.local_url=this.batchMgrUrl}),t=!0):e.hosted_url||(await this.application.changeItem(e.uuid,e=>{e.hosted_url=this.batchMgrUrl}),t=!0);const n=Object(s.Copy)(e.permissions),r=n.find(e=>e.name===s.ComponentAction.StreamItems);r&&!r.content_types.includes(s.ContentType.ExtensionRepo)&&(r.content_types.push(s.ContentType.ExtensionRepo),await this.application.changeItem(e.uuid,e=>{e.permissions=n}),t=!0),t&&this.application.saveItem(e.uuid)}batchManagerTemplateContent(){if(!this.batchMgrUrl)throw Error("window._batch_manager_location must be set.");const e={name:"Batch Manager",identifier:this.batchManagerId},t=Object(s.dictToArray)(s.ContentType),n=Object(s.FillItemContent)({name:e.name,area:"modal",package_info:e,permissions:[{name:s.ComponentAction.StreamItems,content_types:t}]});return Object(o.d)()?n.local_url=this.batchMgrUrl:n.hosted_url=this.batchMgrUrl,n}}function m(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}class F extends s.ApplicationService{constructor(...e){super(...e),m(this,"userPreferences",void 0),m(this,"loadingPrefs",!1)}async onAppLaunch(){super.onAppLaunch(),this.reloadSingleton(),this.streamPreferences()}get webApplication(){return this.application}streamPreferences(){this.application.streamItems(s.ContentType.UserPrefs,()=>{this.reloadSingleton()})}async reloadSingleton(){var e,t;if(this.loadingPrefs)return;this.loadingPrefs=!0;const n=s.ContentType.UserPrefs,r=new s.SNPredicate("content_type","=",n),a=this.userPreferences;this.userPreferences=await this.application.singletonManager.findOrCreateSingleton(r,n,Object(s.FillItemContent)({})),this.loadingPrefs=!1,(!a||(null===(e=this.userPreferences.lastSyncBegan)||void 0===e?void 0:e.getTime())!==(null==a||null===(t=a.lastSyncBegan)||void 0===t?void 0:t.getTime()))&&this.webApplication.getAppState().setUserPreferences(this.userPreferences)}syncUserPreferences(){this.userPreferences&&this.application.saveItem(this.userPreferences.uuid)}getValue(e,t){if(!this.userPreferences)return t;const n=this.userPreferences.getPref(e);return null!=n?n:t}async setUserPrefValue(e,t,n=!1){await this.application.changeItem(this.userPreferences.uuid,n=>{n.setWebPref(e,t)}),n&&this.syncUserPreferences()}}function U(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}class f{constructor(){U(this,"statuses",[]),U(this,"observers",[])}statusFromString(e){return{string:e}}replaceStatusWithString(e,t){return this.removeStatus(e),this.addStatusFromString(t)}addStatusFromString(e){return this.addStatus(this.statusFromString(e))}addStatus(e){return this.statuses.push(e),this.notifyObservers(),e}removeStatus(e){Object(s.removeFromArray)(this.statuses,e),this.notifyObservers()}getStatusString(){let e="";return this.statuses.forEach((t,n)=>{n>0&&(e+=" "),e+=t.string}),e}notifyObservers(){for(const e of this.observers)e(this.getStatusString())}addStatusObserver(e){return this.observers.push(e),()=>{Object(s.removeFromArray)(this.observers,e)}}}var G=n(2);function E(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}class v extends s.ApplicationService{constructor(...e){super(...e),E(this,"activeThemes",[]),E(this,"unsubState",void 0),E(this,"unregisterDesktop",void 0),E(this,"unregisterComponent",void 0)}async onAppLaunch(){super.onAppLaunch(),this.unsubState=this.webApplication.getAppState().addObserver(async e=>{e===G.b.DesktopExtsReady&&this.activateCachedThemes()})}onAppEvent(e){super.onAppEvent(e),e===s.ApplicationEvent.SignedOut&&this.deactivateAllThemes()}get webApplication(){return this.application}deinit(){var e;null===(e=this.unsubState)||void 0===e||e.call(this),this.unsubState=void 0,this.activeThemes.length=0,this.unregisterDesktop(),this.unregisterComponent(),this.unregisterDesktop=void 0,this.unregisterComponent=void 0,super.deinit()}async onAppStart(){super.onAppStart(),this.registerObservers(),this.webApplication.getDesktopService().isDesktop||this.activateCachedThemes()}async activateCachedThemes(){const e=await this.getCachedThemes();for(const t of e)this.activateTheme(t,!1)}registerObservers(){this.unregisterDesktop=this.webApplication.getDesktopService().registerUpdateObserver(e=>{e.active&&e.isTheme()&&(this.deactivateTheme(e.uuid),setTimeout(()=>{this.activateTheme(e)},10))}),this.unregisterComponent=this.application.componentManager.registerHandler({identifier:"themeManager",areas:[s.ComponentArea.Themes],activationHandler:(e,t)=>{(null==t?void 0:t.active)?this.activateTheme(t):this.deactivateTheme(e)}})}deactivateAllThemes(){for(const e of this.activeThemes)this.deactivateTheme(e,!1);this.activeThemes=[],this.decacheThemes()}activateTheme(e,t=!0){if(this.activeThemes.find(t=>t===e.uuid))return;this.activeThemes.push(e.uuid);const n=this.application.componentManager.urlForComponent(e),r=document.createElement("link");r.href=n,r.type="text/css",r.rel="stylesheet",r.media="screen,print",r.id=e.uuid,document.getElementsByTagName("head")[0].appendChild(r),t&&this.cacheThemes()}deactivateTheme(e,t=!0){const n=document.getElementById(e);n&&(n.disabled=!0,n.parentNode.removeChild(n)),Object(s.removeFromArray)(this.activeThemes,e),t&&this.cacheThemes()}async cacheThemes(){const e=this.application.getAll(this.activeThemes),t=await Promise.all(e.map(async e=>{const t=e.payloadRepresentation();return await this.application.protocolService.payloadByEncryptingPayload(t,s.EncryptionIntent.LocalStorageDecrypted)}));return this.application.setValue("cachedThemes",t,s.StorageValueModes.Nonwrapped)}async decacheThemes(){if(this.application)return this.application.removeValue("cachedThemes",s.StorageValueModes.Nonwrapped)}async getCachedThemes(){const e=await this.application.getValue("cachedThemes",s.StorageValueModes.Nonwrapped);if(e){const t=[];for(const n of e){const e=this.application.createPayloadFromObject(n),r=this.application.createItemFromPayload(e);t.push(r)}return t}return[]}}function Z(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}class X{constructor(e,t,n){Z(this,"$compile",void 0),Z(this,"$rootScope",void 0),Z(this,"$timeout",void 0),Z(this,"applications",[]),Z(this,"changeObservers",[]),Z(this,"activeApplication",void 0),this.$compile=e,this.$timeout=n,this.$rootScope=t,this.onApplicationDeinit=this.onApplicationDeinit.bind(this),this.createDefaultApplication()}createDefaultApplication(){this.activeApplication=this.createNewApplication(),this.applications.push(this.activeApplication),this.notifyObserversOfAppChange()}onApplicationDeinit(e){Object(s.removeFromArray)(this.applications,e),this.activeApplication===e&&(this.activeApplication=void 0),0===this.applications.length?this.createDefaultApplication():this.notifyObserversOfAppChange()}createNewApplication(){const e=this.$rootScope.$new(!0),t=new c.a(this.$compile,this.$timeout,e,this.onApplicationDeinit),n=new G.a(this.$rootScope,this.$timeout,t),r=new B(t),a=new u(this.$rootScope,this.$timeout,t),o=new p,i=new Q.a(t),s=new y(t),l=new F(t),g=new f,I=new v(t);return t.setWebServices({appState:n,archiveService:r,desktopService:a,keyboardService:o,lockService:i,nativeExtService:s,prefsService:l,statusService:g,themeService:I}),t}get application(){return this.activeApplication}getApplications(){return this.applications.slice()}addApplicationChangeObserver(e){return this.changeObservers.push(e),this.application&&e(),()=>{Object(s.removeFromArray)(this.changeObservers,e)}}notifyObserversOfAppChange(){for(const e of this.changeObservers)e()}}function W(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}X.$inject=["$compile","$rootScope","$timeout"];class R{constructor(e,t={}){this.props=t,W(this,"$timeout",void 0),W(this,"application",void 0),W(this,"state",{}),W(this,"unsubApp",void 0),W(this,"unsubState",void 0),W(this,"stateTimeout",void 0),this.$timeout=e}$onInit(){this.state={...this.getInitialState(),...this.state},this.addAppEventObserver(),this.addAppStateObserver()}deinit(){this.unsubApp(),this.unsubState(),this.unsubApp=void 0,this.unsubState=void 0,this.stateTimeout&&this.$timeout.cancel(this.stateTimeout)}$onDestroy(){this.deinit()}get appState(){return this.application.getAppState()}async resetState(){this.state=this.getInitialState(),await this.setState(this.state)}getInitialState(){return{}}async setState(e){if(this.$timeout)return this.state=Object.freeze(Object.assign({},this.state,e)),new Promise(e=>{this.stateTimeout=this.$timeout(e)})}async updateUI(e){this.$timeout(e)}initProps(e){if(Object.keys(this.props).length>0)throw"Already init-ed props.";this.props=Object.freeze(Object.assign({},this.props,e))}addAppStateObserver(){this.unsubState=this.application.getAppState().addObserver(async(e,t)=>{this.onAppStateEvent(e,t)})}onAppStateEvent(e,t){}addAppEventObserver(){this.application.isStarted()&&this.onAppStart(),this.application.isLaunched()&&this.onAppLaunch(),this.unsubApp=this.application.addEventObserver(async e=>{this.onAppEvent(e),e===s.ApplicationEvent.Started?await this.onAppStart():e===s.ApplicationEvent.Launched?await this.onAppLaunch():e===s.ApplicationEvent.CompletedIncrementalSync?this.onAppIncrementalSync():e===s.ApplicationEvent.CompletedFullSync?this.onAppFullSync():e===s.ApplicationEvent.KeyStatusChanged&&this.onAppKeyChange()})}onAppEvent(e){}async onAppStart(){await this.resetState()}async onAppLaunch(){}async onAppKeyChange(){}onAppIncrementalSync(){}onAppFullSync(){}}function V(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}R.$inject=["$timeout","props"];class O{constructor(){V(this,"controller",void 0),V(this,"controllerAs",void 0),V(this,"bindToController",void 0),V(this,"restrict",void 0),V(this,"replace",void 0),V(this,"scope",void 0),V(this,"template",void 0),V(this,"transclude",void 0)}}let x;!function(e){e[e.ChangePassword=1]="ChangePassword",e[e.AccountUpgrade=2]="AccountUpgrade"}(x||(x={}));var T=n(55),N=n.n(T);function w(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}class k{constructor(e,t){w(this,"$timeout",void 0),w(this,"applicationGroup",void 0),w(this,"applications",[]),this.$timeout=e,this.applicationGroup=t,this.applicationGroup.addApplicationChangeObserver(()=>{this.reload()})}reload(){this.$timeout(()=>{this.applications=this.applicationGroup.getApplications()})}}k.$inject=["$timeout","mainApplicationGroup"];class Y extends O{constructor(){super(),this.template=N.a,this.controller=k,this.replace=!0,this.controllerAs="self",this.bindToController=!0}}var S=n(56),H=n.n(S);function D(e){return`Are you sure you want to permanently delete ${e} note(s)?`}const J="Are you sure you want to end your session? This will delete all local items and extensions.";function P(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}class M extends R{constructor(e,t,n,r){super(r),P(this,"$compile",void 0),P(this,"$location",void 0),P(this,"$rootScope",void 0),P(this,"platformString",void 0),P(this,"completedInitialSync",!1),P(this,"syncStatus",void 0),P(this,"notesCollapsed",!1),P(this,"tagsCollapsed",!1),P(this,"showingDownloadStatus",!1),P(this,"uploadSyncStatus",void 0),P(this,"lastAlertShownTimeStamp",0),P(this,"showingInvalidSessionAlert",!1),this.$location=t,this.$rootScope=n,this.$compile=e,this.platformString=Object(o.c)(),this.state={appClass:""},this.onDragDrop=this.onDragDrop.bind(this),this.onDragOver=this.onDragOver.bind(this),this.openModalComponent=this.openModalComponent.bind(this),this.presentPermissionsDialog=this.presentPermissionsDialog.bind(this),this.addDragDropHandlers()}deinit(){this.$location=void 0,this.$rootScope=void 0,this.$compile=void 0,this.application=void 0,window.removeEventListener("dragover",this.onDragOver,!0),window.removeEventListener("drop",this.onDragDrop,!0),this.onDragDrop=void 0,this.onDragOver=void 0,this.openModalComponent=void 0,this.presentPermissionsDialog=void 0,super.deinit()}$onInit(){super.$onInit(),this.loadApplication()}async loadApplication(){await this.application.prepareForLaunch({receiveChallenge:async e=>{this.application.promptForChallenge(e)}}),await this.application.launch()}async onAppStart(){super.onAppStart(),this.overrideComponentManagerFunctions(),this.application.componentManager.setDesktopManager(this.application.getDesktopService()),this.setState({ready:!0,needsUnlock:this.application.hasPasscode()})}async onAppLaunch(){super.onAppLaunch(),this.setState({needsUnlock:!1}),this.handleAutoSignInFromParams()}onUpdateAvailable(){this.$rootScope.$broadcast("new-update-available")}async onAppEvent(e){super.onAppEvent(e),e===s.ApplicationEvent.LocalDataIncrementalLoad?this.updateLocalDataStatus():e===s.ApplicationEvent.SyncStatusChanged||e===s.ApplicationEvent.FailedSync?this.updateSyncStatus():e===s.ApplicationEvent.LocalDataLoaded?this.updateLocalDataStatus():e===s.ApplicationEvent.WillSync?this.completedInitialSync||(this.syncStatus=this.application.getStatusService().replaceStatusWithString(this.syncStatus,"Syncing...")):e===s.ApplicationEvent.CompletedFullSync?this.completedInitialSync||(this.syncStatus=this.application.getStatusService().removeStatus(this.syncStatus),this.completedInitialSync=!0):e===s.ApplicationEvent.InvalidSyncSession?this.showInvalidSessionAlert():e===s.ApplicationEvent.LocalDatabaseReadError?this.application.alertService.alert("Unable to load local database. Please restart the app and try again."):e===s.ApplicationEvent.LocalDatabaseWriteError&&this.application.alertService.alert("Unable to write to local database. Please restart the app and try again.")}async onAppStateEvent(e,t){if(e===G.b.PanelResized){"notes"===t.panel&&(this.notesCollapsed=t.collapsed),"tags"===t.panel&&(this.tagsCollapsed=t.collapsed);let e="";this.notesCollapsed&&(e+="collapsed-notes"),this.tagsCollapsed&&(e+=" collapsed-tags"),this.setState({appClass:e})}else e===G.b.WindowDidFocus&&(await this.application.isLocked()||this.application.sync())}updateLocalDataStatus(){const e=this.application.getSyncStatus().getStats(),t=this.application.isEncryptionAvailable();if(e.localDataDone)return void(this.syncStatus=this.application.getStatusService().removeStatus(this.syncStatus));const n=`${e.localDataCurrent}/${e.localDataTotal} items...`,r=t?`Decrypting ${n}`:`Loading ${n}`;this.syncStatus=this.application.getStatusService().replaceStatusWithString(this.syncStatus,r)}updateSyncStatus(){const e=this.application.getSyncStatus(),t=e.getStats();if(e.hasError())this.syncStatus=this.application.getStatusService().replaceStatusWithString(this.syncStatus,"Unable to Sync");else if(t.downloadCount>20){const e=`Downloading ${t.downloadCount} items. Keep app open.`;this.syncStatus=this.application.getStatusService().replaceStatusWithString(this.syncStatus,e),this.showingDownloadStatus=!0}else if(this.showingDownloadStatus){this.showingDownloadStatus=!1;const e="Download Complete.";this.syncStatus=this.application.getStatusService().replaceStatusWithString(this.syncStatus,e),setTimeout(()=>{this.syncStatus=this.application.getStatusService().removeStatus(this.syncStatus)},2e3)}else t.uploadTotalCount>20?this.uploadSyncStatus=this.application.getStatusService().replaceStatusWithString(this.uploadSyncStatus,`Syncing ${t.uploadCompletionCount}/${t.uploadTotalCount} items...`):(this.syncStatus&&(this.syncStatus=this.application.getStatusService().removeStatus(this.syncStatus)),this.uploadSyncStatus&&(this.uploadSyncStatus=this.application.getStatusService().removeStatus(this.uploadSyncStatus)))}openModalComponent(e){const t=this.$rootScope.$new(!0);t.componentUuid=e.uuid,t.application=this.application;const n=this.$compile("<component-modal application='application' component-uuid='componentUuid' class='sk-modal'></component-modal>")(t);a.a.element(document.body).append(n)}presentPermissionsDialog(e){const t=this.$rootScope.$new(!0);t.permissionsString=e.permissionsString,t.component=e.component,t.callback=e.callback;const n=this.$compile("<permissions-modal component='component' permissions-string='permissionsString' callback='callback' class='sk-modal'></permissions-modal>")(t);a.a.element(document.body).append(n)}overrideComponentManagerFunctions(){this.application.componentManager.openModalComponent=this.openModalComponent,this.application.componentManager.presentPermissionsDialog=this.presentPermissionsDialog}showInvalidSessionAlert(){!this.showingInvalidSessionAlert&&Date.now()-this.lastAlertShownTimeStamp>3e4&&(this.lastAlertShownTimeStamp=Date.now(),this.showingInvalidSessionAlert=!0,setTimeout(async()=>{await Object(l.b)({text:"Your session has expired. New changes will not be pulled in. Please sign out and sign back in to refresh your session."}),this.showingInvalidSessionAlert=!1},500))}addDragDropHandlers(){window.addEventListener("dragover",this.onDragOver,!0),window.addEventListener("drop",this.onDragDrop,!0)}onDragOver(e){e.dataTransfer.files.length>0&&e.preventDefault()}onDragDrop(e){e.dataTransfer.files.length>0&&(e.preventDefault(),this.application.alertService.alert("Please use FileSafe or the Bold Editor to attach images and files. Learn more at standardnotes.org/filesafe."))}async handleAutoSignInFromParams(){const e=this.$location.search(),t=e.server,n=e.email,r=e.pw;if(!t||!n||!r)return;const a=this.application.getUser();if(a){if(a.email===n&&await this.application.getHost()===t)return;await this.application.signOut()}await this.application.setHost(t),this.application.signIn(n,r)}}M.$inject=["$compile","$location","$rootScope","$timeout"];class L extends O{constructor(){super(),this.template=H.a,this.controller=M,this.replace=!0,this.controllerAs="self",this.bindToController=!0,this.scope={application:"="}}}var z=n(57),j=n.n(z);function K(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}class q{constructor(){K(this,"application",void 0),K(this,"editors",[])}$onInit(){this.application.editorGroup.addChangeObserver(()=>{this.editors=this.application.editorGroup.editors})}}q.$inject=[];class $ extends O{constructor(){super(),this.template=j.a,this.controller=q,this.replace=!0,this.controllerAs="self",this.bindToController=!0,this.scope={application:"="}}}var ee=n(58),te=n.n(ee),ne=n(59),re=n.n(ne);function ae(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}const oe="note-text-editor",ie="note-title-editor",ce="editor-content",se="note-tags-component-container",le={DesktopMonospaceFamily:"Menlo,Consolas,'DejaVu Sans Mono',monospace",WebMonospaceFamily:"monospace",SansSerifFamily:"inherit"};class ge extends R{constructor(e){super(e),ae(this,"application",void 0),ae(this,"editor",void 0),ae(this,"leftPanelPuppet",void 0),ae(this,"rightPanelPuppet",void 0),ae(this,"unregisterComponent",void 0),ae(this,"saveTimeout",void 0),ae(this,"statusTimeout",void 0),ae(this,"lastEditorFocusEventSource",void 0),ae(this,"editorValues",{}),ae(this,"onEditorLoad",void 0),ae(this,"removeAltKeyObserver",void 0),ae(this,"removeTrashKeyObserver",void 0),ae(this,"removeDeleteKeyObserver",void 0),ae(this,"removeTabObserver",void 0),ae(this,"removeTagsObserver",void 0),ae(this,"removeComponentsObserver",void 0),ae(this,"prefKeyMonospace",void 0),ae(this,"prefKeySpellcheck",void 0),ae(this,"prefKeyMarginResizers",void 0),this.leftPanelPuppet={onReady:()=>this.reloadPreferences()},this.rightPanelPuppet={onReady:()=>this.reloadPreferences()},this.prefKeyMonospace=s.WebPrefKey.EditorMonospaceEnabled,this.prefKeySpellcheck=s.WebPrefKey.EditorSpellcheck,this.prefKeyMarginResizers=s.WebPrefKey.EditorResizersEnabled,this.editorMenuOnSelect=this.editorMenuOnSelect.bind(this),this.onPanelResizeFinish=this.onPanelResizeFinish.bind(this),this.onEditorLoad=()=>{this.application.getDesktopService().redoSearch()}}deinit(){this.editor.clearNoteChangeListener(),this.removeTagsObserver(),this.removeComponentsObserver(),this.removeTagsObserver=void 0,this.removeComponentsObserver=void 0,this.removeAltKeyObserver(),this.removeAltKeyObserver=void 0,this.removeTrashKeyObserver(),this.removeTrashKeyObserver=void 0,this.removeDeleteKeyObserver(),this.removeDeleteKeyObserver=void 0,this.removeTabObserver&&this.removeTabObserver(),this.removeTabObserver=void 0,this.leftPanelPuppet=void 0,this.rightPanelPuppet=void 0,this.onEditorLoad=void 0,this.unregisterComponent(),this.unregisterComponent=void 0,this.saveTimeout=void 0,this.statusTimeout=void 0,this.onPanelResizeFinish=void 0,this.editorMenuOnSelect=void 0,super.deinit()}getState(){return this.state}get note(){return this.editor.note}$onInit(){super.$onInit(),this.registerKeyboardShortcuts(),this.editor.onNoteChange(()=>{this.handleEditorNoteChange()}),this.editor.onNoteValueChange((e,t)=>{Object(s.isPayloadSourceRetrieved)(t)&&(this.editorValues.title=e.title,this.editorValues.text=e.text,this.reloadTagsString()),this.editorValues.title||(this.editorValues.title=e.title),this.editorValues.text||(this.editorValues.text=e.text),e.lastSyncBegan&&e.lastSyncEnd&&(e.lastSyncBegan.getTime()>e.lastSyncEnd.getTime()?this.showSavingStatus():e.lastSyncEnd.getTime()>e.lastSyncBegan.getTime()&&this.showAllChangesSavedStatus())})}getInitialState(){return{stackComponents:[],editorDebounce:100,isDesktop:Object(o.d)(),spellcheck:!0,syncTakingTooLong:!1,showExtensions:!1,showOptionsMenu:!1,showEditorMenu:!1,showSessionHistory:!1,altKeyDown:!1,noteStatus:void 0,editorUnloading:!1,textareaUnloading:!1,mutable:{tagsString:""}}}async onAppLaunch(){await super.onAppLaunch(),this.streamItems(),this.registerComponentHandler()}onAppStateEvent(e,t){e===G.b.PreferencesChanged&&this.reloadPreferences()}onAppEvent(e){if(e===s.ApplicationEvent.HighLatencySync)this.setState({syncTakingTooLong:!0});else if(e===s.ApplicationEvent.CompletedFullSync){this.setState({syncTakingTooLong:!1});const e=this.state.saveError;!this.note.dirty&&e&&this.showAllChangesSavedStatus()}else e===s.ApplicationEvent.FailedSync?this.note.dirty&&this.showErrorStatus():e===s.ApplicationEvent.LocalDatabaseWriteError&&this.showErrorStatus({message:"Offline Saving Issue",desc:"Changes not saved"})}async handleEditorNoteChange(){this.cancelPendingSetStatus(),await this.setState({showExtensions:!1,showOptionsMenu:!1,showEditorMenu:!1,showSessionHistory:!1,altKeyDown:!1,noteStatus:void 0});const e=this.editor.note;this.editorValues.title=e.title,this.editorValues.text=e.text,this.reloadEditor(),this.reloadTagsString(),this.reloadPreferences(),this.reloadStackComponents(),0===e.safeText().length&&this.focusTitle()}get noteLocked(){return!(!this.note||this.note.deleted)&&this.note.locked}streamItems(){this.removeTagsObserver=this.application.streamItems(s.ContentType.Tag,e=>{if(this.note)for(const t of e)if(!this.editorValues.tagsInputValue||t.deleted||t.hasRelationshipWithItem(this.note)){this.reloadTagsString();break}}),this.removeComponentsObserver=this.application.streamItems(s.ContentType.Component,async e=>{this.note&&(this.reloadStackComponents(),this.reloadNoteTagsComponent(),this.reloadEditor())})}async reloadEditor(){const e=this.application.componentManager.editorForNote(this.note),t=this.state.editorComponent;if((null==t?void 0:t.uuid)!==(null==e?void 0:e.uuid)){var n;if(await this.setState({editorComponent:e,editorUnloading:!0}),e&&!e.active)await(null===(n=this.application.componentManager)||void 0===n?void 0:n.activateComponent(e.uuid));await this.setState({editorUnloading:!1}),this.reloadFont(),this.application.componentManager.contextItemDidChangeInArea(s.ComponentArea.Editor)}}setMenuState(e,t){this.setState({[e]:t}),this.closeAllMenus(e)}toggleMenu(e){this.setMenuState(e,!this.state[e])}closeAllMenus(e){const t=["showOptionsMenu","showEditorMenu","showExtensions","showSessionHistory"],n={};for(const r of t)r!==e&&(n[r]=!1);this.setState(n)}async editorMenuOnSelect(e){var t;if(this.setMenuState("showEditorMenu",!1),e)if(e.area===s.ComponentArea.Editor){const t=this.state.editorComponent;t&&e!==t&&await this.disassociateComponentWithCurrentNote(t),this.note.prefersPlainEditor&&await this.application.changeItem(this.note.uuid,e=>{e.prefersPlainEditor=!1}),await this.associateComponentWithCurrentNote(e)}else e.area===s.ComponentArea.EditorStack&&await this.toggleStackComponentForCurrentItem(e);else this.note.prefersPlainEditor||await this.application.changeItem(this.note.uuid,e=>{e.prefersPlainEditor=!0}),(null===(t=this.state.editorComponent)||void 0===t?void 0:t.isExplicitlyEnabledForItem(this.note.uuid))&&await this.disassociateComponentWithCurrentNote(this.state.editorComponent),this.reloadFont();this.application.sync()}hasAvailableExtensions(){return this.application.actionsManager.extensionsInContextOfItem(this.note).length>0}performFirefoxPinnedTabFix(){document.hidden&&window.location.reload()}async saveNote(e=!1,t=!1,n=!1,r,a=!1){this.performFirefoxPinnedTabFix();const o=this.note;if(o.deleted)return void this.application.alertService.alert("The note you are attempting to edit has been deleted, and is awaiting sync. Changes you make will be disregarded.");var i;this.editor.isTemplateNote&&(await this.editor.insertTemplatedNote(),!1===(null===(i=this.appState.selectedTag)||void 0===i?void 0:i.isSmartTag())&&await this.application.changeItem(this.appState.selectedTag.uuid,e=>{e.addItemAsRelationship(o)}));if(!this.application.findItem(o.uuid))return void this.application.alertService.alert("The note you are attempting to save can not be found or has been deleted. Changes you make will not be synced. Please copy this note's text and start a new note.");await this.application.changeItem(o.uuid,e=>{const t=e;if(r&&r(t),t.title=this.editorValues.title,t.text=this.editorValues.text,!n){const e=this.editorValues.text||"",n=e.length>80,r=e.substring(0,80)+(n?"...":"");t.preview_plain=r,t.preview_html=void 0}},t),this.saveTimeout&&this.$timeout.cancel(this.saveTimeout);const c=e||this.application.noAccount()?100:350;this.saveTimeout=this.$timeout(()=>{this.application.sync(),a&&this.appState.closeEditor(this.editor)},c)}showSavingStatus(){this.setStatus({message:"Saving..."},!1)}showAllChangesSavedStatus(){this.setState({saveError:!1,syncTakingTooLong:!1}),this.setStatus({message:"All changes saved"})}showErrorStatus(e){e||(e={message:"Sync Unreachable",desc:"Changes saved offline"}),this.setState({saveError:!0,syncTakingTooLong:!1}),this.setStatus(e)}setStatus(e,t=!0){let n;n=this.state.noteStatus&&this.state.noteStatus.date?400-((new Date).getTime()-this.state.noteStatus.date.getTime()):0,(!t||n<0)&&(n=0),this.statusTimeout&&this.$timeout.cancel(this.statusTimeout),this.statusTimeout=this.$timeout(()=>{e.date=new Date,this.setState({noteStatus:e})},n)}cancelPendingSetStatus(){this.statusTimeout&&this.$timeout.cancel(this.statusTimeout)}contentChanged(){this.saveNote(!1,!0)}onTitleEnter(e){e.target.blur(),this.onTitleChange(),this.focusEditor()}onTitleChange(){this.saveNote(!1,!0,!0)}focusEditor(){const e=document.getElementById(oe);e&&(this.lastEditorFocusEventSource=G.c.Script,e.focus())}focusTitle(){document.getElementById(ie).focus()}clickedTextArea(){this.setMenuState("showOptionsMenu",!1)}onTitleFocus(){}onTitleBlur(){}onContentFocus(){this.application.getAppState().editorDidFocus(this.lastEditorFocusEventSource),this.lastEditorFocusEventSource=void 0}selectedMenuItem(e){e&&this.setMenuState("showOptionsMenu",!1)}async deleteNote(e){if(this.editor.isTemplateNote)return void this.application.alertService.alert("This note is a placeholder and cannot be deleted. To remove from your list, simply navigate to a different note.");const t=async()=>{if(this.note.locked)return void this.application.alertService.alert("This note is locked. If you'd like to delete it, unlock it, and try again.");const t=function(e,t){return t?`Are you sure you want to permanently delete ${e}?`:`Are you sure you want to move ${e} to the trash?`}(this.note.safeTitle().length?`'${this.note.title}'`:"this note",e);await Object(l.c)({text:t,confirmButtonStyle:"danger"})&&(e?this.performNoteDeletion(this.note):this.saveNote(!0,!1,!0,e=>{e.trashed=!0}))};await this.application.privilegesService.actionRequiresPrivilege(s.ProtectedAction.DeleteNote)?this.application.presentPrivilegesModal(s.ProtectedAction.DeleteNote,()=>{t()}):t()}performNoteDeletion(e){this.application.deleteItem(e)}restoreTrashedNote(){this.saveNote(!0,!1,!0,e=>{e.trashed=!1},!0)}deleteNotePermanantely(){this.deleteNote(!0)}getTrashCount(){return this.application.getTrashedItems().length}async emptyTrash(){const e=this.getTrashCount();await Object(l.c)({text:D(e),confirmButtonStyle:"danger"})&&(this.application.emptyTrash(),this.application.sync())}togglePin(){this.saveNote(!0,!1,!0,e=>{e.pinned=!this.note.pinned})}toggleLockNote(){this.saveNote(!0,!1,!0,e=>{e.locked=!this.note.locked})}toggleProtectNote(){this.saveNote(!0,!1,!0,e=>{e.protected=!this.note.protected}),this.application.privilegesService.actionHasPrivilegesConfigured(s.ProtectedAction.ViewProtectedNotes).then(e=>{e||this.application.presentPrivilegesManagementModal()})}toggleNotePreview(){this.saveNote(!0,!1,!0,e=>{e.hidePreview=!this.note.hidePreview})}toggleArchiveNote(){var e;this.saveNote(!0,!1,!0,e=>{e.archived=!this.note.archived},this.note.archived&&(null===(e=this.appState.selectedTag)||void 0===e?void 0:e.isArchiveTag))}reloadTagsString(){const e=this.appState.getNoteTags(this.note),t=s.SNTag.arrayToDisplayString(e);this.updateUI(()=>{this.editorValues.tagsInputValue=t})}addTag(e){const t=this.appState.getNoteTags(this.note).map(e=>e.title);t.push(e.title),this.saveTagsFromStrings(t)}removeTag(e){const t=this.appState.getNoteTags(this.note).map(e=>e.title).filter(t=>t!==e.title);this.saveTagsFromStrings(t)}onTagsInputBlur(){this.saveTagsFromStrings(),this.focusEditor()}async saveTagsFromStrings(e){if(!e&&this.editorValues.tagsInputValue===this.state.tagsAsStrings)return;e||(e=this.editorValues.tagsInputValue.split("#").filter(e=>e.length>0).map(e=>e.trim()));const t=this.note,n=this.appState.getNoteTags(t),r=[];for(const t of n)-1===e.indexOf(t.title)&&r.push(t);for(const e of r)await this.application.changeItem(e.uuid,e=>{e.removeItemAsRelationship(t)});const a=[];for(const t of e){te()(n,{title:t})||a.push(await this.application.findOrCreateTag(t))}a.length>0&&await this.application.changeItems(Object(s.Uuids)(a),e=>{e.addItemAsRelationship(t)}),this.application.sync(),this.reloadTagsString()}async onPanelResizeFinish(e,t,n){n?await this.application.getPrefsService().setUserPrefValue(s.WebPrefKey.EditorWidth,null):null!=e&&(await this.application.getPrefsService().setUserPrefValue(s.WebPrefKey.EditorWidth,e),this.leftPanelPuppet.setWidth(e)),null!=t&&(await this.application.getPrefsService().setUserPrefValue(s.WebPrefKey.EditorLeft,t),this.rightPanelPuppet.setLeft(t)),this.application.getPrefsService().syncUserPreferences()}async reloadPreferences(){const e=this.application.getPrefsService().getValue(s.WebPrefKey.EditorMonospaceEnabled,!0),t=this.application.getPrefsService().getValue(s.WebPrefKey.EditorSpellcheck,!0),n=this.application.getPrefsService().getValue(s.WebPrefKey.EditorResizersEnabled,!0);if(await this.setState({monospaceFont:e,spellcheck:t,marginResizersEnabled:n}),document.getElementById(ce)&&(this.reloadFont(),this.state.marginResizersEnabled&&this.leftPanelPuppet.ready&&this.rightPanelPuppet.ready)){const e=this.application.getPrefsService().getValue(s.WebPrefKey.EditorWidth,null);null!=e&&(this.leftPanelPuppet.setWidth(e),this.rightPanelPuppet.setWidth(e));const t=this.application.getPrefsService().getValue(s.WebPrefKey.EditorLeft,null);null!=t&&(this.leftPanelPuppet.setLeft(t),this.rightPanelPuppet.setLeft(t))}}reloadFont(){const e=document.getElementById(oe);e&&(this.state.monospaceFont?this.state.isDesktop?e.style.fontFamily=le.DesktopMonospaceFamily:e.style.fontFamily=le.WebMonospaceFamily:e.style.fontFamily=le.SansSerifFamily)}async toggleWebPrefKey(e){const t=this.state[e];await this.application.getPrefsService().setUserPrefValue(e,!t,!0),await this.setState({[e]:!t}),this.reloadFont(),e===s.WebPrefKey.EditorSpellcheck?(await this.setState({textareaUnloading:!0}),await this.setState({textareaUnloading:!1}),this.reloadFont()):e===s.WebPrefKey.EditorResizersEnabled&&!0===this.state[e]&&this.$timeout(()=>{this.leftPanelPuppet.flash(),this.rightPanelPuppet.flash()})}registerComponentHandler(){this.unregisterComponent=this.application.componentManager.registerHandler({identifier:"editor",areas:[s.ComponentArea.NoteTags,s.ComponentArea.EditorStack,s.ComponentArea.Editor],contextRequestHandler:e=>{var t;const n=this.state.editorComponent;if(e===(null==n?void 0:n.uuid)||e===(null===(t=this.state.tagsComponent)||void 0===t?void 0:t.uuid)||Object(s.Uuids)(this.state.stackComponents).includes(e))return this.note},focusHandler:(e,t)=>{e.isEditor()&&t&&this.closeAllMenus()},actionHandler:(e,t,n)=>{if(t===s.ComponentAction.SetSize){const t=(e,t)=>{const r="string"==typeof t.width?t.width:`${n.width}px`,a="string"==typeof t.height?t.height:`${n.height}px`;e.setAttribute("style",`width: ${r}; height: ${a};`)};if("container"===n.type&&e.area===s.ComponentArea.NoteTags){t(document.getElementById(se),n)}}else if(t===s.ComponentAction.AssociateItem){if(n.item.content_type===s.ContentType.Tag){const e=this.application.findItem(n.item.uuid);this.addTag(e)}}else if(t===s.ComponentAction.DeassociateItem){const e=this.application.findItem(n.item.uuid);this.removeTag(e)}}})}reloadNoteTagsComponent(){var e;const[t]=this.application.componentManager.componentsForArea(s.ComponentArea.NoteTags);(null==t?void 0:t.uuid)!==(null===(e=this.state.tagsComponent)||void 0===e?void 0:e.uuid)&&this.setState({tagsComponent:(null==t?void 0:t.active)?t:void 0}),this.application.componentManager.contextItemDidChangeInArea(s.ComponentArea.NoteTags)}reloadStackComponents(){var e;if(this.setState({stackComponents:(e=this.application.componentManager.componentsForArea(s.ComponentArea.EditorStack).filter(e=>e.active),e.sort((e,t)=>e.name.toLowerCase()<t.name.toLowerCase()?-1:1))}),this.note)for(const e of this.state.stackComponents)e.active&&this.application.componentManager.setComponentHidden(e,!e.isExplicitlyEnabledForItem(this.note.uuid));this.application.componentManager.contextItemDidChangeInArea(s.ComponentArea.EditorStack)}stackComponentHidden(e){var t;return null===(t=this.application.componentManager)||void 0===t?void 0:t.isComponentHidden(e)}async toggleStackComponentForCurrentItem(e){this.application.componentManager.isComponentHidden(e)||!e.active?(this.application.componentManager.setComponentHidden(e,!1),await this.associateComponentWithCurrentNote(e),this.application.componentManager.contextItemDidChangeInArea(s.ComponentArea.EditorStack)):(this.application.componentManager.setComponentHidden(e,!0),await this.disassociateComponentWithCurrentNote(e)),this.application.sync()}async disassociateComponentWithCurrentNote(e){const t=this.note;return this.application.changeItem(e.uuid,e=>{const n=e;n.removeAssociatedItemId(t.uuid),n.disassociateWithItem(t.uuid)})}async associateComponentWithCurrentNote(e){const t=this.note;return this.application.changeItem(e.uuid,e=>{const n=e;n.removeDisassociatedItemId(t.uuid),n.associateWithItem(t.uuid)})}registerKeyboardShortcuts(){this.removeAltKeyObserver=this.application.getKeyboardService().addKeyObserver({modifiers:[C.Alt],onKeyDown:()=>{this.setState({altKeyDown:!0})},onKeyUp:()=>{this.setState({altKeyDown:!1})}}),this.removeTrashKeyObserver=this.application.getKeyboardService().addKeyObserver({key:_.Backspace,notElementIds:[oe,ie],modifiers:[C.Meta],onKeyDown:()=>{this.deleteNote(!1)}}),this.removeDeleteKeyObserver=this.application.getKeyboardService().addKeyObserver({key:_.Backspace,modifiers:[C.Meta,C.Shift,C.Alt],onKeyDown:e=>{e.preventDefault(),this.deleteNote(!0)}})}onSystemEditorLoad(){if(this.removeTabObserver)return;const e=document.getElementById(oe);this.removeTabObserver=this.application.getKeyboardService().addKeyObserver({element:e,key:_.Tab,onKeyDown:t=>{if(this.note.locked||t.shiftKey)return;if(t.preventDefault(),!document.execCommand("insertText",!1,"\t")){const t=e.selectionStart,n=e.selectionEnd,r=" ";e.value=e.value.substring(0,t)+r+e.value.substring(n),e.selectionStart=e.selectionEnd=t+4}this.editorValues.text=e.value,this.saveNote(!0)}}),a.a.element(e).one("$destroy",()=>{this.removeTabObserver(),this.removeTabObserver=void 0})}}ge.$inject=["$timeout"];class Ie extends O{constructor(){super(),this.restrict="E",this.scope={editor:"=",application:"="},this.template=re.a,this.replace=!0,this.controller=ge,this.controllerAs="self",this.bindToController=!0}}var Be=n(60),Ae=n.n(Be);function ue(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}class de extends R{constructor(e,t){super(t),ue(this,"$rootScope",void 0),ue(this,"rooms",[]),ue(this,"themesWithIcons",[]),ue(this,"showSyncResolution",!1),ue(this,"unregisterComponent",void 0),ue(this,"rootScopeListener1",void 0),ue(this,"rootScopeListener2",void 0),ue(this,"arbitraryStatusMessage",void 0),ue(this,"user",void 0),ue(this,"backupStatus",void 0),ue(this,"offline",!0),ue(this,"showAccountMenu",!1),ue(this,"didCheckForOffline",!1),ue(this,"queueExtReload",!1),ue(this,"reloadInProgress",!1),ue(this,"hasError",!1),ue(this,"isRefreshing",!1),ue(this,"lastSyncDate",void 0),ue(this,"newUpdateAvailable",!1),ue(this,"dockShortcuts",[]),ue(this,"roomShowState",{}),ue(this,"observerRemovers",[]),this.$rootScope=e,this.addRootScopeListeners(),this.toggleSyncResolutionMenu=this.toggleSyncResolutionMenu.bind(this),this.closeAccountMenu=this.closeAccountMenu.bind(this)}deinit(){for(const e of this.observerRemovers)e();this.observerRemovers.length=0,this.rooms.length=0,this.themesWithIcons.length=0,this.unregisterComponent(),this.unregisterComponent=void 0,this.rootScopeListener1(),this.rootScopeListener2(),this.rootScopeListener1=void 0,this.rootScopeListener2=void 0,this.closeAccountMenu=void 0,this.toggleSyncResolutionMenu=void 0,super.deinit()}$onInit(){super.$onInit(),this.application.getStatusService().addStatusObserver(e=>{this.$timeout(()=>{this.arbitraryStatusMessage=e})})}getInitialState(){return{hasPasscode:!1}}reloadUpgradeStatus(){this.application.checkForSecurityUpdate().then(e=>{this.setState({dataUpgradeAvailable:e})})}async onAppLaunch(){super.onAppLaunch(),this.reloadPasscodeStatus(),this.reloadUser(),this.reloadUpgradeStatus(),this.updateOfflineStatus(),this.findErrors(),this.streamItems(),this.registerComponentHandler()}reloadUser(){this.user=this.application.getUser()}async reloadPasscodeStatus(){const e=this.application.hasPasscode();this.setState({hasPasscode:e})}addRootScopeListeners(){this.rootScopeListener1=this.$rootScope.$on("reload-ext-data",()=>{this.reloadExtendedData()}),this.rootScopeListener2=this.$rootScope.$on("new-update-available",()=>{this.$timeout(()=>{this.onNewUpdateAvailable()})})}onAppStateEvent(e,t){e===G.b.EditorFocused?t.eventSource===G.c.UserInteraction&&(this.closeAllRooms(),this.closeAccountMenu()):e===G.b.BeganBackupDownload?this.backupStatus=this.application.getStatusService().addStatusFromString("Saving local backup..."):e===G.b.EndedBackupDownload&&(t.success?this.backupStatus=this.application.getStatusService().replaceStatusWithString(this.backupStatus,"Successfully saved backup."):this.backupStatus=this.application.getStatusService().replaceStatusWithString(this.backupStatus,"Unable to save local backup."),this.$timeout(()=>{this.backupStatus=this.application.getStatusService().removeStatus(this.backupStatus)},2e3))}async onAppKeyChange(){super.onAppKeyChange(),this.reloadPasscodeStatus()}onAppEvent(e){e===s.ApplicationEvent.KeyStatusChanged?this.reloadUpgradeStatus():e===s.ApplicationEvent.EnteredOutOfSync?this.setState({outOfSync:!0}):e===s.ApplicationEvent.ExitedOutOfSync?this.setState({outOfSync:!1}):e===s.ApplicationEvent.CompletedFullSync?(this.didCheckForOffline||(this.didCheckForOffline=!0,this.offline&&0===this.application.getNoteCount()&&(this.showAccountMenu=!0)),this.syncUpdated(),this.findErrors(),this.updateOfflineStatus()):e===s.ApplicationEvent.FailedSync?(this.findErrors(),this.updateOfflineStatus()):e!==s.ApplicationEvent.SignedIn&&e!==s.ApplicationEvent.SignedOut||this.reloadUser()}streamItems(){this.application.setDisplayOptions(s.ContentType.Theme,s.CollectionSort.Title,"asc",e=>e.package_info&&e.package_info.dock_icon),this.observerRemovers.push(this.application.streamItems(s.ContentType.Component,async()=>{const e=this.application.getItems(s.ContentType.Component);this.rooms=e.filter(e=>e.area===s.ComponentArea.Rooms&&!e.deleted),this.queueExtReload&&(this.queueExtReload=!1,this.reloadExtendedData())})),this.observerRemovers.push(this.application.streamItems(s.ContentType.Theme,async()=>{const e=this.application.getDisplayableItems(s.ContentType.Theme);this.themesWithIcons=e,this.reloadDockShortcuts()}))}registerComponentHandler(){this.unregisterComponent=this.application.componentManager.registerHandler({identifier:"room-bar",areas:[s.ComponentArea.Rooms,s.ComponentArea.Modal],actionHandler:(e,t,n)=>{t===s.ComponentAction.SetSize&&(Object(s.topLevelCompare)(e.getLastSize(),n)||this.application.changeItem(e.uuid,e=>{e.setLastSize(n)}))},focusHandler:(e,t)=>{e.isEditor()&&t&&(this.closeAllRooms(),this.closeAccountMenu())}})}reloadExtendedData(){if(this.reloadInProgress)return;this.reloadInProgress=!0;const e=this.rooms.find(e=>e.package_info.identifier===this.application.getNativeExtService().extManagerId);if(!e)return this.queueExtReload=!0,void(this.reloadInProgress=!1);this.selectRoom(e),this.$timeout(()=>{this.selectRoom(e),this.reloadInProgress=!1,this.$rootScope.$broadcast("ext-reload-complete")},2e3)}updateOfflineStatus(){this.offline=this.application.noAccount()}async openSecurityUpdate(){const e=window.onbeforeunload;try{window.onbeforeunload=()=>"The encryption upgrade is in progress. You may lose data if you quit the app. Are you sure you want to quit?",await this.application.performProtocolUpgrade()}finally{window.onbeforeunload=e}}findErrors(){this.hasError=this.application.getSyncStatus().hasError()}accountMenuPressed(){this.showAccountMenu=!this.showAccountMenu,this.closeAllRooms()}toggleSyncResolutionMenu(){this.showSyncResolution=!this.showSyncResolution}closeAccountMenu(){this.showAccountMenu=!1}lockApp(){this.application.lock()}refreshData(){this.isRefreshing=!0,this.application.sync({queueStrategy:s.SyncQueueStrategy.ForceSpawnNew,checkIntegrity:!0}).then(e=>{this.$timeout(()=>{this.isRefreshing=!1},200),e&&e.error?this.application.alertService.alert("There was an error syncing. Please try again. If all else fails, try signing out and signing back in."):this.syncUpdated()})}syncUpdated(){this.lastSyncDate=Object(o.a)(this.application.getLastSyncDate())}onNewUpdateAvailable(){this.newUpdateAvailable=!0}clickedNewUpdateAnnouncement(){this.newUpdateAvailable=!1,this.application.alertService.alert("A new update is ready to install. Please use the top-level 'Updates' menu to manage installation.")}reloadDockShortcuts(){const e=[];for(const t of this.themesWithIcons){const n=t.package_info.name,r=t.package_info.dock_icon;r&&e.push({name:n,component:t,icon:r})}this.dockShortcuts=e.sort((e,t)=>{const n=e.icon.type,r=t.icon.type;return n===r?0:"circle"===n&&"svg"===r?-1:"circle"===r&&"svg"===n?1:0})}initSvgForShortcut(e){const t="dock-svg-"+e.component.uuid,n=document.getElementById(t),r=new DOMParser,a=e.component.package_info.dock_icon.source,o=r.parseFromString(a,"image/svg+xml");n.appendChild(o.documentElement)}selectShortcut(e){this.application.componentManager.toggleComponent(e.component)}onRoomDismiss(e){this.roomShowState[e.uuid]=!1}closeAllRooms(){for(const e of this.rooms)this.roomShowState[e.uuid]=!1}async selectRoom(e){const t=()=>{this.$timeout(()=>{this.roomShowState[e.uuid]=!this.roomShowState[e.uuid]})};if(this.roomShowState[e.uuid])t();else{await this.application.privilegesService.actionRequiresPrivilege(s.ProtectedAction.ManageExtensions)?this.application.presentPrivilegesModal(s.ProtectedAction.ManageExtensions,t):t()}}clickOutsideAccountMenu(){this.application&&this.application.authenticationInProgress()||(this.showAccountMenu=!1)}}de.$inject=["$rootScope","$timeout"];class _e extends O{constructor(){super(),this.restrict="E",this.template=Ae.a,this.controller=de,this.replace=!0,this.controllerAs="ctrl",this.bindToController=!0,this.scope={application:"="}}}var Ce=n(61),be=n.n(Ce);let pe;function Qe(e,t,n,r,a){let o=n;const i=!r;return!(!t.isTrashTag&&e.trashed)&&(t.isSmartTag()&&(o=o||t.isArchiveTag||t.isTrashTag),!(e.archived&&!o||e.pinned&&!i)&&function(e,t){if(0===t.length)return!0;const n=e.safeTitle().toLowerCase(),r=e.safeText().toLowerCase(),a=t.toLowerCase(),o=function(e){const t=e.match(/"(.*?)"/);return t?t[1]:null}(a);if(o)return n.includes(o)||r.includes(o);if(function(e){return!!e.match(/\b[0-9a-f]{8}\b-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-\b[0-9a-f]{12}\b/)}(a))return e.uuid===a;const i=a.split(" "),c=i.every(e=>n.indexOf(e)>=0),s=i.every(e=>r.indexOf(e)>=0);return c||s}(e,a))}function he(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}!function(e){e.CreatedAt="created_at",e.UserUpdatedAt="userModifiedDate",e.Title="title",e.UpdatedAt="updated_at",e.ClientUpdatedAt="client_updated_at"}(pe||(pe={}));class ye extends R{constructor(e){super(e),he(this,"panelPuppet",void 0),he(this,"reloadNotesPromise",void 0),he(this,"notesToDisplay",0),he(this,"pageSize",0),he(this,"searchSubmitted",!1),he(this,"newNoteKeyObserver",void 0),he(this,"nextNoteKeyObserver",void 0),he(this,"previousNoteKeyObserver",void 0),he(this,"searchKeyObserver",void 0),he(this,"noteFlags",{}),he(this,"unsubEditorChange",void 0),he(this,"removeObservers",[]),this.resetPagination()}$onInit(){super.$onInit(),this.panelPuppet={onReady:()=>this.reloadPanelWidth()},this.onWindowResize=this.onWindowResize.bind(this),this.onPanelResize=this.onPanelResize.bind(this),window.addEventListener("resize",this.onWindowResize,!0),this.registerKeyboardShortcuts()}onWindowResize(){this.resetPagination(!0)}deinit(){for(const e of this.removeObservers)e();this.removeObservers.length=0,this.panelPuppet.onReady=void 0,this.panelPuppet=void 0,window.removeEventListener("resize",this.onWindowResize,!0),this.onWindowResize=void 0,this.onPanelResize=void 0,this.newNoteKeyObserver(),this.nextNoteKeyObserver(),this.previousNoteKeyObserver(),this.searchKeyObserver(),this.newNoteKeyObserver=void 0,this.nextNoteKeyObserver=void 0,this.previousNoteKeyObserver=void 0,this.searchKeyObserver=void 0,super.deinit()}getState(){return this.state}async setNotesState(e){return this.setState(e)}getInitialState(){return{notes:[],renderedNotes:[],mutable:{showMenu:!1},noteFilter:{text:""}}}async onAppLaunch(){super.onAppLaunch(),this.streamNotesAndTags(),this.reloadPreferences()}onAppStateEvent(e,t){e===G.b.TagChanged?this.handleTagChange(this.application.getAppState().getSelectedTag()):e===G.b.ActiveEditorChanged?this.handleEditorChange():e===G.b.PreferencesChanged?this.reloadPreferences():e===G.b.EditorFocused&&this.setShowMenuFalse()}get activeEditorNote(){var e;return null===(e=this.appState.getActiveEditor())||void 0===e?void 0:e.note}get editorNotes(){return this.appState.getEditors().map(e=>e.note)}async onAppEvent(e){e===s.ApplicationEvent.SignedIn?(this.appState.closeAllEditors(),this.selectFirstNote()):e===s.ApplicationEvent.CompletedFullSync&&this.getMostValidNotes().then(e=>{0===e.length&&this.createPlaceholderNote()})}getPossiblyStaleNotes(){return this.getState().notes}async getMostValidNotes(){return await this.reloadNotesPromise,this.getPossiblyStaleNotes()}async createPlaceholderNote(){const e=this.application.getAppState().getSelectedTag();if(!e.isSmartTag()||e.isAllTag)return this.createNewNote()}streamNotesAndTags(){this.removeObservers.push(this.application.streamItems([s.ContentType.Note],async e=>{const t=e;for(const e of t)e.deleted||this.loadFlagsForNote(e);await this.reloadNotes();const n=this.activeEditorNote;if(n){(n.deleted||n.trashed)&&this.selectNextOrCreateNew()}else this.selectFirstNote()})),this.removeObservers.push(this.application.streamItems([s.ContentType.Tag],async e=>{var t;const n=e;this.reloadNotesDisplayOptions(),await this.reloadNotes(),Object(s.findInArray)(n,"uuid",null===(t=this.appState.selectedTag)||void 0===t?void 0:t.uuid)&&this.reloadPanelTitle()}))}async selectNote(e){this.appState.openEditor(e.uuid)}async createNewNote(){let e=`Note ${this.getState().notes.length+1}`;this.isFiltering()&&(e=this.getState().noteFilter.text),this.appState.createEditor(e)}async handleTagChange(e){this.resetScrollPosition(),this.setShowMenuFalse(),await this.setNoteFilterText(""),this.application.getDesktopService().searchText(),this.resetPagination();const t=this.application.isDatabaseLoaded();this.reloadNotesDisplayOptions(),await this.reloadNotes(),this.getState().notes.length>0?this.selectFirstNote():t&&(!e.isSmartTag()||e.isAllTag?this.createPlaceholderNote():this.activeEditorNote&&!this.getState().notes.includes(this.activeEditorNote)&&this.appState.closeActiveEditor())}resetScrollPosition(){const e=document.getElementById("notes-scrollable");e&&(e.scrollTop=0,e.scrollLeft=0)}async removeNoteFromList(e){const t=this.getState().notes;Object(s.removeFromArray)(t,e),await this.setNotesState({notes:t,renderedNotes:t.slice(0,this.notesToDisplay)})}async reloadNotes(){return this.reloadNotesPromise=this.performReloadNotes(),this.reloadNotesPromise}reloadNotesDisplayOptions(){const e=this.appState.selectedTag;this.application.setDisplayOptions(s.ContentType.Note,this.getState().sortBy,this.getState().sortReverse?"asc":"dsc",t=>(e.isSmartTag()?t.satisfiesPredicate(e.predicate):e.hasRelationshipWithItem(t))&&Qe(t,this.appState.selectedTag,this.getState().showArchived,this.getState().hidePinned,this.getState().noteFilter.text.toLowerCase()))}async performReloadNotes(){if(!this.appState.selectedTag)return;const e=this.application.getDisplayableItems(s.ContentType.Note);await this.setNotesState({notes:e,renderedNotes:e.slice(0,this.notesToDisplay)}),this.reloadPanelTitle()}setShowMenuFalse(){this.setNotesState({mutable:{...this.getState().mutable,showMenu:!1}})}async handleEditorChange(){const e=this.appState.getActiveEditor().note;e&&e.conflictOf&&this.application.changeAndSaveItem(e.uuid,e=>{e.conflictOf=void 0}),this.isFiltering()&&this.application.getDesktopService().searchText(this.getState().noteFilter.text)}async reloadPreferences(){const e={},t=this.getState().sortBy;let n=this.application.getPrefsService().getValue(s.WebPrefKey.SortNotesBy,pe.CreatedAt);n!==pe.UpdatedAt&&n!==pe.ClientUpdatedAt||(n=pe.UserUpdatedAt),e.sortBy=n,e.sortReverse=this.application.getPrefsService().getValue(s.WebPrefKey.SortNotesReverse,!1),e.showArchived=this.application.getPrefsService().getValue(s.WebPrefKey.NotesShowArchived,!1),e.hidePinned=this.application.getPrefsService().getValue(s.WebPrefKey.NotesHidePinned,!1),e.hideNotePreview=this.application.getPrefsService().getValue(s.WebPrefKey.NotesHideNotePreview,!1),e.hideDate=this.application.getPrefsService().getValue(s.WebPrefKey.NotesHideDate,!1);const r=this.getState(),a=e.sortBy!==r.sortBy||e.sortReverse!==r.sortReverse||e.hidePinned!==r.hidePinned||e.showArchived!==r.showArchived;await this.setNotesState({...e}),this.reloadPanelWidth(),a&&this.reloadNotesDisplayOptions(),await this.reloadNotes(),t&&t!==n&&this.selectFirstNote()}reloadPanelWidth(){const e=this.application.getPrefsService().getValue(s.WebPrefKey.NotesPanelWidth);e&&this.panelPuppet.ready&&(this.panelPuppet.setWidth(e),this.panelPuppet.isCollapsed()&&this.application.getAppState().panelDidResize("notes",this.panelPuppet.isCollapsed()))}onPanelResize(e,t,n,r){this.application.getPrefsService().setUserPrefValue(s.WebPrefKey.NotesPanelWidth,e,!0),this.application.getAppState().panelDidResize("notes",r)}paginate(){this.notesToDisplay+=this.pageSize,this.reloadNotes(),this.searchSubmitted&&this.application.getDesktopService().searchText(this.getState().noteFilter.text)}resetPagination(e=!1){const t=document.documentElement.clientHeight;this.pageSize=Math.ceil(t/51),0===this.pageSize&&(this.pageSize=20),e&&this.notesToDisplay>this.pageSize||(this.notesToDisplay=this.pageSize)}reloadPanelTitle(){let e;if(this.isFiltering()){e=`${this.getState().notes.length} search results`}else this.appState.selectedTag&&(e=`${this.appState.selectedTag.title}`);this.setNotesState({panelTitle:e})}optionsSubtitle(){let e="";return this.getState().sortBy===pe.CreatedAt?e+=" Date Added":this.getState().sortBy===pe.UserUpdatedAt?e+=" Date Modified":this.getState().sortBy===pe.Title&&(e+=" Title"),this.getState().showArchived&&(e+=" | + Archived"),this.getState().hidePinned&&(e+=" | – Pinned"),this.getState().sortReverse&&(e+=" | Reversed"),e}loadFlagsForNote(e){const t=[];e.pinned&&t.push({text:"Pinned",class:"info"}),e.archived&&t.push({text:"Archived",class:"warning"}),e.protected&&t.push({text:"Protected",class:"success"}),e.locked&&t.push({text:"Locked",class:"neutral"}),e.trashed&&t.push({text:"Deleted",class:"danger"}),e.conflictOf&&t.push({text:"Conflicted Copy",class:"danger"}),e.errorDecrypting&&(e.waitingForKey?t.push({text:"Waiting For Keys",class:"info"}):t.push({text:"Missing Keys",class:"danger"})),e.deleted&&t.push({text:"Deletion Pending Sync",class:"danger"}),this.noteFlags[e.uuid]=t}displayableNotes(){return this.getState().notes}getFirstNonProtectedNote(){const e=this.displayableNotes();let t=0,n=e[t];for(;n&&n.protected&&(t++,!(t>=e.length));)n=e[t];return n}selectFirstNote(){const e=this.getFirstNonProtectedNote();e&&this.selectNote(e)}selectNextNote(){const e=this.displayableNotes(),t=e.findIndex(e=>e.uuid===this.activeEditorNote.uuid);t+1<e.length&&this.selectNote(e[t+1])}selectNextOrCreateNew(){const e=this.getFirstNonProtectedNote();e?this.selectNote(e):this.appState.selectedTag&&this.appState.selectedTag.isSmartTag()?this.appState.closeActiveEditor():this.createPlaceholderNote()}selectPreviousNote(){const e=this.displayableNotes(),t=e.indexOf(this.activeEditorNote);return t-1>=0&&(this.selectNote(e[t-1]),!0)}isFiltering(){return this.getState().noteFilter.text&&this.getState().noteFilter.text.length>0}async setNoteFilterText(e){await this.setNotesState({noteFilter:{...this.getState().noteFilter,text:e}})}async clearFilterText(){await this.setNoteFilterText(""),this.onFilterEnter(),this.filterTextChanged(),this.resetPagination()}async filterTextChanged(){this.searchSubmitted&&(this.searchSubmitted=!1),this.reloadNotesDisplayOptions(),await this.reloadNotes()}onFilterEnter(){this.searchSubmitted=!0,this.application.getDesktopService().searchText(this.getState().noteFilter.text)}selectedMenuItem(){this.setShowMenuFalse()}toggleWebPrefKey(e){this.application.getPrefsService().setUserPrefValue(e,!this.state[e],!0)}selectedSortByCreated(){this.setSortBy(pe.CreatedAt)}selectedSortByUpdated(){this.setSortBy(pe.ClientUpdatedAt)}selectedSortByTitle(){this.setSortBy(pe.Title)}toggleReverseSort(){this.selectedMenuItem(),this.application.getPrefsService().setUserPrefValue(s.WebPrefKey.SortNotesReverse,!this.getState().sortReverse,!0)}setSortBy(e){this.application.getPrefsService().setUserPrefValue(s.WebPrefKey.SortNotesBy,e,!0)}getSearchBar(){return document.getElementById("search-bar")}registerKeyboardShortcuts(){this.newNoteKeyObserver=this.application.getKeyboardService().addKeyObserver({key:"n",modifiers:[C.Meta,C.Ctrl],onKeyDown:e=>{e.preventDefault(),this.createNewNote()}}),this.nextNoteKeyObserver=this.application.getKeyboardService().addKeyObserver({key:_.Down,elements:[document.body,this.getSearchBar()],onKeyDown:e=>{const t=this.getSearchBar();t===document.activeElement&&t.blur(),this.selectNextNote()}}),this.previousNoteKeyObserver=this.application.getKeyboardService().addKeyObserver({key:_.Up,element:document.body,onKeyDown:e=>{this.selectPreviousNote()}}),this.searchKeyObserver=this.application.getKeyboardService().addKeyObserver({key:"f",modifiers:[C.Meta,C.Shift],onKeyDown:e=>{const t=this.getSearchBar();t&&t.focus()}})}}ye.$inject=["$timeout"];class me extends O{constructor(){super(),this.template=be.a,this.replace=!0,this.controller=ye,this.controllerAs="self",this.bindToController=!0,this.scope={application:"="}}}var Fe=n(62),Ue=n.n(Fe);function fe(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}class Ge extends R{constructor(e){super(e),fe(this,"application",void 0),fe(this,"panelPuppet",void 0),fe(this,"unregisterComponent",void 0),fe(this,"component",void 0),fe(this,"editingOriginalName",void 0),fe(this,"formData",{}),fe(this,"titles",{}),fe(this,"removeTagsObserver",void 0),fe(this,"onPanelResize",(e,t,n,r)=>{this.application.getPrefsService().setUserPrefValue(s.WebPrefKey.TagsPanelWidth,e,!0),this.application.getAppState().panelDidResize("tags",r)}),this.panelPuppet={onReady:()=>this.loadPreferences()}}deinit(){this.removeTagsObserver(),this.removeTagsObserver=void 0,this.unregisterComponent(),this.unregisterComponent=void 0,super.deinit()}getInitialState(){return{tags:[],smartTags:[],noteCounts:{}}}getState(){return this.state}async setTagState(e){return this.setState(e)}async onAppStart(){super.onAppStart(),this.registerComponentHandler()}async onAppLaunch(){super.onAppLaunch(),this.loadPreferences(),this.beginStreamingItems();const e=this.application.getSmartTags();this.setTagState({smartTags:e}),this.selectTag(e[0])}onAppIncrementalSync(){super.onAppIncrementalSync(),this.reloadNoteCounts()}getMappedTags(){return this.application.getItems(s.ContentType.Tag).sort((e,t)=>e.title<t.title?-1:1)}beginStreamingItems(){this.removeTagsObserver=this.application.streamItems(s.ContentType.Tag,async e=>{if(await this.setTagState({tags:this.getMappedTags(),smartTags:this.application.getSmartTags()}),this.reloadTitles(e),this.reloadNoteCounts(),this.getState().selectedTag){const t=e.find(e=>e.uuid===this.getState().selectedTag.uuid);t&&(t.deleted?this.selectTag(this.getState().smartTags[0]):this.setTagState({selectedTag:t}))}})}reloadTitles(e){for(const t of e)this.titles[t.uuid]=t.title}onAppStateEvent(e,t){e===G.b.PreferencesChanged?this.loadPreferences():e===G.b.TagChanged&&this.setTagState({selectedTag:this.application.getAppState().getSelectedTag()})}async onAppEvent(e){super.onAppEvent(e),e===s.ApplicationEvent.LocalDataIncrementalLoad&&this.reloadNoteCounts()}reloadNoteCounts(){let e=[];this.getState().tags&&(e=e.concat(this.getState().tags)),this.getState().smartTags&&(e=e.concat(this.getState().smartTags));const t={};for(const n of e)if(n.isSmartTag()){if(n.isAllTag){const e=this.application.notesMatchingSmartTag(n).filter(e=>!e.archived&&!e.trashed);t[n.uuid]=e.length}}else{const e=this.application.referencesForItem(n,s.ContentType.Note).filter(e=>!e.archived&&!e.trashed);t[n.uuid]=e.length}this.setTagState({noteCounts:t})}loadPreferences(){if(!this.panelPuppet.ready)return;const e=this.application.getPrefsService().getValue(s.WebPrefKey.TagsPanelWidth);e&&(this.panelPuppet.setWidth(e),this.panelPuppet.isCollapsed()&&this.application.getAppState().panelDidResize("tags",this.panelPuppet.isCollapsed()))}registerComponentHandler(){this.unregisterComponent=this.application.componentManager.registerHandler({identifier:"tags",areas:[s.ComponentArea.TagsList],activationHandler:(e,t)=>{this.component=t},contextRequestHandler:()=>{},actionHandler:(e,t,n)=>{if(t===s.ComponentAction.SelectItem)if(n.item.content_type===s.ContentType.Tag){const e=this.application.findItem(n.item.uuid);e&&this.selectTag(e)}else n.item.content_type===s.ContentType.SmartTag&&this.application.createTemplateItem(s.ContentType.SmartTag,n.item.content).then(e=>{this.selectTag(e)});else t===s.ComponentAction.ClearSelection&&this.selectTag(this.getState().smartTags[0])}})}async selectTag(e){e.conflictOf&&this.application.changeAndSaveItem(e.uuid,e=>{e.conflictOf=void 0}),this.application.getAppState().setSelectedTag(e)}async clickedAddNewTag(){if(this.getState().editingTag)return;const e=await this.application.createTemplateItem(s.ContentType.Tag);this.setTagState({tags:[e].concat(this.getState().tags),previousTag:this.getState().selectedTag,selectedTag:e,editingTag:e,templateTag:e})}onTagTitleChange(e){this.setTagState({editingTag:e})}async saveTag(e,t){return e.target.blur(),this.getState().templateTag?this.saveNewTag():this.saveTagRename(t)}async saveTagRename(e){const t=this.titles[e.uuid]||"";if(0===t.length)return this.titles[e.uuid]=this.editingOriginalName,void(this.editingOriginalName=void 0);const n=this.application.findTagByTitle(t);n&&n.uuid!==e.uuid?this.application.alertService.alert("A tag with this name already exists."):(await this.application.changeAndSaveItem(e.uuid,e=>{e.title=t}),await this.setTagState({editingTag:void 0}))}async saveNewTag(){const e=this.getState().templateTag,t=this.titles[e.uuid]||"";if(0===t.length)return void await this.setTagState({templateTag:void 0});if(this.application.findTagByTitle(t))return void this.application.alertService.alert("A tag with this name already exists.");const n=await this.application.insertItem(e),r=await this.application.changeItem(n.uuid,e=>{e.title=t});await this.setTagState({templateTag:void 0,editingTag:void 0}),this.selectTag(r),await this.application.saveItem(r.uuid)}async selectedRenameTag(e){this.editingOriginalName=e.title,await this.setTagState({editingTag:e}),document.getElementById("tag-"+e.uuid).focus()}selectedDeleteTag(e){this.removeTag(e)}async removeTag(e){await Object(l.c)({text:"Are you sure you want to delete this tag? Note: deleting a tag will not delete its notes.",confirmButtonStyle:"danger"})&&(this.application.deleteItem(e),this.selectTag(this.getState().smartTags[0]))}}Ge.$inject=["$timeout"];class Ee extends O{constructor(){super(),this.restrict="E",this.scope={application:"="},this.template=Ue.a,this.replace=!0,this.controller=Ge,this.controllerAs="self",this.bindToController=!0}}var ve=n(63),Ze=n.n(ve);function Xe(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}class We extends R{constructor(e,t){super(t),Xe(this,"$element",void 0),Xe(this,"processingTypes",[]),Xe(this,"application",void 0),Xe(this,"challenge",void 0),Xe(this,"cancelable",!1),this.$element=e}getState(){return this.state}$onInit(){super.$onInit();const e={},t=this.challenge.types;for(const n of t)e[n]={value:"",invalid:!1};let n;switch(this.challenge.reason){case s.ChallengeReason.ApplicationUnlock:case s.ChallengeReason.Migration:n=!0,this.cancelable=!1;break;case s.ChallengeReason.ProtocolUpgrade:case s.ChallengeReason.ResaveRootKey:n=!1,this.cancelable=!0}this.cancelable=!n,this.setState({types:t,values:e,processing:!1,forgotPasscode:!1,showForgotPasscodeLink:n,hasAccount:this.application.hasAccount()}),this.application.setChallengeCallbacks({challenge:this.challenge,onValidValue:e=>{this.getState().values[e.type].invalid=!1,Object(s.removeFromArray)(this.processingTypes,e.type),this.reloadProcessingStatus()},onInvalidValue:e=>{this.getState().values[e.type].invalid=!0,Object(s.removeFromArray)(this.processingTypes,e.type),this.reloadProcessingStatus()},onComplete:()=>{this.dismiss()}})}deinit(){this.application=void 0,this.challenge=void 0,super.deinit()}reloadProcessingStatus(){this.setState({processing:this.processingTypes.length>0})}get title(){return this.challenge.reason===s.ChallengeReason.Migration?"Storage Update":"Authentication Required"}promptForChallenge(e){return e===s.ChallengeType.LocalPasscode?this.challenge.reason===s.ChallengeReason.Migration?"Your application passcode is required to perform an upgrade of your local data storage structure.":"Enter your application passcode":"Enter your account password"}async destroyLocalData(){await Object(l.c)({text:J,confirmButtonStyle:"danger"})&&(await this.application.signOut(),this.dismiss())}cancel(){this.cancelable&&(this.application.cancelChallenge(this.challenge),this.dismiss())}onForgotPasscodeClick(){this.setState({forgotPasscode:!0})}onTextValueChange(e){const t=this.getState().values;t[e].invalid=!1,this.setState({values:t})}validate(){for(const e of this.getState().types){const t=this.getState().values[e];t&&0!==t.value.length||(this.getState().values[e].invalid=!0)}return 0===[].length}async submit(){if(!this.validate())return;await this.setState({processing:!0});const e=[];for(const t of Object.keys(this.getState().values)){const n=Number(t);if(this.getState().values[n].invalid)continue;const r=this.getState().values[n].value,a=new s.ChallengeValue(n,r);e.push(a)}this.processingTypes=e.map(e=>e.type),e.length>0?this.application.submitValuesForChallenge(this.challenge,e):this.setState({processing:!1})}dismiss(){const e=this.$element;e.scope().$destroy(),e.remove()}}We.$inject=["$element","$timeout"];class Re extends O{constructor(){super(),this.restrict="E",this.template=Ze.a,this.controller=We,this.controllerAs="ctrl",this.bindToController=!0,this.scope={challenge:"=",application:"="}}}function Ve(e){return{restrict:"A",scope:{shouldFocus:"="},link:function(t,n){e(()=>{t.shouldFocus&&n[0].focus()})}}}function Oe(e){return{restrict:"A",replace:!1,link(t,n,r){let a=!1;function o(e){a=!1,r.isOpen&&e.stopPropagation()}function i(e){e.target.closest(".sk-modal")||a||(t.$apply(r.clickOutside),a=!0)}t.$on("$destroy",()=>{r.clickOutside=void 0,n.unbind("click",o),e.unbind("click",i)}),n.bind("click",o),e.bind("click",i)}}}function xe(e){return{restrict:"A",scope:{show:"=",delay:"@"},link:function(t,n){const r=t,o=()=>{r.hidePromise=e(i.bind(this,!1),c())},i=e=>{e?n.css({display:""}):n.css({display:"none"})},c=()=>{const e=parseInt(r.delay);return a.a.isNumber(e)?e:200};i(!1),t.$watch("show",(function(t){t?(r.hidePromise&&(e.cancel(r.hidePromise),r.hidePromise=null),i(!0)):o()}))}}}function Te(e){return{restrict:"A",link:function(t,n,r){n.ready((function(){t.$apply((function(){e(r.elemReady)(t)}))}))}}}Ve.$inject=["$timeout"],Oe.$inject=["$document"],xe.$inject=["$timeout"],Te.$inject=["$parse"];var Ne=n(50);var we=n(64),ke=n.n(we);function Ye(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}class Se extends R{constructor(e,t){super(e),Ye(this,"appVersion",void 0),Ye(this,"syncStatus",void 0),Ye(this,"closeFunction",void 0),this.appVersion=t}getInitialState(){return{appVersion:"v"+(window.electronAppVersion||this.appVersion),passcodeAutoLockOptions:this.application.getLockService().getAutoLockIntervalOptions(),user:this.application.getUser(),formData:{mergeLocal:!0,ephemeral:!1},mutable:{}}}getState(){return this.state}async onAppKeyChange(){super.onAppKeyChange(),this.setState(this.refreshedCredentialState())}async onAppLaunch(){super.onAppLaunch(),this.setState(this.refreshedCredentialState()),this.loadHost(),this.reloadAutoLockInterval(),this.loadBackupsAvailability()}refreshedCredentialState(){return{user:this.application.getUser(),canAddPasscode:!this.application.isEphemeralSession(),hasPasscode:this.application.hasPasscode(),showPasscodeForm:!1}}$onInit(){super.$onInit(),this.initProps({closeFunction:this.closeFunction}),this.syncStatus=this.application.getSyncStatus()}close(){this.$timeout(()=>{this.props.closeFunction()})}async loadHost(){const e=await this.application.getHost();this.setState({server:e,formData:{...this.getState().formData,url:e}})}onHostInputChange(){const e=this.getState().formData.url;this.application.setHost(e)}async loadBackupsAvailability(){const e=!Object(o.f)(this.application.getUser()),t=this.application.hasPasscode(),n=e||t;this.setState({encryptionStatusString:e?"End-to-end encryption is enabled. Your data is encrypted on your device first, then synced to your private cloud.":t?"Encryption is enabled. Your data is encrypted using your passcode before it is saved to your device storage.":"Encryption is not enabled. Sign in, register, or add a passcode lock to enable encryption.",encryptionEnabled:n,mutable:{...this.getState().mutable,backupEncrypted:n}})}submitMfaForm(){this.login()}blurAuthFields(){const e=["email","password","password_conf"];for(const t of e){const e=document.getElementsByName(t)[0];e&&e.blur()}}submitAuthForm(){this.getState().formData.email&&this.getState().formData.user_password&&(this.blurAuthFields(),this.getState().formData.showLogin?this.login():this.register())}async setFormDataState(e){return this.setState({formData:{...this.getState().formData,...e}})}async login(){await this.setFormDataState({status:"Generating Login Keys...",authenticating:!0});const e=this.getState().formData,t=await this.application.signIn(e.email,e.user_password,e.strictSignin,e.ephemeral,e.mfa&&e.mfa.payload.mfa_key,e.userMfaCode,e.mergeLocal);if(!(!t||t.error))return await this.setFormDataState({authenticating:!1,user_password:void 0}),void this.close();const n=t?t.error:{message:"An unknown error occured."};"mfa-required"===n.tag||"mfa-invalid"===n.tag?await this.setFormDataState({showLogin:!1,mfa:n,status:void 0}):(await this.setFormDataState({showLogin:!0,mfa:void 0,status:void 0,user_password:void 0}),n.message&&this.application.alertService.alert(n.message)),await this.setFormDataState({authenticating:!1})}async register(){if(this.getState().formData.password_conf!==this.getState().formData.user_password)return void this.application.alertService.alert("The two passwords you entered do not match. Please try again.");await this.setFormDataState({confirmPassword:!1,status:"Generating Account Keys...",authenticating:!0});const e=await this.application.register(this.getState().formData.email,this.getState().formData.user_password,this.getState().formData.ephemeral,this.getState().formData.mergeLocal);if(!e||e.error){await this.setFormDataState({status:void 0});const t=e?e.error:{message:"An unknown error occured."};await this.setFormDataState({authenticating:!1}),this.application.alertService.alert(t.message)}else await this.setFormDataState({authenticating:!1}),this.close()}async mergeLocalChanged(){this.getState().formData.mergeLocal||await Object(l.c)({text:"Unchecking this option means any of the notes you have written while you were signed out will be deleted. Are you sure you want to discard these notes?",confirmButtonStyle:"danger"})&&this.setFormDataState({mergeLocal:!0})}openPasswordWizard(){this.close(),this.application.presentPasswordWizard(x.ChangePassword)}async openPrivilegesModal(){const e=()=>{this.application.presentPrivilegesManagementModal(),this.close()};await this.application.privilegesService.actionRequiresPrivilege(s.ProtectedAction.ManagePrivileges)?this.application.presentPrivilegesModal(s.ProtectedAction.ManagePrivileges,()=>{e()}):e()}async destroyLocalData(){await Object(l.c)({text:J,confirmButtonStyle:"danger"})&&this.application.signOut()}async submitImportPassword(){await this.performImport(this.getState().importData.data,this.getState().importData.password)}async readFile(e){return new Promise(t=>{const n=new FileReader;n.onload=e=>{try{const n=JSON.parse(e.target.result);t(n)}catch(e){this.application.alertService.alert("Unable to open file. Ensure it is a proper JSON file and try again.")}},n.readAsText(e)})}async importFileSelected(e){const t=async()=>{const t=e[0],n=await this.readFile(t);if(n)if(n.auth_params||n.keyParams){await this.setState({importData:{...this.getState().importData,requestPassword:!0,data:n}});const e=document.getElementById("import-password-request");e&&e.scrollIntoView(!1)}else await this.performImport(n,void 0)};await this.application.privilegesService.actionRequiresPrivilege(s.ProtectedAction.ManageBackups)?this.application.presentPrivilegesModal(s.ProtectedAction.ManageBackups,t):t()}async performImport(e,t){await this.setState({importData:{...this.getState().importData,loading:!0}});const n=await this.importJSONData(e,t);if(this.setState({importData:null}),n>0){const e=function(e){return`Import complete. ${e} items were not imported because there was an error decrypting them. Make sure the password is correct and try again.`}(n);this.application.alertService.alert(e)}else this.application.alertService.alert("Your data has been successfully imported.")}async importJSONData(e,t){const{errorCount:n}=await this.application.importData(e,t);return n}async downloadDataArchive(){this.application.getArchiveService().downloadBackup(this.getState().mutable.backupEncrypted)}notesAndTagsCount(){return this.application.getItems([s.ContentType.Note,s.ContentType.Tag]).length}encryptionStatusForNotes(){const e=this.notesAndTagsCount();return e+"/"+e+" notes and tags encrypted"}async reloadAutoLockInterval(){const e=await this.application.getLockService().getAutoLockInterval();this.setState({selectedAutoLockInterval:e})}async selectAutoLockInterval(e){const t=async()=>{await this.application.getLockService().setAutoLockInterval(e),this.reloadAutoLockInterval()};await this.application.privilegesService.actionRequiresPrivilege(s.ProtectedAction.ManagePasscode)?this.application.presentPrivilegesModal(s.ProtectedAction.ManagePasscode,()=>{t()}):t()}hidePasswordForm(){this.setFormDataState({showLogin:!1,showRegister:!1,user_password:void 0,password_conf:void 0})}hasPasscode(){return this.application.hasPasscode()}addPasscodeClicked(){this.setFormDataState({showPasscodeForm:!0})}submitPasscodeForm(){const e=this.getState().formData.passcode;e===this.getState().formData.confirmPasscode?(this.getState().formData.changingPasscode?this.application.changePasscode(e):this.application.setPasscode(e)).then(()=>{this.setFormDataState({passcode:void 0,confirmPasscode:void 0,showPasscodeForm:!1})}):this.application.alertService.alert("The two passcodes you entered do not match. Please try again.")}async changePasscodePressed(){const e=()=>{this.getState().formData.changingPasscode=!0,this.addPasscodeClicked()};await this.application.privilegesService.actionRequiresPrivilege(s.ProtectedAction.ManagePasscode)?this.application.presentPrivilegesModal(s.ProtectedAction.ManagePasscode,e):e()}async removePasscodePressed(){const e=async()=>{let e="Are you sure you want to remove your application passcode?";!Object(o.f)(await this.application.getUser())||(e+=" This will remove encryption from your local data."),await Object(l.c)({text:e,confirmButtonStyle:"danger"})&&this.application.removePasscode()};await this.application.privilegesService.actionRequiresPrivilege(s.ProtectedAction.ManagePasscode)?this.application.presentPrivilegesModal(s.ProtectedAction.ManagePasscode,e):e()}isDesktopApplication(){return Object(o.d)()}}Se.$inject=["$timeout","appVersion"];class He extends O{constructor(){super(),this.restrict="E",this.template=ke.a,this.controller=Se,this.controllerAs="self",this.bindToController=!0,this.scope={closeFunction:"&",application:"="}}}var De=n(65),Je=n.n(De);function Pe(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}class Me extends R{constructor(e){super(e),Pe(this,"application",void 0),Pe(this,"item",void 0),Pe(this,"loadingExtensions",!0),this.state={extensions:[]}}$onInit(){super.$onInit(),this.initProps({item:this.item}),this.loadExtensions()}async loadExtensions(){const e=this.application.actionsManager.getExtensions().sort((e,t)=>e.name.toLowerCase()<t.name.toLowerCase()?-1:1),t=await Promise.all(e.map(e=>this.application.actionsManager.loadExtensionInContextOfItem(e,this.props.item)));0==t.length&&(this.loadingExtensions=!1),await this.setState({extensions:t})}async executeAction(e,t){if("nested"===e.verb){if(!e.subrows){const n=this.subRowsForAction(e,t);await this.updateAction(e,t,{subrows:n})}return}await this.updateAction(e,t,{running:!0});const n=await this.application.actionsManager.runAction(e,this.props.item,async()=>"");n.error?await this.updateAction(e,t,{error:!0}):(await this.updateAction(e,t,{running:!1}),this.handleActionResponse(e,n),await this.reloadExtension(t))}handleActionResponse(e,t){switch(e.verb){case"render":{const e=t.item;this.application.presentRevisionPreviewModal(e.uuid,e.content)}}}subRowsForAction(e,t){if(e.subactions)return e.subactions.map(e=>({onClick:()=>{this.executeAction(e,t)},label:e.label,subtitle:e.desc,spinnerClass:e.running?"info":void 0}))}async updateAction(e,t,n){const r=await this.application.changeItem(t.uuid,r=>{r.actions=t.actions.map(t=>t&&n&&t.verb===e.verb&&t.url===e.url?{...e,running:null==n?void 0:n.running,error:null==n?void 0:n.error,subrows:(null==n?void 0:n.subrows)||(null==t?void 0:t.subrows)}:t)});await this.updateExtension(r)}async updateExtension(e,t){const n=await this.application.changeItem(e.uuid,e=>{e.hidden=t&&t.hidden}),r=this.state.extensions.map(t=>e.uuid===t.uuid?n:t);await this.setState({extensions:r})}async reloadExtension(e){const t=await this.application.actionsManager.loadExtensionInContextOfItem(e,this.props.item),n=this.state.extensions.map(n=>e.uuid===n.uuid?t:n);this.setState({extensions:n})}}Me.$inject=["$timeout"];class Le extends O{constructor(){super(),this.restrict="E",this.template=Je.a,this.replace=!0,this.controller=Me,this.controllerAs="self",this.bindToController=!0,this.scope={item:"=",application:"="}}}var ze=n(66),je=n.n(ze);function Ke(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}class qe{constructor(e){Ke(this,"$element",void 0),Ke(this,"componentUuid",void 0),Ke(this,"onDismiss",void 0),Ke(this,"application",void 0),Ke(this,"liveComponent",void 0),Ke(this,"component",void 0),this.$element=e}$onInit(){this.liveComponent=new s.LiveItem(this.componentUuid,this.application,e=>{this.component=e}),this.application.componentGroup.activateComponent(this.component)}$onDestroy(){this.application.componentGroup.deactivateComponent(this.component),this.liveComponent.deinit()}dismiss(){this.onDismiss&&this.onDismiss();const e=this.$element;e.scope().$destroy(),e.remove()}}qe.$inject=["$element"];class $e extends O{constructor(){super(),this.restrict="E",this.template=je.a,this.controller=qe,this.controllerAs="ctrl",this.bindToController=!0,this.scope={componentUuid:"=",onDismiss:"&",application:"="}}}var et=n(67),tt=n.n(et);function nt(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}class rt{constructor(e,t,n){nt(this,"onLoad",void 0),nt(this,"componentUuid",void 0),nt(this,"application",void 0),nt(this,"liveComponent",void 0),nt(this,"$rootScope",void 0),nt(this,"$timeout",void 0),nt(this,"componentValid",!0),nt(this,"cleanUpOn",void 0),nt(this,"unregisterComponentHandler",void 0),nt(this,"unregisterDesktopObserver",void 0),nt(this,"issueLoading",!1),nt(this,"reloading",!1),nt(this,"expired",!1),nt(this,"loading",!1),nt(this,"didAttemptReload",!1),nt(this,"error",void 0),nt(this,"loadTimeout",void 0),this.$rootScope=t,this.$timeout=n,this.cleanUpOn=e.$on("ext-reload-complete",()=>{this.reloadStatus(!1)}),this.onVisibilityChange=this.onVisibilityChange.bind(this)}$onDestroy(){this.cleanUpOn(),this.cleanUpOn=void 0,this.unregisterComponentHandler(),this.unregisterComponentHandler=void 0,this.unregisterDesktopObserver(),this.unregisterDesktopObserver=void 0,this.liveComponent.deinit(),this.liveComponent=void 0,this.application=void 0,this.onVisibilityChange=void 0,this.onLoad=void 0,document.removeEventListener("visibilitychange",this.onVisibilityChange)}$onInit(){this.liveComponent=new s.LiveItem(this.componentUuid,this.application),this.registerComponentHandlers(),this.registerPackageUpdateObserver()}get component(){var e;return null===(e=this.liveComponent)||void 0===e?void 0:e.item}onIframeInit(){this.$timeout(()=>{this.loadComponent()})}loadComponent(){if(!this.component)throw"Component view is missing component";if(!this.component.active)throw"Component view component must be active";const e=this.application.componentManager.iframeForComponent(this.componentUuid);e&&(this.loading=!0,this.loadTimeout&&this.$timeout.cancel(this.loadTimeout),this.loadTimeout=this.$timeout(()=>{this.handleIframeLoadTimeout()},4e3),e.onload=()=>{this.reloadStatus(),this.handleIframeLoad(e)})}registerPackageUpdateObserver(){this.unregisterDesktopObserver=this.application.getDesktopService().registerUpdateObserver(e=>{e.uuid===this.component.uuid&&e.active&&this.reloadIframe()})}registerComponentHandlers(){this.unregisterComponentHandler=this.application.componentManager.registerHandler({identifier:"component-view-"+Math.random(),areas:[this.component.area],actionHandler:(e,t,n)=>{t===s.ComponentAction.SetSize&&this.application.componentManager.handleSetSizeEvent(e,n)}})}reloadIframe(){this.$timeout(()=>{this.reloading=!0,this.$timeout(()=>{this.reloading=!1})})}onVisibilityChange(){"hidden"!==document.visibilityState&&this.issueLoading&&this.reloadIframe()}reloadStatus(e=!0){const t=this.component,n=t.offlineOnly&&!Object(o.d)(),r=Object(o.d)()?!t.local_url&&!t.hasValidHostedUrl():!t.hasValidHostedUrl();this.expired=t.valid_until&&t.valid_until<=new Date,this.application.componentManager.getReadonlyStateForComponent(t).lockReadonly||this.application.componentManager.setReadonlyStateForComponent(t,this.expired),this.componentValid=!n&&!r,this.componentValid||(this.loading=!1),this.error=n?"offline-restricted":r?"url-missing":void 0,this.expired&&e&&this.$rootScope.$broadcast("reload-ext-dat")}async handleIframeLoadTimeout(){this.loading&&(this.loading=!1,this.issueLoading=!0,this.didAttemptReload?document.addEventListener("visibilitychange",this.onVisibilityChange):(this.didAttemptReload=!0,this.reloadIframe()))}async handleIframeLoad(e){let t=!1;if(Object(o.d)())try{e.contentWindow.origin&&"null"!==e.contentWindow.origin||(t=!0)}catch(e){}this.$timeout.cancel(this.loadTimeout),await this.application.componentManager.registerComponentWindow(this.component,e.contentWindow);this.$timeout(()=>{this.loading=!1,this.issueLoading=!!t,this.onLoad&&this.onLoad(this.component)},7)}getUrl(){return this.application.componentManager.urlForComponent(this.component)}}rt.$inject=["$scope","$rootScope","$timeout"];class at extends O{constructor(){super(),this.restrict="E",this.template=tt.a,this.scope={componentUuid:"=",onLoad:"=?",application:"="},this.controller=rt,this.controllerAs="ctrl",this.bindToController=!0}}var ot=n(68),it=n.n(ot);function ct(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}class st extends R{constructor(e){super(e),ct(this,"callback",void 0),ct(this,"selectedEditorUuid",void 0),ct(this,"currentItem",void 0),ct(this,"application",void 0),this.state={isDesktop:Object(o.d)()}}isEditorSelected(e){return!!this.selectedEditorUuid&&this.selectedEditorUuid===e.uuid}isEditorDefault(e){var t;return(null===(t=this.state.defaultEditor)||void 0===t?void 0:t.uuid)===e.uuid}$onInit(){super.$onInit();const e=this.application.componentManager.componentsForArea(s.ComponentArea.Editor).sort((e,t)=>e.name.toLowerCase()<t.name.toLowerCase()?-1:1),t=e.filter(e=>e.isDefaultEditor())[0];this.setState({editors:e,defaultEditor:t})}selectComponent(e){e&&e.conflictOf&&this.application.changeAndSaveItem(e.uuid,e=>{e.conflictOf=void 0}),this.$timeout(()=>{this.callback()(e)})}toggleDefaultForEditor(e){this.state.defaultEditor===e?this.removeEditorDefault(e):this.makeEditorDefault(e)}offlineAvailableForComponent(e){return e.local_url&&this.state.isDesktop}makeEditorDefault(e){const t=this.application.componentManager.componentsForArea(s.ComponentArea.Editor).filter(e=>e.isDefaultEditor())[0];t&&this.application.changeItem(t.uuid,e=>{e.defaultEditor=!1}),this.application.changeAndSaveItem(e.uuid,e=>{e.defaultEditor=!0}),this.setState({defaultEditor:e})}removeEditorDefault(e){this.application.changeAndSaveItem(e.uuid,e=>{e.defaultEditor=!1}),this.setState({defaultEditor:null})}}st.$inject=["$timeout"];class lt extends O{constructor(){super(),this.restrict="E",this.template=it.a,this.controller=st,this.controllerAs="self",this.bindToController=!0,this.scope={callback:"&",selectedEditorUuid:"=",currentItem:"=",application:"="}}}var gt=n(69),It=n.n(gt);function Bt(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}class At{constructor(e){Bt(this,"$element",void 0),Bt(this,"type",void 0),Bt(this,"title",void 0),Bt(this,"message",void 0),Bt(this,"callback",void 0),Bt(this,"formData",{input:""}),this.$element=e}dismiss(){const e=this.$element;e.scope().$destroy(),e.remove()}submit(){this.callback(this.formData.input),this.dismiss()}}At.$inject=["$element"];class ut extends O{constructor(){super(),this.restrict="E",this.template=It.a,this.controller=At,this.controllerAs="ctrl",this.bindToController=!0,this.scope={type:"=",title:"=",message:"=",callback:"&"}}}var dt=n(70),_t=n.n(dt);function Ct(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}class bt{constructor(){Ct(this,"disabled",void 0),Ct(this,"action",void 0),Ct(this,"buttonAction",void 0)}onClick(e){this.disabled||(e.stopPropagation(),this.action())}clickAccessoryButton(e){this.disabled||(e.stopPropagation(),this.buttonAction())}}class pt extends O{constructor(){super(),this.restrict="E",this.transclude=!0,this.template=_t.a,this.controller=bt,this.controllerAs="ctrl",this.bindToController=!0,this.scope={action:"&",buttonAction:"&",buttonClass:"=",buttonText:"=",desc:"=",disabled:"=",circle:"=",circleAlign:"=",faded:"=",hasButton:"=",label:"=",spinnerClass:"=",stylekitClass:"=",subRows:"=",subtitle:"="}}}var Qt,ht,yt,mt=n(71),Ft=n.n(mt);function Ut(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}!function(e){e.Right="right",e.Left="left"}(Qt||(Qt={})),function(e){e.Move="mousemove",e.Down="mousedown",e.Up="mouseup"}(ht||(ht={})),function(e){e.Hoverable="hoverable",e.AlwaysVisible="always-visible",e.Dragging="dragging",e.NoSelection="no-selection",e.Collapsed="collapsed",e.AnimateOpacity="animate-opacity"}(yt||(yt={}));class ft{constructor(e,t,n){Ut(this,"alwaysVisible",void 0),Ut(this,"collapsable",void 0),Ut(this,"control",void 0),Ut(this,"defaultWidth",void 0),Ut(this,"hoverable",void 0),Ut(this,"index",void 0),Ut(this,"minWidth",void 0),Ut(this,"onResizeFinish",void 0),Ut(this,"panelId",void 0),Ut(this,"property",void 0),Ut(this,"$compile",void 0),Ut(this,"$element",void 0),Ut(this,"$timeout",void 0),Ut(this,"panel",void 0),Ut(this,"resizerColumn",void 0),Ut(this,"currentMinWidth",0),Ut(this,"pressed",!1),Ut(this,"startWidth",0),Ut(this,"lastDownX",0),Ut(this,"collapsed",!1),Ut(this,"lastWidth",0),Ut(this,"startLeft",0),Ut(this,"lastLeft",0),Ut(this,"appFrame",void 0),Ut(this,"widthBeforeLastDblClick",0),Ut(this,"overlay",void 0),this.$compile=e,this.$element=t,this.$timeout=n,this.handleResize=Object(o.b)(this.handleResize.bind(this),250),this.onMouseMove=this.onMouseMove.bind(this),this.onMouseUp=this.onMouseUp.bind(this),this.onMouseDown=this.onMouseDown.bind(this)}$onInit(){this.configureDefaults(),this.reloadDefaultValues(),this.configureControl(),this.addDoubleClickHandler(),this.resizerColumn.addEventListener(ht.Down,this.onMouseDown),document.addEventListener(ht.Move,this.onMouseMove),document.addEventListener(ht.Up,this.onMouseUp)}$onDestroy(){this.onResizeFinish=void 0,this.control=void 0,window.removeEventListener("resize",this.handleResize),document.removeEventListener(ht.Move,this.onMouseMove),document.removeEventListener(ht.Up,this.onMouseUp),this.resizerColumn.removeEventListener(ht.Down,this.onMouseDown),this.handleResize=void 0,this.onMouseMove=void 0,this.onMouseUp=void 0,this.onMouseDown=void 0}configureControl(){this.control.setWidth=e=>{this.setWidth(e,!0)},this.control.setLeft=e=>{this.setLeft(e)},this.control.flash=()=>{this.flash()},this.control.isCollapsed=()=>this.isCollapsed(),this.control.ready=!0,this.control.onReady()}configureDefaults(){this.panel=document.getElementById(this.panelId),this.panel?(this.resizerColumn=this.$element[0],this.currentMinWidth=this.minWidth||this.resizerColumn.offsetWidth,this.pressed=!1,this.startWidth=this.panel.scrollWidth,this.lastDownX=0,this.collapsed=!1,this.lastWidth=this.startWidth,this.startLeft=this.panel.offsetLeft,this.lastLeft=this.startLeft,this.appFrame=void 0,this.widthBeforeLastDblClick=0,this.property===Qt.Right&&this.configureRightPanel(),this.alwaysVisible&&this.resizerColumn.classList.add(yt.AlwaysVisible),this.hoverable&&this.resizerColumn.classList.add(yt.Hoverable)):console.error("Panel not found for",this.panelId)}configureRightPanel(){window.addEventListener("resize",this.handleResize)}handleResize(){this.reloadDefaultValues(),this.handleWidthEvent(),this.$timeout(()=>{this.finishSettingWidth()})}getParentRect(){return this.panel.parentNode.getBoundingClientRect()}reloadDefaultValues(){this.startWidth=this.isAtMaxWidth()?this.getParentRect().width:this.panel.scrollWidth,this.lastWidth=this.startWidth,this.appFrame=document.getElementById("app").getBoundingClientRect()}addDoubleClickHandler(){this.resizerColumn.ondblclick=()=>{this.$timeout(()=>{const e=this.isCollapsed();e?this.setWidth(this.widthBeforeLastDblClick||this.defaultWidth):(this.widthBeforeLastDblClick=this.lastWidth,this.setWidth(this.currentMinWidth)),this.finishSettingWidth();const t=!e;this.onResizeFinish()(this.lastWidth,this.lastLeft,this.isAtMaxWidth(),t)})}}onMouseDown(e){this.addInvisibleOverlay(),this.pressed=!0,this.lastDownX=e.clientX,this.startWidth=this.panel.scrollWidth,this.startLeft=this.panel.offsetLeft,this.panel.classList.add(yt.NoSelection),this.hoverable&&this.resizerColumn.classList.add(yt.Dragging)}onMouseUp(){if(this.removeInvisibleOverlay(),!this.pressed)return;this.pressed=!1,this.resizerColumn.classList.remove(yt.Dragging),this.panel.classList.remove(yt.NoSelection);const e=this.isAtMaxWidth();this.onResizeFinish&&this.onResizeFinish()(this.lastWidth,this.lastLeft,e,this.isCollapsed()),this.finishSettingWidth()}onMouseMove(e){this.pressed&&(e.preventDefault(),this.property&&this.property===Qt.Left?this.handleLeftEvent(e):this.handleWidthEvent(e))}handleWidthEvent(e){let t;e?t=e.clientX:(t=0,this.lastDownX=0);const n=t-this.lastDownX,r=this.startWidth+n;this.setWidth(r,!1)}handleLeftEvent(e){const t=this.panel.getBoundingClientRect();let n=(e.clientX||t.x)-this.lastDownX,r=this.startLeft+n;r<0&&(r=0,n=-this.startLeft);const a=this.getParentRect();let o=this.startWidth-n;o<this.currentMinWidth&&(o=this.currentMinWidth),o>a.width&&(o=a.width),r+o>a.width&&(r=a.width-o),this.setLeft(r),this.setWidth(o,!1)}isAtMaxWidth(){return Math.round(this.lastWidth+this.lastLeft)===Math.round(this.getParentRect().width)}isCollapsed(){return this.lastWidth<=this.currentMinWidth}setWidth(e,t=!1){e<this.currentMinWidth&&(e=this.currentMinWidth);const n=this.getParentRect();e>n.width&&(e=n.width);const r=this.appFrame.width-this.panel.getBoundingClientRect().x;e>r&&(e=r),Math.round(e+this.lastLeft)===Math.round(n.width)?(this.panel.style.width=`calc(100% - ${this.lastLeft}px)`,this.panel.style.flexBasis=`calc(100% - ${this.lastLeft}px)`):(this.panel.style.flexBasis=e+"px",this.panel.style.width=e+"px"),this.lastWidth=e,t&&this.finishSettingWidth()}setLeft(e){this.panel.style.left=e+"px",this.lastLeft=e}finishSettingWidth(){this.collapsable&&(this.collapsed=this.isCollapsed(),this.collapsed?this.resizerColumn.classList.add(yt.Collapsed):this.resizerColumn.classList.remove(yt.Collapsed))}addInvisibleOverlay(){this.overlay||(this.overlay=this.$compile("<div id='resizer-overlay'></div>")(this),a.a.element(document.body).prepend(this.overlay))}removeInvisibleOverlay(){this.overlay&&(this.overlay.remove(),this.overlay=void 0)}flash(){this.resizerColumn.classList.add(yt.AnimateOpacity),this.$timeout(()=>{this.resizerColumn.classList.remove(yt.AnimateOpacity)},3e3)}}ft.$inject=["$compile","$element","$timeout"];class Gt extends O{constructor(){super(),this.restrict="E",this.template=Ft.a,this.controller=ft,this.controllerAs="ctrl",this.bindToController=!0,this.scope={alwaysVisible:"=",collapsable:"=",control:"=",defaultWidth:"=",hoverable:"=",index:"=",minWidth:"=",onResizeFinish:"&",panelId:"=",property:"="}}}var Et=n(72),vt=n.n(Et);function Zt(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}const Xt=1,Wt=2;class Rt extends R{constructor(e,t){super(t),Zt(this,"$element",void 0),Zt(this,"application",void 0),Zt(this,"type",void 0),Zt(this,"isContinuing",!1),this.$element=e,this.registerWindowUnloadStopper()}$onInit(){super.$onInit(),this.initProps({type:this.type,changePassword:this.type===x.ChangePassword,securityUpdate:this.type===x.AccountUpgrade}),this.setState({formData:{},continueTitle:"Continue",step:Xt,title:this.props.changePassword?"Change Password":"Account Update"})}$onDestroy(){super.$onDestroy(),window.onbeforeunload=null}registerWindowUnloadStopper(){window.onbeforeunload=()=>!0}resetContinueState(){this.setState({showSpinner:!1,continueTitle:"Continue"}),this.isContinuing=!1}async nextStep(){if(this.state.lockContinue||this.isContinuing)return;if(this.state.step===Wt)return void this.dismiss();this.isContinuing=!0,this.setState({showSpinner:!0,continueTitle:"Generating Keys..."}),await this.validateCurrentPassword()&&await this.processPasswordChange()?(this.isContinuing=!1,this.setState({showSpinner:!1,continueTitle:"Finish",step:Wt})):this.resetContinueState()}async setFormDataState(e){return this.setState({formData:{...this.state.formData,...e}})}async validateCurrentPassword(){var e;const t=this.state.formData.currentPassword,n=this.props.securityUpdate?t:this.state.formData.newPassword;if(!t||0===t.length)return this.application.alertService.alert("Please enter your current password."),!1;if(this.props.changePassword){if(!n||0===n.length)return this.application.alertService.alert("Please enter a new password."),!1;if(n!==this.state.formData.newPasswordConfirmation)return this.application.alertService.alert("Your new password does not match its confirmation."),this.state.formData.status=null,!1}if(!(null===(e=this.application.getUser())||void 0===e?void 0:e.email))return this.application.alertService.alert("We don't have your email stored. Please log out then log back in to fix this issue."),this.state.formData.status=null,!1;const r=await this.application.validateAccountPassword(this.state.formData.currentPassword);return r||this.application.alertService.alert("The current password you entered is not correct. Please try again."),r}async processPasswordChange(){this.setState({lockContinue:!0,processing:!0}),this.setFormDataState({status:"Processing encryption keys..."});const e=this.props.securityUpdate?this.state.formData.currentPassword:this.state.formData.newPassword,t=await this.application.changePassword(this.state.formData.currentPassword,e),n=!t||!t.error;return this.setFormDataState({statusError:!n,processing:n}),n?this.setState({lockContinue:!1,formData:{...this.state.formData,status:this.props.changePassword?"Successfully changed password.":"Successfully performed account update."}}):(this.application.alertService.alert(t.error.message?t.error.message:"There was an error changing your password. Please try again."),this.setFormDataState({status:"Unable to process your password. Please try again."})),n}dismiss(){if(this.state.lockContinue)this.application.alertService.alert("Cannot close window until pending tasks are complete.");else{const e=this.$element;e.scope().$destroy(),e.remove()}}}Rt.$inject=["$element","$timeout"];class Vt extends O{constructor(){super(),this.restrict="E",this.template=vt.a,this.controller=Rt,this.controllerAs="ctrl",this.bindToController=!0,this.scope={type:"=",application:"="}}}var Ot=n(73),xt=n.n(Ot);function Tt(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}class Nt{constructor(e){Tt(this,"$element",void 0),Tt(this,"callback",void 0),this.$element=e}dismiss(){const e=this.$element;e.scope().$destroy(),e.remove()}accept(){this.callback(!0),this.dismiss()}deny(){this.callback(!1),this.dismiss()}}Nt.$inject=["$element"];class wt extends O{constructor(){super(),this.restrict="E",this.template=xt.a,this.controller=Nt,this.controllerAs="ctrl",this.bindToController=!0,this.scope={show:"=",component:"=",permissionsString:"=",callback:"="}}}var kt=n(74),Yt=n.n(kt);function St(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}class Ht{constructor(e,t){St(this,"$element",void 0),St(this,"$timeout",void 0),St(this,"application",void 0),St(this,"action",void 0),St(this,"onSuccess",void 0),St(this,"onCancel",void 0),St(this,"authParameters",{}),St(this,"sessionLengthOptions",void 0),St(this,"selectedSessionLength",void 0),St(this,"requiredCredentials",void 0),St(this,"failedCredentials",void 0),this.$element=e,this.$timeout=t}$onInit(){this.sessionLengthOptions=this.application.privilegesService.getSessionLengthOptions(),this.application.privilegesService.getSelectedSessionLength().then(e=>{this.$timeout(()=>{this.selectedSessionLength=e})}),this.application.privilegesService.netCredentialsForAction(this.action).then(e=>{this.$timeout(()=>{this.requiredCredentials=e.sort()})})}selectSessionLength(e){this.selectedSessionLength=e}promptForCredential(e){return this.application.privilegesService.displayInfoForCredential(e).prompt}cancel(){this.dismiss(),this.onCancel&&this.onCancel()}isCredentialInFailureState(e){return!!this.failedCredentials&&null!=this.failedCredentials.find(t=>t===e)}validate(){const e=[];for(const t of this.requiredCredentials){const n=this.authParameters[t];n&&0!==n.length||e.push(t)}return this.failedCredentials=e,0===e.length}async submit(){if(!this.validate())return;const e=await this.application.privilegesService.authenticateAction(this.action,this.authParameters);this.$timeout(()=>{e.success?(this.application.privilegesService.setSessionLength(this.selectedSessionLength),this.onSuccess(),this.dismiss()):this.failedCredentials=e.failedCredentials})}dismiss(){const e=this.$element;e.scope().$destroy(),e.remove()}}Ht.$inject=["$element","$timeout"];class Dt extends O{constructor(){super(),this.restrict="E",this.template=Yt.a,this.controller=Ht,this.controllerAs="ctrl",this.bindToController=!0,this.scope={action:"=",onSuccess:"=",onCancel:"=",application:"="}}}var Jt=n(75),Pt=n.n(Jt);function Mt(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}class Lt extends R{constructor(e,t){super(e),Mt(this,"hasPasscode",!1),Mt(this,"hasAccount",!1),Mt(this,"$element",void 0),Mt(this,"application",void 0),Mt(this,"privileges",void 0),Mt(this,"availableActions",void 0),Mt(this,"availableCredentials",void 0),Mt(this,"sessionExpirey",void 0),Mt(this,"sessionExpired",!0),Mt(this,"credentialDisplayInfo",{}),Mt(this,"onCancel",void 0),this.$element=t}async onAppLaunch(){super.onAppLaunch(),this.hasPasscode=this.application.hasPasscode(),this.hasAccount=!this.application.noAccount(),this.reloadPrivileges()}displayInfoForCredential(e){const t=this.application.privilegesService.displayInfoForCredential(e);return e===s.PrivilegeCredential.LocalPasscode?t.availability=this.hasPasscode:e===s.PrivilegeCredential.AccountPassword?t.availability=this.hasAccount:t.availability=!0,t}displayInfoForAction(e){return this.application.privilegesService.displayInfoForAction(e).label}isCredentialRequiredForAction(e,t){return!!this.privileges&&this.privileges.isCredentialRequiredForAction(e,t)}async clearSession(){await this.application.privilegesService.clearSession(),this.reloadPrivileges()}async reloadPrivileges(){this.availableActions=this.application.privilegesService.getAvailableActions(),this.availableCredentials=this.application.privilegesService.getAvailableCredentials();const e=await this.application.privilegesService.getSessionExpirey();this.sessionExpirey=e.toLocaleString(),this.sessionExpired=new Date>=e;for(const e of this.availableCredentials)this.credentialDisplayInfo[e]=this.displayInfoForCredential(e);const t=await this.application.privilegesService.getPrivileges();this.$timeout(()=>{this.privileges=t})}checkboxValueChanged(e,t){this.application.changeAndSaveItem(this.privileges.uuid,n=>{n.toggleCredentialForAction(e,t)})}cancel(){this.dismiss(),this.onCancel&&this.onCancel()}dismiss(){const e=this.$element;e.scope().$destroy(),e.remove()}}Lt.$inject=["$timeout","$element"];class zt extends O{constructor(){super(),this.restrict="E",this.template=Pt.a,this.controller=Lt,this.controllerAs="ctrl",this.bindToController=!0,this.scope={application:"="}}}var jt=n(76),Kt=n.n(jt);function qt(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}class $t{constructor(e,t){qt(this,"$element",void 0),qt(this,"$timeout",void 0),qt(this,"uuid",void 0),qt(this,"content",void 0),qt(this,"application",void 0),qt(this,"unregisterComponent",void 0),qt(this,"note",void 0),qt(this,"editor",void 0),this.$element=e,this.$timeout=t}$onInit(){this.configure()}$onDestroy(){this.unregisterComponent&&(this.unregisterComponent(),this.unregisterComponent=void 0)}get componentManager(){return this.application.componentManager}async configure(){this.note=await this.application.createTemplateItem(s.ContentType.Note,this.content);const e=this.application.findItem(this.uuid),t=this.componentManager.editorForNote(e);if(t){const e=await this.application.createTemplateItem(s.ContentType.Component,t.safeContent);this.componentManager.setReadonlyStateForComponent(e,!0,!0),this.unregisterComponent=this.componentManager.registerHandler({identifier:e.uuid,areas:[s.ComponentArea.Editor],contextRequestHandler:e=>{var t;if(e===(null===(t=this.editor)||void 0===t?void 0:t.uuid))return this.note},componentForSessionKeyHandler:e=>{if(e===this.componentManager.sessionKeyForComponent(this.editor))return this.editor}}),this.editor=e}}restore(e){const t=async()=>{if(e){const e=Object.assign({},this.content);e.title&&(e.title+=" (copy)"),await this.application.createManagedItem(s.ContentType.Note,e,!0)}else this.application.changeAndSaveItem(this.uuid,e=>{e.setContent(this.content)},!0,s.PayloadSource.RemoteActionRetrieved);this.dismiss()};e?t():this.application.alertService.confirm("Are you sure you want to replace the current note's contents with what you see in this preview?",void 0,void 0,void 0,t,void 0,!0)}dismiss(){const e=this.$element;e.scope().$destroy(),e.remove()}}$t.$inject=["$element","$timeout"];class en extends O{constructor(){super(),this.restrict="E",this.template=Kt.a,this.controller=$t,this.controllerAs="ctrl",this.bindToController=!0,this.scope={uuid:"=",content:"=",application:"="}}}var tn=n(77),nn=n.n(tn);function rn(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}class an{constructor(e){rn(this,"$timeout",void 0),rn(this,"diskEnabled",!1),rn(this,"autoOptimize",!1),rn(this,"application",void 0),rn(this,"item",void 0),rn(this,"entries",void 0),rn(this,"history",void 0),this.$timeout=e}$onInit(){this.reloadHistory(),this.diskEnabled=this.application.historyManager.isDiskEnabled(),this.autoOptimize=this.application.historyManager.isAutoOptimizeEnabled()}reloadHistory(){const e=this.application.historyManager.historyForItem(this.item);this.entries=e.entries.slice(0).sort((e,t)=>e.payload.updated_at<t.payload.updated_at?1:-1),this.history=e}openRevision(e){this.application.presentRevisionPreviewModal(e.payload.uuid,e.payload.content)}classForRevision(e){const t=e.operationVector();return 0===t?"default":1===t?"success":-1===t?"danger":void 0}clearItemHistory(){this.application.alertService.confirm("Are you sure you want to delete the local session history for this note?",void 0,void 0,void 0,()=>{this.application.historyManager.clearHistoryForItem(this.item).then(()=>{this.$timeout(()=>{this.reloadHistory()})})},void 0,!0)}clearAllHistory(){this.application.alertService.confirm("Are you sure you want to delete the local session history for all notes?",void 0,void 0,void 0,()=>{this.application.historyManager.clearAllHistory().then(()=>{this.$timeout(()=>{this.reloadHistory()})})},void 0,!0)}toggleDiskSaving(){const e=()=>{this.application.historyManager.toggleDiskSaving().then(()=>{this.$timeout(()=>{this.diskEnabled=this.application.historyManager.isDiskEnabled()})})};this.application.historyManager.isDiskEnabled()?e():this.application.alertService.confirm("Are you sure you want to save history to disk? This will decrease general \n performance, especially as you type. You are advised to disable this feature \n if you experience any lagging.",void 0,void 0,void 0,e,void 0,!0)}toggleAutoOptimize(){this.application.historyManager.toggleAutoOptimize().then(()=>{this.$timeout(()=>{this.autoOptimize=this.application.historyManager.autoOptimize})})}}an.$inject=["$timeout"];class on extends O{constructor(){super(),this.restrict="E",this.template=nn.a,this.controller=an,this.controllerAs="ctrl",this.bindToController=!0,this.scope={item:"=",application:"="}}}var cn=n(78),sn=n.n(cn);function ln(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}class gn{constructor(e){ln(this,"closeFunction",void 0),ln(this,"application",void 0),ln(this,"$timeout",void 0),ln(this,"status",{}),this.$timeout=e}downloadBackup(e){this.application.getArchiveService().downloadBackup(e),this.status.backupFinished=!0}skipBackup(){this.status.backupFinished=!0}async performSyncResolution(){this.status.resolving=!0,await this.application.resolveOutOfSync(),this.$timeout(()=>{this.status.resolving=!1,this.status.attemptedResolution=!0,this.application.isOutOfSync()?this.status.fail=!0:this.status.success=!0})}close(){this.$timeout(()=>{this.closeFunction()})}}gn.$inject=["$timeout"];class In extends O{constructor(){super(),this.restrict="E",this.template=sn.a,this.controller=gn,this.controllerAs="ctrl",this.bindToController=!0,this.scope={closeFunction:"&",application:"="}}}function Bn(e){return function(t){return e.trustAsResourceUrl(t)}}Bn.$inject=["$sce"],a.a.module("app",["ngSanitize"]),a.a.module("app").config(i).constant("appVersion","3.5.0"),a.a.module("app").directive("applicationGroupView",()=>new Y).directive("applicationView",()=>new L).directive("editorGroupView",()=>new $).directive("editorView",()=>new Ie).directive("tagsView",()=>new Ee).directive("notesView",()=>new me).directive("footerView",()=>new _e),a.a.module("app").directive("snAutofocus",["$timeout",Ve]).directive("clickOutside",["$document",Oe]).directive("delayHide",xe).directive("elemReady",Te).directive("fileChange",(function(){return{restrict:"A",scope:{handler:"&"},link:function(e,t){t.on("change",t=>{e.$apply(()=>{const n=t.target.files;e.handler({files:n})})})}}})).directive("infiniteScroll",[function(){return{link:function(e,t,n){const r=e,a=parseInt(n.threshold)||0,i=t[0];r.paginate=Object(o.b)(()=>{e.$apply(n.infiniteScroll)},10),r.onScroll=()=>{e.$eval(n.canLoad)&&i.scrollTop+i.offsetHeight>=i.scrollHeight-a&&r.paginate()},t.on("scroll",r.onScroll),e.$on("$destroy",()=>{t.off("scroll",r.onScroll)})}}}]).directive("lowercase",(function(){return{require:"ngModel",link:function(e,t,n,r){const a=e=>{void 0===e&&(e="");const t=e.toLowerCase();return t!==e&&(r.$setViewValue(t),r.$render()),t};r.$parsers.push(a),a(e[n.ngModel])}}})).directive("selectOnFocus",["$window",Ne.a]).directive("snEnter",(function(){return function(e,t,n){t.bind("keydown keypress",(function(t){13===t.which&&(e.$apply((function(){e.$eval(n.snEnter,{event:t})})),t.preventDefault())}))}})),a.a.module("app").directive("accountMenu",()=>new He).directive("actionsMenu",()=>new Le).directive("challengeModal",()=>new Re).directive("componentModal",()=>new $e).directive("componentView",()=>new at).directive("editorMenu",()=>new lt).directive("inputModal",()=>new ut).directive("menuRow",()=>new pt).directive("panelResizer",()=>new Gt).directive("passwordWizard",()=>new Vt).directive("permissionsModal",()=>new wt).directive("privilegesAuthModal",()=>new Dt).directive("privilegesManagementModal",()=>new zt).directive("revisionPreviewModal",()=>new en).directive("sessionHistoryMenu",()=>new on).directive("syncResolutionMenu",()=>new In),a.a.module("app").filter("trusted",["$sce",Bn]),a.a.module("app").service("mainApplicationGroup",X),o.e&&Object.defineProperties(window,{application:{get:()=>a.a.element(document).injector().get("mainApplicationGroup").application}})}]);
|
||
//# sourceMappingURL=app.js.map |